blob: 48530e55767ece73c4589acf589ff994cc492462 [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 Klein2229b572017-04-21 10:30:29 -040012 #define BALIGN4 .align 2
13 #define BALIGN16 .align 4
Mike Klein67e61712017-04-26 09:52:09 -040014 #define BALIGN32 .align 5
Mike Klein7c4af542017-03-29 18:21:14 -040015#else
Mike Klein2229b572017-04-21 10:30:29 -040016 .section .note.GNU-stack,"",%progbits
Mike Klein7c4af542017-03-29 18:21:14 -040017 #define HIDDEN .hidden
Mike Klein86714282017-04-13 17:37:38 -040018 #define FUNCTION(name) .type name,%function
Mike Klein2229b572017-04-21 10:30:29 -040019 #define BALIGN4 .balign 4
20 #define BALIGN16 .balign 16
Mike Klein67e61712017-04-26 09:52:09 -040021 #define BALIGN32 .balign 32
Mike Klein7c4af542017-03-29 18:21:14 -040022#endif
Mike Kleind7e06ae2017-03-29 16:33:06 -040023.text
24#if defined(__aarch64__)
Mike Klein2229b572017-04-21 10:30:29 -040025BALIGN4
Mike Kleind7e06ae2017-03-29 16:33:06 -040026
Mike Klein7c4af542017-03-29 18:21:14 -040027HIDDEN _sk_start_pipeline_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -040028.globl _sk_start_pipeline_aarch64
Mike Klein86714282017-04-13 17:37:38 -040029FUNCTION(_sk_start_pipeline_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -040030_sk_start_pipeline_aarch64:
31 .long 0xa9bd5bf7 // stp x23, x22, [sp, #-48]!
32 .long 0xa90153f5 // stp x21, x20, [sp, #16]
33 .long 0xa9027bf3 // stp x19, x30, [sp, #32]
34 .long 0xaa0103f4 // mov x20, x1
35 .long 0xf8408697 // ldr x23, [x20], #8
36 .long 0xaa0003f5 // mov x21, x0
37 .long 0xaa0303f3 // mov x19, x3
38 .long 0x910012a8 // add x8, x21, #0x4
39 .long 0xeb13011f // cmp x8, x19
40 .long 0xaa0203f6 // mov x22, x2
41 .long 0x54000069 // b.ls 34 <sk_start_pipeline_aarch64+0x34> // b.plast
42 .long 0xaa1503e0 // mov x0, x21
43 .long 0x14000012 // b 78 <sk_start_pipeline_aarch64+0x78>
44 .long 0x6f00e400 // movi v0.2d, #0x0
45 .long 0x6f00e401 // movi v1.2d, #0x0
46 .long 0x6f00e402 // movi v2.2d, #0x0
47 .long 0x6f00e403 // movi v3.2d, #0x0
48 .long 0x6f00e404 // movi v4.2d, #0x0
49 .long 0x6f00e405 // movi v5.2d, #0x0
50 .long 0x6f00e406 // movi v6.2d, #0x0
51 .long 0x6f00e407 // movi v7.2d, #0x0
52 .long 0xaa1503e0 // mov x0, x21
53 .long 0xaa1403e1 // mov x1, x20
54 .long 0xaa1603e2 // mov x2, x22
55 .long 0xd63f02e0 // blr x23
56 .long 0x910012a0 // add x0, x21, #0x4
57 .long 0x910022a8 // add x8, x21, #0x8
58 .long 0xeb13011f // cmp x8, x19
59 .long 0xaa0003f5 // mov x21, x0
60 .long 0x54fffe09 // b.ls 34 <sk_start_pipeline_aarch64+0x34> // b.plast
61 .long 0xa9427bf3 // ldp x19, x30, [sp, #32]
62 .long 0xa94153f5 // ldp x21, x20, [sp, #16]
63 .long 0xa8c35bf7 // ldp x23, x22, [sp], #48
64 .long 0xd65f03c0 // ret
65
Mike Klein7c4af542017-03-29 18:21:14 -040066HIDDEN _sk_just_return_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -040067.globl _sk_just_return_aarch64
Mike Klein86714282017-04-13 17:37:38 -040068FUNCTION(_sk_just_return_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -040069_sk_just_return_aarch64:
70 .long 0xd65f03c0 // ret
71
Mike Klein7c4af542017-03-29 18:21:14 -040072HIDDEN _sk_seed_shader_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -040073.globl _sk_seed_shader_aarch64
Mike Klein86714282017-04-13 17:37:38 -040074FUNCTION(_sk_seed_shader_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -040075_sk_seed_shader_aarch64:
76 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
77 .long 0x3dc00046 // ldr q6, [x2]
78 .long 0x4e040c00 // dup v0.4s, w0
79 .long 0x4f0167e7 // movi v7.4s, #0x3f, lsl #24
80 .long 0x4d40c901 // ld1r {v1.4s}, [x8]
81 .long 0x4e21d800 // scvtf v0.4s, v0.4s
82 .long 0x4e27d400 // fadd v0.4s, v0.4s, v7.4s
83 .long 0x4f03f602 // fmov v2.4s, #1.000000000000000000e+00
84 .long 0x4e21d821 // scvtf v1.4s, v1.4s
85 .long 0x6f00e403 // movi v3.2d, #0x0
86 .long 0x6f00e404 // movi v4.2d, #0x0
87 .long 0x6f00e405 // movi v5.2d, #0x0
88 .long 0x4e26d400 // fadd v0.4s, v0.4s, v6.4s
89 .long 0x6f00e406 // movi v6.2d, #0x0
90 .long 0x4e27d421 // fadd v1.4s, v1.4s, v7.4s
91 .long 0x6f00e407 // movi v7.2d, #0x0
92 .long 0xd61f0060 // br x3
93
Mike Klein7c4af542017-03-29 18:21:14 -040094HIDDEN _sk_constant_color_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -040095.globl _sk_constant_color_aarch64
Mike Klein86714282017-04-13 17:37:38 -040096FUNCTION(_sk_constant_color_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -040097_sk_constant_color_aarch64:
98 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
Mike Klein8a823fa2017-04-05 17:29:26 -040099 .long 0xaa0803ea // mov x10, x8
100 .long 0x4ddfc940 // ld1r {v0.4s}, [x10], #4
101 .long 0x91002109 // add x9, x8, #0x8
102 .long 0x91003108 // add x8, x8, #0xc
103 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
104 .long 0x4d40c903 // ld1r {v3.4s}, [x8]
105 .long 0x4d40c941 // ld1r {v1.4s}, [x10]
Mike Kleind7e06ae2017-03-29 16:33:06 -0400106 .long 0xd61f0060 // br x3
107
Mike Klein7c4af542017-03-29 18:21:14 -0400108HIDDEN _sk_clear_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400109.globl _sk_clear_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400110FUNCTION(_sk_clear_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400111_sk_clear_aarch64:
112 .long 0xf8408423 // ldr x3, [x1], #8
113 .long 0x6f00e400 // movi v0.2d, #0x0
114 .long 0x6f00e401 // movi v1.2d, #0x0
115 .long 0x6f00e402 // movi v2.2d, #0x0
116 .long 0x6f00e403 // movi v3.2d, #0x0
117 .long 0xd61f0060 // br x3
118
Mike Kleinaaca1e42017-03-31 09:29:01 -0400119HIDDEN _sk_srcatop_aarch64
120.globl _sk_srcatop_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400121FUNCTION(_sk_srcatop_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400122_sk_srcatop_aarch64:
123 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
124 .long 0x6e27dc00 // fmul v0.4s, v0.4s, v7.4s
125 .long 0x6e27dc21 // fmul v1.4s, v1.4s, v7.4s
126 .long 0x6e27dc42 // fmul v2.4s, v2.4s, v7.4s
127 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -0400128 .long 0xf8408423 // ldr x3, [x1], #8
Mike Kleinaaca1e42017-03-31 09:29:01 -0400129 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
130 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
131 .long 0x4e30ccc2 // fmla v2.4s, v6.4s, v16.4s
132 .long 0x6e27de10 // fmul v16.4s, v16.4s, v7.4s
133 .long 0x4e23ccf0 // fmla v16.4s, v7.4s, v3.4s
134 .long 0x4eb01e03 // mov v3.16b, v16.16b
135 .long 0xd61f0060 // br x3
136
137HIDDEN _sk_dstatop_aarch64
138.globl _sk_dstatop_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400139FUNCTION(_sk_dstatop_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400140_sk_dstatop_aarch64:
141 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
142 .long 0x4ea7d610 // fsub v16.4s, v16.4s, v7.4s
143 .long 0xf8408423 // ldr x3, [x1], #8
144 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
145 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
146 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
147 .long 0x6e23de10 // fmul v16.4s, v16.4s, v3.4s
148 .long 0x4e23ccf0 // fmla v16.4s, v7.4s, v3.4s
149 .long 0x4e23cc80 // fmla v0.4s, v4.4s, v3.4s
150 .long 0x4e23cca1 // fmla v1.4s, v5.4s, v3.4s
151 .long 0x4e23ccc2 // fmla v2.4s, v6.4s, v3.4s
152 .long 0x4eb01e03 // mov v3.16b, v16.16b
153 .long 0xd61f0060 // br x3
154
155HIDDEN _sk_srcin_aarch64
156.globl _sk_srcin_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400157FUNCTION(_sk_srcin_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400158_sk_srcin_aarch64:
159 .long 0xf8408423 // ldr x3, [x1], #8
160 .long 0x6e27dc00 // fmul v0.4s, v0.4s, v7.4s
161 .long 0x6e27dc21 // fmul v1.4s, v1.4s, v7.4s
162 .long 0x6e27dc42 // fmul v2.4s, v2.4s, v7.4s
163 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
164 .long 0xd61f0060 // br x3
165
166HIDDEN _sk_dstin_aarch64
167.globl _sk_dstin_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400168FUNCTION(_sk_dstin_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400169_sk_dstin_aarch64:
170 .long 0xf8408423 // ldr x3, [x1], #8
171 .long 0x6e24dc60 // fmul v0.4s, v3.4s, v4.4s
172 .long 0x6e25dc61 // fmul v1.4s, v3.4s, v5.4s
173 .long 0x6e26dc62 // fmul v2.4s, v3.4s, v6.4s
174 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
175 .long 0xd61f0060 // br x3
176
177HIDDEN _sk_srcout_aarch64
178.globl _sk_srcout_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400179FUNCTION(_sk_srcout_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400180_sk_srcout_aarch64:
181 .long 0xf8408423 // ldr x3, [x1], #8
182 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
183 .long 0x4ea7d610 // fsub v16.4s, v16.4s, v7.4s
184 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
185 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
186 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
187 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
188 .long 0xd61f0060 // br x3
189
190HIDDEN _sk_dstout_aarch64
191.globl _sk_dstout_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400192FUNCTION(_sk_dstout_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400193_sk_dstout_aarch64:
194 .long 0xf8408423 // ldr x3, [x1], #8
195 .long 0x4f03f600 // fmov v0.4s, #1.000000000000000000e+00
196 .long 0x4ea3d403 // fsub v3.4s, v0.4s, v3.4s
197 .long 0x6e24dc60 // fmul v0.4s, v3.4s, v4.4s
198 .long 0x6e25dc61 // fmul v1.4s, v3.4s, v5.4s
199 .long 0x6e26dc62 // fmul v2.4s, v3.4s, v6.4s
200 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -0400201 .long 0xd61f0060 // br x3
202
Mike Klein7c4af542017-03-29 18:21:14 -0400203HIDDEN _sk_srcover_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400204.globl _sk_srcover_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400205FUNCTION(_sk_srcover_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400206_sk_srcover_aarch64:
207 .long 0xf8408423 // ldr x3, [x1], #8
208 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
209 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
210 .long 0x4e24ce00 // fmla v0.4s, v16.4s, v4.4s
211 .long 0x4e25ce01 // fmla v1.4s, v16.4s, v5.4s
212 .long 0x4e26ce02 // fmla v2.4s, v16.4s, v6.4s
213 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
214 .long 0xd61f0060 // br x3
215
Mike Klein7c4af542017-03-29 18:21:14 -0400216HIDDEN _sk_dstover_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400217.globl _sk_dstover_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400218FUNCTION(_sk_dstover_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400219_sk_dstover_aarch64:
220 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
221 .long 0xf8408423 // ldr x3, [x1], #8
222 .long 0x4ea41c90 // mov v16.16b, v4.16b
223 .long 0x4ea7d634 // fsub v20.4s, v17.4s, v7.4s
224 .long 0x4ea51cb1 // mov v17.16b, v5.16b
225 .long 0x4ea61cd2 // mov v18.16b, v6.16b
226 .long 0x4ea71cf3 // mov v19.16b, v7.16b
227 .long 0x4e20ce90 // fmla v16.4s, v20.4s, v0.4s
228 .long 0x4e21ce91 // fmla v17.4s, v20.4s, v1.4s
229 .long 0x4e22ce92 // fmla v18.4s, v20.4s, v2.4s
230 .long 0x4e23ce93 // fmla v19.4s, v20.4s, v3.4s
231 .long 0x4eb01e00 // mov v0.16b, v16.16b
232 .long 0x4eb11e21 // mov v1.16b, v17.16b
233 .long 0x4eb21e42 // mov v2.16b, v18.16b
234 .long 0x4eb31e63 // mov v3.16b, v19.16b
235 .long 0xd61f0060 // br x3
236
Mike Kleinaaca1e42017-03-31 09:29:01 -0400237HIDDEN _sk_modulate_aarch64
238.globl _sk_modulate_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400239FUNCTION(_sk_modulate_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400240_sk_modulate_aarch64:
241 .long 0xf8408423 // ldr x3, [x1], #8
242 .long 0x6e24dc00 // fmul v0.4s, v0.4s, v4.4s
243 .long 0x6e25dc21 // fmul v1.4s, v1.4s, v5.4s
244 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
245 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
246 .long 0xd61f0060 // br x3
247
248HIDDEN _sk_multiply_aarch64
249.globl _sk_multiply_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400250FUNCTION(_sk_multiply_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400251_sk_multiply_aarch64:
252 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
253 .long 0x4ea7d613 // fsub v19.4s, v16.4s, v7.4s
254 .long 0x4ea3d614 // fsub v20.4s, v16.4s, v3.4s
255 .long 0x6e20de70 // fmul v16.4s, v19.4s, v0.4s
256 .long 0x6e21de71 // fmul v17.4s, v19.4s, v1.4s
257 .long 0x6e22de72 // fmul v18.4s, v19.4s, v2.4s
258 .long 0x6e23de73 // fmul v19.4s, v19.4s, v3.4s
259 .long 0xf8408423 // ldr x3, [x1], #8
260 .long 0x4e34cc90 // fmla v16.4s, v4.4s, v20.4s
261 .long 0x4e34ccb1 // fmla v17.4s, v5.4s, v20.4s
262 .long 0x4e34ccd2 // fmla v18.4s, v6.4s, v20.4s
263 .long 0x4e34ccf3 // fmla v19.4s, v7.4s, v20.4s
264 .long 0x4e20cc90 // fmla v16.4s, v4.4s, v0.4s
265 .long 0x4e21ccb1 // fmla v17.4s, v5.4s, v1.4s
266 .long 0x4e22ccd2 // fmla v18.4s, v6.4s, v2.4s
267 .long 0x4e23ccf3 // fmla v19.4s, v7.4s, v3.4s
268 .long 0x4eb01e00 // mov v0.16b, v16.16b
269 .long 0x4eb11e21 // mov v1.16b, v17.16b
270 .long 0x4eb21e42 // mov v2.16b, v18.16b
271 .long 0x4eb31e63 // mov v3.16b, v19.16b
272 .long 0xd61f0060 // br x3
273
274HIDDEN _sk_plus__aarch64
275.globl _sk_plus__aarch64
Mike Klein86714282017-04-13 17:37:38 -0400276FUNCTION(_sk_plus__aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400277_sk_plus__aarch64:
278 .long 0xf8408423 // ldr x3, [x1], #8
279 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
280 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
281 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
282 .long 0x4e27d463 // fadd v3.4s, v3.4s, v7.4s
283 .long 0xd61f0060 // br x3
284
285HIDDEN _sk_screen_aarch64
286.globl _sk_screen_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400287FUNCTION(_sk_screen_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400288_sk_screen_aarch64:
289 .long 0xf8408423 // ldr x3, [x1], #8
290 .long 0x4e24d410 // fadd v16.4s, v0.4s, v4.4s
291 .long 0x4e25d431 // fadd v17.4s, v1.4s, v5.4s
292 .long 0x4e26d452 // fadd v18.4s, v2.4s, v6.4s
293 .long 0x4e27d473 // fadd v19.4s, v3.4s, v7.4s
294 .long 0x4ea4cc10 // fmls v16.4s, v0.4s, v4.4s
295 .long 0x4ea5cc31 // fmls v17.4s, v1.4s, v5.4s
296 .long 0x4ea6cc52 // fmls v18.4s, v2.4s, v6.4s
297 .long 0x4ea7cc73 // fmls v19.4s, v3.4s, v7.4s
298 .long 0x4eb01e00 // mov v0.16b, v16.16b
299 .long 0x4eb11e21 // mov v1.16b, v17.16b
300 .long 0x4eb21e42 // mov v2.16b, v18.16b
301 .long 0x4eb31e63 // mov v3.16b, v19.16b
302 .long 0xd61f0060 // br x3
303
304HIDDEN _sk_xor__aarch64
305.globl _sk_xor__aarch64
Mike Klein86714282017-04-13 17:37:38 -0400306FUNCTION(_sk_xor__aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400307_sk_xor__aarch64:
308 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
309 .long 0xf8408423 // ldr x3, [x1], #8
310 .long 0x4ea7d611 // fsub v17.4s, v16.4s, v7.4s
311 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
312 .long 0x6e20de20 // fmul v0.4s, v17.4s, v0.4s
313 .long 0x6e21de21 // fmul v1.4s, v17.4s, v1.4s
314 .long 0x6e22de22 // fmul v2.4s, v17.4s, v2.4s
315 .long 0x6e23de23 // fmul v3.4s, v17.4s, v3.4s
316 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
317 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
318 .long 0x4e30ccc2 // fmla v2.4s, v6.4s, v16.4s
319 .long 0x4e30cce3 // fmla v3.4s, v7.4s, v16.4s
320 .long 0xd61f0060 // br x3
321
Mike Klein66b09ab2017-03-31 10:29:40 -0400322HIDDEN _sk_darken_aarch64
323.globl _sk_darken_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400324FUNCTION(_sk_darken_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400325_sk_darken_aarch64:
326 .long 0x6e27dc10 // fmul v16.4s, v0.4s, v7.4s
327 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
328 .long 0x6e27dc32 // fmul v18.4s, v1.4s, v7.4s
329 .long 0x6e25dc73 // fmul v19.4s, v3.4s, v5.4s
330 .long 0x4e31f610 // fmax v16.4s, v16.4s, v17.4s
331 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
332 .long 0xf8408423 // ldr x3, [x1], #8
333 .long 0x6e27dc51 // fmul v17.4s, v2.4s, v7.4s
334 .long 0x4e33f652 // fmax v18.4s, v18.4s, v19.4s
335 .long 0x6e26dc73 // fmul v19.4s, v3.4s, v6.4s
336 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
337 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
338 .long 0x4e33f631 // fmax v17.4s, v17.4s, v19.4s
339 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
340 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
341 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
342 .long 0x4eb2d421 // fsub v1.4s, v1.4s, v18.4s
343 .long 0x4eb1d442 // fsub v2.4s, v2.4s, v17.4s
344 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
345 .long 0xd61f0060 // br x3
346
347HIDDEN _sk_lighten_aarch64
348.globl _sk_lighten_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400349FUNCTION(_sk_lighten_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400350_sk_lighten_aarch64:
351 .long 0x6e27dc10 // fmul v16.4s, v0.4s, v7.4s
352 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
353 .long 0x6e27dc32 // fmul v18.4s, v1.4s, v7.4s
354 .long 0x6e25dc73 // fmul v19.4s, v3.4s, v5.4s
355 .long 0x4eb1f610 // fmin v16.4s, v16.4s, v17.4s
356 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
357 .long 0xf8408423 // ldr x3, [x1], #8
358 .long 0x6e27dc51 // fmul v17.4s, v2.4s, v7.4s
359 .long 0x4eb3f652 // fmin v18.4s, v18.4s, v19.4s
360 .long 0x6e26dc73 // fmul v19.4s, v3.4s, v6.4s
361 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
362 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
363 .long 0x4eb3f631 // fmin v17.4s, v17.4s, v19.4s
364 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
365 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
366 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
367 .long 0x4eb2d421 // fsub v1.4s, v1.4s, v18.4s
368 .long 0x4eb1d442 // fsub v2.4s, v2.4s, v17.4s
369 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
370 .long 0xd61f0060 // br x3
371
372HIDDEN _sk_difference_aarch64
373.globl _sk_difference_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400374FUNCTION(_sk_difference_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400375_sk_difference_aarch64:
376 .long 0x6e27dc10 // fmul v16.4s, v0.4s, v7.4s
377 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
378 .long 0x6e27dc32 // fmul v18.4s, v1.4s, v7.4s
379 .long 0x6e25dc73 // fmul v19.4s, v3.4s, v5.4s
380 .long 0x4eb1f610 // fmin v16.4s, v16.4s, v17.4s
381 .long 0x4eb3f652 // fmin v18.4s, v18.4s, v19.4s
382 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
383 .long 0x4e30d610 // fadd v16.4s, v16.4s, v16.4s
384 .long 0x6e27dc51 // fmul v17.4s, v2.4s, v7.4s
385 .long 0x6e26dc73 // fmul v19.4s, v3.4s, v6.4s
386 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
387 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
388 .long 0x4e32d650 // fadd v16.4s, v18.4s, v18.4s
389 .long 0xf8408423 // ldr x3, [x1], #8
390 .long 0x4eb3f631 // fmin v17.4s, v17.4s, v19.4s
391 .long 0x4eb0d421 // fsub v1.4s, v1.4s, v16.4s
392 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
393 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
394 .long 0x4e31d631 // fadd v17.4s, v17.4s, v17.4s
395 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
396 .long 0x4eb1d442 // fsub v2.4s, v2.4s, v17.4s
397 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
398 .long 0xd61f0060 // br x3
399
400HIDDEN _sk_exclusion_aarch64
401.globl _sk_exclusion_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400402FUNCTION(_sk_exclusion_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400403_sk_exclusion_aarch64:
404 .long 0x4e24d410 // fadd v16.4s, v0.4s, v4.4s
405 .long 0x6e24dc00 // fmul v0.4s, v0.4s, v4.4s
406 .long 0x4e20d400 // fadd v0.4s, v0.4s, v0.4s
407 .long 0x4ea0d600 // fsub v0.4s, v16.4s, v0.4s
408 .long 0x4e25d430 // fadd v16.4s, v1.4s, v5.4s
409 .long 0x6e25dc21 // fmul v1.4s, v1.4s, v5.4s
410 .long 0x4e21d421 // fadd v1.4s, v1.4s, v1.4s
411 .long 0x4ea1d601 // fsub v1.4s, v16.4s, v1.4s
412 .long 0x4e26d450 // fadd v16.4s, v2.4s, v6.4s
413 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
414 .long 0x4e22d442 // fadd v2.4s, v2.4s, v2.4s
415 .long 0xf8408423 // ldr x3, [x1], #8
416 .long 0x4ea2d602 // fsub v2.4s, v16.4s, v2.4s
417 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
418 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
419 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
420 .long 0xd61f0060 // br x3
421
Mike Klein61b84162017-03-31 11:48:14 -0400422HIDDEN _sk_colorburn_aarch64
423.globl _sk_colorburn_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400424FUNCTION(_sk_colorburn_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400425_sk_colorburn_aarch64:
426 .long 0x4ea4d4f3 // fsub v19.4s, v7.4s, v4.4s
427 .long 0x6e23de73 // fmul v19.4s, v19.4s, v3.4s
428 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
429 .long 0x6e20fe73 // fdiv v19.4s, v19.4s, v0.4s
430 .long 0x4ea7d634 // fsub v20.4s, v17.4s, v7.4s
431 .long 0x4eb3f4f3 // fmin v19.4s, v7.4s, v19.4s
432 .long 0x6e20de95 // fmul v21.4s, v20.4s, v0.4s
433 .long 0x4eb3d4f3 // fsub v19.4s, v7.4s, v19.4s
434 .long 0x4e24d6b6 // fadd v22.4s, v21.4s, v4.4s
435 .long 0x4e33cc75 // fmla v21.4s, v3.4s, v19.4s
436 .long 0x4ea5d4f3 // fsub v19.4s, v7.4s, v5.4s
437 .long 0x6e23de73 // fmul v19.4s, v19.4s, v3.4s
438 .long 0x6e21fe73 // fdiv v19.4s, v19.4s, v1.4s
439 .long 0x4ea0d812 // fcmeq v18.4s, v0.4s, #0.0
440 .long 0x4eb3f4f3 // fmin v19.4s, v7.4s, v19.4s
441 .long 0x6e751c12 // bsl v18.16b, v0.16b, v21.16b
442 .long 0x6e21de80 // fmul v0.4s, v20.4s, v1.4s
443 .long 0x4eb3d4f3 // fsub v19.4s, v7.4s, v19.4s
444 .long 0x4e25d415 // fadd v21.4s, v0.4s, v5.4s
445 .long 0x4e33cc60 // fmla v0.4s, v3.4s, v19.4s
446 .long 0x4ea0d833 // fcmeq v19.4s, v1.4s, #0.0
447 .long 0x6e601c33 // bsl v19.16b, v1.16b, v0.16b
448 .long 0x4ea6d4e0 // fsub v0.4s, v7.4s, v6.4s
449 .long 0x6e23dc00 // fmul v0.4s, v0.4s, v3.4s
450 .long 0x6e22fc00 // fdiv v0.4s, v0.4s, v2.4s
451 .long 0x4ea0f4e0 // fmin v0.4s, v7.4s, v0.4s
452 .long 0x6e22de81 // fmul v1.4s, v20.4s, v2.4s
453 .long 0x4ea0d4e0 // fsub v0.4s, v7.4s, v0.4s
454 .long 0x4e26d434 // fadd v20.4s, v1.4s, v6.4s
455 .long 0x4e20cc61 // fmla v1.4s, v3.4s, v0.4s
456 .long 0x4ea0d840 // fcmeq v0.4s, v2.4s, #0.0
457 .long 0x4ea3d631 // fsub v17.4s, v17.4s, v3.4s
458 .long 0xf8408423 // ldr x3, [x1], #8
459 .long 0x4e27e490 // fcmeq v16.4s, v4.4s, v7.4s
460 .long 0x6e611c40 // bsl v0.16b, v2.16b, v1.16b
461 .long 0x4e31cc92 // fmla v18.4s, v4.4s, v17.4s
462 .long 0x4e27e4a1 // fcmeq v1.4s, v5.4s, v7.4s
463 .long 0x4e27e4c2 // fcmeq v2.4s, v6.4s, v7.4s
464 .long 0x4e31ccb3 // fmla v19.4s, v5.4s, v17.4s
465 .long 0x4e31ccc0 // fmla v0.4s, v6.4s, v17.4s
466 .long 0x6e721ed0 // bsl v16.16b, v22.16b, v18.16b
467 .long 0x6e731ea1 // bsl v1.16b, v21.16b, v19.16b
468 .long 0x6e601e82 // bsl v2.16b, v20.16b, v0.16b
469 .long 0x4e27ce23 // fmla v3.4s, v17.4s, v7.4s
470 .long 0x4eb01e00 // mov v0.16b, v16.16b
471 .long 0xd61f0060 // br x3
472
473HIDDEN _sk_colordodge_aarch64
474.globl _sk_colordodge_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400475FUNCTION(_sk_colordodge_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400476_sk_colordodge_aarch64:
477 .long 0x4f03f612 // fmov v18.4s, #1.000000000000000000e+00
478 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
479 .long 0x4ea0d474 // fsub v20.4s, v3.4s, v0.4s
480 .long 0x6e25dc75 // fmul v21.4s, v3.4s, v5.4s
481 .long 0x4ea1d476 // fsub v22.4s, v3.4s, v1.4s
482 .long 0x4ea7d657 // fsub v23.4s, v18.4s, v7.4s
483 .long 0x6e34fe31 // fdiv v17.4s, v17.4s, v20.4s
484 .long 0x6e36feb4 // fdiv v20.4s, v21.4s, v22.4s
485 .long 0x6e20def5 // fmul v21.4s, v23.4s, v0.4s
486 .long 0x4eb1f4f1 // fmin v17.4s, v7.4s, v17.4s
487 .long 0x4e23e413 // fcmeq v19.4s, v0.4s, v3.4s
488 .long 0x4e24d6b6 // fadd v22.4s, v21.4s, v4.4s
489 .long 0x4e31cc75 // fmla v21.4s, v3.4s, v17.4s
490 .long 0x6e751c13 // bsl v19.16b, v0.16b, v21.16b
491 .long 0x6e21dee0 // fmul v0.4s, v23.4s, v1.4s
492 .long 0x4eb4f4f4 // fmin v20.4s, v7.4s, v20.4s
493 .long 0x4e25d415 // fadd v21.4s, v0.4s, v5.4s
494 .long 0x4e34cc60 // fmla v0.4s, v3.4s, v20.4s
495 .long 0x4e23e434 // fcmeq v20.4s, v1.4s, v3.4s
496 .long 0x6e601c34 // bsl v20.16b, v1.16b, v0.16b
497 .long 0x6e26dc60 // fmul v0.4s, v3.4s, v6.4s
498 .long 0x4ea2d461 // fsub v1.4s, v3.4s, v2.4s
499 .long 0x6e21fc00 // fdiv v0.4s, v0.4s, v1.4s
500 .long 0x6e22dee1 // fmul v1.4s, v23.4s, v2.4s
501 .long 0x4ea0f4e0 // fmin v0.4s, v7.4s, v0.4s
502 .long 0x4e26d437 // fadd v23.4s, v1.4s, v6.4s
503 .long 0x4e20cc61 // fmla v1.4s, v3.4s, v0.4s
504 .long 0x4e23e440 // fcmeq v0.4s, v2.4s, v3.4s
505 .long 0x6e611c40 // bsl v0.16b, v2.16b, v1.16b
506 .long 0x4ea3d641 // fsub v1.4s, v18.4s, v3.4s
507 .long 0xf8408423 // ldr x3, [x1], #8
508 .long 0x4ea0d890 // fcmeq v16.4s, v4.4s, #0.0
509 .long 0x4ea0d8b1 // fcmeq v17.4s, v5.4s, #0.0
510 .long 0x4e21cc93 // fmla v19.4s, v4.4s, v1.4s
511 .long 0x4e21ccb4 // fmla v20.4s, v5.4s, v1.4s
512 .long 0x4ea0d8c2 // fcmeq v2.4s, v6.4s, #0.0
513 .long 0x4e21ccc0 // fmla v0.4s, v6.4s, v1.4s
514 .long 0x6e731ed0 // bsl v16.16b, v22.16b, v19.16b
515 .long 0x6e741eb1 // bsl v17.16b, v21.16b, v20.16b
516 .long 0x6e601ee2 // bsl v2.16b, v23.16b, v0.16b
517 .long 0x4e27cc23 // fmla v3.4s, v1.4s, v7.4s
518 .long 0x4eb01e00 // mov v0.16b, v16.16b
519 .long 0x4eb11e21 // mov v1.16b, v17.16b
520 .long 0xd61f0060 // br x3
521
522HIDDEN _sk_hardlight_aarch64
523.globl _sk_hardlight_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400524FUNCTION(_sk_hardlight_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400525_sk_hardlight_aarch64:
526 .long 0x4ea4d4f4 // fsub v20.4s, v7.4s, v4.4s
527 .long 0x4ea0d475 // fsub v21.4s, v3.4s, v0.4s
528 .long 0x6e34deb4 // fmul v20.4s, v21.4s, v20.4s
529 .long 0x4e20d411 // fadd v17.4s, v0.4s, v0.4s
530 .long 0x6e24dc12 // fmul v18.4s, v0.4s, v4.4s
531 .long 0x6e27dc73 // fmul v19.4s, v3.4s, v7.4s
532 .long 0x4e34d694 // fadd v20.4s, v20.4s, v20.4s
533 .long 0x6e31e471 // fcmge v17.4s, v3.4s, v17.4s
534 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
535 .long 0x4eb4d674 // fsub v20.4s, v19.4s, v20.4s
536 .long 0x6e741e51 // bsl v17.16b, v18.16b, v20.16b
537 .long 0x4ea5d4f2 // fsub v18.4s, v7.4s, v5.4s
538 .long 0x4ea1d474 // fsub v20.4s, v3.4s, v1.4s
539 .long 0x6e32de92 // fmul v18.4s, v20.4s, v18.4s
540 .long 0x4e21d436 // fadd v22.4s, v1.4s, v1.4s
541 .long 0x6e25dc35 // fmul v21.4s, v1.4s, v5.4s
542 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
543 .long 0x6e36e476 // fcmge v22.4s, v3.4s, v22.4s
544 .long 0x4e35d6b5 // fadd v21.4s, v21.4s, v21.4s
545 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
546 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
547 .long 0x6e721eb6 // bsl v22.16b, v21.16b, v18.16b
548 .long 0x4ea6d4f2 // fsub v18.4s, v7.4s, v6.4s
549 .long 0x4ea2d475 // fsub v21.4s, v3.4s, v2.4s
550 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
551 .long 0x4ea7d615 // fsub v21.4s, v16.4s, v7.4s
552 .long 0x4e22d454 // fadd v20.4s, v2.4s, v2.4s
553 .long 0x6e20dea0 // fmul v0.4s, v21.4s, v0.4s
554 .long 0x6e21dea1 // fmul v1.4s, v21.4s, v1.4s
555 .long 0x6e22deb5 // fmul v21.4s, v21.4s, v2.4s
556 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
557 .long 0xf8408423 // ldr x3, [x1], #8
558 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
559 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
560 .long 0x6e34e474 // fcmge v20.4s, v3.4s, v20.4s
561 .long 0x4e22d442 // fadd v2.4s, v2.4s, v2.4s
562 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
563 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
564 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
565 .long 0x4e30ccd5 // fmla v21.4s, v6.4s, v16.4s
566 .long 0x6e721c54 // bsl v20.16b, v2.16b, v18.16b
567 .long 0x4e31d400 // fadd v0.4s, v0.4s, v17.4s
568 .long 0x4e36d421 // fadd v1.4s, v1.4s, v22.4s
569 .long 0x4e34d6a2 // fadd v2.4s, v21.4s, v20.4s
570 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
571 .long 0xd61f0060 // br x3
572
573HIDDEN _sk_overlay_aarch64
574.globl _sk_overlay_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400575FUNCTION(_sk_overlay_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400576_sk_overlay_aarch64:
577 .long 0x4ea4d4f4 // fsub v20.4s, v7.4s, v4.4s
578 .long 0x4ea0d475 // fsub v21.4s, v3.4s, v0.4s
579 .long 0x6e34deb4 // fmul v20.4s, v21.4s, v20.4s
580 .long 0x4e24d491 // fadd v17.4s, v4.4s, v4.4s
581 .long 0x6e24dc12 // fmul v18.4s, v0.4s, v4.4s
582 .long 0x6e27dc73 // fmul v19.4s, v3.4s, v7.4s
583 .long 0x4e34d694 // fadd v20.4s, v20.4s, v20.4s
584 .long 0x6e31e4f1 // fcmge v17.4s, v7.4s, v17.4s
585 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
586 .long 0x4eb4d674 // fsub v20.4s, v19.4s, v20.4s
587 .long 0x6e741e51 // bsl v17.16b, v18.16b, v20.16b
588 .long 0x4ea5d4f2 // fsub v18.4s, v7.4s, v5.4s
589 .long 0x4ea1d474 // fsub v20.4s, v3.4s, v1.4s
590 .long 0x6e32de92 // fmul v18.4s, v20.4s, v18.4s
591 .long 0x4e25d4b6 // fadd v22.4s, v5.4s, v5.4s
592 .long 0x6e25dc35 // fmul v21.4s, v1.4s, v5.4s
593 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
594 .long 0x6e36e4f6 // fcmge v22.4s, v7.4s, v22.4s
595 .long 0x4e35d6b5 // fadd v21.4s, v21.4s, v21.4s
596 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
597 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
598 .long 0x6e721eb6 // bsl v22.16b, v21.16b, v18.16b
599 .long 0x4ea6d4f2 // fsub v18.4s, v7.4s, v6.4s
600 .long 0x4ea2d475 // fsub v21.4s, v3.4s, v2.4s
601 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
602 .long 0x4ea7d615 // fsub v21.4s, v16.4s, v7.4s
603 .long 0x4e26d4d4 // fadd v20.4s, v6.4s, v6.4s
604 .long 0x6e20dea0 // fmul v0.4s, v21.4s, v0.4s
605 .long 0x6e21dea1 // fmul v1.4s, v21.4s, v1.4s
606 .long 0x6e22deb5 // fmul v21.4s, v21.4s, v2.4s
607 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
608 .long 0xf8408423 // ldr x3, [x1], #8
609 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
610 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
611 .long 0x6e34e4f4 // fcmge v20.4s, v7.4s, v20.4s
612 .long 0x4e22d442 // fadd v2.4s, v2.4s, v2.4s
613 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
614 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
615 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
616 .long 0x4e30ccd5 // fmla v21.4s, v6.4s, v16.4s
617 .long 0x6e721c54 // bsl v20.16b, v2.16b, v18.16b
618 .long 0x4e31d400 // fadd v0.4s, v0.4s, v17.4s
619 .long 0x4e36d421 // fadd v1.4s, v1.4s, v22.4s
620 .long 0x4e34d6a2 // fadd v2.4s, v21.4s, v20.4s
621 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
622 .long 0xd61f0060 // br x3
623
624HIDDEN _sk_softlight_aarch64
625.globl _sk_softlight_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400626FUNCTION(_sk_softlight_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400627_sk_softlight_aarch64:
628 .long 0x4ea0c8f5 // fcmgt v21.4s, v7.4s, #0.0
629 .long 0x6e27fc96 // fdiv v22.4s, v4.4s, v7.4s
630 .long 0x6e27fcb8 // fdiv v24.4s, v5.4s, v7.4s
631 .long 0x6e27fcd9 // fdiv v25.4s, v6.4s, v7.4s
632 .long 0x4e351ed6 // and v22.16b, v22.16b, v21.16b
633 .long 0x4e351f18 // and v24.16b, v24.16b, v21.16b
634 .long 0x4e351f35 // and v21.16b, v25.16b, v21.16b
635 .long 0x6ea1dad9 // frsqrte v25.4s, v22.4s
636 .long 0x6e39df3d // fmul v29.4s, v25.4s, v25.4s
637 .long 0x4ebdfedd // frsqrts v29.4s, v22.4s, v29.4s
638 .long 0x6e3ddf39 // fmul v25.4s, v25.4s, v29.4s
639 .long 0x4ea1db3d // frecpe v29.4s, v25.4s
640 .long 0x6ea0fada // fneg v26.4s, v22.4s
641 .long 0x6ea1db1b // frsqrte v27.4s, v24.4s
642 .long 0x4e3dff39 // frecps v25.4s, v25.4s, v29.4s
643 .long 0x4e3dcf3a // fmla v26.4s, v25.4s, v29.4s
644 .long 0x6e3bdf7d // fmul v29.4s, v27.4s, v27.4s
645 .long 0x4ebdff1d // frsqrts v29.4s, v24.4s, v29.4s
646 .long 0x6e3ddf7b // fmul v27.4s, v27.4s, v29.4s
647 .long 0x4ea1db7d // frecpe v29.4s, v27.4s
648 .long 0x6ea0fb1c // fneg v28.4s, v24.4s
649 .long 0x6ea1dab9 // frsqrte v25.4s, v21.4s
650 .long 0x4e3dff7b // frecps v27.4s, v27.4s, v29.4s
651 .long 0x4e3dcf7c // fmla v28.4s, v27.4s, v29.4s
652 .long 0x6e39df3d // fmul v29.4s, v25.4s, v25.4s
653 .long 0x4ebdfebd // frsqrts v29.4s, v21.4s, v29.4s
654 .long 0x6e3ddf39 // fmul v25.4s, v25.4s, v29.4s
655 .long 0x4ea1db3d // frecpe v29.4s, v25.4s
656 .long 0x6ea0fabb // fneg v27.4s, v21.4s
657 .long 0x4e3dff39 // frecps v25.4s, v25.4s, v29.4s
658 .long 0x4e3dcf3b // fmla v27.4s, v25.4s, v29.4s
659 .long 0x4e36d6d9 // fadd v25.4s, v22.4s, v22.4s
660 .long 0x4f07f613 // fmov v19.4s, #-1.000000000000000000e+00
661 .long 0x4e39d739 // fadd v25.4s, v25.4s, v25.4s
662 .long 0x4e24d497 // fadd v23.4s, v4.4s, v4.4s
663 .long 0x4e33d6dd // fadd v29.4s, v22.4s, v19.4s
664 .long 0x4e39cf39 // fmla v25.4s, v25.4s, v25.4s
665 .long 0x4f00f794 // fmov v20.4s, #7.000000000000000000e+00
666 .long 0x6e39dfb9 // fmul v25.4s, v29.4s, v25.4s
667 .long 0x4e37d6f7 // fadd v23.4s, v23.4s, v23.4s
668 .long 0x6e37e4f7 // fcmge v23.4s, v7.4s, v23.4s
669 .long 0x4e36ce99 // fmla v25.4s, v20.4s, v22.4s
670 .long 0x6e7a1f37 // bsl v23.16b, v25.16b, v26.16b
671 .long 0x4e38d719 // fadd v25.4s, v24.4s, v24.4s
672 .long 0x4e39d739 // fadd v25.4s, v25.4s, v25.4s
673 .long 0x4e33d71a // fadd v26.4s, v24.4s, v19.4s
674 .long 0x4e39cf39 // fmla v25.4s, v25.4s, v25.4s
675 .long 0x6e39df59 // fmul v25.4s, v26.4s, v25.4s
676 .long 0x4e25d4ba // fadd v26.4s, v5.4s, v5.4s
677 .long 0x4e3ad75a // fadd v26.4s, v26.4s, v26.4s
678 .long 0x6e3ae4fa // fcmge v26.4s, v7.4s, v26.4s
679 .long 0x4e38ce99 // fmla v25.4s, v20.4s, v24.4s
680 .long 0x6e7c1f3a // bsl v26.16b, v25.16b, v28.16b
681 .long 0x4e35d6bc // fadd v28.4s, v21.4s, v21.4s
682 .long 0x4e3cd79c // fadd v28.4s, v28.4s, v28.4s
683 .long 0x4e33d6b3 // fadd v19.4s, v21.4s, v19.4s
684 .long 0x4e3ccf9c // fmla v28.4s, v28.4s, v28.4s
685 .long 0x6e3cde73 // fmul v19.4s, v19.4s, v28.4s
686 .long 0x4e35ce93 // fmla v19.4s, v20.4s, v21.4s
687 .long 0x4e26d4d4 // fadd v20.4s, v6.4s, v6.4s
688 .long 0x4e34d694 // fadd v20.4s, v20.4s, v20.4s
689 .long 0x4f03f612 // fmov v18.4s, #1.000000000000000000e+00
690 .long 0x6e34e4f4 // fcmge v20.4s, v7.4s, v20.4s
691 .long 0x4e20d411 // fadd v17.4s, v0.4s, v0.4s
692 .long 0x6e7b1e74 // bsl v20.16b, v19.16b, v27.16b
693 .long 0x4ea7d65b // fsub v27.4s, v18.4s, v7.4s
694 .long 0x4ea31c70 // mov v16.16b, v3.16b
695 .long 0x4e21d43d // fadd v29.4s, v1.4s, v1.4s
696 .long 0x4e22d45c // fadd v28.4s, v2.4s, v2.4s
697 .long 0x6e20df60 // fmul v0.4s, v27.4s, v0.4s
698 .long 0x6e21df61 // fmul v1.4s, v27.4s, v1.4s
699 .long 0x6e22df62 // fmul v2.4s, v27.4s, v2.4s
700 .long 0x4ea3d63b // fsub v27.4s, v17.4s, v3.4s
701 .long 0x4eb6d656 // fsub v22.4s, v18.4s, v22.4s
702 .long 0x4ea31c79 // mov v25.16b, v3.16b
703 .long 0x4e3bced0 // fmla v16.4s, v22.4s, v27.4s
704 .long 0x4ea3d7b6 // fsub v22.4s, v29.4s, v3.4s
705 .long 0x4eb8d658 // fsub v24.4s, v18.4s, v24.4s
706 .long 0x4ea31c73 // mov v19.16b, v3.16b
707 .long 0x4e36cf19 // fmla v25.4s, v24.4s, v22.4s
708 .long 0x4ea3d798 // fsub v24.4s, v28.4s, v3.4s
709 .long 0x4eb5d655 // fsub v21.4s, v18.4s, v21.4s
710 .long 0x4e38ceb3 // fmla v19.4s, v21.4s, v24.4s
711 .long 0x6e27df7b // fmul v27.4s, v27.4s, v7.4s
712 .long 0x6e27ded6 // fmul v22.4s, v22.4s, v7.4s
713 .long 0x6e27df18 // fmul v24.4s, v24.4s, v7.4s
714 .long 0xf8408423 // ldr x3, [x1], #8
715 .long 0x6e37df77 // fmul v23.4s, v27.4s, v23.4s
716 .long 0x6e3aded6 // fmul v22.4s, v22.4s, v26.4s
717 .long 0x6e34df14 // fmul v20.4s, v24.4s, v20.4s
718 .long 0x4ea3d652 // fsub v18.4s, v18.4s, v3.4s
719 .long 0x6e31e471 // fcmge v17.4s, v3.4s, v17.4s
720 .long 0x6e3de475 // fcmge v21.4s, v3.4s, v29.4s
721 .long 0x6e3ce47c // fcmge v28.4s, v3.4s, v28.4s
722 .long 0x6e24de10 // fmul v16.4s, v16.4s, v4.4s
723 .long 0x6e25df39 // fmul v25.4s, v25.4s, v5.4s
724 .long 0x6e26de73 // fmul v19.4s, v19.4s, v6.4s
725 .long 0x4e23cc97 // fmla v23.4s, v4.4s, v3.4s
726 .long 0x4e23ccb6 // fmla v22.4s, v5.4s, v3.4s
727 .long 0x4e23ccd4 // fmla v20.4s, v6.4s, v3.4s
728 .long 0x4e32cc80 // fmla v0.4s, v4.4s, v18.4s
729 .long 0x4e32cca1 // fmla v1.4s, v5.4s, v18.4s
730 .long 0x4e32ccc2 // fmla v2.4s, v6.4s, v18.4s
731 .long 0x6e771e11 // bsl v17.16b, v16.16b, v23.16b
732 .long 0x6e761f35 // bsl v21.16b, v25.16b, v22.16b
733 .long 0x6e741e7c // bsl v28.16b, v19.16b, v20.16b
734 .long 0x4e31d400 // fadd v0.4s, v0.4s, v17.4s
735 .long 0x4e35d421 // fadd v1.4s, v1.4s, v21.4s
736 .long 0x4e3cd442 // fadd v2.4s, v2.4s, v28.4s
737 .long 0x4e27ce43 // fmla v3.4s, v18.4s, v7.4s
738 .long 0xd61f0060 // br x3
739
Mike Klein7c4af542017-03-29 18:21:14 -0400740HIDDEN _sk_clamp_0_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400741.globl _sk_clamp_0_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400742FUNCTION(_sk_clamp_0_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400743_sk_clamp_0_aarch64:
744 .long 0xf8408423 // ldr x3, [x1], #8
745 .long 0x6f00e410 // movi v16.2d, #0x0
746 .long 0x4e30f400 // fmax v0.4s, v0.4s, v16.4s
747 .long 0x4e30f421 // fmax v1.4s, v1.4s, v16.4s
748 .long 0x4e30f442 // fmax v2.4s, v2.4s, v16.4s
749 .long 0x4e30f463 // fmax v3.4s, v3.4s, v16.4s
750 .long 0xd61f0060 // br x3
751
Mike Klein7c4af542017-03-29 18:21:14 -0400752HIDDEN _sk_clamp_1_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400753.globl _sk_clamp_1_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400754FUNCTION(_sk_clamp_1_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400755_sk_clamp_1_aarch64:
756 .long 0xf8408423 // ldr x3, [x1], #8
757 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
758 .long 0x4eb0f400 // fmin v0.4s, v0.4s, v16.4s
759 .long 0x4eb0f421 // fmin v1.4s, v1.4s, v16.4s
760 .long 0x4eb0f442 // fmin v2.4s, v2.4s, v16.4s
761 .long 0x4eb0f463 // fmin v3.4s, v3.4s, v16.4s
762 .long 0xd61f0060 // br x3
763
Mike Klein7c4af542017-03-29 18:21:14 -0400764HIDDEN _sk_clamp_a_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400765.globl _sk_clamp_a_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400766FUNCTION(_sk_clamp_a_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400767_sk_clamp_a_aarch64:
768 .long 0xf8408423 // ldr x3, [x1], #8
769 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
770 .long 0x4eb0f463 // fmin v3.4s, v3.4s, v16.4s
771 .long 0x4ea3f400 // fmin v0.4s, v0.4s, v3.4s
772 .long 0x4ea3f421 // fmin v1.4s, v1.4s, v3.4s
773 .long 0x4ea3f442 // fmin v2.4s, v2.4s, v3.4s
774 .long 0xd61f0060 // br x3
775
Mike Klein7c4af542017-03-29 18:21:14 -0400776HIDDEN _sk_set_rgb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400777.globl _sk_set_rgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400778FUNCTION(_sk_set_rgb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400779_sk_set_rgb_aarch64:
780 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
781 .long 0xaa0803e9 // mov x9, x8
782 .long 0x4ddfc920 // ld1r {v0.4s}, [x9], #4
783 .long 0x91002108 // add x8, x8, #0x8
784 .long 0x4d40c902 // ld1r {v2.4s}, [x8]
785 .long 0x4d40c921 // ld1r {v1.4s}, [x9]
786 .long 0xd61f0060 // br x3
787
Mike Klein7c4af542017-03-29 18:21:14 -0400788HIDDEN _sk_swap_rb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400789.globl _sk_swap_rb_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400790FUNCTION(_sk_swap_rb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400791_sk_swap_rb_aarch64:
792 .long 0xf8408423 // ldr x3, [x1], #8
793 .long 0x4ea01c10 // mov v16.16b, v0.16b
794 .long 0x4ea21c40 // mov v0.16b, v2.16b
795 .long 0x4eb01e02 // mov v2.16b, v16.16b
796 .long 0xd61f0060 // br x3
797
Mike Klein7c4af542017-03-29 18:21:14 -0400798HIDDEN _sk_swap_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400799.globl _sk_swap_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400800FUNCTION(_sk_swap_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400801_sk_swap_aarch64:
802 .long 0xf8408423 // ldr x3, [x1], #8
803 .long 0x4ea31c70 // mov v16.16b, v3.16b
804 .long 0x4ea21c51 // mov v17.16b, v2.16b
805 .long 0x4ea11c32 // mov v18.16b, v1.16b
806 .long 0x4ea01c13 // mov v19.16b, v0.16b
807 .long 0x4ea41c80 // mov v0.16b, v4.16b
808 .long 0x4ea51ca1 // mov v1.16b, v5.16b
809 .long 0x4ea61cc2 // mov v2.16b, v6.16b
810 .long 0x4ea71ce3 // mov v3.16b, v7.16b
811 .long 0x4eb31e64 // mov v4.16b, v19.16b
812 .long 0x4eb21e45 // mov v5.16b, v18.16b
813 .long 0x4eb11e26 // mov v6.16b, v17.16b
814 .long 0x4eb01e07 // mov v7.16b, v16.16b
815 .long 0xd61f0060 // br x3
816
Mike Klein7c4af542017-03-29 18:21:14 -0400817HIDDEN _sk_move_src_dst_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400818.globl _sk_move_src_dst_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400819FUNCTION(_sk_move_src_dst_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400820_sk_move_src_dst_aarch64:
821 .long 0xf8408423 // ldr x3, [x1], #8
822 .long 0x4ea01c04 // mov v4.16b, v0.16b
823 .long 0x4ea11c25 // mov v5.16b, v1.16b
824 .long 0x4ea21c46 // mov v6.16b, v2.16b
825 .long 0x4ea31c67 // mov v7.16b, v3.16b
826 .long 0xd61f0060 // br x3
827
Mike Klein7c4af542017-03-29 18:21:14 -0400828HIDDEN _sk_move_dst_src_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400829.globl _sk_move_dst_src_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400830FUNCTION(_sk_move_dst_src_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400831_sk_move_dst_src_aarch64:
832 .long 0xf8408423 // ldr x3, [x1], #8
833 .long 0x4ea41c80 // mov v0.16b, v4.16b
834 .long 0x4ea51ca1 // mov v1.16b, v5.16b
835 .long 0x4ea61cc2 // mov v2.16b, v6.16b
836 .long 0x4ea71ce3 // mov v3.16b, v7.16b
837 .long 0xd61f0060 // br x3
838
Mike Klein7c4af542017-03-29 18:21:14 -0400839HIDDEN _sk_premul_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400840.globl _sk_premul_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400841FUNCTION(_sk_premul_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400842_sk_premul_aarch64:
843 .long 0xf8408423 // ldr x3, [x1], #8
844 .long 0x6e23dc00 // fmul v0.4s, v0.4s, v3.4s
845 .long 0x6e23dc21 // fmul v1.4s, v1.4s, v3.4s
846 .long 0x6e23dc42 // fmul v2.4s, v2.4s, v3.4s
847 .long 0xd61f0060 // br x3
848
Mike Klein7c4af542017-03-29 18:21:14 -0400849HIDDEN _sk_unpremul_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400850.globl _sk_unpremul_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400851FUNCTION(_sk_unpremul_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400852_sk_unpremul_aarch64:
853 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
854 .long 0xf8408423 // ldr x3, [x1], #8
855 .long 0x4ea0d870 // fcmeq v16.4s, v3.4s, #0.0
856 .long 0x6e23fe31 // fdiv v17.4s, v17.4s, v3.4s
857 .long 0x4e701e30 // bic v16.16b, v17.16b, v16.16b
858 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
859 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
860 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
861 .long 0xd61f0060 // br x3
862
Mike Klein7c4af542017-03-29 18:21:14 -0400863HIDDEN _sk_from_srgb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400864.globl _sk_from_srgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400865FUNCTION(_sk_from_srgb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400866_sk_from_srgb_aarch64:
867 .long 0x52a7d328 // mov w8, #0x3e990000
868 .long 0x72933348 // movk w8, #0x999a
869 .long 0x4e040d10 // dup v16.4s, w8
870 .long 0x52a7e648 // mov w8, #0x3f320000
871 .long 0x7291eb88 // movk w8, #0x8f5c
872 .long 0x4e040d11 // dup v17.4s, w8
873 .long 0x52a76468 // mov w8, #0x3b230000
874 .long 0x729ae148 // movk w8, #0xd70a
875 .long 0x4e040d12 // dup v18.4s, w8
876 .long 0x52a7b3c8 // mov w8, #0x3d9e0000
877 .long 0x72907228 // movk w8, #0x8391
878 .long 0x6e22dc54 // fmul v20.4s, v2.4s, v2.4s
879 .long 0x4eb11e35 // mov v21.16b, v17.16b
880 .long 0x4eb11e37 // mov v23.16b, v17.16b
881 .long 0x4e22ce11 // fmla v17.4s, v16.4s, v2.4s
882 .long 0x4eb21e56 // mov v22.16b, v18.16b
883 .long 0x4eb21e58 // mov v24.16b, v18.16b
884 .long 0x4e34ce32 // fmla v18.4s, v17.4s, v20.4s
885 .long 0x4e040d11 // dup v17.4s, w8
886 .long 0x52a7ac28 // mov w8, #0x3d610000
887 .long 0x6e20dc13 // fmul v19.4s, v0.4s, v0.4s
888 .long 0x7288f5c8 // movk w8, #0x47ae
889 .long 0x4e20ce15 // fmla v21.4s, v16.4s, v0.4s
890 .long 0xf8408423 // ldr x3, [x1], #8
891 .long 0x6e21dc34 // fmul v20.4s, v1.4s, v1.4s
892 .long 0x4e33ceb6 // fmla v22.4s, v21.4s, v19.4s
893 .long 0x4e040d13 // dup v19.4s, w8
894 .long 0x4e21ce17 // fmla v23.4s, v16.4s, v1.4s
895 .long 0x6e31dc15 // fmul v21.4s, v0.4s, v17.4s
896 .long 0x6ea0e660 // fcmgt v0.4s, v19.4s, v0.4s
897 .long 0x6e31dc30 // fmul v16.4s, v1.4s, v17.4s
898 .long 0x6ea1e661 // fcmgt v1.4s, v19.4s, v1.4s
899 .long 0x6e31dc51 // fmul v17.4s, v2.4s, v17.4s
900 .long 0x6ea2e662 // fcmgt v2.4s, v19.4s, v2.4s
901 .long 0x4e34cef8 // fmla v24.4s, v23.4s, v20.4s
902 .long 0x6e761ea0 // bsl v0.16b, v21.16b, v22.16b
903 .long 0x6e781e01 // bsl v1.16b, v16.16b, v24.16b
904 .long 0x6e721e22 // bsl v2.16b, v17.16b, v18.16b
905 .long 0xd61f0060 // br x3
906
Mike Klein7c4af542017-03-29 18:21:14 -0400907HIDDEN _sk_to_srgb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400908.globl _sk_to_srgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400909FUNCTION(_sk_to_srgb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400910_sk_to_srgb_aarch64:
911 .long 0x52a828e8 // mov w8, #0x41470000
912 .long 0x728b8528 // movk w8, #0x5c29
913 .long 0x4e040d12 // dup v18.4s, w8
914 .long 0x52a7e608 // mov w8, #0x3f300000
915 .long 0x728df9c8 // movk w8, #0x6fce
916 .long 0x6ea1d811 // frsqrte v17.4s, v0.4s
917 .long 0x4e040d13 // dup v19.4s, w8
918 .long 0x52b7b948 // mov w8, #0xbdca0000
919 .long 0x728af508 // movk w8, #0x57a8
920 .long 0x6ea1d834 // frsqrte v20.4s, v1.4s
921 .long 0x6e31de36 // fmul v22.4s, v17.4s, v17.4s
922 .long 0x4e040d10 // dup v16.4s, w8
923 .long 0x52a77188 // mov w8, #0x3b8c0000
924 .long 0x6ea1d855 // frsqrte v21.4s, v2.4s
925 .long 0x6e34de98 // fmul v24.4s, v20.4s, v20.4s
926 .long 0x4eb6fc16 // frsqrts v22.4s, v0.4s, v22.4s
927 .long 0x729ce088 // movk w8, #0xe704
928 .long 0x6e35deb9 // fmul v25.4s, v21.4s, v21.4s
929 .long 0x4eb8fc38 // frsqrts v24.4s, v1.4s, v24.4s
930 .long 0x6e36de31 // fmul v17.4s, v17.4s, v22.4s
931 .long 0x4e040d17 // dup v23.4s, w8
932 .long 0x4eb9fc59 // frsqrts v25.4s, v2.4s, v25.4s
933 .long 0x6e38de94 // fmul v20.4s, v20.4s, v24.4s
934 .long 0x4ea1da36 // frecpe v22.4s, v17.4s
935 .long 0x6e32dc1a // fmul v26.4s, v0.4s, v18.4s
936 .long 0x6ea0e6e0 // fcmgt v0.4s, v23.4s, v0.4s
937 .long 0x6e32dc3c // fmul v28.4s, v1.4s, v18.4s
938 .long 0x6ea1e6e1 // fcmgt v1.4s, v23.4s, v1.4s
939 .long 0x6e32dc52 // fmul v18.4s, v2.4s, v18.4s
940 .long 0x6ea2e6e2 // fcmgt v2.4s, v23.4s, v2.4s
941 .long 0x6e39deb5 // fmul v21.4s, v21.4s, v25.4s
942 .long 0x4ea1da97 // frecpe v23.4s, v20.4s
943 .long 0x4e36fe39 // frecps v25.4s, v17.4s, v22.4s
944 .long 0x4ea1dab8 // frecpe v24.4s, v21.4s
945 .long 0x6e39ded6 // fmul v22.4s, v22.4s, v25.4s
946 .long 0x4e37fe99 // frecps v25.4s, v20.4s, v23.4s
947 .long 0x4eb01e1b // mov v27.16b, v16.16b
948 .long 0x6e39def7 // fmul v23.4s, v23.4s, v25.4s
949 .long 0x4e38feb9 // frecps v25.4s, v21.4s, v24.4s
950 .long 0x6e39df18 // fmul v24.4s, v24.4s, v25.4s
951 .long 0x4eb01e19 // mov v25.16b, v16.16b
952 .long 0x4e36ce7b // fmla v27.4s, v19.4s, v22.4s
953 .long 0x6ea1da36 // frsqrte v22.4s, v17.4s
954 .long 0x4e37ce79 // fmla v25.4s, v19.4s, v23.4s
955 .long 0x6ea1da97 // frsqrte v23.4s, v20.4s
956 .long 0x4e38ce70 // fmla v16.4s, v19.4s, v24.4s
957 .long 0x6e36ded8 // fmul v24.4s, v22.4s, v22.4s
958 .long 0x6ea1dab3 // frsqrte v19.4s, v21.4s
959 .long 0x4eb8fe31 // frsqrts v17.4s, v17.4s, v24.4s
960 .long 0x6e37def8 // fmul v24.4s, v23.4s, v23.4s
961 .long 0x4eb8fe94 // frsqrts v20.4s, v20.4s, v24.4s
962 .long 0x6e33de78 // fmul v24.4s, v19.4s, v19.4s
963 .long 0x52a7da48 // mov w8, #0x3ed20000
964 .long 0x4eb8feb5 // frsqrts v21.4s, v21.4s, v24.4s
965 .long 0x7290f848 // movk w8, #0x87c2
966 .long 0x6e31ded1 // fmul v17.4s, v22.4s, v17.4s
967 .long 0x6e34def4 // fmul v20.4s, v23.4s, v20.4s
968 .long 0x6e35de73 // fmul v19.4s, v19.4s, v21.4s
969 .long 0x4e040d15 // dup v21.4s, w8
970 .long 0xf8408423 // ldr x3, [x1], #8
971 .long 0x4e31cebb // fmla v27.4s, v21.4s, v17.4s
972 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
973 .long 0x4e34ceb9 // fmla v25.4s, v21.4s, v20.4s
974 .long 0x4e33ceb0 // fmla v16.4s, v21.4s, v19.4s
975 .long 0x4ebbf633 // fmin v19.4s, v17.4s, v27.4s
976 .long 0x4eb9f634 // fmin v20.4s, v17.4s, v25.4s
977 .long 0x4eb0f630 // fmin v16.4s, v17.4s, v16.4s
978 .long 0x6e731f40 // bsl v0.16b, v26.16b, v19.16b
979 .long 0x6e741f81 // bsl v1.16b, v28.16b, v20.16b
980 .long 0x6e701e42 // bsl v2.16b, v18.16b, v16.16b
981 .long 0xd61f0060 // br x3
982
Mike Kleindb1cbcb2017-04-12 08:35:41 -0400983HIDDEN _sk_rgb_to_hsl_aarch64
984.globl _sk_rgb_to_hsl_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400985FUNCTION(_sk_rgb_to_hsl_aarch64)
Mike Kleindb1cbcb2017-04-12 08:35:41 -0400986_sk_rgb_to_hsl_aarch64:
987 .long 0x4e21f410 // fmax v16.4s, v0.4s, v1.4s
988 .long 0x4ea1f411 // fmin v17.4s, v0.4s, v1.4s
989 .long 0x6ea1e454 // fcmgt v20.4s, v2.4s, v1.4s
990 .long 0x4f00f715 // fmov v21.4s, #6.000000000000000000e+00
991 .long 0x4e22f610 // fmax v16.4s, v16.4s, v2.4s
992 .long 0x4ea2f631 // fmin v17.4s, v17.4s, v2.4s
993 .long 0x4f03f612 // fmov v18.4s, #1.000000000000000000e+00
994 .long 0x4e341eb4 // and v20.16b, v21.16b, v20.16b
995 .long 0x4eb1d615 // fsub v21.4s, v16.4s, v17.4s
996 .long 0x4ea2d433 // fsub v19.4s, v1.4s, v2.4s
997 .long 0x4ea0d456 // fsub v22.4s, v2.4s, v0.4s
998 .long 0x4f026417 // movi v23.4s, #0x40, lsl #24
999 .long 0x6e35fe42 // fdiv v2.4s, v18.4s, v21.4s
1000 .long 0x4ea1d418 // fsub v24.4s, v0.4s, v1.4s
1001 .long 0x4f00f619 // fmov v25.4s, #4.000000000000000000e+00
1002 .long 0x4f0167fa // movi v26.4s, #0x3f, lsl #24
1003 .long 0x4eb0d6f2 // fsub v18.4s, v23.4s, v16.4s
1004 .long 0x4e36cc57 // fmla v23.4s, v2.4s, v22.4s
1005 .long 0x4e31e616 // fcmeq v22.4s, v16.4s, v17.4s
1006 .long 0x4e20e600 // fcmeq v0.4s, v16.4s, v0.4s
1007 .long 0x4e21e601 // fcmeq v1.4s, v16.4s, v1.4s
1008 .long 0x4e31d610 // fadd v16.4s, v16.4s, v17.4s
1009 .long 0x52a7c548 // mov w8, #0x3e2a0000
1010 .long 0x4e33cc54 // fmla v20.4s, v2.4s, v19.4s
1011 .long 0x4e38cc59 // fmla v25.4s, v2.4s, v24.4s
1012 .long 0x6e3ade02 // fmul v2.4s, v16.4s, v26.4s
1013 .long 0x72955568 // movk w8, #0xaaab
1014 .long 0xf8408423 // ldr x3, [x1], #8
1015 .long 0x4eb1d651 // fsub v17.4s, v18.4s, v17.4s
1016 .long 0x6ebae452 // fcmgt v18.4s, v2.4s, v26.4s
1017 .long 0x6e791ee1 // bsl v1.16b, v23.16b, v25.16b
1018 .long 0x4e040d13 // dup v19.4s, w8
1019 .long 0x6e701e32 // bsl v18.16b, v17.16b, v16.16b
1020 .long 0x6e611e80 // bsl v0.16b, v20.16b, v1.16b
1021 .long 0x6e32fea1 // fdiv v1.4s, v21.4s, v18.4s
1022 .long 0x6e33dc00 // fmul v0.4s, v0.4s, v19.4s
1023 .long 0x4e761c00 // bic v0.16b, v0.16b, v22.16b
1024 .long 0x4e761c21 // bic v1.16b, v1.16b, v22.16b
1025 .long 0xd61f0060 // br x3
1026
1027HIDDEN _sk_hsl_to_rgb_aarch64
1028.globl _sk_hsl_to_rgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001029FUNCTION(_sk_hsl_to_rgb_aarch64)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001030_sk_hsl_to_rgb_aarch64:
1031 .long 0x52a7d548 // mov w8, #0x3eaa0000
1032 .long 0x72955568 // movk w8, #0xaaab
Mike Kleinb3665f02017-05-01 14:56:04 -04001033 .long 0x4e040d18 // dup v24.4s, w8
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001034 .long 0x52a7c548 // mov w8, #0x3e2a0000
1035 .long 0x72955568 // movk w8, #0xaaab
Mike Kleinb3665f02017-05-01 14:56:04 -04001036 .long 0x4f03f613 // fmov v19.4s, #1.000000000000000000e+00
1037 .long 0x4e040d15 // dup v21.4s, w8
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001038 .long 0x52a7e548 // mov w8, #0x3f2a0000
Mike Kleinb3665f02017-05-01 14:56:04 -04001039 .long 0x4f0167f2 // movi v18.4s, #0x3f, lsl #24
1040 .long 0x4e22d439 // fadd v25.4s, v1.4s, v2.4s
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001041 .long 0x72955568 // movk w8, #0xaaab
Mike Kleinb3665f02017-05-01 14:56:04 -04001042 .long 0x4e33d43d // fadd v29.4s, v1.4s, v19.4s
1043 .long 0x4ea0d830 // fcmeq v16.4s, v1.4s, #0.0
1044 .long 0x4f07f616 // fmov v22.4s, #-1.000000000000000000e+00
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001045 .long 0x4e040d1a // dup v26.4s, w8
1046 .long 0x52b7d548 // mov w8, #0xbeaa0000
Mike Kleinb3665f02017-05-01 14:56:04 -04001047 .long 0x6ea2e65c // fcmgt v28.4s, v18.4s, v2.4s
1048 .long 0x4ea2cc39 // fmls v25.4s, v1.4s, v2.4s
1049 .long 0x6e22dfa1 // fmul v1.4s, v29.4s, v2.4s
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001050 .long 0x72955568 // movk w8, #0xaaab
Mike Kleinb3665f02017-05-01 14:56:04 -04001051 .long 0x6eb3e41f // fcmgt v31.4s, v0.4s, v19.4s
1052 .long 0x6e791c3c // bsl v28.16b, v1.16b, v25.16b
1053 .long 0x4e36d419 // fadd v25.4s, v0.4s, v22.4s
1054 .long 0x4ea0e81b // fcmlt v27.4s, v0.4s, #0.0
1055 .long 0x4e33d41e // fadd v30.4s, v0.4s, v19.4s
1056 .long 0x6e601f3f // bsl v31.16b, v25.16b, v0.16b
1057 .long 0x4e040d19 // dup v25.4s, w8
1058 .long 0x4e38d418 // fadd v24.4s, v0.4s, v24.4s
1059 .long 0x4e39d400 // fadd v0.4s, v0.4s, v25.4s
1060 .long 0x6e7f1fdb // bsl v27.16b, v30.16b, v31.16b
1061 .long 0x6eb3e71d // fcmgt v29.4s, v24.4s, v19.4s
1062 .long 0x4e36d71e // fadd v30.4s, v24.4s, v22.4s
1063 .long 0x6e781fdd // bsl v29.16b, v30.16b, v24.16b
1064 .long 0x6eb3e41e // fcmgt v30.4s, v0.4s, v19.4s
1065 .long 0x4e36d416 // fadd v22.4s, v0.4s, v22.4s
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001066 .long 0x4f026414 // movi v20.4s, #0x40, lsl #24
Mike Kleinb3665f02017-05-01 14:56:04 -04001067 .long 0x4ea0eb19 // fcmlt v25.4s, v24.4s, #0.0
1068 .long 0x4e33d718 // fadd v24.4s, v24.4s, v19.4s
1069 .long 0x6e601ede // bsl v30.16b, v22.16b, v0.16b
1070 .long 0x4ea0e816 // fcmlt v22.4s, v0.4s, #0.0
1071 .long 0x4e33d400 // fadd v0.4s, v0.4s, v19.4s
1072 .long 0x6ea0fb93 // fneg v19.4s, v28.4s
1073 .long 0x4e22ce93 // fmla v19.4s, v20.4s, v2.4s
1074 .long 0x4f00f717 // fmov v23.4s, #6.000000000000000000e+00
1075 .long 0x6e7d1f19 // bsl v25.16b, v24.16b, v29.16b
1076 .long 0x6e7e1c16 // bsl v22.16b, v0.16b, v30.16b
1077 .long 0x4eb3d780 // fsub v0.4s, v28.4s, v19.4s
1078 .long 0x4ebbd75d // fsub v29.4s, v26.4s, v27.4s
1079 .long 0x4eb9d754 // fsub v20.4s, v26.4s, v25.4s
1080 .long 0x4eb31e7e // mov v30.16b, v19.16b
1081 .long 0x6e37dc00 // fmul v0.4s, v0.4s, v23.4s
1082 .long 0x4eb31e77 // mov v23.16b, v19.16b
1083 .long 0x4e34cc1e // fmla v30.4s, v0.4s, v20.4s
1084 .long 0x4eb6d754 // fsub v20.4s, v26.4s, v22.4s
1085 .long 0x4e3dcc17 // fmla v23.4s, v0.4s, v29.4s
1086 .long 0x4eb31e7d // mov v29.16b, v19.16b
1087 .long 0x4e34cc1d // fmla v29.4s, v0.4s, v20.4s
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001088 .long 0x6eb9e754 // fcmgt v20.4s, v26.4s, v25.4s
Mike Kleinb3665f02017-05-01 14:56:04 -04001089 .long 0x6e731fd4 // bsl v20.16b, v30.16b, v19.16b
1090 .long 0x6ebbe75e // fcmgt v30.4s, v26.4s, v27.4s
1091 .long 0x6eb6e75a // fcmgt v26.4s, v26.4s, v22.4s
1092 .long 0x6e731efe // bsl v30.16b, v23.16b, v19.16b
1093 .long 0x4eb31e77 // mov v23.16b, v19.16b
1094 .long 0x6e731fba // bsl v26.16b, v29.16b, v19.16b
1095 .long 0x4eb31e7d // mov v29.16b, v19.16b
1096 .long 0x6ebbe6b8 // fcmgt v24.4s, v21.4s, v27.4s
1097 .long 0x4e3bcc17 // fmla v23.4s, v0.4s, v27.4s
1098 .long 0x6ebbe65b // fcmgt v27.4s, v18.4s, v27.4s
1099 .long 0x4e36cc1d // fmla v29.4s, v0.4s, v22.4s
1100 .long 0x4e39cc13 // fmla v19.4s, v0.4s, v25.4s
1101 .long 0x6eb9e6a0 // fcmgt v0.4s, v21.4s, v25.4s
1102 .long 0x6eb9e659 // fcmgt v25.4s, v18.4s, v25.4s
1103 .long 0x6eb6e652 // fcmgt v18.4s, v18.4s, v22.4s
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001104 .long 0xf8408423 // ldr x3, [x1], #8
Mike Kleinb3665f02017-05-01 14:56:04 -04001105 .long 0x6eb6e6b5 // fcmgt v21.4s, v21.4s, v22.4s
1106 .long 0x6e741f99 // bsl v25.16b, v28.16b, v20.16b
1107 .long 0x6e7a1f92 // bsl v18.16b, v28.16b, v26.16b
1108 .long 0x4eb01e11 // mov v17.16b, v16.16b
1109 .long 0x6e7e1f9b // bsl v27.16b, v28.16b, v30.16b
1110 .long 0x6e791e60 // bsl v0.16b, v19.16b, v25.16b
1111 .long 0x6e721fb5 // bsl v21.16b, v29.16b, v18.16b
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001112 .long 0x4eb01e01 // mov v1.16b, v16.16b
Mike Kleinb3665f02017-05-01 14:56:04 -04001113 .long 0x6e7b1ef8 // bsl v24.16b, v23.16b, v27.16b
1114 .long 0x6e601c51 // bsl v17.16b, v2.16b, v0.16b
1115 .long 0x6e751c50 // bsl v16.16b, v2.16b, v21.16b
1116 .long 0x6e781c41 // bsl v1.16b, v2.16b, v24.16b
1117 .long 0x4eb11e20 // mov v0.16b, v17.16b
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001118 .long 0x4eb01e02 // mov v2.16b, v16.16b
1119 .long 0xd61f0060 // br x3
1120
Mike Klein7c4af542017-03-29 18:21:14 -04001121HIDDEN _sk_scale_1_float_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001122.globl _sk_scale_1_float_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001123FUNCTION(_sk_scale_1_float_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001124_sk_scale_1_float_aarch64:
1125 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1126 .long 0xbd400110 // ldr s16, [x8]
1127 .long 0x4f909000 // fmul v0.4s, v0.4s, v16.s[0]
1128 .long 0x4f909021 // fmul v1.4s, v1.4s, v16.s[0]
1129 .long 0x4f909042 // fmul v2.4s, v2.4s, v16.s[0]
1130 .long 0x4f909063 // fmul v3.4s, v3.4s, v16.s[0]
1131 .long 0xd61f0060 // br x3
1132
Mike Klein7c4af542017-03-29 18:21:14 -04001133HIDDEN _sk_scale_u8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001134.globl _sk_scale_u8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001135FUNCTION(_sk_scale_u8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001136_sk_scale_u8_aarch64:
1137 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1138 .long 0x52a77009 // mov w9, #0x3b800000
1139 .long 0x72901029 // movk w9, #0x8081
1140 .long 0x4e040d30 // dup v16.4s, w9
1141 .long 0xf9400108 // ldr x8, [x8]
1142 .long 0x8b000108 // add x8, x8, x0
1143 .long 0x39400109 // ldrb w9, [x8]
1144 .long 0x3940050a // ldrb w10, [x8, #1]
1145 .long 0x3940090b // ldrb w11, [x8, #2]
1146 .long 0x39400d08 // ldrb w8, [x8, #3]
1147 .long 0x4e021d31 // mov v17.h[0], w9
1148 .long 0x4e061d51 // mov v17.h[1], w10
1149 .long 0x4e0a1d71 // mov v17.h[2], w11
1150 .long 0x4e0e1d11 // mov v17.h[3], w8
1151 .long 0x2f10a631 // uxtl v17.4s, v17.4h
1152 .long 0x6e21da31 // ucvtf v17.4s, v17.4s
1153 .long 0x6e30de30 // fmul v16.4s, v17.4s, v16.4s
1154 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
1155 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
1156 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
1157 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
1158 .long 0xd61f0060 // br x3
1159
Mike Klein7c4af542017-03-29 18:21:14 -04001160HIDDEN _sk_lerp_1_float_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001161.globl _sk_lerp_1_float_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001162FUNCTION(_sk_lerp_1_float_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001163_sk_lerp_1_float_aarch64:
1164 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1165 .long 0x4ea4d411 // fsub v17.4s, v0.4s, v4.4s
1166 .long 0x4ea41c80 // mov v0.16b, v4.16b
1167 .long 0x4ea5d432 // fsub v18.4s, v1.4s, v5.4s
1168 .long 0xbd400110 // ldr s16, [x8]
1169 .long 0x4ea51ca1 // mov v1.16b, v5.16b
1170 .long 0x4f901220 // fmla v0.4s, v17.4s, v16.s[0]
1171 .long 0x4ea6d451 // fsub v17.4s, v2.4s, v6.4s
1172 .long 0x4f901241 // fmla v1.4s, v18.4s, v16.s[0]
1173 .long 0x4ea61cc2 // mov v2.16b, v6.16b
1174 .long 0x4ea7d472 // fsub v18.4s, v3.4s, v7.4s
1175 .long 0x4ea71ce3 // mov v3.16b, v7.16b
1176 .long 0x4f901222 // fmla v2.4s, v17.4s, v16.s[0]
1177 .long 0x4f901243 // fmla v3.4s, v18.4s, v16.s[0]
1178 .long 0xd61f0060 // br x3
1179
Mike Klein7c4af542017-03-29 18:21:14 -04001180HIDDEN _sk_lerp_u8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001181.globl _sk_lerp_u8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001182FUNCTION(_sk_lerp_u8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001183_sk_lerp_u8_aarch64:
1184 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1185 .long 0x52a77009 // mov w9, #0x3b800000
1186 .long 0x72901029 // movk w9, #0x8081
1187 .long 0x4e040d30 // dup v16.4s, w9
1188 .long 0xf9400108 // ldr x8, [x8]
1189 .long 0x4ea4d412 // fsub v18.4s, v0.4s, v4.4s
1190 .long 0x8b000108 // add x8, x8, x0
1191 .long 0x3940010a // ldrb w10, [x8]
1192 .long 0x39400509 // ldrb w9, [x8, #1]
1193 .long 0x3940090b // ldrb w11, [x8, #2]
1194 .long 0x39400d08 // ldrb w8, [x8, #3]
1195 .long 0x4e021d51 // mov v17.h[0], w10
1196 .long 0x4e061d31 // mov v17.h[1], w9
1197 .long 0x4e0a1d71 // mov v17.h[2], w11
1198 .long 0x4e0e1d11 // mov v17.h[3], w8
1199 .long 0x2f10a620 // uxtl v0.4s, v17.4h
1200 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
1201 .long 0x6e30dc10 // fmul v16.4s, v0.4s, v16.4s
1202 .long 0x4ea41c80 // mov v0.16b, v4.16b
1203 .long 0x4ea5d431 // fsub v17.4s, v1.4s, v5.4s
1204 .long 0x4ea51ca1 // mov v1.16b, v5.16b
1205 .long 0x4e32ce00 // fmla v0.4s, v16.4s, v18.4s
1206 .long 0x4ea6d452 // fsub v18.4s, v2.4s, v6.4s
1207 .long 0x4e31ce01 // fmla v1.4s, v16.4s, v17.4s
1208 .long 0x4ea61cc2 // mov v2.16b, v6.16b
1209 .long 0x4ea7d471 // fsub v17.4s, v3.4s, v7.4s
1210 .long 0x4ea71ce3 // mov v3.16b, v7.16b
1211 .long 0x4e32ce02 // fmla v2.4s, v16.4s, v18.4s
1212 .long 0x4e31ce03 // fmla v3.4s, v16.4s, v17.4s
1213 .long 0xd61f0060 // br x3
1214
Mike Klein7c4af542017-03-29 18:21:14 -04001215HIDDEN _sk_lerp_565_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001216.globl _sk_lerp_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001217FUNCTION(_sk_lerp_565_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001218_sk_lerp_565_aarch64:
1219 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1220 .long 0xd37ff809 // lsl x9, x0, #1
1221 .long 0x4f072710 // movi v16.4s, #0xf8, lsl #8
1222 .long 0x4ea4d413 // fsub v19.4s, v0.4s, v4.4s
1223 .long 0xf9400108 // ldr x8, [x8]
1224 .long 0xfc696903 // ldr d3, [x8, x9]
1225 .long 0x52a6f088 // mov w8, #0x37840000
1226 .long 0x72842108 // movk w8, #0x2108
1227 .long 0x4e040d11 // dup v17.4s, w8
1228 .long 0x2f10a463 // uxtl v3.4s, v3.4h
1229 .long 0x321b17e8 // orr w8, wzr, #0x7e0
1230 .long 0x4e301c60 // and v0.16b, v3.16b, v16.16b
1231 .long 0x4e040d12 // dup v18.4s, w8
1232 .long 0x52a74048 // mov w8, #0x3a020000
1233 .long 0x4e21d800 // scvtf v0.4s, v0.4s
1234 .long 0x72810428 // movk w8, #0x821
1235 .long 0x6e31dc10 // fmul v16.4s, v0.4s, v17.4s
1236 .long 0x4ea41c80 // mov v0.16b, v4.16b
1237 .long 0x4e33ce00 // fmla v0.4s, v16.4s, v19.4s
1238 .long 0x4f0007f0 // movi v16.4s, #0x1f
1239 .long 0x4e040d11 // dup v17.4s, w8
1240 .long 0x52a7a088 // mov w8, #0x3d040000
1241 .long 0x4e321c72 // and v18.16b, v3.16b, v18.16b
1242 .long 0x72842108 // movk w8, #0x2108
1243 .long 0x4e301c63 // and v3.16b, v3.16b, v16.16b
1244 .long 0x4ea6d450 // fsub v16.4s, v2.4s, v6.4s
1245 .long 0x4e21da42 // scvtf v2.4s, v18.4s
1246 .long 0x6e31dc51 // fmul v17.4s, v2.4s, v17.4s
1247 .long 0x4e040d02 // dup v2.4s, w8
1248 .long 0x4e21d863 // scvtf v3.4s, v3.4s
1249 .long 0x4ea5d433 // fsub v19.4s, v1.4s, v5.4s
1250 .long 0x4ea51ca1 // mov v1.16b, v5.16b
1251 .long 0x6e22dc63 // fmul v3.4s, v3.4s, v2.4s
1252 .long 0x4ea61cc2 // mov v2.16b, v6.16b
1253 .long 0x4e33ce21 // fmla v1.4s, v17.4s, v19.4s
1254 .long 0x4e30cc62 // fmla v2.4s, v3.4s, v16.4s
1255 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
1256 .long 0xd61f0060 // br x3
1257
Mike Klein7c4af542017-03-29 18:21:14 -04001258HIDDEN _sk_load_tables_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001259.globl _sk_load_tables_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001260FUNCTION(_sk_load_tables_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001261_sk_load_tables_aarch64:
1262 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1263 .long 0xd37ef409 // lsl x9, x0, #2
1264 .long 0x6f00e620 // movi v0.2d, #0xff000000ff
1265 .long 0x52a7700b // mov w11, #0x3b800000
1266 .long 0xa940310a // ldp x10, x12, [x8]
1267 .long 0x7290102b // movk w11, #0x8081
1268 .long 0x4e040d63 // dup v3.4s, w11
1269 .long 0x3ce96942 // ldr q2, [x10, x9]
1270 .long 0xa9412109 // ldp x9, x8, [x8, #16]
1271 .long 0x4e201c41 // and v1.16b, v2.16b, v0.16b
1272 .long 0x1e26002e // fmov w14, s1
1273 .long 0x6f380450 // ushr v16.4s, v2.4s, #8
1274 .long 0x6f300451 // ushr v17.4s, v2.4s, #16
1275 .long 0x8b2e498e // add x14, x12, w14, uxtw #2
1276 .long 0x0e0c3c2a // mov w10, v1.s[1]
1277 .long 0x0e143c2b // mov w11, v1.s[2]
1278 .long 0x0e1c3c2d // mov w13, v1.s[3]
1279 .long 0x4e201e01 // and v1.16b, v16.16b, v0.16b
1280 .long 0x4e201e30 // and v16.16b, v17.16b, v0.16b
1281 .long 0x0d4081c0 // ld1 {v0.s}[0], [x14]
1282 .long 0x8b2a498a // add x10, x12, w10, uxtw #2
1283 .long 0xbc6b5991 // ldr s17, [x12, w11, uxtw #2]
1284 .long 0xbc6d5992 // ldr s18, [x12, w13, uxtw #2]
1285 .long 0x0e0c3c2b // mov w11, v1.s[1]
1286 .long 0x0e143c2c // mov w12, v1.s[2]
1287 .long 0x0e1c3c2d // mov w13, v1.s[3]
1288 .long 0x1e26002e // fmov w14, s1
1289 .long 0x8b2e492e // add x14, x9, w14, uxtw #2
1290 .long 0xbc6c5933 // ldr s19, [x9, w12, uxtw #2]
1291 .long 0xbc6d5934 // ldr s20, [x9, w13, uxtw #2]
1292 .long 0x8b2b4929 // add x9, x9, w11, uxtw #2
1293 .long 0x1e26020b // fmov w11, s16
1294 .long 0x6f280442 // ushr v2.4s, v2.4s, #24
1295 .long 0x0d409140 // ld1 {v0.s}[1], [x10]
1296 .long 0x4e21d842 // scvtf v2.4s, v2.4s
1297 .long 0x8b2b490a // add x10, x8, w11, uxtw #2
1298 .long 0x0d4081c1 // ld1 {v1.s}[0], [x14]
1299 .long 0x6e23dc43 // fmul v3.4s, v2.4s, v3.4s
1300 .long 0x0d408142 // ld1 {v2.s}[0], [x10]
1301 .long 0x0e0c3e0f // mov w15, v16.s[1]
1302 .long 0x0e143e0c // mov w12, v16.s[2]
1303 .long 0x8b2f490a // add x10, x8, w15, uxtw #2
1304 .long 0x0e1c3e0d // mov w13, v16.s[3]
1305 .long 0xbc6c5910 // ldr s16, [x8, w12, uxtw #2]
1306 .long 0x0d409121 // ld1 {v1.s}[1], [x9]
1307 .long 0x0d409142 // ld1 {v2.s}[1], [x10]
1308 .long 0x6e140620 // mov v0.s[2], v17.s[0]
1309 .long 0xbc6d5911 // ldr s17, [x8, w13, uxtw #2]
1310 .long 0x6e140661 // mov v1.s[2], v19.s[0]
1311 .long 0x6e140602 // mov v2.s[2], v16.s[0]
1312 .long 0x6e1c0640 // mov v0.s[3], v18.s[0]
1313 .long 0x6e1c0681 // mov v1.s[3], v20.s[0]
1314 .long 0x6e1c0622 // mov v2.s[3], v17.s[0]
1315 .long 0xd61f0060 // br x3
1316
Mike Kleina3735cd2017-04-17 13:19:05 -04001317HIDDEN _sk_load_tables_u16_be_aarch64
1318.globl _sk_load_tables_u16_be_aarch64
1319FUNCTION(_sk_load_tables_u16_be_aarch64)
1320_sk_load_tables_u16_be_aarch64:
1321 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1322 .long 0x52a6f00a // mov w10, #0x37800000
1323 .long 0x7280100a // movk w10, #0x80
1324 .long 0x4e040d50 // dup v16.4s, w10
1325 .long 0xa9402d09 // ldp x9, x11, [x8]
1326 .long 0x8b000d29 // add x9, x9, x0, lsl #3
1327 .long 0x0c400520 // ld4 {v0.4h-v3.4h}, [x9]
1328 .long 0xa9412109 // ldp x9, x8, [x8, #16]
1329 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
1330 .long 0x2f10a411 // uxtl v17.4s, v0.4h
1331 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
1332 .long 0x1e26022e // fmov w14, s17
1333 .long 0x0e0c3e2a // mov w10, v17.s[1]
1334 .long 0x0e143e2c // mov w12, v17.s[2]
1335 .long 0x0e1c3e2d // mov w13, v17.s[3]
1336 .long 0x8b2e496e // add x14, x11, w14, uxtw #2
1337 .long 0x2f10a431 // uxtl v17.4s, v1.4h
1338 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
1339 .long 0x2f10a453 // uxtl v19.4s, v2.4h
1340 .long 0x2f180462 // ushr v2.4h, v3.4h, #8
1341 .long 0x0d4081c0 // ld1 {v0.s}[0], [x14]
1342 .long 0x0f185474 // shl v20.4h, v3.4h, #8
1343 .long 0x0ea21e82 // orr v2.8b, v20.8b, v2.8b
1344 .long 0x8b2a496a // add x10, x11, w10, uxtw #2
1345 .long 0x1e26022e // fmov w14, s17
1346 .long 0x1e26026f // fmov w15, s19
1347 .long 0x2f10a442 // uxtl v2.4s, v2.4h
1348 .long 0x8b2e492e // add x14, x9, w14, uxtw #2
1349 .long 0x0d409140 // ld1 {v0.s}[1], [x10]
1350 .long 0x8b2f490a // add x10, x8, w15, uxtw #2
1351 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
1352 .long 0x0d4081c1 // ld1 {v1.s}[0], [x14]
1353 .long 0x6e30dc43 // fmul v3.4s, v2.4s, v16.4s
1354 .long 0x0d408142 // ld1 {v2.s}[0], [x10]
1355 .long 0xbc6c5972 // ldr s18, [x11, w12, uxtw #2]
1356 .long 0xbc6d5975 // ldr s21, [x11, w13, uxtw #2]
1357 .long 0x0e0c3e2b // mov w11, v17.s[1]
1358 .long 0x0e143e2c // mov w12, v17.s[2]
1359 .long 0x0e1c3e2d // mov w13, v17.s[3]
1360 .long 0x8b2b492b // add x11, x9, w11, uxtw #2
1361 .long 0xbc6c5931 // ldr s17, [x9, w12, uxtw #2]
1362 .long 0xbc6d5936 // ldr s22, [x9, w13, uxtw #2]
1363 .long 0x0e0c3e69 // mov w9, v19.s[1]
1364 .long 0x0e143e6c // mov w12, v19.s[2]
1365 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1366 .long 0x0e1c3e6d // mov w13, v19.s[3]
1367 .long 0xbc6c5913 // ldr s19, [x8, w12, uxtw #2]
1368 .long 0x0d409161 // ld1 {v1.s}[1], [x11]
1369 .long 0x0d409122 // ld1 {v2.s}[1], [x9]
1370 .long 0xbc6d5910 // ldr s16, [x8, w13, uxtw #2]
1371 .long 0x6e140640 // mov v0.s[2], v18.s[0]
1372 .long 0x6e140621 // mov v1.s[2], v17.s[0]
1373 .long 0x6e140662 // mov v2.s[2], v19.s[0]
1374 .long 0x6e1c06a0 // mov v0.s[3], v21.s[0]
1375 .long 0x6e1c06c1 // mov v1.s[3], v22.s[0]
1376 .long 0x6e1c0602 // mov v2.s[3], v16.s[0]
1377 .long 0xd61f0060 // br x3
1378
1379HIDDEN _sk_load_tables_rgb_u16_be_aarch64
1380.globl _sk_load_tables_rgb_u16_be_aarch64
1381FUNCTION(_sk_load_tables_rgb_u16_be_aarch64)
1382_sk_load_tables_rgb_u16_be_aarch64:
1383 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1384 .long 0x321f07ea // orr w10, wzr, #0x6
1385 .long 0xa9402d09 // ldp x9, x11, [x8]
1386 .long 0x9b0a2409 // madd x9, x0, x10, x9
1387 .long 0x0c404521 // ld3 {v1.4h-v3.4h}, [x9]
1388 .long 0xa9412109 // ldp x9, x8, [x8, #16]
1389 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
1390 .long 0x2f10a420 // uxtl v0.4s, v1.4h
1391 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
1392 .long 0x1e26000e // fmov w14, s0
1393 .long 0x0e143c0c // mov w12, v0.s[2]
1394 .long 0x8b2e496e // add x14, x11, w14, uxtw #2
1395 .long 0x2f10a450 // uxtl v16.4s, v2.4h
1396 .long 0x0e0c3c0a // mov w10, v0.s[1]
1397 .long 0x0e1c3c0d // mov w13, v0.s[3]
1398 .long 0xbc6c5971 // ldr s17, [x11, w12, uxtw #2]
1399 .long 0x0d4081c0 // ld1 {v0.s}[0], [x14]
1400 .long 0x0e143e0c // mov w12, v16.s[2]
1401 .long 0x1e26020e // fmov w14, s16
1402 .long 0x2f07b7e3 // bic v3.4h, #0xff, lsl #8
1403 .long 0x8b2a496a // add x10, x11, w10, uxtw #2
1404 .long 0xbc6d5972 // ldr s18, [x11, w13, uxtw #2]
1405 .long 0x0e0c3e0b // mov w11, v16.s[1]
1406 .long 0x0e1c3e0d // mov w13, v16.s[3]
1407 .long 0xbc6c5930 // ldr s16, [x9, w12, uxtw #2]
1408 .long 0x8b2e492c // add x12, x9, w14, uxtw #2
1409 .long 0x2f10a462 // uxtl v2.4s, v3.4h
1410 .long 0xbc6d5923 // ldr s3, [x9, w13, uxtw #2]
1411 .long 0x0d408181 // ld1 {v1.s}[0], [x12]
1412 .long 0x0e143c4c // mov w12, v2.s[2]
1413 .long 0x1e26004d // fmov w13, s2
1414 .long 0xbc6c5913 // ldr s19, [x8, w12, uxtw #2]
1415 .long 0x8b2d490c // add x12, x8, w13, uxtw #2
1416 .long 0x8b2b492b // add x11, x9, w11, uxtw #2
1417 .long 0x0e0c3c49 // mov w9, v2.s[1]
1418 .long 0x0d409140 // ld1 {v0.s}[1], [x10]
1419 .long 0x0e1c3c4a // mov w10, v2.s[3]
1420 .long 0x0d408182 // ld1 {v2.s}[0], [x12]
1421 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1422 .long 0x0d409161 // ld1 {v1.s}[1], [x11]
1423 .long 0x6e140620 // mov v0.s[2], v17.s[0]
1424 .long 0x0d409122 // ld1 {v2.s}[1], [x9]
1425 .long 0xbc6a5911 // ldr s17, [x8, w10, uxtw #2]
1426 .long 0x6e140601 // mov v1.s[2], v16.s[0]
1427 .long 0x6e1c0640 // mov v0.s[3], v18.s[0]
1428 .long 0x6e140662 // mov v2.s[2], v19.s[0]
1429 .long 0x6e1c0461 // mov v1.s[3], v3.s[0]
1430 .long 0x6e1c0622 // mov v2.s[3], v17.s[0]
1431 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
1432 .long 0xd61f0060 // br x3
1433
Mike Klein40de6da2017-04-07 13:09:29 -04001434HIDDEN _sk_byte_tables_aarch64
1435.globl _sk_byte_tables_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001436FUNCTION(_sk_byte_tables_aarch64)
Mike Klein40de6da2017-04-07 13:09:29 -04001437_sk_byte_tables_aarch64:
1438 .long 0xd10083ff // sub sp, sp, #0x20
1439 .long 0xaa0103e8 // mov x8, x1
1440 .long 0x91002109 // add x9, x8, #0x8
1441 .long 0xa9014ff4 // stp x20, x19, [sp, #16]
1442 .long 0xf90007e9 // str x9, [sp, #8]
1443 .long 0xf8410429 // ldr x9, [x1], #16
1444 .long 0x52a86fea // mov w10, #0x437f0000
1445 .long 0x4e040d51 // dup v17.4s, w10
1446 .long 0x52a7700b // mov w11, #0x3b800000
1447 .long 0xa9405126 // ldp x6, x20, [x9]
1448 .long 0x6e31dc00 // fmul v0.4s, v0.4s, v17.4s
1449 .long 0x7290102b // movk w11, #0x8081
1450 .long 0x6e21a800 // fcvtnu v0.4s, v0.4s
1451 .long 0x4e040d70 // dup v16.4s, w11
1452 .long 0x0e0c3c0a // mov w10, v0.s[1]
1453 .long 0x0e143c0b // mov w11, v0.s[2]
1454 .long 0x0e1c3c0c // mov w12, v0.s[3]
1455 .long 0x1e26000d // fmov w13, s0
1456 .long 0x386d48cd // ldrb w13, [x6, w13, uxtw]
1457 .long 0x386a48ca // ldrb w10, [x6, w10, uxtw]
1458 .long 0x386b48cb // ldrb w11, [x6, w11, uxtw]
1459 .long 0x386c48cc // ldrb w12, [x6, w12, uxtw]
1460 .long 0xa9412526 // ldp x6, x9, [x9, #16]
1461 .long 0x6e31dc42 // fmul v2.4s, v2.4s, v17.4s
1462 .long 0x6e31dc21 // fmul v1.4s, v1.4s, v17.4s
1463 .long 0x6e31dc63 // fmul v3.4s, v3.4s, v17.4s
1464 .long 0x6e21a842 // fcvtnu v2.4s, v2.4s
1465 .long 0x6e21a821 // fcvtnu v1.4s, v1.4s
1466 .long 0x6e21a863 // fcvtnu v3.4s, v3.4s
1467 .long 0x0e0c3c52 // mov w18, v2.s[1]
1468 .long 0x0e143c43 // mov w3, v2.s[2]
1469 .long 0x0e1c3c44 // mov w4, v2.s[3]
1470 .long 0x1e260045 // fmov w5, s2
1471 .long 0x1e260031 // fmov w17, s1
1472 .long 0x386548c5 // ldrb w5, [x6, w5, uxtw]
1473 .long 0x387248d2 // ldrb w18, [x6, w18, uxtw]
1474 .long 0x386348c3 // ldrb w3, [x6, w3, uxtw]
1475 .long 0x386448c4 // ldrb w4, [x6, w4, uxtw]
1476 .long 0x1e260066 // fmov w6, s3
1477 .long 0x0e0c3c2e // mov w14, v1.s[1]
1478 .long 0x0e0c3c67 // mov w7, v3.s[1]
1479 .long 0x38714a91 // ldrb w17, [x20, w17, uxtw]
1480 .long 0x38664926 // ldrb w6, [x9, w6, uxtw]
1481 .long 0x0e143c2f // mov w15, v1.s[2]
1482 .long 0x0e1c3c30 // mov w16, v1.s[3]
1483 .long 0x0e143c73 // mov w19, v3.s[2]
1484 .long 0x386e4a8e // ldrb w14, [x20, w14, uxtw]
1485 .long 0x38674927 // ldrb w7, [x9, w7, uxtw]
1486 .long 0x386f4a8f // ldrb w15, [x20, w15, uxtw]
1487 .long 0x38704a90 // ldrb w16, [x20, w16, uxtw]
1488 .long 0x0e1c3c74 // mov w20, v3.s[3]
1489 .long 0x38734933 // ldrb w19, [x9, w19, uxtw]
1490 .long 0x38744929 // ldrb w9, [x9, w20, uxtw]
1491 .long 0x4e021da0 // mov v0.h[0], w13
1492 .long 0x4e021e21 // mov v1.h[0], w17
1493 .long 0x4e021ca2 // mov v2.h[0], w5
1494 .long 0x4e021cc3 // mov v3.h[0], w6
1495 .long 0x4e061d40 // mov v0.h[1], w10
1496 .long 0x4e061dc1 // mov v1.h[1], w14
1497 .long 0x4e061e42 // mov v2.h[1], w18
1498 .long 0x4e061ce3 // mov v3.h[1], w7
1499 .long 0x4e0a1d60 // mov v0.h[2], w11
1500 .long 0x4e0a1de1 // mov v1.h[2], w15
1501 .long 0x4e0a1c62 // mov v2.h[2], w3
1502 .long 0x4e0a1e63 // mov v3.h[2], w19
1503 .long 0x4e0e1d80 // mov v0.h[3], w12
1504 .long 0x4e0e1e01 // mov v1.h[3], w16
1505 .long 0x4e0e1c82 // mov v2.h[3], w4
1506 .long 0x4e0e1d23 // mov v3.h[3], w9
1507 .long 0xf9400505 // ldr x5, [x8, #8]
1508 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
1509 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
1510 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
1511 .long 0x2f07b7e3 // bic v3.4h, #0xff, lsl #8
1512 .long 0xa9414ff4 // ldp x20, x19, [sp, #16]
1513 .long 0x2f10a400 // uxtl v0.4s, v0.4h
1514 .long 0x2f10a421 // uxtl v1.4s, v1.4h
1515 .long 0x2f10a442 // uxtl v2.4s, v2.4h
1516 .long 0x2f10a463 // uxtl v3.4s, v3.4h
1517 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
1518 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
1519 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
1520 .long 0x6e21d863 // ucvtf v3.4s, v3.4s
1521 .long 0x6e30dc00 // fmul v0.4s, v0.4s, v16.4s
1522 .long 0x6e30dc21 // fmul v1.4s, v1.4s, v16.4s
1523 .long 0x6e30dc42 // fmul v2.4s, v2.4s, v16.4s
1524 .long 0x6e30dc63 // fmul v3.4s, v3.4s, v16.4s
1525 .long 0x910083ff // add sp, sp, #0x20
1526 .long 0xd61f00a0 // br x5
1527
1528HIDDEN _sk_byte_tables_rgb_aarch64
1529.globl _sk_byte_tables_rgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001530FUNCTION(_sk_byte_tables_rgb_aarch64)
Mike Klein40de6da2017-04-07 13:09:29 -04001531_sk_byte_tables_rgb_aarch64:
1532 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1533 .long 0x52a77009 // mov w9, #0x3b800000
1534 .long 0x72901029 // movk w9, #0x8081
1535 .long 0x4e040d30 // dup v16.4s, w9
1536 .long 0xb9401909 // ldr w9, [x8, #24]
1537 .long 0xa9402d0a // ldp x10, x11, [x8]
1538 .long 0xf9400908 // ldr x8, [x8, #16]
1539 .long 0x51000529 // sub w9, w9, #0x1
1540 .long 0x4e040d31 // dup v17.4s, w9
1541 .long 0x4e21da31 // scvtf v17.4s, v17.4s
1542 .long 0x6e21de21 // fmul v1.4s, v17.4s, v1.4s
1543 .long 0x6e20de20 // fmul v0.4s, v17.4s, v0.4s
1544 .long 0x6e22de22 // fmul v2.4s, v17.4s, v2.4s
1545 .long 0x6e21a821 // fcvtnu v1.4s, v1.4s
1546 .long 0x6e21a800 // fcvtnu v0.4s, v0.4s
1547 .long 0x6e21a842 // fcvtnu v2.4s, v2.4s
1548 .long 0x0e0c3c2f // mov w15, v1.s[1]
1549 .long 0x0e143c30 // mov w16, v1.s[2]
1550 .long 0x0e1c3c31 // mov w17, v1.s[3]
1551 .long 0x1e260032 // fmov w18, s1
1552 .long 0x1e26000e // fmov w14, s0
1553 .long 0x38724972 // ldrb w18, [x11, w18, uxtw]
1554 .long 0x386f496f // ldrb w15, [x11, w15, uxtw]
1555 .long 0x38704970 // ldrb w16, [x11, w16, uxtw]
1556 .long 0x3871496b // ldrb w11, [x11, w17, uxtw]
1557 .long 0x1e260051 // fmov w17, s2
1558 .long 0x0e0c3c09 // mov w9, v0.s[1]
1559 .long 0x386e494e // ldrb w14, [x10, w14, uxtw]
1560 .long 0x0e0c3c44 // mov w4, v2.s[1]
1561 .long 0x38714911 // ldrb w17, [x8, w17, uxtw]
1562 .long 0x0e143c0c // mov w12, v0.s[2]
1563 .long 0x0e1c3c0d // mov w13, v0.s[3]
1564 .long 0x0e143c45 // mov w5, v2.s[2]
1565 .long 0x38694949 // ldrb w9, [x10, w9, uxtw]
1566 .long 0x38644904 // ldrb w4, [x8, w4, uxtw]
1567 .long 0x386c494c // ldrb w12, [x10, w12, uxtw]
1568 .long 0x386d494a // ldrb w10, [x10, w13, uxtw]
1569 .long 0x0e1c3c4d // mov w13, v2.s[3]
1570 .long 0x38654905 // ldrb w5, [x8, w5, uxtw]
1571 .long 0x386d4908 // ldrb w8, [x8, w13, uxtw]
1572 .long 0x4e021dc0 // mov v0.h[0], w14
1573 .long 0x4e021e41 // mov v1.h[0], w18
1574 .long 0x4e021e22 // mov v2.h[0], w17
1575 .long 0x4e061d20 // mov v0.h[1], w9
1576 .long 0x4e061de1 // mov v1.h[1], w15
1577 .long 0x4e061c82 // mov v2.h[1], w4
1578 .long 0x4e0a1d80 // mov v0.h[2], w12
1579 .long 0x4e0a1e01 // mov v1.h[2], w16
1580 .long 0x4e0a1ca2 // mov v2.h[2], w5
1581 .long 0x4e0e1d40 // mov v0.h[3], w10
1582 .long 0x4e0e1d61 // mov v1.h[3], w11
1583 .long 0x4e0e1d02 // mov v2.h[3], w8
1584 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
1585 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
1586 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
1587 .long 0x2f10a400 // uxtl v0.4s, v0.4h
1588 .long 0x2f10a421 // uxtl v1.4s, v1.4h
1589 .long 0x2f10a442 // uxtl v2.4s, v2.4h
1590 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
1591 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
1592 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
1593 .long 0x6e30dc00 // fmul v0.4s, v0.4s, v16.4s
1594 .long 0x6e30dc21 // fmul v1.4s, v1.4s, v16.4s
1595 .long 0x6e30dc42 // fmul v2.4s, v2.4s, v16.4s
1596 .long 0xd61f0060 // br x3
1597
Mike Kleinc7d9c0b2017-04-17 14:43:59 -04001598HIDDEN _sk_table_r_aarch64
1599.globl _sk_table_r_aarch64
1600FUNCTION(_sk_table_r_aarch64)
1601_sk_table_r_aarch64:
1602 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1603 .long 0xb9400909 // ldr w9, [x8, #8]
1604 .long 0xf9400108 // ldr x8, [x8]
1605 .long 0x51000529 // sub w9, w9, #0x1
1606 .long 0x4e040d30 // dup v16.4s, w9
1607 .long 0x4e21da10 // scvtf v16.4s, v16.4s
1608 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
1609 .long 0x6e21a810 // fcvtnu v16.4s, v0.4s
1610 .long 0x1e26020b // fmov w11, s16
1611 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
1612 .long 0x0d408160 // ld1 {v0.s}[0], [x11]
1613 .long 0x0e0c3e09 // mov w9, v16.s[1]
1614 .long 0x0e143e0a // mov w10, v16.s[2]
1615 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1616 .long 0x0e1c3e0b // mov w11, v16.s[3]
1617 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
1618 .long 0x0d409120 // ld1 {v0.s}[1], [x9]
1619 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
1620 .long 0x6e140600 // mov v0.s[2], v16.s[0]
1621 .long 0x6e1c0620 // mov v0.s[3], v17.s[0]
1622 .long 0xd61f0060 // br x3
1623
1624HIDDEN _sk_table_g_aarch64
1625.globl _sk_table_g_aarch64
1626FUNCTION(_sk_table_g_aarch64)
1627_sk_table_g_aarch64:
1628 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1629 .long 0xb9400909 // ldr w9, [x8, #8]
1630 .long 0xf9400108 // ldr x8, [x8]
1631 .long 0x51000529 // sub w9, w9, #0x1
1632 .long 0x4e040d30 // dup v16.4s, w9
1633 .long 0x4e21da10 // scvtf v16.4s, v16.4s
1634 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
1635 .long 0x6e21a830 // fcvtnu v16.4s, v1.4s
1636 .long 0x1e26020b // fmov w11, s16
1637 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
1638 .long 0x0d408161 // ld1 {v1.s}[0], [x11]
1639 .long 0x0e0c3e09 // mov w9, v16.s[1]
1640 .long 0x0e143e0a // mov w10, v16.s[2]
1641 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1642 .long 0x0e1c3e0b // mov w11, v16.s[3]
1643 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
1644 .long 0x0d409121 // ld1 {v1.s}[1], [x9]
1645 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
1646 .long 0x6e140601 // mov v1.s[2], v16.s[0]
1647 .long 0x6e1c0621 // mov v1.s[3], v17.s[0]
1648 .long 0xd61f0060 // br x3
1649
1650HIDDEN _sk_table_b_aarch64
1651.globl _sk_table_b_aarch64
1652FUNCTION(_sk_table_b_aarch64)
1653_sk_table_b_aarch64:
1654 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1655 .long 0xb9400909 // ldr w9, [x8, #8]
1656 .long 0xf9400108 // ldr x8, [x8]
1657 .long 0x51000529 // sub w9, w9, #0x1
1658 .long 0x4e040d30 // dup v16.4s, w9
1659 .long 0x4e21da10 // scvtf v16.4s, v16.4s
1660 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
1661 .long 0x6e21a850 // fcvtnu v16.4s, v2.4s
1662 .long 0x1e26020b // fmov w11, s16
1663 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
1664 .long 0x0d408162 // ld1 {v2.s}[0], [x11]
1665 .long 0x0e0c3e09 // mov w9, v16.s[1]
1666 .long 0x0e143e0a // mov w10, v16.s[2]
1667 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1668 .long 0x0e1c3e0b // mov w11, v16.s[3]
1669 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
1670 .long 0x0d409122 // ld1 {v2.s}[1], [x9]
1671 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
1672 .long 0x6e140602 // mov v2.s[2], v16.s[0]
1673 .long 0x6e1c0622 // mov v2.s[3], v17.s[0]
1674 .long 0xd61f0060 // br x3
1675
1676HIDDEN _sk_table_a_aarch64
1677.globl _sk_table_a_aarch64
1678FUNCTION(_sk_table_a_aarch64)
1679_sk_table_a_aarch64:
1680 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1681 .long 0xb9400909 // ldr w9, [x8, #8]
1682 .long 0xf9400108 // ldr x8, [x8]
1683 .long 0x51000529 // sub w9, w9, #0x1
1684 .long 0x4e040d30 // dup v16.4s, w9
1685 .long 0x4e21da10 // scvtf v16.4s, v16.4s
1686 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
1687 .long 0x6e21a870 // fcvtnu v16.4s, v3.4s
1688 .long 0x1e26020b // fmov w11, s16
1689 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
1690 .long 0x0d408163 // ld1 {v3.s}[0], [x11]
1691 .long 0x0e0c3e09 // mov w9, v16.s[1]
1692 .long 0x0e143e0a // mov w10, v16.s[2]
1693 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1694 .long 0x0e1c3e0b // mov w11, v16.s[3]
1695 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
1696 .long 0x0d409123 // ld1 {v3.s}[1], [x9]
1697 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
1698 .long 0x6e140603 // mov v3.s[2], v16.s[0]
1699 .long 0x6e1c0623 // mov v3.s[3], v17.s[0]
1700 .long 0xd61f0060 // br x3
1701
Mike Klein44375172017-04-17 19:32:05 -04001702HIDDEN _sk_parametric_r_aarch64
1703.globl _sk_parametric_r_aarch64
1704FUNCTION(_sk_parametric_r_aarch64)
1705_sk_parametric_r_aarch64:
1706 .long 0xf9400028 // ldr x8, [x1]
1707 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
1708 .long 0x91004109 // add x9, x8, #0x10
1709 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04001710 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04001711 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04001712 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04001713 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001714 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04001715 .long 0x9100210a // add x10, x8, #0x8
1716 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001717 .long 0x4f911010 // fmla v16.4s, v0.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04001718 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04001719 .long 0x52b85f09 // mov w9, #0xc2f80000
1720 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04001721 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001722 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04001723 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04001724 .long 0x4f951014 // fmla v20.4s, v0.4s, v21.s[0]
1725 .long 0x6e20e640 // fcmge v0.4s, v18.4s, v0.4s
1726 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001727 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04001728 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04001729 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04001730 .long 0x4e21da95 // scvtf v21.4s, v20.4s
1731 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04001732 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04001733 .long 0x52a7fb89 // mov w9, #0x3fdc0000
1734 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
1735 .long 0x729d3469 // movk w9, #0xe9a3
1736 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
1737 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
1738 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001739 .long 0x52a85e49 // mov w9, #0x42f20000
1740 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04001741 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
1742 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001743 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
1744 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04001745 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
1746 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001747 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04001748 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04001749 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04001750 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
1751 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001752 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04001753 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04001754 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04001755 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
1756 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
1757 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
1758 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
1759 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001760 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04001761 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
1762 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
1763 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
1764 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
1765 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04001766 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
1767 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04001768 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
1769 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04001770 .long 0x6e711e00 // bsl v0.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04001771 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
1772 .long 0x4e32f400 // fmax v0.4s, v0.4s, v18.4s
1773 .long 0x4eb5f400 // fmin v0.4s, v0.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04001774 .long 0x91004021 // add x1, x1, #0x10
1775 .long 0xd61f0060 // br x3
1776
1777HIDDEN _sk_parametric_g_aarch64
1778.globl _sk_parametric_g_aarch64
1779FUNCTION(_sk_parametric_g_aarch64)
1780_sk_parametric_g_aarch64:
1781 .long 0xf9400028 // ldr x8, [x1]
1782 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
1783 .long 0x91004109 // add x9, x8, #0x10
1784 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04001785 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04001786 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04001787 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04001788 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001789 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04001790 .long 0x9100210a // add x10, x8, #0x8
1791 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001792 .long 0x4f911030 // fmla v16.4s, v1.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04001793 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04001794 .long 0x52b85f09 // mov w9, #0xc2f80000
1795 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04001796 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001797 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04001798 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04001799 .long 0x4f951034 // fmla v20.4s, v1.4s, v21.s[0]
1800 .long 0x6e21e641 // fcmge v1.4s, v18.4s, v1.4s
1801 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001802 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04001803 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04001804 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04001805 .long 0x4e21da95 // scvtf v21.4s, v20.4s
1806 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04001807 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04001808 .long 0x52a7fb89 // mov w9, #0x3fdc0000
1809 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
1810 .long 0x729d3469 // movk w9, #0xe9a3
1811 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
1812 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
1813 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001814 .long 0x52a85e49 // mov w9, #0x42f20000
1815 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04001816 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
1817 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001818 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
1819 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04001820 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
1821 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001822 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04001823 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04001824 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04001825 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
1826 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001827 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04001828 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04001829 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04001830 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
1831 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
1832 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
1833 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
1834 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001835 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04001836 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
1837 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
1838 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
1839 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
1840 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04001841 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
1842 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04001843 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
1844 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04001845 .long 0x6e711e01 // bsl v1.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04001846 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
1847 .long 0x4e32f421 // fmax v1.4s, v1.4s, v18.4s
1848 .long 0x4eb5f421 // fmin v1.4s, v1.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04001849 .long 0x91004021 // add x1, x1, #0x10
1850 .long 0xd61f0060 // br x3
1851
1852HIDDEN _sk_parametric_b_aarch64
1853.globl _sk_parametric_b_aarch64
1854FUNCTION(_sk_parametric_b_aarch64)
1855_sk_parametric_b_aarch64:
1856 .long 0xf9400028 // ldr x8, [x1]
1857 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
1858 .long 0x91004109 // add x9, x8, #0x10
1859 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04001860 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04001861 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04001862 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04001863 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001864 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04001865 .long 0x9100210a // add x10, x8, #0x8
1866 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001867 .long 0x4f911050 // fmla v16.4s, v2.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04001868 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04001869 .long 0x52b85f09 // mov w9, #0xc2f80000
1870 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04001871 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001872 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04001873 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04001874 .long 0x4f951054 // fmla v20.4s, v2.4s, v21.s[0]
1875 .long 0x6e22e642 // fcmge v2.4s, v18.4s, v2.4s
1876 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001877 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04001878 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04001879 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04001880 .long 0x4e21da95 // scvtf v21.4s, v20.4s
1881 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04001882 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04001883 .long 0x52a7fb89 // mov w9, #0x3fdc0000
1884 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
1885 .long 0x729d3469 // movk w9, #0xe9a3
1886 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
1887 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
1888 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001889 .long 0x52a85e49 // mov w9, #0x42f20000
1890 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04001891 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
1892 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001893 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
1894 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04001895 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
1896 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001897 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04001898 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04001899 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04001900 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
1901 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001902 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04001903 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04001904 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04001905 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
1906 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
1907 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
1908 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
1909 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001910 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04001911 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
1912 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
1913 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
1914 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
1915 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04001916 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
1917 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04001918 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
1919 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04001920 .long 0x6e711e02 // bsl v2.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04001921 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
1922 .long 0x4e32f442 // fmax v2.4s, v2.4s, v18.4s
1923 .long 0x4eb5f442 // fmin v2.4s, v2.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04001924 .long 0x91004021 // add x1, x1, #0x10
1925 .long 0xd61f0060 // br x3
1926
1927HIDDEN _sk_parametric_a_aarch64
1928.globl _sk_parametric_a_aarch64
1929FUNCTION(_sk_parametric_a_aarch64)
1930_sk_parametric_a_aarch64:
1931 .long 0xf9400028 // ldr x8, [x1]
1932 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
1933 .long 0x91004109 // add x9, x8, #0x10
1934 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04001935 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04001936 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04001937 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04001938 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001939 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04001940 .long 0x9100210a // add x10, x8, #0x8
1941 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001942 .long 0x4f911070 // fmla v16.4s, v3.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04001943 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04001944 .long 0x52b85f09 // mov w9, #0xc2f80000
1945 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04001946 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001947 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04001948 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04001949 .long 0x4f951074 // fmla v20.4s, v3.4s, v21.s[0]
1950 .long 0x6e23e643 // fcmge v3.4s, v18.4s, v3.4s
1951 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001952 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04001953 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04001954 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04001955 .long 0x4e21da95 // scvtf v21.4s, v20.4s
1956 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04001957 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04001958 .long 0x52a7fb89 // mov w9, #0x3fdc0000
1959 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
1960 .long 0x729d3469 // movk w9, #0xe9a3
1961 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
1962 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
1963 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001964 .long 0x52a85e49 // mov w9, #0x42f20000
1965 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04001966 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
1967 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001968 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
1969 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04001970 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
1971 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001972 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04001973 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04001974 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04001975 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
1976 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001977 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04001978 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04001979 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04001980 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
1981 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
1982 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
1983 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
1984 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001985 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04001986 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
1987 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
1988 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
1989 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
1990 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04001991 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
1992 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04001993 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
1994 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04001995 .long 0x6e711e03 // bsl v3.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04001996 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
1997 .long 0x4e32f463 // fmax v3.4s, v3.4s, v18.4s
1998 .long 0x4eb5f463 // fmin v3.4s, v3.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04001999 .long 0x91004021 // add x1, x1, #0x10
2000 .long 0xd61f0060 // br x3
2001
Mike Klein4e3e9f82017-04-20 11:04:29 -04002002HIDDEN _sk_lab_to_xyz_aarch64
2003.globl _sk_lab_to_xyz_aarch64
2004FUNCTION(_sk_lab_to_xyz_aarch64)
2005_sk_lab_to_xyz_aarch64:
2006 .long 0x52a85908 // mov w8, #0x42c80000
2007 .long 0x4e040d10 // dup v16.4s, w8
2008 .long 0x52a86fe8 // mov w8, #0x437f0000
2009 .long 0x4f066471 // movi v17.4s, #0xc3, lsl #24
2010 .long 0x4e040d13 // dup v19.4s, w8
2011 .long 0x52a781a8 // mov w8, #0x3c0d0000
2012 .long 0x7287b968 // movk w8, #0x3dcb
2013 .long 0x4eb11e34 // mov v20.16b, v17.16b
2014 .long 0x4e21ce74 // fmla v20.4s, v19.4s, v1.4s
2015 .long 0x4e040d01 // dup v1.4s, w8
2016 .long 0x52a76068 // mov w8, #0x3b030000
2017 .long 0x72824de8 // movk w8, #0x126f
2018 .long 0x4e22ce71 // fmla v17.4s, v19.4s, v2.4s
2019 .long 0x4e040d02 // dup v2.4s, w8
2020 .long 0x52a77468 // mov w8, #0x3ba30000
2021 .long 0x729ae148 // movk w8, #0xd70a
2022 .long 0x4e040d13 // dup v19.4s, w8
2023 .long 0x52a78228 // mov w8, #0x3c110000
2024 .long 0x4f01f612 // fmov v18.4s, #1.600000000000000000e+01
2025 .long 0x72831848 // movk w8, #0x18c2
2026 .long 0x4e20ce12 // fmla v18.4s, v16.4s, v0.4s
2027 .long 0x4e040d00 // dup v0.4s, w8
2028 .long 0x52b7c1a8 // mov w8, #0xbe0d0000
2029 .long 0x7287b968 // movk w8, #0x3dcb
2030 .long 0x6e21de41 // fmul v1.4s, v18.4s, v1.4s
2031 .long 0x4e040d10 // dup v16.4s, w8
2032 .long 0x52a7c068 // mov w8, #0x3e030000
2033 .long 0x4ea11c32 // mov v18.16b, v1.16b
2034 .long 0x72900a08 // movk w8, #0x8050
2035 .long 0x4eb3ce32 // fmls v18.4s, v17.4s, v19.4s
2036 .long 0x6e21dc31 // fmul v17.4s, v1.4s, v1.4s
2037 .long 0x4ea11c35 // mov v21.16b, v1.16b
2038 .long 0x4e30d433 // fadd v19.4s, v1.4s, v16.4s
2039 .long 0x6e31dc31 // fmul v17.4s, v1.4s, v17.4s
2040 .long 0x4e34cc55 // fmla v21.4s, v2.4s, v20.4s
2041 .long 0x4e040d02 // dup v2.4s, w8
2042 .long 0x6e22de73 // fmul v19.4s, v19.4s, v2.4s
2043 .long 0x6ea0e621 // fcmgt v1.4s, v17.4s, v0.4s
2044 .long 0x6e731e21 // bsl v1.16b, v17.16b, v19.16b
2045 .long 0x6e32de51 // fmul v17.4s, v18.4s, v18.4s
2046 .long 0x4e30d653 // fadd v19.4s, v18.4s, v16.4s
2047 .long 0x6e31de51 // fmul v17.4s, v18.4s, v17.4s
2048 .long 0x52a7eec8 // mov w8, #0x3f760000
2049 .long 0x6e22de72 // fmul v18.4s, v19.4s, v2.4s
2050 .long 0x6ea0e633 // fcmgt v19.4s, v17.4s, v0.4s
2051 .long 0x729ae3e8 // movk w8, #0xd71f
2052 .long 0x6e721e33 // bsl v19.16b, v17.16b, v18.16b
2053 .long 0x6e35deb2 // fmul v18.4s, v21.4s, v21.4s
2054 .long 0x4e040d11 // dup v17.4s, w8
2055 .long 0x52a7ea68 // mov w8, #0x3f530000
2056 .long 0x4e30d6b0 // fadd v16.4s, v21.4s, v16.4s
2057 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
2058 .long 0xf8408423 // ldr x3, [x1], #8
2059 .long 0x72881ec8 // movk w8, #0x40f6
2060 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
2061 .long 0x6ea0e640 // fcmgt v0.4s, v18.4s, v0.4s
2062 .long 0x4e040d14 // dup v20.4s, w8
2063 .long 0x6e621e40 // bsl v0.16b, v18.16b, v2.16b
2064 .long 0x6e31dc00 // fmul v0.4s, v0.4s, v17.4s
2065 .long 0x6e34de62 // fmul v2.4s, v19.4s, v20.4s
2066 .long 0xd61f0060 // br x3
2067
Mike Klein7c4af542017-03-29 18:21:14 -04002068HIDDEN _sk_load_a8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002069.globl _sk_load_a8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002070FUNCTION(_sk_load_a8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002071_sk_load_a8_aarch64:
2072 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2073 .long 0x52a77009 // mov w9, #0x3b800000
2074 .long 0x72901029 // movk w9, #0x8081
2075 .long 0x4e040d22 // dup v2.4s, w9
2076 .long 0xf9400108 // ldr x8, [x8]
2077 .long 0x6f00e400 // movi v0.2d, #0x0
2078 .long 0x6f00e401 // movi v1.2d, #0x0
2079 .long 0x8b000108 // add x8, x8, x0
2080 .long 0x3940010a // ldrb w10, [x8]
2081 .long 0x3940050b // ldrb w11, [x8, #1]
2082 .long 0x3940090c // ldrb w12, [x8, #2]
2083 .long 0x39400d08 // ldrb w8, [x8, #3]
2084 .long 0x4e021d43 // mov v3.h[0], w10
2085 .long 0x4e061d63 // mov v3.h[1], w11
2086 .long 0x4e0a1d83 // mov v3.h[2], w12
2087 .long 0x4e0e1d03 // mov v3.h[3], w8
2088 .long 0x2f10a463 // uxtl v3.4s, v3.4h
2089 .long 0x6e21d863 // ucvtf v3.4s, v3.4s
2090 .long 0x6e22dc63 // fmul v3.4s, v3.4s, v2.4s
2091 .long 0x6f00e402 // movi v2.2d, #0x0
2092 .long 0xd61f0060 // br x3
2093
Mike Klein21bd3e42017-04-06 16:32:29 -04002094HIDDEN _sk_gather_a8_aarch64
2095.globl _sk_gather_a8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002096FUNCTION(_sk_gather_a8_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002097_sk_gather_a8_aarch64:
2098 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2099 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2100 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2101 .long 0x91004109 // add x9, x8, #0x10
2102 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2103 .long 0xf9400108 // ldr x8, [x8]
2104 .long 0x52a77009 // mov w9, #0x3b800000
2105 .long 0x72901029 // movk w9, #0x8081
2106 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2107 .long 0x1e26000c // fmov w12, s0
2108 .long 0x4e040d23 // dup v3.4s, w9
2109 .long 0x0e0c3c09 // mov w9, v0.s[1]
2110 .long 0x386c490c // ldrb w12, [x8, w12, uxtw]
2111 .long 0x0e143c0a // mov w10, v0.s[2]
2112 .long 0x38694909 // ldrb w9, [x8, w9, uxtw]
2113 .long 0x0e1c3c0b // mov w11, v0.s[3]
2114 .long 0x386a490a // ldrb w10, [x8, w10, uxtw]
2115 .long 0x386b4908 // ldrb w8, [x8, w11, uxtw]
2116 .long 0x4e021d82 // mov v2.h[0], w12
2117 .long 0x4e061d22 // mov v2.h[1], w9
2118 .long 0x4e0a1d42 // mov v2.h[2], w10
2119 .long 0x4e0e1d02 // mov v2.h[3], w8
2120 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
2121 .long 0x2f10a442 // uxtl v2.4s, v2.4h
2122 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
2123 .long 0x6f00e400 // movi v0.2d, #0x0
2124 .long 0x6f00e401 // movi v1.2d, #0x0
2125 .long 0x6e23dc43 // fmul v3.4s, v2.4s, v3.4s
2126 .long 0x6f00e402 // movi v2.2d, #0x0
2127 .long 0xd61f0060 // br x3
2128
Mike Klein7c4af542017-03-29 18:21:14 -04002129HIDDEN _sk_store_a8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002130.globl _sk_store_a8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002131FUNCTION(_sk_store_a8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002132_sk_store_a8_aarch64:
2133 .long 0xf9400028 // ldr x8, [x1]
2134 .long 0x52a86fe9 // mov w9, #0x437f0000
2135 .long 0x4e040d30 // dup v16.4s, w9
2136 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
2137 .long 0xf9400108 // ldr x8, [x8]
2138 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2139 .long 0x0e612a10 // xtn v16.4h, v16.4s
2140 .long 0x0e0e3e09 // umov w9, v16.h[3]
2141 .long 0x8b000108 // add x8, x8, x0
2142 .long 0x39000d09 // strb w9, [x8, #3]
2143 .long 0x0e0a3e09 // umov w9, v16.h[2]
2144 .long 0x39000909 // strb w9, [x8, #2]
2145 .long 0x0e063e09 // umov w9, v16.h[1]
2146 .long 0x39000509 // strb w9, [x8, #1]
2147 .long 0x0e023e09 // umov w9, v16.h[0]
2148 .long 0x39000109 // strb w9, [x8]
2149 .long 0xf9400423 // ldr x3, [x1, #8]
2150 .long 0x91004021 // add x1, x1, #0x10
2151 .long 0xd61f0060 // br x3
2152
Mike Kleinf809fef2017-03-31 13:52:45 -04002153HIDDEN _sk_load_g8_aarch64
2154.globl _sk_load_g8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002155FUNCTION(_sk_load_g8_aarch64)
Mike Kleinf809fef2017-03-31 13:52:45 -04002156_sk_load_g8_aarch64:
2157 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2158 .long 0x52a77009 // mov w9, #0x3b800000
2159 .long 0x72901029 // movk w9, #0x8081
2160 .long 0x4e040d20 // dup v0.4s, w9
2161 .long 0xf9400108 // ldr x8, [x8]
2162 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2163 .long 0x8b000108 // add x8, x8, x0
2164 .long 0x3940010a // ldrb w10, [x8]
2165 .long 0x39400509 // ldrb w9, [x8, #1]
2166 .long 0x3940090b // ldrb w11, [x8, #2]
2167 .long 0x39400d08 // ldrb w8, [x8, #3]
2168 .long 0x4e021d41 // mov v1.h[0], w10
2169 .long 0x4e061d21 // mov v1.h[1], w9
2170 .long 0x4e0a1d61 // mov v1.h[2], w11
2171 .long 0x4e0e1d01 // mov v1.h[3], w8
2172 .long 0x2f10a421 // uxtl v1.4s, v1.4h
2173 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
2174 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2175 .long 0x4ea01c01 // mov v1.16b, v0.16b
2176 .long 0x4ea01c02 // mov v2.16b, v0.16b
2177 .long 0xd61f0060 // br x3
2178
Mike Klein21bd3e42017-04-06 16:32:29 -04002179HIDDEN _sk_gather_g8_aarch64
2180.globl _sk_gather_g8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002181FUNCTION(_sk_gather_g8_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002182_sk_gather_g8_aarch64:
2183 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2184 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2185 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2186 .long 0x91004109 // add x9, x8, #0x10
2187 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2188 .long 0xf9400108 // ldr x8, [x8]
2189 .long 0x52a77009 // mov w9, #0x3b800000
2190 .long 0x72901029 // movk w9, #0x8081
2191 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2192 .long 0x1e26000c // fmov w12, s0
2193 .long 0x4e040d23 // dup v3.4s, w9
2194 .long 0x0e0c3c09 // mov w9, v0.s[1]
2195 .long 0x386c490c // ldrb w12, [x8, w12, uxtw]
2196 .long 0x0e143c0a // mov w10, v0.s[2]
2197 .long 0x38694909 // ldrb w9, [x8, w9, uxtw]
2198 .long 0x0e1c3c0b // mov w11, v0.s[3]
2199 .long 0x386a490a // ldrb w10, [x8, w10, uxtw]
2200 .long 0x386b4908 // ldrb w8, [x8, w11, uxtw]
2201 .long 0x4e021d80 // mov v0.h[0], w12
2202 .long 0x4e061d20 // mov v0.h[1], w9
2203 .long 0x4e0a1d40 // mov v0.h[2], w10
2204 .long 0x4e0e1d00 // mov v0.h[3], w8
2205 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
2206 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2207 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
2208 .long 0x6e23dc00 // fmul v0.4s, v0.4s, v3.4s
2209 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2210 .long 0x4ea01c01 // mov v1.16b, v0.16b
2211 .long 0x4ea01c02 // mov v2.16b, v0.16b
2212 .long 0xd61f0060 // br x3
2213
Mike Klein7d3d8722017-04-06 17:53:18 -04002214HIDDEN _sk_gather_i8_aarch64
2215.globl _sk_gather_i8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002216FUNCTION(_sk_gather_i8_aarch64)
Mike Klein7d3d8722017-04-06 17:53:18 -04002217_sk_gather_i8_aarch64:
2218 .long 0xaa0103e8 // mov x8, x1
2219 .long 0xf8408429 // ldr x9, [x1], #8
Mike Kleinb3665f02017-05-01 14:56:04 -04002220 .long 0xb4000069 // cbz x9, 1d2c <sk_gather_i8_aarch64+0x14>
Mike Klein7d3d8722017-04-06 17:53:18 -04002221 .long 0xaa0903ea // mov x10, x9
Mike Kleinb3665f02017-05-01 14:56:04 -04002222 .long 0x14000003 // b 1d34 <sk_gather_i8_aarch64+0x1c>
Mike Klein7d3d8722017-04-06 17:53:18 -04002223 .long 0xf940050a // ldr x10, [x8, #8]
2224 .long 0x91004101 // add x1, x8, #0x10
2225 .long 0xf8410548 // ldr x8, [x10], #16
2226 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2227 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2228 .long 0xf9400529 // ldr x9, [x9, #8]
2229 .long 0x4d40c942 // ld1r {v2.4s}, [x10]
2230 .long 0x6f00e623 // movi v3.2d, #0xff000000ff
2231 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2232 .long 0x1e26000d // fmov w13, s0
2233 .long 0x0e0c3c0a // mov w10, v0.s[1]
2234 .long 0x386d490d // ldrb w13, [x8, w13, uxtw]
2235 .long 0x0e143c0b // mov w11, v0.s[2]
2236 .long 0x386a490a // ldrb w10, [x8, w10, uxtw]
2237 .long 0x0e1c3c0c // mov w12, v0.s[3]
2238 .long 0x386b490b // ldrb w11, [x8, w11, uxtw]
2239 .long 0x386c4908 // ldrb w8, [x8, w12, uxtw]
2240 .long 0x4e021da0 // mov v0.h[0], w13
2241 .long 0x4e061d40 // mov v0.h[1], w10
2242 .long 0x4e0a1d60 // mov v0.h[2], w11
2243 .long 0x4e0e1d00 // mov v0.h[3], w8
2244 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2245 .long 0x4e231c00 // and v0.16b, v0.16b, v3.16b
2246 .long 0x1e26000c // fmov w12, s0
2247 .long 0x8b2c492c // add x12, x9, w12, uxtw #2
2248 .long 0x0e0c3c08 // mov w8, v0.s[1]
2249 .long 0x0e143c0a // mov w10, v0.s[2]
2250 .long 0x0e1c3c0b // mov w11, v0.s[3]
2251 .long 0x0d408180 // ld1 {v0.s}[0], [x12]
2252 .long 0x8b284928 // add x8, x9, w8, uxtw #2
2253 .long 0xb86a592a // ldr w10, [x9, w10, uxtw #2]
2254 .long 0x52a7700c // mov w12, #0x3b800000
2255 .long 0x0d409100 // ld1 {v0.s}[1], [x8]
2256 .long 0xb86b5928 // ldr w8, [x9, w11, uxtw #2]
2257 .long 0x7290102c // movk w12, #0x8081
2258 .long 0xf8408423 // ldr x3, [x1], #8
2259 .long 0x4e141d40 // mov v0.s[2], w10
2260 .long 0x4e1c1d00 // mov v0.s[3], w8
2261 .long 0x4e231c01 // and v1.16b, v0.16b, v3.16b
2262 .long 0x6f380402 // ushr v2.4s, v0.4s, #8
2263 .long 0x6f300411 // ushr v17.4s, v0.4s, #16
2264 .long 0x4e040d90 // dup v16.4s, w12
2265 .long 0x6f280400 // ushr v0.4s, v0.4s, #24
2266 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2267 .long 0x4e231c42 // and v2.16b, v2.16b, v3.16b
2268 .long 0x4e231e23 // and v3.16b, v17.16b, v3.16b
2269 .long 0x4e21d811 // scvtf v17.4s, v0.4s
2270 .long 0x6e30dc20 // fmul v0.4s, v1.4s, v16.4s
2271 .long 0x4e21d841 // scvtf v1.4s, v2.4s
2272 .long 0x4e21d862 // scvtf v2.4s, v3.4s
2273 .long 0x6e30dc21 // fmul v1.4s, v1.4s, v16.4s
2274 .long 0x6e30dc42 // fmul v2.4s, v2.4s, v16.4s
2275 .long 0x6e30de23 // fmul v3.4s, v17.4s, v16.4s
2276 .long 0xd61f0060 // br x3
2277
Mike Klein7c4af542017-03-29 18:21:14 -04002278HIDDEN _sk_load_565_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002279.globl _sk_load_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002280FUNCTION(_sk_load_565_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002281_sk_load_565_aarch64:
2282 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2283 .long 0xd37ff809 // lsl x9, x0, #1
2284 .long 0x4f072701 // movi v1.4s, #0xf8, lsl #8
2285 .long 0x4f0007e3 // movi v3.4s, #0x1f
2286 .long 0xf9400108 // ldr x8, [x8]
2287 .long 0xfc696900 // ldr d0, [x8, x9]
2288 .long 0x321b17e8 // orr w8, wzr, #0x7e0
2289 .long 0x4e040d02 // dup v2.4s, w8
2290 .long 0x52a6f088 // mov w8, #0x37840000
2291 .long 0x72842108 // movk w8, #0x2108
2292 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2293 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2294 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2295 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2296 .long 0x4e040d00 // dup v0.4s, w8
2297 .long 0x52a74048 // mov w8, #0x3a020000
2298 .long 0x72810428 // movk w8, #0x821
2299 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2300 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2301 .long 0x4e040d01 // dup v1.4s, w8
2302 .long 0x52a7a088 // mov w8, #0x3d040000
2303 .long 0x72842108 // movk w8, #0x2108
2304 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2305 .long 0x6e21dc41 // fmul v1.4s, v2.4s, v1.4s
2306 .long 0x4e040d02 // dup v2.4s, w8
2307 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2308 .long 0x6e22dc62 // fmul v2.4s, v3.4s, v2.4s
2309 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2310 .long 0xd61f0060 // br x3
2311
Mike Klein21bd3e42017-04-06 16:32:29 -04002312HIDDEN _sk_gather_565_aarch64
2313.globl _sk_gather_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002314FUNCTION(_sk_gather_565_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002315_sk_gather_565_aarch64:
2316 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2317 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2318 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2319 .long 0x91004109 // add x9, x8, #0x10
2320 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2321 .long 0xf9400108 // ldr x8, [x8]
2322 .long 0x321b17e9 // orr w9, wzr, #0x7e0
2323 .long 0x4e040d23 // dup v3.4s, w9
2324 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2325 .long 0x1e26000c // fmov w12, s0
2326 .long 0x0e0c3c09 // mov w9, v0.s[1]
2327 .long 0x8b2c450c // add x12, x8, w12, uxtw #1
2328 .long 0x0e143c0a // mov w10, v0.s[2]
2329 .long 0x0e1c3c0b // mov w11, v0.s[3]
2330 .long 0x0d404180 // ld1 {v0.h}[0], [x12]
2331 .long 0x78695909 // ldrh w9, [x8, w9, uxtw #1]
2332 .long 0x786a590a // ldrh w10, [x8, w10, uxtw #1]
2333 .long 0x786b5908 // ldrh w8, [x8, w11, uxtw #1]
2334 .long 0x4f072701 // movi v1.4s, #0xf8, lsl #8
2335 .long 0x4e061d20 // mov v0.h[1], w9
2336 .long 0x4e0a1d40 // mov v0.h[2], w10
2337 .long 0x4e0e1d00 // mov v0.h[3], w8
2338 .long 0x52a6f08b // mov w11, #0x37840000
2339 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2340 .long 0x7284210b // movk w11, #0x2108
2341 .long 0x52a74049 // mov w9, #0x3a020000
2342 .long 0x4f0007e2 // movi v2.4s, #0x1f
2343 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2344 .long 0x72810429 // movk w9, #0x821
2345 .long 0x52a7a08a // mov w10, #0x3d040000
2346 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2347 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2348 .long 0x4e040d60 // dup v0.4s, w11
2349 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2350 .long 0x7284210a // movk w10, #0x2108
2351 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2352 .long 0x4e040d21 // dup v1.4s, w9
2353 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2354 .long 0x6e21dc61 // fmul v1.4s, v3.4s, v1.4s
2355 .long 0x4e040d43 // dup v3.4s, w10
2356 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2357 .long 0x6e23dc42 // fmul v2.4s, v2.4s, v3.4s
2358 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2359 .long 0xd61f0060 // br x3
2360
Mike Klein7c4af542017-03-29 18:21:14 -04002361HIDDEN _sk_store_565_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002362.globl _sk_store_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002363FUNCTION(_sk_store_565_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002364_sk_store_565_aarch64:
2365 .long 0xf9400028 // ldr x8, [x1]
2366 .long 0x52a84f8a // mov w10, #0x427c0000
2367 .long 0x4f01f7f0 // fmov v16.4s, #3.100000000000000000e+01
2368 .long 0x4e040d52 // dup v18.4s, w10
2369 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
2370 .long 0x6e32dc32 // fmul v18.4s, v1.4s, v18.4s
2371 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2372 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2373 .long 0x6e30dc50 // fmul v16.4s, v2.4s, v16.4s
2374 .long 0x4f2b5631 // shl v17.4s, v17.4s, #11
2375 .long 0xf9400108 // ldr x8, [x8]
2376 .long 0x4f255652 // shl v18.4s, v18.4s, #5
2377 .long 0x4eb11e51 // orr v17.16b, v18.16b, v17.16b
2378 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2379 .long 0x4eb01e30 // orr v16.16b, v17.16b, v16.16b
2380 .long 0xd37ff809 // lsl x9, x0, #1
2381 .long 0x0e612a10 // xtn v16.4h, v16.4s
2382 .long 0xfc296910 // str d16, [x8, x9]
2383 .long 0xf9400423 // ldr x3, [x1, #8]
2384 .long 0x91004021 // add x1, x1, #0x10
2385 .long 0xd61f0060 // br x3
2386
Mike Kleinf809fef2017-03-31 13:52:45 -04002387HIDDEN _sk_load_4444_aarch64
2388.globl _sk_load_4444_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002389FUNCTION(_sk_load_4444_aarch64)
Mike Kleinf809fef2017-03-31 13:52:45 -04002390_sk_load_4444_aarch64:
2391 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2392 .long 0xd37ff809 // lsl x9, x0, #1
2393 .long 0x4f072601 // movi v1.4s, #0xf0, lsl #8
2394 .long 0x4f0025e2 // movi v2.4s, #0xf, lsl #8
2395 .long 0xf9400108 // ldr x8, [x8]
2396 .long 0x4f070603 // movi v3.4s, #0xf0
2397 .long 0x4f0005f0 // movi v16.4s, #0xf
2398 .long 0xfc696900 // ldr d0, [x8, x9]
2399 .long 0x52a6f108 // mov w8, #0x37880000
2400 .long 0x72911128 // movk w8, #0x8889
2401 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2402 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2403 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2404 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2405 .long 0x4e301c10 // and v16.16b, v0.16b, v16.16b
2406 .long 0x4e040d00 // dup v0.4s, w8
2407 .long 0x52a73108 // mov w8, #0x39880000
2408 .long 0x72911128 // movk w8, #0x8889
2409 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2410 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2411 .long 0x4e040d01 // dup v1.4s, w8
2412 .long 0x52a77108 // mov w8, #0x3b880000
2413 .long 0x72911128 // movk w8, #0x8889
2414 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2415 .long 0x6e21dc41 // fmul v1.4s, v2.4s, v1.4s
2416 .long 0x4e040d02 // dup v2.4s, w8
2417 .long 0x52a7b108 // mov w8, #0x3d880000
2418 .long 0x72911128 // movk w8, #0x8889
2419 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2420 .long 0x6e22dc62 // fmul v2.4s, v3.4s, v2.4s
2421 .long 0x4e040d03 // dup v3.4s, w8
2422 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2423 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
2424 .long 0xd61f0060 // br x3
2425
Mike Klein21bd3e42017-04-06 16:32:29 -04002426HIDDEN _sk_gather_4444_aarch64
2427.globl _sk_gather_4444_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002428FUNCTION(_sk_gather_4444_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002429_sk_gather_4444_aarch64:
2430 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2431 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2432 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2433 .long 0x4f070603 // movi v3.4s, #0xf0
2434 .long 0x91004109 // add x9, x8, #0x10
2435 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2436 .long 0xf9400108 // ldr x8, [x8]
2437 .long 0x4f0005f0 // movi v16.4s, #0xf
2438 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2439 .long 0x1e26000c // fmov w12, s0
2440 .long 0x0e0c3c09 // mov w9, v0.s[1]
2441 .long 0x8b2c450c // add x12, x8, w12, uxtw #1
2442 .long 0x0e143c0a // mov w10, v0.s[2]
2443 .long 0x0e1c3c0b // mov w11, v0.s[3]
2444 .long 0x0d404180 // ld1 {v0.h}[0], [x12]
2445 .long 0x78695909 // ldrh w9, [x8, w9, uxtw #1]
2446 .long 0x786a590a // ldrh w10, [x8, w10, uxtw #1]
2447 .long 0x786b5908 // ldrh w8, [x8, w11, uxtw #1]
2448 .long 0x4f072601 // movi v1.4s, #0xf0, lsl #8
2449 .long 0x4e061d20 // mov v0.h[1], w9
2450 .long 0x4e0a1d40 // mov v0.h[2], w10
2451 .long 0x4e0e1d00 // mov v0.h[3], w8
2452 .long 0x52a6f10b // mov w11, #0x37880000
2453 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2454 .long 0x7291112b // movk w11, #0x8889
2455 .long 0x4f0025e2 // movi v2.4s, #0xf, lsl #8
2456 .long 0x52a73109 // mov w9, #0x39880000
2457 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2458 .long 0x72911129 // movk w9, #0x8889
2459 .long 0x52a7710a // mov w10, #0x3b880000
2460 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2461 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2462 .long 0x4e301c10 // and v16.16b, v0.16b, v16.16b
2463 .long 0x4e040d60 // dup v0.4s, w11
2464 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2465 .long 0x7291112a // movk w10, #0x8889
2466 .long 0x52a7b108 // mov w8, #0x3d880000
2467 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2468 .long 0x4e040d21 // dup v1.4s, w9
2469 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2470 .long 0x72911128 // movk w8, #0x8889
2471 .long 0x6e21dc41 // fmul v1.4s, v2.4s, v1.4s
2472 .long 0x4e040d42 // dup v2.4s, w10
2473 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2474 .long 0x6e22dc62 // fmul v2.4s, v3.4s, v2.4s
2475 .long 0x4e040d03 // dup v3.4s, w8
2476 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2477 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
2478 .long 0xd61f0060 // br x3
2479
Mike Kleinf809fef2017-03-31 13:52:45 -04002480HIDDEN _sk_store_4444_aarch64
2481.globl _sk_store_4444_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002482FUNCTION(_sk_store_4444_aarch64)
Mike Kleinf809fef2017-03-31 13:52:45 -04002483_sk_store_4444_aarch64:
2484 .long 0x4f01f5d0 // fmov v16.4s, #1.500000000000000000e+01
2485 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
2486 .long 0x6e30dc32 // fmul v18.4s, v1.4s, v16.4s
2487 .long 0xf9400028 // ldr x8, [x1]
2488 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2489 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2490 .long 0x4f2c5631 // shl v17.4s, v17.4s, #12
2491 .long 0x4f285652 // shl v18.4s, v18.4s, #8
2492 .long 0x4eb11e51 // orr v17.16b, v18.16b, v17.16b
2493 .long 0x6e30dc52 // fmul v18.4s, v2.4s, v16.4s
2494 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2495 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
2496 .long 0x4f245652 // shl v18.4s, v18.4s, #4
2497 .long 0xf9400108 // ldr x8, [x8]
2498 .long 0x4eb21e31 // orr v17.16b, v17.16b, v18.16b
2499 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2500 .long 0x4eb01e30 // orr v16.16b, v17.16b, v16.16b
2501 .long 0xd37ff809 // lsl x9, x0, #1
2502 .long 0x0e612a10 // xtn v16.4h, v16.4s
2503 .long 0xfc296910 // str d16, [x8, x9]
2504 .long 0xf9400423 // ldr x3, [x1, #8]
2505 .long 0x91004021 // add x1, x1, #0x10
2506 .long 0xd61f0060 // br x3
2507
Mike Klein7c4af542017-03-29 18:21:14 -04002508HIDDEN _sk_load_8888_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002509.globl _sk_load_8888_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002510FUNCTION(_sk_load_8888_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002511_sk_load_8888_aarch64:
2512 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2513 .long 0xd37ef409 // lsl x9, x0, #2
2514 .long 0x6f00e621 // movi v1.2d, #0xff000000ff
2515 .long 0xf9400108 // ldr x8, [x8]
2516 .long 0x3ce96900 // ldr q0, [x8, x9]
2517 .long 0x52a77008 // mov w8, #0x3b800000
2518 .long 0x72901028 // movk w8, #0x8081
2519 .long 0x4e040d02 // dup v2.4s, w8
2520 .long 0x6f380410 // ushr v16.4s, v0.4s, #8
2521 .long 0x6f300411 // ushr v17.4s, v0.4s, #16
2522 .long 0x4e211c03 // and v3.16b, v0.16b, v1.16b
2523 .long 0x6f280400 // ushr v0.4s, v0.4s, #24
2524 .long 0x4e211e10 // and v16.16b, v16.16b, v1.16b
2525 .long 0x4e211e21 // and v1.16b, v17.16b, v1.16b
2526 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2527 .long 0x4e21d811 // scvtf v17.4s, v0.4s
2528 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2529 .long 0x4e21d832 // scvtf v18.4s, v1.4s
2530 .long 0x6e22dc60 // fmul v0.4s, v3.4s, v2.4s
2531 .long 0x6e22de23 // fmul v3.4s, v17.4s, v2.4s
2532 .long 0x6e22de01 // fmul v1.4s, v16.4s, v2.4s
2533 .long 0x6e22de42 // fmul v2.4s, v18.4s, v2.4s
2534 .long 0xd61f0060 // br x3
2535
Mike Kleindec4ea82017-04-06 15:04:05 -04002536HIDDEN _sk_gather_8888_aarch64
2537.globl _sk_gather_8888_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002538FUNCTION(_sk_gather_8888_aarch64)
Mike Kleindec4ea82017-04-06 15:04:05 -04002539_sk_gather_8888_aarch64:
2540 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2541 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2542 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2543 .long 0x91004109 // add x9, x8, #0x10
2544 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2545 .long 0xf9400108 // ldr x8, [x8]
2546 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2547 .long 0x1e26000c // fmov w12, s0
2548 .long 0x8b2c490c // add x12, x8, w12, uxtw #2
2549 .long 0x0e0c3c09 // mov w9, v0.s[1]
2550 .long 0x0e143c0a // mov w10, v0.s[2]
2551 .long 0x0e1c3c0b // mov w11, v0.s[3]
2552 .long 0x0d408180 // ld1 {v0.s}[0], [x12]
2553 .long 0x8b294909 // add x9, x8, w9, uxtw #2
2554 .long 0xb86a590a // ldr w10, [x8, w10, uxtw #2]
2555 .long 0xb86b5908 // ldr w8, [x8, w11, uxtw #2]
2556 .long 0x0d409120 // ld1 {v0.s}[1], [x9]
2557 .long 0x6f00e621 // movi v1.2d, #0xff000000ff
2558 .long 0x52a77009 // mov w9, #0x3b800000
2559 .long 0x72901029 // movk w9, #0x8081
2560 .long 0x4e141d40 // mov v0.s[2], w10
2561 .long 0x4e1c1d00 // mov v0.s[3], w8
2562 .long 0x6f380410 // ushr v16.4s, v0.4s, #8
2563 .long 0x6f300411 // ushr v17.4s, v0.4s, #16
2564 .long 0x4e211c03 // and v3.16b, v0.16b, v1.16b
2565 .long 0x6f280400 // ushr v0.4s, v0.4s, #24
2566 .long 0x4e211e10 // and v16.16b, v16.16b, v1.16b
2567 .long 0x4e211e21 // and v1.16b, v17.16b, v1.16b
2568 .long 0x4e040d22 // dup v2.4s, w9
2569 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2570 .long 0x4e21d811 // scvtf v17.4s, v0.4s
2571 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2572 .long 0x4e21d832 // scvtf v18.4s, v1.4s
2573 .long 0x6e22dc60 // fmul v0.4s, v3.4s, v2.4s
2574 .long 0x6e22de23 // fmul v3.4s, v17.4s, v2.4s
2575 .long 0x6e22de01 // fmul v1.4s, v16.4s, v2.4s
2576 .long 0x6e22de42 // fmul v2.4s, v18.4s, v2.4s
2577 .long 0xd61f0060 // br x3
2578
Mike Klein7c4af542017-03-29 18:21:14 -04002579HIDDEN _sk_store_8888_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002580.globl _sk_store_8888_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002581FUNCTION(_sk_store_8888_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002582_sk_store_8888_aarch64:
2583 .long 0x52a86fea // mov w10, #0x437f0000
2584 .long 0x4e040d50 // dup v16.4s, w10
2585 .long 0xf9400028 // ldr x8, [x1]
2586 .long 0x6e30dc32 // fmul v18.4s, v1.4s, v16.4s
2587 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
2588 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2589 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2590 .long 0x4f285652 // shl v18.4s, v18.4s, #8
2591 .long 0x4eb11e51 // orr v17.16b, v18.16b, v17.16b
2592 .long 0x6e30dc52 // fmul v18.4s, v2.4s, v16.4s
2593 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
2594 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2595 .long 0xf9400108 // ldr x8, [x8]
2596 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2597 .long 0x4f305652 // shl v18.4s, v18.4s, #16
2598 .long 0x4eb21e31 // orr v17.16b, v17.16b, v18.16b
2599 .long 0x4f385610 // shl v16.4s, v16.4s, #24
2600 .long 0xd37ef409 // lsl x9, x0, #2
2601 .long 0x4eb01e30 // orr v16.16b, v17.16b, v16.16b
2602 .long 0x3ca96910 // str q16, [x8, x9]
2603 .long 0xf9400423 // ldr x3, [x1, #8]
2604 .long 0x91004021 // add x1, x1, #0x10
2605 .long 0xd61f0060 // br x3
2606
Mike Klein7c4af542017-03-29 18:21:14 -04002607HIDDEN _sk_load_f16_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002608.globl _sk_load_f16_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002609FUNCTION(_sk_load_f16_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002610_sk_load_f16_aarch64:
2611 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2612 .long 0xf9400108 // ldr x8, [x8]
2613 .long 0x8b000d08 // add x8, x8, x0, lsl #3
2614 .long 0x0c400510 // ld4 {v16.4h-v19.4h}, [x8]
2615 .long 0x0e217a00 // fcvtl v0.4s, v16.4h
2616 .long 0x0e217a21 // fcvtl v1.4s, v17.4h
2617 .long 0x0e217a42 // fcvtl v2.4s, v18.4h
2618 .long 0x0e217a63 // fcvtl v3.4s, v19.4h
2619 .long 0xd61f0060 // br x3
2620
Mike Klein5f055f02017-04-06 20:02:11 -04002621HIDDEN _sk_gather_f16_aarch64
2622.globl _sk_gather_f16_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002623FUNCTION(_sk_gather_f16_aarch64)
Mike Klein5f055f02017-04-06 20:02:11 -04002624_sk_gather_f16_aarch64:
2625 .long 0xa9bf7bfd // stp x29, x30, [sp, #-16]!
2626 .long 0xd100c3e9 // sub x9, sp, #0x30
2627 .long 0x910003fd // mov x29, sp
2628 .long 0x927be93f // and sp, x9, #0xffffffffffffffe0
2629 .long 0xf9400028 // ldr x8, [x1]
2630 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2631 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2632 .long 0x91004109 // add x9, x8, #0x10
2633 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2634 .long 0xf9400108 // ldr x8, [x8]
2635 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2636 .long 0x0e143c0a // mov w10, v0.s[2]
2637 .long 0x1e26000c // fmov w12, s0
2638 .long 0x8b2c4d0c // add x12, x8, w12, uxtw #3
2639 .long 0x8b2a4d0a // add x10, x8, w10, uxtw #3
2640 .long 0x0e0c3c09 // mov w9, v0.s[1]
2641 .long 0x0e1c3c0b // mov w11, v0.s[3]
2642 .long 0x0d408540 // ld1 {v0.d}[0], [x10]
2643 .long 0x0d408581 // ld1 {v1.d}[0], [x12]
2644 .long 0x8b294d09 // add x9, x8, w9, uxtw #3
2645 .long 0x8b2b4d08 // add x8, x8, w11, uxtw #3
2646 .long 0x4d408500 // ld1 {v0.d}[1], [x8]
2647 .long 0x4d408521 // ld1 {v1.d}[1], [x9]
2648 .long 0x910003e8 // mov x8, sp
2649 .long 0xad0003e1 // stp q1, q0, [sp]
2650 .long 0x0c400510 // ld4 {v16.4h-v19.4h}, [x8]
2651 .long 0xf9400428 // ldr x8, [x1, #8]
2652 .long 0x91004021 // add x1, x1, #0x10
2653 .long 0x0e217a00 // fcvtl v0.4s, v16.4h
2654 .long 0x0e217a21 // fcvtl v1.4s, v17.4h
2655 .long 0x0e217a42 // fcvtl v2.4s, v18.4h
2656 .long 0x0e217a63 // fcvtl v3.4s, v19.4h
2657 .long 0xd63f0100 // blr x8
2658 .long 0x910003bf // mov sp, x29
2659 .long 0xa8c17bfd // ldp x29, x30, [sp], #16
2660 .long 0xd65f03c0 // ret
2661
Mike Klein7c4af542017-03-29 18:21:14 -04002662HIDDEN _sk_store_f16_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002663.globl _sk_store_f16_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002664FUNCTION(_sk_store_f16_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002665_sk_store_f16_aarch64:
2666 .long 0xf9400028 // ldr x8, [x1]
2667 .long 0x0e216810 // fcvtn v16.4h, v0.4s
2668 .long 0x0e216831 // fcvtn v17.4h, v1.4s
2669 .long 0x0e216852 // fcvtn v18.4h, v2.4s
2670 .long 0xf9400108 // ldr x8, [x8]
2671 .long 0x0e216873 // fcvtn v19.4h, v3.4s
2672 .long 0x8b000d08 // add x8, x8, x0, lsl #3
2673 .long 0x0c000510 // st4 {v16.4h-v19.4h}, [x8]
2674 .long 0xf9400423 // ldr x3, [x1, #8]
2675 .long 0x91004021 // add x1, x1, #0x10
2676 .long 0xd61f0060 // br x3
2677
Mike Klein3146bb92017-04-05 14:45:02 -04002678HIDDEN _sk_load_u16_be_aarch64
2679.globl _sk_load_u16_be_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002680FUNCTION(_sk_load_u16_be_aarch64)
Mike Klein3146bb92017-04-05 14:45:02 -04002681_sk_load_u16_be_aarch64:
2682 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2683 .long 0xf9400108 // ldr x8, [x8]
2684 .long 0x8b000d08 // add x8, x8, x0, lsl #3
2685 .long 0x0c400500 // ld4 {v0.4h-v3.4h}, [x8]
2686 .long 0x52a6f008 // mov w8, #0x37800000
2687 .long 0x72801008 // movk w8, #0x80
2688 .long 0x0f185410 // shl v16.4h, v0.4h, #8
2689 .long 0x2f180411 // ushr v17.4h, v0.4h, #8
2690 .long 0x0f185432 // shl v18.4h, v1.4h, #8
2691 .long 0x2f180433 // ushr v19.4h, v1.4h, #8
2692 .long 0x0f185454 // shl v20.4h, v2.4h, #8
2693 .long 0x2f180455 // ushr v21.4h, v2.4h, #8
2694 .long 0x0f185476 // shl v22.4h, v3.4h, #8
2695 .long 0x2f180460 // ushr v0.4h, v3.4h, #8
2696 .long 0x0eb11e01 // orr v1.8b, v16.8b, v17.8b
2697 .long 0x0eb31e42 // orr v2.8b, v18.8b, v19.8b
2698 .long 0x0eb51e90 // orr v16.8b, v20.8b, v21.8b
2699 .long 0x0ea01ec0 // orr v0.8b, v22.8b, v0.8b
2700 .long 0x2f10a421 // uxtl v1.4s, v1.4h
2701 .long 0x2f10a442 // uxtl v2.4s, v2.4h
2702 .long 0x2f10a610 // uxtl v16.4s, v16.4h
2703 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2704 .long 0x4e040d03 // dup v3.4s, w8
2705 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
2706 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
2707 .long 0x6e21da10 // ucvtf v16.4s, v16.4s
2708 .long 0x6e21d811 // ucvtf v17.4s, v0.4s
2709 .long 0x6e23dc20 // fmul v0.4s, v1.4s, v3.4s
2710 .long 0x6e23dc41 // fmul v1.4s, v2.4s, v3.4s
2711 .long 0x6e23de02 // fmul v2.4s, v16.4s, v3.4s
2712 .long 0x6e23de23 // fmul v3.4s, v17.4s, v3.4s
2713 .long 0xd61f0060 // br x3
2714
Mike Kleinb3821732017-04-17 10:58:05 -04002715HIDDEN _sk_load_rgb_u16_be_aarch64
2716.globl _sk_load_rgb_u16_be_aarch64
2717FUNCTION(_sk_load_rgb_u16_be_aarch64)
2718_sk_load_rgb_u16_be_aarch64:
2719 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2720 .long 0x321f07e9 // orr w9, wzr, #0x6
2721 .long 0xf9400108 // ldr x8, [x8]
2722 .long 0x9b092008 // madd x8, x0, x9, x8
2723 .long 0x0c404500 // ld3 {v0.4h-v2.4h}, [x8]
2724 .long 0x52a6f008 // mov w8, #0x37800000
2725 .long 0x72801008 // movk w8, #0x80
2726 .long 0x0f185403 // shl v3.4h, v0.4h, #8
2727 .long 0x2f180410 // ushr v16.4h, v0.4h, #8
2728 .long 0x0f185431 // shl v17.4h, v1.4h, #8
2729 .long 0x2f180432 // ushr v18.4h, v1.4h, #8
2730 .long 0x0f185453 // shl v19.4h, v2.4h, #8
2731 .long 0x2f180440 // ushr v0.4h, v2.4h, #8
2732 .long 0x0eb01c61 // orr v1.8b, v3.8b, v16.8b
2733 .long 0x0eb21e23 // orr v3.8b, v17.8b, v18.8b
2734 .long 0x0ea01e60 // orr v0.8b, v19.8b, v0.8b
2735 .long 0x2f10a421 // uxtl v1.4s, v1.4h
2736 .long 0x2f10a463 // uxtl v3.4s, v3.4h
2737 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2738 .long 0x4e040d02 // dup v2.4s, w8
2739 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
2740 .long 0x6e21d863 // ucvtf v3.4s, v3.4s
2741 .long 0x6e21d810 // ucvtf v16.4s, v0.4s
2742 .long 0x6e22dc20 // fmul v0.4s, v1.4s, v2.4s
2743 .long 0x6e22dc61 // fmul v1.4s, v3.4s, v2.4s
2744 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
2745 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2746 .long 0xd61f0060 // br x3
2747
Mike Klein3146bb92017-04-05 14:45:02 -04002748HIDDEN _sk_store_u16_be_aarch64
2749.globl _sk_store_u16_be_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002750FUNCTION(_sk_store_u16_be_aarch64)
Mike Klein3146bb92017-04-05 14:45:02 -04002751_sk_store_u16_be_aarch64:
2752 .long 0x52a8efe9 // mov w9, #0x477f0000
2753 .long 0x729fe009 // movk w9, #0xff00
2754 .long 0x4e040d30 // dup v16.4s, w9
2755 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
2756 .long 0xf9400028 // ldr x8, [x1]
2757 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2758 .long 0x0e612a31 // xtn v17.4h, v17.4s
2759 .long 0x6e30dc32 // fmul v18.4s, v1.4s, v16.4s
2760 .long 0x0f185633 // shl v19.4h, v17.4h, #8
2761 .long 0x2f180631 // ushr v17.4h, v17.4h, #8
2762 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2763 .long 0x0eb11e75 // orr v21.8b, v19.8b, v17.8b
2764 .long 0x6e30dc51 // fmul v17.4s, v2.4s, v16.4s
2765 .long 0x0e612a52 // xtn v18.4h, v18.4s
2766 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
2767 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2768 .long 0xf9400108 // ldr x8, [x8]
2769 .long 0x0f185654 // shl v20.4h, v18.4h, #8
2770 .long 0x2f180652 // ushr v18.4h, v18.4h, #8
2771 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2772 .long 0x0e612a31 // xtn v17.4h, v17.4s
2773 .long 0x0eb21e96 // orr v22.8b, v20.8b, v18.8b
2774 .long 0x0e612a10 // xtn v16.4h, v16.4s
2775 .long 0x0f185632 // shl v18.4h, v17.4h, #8
2776 .long 0x2f180631 // ushr v17.4h, v17.4h, #8
2777 .long 0x0eb11e57 // orr v23.8b, v18.8b, v17.8b
2778 .long 0x0f185611 // shl v17.4h, v16.4h, #8
2779 .long 0x2f180610 // ushr v16.4h, v16.4h, #8
2780 .long 0x8b000d08 // add x8, x8, x0, lsl #3
2781 .long 0x0eb01e38 // orr v24.8b, v17.8b, v16.8b
2782 .long 0x0c000515 // st4 {v21.4h-v24.4h}, [x8]
2783 .long 0xf9400423 // ldr x3, [x1, #8]
2784 .long 0x91004021 // add x1, x1, #0x10
2785 .long 0xd61f0060 // br x3
2786
Mike Klein14987eb2017-04-06 10:22:26 -04002787HIDDEN _sk_load_f32_aarch64
2788.globl _sk_load_f32_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002789FUNCTION(_sk_load_f32_aarch64)
Mike Klein14987eb2017-04-06 10:22:26 -04002790_sk_load_f32_aarch64:
2791 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2792 .long 0xf9400108 // ldr x8, [x8]
2793 .long 0x8b001108 // add x8, x8, x0, lsl #4
2794 .long 0x4c400900 // ld4 {v0.4s-v3.4s}, [x8]
2795 .long 0xd61f0060 // br x3
2796
Mike Klein7c4af542017-03-29 18:21:14 -04002797HIDDEN _sk_store_f32_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002798.globl _sk_store_f32_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002799FUNCTION(_sk_store_f32_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002800_sk_store_f32_aarch64:
2801 .long 0xf9400028 // ldr x8, [x1]
2802 .long 0xf9400108 // ldr x8, [x8]
2803 .long 0x8b001108 // add x8, x8, x0, lsl #4
2804 .long 0x4c000900 // st4 {v0.4s-v3.4s}, [x8]
2805 .long 0xf9400423 // ldr x3, [x1, #8]
2806 .long 0x91004021 // add x1, x1, #0x10
2807 .long 0xd61f0060 // br x3
2808
Mike Klein7c4af542017-03-29 18:21:14 -04002809HIDDEN _sk_clamp_x_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002810.globl _sk_clamp_x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002811FUNCTION(_sk_clamp_x_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002812_sk_clamp_x_aarch64:
2813 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2814 .long 0x6f00e411 // movi v17.2d, #0x0
2815 .long 0x4e20f620 // fmax v0.4s, v17.4s, v0.4s
2816 .long 0x6f07e7f1 // movi v17.2d, #0xffffffffffffffff
2817 .long 0x4d40c910 // ld1r {v16.4s}, [x8]
2818 .long 0x4eb18610 // add v16.4s, v16.4s, v17.4s
2819 .long 0x4eb0f400 // fmin v0.4s, v0.4s, v16.4s
2820 .long 0xd61f0060 // br x3
2821
Mike Klein7c4af542017-03-29 18:21:14 -04002822HIDDEN _sk_clamp_y_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002823.globl _sk_clamp_y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002824FUNCTION(_sk_clamp_y_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002825_sk_clamp_y_aarch64:
2826 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2827 .long 0x6f00e411 // movi v17.2d, #0x0
2828 .long 0x4e21f621 // fmax v1.4s, v17.4s, v1.4s
2829 .long 0x6f07e7f1 // movi v17.2d, #0xffffffffffffffff
2830 .long 0x4d40c910 // ld1r {v16.4s}, [x8]
2831 .long 0x4eb18610 // add v16.4s, v16.4s, v17.4s
2832 .long 0x4eb0f421 // fmin v1.4s, v1.4s, v16.4s
2833 .long 0xd61f0060 // br x3
2834
Mike Klein7c4af542017-03-29 18:21:14 -04002835HIDDEN _sk_repeat_x_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002836.globl _sk_repeat_x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002837FUNCTION(_sk_repeat_x_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002838_sk_repeat_x_aarch64:
2839 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2840 .long 0x6f07e7f1 // movi v17.2d, #0xffffffffffffffff
2841 .long 0xbd400110 // ldr s16, [x8]
2842 .long 0x4e040612 // dup v18.4s, v16.s[0]
2843 .long 0x4eb18651 // add v17.4s, v18.4s, v17.4s
2844 .long 0x6e32fc12 // fdiv v18.4s, v0.4s, v18.4s
2845 .long 0x4e219a52 // frintm v18.4s, v18.4s
2846 .long 0x4f905240 // fmls v0.4s, v18.4s, v16.s[0]
2847 .long 0x4eb1f400 // fmin v0.4s, v0.4s, v17.4s
2848 .long 0xd61f0060 // br x3
2849
Mike Klein7c4af542017-03-29 18:21:14 -04002850HIDDEN _sk_repeat_y_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002851.globl _sk_repeat_y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002852FUNCTION(_sk_repeat_y_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002853_sk_repeat_y_aarch64:
2854 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2855 .long 0x6f07e7f1 // movi v17.2d, #0xffffffffffffffff
2856 .long 0xbd400110 // ldr s16, [x8]
2857 .long 0x4e040612 // dup v18.4s, v16.s[0]
2858 .long 0x4eb18651 // add v17.4s, v18.4s, v17.4s
2859 .long 0x6e32fc32 // fdiv v18.4s, v1.4s, v18.4s
2860 .long 0x4e219a52 // frintm v18.4s, v18.4s
2861 .long 0x4f905241 // fmls v1.4s, v18.4s, v16.s[0]
2862 .long 0x4eb1f421 // fmin v1.4s, v1.4s, v17.4s
2863 .long 0xd61f0060 // br x3
2864
Mike Klein7c4af542017-03-29 18:21:14 -04002865HIDDEN _sk_mirror_x_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002866.globl _sk_mirror_x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002867FUNCTION(_sk_mirror_x_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002868_sk_mirror_x_aarch64:
2869 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2870 .long 0xbd400110 // ldr s16, [x8]
2871 .long 0x4e040611 // dup v17.4s, v16.s[0]
2872 .long 0x1e302a10 // fadd s16, s16, s16
2873 .long 0x4eb1d400 // fsub v0.4s, v0.4s, v17.4s
2874 .long 0x4e040612 // dup v18.4s, v16.s[0]
2875 .long 0x6e32fc12 // fdiv v18.4s, v0.4s, v18.4s
2876 .long 0x4e219a52 // frintm v18.4s, v18.4s
2877 .long 0x4f905240 // fmls v0.4s, v18.4s, v16.s[0]
2878 .long 0x6f07e7f0 // movi v16.2d, #0xffffffffffffffff
2879 .long 0x4eb1d400 // fsub v0.4s, v0.4s, v17.4s
2880 .long 0x4eb08630 // add v16.4s, v17.4s, v16.4s
2881 .long 0x4ea0f800 // fabs v0.4s, v0.4s
2882 .long 0x4eb0f400 // fmin v0.4s, v0.4s, v16.4s
2883 .long 0xd61f0060 // br x3
2884
Mike Klein7c4af542017-03-29 18:21:14 -04002885HIDDEN _sk_mirror_y_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002886.globl _sk_mirror_y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002887FUNCTION(_sk_mirror_y_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002888_sk_mirror_y_aarch64:
2889 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2890 .long 0xbd400110 // ldr s16, [x8]
2891 .long 0x4e040611 // dup v17.4s, v16.s[0]
2892 .long 0x1e302a10 // fadd s16, s16, s16
2893 .long 0x4eb1d421 // fsub v1.4s, v1.4s, v17.4s
2894 .long 0x4e040612 // dup v18.4s, v16.s[0]
2895 .long 0x6e32fc32 // fdiv v18.4s, v1.4s, v18.4s
2896 .long 0x4e219a52 // frintm v18.4s, v18.4s
2897 .long 0x4f905241 // fmls v1.4s, v18.4s, v16.s[0]
2898 .long 0x6f07e7f0 // movi v16.2d, #0xffffffffffffffff
2899 .long 0x4eb1d421 // fsub v1.4s, v1.4s, v17.4s
2900 .long 0x4eb08630 // add v16.4s, v17.4s, v16.4s
2901 .long 0x4ea0f821 // fabs v1.4s, v1.4s
2902 .long 0x4eb0f421 // fmin v1.4s, v1.4s, v16.4s
2903 .long 0xd61f0060 // br x3
2904
Mike Klein7c4af542017-03-29 18:21:14 -04002905HIDDEN _sk_luminance_to_alpha_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002906.globl _sk_luminance_to_alpha_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002907FUNCTION(_sk_luminance_to_alpha_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002908_sk_luminance_to_alpha_aarch64:
2909 .long 0x52a7cb28 // mov w8, #0x3e590000
2910 .long 0x72967a08 // movk w8, #0xb3d0
2911 .long 0x4e040d11 // dup v17.4s, w8
2912 .long 0x52a7e6e8 // mov w8, #0x3f370000
2913 .long 0x7282eb28 // movk w8, #0x1759
2914 .long 0x4ea01c10 // mov v16.16b, v0.16b
2915 .long 0x4e040d00 // dup v0.4s, w8
2916 .long 0x52a7b268 // mov w8, #0x3d930000
2917 .long 0xf8408423 // ldr x3, [x1], #8
2918 .long 0x729bb308 // movk w8, #0xdd98
2919 .long 0x6e20dc23 // fmul v3.4s, v1.4s, v0.4s
2920 .long 0x4e30ce23 // fmla v3.4s, v17.4s, v16.4s
2921 .long 0x4e040d10 // dup v16.4s, w8
2922 .long 0x6f00e400 // movi v0.2d, #0x0
2923 .long 0x6f00e401 // movi v1.2d, #0x0
2924 .long 0x4e22ce03 // fmla v3.4s, v16.4s, v2.4s
2925 .long 0x6f00e402 // movi v2.2d, #0x0
2926 .long 0xd61f0060 // br x3
2927
Mike Klein7c4af542017-03-29 18:21:14 -04002928HIDDEN _sk_matrix_2x3_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002929.globl _sk_matrix_2x3_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002930FUNCTION(_sk_matrix_2x3_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002931_sk_matrix_2x3_aarch64:
2932 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2933 .long 0xaa0803e9 // mov x9, x8
2934 .long 0x9100410a // add x10, x8, #0x10
2935 .long 0x4ddfc932 // ld1r {v18.4s}, [x9], #4
2936 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
2937 .long 0x2d415113 // ldp s19, s20, [x8, #8]
2938 .long 0x9100510a // add x10, x8, #0x14
2939 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
2940 .long 0x4f931030 // fmla v16.4s, v1.4s, v19.s[0]
2941 .long 0xbd400133 // ldr s19, [x9]
2942 .long 0x4f941031 // fmla v17.4s, v1.4s, v20.s[0]
2943 .long 0x4e20ce50 // fmla v16.4s, v18.4s, v0.4s
2944 .long 0x4f931011 // fmla v17.4s, v0.4s, v19.s[0]
2945 .long 0x4eb01e00 // mov v0.16b, v16.16b
2946 .long 0x4eb11e21 // mov v1.16b, v17.16b
2947 .long 0xd61f0060 // br x3
2948
Mike Klein7c4af542017-03-29 18:21:14 -04002949HIDDEN _sk_matrix_3x4_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002950.globl _sk_matrix_3x4_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002951FUNCTION(_sk_matrix_3x4_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002952_sk_matrix_3x4_aarch64:
2953 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2954 .long 0xaa0803e9 // mov x9, x8
2955 .long 0x9100910a // add x10, x8, #0x24
2956 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
2957 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
2958 .long 0x9100a10a // add x10, x8, #0x28
2959 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
2960 .long 0x9100b10a // add x10, x8, #0x2c
2961 .long 0x2d435514 // ldp s20, s21, [x8, #24]
2962 .long 0xbd402116 // ldr s22, [x8, #32]
2963 .long 0x4d40c952 // ld1r {v18.4s}, [x10]
2964 .long 0x4f941050 // fmla v16.4s, v2.4s, v20.s[0]
2965 .long 0x4f951051 // fmla v17.4s, v2.4s, v21.s[0]
2966 .long 0x4f961052 // fmla v18.4s, v2.4s, v22.s[0]
2967 .long 0x2d425502 // ldp s2, s21, [x8, #16]
2968 .long 0x2d415d14 // ldp s20, s23, [x8, #8]
2969 .long 0x4f821031 // fmla v17.4s, v1.4s, v2.s[0]
2970 .long 0xbd400122 // ldr s2, [x9]
2971 .long 0x4f971030 // fmla v16.4s, v1.4s, v23.s[0]
2972 .long 0x4f951032 // fmla v18.4s, v1.4s, v21.s[0]
2973 .long 0x4e20ce70 // fmla v16.4s, v19.4s, v0.4s
2974 .long 0x4f941012 // fmla v18.4s, v0.4s, v20.s[0]
2975 .long 0x4f821011 // fmla v17.4s, v0.4s, v2.s[0]
2976 .long 0x4eb01e00 // mov v0.16b, v16.16b
2977 .long 0x4eb11e21 // mov v1.16b, v17.16b
2978 .long 0x4eb21e42 // mov v2.16b, v18.16b
2979 .long 0xd61f0060 // br x3
2980
Mike Klein7c4af542017-03-29 18:21:14 -04002981HIDDEN _sk_matrix_4x5_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002982.globl _sk_matrix_4x5_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002983FUNCTION(_sk_matrix_4x5_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002984_sk_matrix_4x5_aarch64:
2985 .long 0xf9400029 // ldr x9, [x1]
2986 .long 0xaa0903e8 // mov x8, x9
2987 .long 0x9101012a // add x10, x9, #0x40
2988 .long 0x4ddfc914 // ld1r {v20.4s}, [x8], #4
2989 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
2990 .long 0x9101112a // add x10, x9, #0x44
2991 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
2992 .long 0x9101212a // add x10, x9, #0x48
2993 .long 0x4d40c952 // ld1r {v18.4s}, [x10]
2994 .long 0x2d465533 // ldp s19, s21, [x9, #48]
2995 .long 0x2d475d36 // ldp s22, s23, [x9, #56]
2996 .long 0x9101312a // add x10, x9, #0x4c
2997 .long 0xf9400423 // ldr x3, [x1, #8]
2998 .long 0x4f931070 // fmla v16.4s, v3.4s, v19.s[0]
2999 .long 0x4d40c953 // ld1r {v19.4s}, [x10]
3000 .long 0x4f951071 // fmla v17.4s, v3.4s, v21.s[0]
3001 .long 0x4f961072 // fmla v18.4s, v3.4s, v22.s[0]
3002 .long 0x2d445935 // ldp s21, s22, [x9, #32]
3003 .long 0x4f971073 // fmla v19.4s, v3.4s, v23.s[0]
3004 .long 0x2d455d23 // ldp s3, s23, [x9, #40]
3005 .long 0x91004021 // add x1, x1, #0x10
3006 .long 0x4f951050 // fmla v16.4s, v2.4s, v21.s[0]
3007 .long 0x4f961051 // fmla v17.4s, v2.4s, v22.s[0]
3008 .long 0x2d425935 // ldp s21, s22, [x9, #16]
3009 .long 0x4f971053 // fmla v19.4s, v2.4s, v23.s[0]
3010 .long 0x4f831052 // fmla v18.4s, v2.4s, v3.s[0]
3011 .long 0x2d410d22 // ldp s2, s3, [x9, #8]
3012 .long 0x4f951030 // fmla v16.4s, v1.4s, v21.s[0]
3013 .long 0x2d435d35 // ldp s21, s23, [x9, #24]
3014 .long 0x4f961031 // fmla v17.4s, v1.4s, v22.s[0]
3015 .long 0xbd400116 // ldr s22, [x8]
3016 .long 0x4e20ce90 // fmla v16.4s, v20.4s, v0.4s
3017 .long 0x4f951032 // fmla v18.4s, v1.4s, v21.s[0]
3018 .long 0x4f971033 // fmla v19.4s, v1.4s, v23.s[0]
3019 .long 0x4f821012 // fmla v18.4s, v0.4s, v2.s[0]
3020 .long 0x4f831013 // fmla v19.4s, v0.4s, v3.s[0]
3021 .long 0x4f961011 // fmla v17.4s, v0.4s, v22.s[0]
3022 .long 0x4eb01e00 // mov v0.16b, v16.16b
3023 .long 0x4eb11e21 // mov v1.16b, v17.16b
3024 .long 0x4eb21e42 // mov v2.16b, v18.16b
3025 .long 0x4eb31e63 // mov v3.16b, v19.16b
3026 .long 0xd61f0060 // br x3
3027
Mike Klein7c4af542017-03-29 18:21:14 -04003028HIDDEN _sk_matrix_perspective_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003029.globl _sk_matrix_perspective_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003030FUNCTION(_sk_matrix_perspective_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003031_sk_matrix_perspective_aarch64:
3032 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3033 .long 0xaa0803e9 // mov x9, x8
3034 .long 0x9100510a // add x10, x8, #0x14
3035 .long 0x4ddfc930 // ld1r {v16.4s}, [x9], #4
3036 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
3037 .long 0x9100810a // add x10, x8, #0x20
3038 .long 0x4d40c952 // ld1r {v18.4s}, [x10]
3039 .long 0x2d41d113 // ldp s19, s20, [x8, #12]
3040 .long 0x2d435915 // ldp s21, s22, [x8, #24]
3041 .long 0x91002108 // add x8, x8, #0x8
3042 .long 0x4f941031 // fmla v17.4s, v1.4s, v20.s[0]
3043 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
3044 .long 0x4f961032 // fmla v18.4s, v1.4s, v22.s[0]
3045 .long 0xbd400136 // ldr s22, [x9]
3046 .long 0x4f951012 // fmla v18.4s, v0.4s, v21.s[0]
3047 .long 0x4f931011 // fmla v17.4s, v0.4s, v19.s[0]
3048 .long 0x4f961034 // fmla v20.4s, v1.4s, v22.s[0]
3049 .long 0x4ea1da41 // frecpe v1.4s, v18.4s
3050 .long 0x4e21fe52 // frecps v18.4s, v18.4s, v1.4s
3051 .long 0x6e32dc32 // fmul v18.4s, v1.4s, v18.4s
3052 .long 0x4e20ce14 // fmla v20.4s, v16.4s, v0.4s
3053 .long 0x6e32de21 // fmul v1.4s, v17.4s, v18.4s
3054 .long 0x6e32de80 // fmul v0.4s, v20.4s, v18.4s
3055 .long 0xd61f0060 // br x3
3056
Herb Derby7b4202d2017-04-10 10:52:34 -04003057HIDDEN _sk_linear_gradient_aarch64
3058.globl _sk_linear_gradient_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003059FUNCTION(_sk_linear_gradient_aarch64)
Herb Derby7b4202d2017-04-10 10:52:34 -04003060_sk_linear_gradient_aarch64:
3061 .long 0xf9400029 // ldr x9, [x1]
3062 .long 0x91004128 // add x8, x9, #0x10
3063 .long 0x9100512a // add x10, x9, #0x14
3064 .long 0x4d40c910 // ld1r {v16.4s}, [x8]
3065 .long 0x91006128 // add x8, x9, #0x18
3066 .long 0x4d40c941 // ld1r {v1.4s}, [x10]
3067 .long 0x9100712a // add x10, x9, #0x1c
3068 .long 0x4d40c902 // ld1r {v2.4s}, [x8]
3069 .long 0xf9400128 // ldr x8, [x9]
3070 .long 0x4d40c943 // ld1r {v3.4s}, [x10]
Mike Kleinb3665f02017-05-01 14:56:04 -04003071 .long 0xb40006c8 // cbz x8, 2900 <sk_linear_gradient_aarch64+0x100>
Herb Derby7b4202d2017-04-10 10:52:34 -04003072 .long 0x6dbf23e9 // stp d9, d8, [sp, #-16]!
3073 .long 0xf9400529 // ldr x9, [x9, #8]
3074 .long 0x6f00e413 // movi v19.2d, #0x0
3075 .long 0x6f00e411 // movi v17.2d, #0x0
3076 .long 0x6f00e412 // movi v18.2d, #0x0
3077 .long 0x91004129 // add x9, x9, #0x10
3078 .long 0x6f00e414 // movi v20.2d, #0x0
3079 .long 0xd100412a // sub x10, x9, #0x10
3080 .long 0x4d40c955 // ld1r {v21.4s}, [x10]
3081 .long 0xd100312b // sub x11, x9, #0xc
3082 .long 0xd100212a // sub x10, x9, #0x8
3083 .long 0x4d40c976 // ld1r {v22.4s}, [x11]
3084 .long 0xd100112b // sub x11, x9, #0x4
3085 .long 0x4d40c957 // ld1r {v23.4s}, [x10]
3086 .long 0xaa0903ea // mov x10, x9
3087 .long 0x4d40c978 // ld1r {v24.4s}, [x11]
3088 .long 0x4ddfc959 // ld1r {v25.4s}, [x10], #4
3089 .long 0x9100412b // add x11, x9, #0x10
3090 .long 0x4ea31c7b // mov v27.16b, v3.16b
3091 .long 0x6ea0e6a3 // fcmgt v3.4s, v21.4s, v0.4s
3092 .long 0x4d40c97a // ld1r {v26.4s}, [x11]
3093 .long 0x4eb41e95 // mov v21.16b, v20.16b
3094 .long 0x4ea31c74 // mov v20.16b, v3.16b
3095 .long 0x9100212b // add x11, x9, #0x8
3096 .long 0x4eb31e69 // mov v9.16b, v19.16b
3097 .long 0x4ea31c73 // mov v19.16b, v3.16b
3098 .long 0x6e771eb4 // bsl v20.16b, v21.16b, v23.16b
3099 .long 0x4d40c975 // ld1r {v21.4s}, [x11]
3100 .long 0x9100312b // add x11, x9, #0xc
3101 .long 0x6e761d33 // bsl v19.16b, v9.16b, v22.16b
3102 .long 0x4d40c976 // ld1r {v22.4s}, [x11]
3103 .long 0x4d40c957 // ld1r {v23.4s}, [x10]
3104 .long 0x4eb21e5c // mov v28.16b, v18.16b
3105 .long 0x4eb11e3d // mov v29.16b, v17.16b
3106 .long 0x4eb01e1e // mov v30.16b, v16.16b
3107 .long 0x4ea11c3f // mov v31.16b, v1.16b
3108 .long 0x4ea21c48 // mov v8.16b, v2.16b
3109 .long 0x4ea31c72 // mov v18.16b, v3.16b
3110 .long 0x4ea31c71 // mov v17.16b, v3.16b
3111 .long 0x4ea31c70 // mov v16.16b, v3.16b
3112 .long 0x4ea31c61 // mov v1.16b, v3.16b
3113 .long 0x4ea31c62 // mov v2.16b, v3.16b
3114 .long 0x6e7a1f63 // bsl v3.16b, v27.16b, v26.16b
3115 .long 0x6e781f92 // bsl v18.16b, v28.16b, v24.16b
3116 .long 0x6e791fb1 // bsl v17.16b, v29.16b, v25.16b
3117 .long 0x6e751fe1 // bsl v1.16b, v31.16b, v21.16b
3118 .long 0x6e761d02 // bsl v2.16b, v8.16b, v22.16b
3119 .long 0xd1000508 // sub x8, x8, #0x1
3120 .long 0x6e771fd0 // bsl v16.16b, v30.16b, v23.16b
3121 .long 0x91009129 // add x9, x9, #0x24
Mike Kleinb3665f02017-05-01 14:56:04 -04003122 .long 0xb5fffaa8 // cbnz x8, 2848 <sk_linear_gradient_aarch64+0x48>
Herb Derby7b4202d2017-04-10 10:52:34 -04003123 .long 0x6cc123e9 // ldp d9, d8, [sp], #16
Mike Kleinb3665f02017-05-01 14:56:04 -04003124 .long 0x14000005 // b 2910 <sk_linear_gradient_aarch64+0x110>
Herb Derby7b4202d2017-04-10 10:52:34 -04003125 .long 0x6f00e414 // movi v20.2d, #0x0
3126 .long 0x6f00e412 // movi v18.2d, #0x0
3127 .long 0x6f00e411 // movi v17.2d, #0x0
3128 .long 0x6f00e413 // movi v19.2d, #0x0
3129 .long 0xf9400423 // ldr x3, [x1, #8]
3130 .long 0x4e20ce70 // fmla v16.4s, v19.4s, v0.4s
3131 .long 0x4e20ce81 // fmla v1.4s, v20.4s, v0.4s
3132 .long 0x4e20ce42 // fmla v2.4s, v18.4s, v0.4s
3133 .long 0x4e20ce23 // fmla v3.4s, v17.4s, v0.4s
3134 .long 0x91004021 // add x1, x1, #0x10
3135 .long 0x4eb01e00 // mov v0.16b, v16.16b
3136 .long 0xd61f0060 // br x3
3137
Mike Klein7c4af542017-03-29 18:21:14 -04003138HIDDEN _sk_linear_gradient_2stops_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003139.globl _sk_linear_gradient_2stops_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003140FUNCTION(_sk_linear_gradient_2stops_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003141_sk_linear_gradient_2stops_aarch64:
3142 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
Mike Klein8a823fa2017-04-05 17:29:26 -04003143 .long 0xaa0803e9 // mov x9, x8
Herb Derby7b4202d2017-04-10 10:52:34 -04003144 .long 0x9100410a // add x10, x8, #0x10
3145 .long 0x4ddfc931 // ld1r {v17.4s}, [x9], #4
3146 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
3147 .long 0x9100510a // add x10, x8, #0x14
3148 .long 0x4d40c941 // ld1r {v1.4s}, [x10]
3149 .long 0x9100610a // add x10, x8, #0x18
Mike Klein8a823fa2017-04-05 17:29:26 -04003150 .long 0x4d40c942 // ld1r {v2.4s}, [x10]
Herb Derby7b4202d2017-04-10 10:52:34 -04003151 .long 0x9100710a // add x10, x8, #0x1c
3152 .long 0x2d414d12 // ldp s18, s19, [x8, #8]
3153 .long 0x4d40c943 // ld1r {v3.4s}, [x10]
3154 .long 0x4e20ce30 // fmla v16.4s, v17.4s, v0.4s
3155 .long 0xbd400131 // ldr s17, [x9]
Mike Klein8a823fa2017-04-05 17:29:26 -04003156 .long 0x4f921002 // fmla v2.4s, v0.4s, v18.s[0]
3157 .long 0x4f931003 // fmla v3.4s, v0.4s, v19.s[0]
3158 .long 0x4f911001 // fmla v1.4s, v0.4s, v17.s[0]
Mike Kleind7e06ae2017-03-29 16:33:06 -04003159 .long 0x4eb01e00 // mov v0.16b, v16.16b
3160 .long 0xd61f0060 // br x3
Mike Klein0a904492017-04-12 12:52:48 -04003161
3162HIDDEN _sk_save_xy_aarch64
3163.globl _sk_save_xy_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003164FUNCTION(_sk_save_xy_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003165_sk_save_xy_aarch64:
3166 .long 0x4f0167f0 // movi v16.4s, #0x3f, lsl #24
3167 .long 0xf9400028 // ldr x8, [x1]
3168 .long 0x4e30d411 // fadd v17.4s, v0.4s, v16.4s
3169 .long 0x4e30d430 // fadd v16.4s, v1.4s, v16.4s
3170 .long 0x4e219a32 // frintm v18.4s, v17.4s
3171 .long 0x4eb2d631 // fsub v17.4s, v17.4s, v18.4s
3172 .long 0x4e219a12 // frintm v18.4s, v16.4s
3173 .long 0x4eb2d610 // fsub v16.4s, v16.4s, v18.4s
3174 .long 0x3d800100 // str q0, [x8]
3175 .long 0x3d800901 // str q1, [x8, #32]
3176 .long 0x3d801111 // str q17, [x8, #64]
3177 .long 0x3d801910 // str q16, [x8, #96]
3178 .long 0xf9400423 // ldr x3, [x1, #8]
3179 .long 0x91004021 // add x1, x1, #0x10
3180 .long 0xd61f0060 // br x3
3181
3182HIDDEN _sk_accumulate_aarch64
3183.globl _sk_accumulate_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003184FUNCTION(_sk_accumulate_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003185_sk_accumulate_aarch64:
3186 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3187 .long 0x3dc02110 // ldr q16, [x8, #128]
3188 .long 0x3dc02911 // ldr q17, [x8, #160]
3189 .long 0x6e31de10 // fmul v16.4s, v16.4s, v17.4s
3190 .long 0x4e30cc04 // fmla v4.4s, v0.4s, v16.4s
3191 .long 0x4e30cc25 // fmla v5.4s, v1.4s, v16.4s
3192 .long 0x4e30cc46 // fmla v6.4s, v2.4s, v16.4s
3193 .long 0x4e30cc67 // fmla v7.4s, v3.4s, v16.4s
3194 .long 0xd61f0060 // br x3
3195
3196HIDDEN _sk_bilinear_nx_aarch64
3197.globl _sk_bilinear_nx_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003198FUNCTION(_sk_bilinear_nx_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003199_sk_bilinear_nx_aarch64:
3200 .long 0xf9400028 // ldr x8, [x1]
3201 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
3202 .long 0x3dc01100 // ldr q0, [x8, #64]
3203 .long 0x3dc00110 // ldr q16, [x8]
3204 .long 0x4ea0d620 // fsub v0.4s, v17.4s, v0.4s
3205 .long 0x3d802100 // str q0, [x8, #128]
3206 .long 0xf9400423 // ldr x3, [x1, #8]
3207 .long 0x4f0567e0 // movi v0.4s, #0xbf, lsl #24
3208 .long 0x4e20d600 // fadd v0.4s, v16.4s, v0.4s
3209 .long 0x91004021 // add x1, x1, #0x10
3210 .long 0xd61f0060 // br x3
3211
3212HIDDEN _sk_bilinear_px_aarch64
3213.globl _sk_bilinear_px_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003214FUNCTION(_sk_bilinear_px_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003215_sk_bilinear_px_aarch64:
3216 .long 0xf9400028 // ldr x8, [x1]
3217 .long 0x3dc01100 // ldr q0, [x8, #64]
3218 .long 0x3dc00110 // ldr q16, [x8]
3219 .long 0x3d802100 // str q0, [x8, #128]
3220 .long 0xf9400423 // ldr x3, [x1, #8]
3221 .long 0x4f0167e0 // movi v0.4s, #0x3f, lsl #24
3222 .long 0x4e20d600 // fadd v0.4s, v16.4s, v0.4s
3223 .long 0x91004021 // add x1, x1, #0x10
3224 .long 0xd61f0060 // br x3
3225
3226HIDDEN _sk_bilinear_ny_aarch64
3227.globl _sk_bilinear_ny_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003228FUNCTION(_sk_bilinear_ny_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003229_sk_bilinear_ny_aarch64:
3230 .long 0xf9400028 // ldr x8, [x1]
3231 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
3232 .long 0x3dc01901 // ldr q1, [x8, #96]
3233 .long 0x3dc00910 // ldr q16, [x8, #32]
3234 .long 0x4ea1d621 // fsub v1.4s, v17.4s, v1.4s
3235 .long 0x3d802901 // str q1, [x8, #160]
3236 .long 0xf9400423 // ldr x3, [x1, #8]
3237 .long 0x4f0567e1 // movi v1.4s, #0xbf, lsl #24
3238 .long 0x4e21d601 // fadd v1.4s, v16.4s, v1.4s
3239 .long 0x91004021 // add x1, x1, #0x10
3240 .long 0xd61f0060 // br x3
3241
3242HIDDEN _sk_bilinear_py_aarch64
3243.globl _sk_bilinear_py_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003244FUNCTION(_sk_bilinear_py_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003245_sk_bilinear_py_aarch64:
3246 .long 0xf9400028 // ldr x8, [x1]
3247 .long 0x3dc01901 // ldr q1, [x8, #96]
3248 .long 0x3dc00910 // ldr q16, [x8, #32]
3249 .long 0x3d802901 // str q1, [x8, #160]
3250 .long 0xf9400423 // ldr x3, [x1, #8]
3251 .long 0x4f0167e1 // movi v1.4s, #0x3f, lsl #24
3252 .long 0x4e21d601 // fadd v1.4s, v16.4s, v1.4s
3253 .long 0x91004021 // add x1, x1, #0x10
3254 .long 0xd61f0060 // br x3
3255
3256HIDDEN _sk_bicubic_n3x_aarch64
3257.globl _sk_bicubic_n3x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003258FUNCTION(_sk_bicubic_n3x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003259_sk_bicubic_n3x_aarch64:
3260 .long 0xf9400028 // ldr x8, [x1]
3261 .long 0x52a7d8e9 // mov w9, #0x3ec70000
3262 .long 0x72838e49 // movk w9, #0x1c72
3263 .long 0x4e040d30 // dup v16.4s, w9
3264 .long 0x3dc01111 // ldr q17, [x8, #64]
3265 .long 0x52b7d549 // mov w9, #0xbeaa0000
3266 .long 0x4f03f600 // fmov v0.4s, #1.000000000000000000e+00
3267 .long 0x72955569 // movk w9, #0xaaab
3268 .long 0x4e040d32 // dup v18.4s, w9
3269 .long 0x4eb1d400 // fsub v0.4s, v0.4s, v17.4s
3270 .long 0x6e20dc11 // fmul v17.4s, v0.4s, v0.4s
3271 .long 0x4e20ce12 // fmla v18.4s, v16.4s, v0.4s
3272 .long 0x6e32de20 // fmul v0.4s, v17.4s, v18.4s
3273 .long 0x3dc00113 // ldr q19, [x8]
3274 .long 0x3d802100 // str q0, [x8, #128]
3275 .long 0xf9400423 // ldr x3, [x1, #8]
3276 .long 0x4f07f700 // fmov v0.4s, #-1.500000000000000000e+00
3277 .long 0x4e20d660 // fadd v0.4s, v19.4s, v0.4s
3278 .long 0x91004021 // add x1, x1, #0x10
3279 .long 0xd61f0060 // br x3
3280
3281HIDDEN _sk_bicubic_n1x_aarch64
3282.globl _sk_bicubic_n1x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003283FUNCTION(_sk_bicubic_n1x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003284_sk_bicubic_n1x_aarch64:
3285 .long 0xf9400028 // ldr x8, [x1]
3286 .long 0x52b7f2a9 // mov w9, #0xbf950000
3287 .long 0x4f03f600 // fmov v0.4s, #1.000000000000000000e+00
3288 .long 0x728aaaa9 // movk w9, #0x5555
3289 .long 0x3dc01110 // ldr q16, [x8, #64]
3290 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
3291 .long 0x4f0167f2 // movi v18.4s, #0x3f, lsl #24
3292 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
3293 .long 0x4e040d30 // dup v16.4s, w9
3294 .long 0x52a7ac69 // mov w9, #0x3d630000
3295 .long 0x7291c729 // movk w9, #0x8e39
3296 .long 0x4e20ce11 // fmla v17.4s, v16.4s, v0.4s
3297 .long 0x4e20ce32 // fmla v18.4s, v17.4s, v0.4s
3298 .long 0x4e040d31 // dup v17.4s, w9
3299 .long 0x4e20ce51 // fmla v17.4s, v18.4s, v0.4s
3300 .long 0x3dc00110 // ldr q16, [x8]
3301 .long 0x3d802111 // str q17, [x8, #128]
3302 .long 0xf9400423 // ldr x3, [x1, #8]
3303 .long 0x4f0567e0 // movi v0.4s, #0xbf, lsl #24
3304 .long 0x4e20d600 // fadd v0.4s, v16.4s, v0.4s
3305 .long 0x91004021 // add x1, x1, #0x10
3306 .long 0xd61f0060 // br x3
3307
3308HIDDEN _sk_bicubic_p1x_aarch64
3309.globl _sk_bicubic_p1x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003310FUNCTION(_sk_bicubic_p1x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003311_sk_bicubic_p1x_aarch64:
3312 .long 0xf9400028 // ldr x8, [x1]
3313 .long 0x52b7f2a9 // mov w9, #0xbf950000
3314 .long 0x728aaaa9 // movk w9, #0x5555
3315 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
3316 .long 0x3dc01112 // ldr q18, [x8, #64]
3317 .long 0x3dc00100 // ldr q0, [x8]
3318 .long 0x4e040d33 // dup v19.4s, w9
3319 .long 0x52a7ac69 // mov w9, #0x3d630000
3320 .long 0x4f0167f0 // movi v16.4s, #0x3f, lsl #24
3321 .long 0x7291c729 // movk w9, #0x8e39
3322 .long 0x4e32ce71 // fmla v17.4s, v19.4s, v18.4s
3323 .long 0x4e30d400 // fadd v0.4s, v0.4s, v16.4s
3324 .long 0x4e32ce30 // fmla v16.4s, v17.4s, v18.4s
3325 .long 0x4e040d31 // dup v17.4s, w9
3326 .long 0x4e32ce11 // fmla v17.4s, v16.4s, v18.4s
3327 .long 0x3d802111 // str q17, [x8, #128]
3328 .long 0xf9400423 // ldr x3, [x1, #8]
3329 .long 0x91004021 // add x1, x1, #0x10
3330 .long 0xd61f0060 // br x3
3331
3332HIDDEN _sk_bicubic_p3x_aarch64
3333.globl _sk_bicubic_p3x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003334FUNCTION(_sk_bicubic_p3x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003335_sk_bicubic_p3x_aarch64:
3336 .long 0xf9400028 // ldr x8, [x1]
3337 .long 0x52a7d8e9 // mov w9, #0x3ec70000
3338 .long 0x72838e49 // movk w9, #0x1c72
3339 .long 0x4e040d20 // dup v0.4s, w9
3340 .long 0x3dc01110 // ldr q16, [x8, #64]
3341 .long 0x52b7d549 // mov w9, #0xbeaa0000
3342 .long 0x72955569 // movk w9, #0xaaab
3343 .long 0x4e040d31 // dup v17.4s, w9
3344 .long 0x6e30de13 // fmul v19.4s, v16.4s, v16.4s
3345 .long 0x4e30cc11 // fmla v17.4s, v0.4s, v16.4s
3346 .long 0x6e31de60 // fmul v0.4s, v19.4s, v17.4s
3347 .long 0x3dc00112 // ldr q18, [x8]
3348 .long 0x3d802100 // str q0, [x8, #128]
3349 .long 0xf9400423 // ldr x3, [x1, #8]
3350 .long 0x4f03f700 // fmov v0.4s, #1.500000000000000000e+00
3351 .long 0x4e20d640 // fadd v0.4s, v18.4s, v0.4s
3352 .long 0x91004021 // add x1, x1, #0x10
3353 .long 0xd61f0060 // br x3
3354
3355HIDDEN _sk_bicubic_n3y_aarch64
3356.globl _sk_bicubic_n3y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003357FUNCTION(_sk_bicubic_n3y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003358_sk_bicubic_n3y_aarch64:
3359 .long 0xf9400028 // ldr x8, [x1]
3360 .long 0x52a7d8e9 // mov w9, #0x3ec70000
3361 .long 0x72838e49 // movk w9, #0x1c72
3362 .long 0x4e040d30 // dup v16.4s, w9
3363 .long 0x3dc01911 // ldr q17, [x8, #96]
3364 .long 0x52b7d549 // mov w9, #0xbeaa0000
3365 .long 0x4f03f601 // fmov v1.4s, #1.000000000000000000e+00
3366 .long 0x72955569 // movk w9, #0xaaab
3367 .long 0x4e040d32 // dup v18.4s, w9
3368 .long 0x4eb1d421 // fsub v1.4s, v1.4s, v17.4s
3369 .long 0x6e21dc31 // fmul v17.4s, v1.4s, v1.4s
3370 .long 0x4e21ce12 // fmla v18.4s, v16.4s, v1.4s
3371 .long 0x6e32de21 // fmul v1.4s, v17.4s, v18.4s
3372 .long 0x3dc00913 // ldr q19, [x8, #32]
3373 .long 0x3d802901 // str q1, [x8, #160]
3374 .long 0xf9400423 // ldr x3, [x1, #8]
3375 .long 0x4f07f701 // fmov v1.4s, #-1.500000000000000000e+00
3376 .long 0x4e21d661 // fadd v1.4s, v19.4s, v1.4s
3377 .long 0x91004021 // add x1, x1, #0x10
3378 .long 0xd61f0060 // br x3
3379
3380HIDDEN _sk_bicubic_n1y_aarch64
3381.globl _sk_bicubic_n1y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003382FUNCTION(_sk_bicubic_n1y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003383_sk_bicubic_n1y_aarch64:
3384 .long 0xf9400028 // ldr x8, [x1]
3385 .long 0x52b7f2a9 // mov w9, #0xbf950000
3386 .long 0x4f03f601 // fmov v1.4s, #1.000000000000000000e+00
3387 .long 0x728aaaa9 // movk w9, #0x5555
3388 .long 0x3dc01910 // ldr q16, [x8, #96]
3389 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
3390 .long 0x4f0167f2 // movi v18.4s, #0x3f, lsl #24
3391 .long 0x4eb0d421 // fsub v1.4s, v1.4s, v16.4s
3392 .long 0x4e040d30 // dup v16.4s, w9
3393 .long 0x52a7ac69 // mov w9, #0x3d630000
3394 .long 0x7291c729 // movk w9, #0x8e39
3395 .long 0x4e21ce11 // fmla v17.4s, v16.4s, v1.4s
3396 .long 0x4e21ce32 // fmla v18.4s, v17.4s, v1.4s
3397 .long 0x4e040d31 // dup v17.4s, w9
3398 .long 0x4e21ce51 // fmla v17.4s, v18.4s, v1.4s
3399 .long 0x3dc00910 // ldr q16, [x8, #32]
3400 .long 0x3d802911 // str q17, [x8, #160]
3401 .long 0xf9400423 // ldr x3, [x1, #8]
3402 .long 0x4f0567e1 // movi v1.4s, #0xbf, lsl #24
3403 .long 0x4e21d601 // fadd v1.4s, v16.4s, v1.4s
3404 .long 0x91004021 // add x1, x1, #0x10
3405 .long 0xd61f0060 // br x3
3406
3407HIDDEN _sk_bicubic_p1y_aarch64
3408.globl _sk_bicubic_p1y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003409FUNCTION(_sk_bicubic_p1y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003410_sk_bicubic_p1y_aarch64:
3411 .long 0xf9400028 // ldr x8, [x1]
3412 .long 0x52b7f2a9 // mov w9, #0xbf950000
3413 .long 0x728aaaa9 // movk w9, #0x5555
3414 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
3415 .long 0x3dc01912 // ldr q18, [x8, #96]
3416 .long 0x3dc00901 // ldr q1, [x8, #32]
3417 .long 0x4e040d33 // dup v19.4s, w9
3418 .long 0x52a7ac69 // mov w9, #0x3d630000
3419 .long 0x4f0167f0 // movi v16.4s, #0x3f, lsl #24
3420 .long 0x7291c729 // movk w9, #0x8e39
3421 .long 0x4e32ce71 // fmla v17.4s, v19.4s, v18.4s
3422 .long 0x4e30d421 // fadd v1.4s, v1.4s, v16.4s
3423 .long 0x4e32ce30 // fmla v16.4s, v17.4s, v18.4s
3424 .long 0x4e040d31 // dup v17.4s, w9
3425 .long 0x4e32ce11 // fmla v17.4s, v16.4s, v18.4s
3426 .long 0x3d802911 // str q17, [x8, #160]
3427 .long 0xf9400423 // ldr x3, [x1, #8]
3428 .long 0x91004021 // add x1, x1, #0x10
3429 .long 0xd61f0060 // br x3
3430
3431HIDDEN _sk_bicubic_p3y_aarch64
3432.globl _sk_bicubic_p3y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003433FUNCTION(_sk_bicubic_p3y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003434_sk_bicubic_p3y_aarch64:
3435 .long 0xf9400028 // ldr x8, [x1]
3436 .long 0x52a7d8e9 // mov w9, #0x3ec70000
3437 .long 0x72838e49 // movk w9, #0x1c72
3438 .long 0x4e040d21 // dup v1.4s, w9
3439 .long 0x3dc01910 // ldr q16, [x8, #96]
3440 .long 0x52b7d549 // mov w9, #0xbeaa0000
3441 .long 0x72955569 // movk w9, #0xaaab
3442 .long 0x4e040d31 // dup v17.4s, w9
3443 .long 0x6e30de13 // fmul v19.4s, v16.4s, v16.4s
3444 .long 0x4e30cc31 // fmla v17.4s, v1.4s, v16.4s
3445 .long 0x6e31de61 // fmul v1.4s, v19.4s, v17.4s
3446 .long 0x3dc00912 // ldr q18, [x8, #32]
3447 .long 0x3d802901 // str q1, [x8, #160]
3448 .long 0xf9400423 // ldr x3, [x1, #8]
3449 .long 0x4f03f701 // fmov v1.4s, #1.500000000000000000e+00
3450 .long 0x4e21d641 // fadd v1.4s, v18.4s, v1.4s
3451 .long 0x91004021 // add x1, x1, #0x10
3452 .long 0xd61f0060 // br x3
Mike Klein7fee90c2017-04-07 16:55:09 -04003453
3454HIDDEN _sk_callback_aarch64
3455.globl _sk_callback_aarch64
3456FUNCTION(_sk_callback_aarch64)
3457_sk_callback_aarch64:
Mike Kleinc17dc242017-04-20 16:21:57 -04003458 .long 0xd101c3ff // sub sp, sp, #0x70
3459 .long 0xf90023f6 // str x22, [sp, #64]
3460 .long 0xa90553f5 // stp x21, x20, [sp, #80]
3461 .long 0xa9067bf3 // stp x19, x30, [sp, #96]
3462 .long 0xad011fe6 // stp q6, q7, [sp, #32]
3463 .long 0xad0017e4 // stp q4, q5, [sp]
Mike Klein7fee90c2017-04-07 16:55:09 -04003464 .long 0xaa0103f4 // mov x20, x1
Mike Kleinc17dc242017-04-20 16:21:57 -04003465 .long 0xf9400295 // ldr x21, [x20]
3466 .long 0xaa0003f6 // mov x22, x0
Mike Klein7fee90c2017-04-07 16:55:09 -04003467 .long 0x321e03e1 // orr w1, wzr, #0x4
3468 .long 0xaa0203f3 // mov x19, x2
Mike Kleinc17dc242017-04-20 16:21:57 -04003469 .long 0x910022a8 // add x8, x21, #0x8
3470 .long 0x4c000900 // st4 {v0.4s-v3.4s}, [x8]
3471 .long 0xf94002a8 // ldr x8, [x21]
3472 .long 0xaa1503e0 // mov x0, x21
3473 .long 0xd63f0100 // blr x8
3474 .long 0xf94046a8 // ldr x8, [x21, #136]
Mike Klein7fee90c2017-04-07 16:55:09 -04003475 .long 0xf9400683 // ldr x3, [x20, #8]
3476 .long 0x91004281 // add x1, x20, #0x10
Mike Kleinc17dc242017-04-20 16:21:57 -04003477 .long 0xaa1603e0 // mov x0, x22
3478 .long 0x4c400900 // ld4 {v0.4s-v3.4s}, [x8]
Mike Klein7fee90c2017-04-07 16:55:09 -04003479 .long 0xaa1303e2 // mov x2, x19
Mike Kleinc17dc242017-04-20 16:21:57 -04003480 .long 0xad4017e4 // ldp q4, q5, [sp]
3481 .long 0xad411fe6 // ldp q6, q7, [sp, #32]
3482 .long 0xa9467bf3 // ldp x19, x30, [sp, #96]
3483 .long 0xa94553f5 // ldp x21, x20, [sp, #80]
3484 .long 0xf94023f6 // ldr x22, [sp, #64]
3485 .long 0x9101c3ff // add sp, sp, #0x70
Mike Klein7fee90c2017-04-07 16:55:09 -04003486 .long 0xd61f0060 // br x3
Mike Kleind7e06ae2017-03-29 16:33:06 -04003487#elif defined(__arm__)
Mike Klein2229b572017-04-21 10:30:29 -04003488BALIGN4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003489
Mike Klein7c4af542017-03-29 18:21:14 -04003490HIDDEN _sk_start_pipeline_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003491.globl _sk_start_pipeline_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003492FUNCTION(_sk_start_pipeline_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003493_sk_start_pipeline_vfp4:
3494 .long 0xe92d41f0 // push {r4, r5, r6, r7, r8, lr}
3495 .long 0xe1a04000 // mov r4, r0
3496 .long 0xe2840002 // add r0, r4, #2
3497 .long 0xe1a05003 // mov r5, r3
3498 .long 0xe1a08002 // mov r8, r2
3499 .long 0xe1a07001 // mov r7, r1
3500 .long 0xe1500005 // cmp r0, r5
3501 .long 0x8a000010 // bhi 64 <sk_start_pipeline_vfp4+0x64>
3502 .long 0xe4976004 // ldr r6, [r7], #4
3503 .long 0xf2800010 // vmov.i32 d0, #0
3504 .long 0xe1a00004 // mov r0, r4
3505 .long 0xf2801010 // vmov.i32 d1, #0
3506 .long 0xe1a01007 // mov r1, r7
3507 .long 0xf2802010 // vmov.i32 d2, #0
3508 .long 0xe1a02008 // mov r2, r8
3509 .long 0xf2803010 // vmov.i32 d3, #0
3510 .long 0xf2804010 // vmov.i32 d4, #0
3511 .long 0xf2805010 // vmov.i32 d5, #0
3512 .long 0xf2806010 // vmov.i32 d6, #0
3513 .long 0xf2807010 // vmov.i32 d7, #0
3514 .long 0xe12fff36 // blx r6
3515 .long 0xe2840004 // add r0, r4, #4
3516 .long 0xe2844002 // add r4, r4, #2
3517 .long 0xe1500005 // cmp r0, r5
3518 .long 0x9affffef // bls 24 <sk_start_pipeline_vfp4+0x24>
3519 .long 0xe1a00004 // mov r0, r4
3520 .long 0xe8bd81f0 // pop {r4, r5, r6, r7, r8, pc}
3521
Mike Klein7c4af542017-03-29 18:21:14 -04003522HIDDEN _sk_just_return_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003523.globl _sk_just_return_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003524FUNCTION(_sk_just_return_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003525_sk_just_return_vfp4:
3526 .long 0xe12fff1e // bx lr
3527
Mike Klein7c4af542017-03-29 18:21:14 -04003528HIDDEN _sk_seed_shader_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003529.globl _sk_seed_shader_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003530FUNCTION(_sk_seed_shader_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003531_sk_seed_shader_vfp4:
3532 .long 0xee800b90 // vdup.32 d16, r0
3533 .long 0xe8911008 // ldm r1, {r3, ip}
3534 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
3535 .long 0xf2c3161f // vmov.i32 d17, #1056964608
3536 .long 0xedd23b00 // vldr d19, [r2]
3537 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
3538 .long 0xf2872f10 // vmov.f32 d2, #1
3539 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
3540 .long 0xe2811008 // add r1, r1, #8
3541 .long 0xf2400da1 // vadd.f32 d16, d16, d17
3542 .long 0xf2803010 // vmov.i32 d3, #0
3543 .long 0xf2804010 // vmov.i32 d4, #0
3544 .long 0xf2021da1 // vadd.f32 d1, d18, d17
3545 .long 0xf2000da3 // vadd.f32 d0, d16, d19
3546 .long 0xf2805010 // vmov.i32 d5, #0
3547 .long 0xf2806010 // vmov.i32 d6, #0
3548 .long 0xf2807010 // vmov.i32 d7, #0
3549 .long 0xe12fff1c // bx ip
3550
Mike Klein7c4af542017-03-29 18:21:14 -04003551HIDDEN _sk_constant_color_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003552.globl _sk_constant_color_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003553FUNCTION(_sk_constant_color_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003554_sk_constant_color_vfp4:
Mike Klein8a823fa2017-04-05 17:29:26 -04003555 .long 0xe92d4010 // push {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04003556 .long 0xe8911008 // ldm r1, {r3, ip}
3557 .long 0xe2811008 // add r1, r1, #8
Mike Klein8a823fa2017-04-05 17:29:26 -04003558 .long 0xe283400c // add r4, r3, #12
3559 .long 0xe1a0e003 // mov lr, r3
3560 .long 0xe2833008 // add r3, r3, #8
3561 .long 0xf4ae0c9d // vld1.32 {d0[]}, [lr :32]!
3562 .long 0xf4a43c9f // vld1.32 {d3[]}, [r4 :32]
3563 .long 0xf4a32c9f // vld1.32 {d2[]}, [r3 :32]
3564 .long 0xf4ae1c9f // vld1.32 {d1[]}, [lr :32]
3565 .long 0xe8bd4010 // pop {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04003566 .long 0xe12fff1c // bx ip
3567
Mike Klein7c4af542017-03-29 18:21:14 -04003568HIDDEN _sk_clear_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003569.globl _sk_clear_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003570FUNCTION(_sk_clear_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003571_sk_clear_vfp4:
3572 .long 0xe4913004 // ldr r3, [r1], #4
3573 .long 0xf2800010 // vmov.i32 d0, #0
3574 .long 0xf2801010 // vmov.i32 d1, #0
3575 .long 0xf2802010 // vmov.i32 d2, #0
3576 .long 0xf2803010 // vmov.i32 d3, #0
3577 .long 0xe12fff13 // bx r3
3578
Mike Kleinaaca1e42017-03-31 09:29:01 -04003579HIDDEN _sk_srcatop_vfp4
3580.globl _sk_srcatop_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003581FUNCTION(_sk_srcatop_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003582_sk_srcatop_vfp4:
3583 .long 0xf2c70f10 // vmov.f32 d16, #1
Mike Kleind7e06ae2017-03-29 16:33:06 -04003584 .long 0xe4913004 // ldr r3, [r1], #4
Mike Kleinaaca1e42017-03-31 09:29:01 -04003585 .long 0xf2603d83 // vsub.f32 d19, d16, d3
3586 .long 0xf3033d17 // vmul.f32 d3, d3, d7
3587 .long 0xf3430d94 // vmul.f32 d16, d19, d4
3588 .long 0xf3431d95 // vmul.f32 d17, d19, d5
3589 .long 0xf3432d96 // vmul.f32 d18, d19, d6
3590 .long 0xf2400c17 // vfma.f32 d16, d0, d7
3591 .long 0xf2411c17 // vfma.f32 d17, d1, d7
3592 .long 0xf2422c17 // vfma.f32 d18, d2, d7
3593 .long 0xf2033c97 // vfma.f32 d3, d19, d7
3594 .long 0xf22001b0 // vorr d0, d16, d16
3595 .long 0xf22111b1 // vorr d1, d17, d17
3596 .long 0xf22221b2 // vorr d2, d18, d18
3597 .long 0xe12fff13 // bx r3
3598
3599HIDDEN _sk_dstatop_vfp4
3600.globl _sk_dstatop_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003601FUNCTION(_sk_dstatop_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003602_sk_dstatop_vfp4:
3603 .long 0xf2c70f10 // vmov.f32 d16, #1
3604 .long 0xe4913004 // ldr r3, [r1], #4
3605 .long 0xf3431d15 // vmul.f32 d17, d3, d5
3606 .long 0xf2604d87 // vsub.f32 d20, d16, d7
3607 .long 0xf3430d14 // vmul.f32 d16, d3, d4
3608 .long 0xf3432d16 // vmul.f32 d18, d3, d6
3609 .long 0xf3433d17 // vmul.f32 d19, d3, d7
3610 .long 0xf2440c90 // vfma.f32 d16, d20, d0
3611 .long 0xf2441c91 // vfma.f32 d17, d20, d1
3612 .long 0xf2442c92 // vfma.f32 d18, d20, d2
3613 .long 0xf2443c93 // vfma.f32 d19, d20, d3
3614 .long 0xf22001b0 // vorr d0, d16, d16
3615 .long 0xf22111b1 // vorr d1, d17, d17
3616 .long 0xf22221b2 // vorr d2, d18, d18
3617 .long 0xf22331b3 // vorr d3, d19, d19
3618 .long 0xe12fff13 // bx r3
3619
3620HIDDEN _sk_srcin_vfp4
3621.globl _sk_srcin_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003622FUNCTION(_sk_srcin_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003623_sk_srcin_vfp4:
3624 .long 0xf3000d17 // vmul.f32 d0, d0, d7
3625 .long 0xe4913004 // ldr r3, [r1], #4
3626 .long 0xf3011d17 // vmul.f32 d1, d1, d7
3627 .long 0xf3022d17 // vmul.f32 d2, d2, d7
3628 .long 0xf3033d17 // vmul.f32 d3, d3, d7
3629 .long 0xe12fff13 // bx r3
3630
3631HIDDEN _sk_dstin_vfp4
3632.globl _sk_dstin_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003633FUNCTION(_sk_dstin_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003634_sk_dstin_vfp4:
3635 .long 0xf3030d14 // vmul.f32 d0, d3, d4
3636 .long 0xe4913004 // ldr r3, [r1], #4
3637 .long 0xf3031d15 // vmul.f32 d1, d3, d5
3638 .long 0xf3032d16 // vmul.f32 d2, d3, d6
3639 .long 0xf3033d17 // vmul.f32 d3, d3, d7
3640 .long 0xe12fff13 // bx r3
3641
3642HIDDEN _sk_srcout_vfp4
3643.globl _sk_srcout_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003644FUNCTION(_sk_srcout_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003645_sk_srcout_vfp4:
3646 .long 0xf2c70f10 // vmov.f32 d16, #1
3647 .long 0xe4913004 // ldr r3, [r1], #4
3648 .long 0xf2600d87 // vsub.f32 d16, d16, d7
3649 .long 0xf3000d90 // vmul.f32 d0, d16, d0
3650 .long 0xf3001d91 // vmul.f32 d1, d16, d1
3651 .long 0xf3002d92 // vmul.f32 d2, d16, d2
3652 .long 0xf3003d93 // vmul.f32 d3, d16, d3
3653 .long 0xe12fff13 // bx r3
3654
3655HIDDEN _sk_dstout_vfp4
3656.globl _sk_dstout_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003657FUNCTION(_sk_dstout_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003658_sk_dstout_vfp4:
3659 .long 0xf2c70f10 // vmov.f32 d16, #1
3660 .long 0xe4913004 // ldr r3, [r1], #4
3661 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3662 .long 0xf3000d94 // vmul.f32 d0, d16, d4
3663 .long 0xf3001d95 // vmul.f32 d1, d16, d5
3664 .long 0xf3002d96 // vmul.f32 d2, d16, d6
3665 .long 0xf3003d97 // vmul.f32 d3, d16, d7
Mike Kleind7e06ae2017-03-29 16:33:06 -04003666 .long 0xe12fff13 // bx r3
3667
Mike Klein7c4af542017-03-29 18:21:14 -04003668HIDDEN _sk_srcover_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003669.globl _sk_srcover_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003670FUNCTION(_sk_srcover_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003671_sk_srcover_vfp4:
3672 .long 0xf2c70f10 // vmov.f32 d16, #1
3673 .long 0xe4913004 // ldr r3, [r1], #4
3674 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3675 .long 0xf2040c30 // vfma.f32 d0, d4, d16
3676 .long 0xf2051c30 // vfma.f32 d1, d5, d16
3677 .long 0xf2062c30 // vfma.f32 d2, d6, d16
3678 .long 0xf2073c30 // vfma.f32 d3, d7, d16
3679 .long 0xe12fff13 // bx r3
3680
Mike Klein7c4af542017-03-29 18:21:14 -04003681HIDDEN _sk_dstover_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003682.globl _sk_dstover_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003683FUNCTION(_sk_dstover_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003684_sk_dstover_vfp4:
3685 .long 0xf2c70f10 // vmov.f32 d16, #1
3686 .long 0xe4913004 // ldr r3, [r1], #4
3687 .long 0xf2651115 // vorr d17, d5, d5
3688 .long 0xf2604d87 // vsub.f32 d20, d16, d7
3689 .long 0xf2640114 // vorr d16, d4, d4
3690 .long 0xf2662116 // vorr d18, d6, d6
3691 .long 0xf2673117 // vorr d19, d7, d7
3692 .long 0xf2400c34 // vfma.f32 d16, d0, d20
3693 .long 0xf2411c34 // vfma.f32 d17, d1, d20
3694 .long 0xf2422c34 // vfma.f32 d18, d2, d20
3695 .long 0xf2433c34 // vfma.f32 d19, d3, d20
3696 .long 0xf22001b0 // vorr d0, d16, d16
3697 .long 0xf22111b1 // vorr d1, d17, d17
3698 .long 0xf22221b2 // vorr d2, d18, d18
3699 .long 0xf22331b3 // vorr d3, d19, d19
3700 .long 0xe12fff13 // bx r3
3701
Mike Kleinaaca1e42017-03-31 09:29:01 -04003702HIDDEN _sk_modulate_vfp4
3703.globl _sk_modulate_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003704FUNCTION(_sk_modulate_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003705_sk_modulate_vfp4:
3706 .long 0xf3000d14 // vmul.f32 d0, d0, d4
3707 .long 0xe4913004 // ldr r3, [r1], #4
3708 .long 0xf3011d15 // vmul.f32 d1, d1, d5
3709 .long 0xf3022d16 // vmul.f32 d2, d2, d6
3710 .long 0xf3033d17 // vmul.f32 d3, d3, d7
3711 .long 0xe12fff13 // bx r3
3712
3713HIDDEN _sk_multiply_vfp4
3714.globl _sk_multiply_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003715FUNCTION(_sk_multiply_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003716_sk_multiply_vfp4:
3717 .long 0xf2c70f10 // vmov.f32 d16, #1
3718 .long 0xe4913004 // ldr r3, [r1], #4
3719 .long 0xf2601d87 // vsub.f32 d17, d16, d7
3720 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3721 .long 0xf3412d90 // vmul.f32 d18, d17, d0
3722 .long 0xf3403d94 // vmul.f32 d19, d16, d4
3723 .long 0xf3414d91 // vmul.f32 d20, d17, d1
3724 .long 0xf3405d95 // vmul.f32 d21, d16, d5
3725 .long 0xf3416d92 // vmul.f32 d22, d17, d2
3726 .long 0xf3418d93 // vmul.f32 d24, d17, d3
3727 .long 0xf3407d96 // vmul.f32 d23, d16, d6
3728 .long 0xf3409d97 // vmul.f32 d25, d16, d7
3729 .long 0xf2430da2 // vadd.f32 d16, d19, d18
3730 .long 0xf2451da4 // vadd.f32 d17, d21, d20
3731 .long 0xf2472da6 // vadd.f32 d18, d23, d22
3732 .long 0xf2493da8 // vadd.f32 d19, d25, d24
3733 .long 0xf2400c14 // vfma.f32 d16, d0, d4
3734 .long 0xf2411c15 // vfma.f32 d17, d1, d5
3735 .long 0xf2422c16 // vfma.f32 d18, d2, d6
3736 .long 0xf2433c17 // vfma.f32 d19, d3, d7
3737 .long 0xf22001b0 // vorr d0, d16, d16
3738 .long 0xf22111b1 // vorr d1, d17, d17
3739 .long 0xf22221b2 // vorr d2, d18, d18
3740 .long 0xf22331b3 // vorr d3, d19, d19
3741 .long 0xe12fff13 // bx r3
3742
3743HIDDEN _sk_plus__vfp4
3744.globl _sk_plus__vfp4
Mike Klein86714282017-04-13 17:37:38 -04003745FUNCTION(_sk_plus__vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003746_sk_plus__vfp4:
3747 .long 0xf2000d04 // vadd.f32 d0, d0, d4
3748 .long 0xe4913004 // ldr r3, [r1], #4
3749 .long 0xf2011d05 // vadd.f32 d1, d1, d5
3750 .long 0xf2022d06 // vadd.f32 d2, d2, d6
3751 .long 0xf2033d07 // vadd.f32 d3, d3, d7
3752 .long 0xe12fff13 // bx r3
3753
3754HIDDEN _sk_screen_vfp4
3755.globl _sk_screen_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003756FUNCTION(_sk_screen_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003757_sk_screen_vfp4:
3758 .long 0xf2400d04 // vadd.f32 d16, d0, d4
3759 .long 0xe4913004 // ldr r3, [r1], #4
3760 .long 0xf2411d05 // vadd.f32 d17, d1, d5
3761 .long 0xf2422d06 // vadd.f32 d18, d2, d6
3762 .long 0xf2433d07 // vadd.f32 d19, d3, d7
3763 .long 0xf2600c14 // vfms.f32 d16, d0, d4
3764 .long 0xf2611c15 // vfms.f32 d17, d1, d5
3765 .long 0xf2622c16 // vfms.f32 d18, d2, d6
3766 .long 0xf2633c17 // vfms.f32 d19, d3, d7
3767 .long 0xf22001b0 // vorr d0, d16, d16
3768 .long 0xf22111b1 // vorr d1, d17, d17
3769 .long 0xf22221b2 // vorr d2, d18, d18
3770 .long 0xf22331b3 // vorr d3, d19, d19
3771 .long 0xe12fff13 // bx r3
3772
3773HIDDEN _sk_xor__vfp4
3774.globl _sk_xor__vfp4
Mike Klein86714282017-04-13 17:37:38 -04003775FUNCTION(_sk_xor__vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003776_sk_xor__vfp4:
3777 .long 0xf2c70f10 // vmov.f32 d16, #1
3778 .long 0xe4913004 // ldr r3, [r1], #4
3779 .long 0xf2603d83 // vsub.f32 d19, d16, d3
3780 .long 0xf2604d87 // vsub.f32 d20, d16, d7
3781 .long 0xf3430d94 // vmul.f32 d16, d19, d4
3782 .long 0xf3431d95 // vmul.f32 d17, d19, d5
3783 .long 0xf3432d96 // vmul.f32 d18, d19, d6
3784 .long 0xf3433d97 // vmul.f32 d19, d19, d7
3785 .long 0xf2440c90 // vfma.f32 d16, d20, d0
3786 .long 0xf2441c91 // vfma.f32 d17, d20, d1
3787 .long 0xf2442c92 // vfma.f32 d18, d20, d2
3788 .long 0xf2443c93 // vfma.f32 d19, d20, d3
3789 .long 0xf22001b0 // vorr d0, d16, d16
3790 .long 0xf22111b1 // vorr d1, d17, d17
3791 .long 0xf22221b2 // vorr d2, d18, d18
3792 .long 0xf22331b3 // vorr d3, d19, d19
3793 .long 0xe12fff13 // bx r3
3794
Mike Klein66b09ab2017-03-31 10:29:40 -04003795HIDDEN _sk_darken_vfp4
3796.globl _sk_darken_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003797FUNCTION(_sk_darken_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04003798_sk_darken_vfp4:
3799 .long 0xf2c70f10 // vmov.f32 d16, #1
3800 .long 0xe4913004 // ldr r3, [r1], #4
3801 .long 0xf3431d14 // vmul.f32 d17, d3, d4
3802 .long 0xf3402d17 // vmul.f32 d18, d0, d7
3803 .long 0xf3433d15 // vmul.f32 d19, d3, d5
3804 .long 0xf3414d17 // vmul.f32 d20, d1, d7
3805 .long 0xf3435d16 // vmul.f32 d21, d3, d6
3806 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3807 .long 0xf3426d17 // vmul.f32 d22, d2, d7
3808 .long 0xf2421fa1 // vmax.f32 d17, d18, d17
3809 .long 0xf2407d04 // vadd.f32 d23, d0, d4
3810 .long 0xf2443fa3 // vmax.f32 d19, d20, d19
3811 .long 0xf2412d05 // vadd.f32 d18, d1, d5
3812 .long 0xf2424d06 // vadd.f32 d20, d2, d6
3813 .long 0xf2465fa5 // vmax.f32 d21, d22, d21
3814 .long 0xf2073c30 // vfma.f32 d3, d7, d16
3815 .long 0xf2270da1 // vsub.f32 d0, d23, d17
3816 .long 0xf2221da3 // vsub.f32 d1, d18, d19
3817 .long 0xf2242da5 // vsub.f32 d2, d20, d21
3818 .long 0xe12fff13 // bx r3
3819
3820HIDDEN _sk_lighten_vfp4
3821.globl _sk_lighten_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003822FUNCTION(_sk_lighten_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04003823_sk_lighten_vfp4:
3824 .long 0xf2c70f10 // vmov.f32 d16, #1
3825 .long 0xe4913004 // ldr r3, [r1], #4
3826 .long 0xf3431d14 // vmul.f32 d17, d3, d4
3827 .long 0xf3402d17 // vmul.f32 d18, d0, d7
3828 .long 0xf3433d15 // vmul.f32 d19, d3, d5
3829 .long 0xf3414d17 // vmul.f32 d20, d1, d7
3830 .long 0xf3435d16 // vmul.f32 d21, d3, d6
3831 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3832 .long 0xf3426d17 // vmul.f32 d22, d2, d7
3833 .long 0xf2621fa1 // vmin.f32 d17, d18, d17
3834 .long 0xf2407d04 // vadd.f32 d23, d0, d4
3835 .long 0xf2643fa3 // vmin.f32 d19, d20, d19
3836 .long 0xf2412d05 // vadd.f32 d18, d1, d5
3837 .long 0xf2424d06 // vadd.f32 d20, d2, d6
3838 .long 0xf2665fa5 // vmin.f32 d21, d22, d21
3839 .long 0xf2073c30 // vfma.f32 d3, d7, d16
3840 .long 0xf2270da1 // vsub.f32 d0, d23, d17
3841 .long 0xf2221da3 // vsub.f32 d1, d18, d19
3842 .long 0xf2242da5 // vsub.f32 d2, d20, d21
3843 .long 0xe12fff13 // bx r3
3844
3845HIDDEN _sk_difference_vfp4
3846.globl _sk_difference_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003847FUNCTION(_sk_difference_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04003848_sk_difference_vfp4:
3849 .long 0xf3430d14 // vmul.f32 d16, d3, d4
3850 .long 0xe4913004 // ldr r3, [r1], #4
3851 .long 0xf3401d17 // vmul.f32 d17, d0, d7
3852 .long 0xf3432d15 // vmul.f32 d18, d3, d5
3853 .long 0xf3413d17 // vmul.f32 d19, d1, d7
3854 .long 0xf3434d16 // vmul.f32 d20, d3, d6
3855 .long 0xf3425d17 // vmul.f32 d21, d2, d7
3856 .long 0xf2c76f10 // vmov.f32 d22, #1
3857 .long 0xf2610fa0 // vmin.f32 d16, d17, d16
3858 .long 0xf2631fa2 // vmin.f32 d17, d19, d18
3859 .long 0xf2662d83 // vsub.f32 d18, d22, d3
3860 .long 0xf2653fa4 // vmin.f32 d19, d21, d20
3861 .long 0xf2404d04 // vadd.f32 d20, d0, d4
3862 .long 0xf2400da0 // vadd.f32 d16, d16, d16
3863 .long 0xf2073c32 // vfma.f32 d3, d7, d18
3864 .long 0xf2415d05 // vadd.f32 d21, d1, d5
3865 .long 0xf2411da1 // vadd.f32 d17, d17, d17
3866 .long 0xf2426d06 // vadd.f32 d22, d2, d6
3867 .long 0xf2432da3 // vadd.f32 d18, d19, d19
3868 .long 0xf2240da0 // vsub.f32 d0, d20, d16
3869 .long 0xf2251da1 // vsub.f32 d1, d21, d17
3870 .long 0xf2262da2 // vsub.f32 d2, d22, d18
3871 .long 0xe12fff13 // bx r3
3872
3873HIDDEN _sk_exclusion_vfp4
3874.globl _sk_exclusion_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003875FUNCTION(_sk_exclusion_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04003876_sk_exclusion_vfp4:
3877 .long 0xf2c70f10 // vmov.f32 d16, #1
3878 .long 0xe4913004 // ldr r3, [r1], #4
3879 .long 0xf3401d14 // vmul.f32 d17, d0, d4
3880 .long 0xf3412d15 // vmul.f32 d18, d1, d5
3881 .long 0xf3423d16 // vmul.f32 d19, d2, d6
3882 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3883 .long 0xf2404d04 // vadd.f32 d20, d0, d4
3884 .long 0xf2411da1 // vadd.f32 d17, d17, d17
3885 .long 0xf2415d05 // vadd.f32 d21, d1, d5
3886 .long 0xf2422da2 // vadd.f32 d18, d18, d18
3887 .long 0xf2426d06 // vadd.f32 d22, d2, d6
3888 .long 0xf2433da3 // vadd.f32 d19, d19, d19
3889 .long 0xf2073c30 // vfma.f32 d3, d7, d16
3890 .long 0xf2240da1 // vsub.f32 d0, d20, d17
3891 .long 0xf2251da2 // vsub.f32 d1, d21, d18
3892 .long 0xf2262da3 // vsub.f32 d2, d22, d19
3893 .long 0xe12fff13 // bx r3
3894
Mike Klein61b84162017-03-31 11:48:14 -04003895HIDDEN _sk_colorburn_vfp4
3896.globl _sk_colorburn_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003897FUNCTION(_sk_colorburn_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04003898_sk_colorburn_vfp4:
3899 .long 0xed2d8b08 // vpush {d8-d11}
3900 .long 0xf2670d04 // vsub.f32 d16, d7, d4
3901 .long 0xe4913004 // ldr r3, [r1], #4
3902 .long 0xf2671d06 // vsub.f32 d17, d7, d6
3903 .long 0xf2672d05 // vsub.f32 d18, d7, d5
3904 .long 0xf3008d93 // vmul.f32 d8, d16, d3
3905 .long 0xf3019d93 // vmul.f32 d9, d17, d3
3906 .long 0xf302ad93 // vmul.f32 d10, d18, d3
3907 .long 0xf2c71f10 // vmov.f32 d17, #1
3908 .long 0xeec8baa0 // vdiv.f32 s23, s17, s1
3909 .long 0xee88ba00 // vdiv.f32 s22, s16, s0
3910 .long 0xeec98aa2 // vdiv.f32 s17, s19, s5
3911 .long 0xee898a02 // vdiv.f32 s16, s18, s4
3912 .long 0xeeca9aa1 // vdiv.f32 s19, s21, s3
3913 .long 0xee8a9a01 // vdiv.f32 s18, s20, s2
3914 .long 0xf2672f08 // vmin.f32 d18, d7, d8
3915 .long 0xf2673f09 // vmin.f32 d19, d7, d9
3916 .long 0xf2670f0b // vmin.f32 d16, d7, d11
3917 .long 0xf2614d87 // vsub.f32 d20, d17, d7
3918 .long 0xf2672d22 // vsub.f32 d18, d7, d18
3919 .long 0xf2673d23 // vsub.f32 d19, d7, d19
3920 .long 0xf2611d83 // vsub.f32 d17, d17, d3
3921 .long 0xf2670d20 // vsub.f32 d16, d7, d16
3922 .long 0xf3445d90 // vmul.f32 d21, d20, d0
3923 .long 0xf3446d92 // vmul.f32 d22, d20, d2
3924 .long 0xf3422d93 // vmul.f32 d18, d18, d3
3925 .long 0xf3444d91 // vmul.f32 d20, d20, d1
3926 .long 0xf3433d93 // vmul.f32 d19, d19, d3
3927 .long 0xf3400d93 // vmul.f32 d16, d16, d3
3928 .long 0xf3417d95 // vmul.f32 d23, d17, d5
3929 .long 0xf3418d94 // vmul.f32 d24, d17, d4
3930 .long 0xf3419d96 // vmul.f32 d25, d17, d6
3931 .long 0xf2443da3 // vadd.f32 d19, d20, d19
3932 .long 0xf2462da2 // vadd.f32 d18, d22, d18
3933 .long 0xf245ada0 // vadd.f32 d26, d21, d16
3934 .long 0xf247bd81 // vadd.f32 d27, d23, d1
3935 .long 0xf248cd80 // vadd.f32 d28, d24, d0
3936 .long 0xf249dd82 // vadd.f32 d29, d25, d2
3937 .long 0xf2073c31 // vfma.f32 d3, d7, d17
3938 .long 0xf2499da2 // vadd.f32 d25, d25, d18
3939 .long 0xf2473da3 // vadd.f32 d19, d23, d19
3940 .long 0xf3f97501 // vceq.f32 d23, d1, #0
3941 .long 0xf2455d84 // vadd.f32 d21, d21, d4
3942 .long 0xf2444d85 // vadd.f32 d20, d20, d5
3943 .long 0xf2440e07 // vceq.f32 d16, d4, d7
3944 .long 0xf2466d86 // vadd.f32 d22, d22, d6
3945 .long 0xf2451e07 // vceq.f32 d17, d5, d7
3946 .long 0xf2462e07 // vceq.f32 d18, d6, d7
3947 .long 0xf35b71b3 // vbsl d23, d27, d19
3948 .long 0xf3f93500 // vceq.f32 d19, d0, #0
3949 .long 0xf2488daa // vadd.f32 d24, d24, d26
3950 .long 0xf35c31b8 // vbsl d19, d28, d24
3951 .long 0xf3f98502 // vceq.f32 d24, d2, #0
3952 .long 0xf35d81b9 // vbsl d24, d29, d25
3953 .long 0xf35501b3 // vbsl d16, d21, d19
3954 .long 0xf35411b7 // vbsl d17, d20, d23
3955 .long 0xf35621b8 // vbsl d18, d22, d24
3956 .long 0xf22001b0 // vorr d0, d16, d16
3957 .long 0xf22111b1 // vorr d1, d17, d17
3958 .long 0xf22221b2 // vorr d2, d18, d18
3959 .long 0xecbd8b08 // vpop {d8-d11}
3960 .long 0xe12fff13 // bx r3
3961
3962HIDDEN _sk_colordodge_vfp4
3963.globl _sk_colordodge_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003964FUNCTION(_sk_colordodge_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04003965_sk_colordodge_vfp4:
3966 .long 0xed2d8b0e // vpush {d8-d14}
3967 .long 0xf2238d02 // vsub.f32 d8, d3, d2
3968 .long 0xe4913004 // ldr r3, [r1], #4
3969 .long 0xf3039d16 // vmul.f32 d9, d3, d6
3970 .long 0xf223ad01 // vsub.f32 d10, d3, d1
3971 .long 0xf303bd15 // vmul.f32 d11, d3, d5
3972 .long 0xf223cd00 // vsub.f32 d12, d3, d0
3973 .long 0xf303dd14 // vmul.f32 d13, d3, d4
3974 .long 0xeec9eaa8 // vdiv.f32 s29, s19, s17
3975 .long 0xee89ea08 // vdiv.f32 s28, s18, s16
3976 .long 0xeecb8aaa // vdiv.f32 s17, s23, s21
3977 .long 0xeecd9aac // vdiv.f32 s19, s27, s25
3978 .long 0xee8b8a0a // vdiv.f32 s16, s22, s20
3979 .long 0xee8d9a0c // vdiv.f32 s18, s26, s24
3980 .long 0xf2c70f10 // vmov.f32 d16, #1
3981 .long 0xf2672f0e // vmin.f32 d18, d7, d14
3982 .long 0xf2601d87 // vsub.f32 d17, d16, d7
3983 .long 0xf2673f08 // vmin.f32 d19, d7, d8
3984 .long 0xf2674f09 // vmin.f32 d20, d7, d9
3985 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3986 .long 0xf3415d92 // vmul.f32 d21, d17, d2
3987 .long 0xf3422d93 // vmul.f32 d18, d18, d3
3988 .long 0xf3416d91 // vmul.f32 d22, d17, d1
3989 .long 0xf3433d93 // vmul.f32 d19, d19, d3
3990 .long 0xf3411d90 // vmul.f32 d17, d17, d0
3991 .long 0xf3444d93 // vmul.f32 d20, d20, d3
3992 .long 0xf3407d95 // vmul.f32 d23, d16, d5
3993 .long 0xf3408d94 // vmul.f32 d24, d16, d4
3994 .long 0xf3409d96 // vmul.f32 d25, d16, d6
3995 .long 0xf2452da2 // vadd.f32 d18, d21, d18
3996 .long 0xf2463da3 // vadd.f32 d19, d22, d19
3997 .long 0xf2414da4 // vadd.f32 d20, d17, d20
3998 .long 0xf241ae03 // vceq.f32 d26, d1, d3
3999 .long 0xf247bd81 // vadd.f32 d27, d23, d1
4000 .long 0xf3b91505 // vceq.f32 d1, d5, #0
4001 .long 0xf240ce03 // vceq.f32 d28, d0, d3
4002 .long 0xf248dd80 // vadd.f32 d29, d24, d0
4003 .long 0xf3b90504 // vceq.f32 d0, d4, #0
4004 .long 0xf242ee03 // vceq.f32 d30, d2, d3
4005 .long 0xf249fd82 // vadd.f32 d31, d25, d2
4006 .long 0xf3b92506 // vceq.f32 d2, d6, #0
4007 .long 0xf2073c30 // vfma.f32 d3, d7, d16
4008 .long 0xf2410d84 // vadd.f32 d16, d17, d4
4009 .long 0xf2491da2 // vadd.f32 d17, d25, d18
4010 .long 0xf2462d85 // vadd.f32 d18, d22, d5
4011 .long 0xf2455d86 // vadd.f32 d21, d21, d6
4012 .long 0xf2473da3 // vadd.f32 d19, d23, d19
4013 .long 0xf2484da4 // vadd.f32 d20, d24, d20
4014 .long 0xf35fe1b1 // vbsl d30, d31, d17
4015 .long 0xf35ba1b3 // vbsl d26, d27, d19
4016 .long 0xf35dc1b4 // vbsl d28, d29, d20
4017 .long 0xf31001bc // vbsl d0, d16, d28
4018 .long 0xf31211ba // vbsl d1, d18, d26
4019 .long 0xf31521be // vbsl d2, d21, d30
4020 .long 0xecbd8b0e // vpop {d8-d14}
4021 .long 0xe12fff13 // bx r3
4022
4023HIDDEN _sk_hardlight_vfp4
4024.globl _sk_hardlight_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004025FUNCTION(_sk_hardlight_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004026_sk_hardlight_vfp4:
4027 .long 0xf2c71f10 // vmov.f32 d17, #1
4028 .long 0xe4913004 // ldr r3, [r1], #4
4029 .long 0xf2670d04 // vsub.f32 d16, d7, d4
4030 .long 0xf2617d87 // vsub.f32 d23, d17, d7
4031 .long 0xf2611d83 // vsub.f32 d17, d17, d3
4032 .long 0xf2672d05 // vsub.f32 d18, d7, d5
4033 .long 0xf2674d06 // vsub.f32 d20, d7, d6
4034 .long 0xf2633d00 // vsub.f32 d19, d3, d0
4035 .long 0xf2635d01 // vsub.f32 d21, d3, d1
4036 .long 0xf2636d02 // vsub.f32 d22, d3, d2
4037 .long 0xf347bd90 // vmul.f32 d27, d23, d0
4038 .long 0xf341cd94 // vmul.f32 d28, d17, d4
4039 .long 0xf3430db0 // vmul.f32 d16, d19, d16
4040 .long 0xf3463db4 // vmul.f32 d19, d22, d20
4041 .long 0xf3452db2 // vmul.f32 d18, d21, d18
4042 .long 0xf2404d00 // vadd.f32 d20, d0, d0
4043 .long 0xf3405d14 // vmul.f32 d21, d0, d4
4044 .long 0xf2416d01 // vadd.f32 d22, d1, d1
4045 .long 0xf3418d15 // vmul.f32 d24, d1, d5
4046 .long 0xf2429d02 // vadd.f32 d25, d2, d2
4047 .long 0xf342ad16 // vmul.f32 d26, d2, d6
4048 .long 0xf347dd91 // vmul.f32 d29, d23, d1
4049 .long 0xf341fd95 // vmul.f32 d31, d17, d5
4050 .long 0xf24cbdab // vadd.f32 d27, d28, d27
4051 .long 0xf3477d92 // vmul.f32 d23, d23, d2
4052 .long 0xf341cd96 // vmul.f32 d28, d17, d6
4053 .long 0xf2400da0 // vadd.f32 d16, d16, d16
4054 .long 0xf343ed17 // vmul.f32 d30, d3, d7
4055 .long 0xf2422da2 // vadd.f32 d18, d18, d18
4056 .long 0xf2433da3 // vadd.f32 d19, d19, d19
4057 .long 0xf3434e24 // vcge.f32 d20, d3, d20
4058 .long 0xf2455da5 // vadd.f32 d21, d21, d21
4059 .long 0xf3436e26 // vcge.f32 d22, d3, d22
4060 .long 0xf3439e29 // vcge.f32 d25, d3, d25
4061 .long 0xf2488da8 // vadd.f32 d24, d24, d24
4062 .long 0xf24aadaa // vadd.f32 d26, d26, d26
4063 .long 0xf2073c31 // vfma.f32 d3, d7, d17
4064 .long 0xf24fddad // vadd.f32 d29, d31, d29
4065 .long 0xf24c1da7 // vadd.f32 d17, d28, d23
4066 .long 0xf26e0da0 // vsub.f32 d16, d30, d16
4067 .long 0xf26e2da2 // vsub.f32 d18, d30, d18
4068 .long 0xf26e3da3 // vsub.f32 d19, d30, d19
4069 .long 0xf35541b0 // vbsl d20, d21, d16
4070 .long 0xf35861b2 // vbsl d22, d24, d18
4071 .long 0xf35a91b3 // vbsl d25, d26, d19
4072 .long 0xf20b0da4 // vadd.f32 d0, d27, d20
4073 .long 0xf20d1da6 // vadd.f32 d1, d29, d22
4074 .long 0xf2012da9 // vadd.f32 d2, d17, d25
4075 .long 0xe12fff13 // bx r3
4076
4077HIDDEN _sk_overlay_vfp4
4078.globl _sk_overlay_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004079FUNCTION(_sk_overlay_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004080_sk_overlay_vfp4:
4081 .long 0xf2c71f10 // vmov.f32 d17, #1
4082 .long 0xe4913004 // ldr r3, [r1], #4
4083 .long 0xf2670d04 // vsub.f32 d16, d7, d4
4084 .long 0xf2617d87 // vsub.f32 d23, d17, d7
4085 .long 0xf2611d83 // vsub.f32 d17, d17, d3
4086 .long 0xf2672d05 // vsub.f32 d18, d7, d5
4087 .long 0xf2674d06 // vsub.f32 d20, d7, d6
4088 .long 0xf2633d00 // vsub.f32 d19, d3, d0
4089 .long 0xf2635d01 // vsub.f32 d21, d3, d1
4090 .long 0xf2636d02 // vsub.f32 d22, d3, d2
4091 .long 0xf347bd90 // vmul.f32 d27, d23, d0
4092 .long 0xf341cd94 // vmul.f32 d28, d17, d4
4093 .long 0xf3430db0 // vmul.f32 d16, d19, d16
4094 .long 0xf3463db4 // vmul.f32 d19, d22, d20
4095 .long 0xf3452db2 // vmul.f32 d18, d21, d18
4096 .long 0xf2444d04 // vadd.f32 d20, d4, d4
4097 .long 0xf3405d14 // vmul.f32 d21, d0, d4
4098 .long 0xf2456d05 // vadd.f32 d22, d5, d5
4099 .long 0xf3418d15 // vmul.f32 d24, d1, d5
4100 .long 0xf2469d06 // vadd.f32 d25, d6, d6
4101 .long 0xf342ad16 // vmul.f32 d26, d2, d6
4102 .long 0xf347dd91 // vmul.f32 d29, d23, d1
4103 .long 0xf341fd95 // vmul.f32 d31, d17, d5
4104 .long 0xf24cbdab // vadd.f32 d27, d28, d27
4105 .long 0xf3477d92 // vmul.f32 d23, d23, d2
4106 .long 0xf341cd96 // vmul.f32 d28, d17, d6
4107 .long 0xf343ed17 // vmul.f32 d30, d3, d7
4108 .long 0xf2400da0 // vadd.f32 d16, d16, d16
4109 .long 0xf2422da2 // vadd.f32 d18, d18, d18
4110 .long 0xf2433da3 // vadd.f32 d19, d19, d19
4111 .long 0xf3474e24 // vcge.f32 d20, d7, d20
4112 .long 0xf2455da5 // vadd.f32 d21, d21, d21
4113 .long 0xf3476e26 // vcge.f32 d22, d7, d22
4114 .long 0xf2488da8 // vadd.f32 d24, d24, d24
4115 .long 0xf3479e29 // vcge.f32 d25, d7, d25
4116 .long 0xf24aadaa // vadd.f32 d26, d26, d26
4117 .long 0xf2073c31 // vfma.f32 d3, d7, d17
4118 .long 0xf24fddad // vadd.f32 d29, d31, d29
4119 .long 0xf24c1da7 // vadd.f32 d17, d28, d23
4120 .long 0xf26e0da0 // vsub.f32 d16, d30, d16
4121 .long 0xf26e2da2 // vsub.f32 d18, d30, d18
4122 .long 0xf26e3da3 // vsub.f32 d19, d30, d19
4123 .long 0xf35541b0 // vbsl d20, d21, d16
4124 .long 0xf35861b2 // vbsl d22, d24, d18
4125 .long 0xf35a91b3 // vbsl d25, d26, d19
4126 .long 0xf20b0da4 // vadd.f32 d0, d27, d20
4127 .long 0xf20d1da6 // vadd.f32 d1, d29, d22
4128 .long 0xf2012da9 // vadd.f32 d2, d17, d25
4129 .long 0xe12fff13 // bx r3
4130
4131HIDDEN _sk_softlight_vfp4
4132.globl _sk_softlight_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004133FUNCTION(_sk_softlight_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004134_sk_softlight_vfp4:
4135 .long 0xed2d8b06 // vpush {d8-d10}
4136 .long 0xeec58aa7 // vdiv.f32 s17, s11, s15
4137 .long 0xf3f90407 // vcgt.f32 d16, d7, #0
4138 .long 0xe4913004 // ldr r3, [r1], #4
4139 .long 0xeec49aa7 // vdiv.f32 s19, s9, s15
4140 .long 0xeec6aaa7 // vdiv.f32 s21, s13, s15
4141 .long 0xee858a07 // vdiv.f32 s16, s10, s14
4142 .long 0xee849a07 // vdiv.f32 s18, s8, s14
4143 .long 0xee86aa07 // vdiv.f32 s20, s12, s14
4144 .long 0xf26021b0 // vorr d18, d16, d16
4145 .long 0xf2c01010 // vmov.i32 d17, #0
4146 .long 0xf3582131 // vbsl d18, d8, d17
4147 .long 0xf26031b0 // vorr d19, d16, d16
4148 .long 0xf3fb45a2 // vrsqrte.f32 d20, d18
4149 .long 0xf3593131 // vbsl d19, d9, d17
4150 .long 0xf35a0131 // vbsl d16, d10, d17
4151 .long 0xf3fb15a3 // vrsqrte.f32 d17, d19
4152 .long 0xf3fb55a0 // vrsqrte.f32 d21, d16
4153 .long 0xf3446db4 // vmul.f32 d22, d20, d20
4154 .long 0xf243ada3 // vadd.f32 d26, d19, d19
4155 .long 0xf240bda0 // vadd.f32 d27, d16, d16
4156 .long 0xf3417db1 // vmul.f32 d23, d17, d17
4157 .long 0xf3458db5 // vmul.f32 d24, d21, d21
4158 .long 0xf2626fb6 // vrsqrts.f32 d22, d18, d22
4159 .long 0xf2429da2 // vadd.f32 d25, d18, d18
4160 .long 0xf2637fb7 // vrsqrts.f32 d23, d19, d23
4161 .long 0xf2608fb8 // vrsqrts.f32 d24, d16, d24
4162 .long 0xf2818f1c // vmov.f32 d8, #7
4163 .long 0xf2499da9 // vadd.f32 d25, d25, d25
4164 .long 0xf3444db6 // vmul.f32 d20, d20, d22
4165 .long 0xf24a6daa // vadd.f32 d22, d26, d26
4166 .long 0xf24badab // vadd.f32 d26, d27, d27
4167 .long 0xf3411db7 // vmul.f32 d17, d17, d23
4168 .long 0xf3455db8 // vmul.f32 d21, d21, d24
4169 .long 0xf3fb7524 // vrecpe.f32 d23, d20
4170 .long 0xf3498db9 // vmul.f32 d24, d25, d25
4171 .long 0xf3fbd521 // vrecpe.f32 d29, d17
4172 .long 0xf34aedba // vmul.f32 d30, d26, d26
4173 .long 0xf3fbf525 // vrecpe.f32 d31, d21
4174 .long 0xf2444fb7 // vrecps.f32 d20, d20, d23
4175 .long 0xf346cdb6 // vmul.f32 d28, d22, d22
4176 .long 0xf2411fbd // vrecps.f32 d17, d17, d29
4177 .long 0xf3c7bf10 // vmov.f32 d27, #-1
4178 .long 0xf2455fbf // vrecps.f32 d21, d21, d31
4179 .long 0xf24aadae // vadd.f32 d26, d26, d30
4180 .long 0xf2498da8 // vadd.f32 d24, d25, d24
4181 .long 0xf2429dab // vadd.f32 d25, d18, d27
4182 .long 0xf2466dac // vadd.f32 d22, d22, d28
4183 .long 0xf243cdab // vadd.f32 d28, d19, d27
4184 .long 0xf240bdab // vadd.f32 d27, d16, d27
4185 .long 0xf3474db4 // vmul.f32 d20, d23, d20
4186 .long 0xf2c7ef10 // vmov.f32 d30, #1
4187 .long 0xf34d1db1 // vmul.f32 d17, d29, d17
4188 .long 0xf34badba // vmul.f32 d26, d27, d26
4189 .long 0xf242bd02 // vadd.f32 d27, d2, d2
4190 .long 0xf26edda0 // vsub.f32 d29, d30, d16
4191 .long 0xf3498db8 // vmul.f32 d24, d25, d24
4192 .long 0xf3429d98 // vmul.f32 d25, d18, d8
4193 .long 0xf34f5db5 // vmul.f32 d21, d31, d21
4194 .long 0xf26efda2 // vsub.f32 d31, d30, d18
4195 .long 0xf2642da2 // vsub.f32 d18, d20, d18
4196 .long 0xf26b4d83 // vsub.f32 d20, d27, d3
4197 .long 0xf2498da8 // vadd.f32 d24, d25, d24
4198 .long 0xf34c6db6 // vmul.f32 d22, d28, d22
4199 .long 0xf3437d98 // vmul.f32 d23, d19, d8
4200 .long 0xf3449dbd // vmul.f32 d25, d20, d29
4201 .long 0xf245dd05 // vadd.f32 d29, d5, d5
4202 .long 0xf340cd98 // vmul.f32 d28, d16, d8
4203 .long 0xf2476da6 // vadd.f32 d22, d23, d22
4204 .long 0xf2611da3 // vsub.f32 d17, d17, d19
4205 .long 0xf24dddad // vadd.f32 d29, d29, d29
4206 .long 0xf24c7daa // vadd.f32 d23, d28, d26
4207 .long 0xf2650da0 // vsub.f32 d16, d21, d16
4208 .long 0xf26e3da3 // vsub.f32 d19, d30, d19
4209 .long 0xf347de2d // vcge.f32 d29, d7, d29
4210 .long 0xf241ad01 // vadd.f32 d26, d1, d1
4211 .long 0xf3444d97 // vmul.f32 d20, d20, d7
4212 .long 0xf358d1b2 // vbsl d29, d24, d18
4213 .long 0xf2448d04 // vadd.f32 d24, d4, d4
4214 .long 0xf2462d06 // vadd.f32 d18, d6, d6
4215 .long 0xf26a5d83 // vsub.f32 d21, d26, d3
4216 .long 0xf2488da8 // vadd.f32 d24, d24, d24
4217 .long 0xf2422da2 // vadd.f32 d18, d18, d18
4218 .long 0xf345cdbf // vmul.f32 d28, d21, d31
4219 .long 0xf3455d97 // vmul.f32 d21, d21, d7
4220 .long 0xf3478e28 // vcge.f32 d24, d7, d24
4221 .long 0xf3472e22 // vcge.f32 d18, d7, d18
4222 .long 0xf343fd14 // vmul.f32 d31, d3, d4
4223 .long 0xf3455dbd // vmul.f32 d21, d21, d29
4224 .long 0xf35681b1 // vbsl d24, d22, d17
4225 .long 0xf2401d00 // vadd.f32 d17, d0, d0
4226 .long 0xf35721b0 // vbsl d18, d23, d16
4227 .long 0xf24c0d83 // vadd.f32 d16, d28, d3
4228 .long 0xf2496d83 // vadd.f32 d22, d25, d3
4229 .long 0xf2617d83 // vsub.f32 d23, d17, d3
4230 .long 0xf3442db2 // vmul.f32 d18, d20, d18
4231 .long 0xf3434e2a // vcge.f32 d20, d3, d26
4232 .long 0xf343ae2b // vcge.f32 d26, d3, d27
4233 .long 0xf3473db3 // vmul.f32 d19, d23, d19
4234 .long 0xf3477d97 // vmul.f32 d23, d23, d7
4235 .long 0xf3431e21 // vcge.f32 d17, d3, d17
4236 .long 0xf3400d95 // vmul.f32 d16, d16, d5
4237 .long 0xf2433d83 // vadd.f32 d19, d19, d3
4238 .long 0xf3477db8 // vmul.f32 d23, d23, d24
4239 .long 0xf26e8d87 // vsub.f32 d24, d30, d7
4240 .long 0xf26eed83 // vsub.f32 d30, d30, d3
4241 .long 0xf3433d94 // vmul.f32 d19, d19, d4
4242 .long 0xf24f7da7 // vadd.f32 d23, d31, d23
4243 .long 0xf3489d91 // vmul.f32 d25, d24, d1
4244 .long 0xf348cd90 // vmul.f32 d28, d24, d0
4245 .long 0xf34edd94 // vmul.f32 d29, d30, d4
4246 .long 0xf34ebd95 // vmul.f32 d27, d30, d5
4247 .long 0xf3488d92 // vmul.f32 d24, d24, d2
4248 .long 0xf34efd96 // vmul.f32 d31, d30, d6
4249 .long 0xf24dcdac // vadd.f32 d28, d29, d28
4250 .long 0xf343dd15 // vmul.f32 d29, d3, d5
4251 .long 0xf24b9da9 // vadd.f32 d25, d27, d25
4252 .long 0xf343bd16 // vmul.f32 d27, d3, d6
4253 .long 0xf3466d96 // vmul.f32 d22, d22, d6
4254 .long 0xf24f8da8 // vadd.f32 d24, d31, d24
4255 .long 0xf24d5da5 // vadd.f32 d21, d29, d21
4256 .long 0xf24b2da2 // vadd.f32 d18, d27, d18
4257 .long 0xf35311b7 // vbsl d17, d19, d23
4258 .long 0xf35041b5 // vbsl d20, d16, d21
4259 .long 0xf356a1b2 // vbsl d26, d22, d18
4260 .long 0xf2073c3e // vfma.f32 d3, d7, d30
4261 .long 0xf20c0da1 // vadd.f32 d0, d28, d17
4262 .long 0xf2091da4 // vadd.f32 d1, d25, d20
4263 .long 0xf2082daa // vadd.f32 d2, d24, d26
4264 .long 0xecbd8b06 // vpop {d8-d10}
4265 .long 0xe12fff13 // bx r3
4266
Mike Klein7c4af542017-03-29 18:21:14 -04004267HIDDEN _sk_clamp_0_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004268.globl _sk_clamp_0_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004269FUNCTION(_sk_clamp_0_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004270_sk_clamp_0_vfp4:
4271 .long 0xf2c00010 // vmov.i32 d16, #0
4272 .long 0xe4913004 // ldr r3, [r1], #4
4273 .long 0xf2000f20 // vmax.f32 d0, d0, d16
4274 .long 0xf2011f20 // vmax.f32 d1, d1, d16
4275 .long 0xf2022f20 // vmax.f32 d2, d2, d16
4276 .long 0xf2033f20 // vmax.f32 d3, d3, d16
4277 .long 0xe12fff13 // bx r3
4278
Mike Klein7c4af542017-03-29 18:21:14 -04004279HIDDEN _sk_clamp_1_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004280.globl _sk_clamp_1_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004281FUNCTION(_sk_clamp_1_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004282_sk_clamp_1_vfp4:
4283 .long 0xf2c70f10 // vmov.f32 d16, #1
4284 .long 0xe4913004 // ldr r3, [r1], #4
4285 .long 0xf2200f20 // vmin.f32 d0, d0, d16
4286 .long 0xf2211f20 // vmin.f32 d1, d1, d16
4287 .long 0xf2222f20 // vmin.f32 d2, d2, d16
4288 .long 0xf2233f20 // vmin.f32 d3, d3, d16
4289 .long 0xe12fff13 // bx r3
4290
Mike Klein7c4af542017-03-29 18:21:14 -04004291HIDDEN _sk_clamp_a_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004292.globl _sk_clamp_a_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004293FUNCTION(_sk_clamp_a_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004294_sk_clamp_a_vfp4:
4295 .long 0xf2c70f10 // vmov.f32 d16, #1
4296 .long 0xe4913004 // ldr r3, [r1], #4
4297 .long 0xf2233f20 // vmin.f32 d3, d3, d16
4298 .long 0xf2200f03 // vmin.f32 d0, d0, d3
4299 .long 0xf2211f03 // vmin.f32 d1, d1, d3
4300 .long 0xf2222f03 // vmin.f32 d2, d2, d3
4301 .long 0xe12fff13 // bx r3
4302
Mike Klein7c4af542017-03-29 18:21:14 -04004303HIDDEN _sk_set_rgb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004304.globl _sk_set_rgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004305FUNCTION(_sk_set_rgb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004306_sk_set_rgb_vfp4:
4307 .long 0xe92d4800 // push {fp, lr}
4308 .long 0xe8911008 // ldm r1, {r3, ip}
4309 .long 0xe2811008 // add r1, r1, #8
4310 .long 0xe283e008 // add lr, r3, #8
4311 .long 0xf4a30c9d // vld1.32 {d0[]}, [r3 :32]!
4312 .long 0xf4ae2c9f // vld1.32 {d2[]}, [lr :32]
4313 .long 0xf4a31c9f // vld1.32 {d1[]}, [r3 :32]
4314 .long 0xe8bd4800 // pop {fp, lr}
4315 .long 0xe12fff1c // bx ip
4316
Mike Klein7c4af542017-03-29 18:21:14 -04004317HIDDEN _sk_swap_rb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004318.globl _sk_swap_rb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004319FUNCTION(_sk_swap_rb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004320_sk_swap_rb_vfp4:
4321 .long 0xeef00b40 // vmov.f64 d16, d0
4322 .long 0xe4913004 // ldr r3, [r1], #4
4323 .long 0xeeb00b42 // vmov.f64 d0, d2
4324 .long 0xeeb02b60 // vmov.f64 d2, d16
4325 .long 0xe12fff13 // bx r3
4326
Mike Klein7c4af542017-03-29 18:21:14 -04004327HIDDEN _sk_swap_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004328.globl _sk_swap_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004329FUNCTION(_sk_swap_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004330_sk_swap_vfp4:
4331 .long 0xeef00b43 // vmov.f64 d16, d3
4332 .long 0xe4913004 // ldr r3, [r1], #4
4333 .long 0xeef01b42 // vmov.f64 d17, d2
4334 .long 0xeef02b41 // vmov.f64 d18, d1
4335 .long 0xeef03b40 // vmov.f64 d19, d0
4336 .long 0xeeb00b44 // vmov.f64 d0, d4
4337 .long 0xeeb01b45 // vmov.f64 d1, d5
4338 .long 0xeeb02b46 // vmov.f64 d2, d6
4339 .long 0xeeb03b47 // vmov.f64 d3, d7
4340 .long 0xeeb04b63 // vmov.f64 d4, d19
4341 .long 0xeeb05b62 // vmov.f64 d5, d18
4342 .long 0xeeb06b61 // vmov.f64 d6, d17
4343 .long 0xeeb07b60 // vmov.f64 d7, d16
4344 .long 0xe12fff13 // bx r3
4345
Mike Klein7c4af542017-03-29 18:21:14 -04004346HIDDEN _sk_move_src_dst_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004347.globl _sk_move_src_dst_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004348FUNCTION(_sk_move_src_dst_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004349_sk_move_src_dst_vfp4:
4350 .long 0xeeb04b40 // vmov.f64 d4, d0
4351 .long 0xe4913004 // ldr r3, [r1], #4
4352 .long 0xeeb05b41 // vmov.f64 d5, d1
4353 .long 0xeeb06b42 // vmov.f64 d6, d2
4354 .long 0xeeb07b43 // vmov.f64 d7, d3
4355 .long 0xe12fff13 // bx r3
4356
Mike Klein7c4af542017-03-29 18:21:14 -04004357HIDDEN _sk_move_dst_src_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004358.globl _sk_move_dst_src_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004359FUNCTION(_sk_move_dst_src_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004360_sk_move_dst_src_vfp4:
4361 .long 0xeeb00b44 // vmov.f64 d0, d4
4362 .long 0xe4913004 // ldr r3, [r1], #4
4363 .long 0xeeb01b45 // vmov.f64 d1, d5
4364 .long 0xeeb02b46 // vmov.f64 d2, d6
4365 .long 0xeeb03b47 // vmov.f64 d3, d7
4366 .long 0xe12fff13 // bx r3
4367
Mike Klein7c4af542017-03-29 18:21:14 -04004368HIDDEN _sk_premul_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004369.globl _sk_premul_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004370FUNCTION(_sk_premul_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004371_sk_premul_vfp4:
4372 .long 0xf3000d13 // vmul.f32 d0, d0, d3
4373 .long 0xe4913004 // ldr r3, [r1], #4
4374 .long 0xf3011d13 // vmul.f32 d1, d1, d3
4375 .long 0xf3022d13 // vmul.f32 d2, d2, d3
4376 .long 0xe12fff13 // bx r3
4377
Mike Klein7c4af542017-03-29 18:21:14 -04004378HIDDEN _sk_unpremul_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004379.globl _sk_unpremul_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004380FUNCTION(_sk_unpremul_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004381_sk_unpremul_vfp4:
4382 .long 0xed2d8b04 // vpush {d8-d9}
4383 .long 0xeeb78a00 // vmov.f32 s16, #112
4384 .long 0xf3f91503 // vceq.f32 d17, d3, #0
4385 .long 0xf2c00010 // vmov.i32 d16, #0
4386 .long 0xe4913004 // ldr r3, [r1], #4
4387 .long 0xeec89a23 // vdiv.f32 s19, s16, s7
4388 .long 0xee889a03 // vdiv.f32 s18, s16, s6
4389 .long 0xf3501199 // vbsl d17, d16, d9
4390 .long 0xf3010d90 // vmul.f32 d0, d17, d0
4391 .long 0xf3011d91 // vmul.f32 d1, d17, d1
4392 .long 0xf3012d92 // vmul.f32 d2, d17, d2
4393 .long 0xecbd8b04 // vpop {d8-d9}
4394 .long 0xe12fff13 // bx r3
Mike Klein61b84162017-03-31 11:48:14 -04004395 .long 0xe320f000 // nop {0}
Mike Kleind7e06ae2017-03-29 16:33:06 -04004396
Mike Klein7c4af542017-03-29 18:21:14 -04004397HIDDEN _sk_from_srgb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004398.globl _sk_from_srgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004399FUNCTION(_sk_from_srgb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004400_sk_from_srgb_vfp4:
4401 .long 0xeddf3b20 // vldr d19, [pc, #128]
4402 .long 0xf3408d10 // vmul.f32 d24, d0, d0
4403 .long 0xeddf0b1c // vldr d16, [pc, #112]
4404 .long 0xf26341b3 // vorr d20, d19, d19
4405 .long 0xf26351b3 // vorr d21, d19, d19
4406 .long 0xeddf9b1f // vldr d25, [pc, #124]
4407 .long 0xf2404c30 // vfma.f32 d20, d0, d16
4408 .long 0xeddf2b1b // vldr d18, [pc, #108]
4409 .long 0xf2415c30 // vfma.f32 d21, d1, d16
4410 .long 0xeddfcb1d // vldr d28, [pc, #116]
4411 .long 0xf2423c30 // vfma.f32 d19, d2, d16
4412 .long 0xe4913004 // ldr r3, [r1], #4
4413 .long 0xf3426d12 // vmul.f32 d22, d2, d2
4414 .long 0xf3417d11 // vmul.f32 d23, d1, d1
4415 .long 0xf3620e80 // vcgt.f32 d16, d18, d0
4416 .long 0xf3621e81 // vcgt.f32 d17, d18, d1
4417 .long 0xf341ad39 // vmul.f32 d26, d1, d25
4418 .long 0xf342bd39 // vmul.f32 d27, d2, d25
4419 .long 0xf3622e82 // vcgt.f32 d18, d18, d2
4420 .long 0xf3409d39 // vmul.f32 d25, d0, d25
4421 .long 0xf26cd1bc // vorr d29, d28, d28
4422 .long 0xf248dcb4 // vfma.f32 d29, d24, d20
4423 .long 0xf26c41bc // vorr d20, d28, d28
4424 .long 0xf2474cb5 // vfma.f32 d20, d23, d21
4425 .long 0xf246ccb3 // vfma.f32 d28, d22, d19
4426 .long 0xf35901bd // vbsl d16, d25, d29
4427 .long 0xf35a11b4 // vbsl d17, d26, d20
4428 .long 0xf35b21bc // vbsl d18, d27, d28
4429 .long 0xf22001b0 // vorr d0, d16, d16
4430 .long 0xf22111b1 // vorr d1, d17, d17
4431 .long 0xf22221b2 // vorr d2, d18, d18
4432 .long 0xe12fff13 // bx r3
4433 .long 0x3e99999a // .word 0x3e99999a
4434 .long 0x3e99999a // .word 0x3e99999a
4435 .long 0x3f328f5c // .word 0x3f328f5c
4436 .long 0x3f328f5c // .word 0x3f328f5c
4437 .long 0x3d6147ae // .word 0x3d6147ae
4438 .long 0x3d6147ae // .word 0x3d6147ae
4439 .long 0x3d9e8391 // .word 0x3d9e8391
4440 .long 0x3d9e8391 // .word 0x3d9e8391
4441 .long 0x3b23d70a // .word 0x3b23d70a
4442 .long 0x3b23d70a // .word 0x3b23d70a
4443
Mike Klein7c4af542017-03-29 18:21:14 -04004444HIDDEN _sk_to_srgb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004445.globl _sk_to_srgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004446FUNCTION(_sk_to_srgb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004447_sk_to_srgb_vfp4:
4448 .long 0xf3fb0582 // vrsqrte.f32 d16, d2
4449 .long 0xe4913004 // ldr r3, [r1], #4
4450 .long 0xf3fb1581 // vrsqrte.f32 d17, d1
4451 .long 0xf3fb2580 // vrsqrte.f32 d18, d0
4452 .long 0xf3403db0 // vmul.f32 d19, d16, d16
4453 .long 0xf3414db1 // vmul.f32 d20, d17, d17
4454 .long 0xf3425db2 // vmul.f32 d21, d18, d18
4455 .long 0xf2623f33 // vrsqrts.f32 d19, d2, d19
4456 .long 0xf2614f34 // vrsqrts.f32 d20, d1, d20
4457 .long 0xf2605f35 // vrsqrts.f32 d21, d0, d21
4458 .long 0xf3400db3 // vmul.f32 d16, d16, d19
4459 .long 0xf3411db4 // vmul.f32 d17, d17, d20
4460 .long 0xf3422db5 // vmul.f32 d18, d18, d21
4461 .long 0xf3fb3520 // vrecpe.f32 d19, d16
4462 .long 0xf3fb4521 // vrecpe.f32 d20, d17
4463 .long 0xf3fb6522 // vrecpe.f32 d22, d18
4464 .long 0xf3fb55a0 // vrsqrte.f32 d21, d16
4465 .long 0xf3fb75a1 // vrsqrte.f32 d23, d17
4466 .long 0xf3fb85a2 // vrsqrte.f32 d24, d18
4467 .long 0xf2409fb3 // vrecps.f32 d25, d16, d19
4468 .long 0xf241afb4 // vrecps.f32 d26, d17, d20
4469 .long 0xf242bfb6 // vrecps.f32 d27, d18, d22
4470 .long 0xf345cdb5 // vmul.f32 d28, d21, d21
4471 .long 0xf347ddb7 // vmul.f32 d29, d23, d23
4472 .long 0xf348edb8 // vmul.f32 d30, d24, d24
4473 .long 0xf2600fbc // vrsqrts.f32 d16, d16, d28
4474 .long 0xf2611fbd // vrsqrts.f32 d17, d17, d29
4475 .long 0xf2622fbe // vrsqrts.f32 d18, d18, d30
4476 .long 0xf3433db9 // vmul.f32 d19, d19, d25
4477 .long 0xeddf9b21 // vldr d25, [pc, #132]
4478 .long 0xf3444dba // vmul.f32 d20, d20, d26
4479 .long 0xeddfab21 // vldr d26, [pc, #132]
4480 .long 0xf3466dbb // vmul.f32 d22, d22, d27
4481 .long 0xf26ab1ba // vorr d27, d26, d26
4482 .long 0xf243bcb9 // vfma.f32 d27, d19, d25
4483 .long 0xf26a31ba // vorr d19, d26, d26
4484 .long 0xf2443cb9 // vfma.f32 d19, d20, d25
4485 .long 0xeddf4b1d // vldr d20, [pc, #116]
4486 .long 0xf246acb9 // vfma.f32 d26, d22, d25
4487 .long 0xf3450db0 // vmul.f32 d16, d21, d16
4488 .long 0xeddf5b1c // vldr d21, [pc, #112]
4489 .long 0xf3471db1 // vmul.f32 d17, d23, d17
4490 .long 0xf3482db2 // vmul.f32 d18, d24, d18
4491 .long 0xf3406d35 // vmul.f32 d22, d0, d21
4492 .long 0xf240bcb4 // vfma.f32 d27, d16, d20
4493 .long 0xf2413cb4 // vfma.f32 d19, d17, d20
4494 .long 0xf242acb4 // vfma.f32 d26, d18, d20
4495 .long 0xeddf2b17 // vldr d18, [pc, #92]
4496 .long 0xf3417d35 // vmul.f32 d23, d1, d21
4497 .long 0xf3620e80 // vcgt.f32 d16, d18, d0
4498 .long 0xf3621e81 // vcgt.f32 d17, d18, d1
4499 .long 0xf3622e82 // vcgt.f32 d18, d18, d2
4500 .long 0xf3425d35 // vmul.f32 d21, d2, d21
4501 .long 0xf2c74f10 // vmov.f32 d20, #1
4502 .long 0xf2648faa // vmin.f32 d24, d20, d26
4503 .long 0xf2643fa3 // vmin.f32 d19, d20, d19
4504 .long 0xf2644fab // vmin.f32 d20, d20, d27
4505 .long 0xf35601b8 // vbsl d16, d22, d24
4506 .long 0xf35711b3 // vbsl d17, d23, d19
4507 .long 0xf35521b4 // vbsl d18, d21, d20
4508 .long 0xf22001b0 // vorr d0, d16, d16
4509 .long 0xf22111b1 // vorr d1, d17, d17
4510 .long 0xf22221b2 // vorr d2, d18, d18
4511 .long 0xe12fff13 // bx r3
4512 .long 0x3f306fce // .word 0x3f306fce
4513 .long 0x3f306fce // .word 0x3f306fce
4514 .long 0xbdca57a8 // .word 0xbdca57a8
4515 .long 0xbdca57a8 // .word 0xbdca57a8
4516 .long 0x3ed287c2 // .word 0x3ed287c2
4517 .long 0x3ed287c2 // .word 0x3ed287c2
4518 .long 0x41475c29 // .word 0x41475c29
4519 .long 0x41475c29 // .word 0x41475c29
4520 .long 0x3b8ce704 // .word 0x3b8ce704
4521 .long 0x3b8ce704 // .word 0x3b8ce704
4522
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004523HIDDEN _sk_rgb_to_hsl_vfp4
4524.globl _sk_rgb_to_hsl_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004525FUNCTION(_sk_rgb_to_hsl_vfp4)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004526_sk_rgb_to_hsl_vfp4:
4527 .long 0xed2d8b08 // vpush {d8-d11}
4528 .long 0xf2401f01 // vmax.f32 d17, d0, d1
4529 .long 0xeddf9b2c // vldr d25, [pc, #176]
4530 .long 0xf2600f01 // vmin.f32 d16, d0, d1
4531 .long 0xe4913004 // ldr r3, [r1], #4
4532 .long 0xeeb78a00 // vmov.f32 s16, #112
4533 .long 0xf2c3461f // vmov.i32 d20, #1056964608
4534 .long 0xf2411f82 // vmax.f32 d17, d17, d2
4535 .long 0xf2602f82 // vmin.f32 d18, d16, d2
4536 .long 0xf2c45610 // vmov.i32 d21, #1073741824
4537 .long 0xf2607d01 // vsub.f32 d23, d0, d1
4538 .long 0xf2656da1 // vsub.f32 d22, d21, d17
4539 .long 0xf221ada2 // vsub.f32 d10, d17, d18
4540 .long 0xf2413da2 // vadd.f32 d19, d17, d18
4541 .long 0xf2c08010 // vmov.i32 d24, #0
4542 .long 0xf2666da2 // vsub.f32 d22, d22, d18
4543 .long 0xf241ae80 // vceq.f32 d26, d17, d0
4544 .long 0xeec8ba2a // vdiv.f32 s23, s16, s21
4545 .long 0xf3430db4 // vmul.f32 d16, d19, d20
4546 .long 0xee88ba0a // vdiv.f32 s22, s16, s20
4547 .long 0xf3209ea4 // vcgt.f32 d9, d16, d20
4548 .long 0xf2614d02 // vsub.f32 d20, d1, d2
4549 .long 0xf3477d9b // vmul.f32 d23, d23, d11
4550 .long 0xf31691b3 // vbsl d9, d22, d19
4551 .long 0xf2623d00 // vsub.f32 d19, d2, d0
4552 .long 0xf3626e01 // vcgt.f32 d22, d2, d1
4553 .long 0xeeca8aa9 // vdiv.f32 s17, s21, s19
4554 .long 0xee8a8a09 // vdiv.f32 s16, s20, s18
4555 .long 0xf3433d9b // vmul.f32 d19, d19, d11
4556 .long 0xf3444d9b // vmul.f32 d20, d20, d11
4557 .long 0xf35961b8 // vbsl d22, d25, d24
4558 .long 0xf2419e81 // vceq.f32 d25, d17, d1
4559 .long 0xf2011ea2 // vceq.f32 d1, d17, d18
4560 .long 0xf2433da5 // vadd.f32 d19, d19, d21
4561 .long 0xf2c15f10 // vmov.f32 d21, #4
4562 .long 0xf2464da4 // vadd.f32 d20, d22, d20
4563 .long 0xf2471da5 // vadd.f32 d17, d23, d21
4564 .long 0xf35391b1 // vbsl d25, d19, d17
4565 .long 0xeddf1b0a // vldr d17, [pc, #40]
4566 .long 0xf2612111 // vorr d18, d1, d1
4567 .long 0xf354a1b9 // vbsl d26, d20, d25
4568 .long 0xf35821ba // vbsl d18, d24, d26
4569 .long 0xf3181198 // vbsl d1, d24, d8
4570 .long 0xf3020db1 // vmul.f32 d0, d18, d17
4571 .long 0xf22021b0 // vorr d2, d16, d16
4572 .long 0xecbd8b08 // vpop {d8-d11}
4573 .long 0xe12fff13 // bx r3
4574 .long 0xe320f000 // nop {0}
4575 .long 0x40c00000 // .word 0x40c00000
4576 .long 0x40c00000 // .word 0x40c00000
4577 .long 0x3e2aaaab // .word 0x3e2aaaab
4578 .long 0x3e2aaaab // .word 0x3e2aaaab
4579
4580HIDDEN _sk_hsl_to_rgb_vfp4
4581.globl _sk_hsl_to_rgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004582FUNCTION(_sk_hsl_to_rgb_vfp4)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004583_sk_hsl_to_rgb_vfp4:
Mike Kleinb3665f02017-05-01 14:56:04 -04004584 .long 0xed2d8b02 // vpush {d8}
4585 .long 0xf2c71f10 // vmov.f32 d17, #1
4586 .long 0xeddf0b50 // vldr d16, [pc, #320]
4587 .long 0xf2c3261f // vmov.i32 d18, #1056964608
4588 .long 0xeddf9b50 // vldr d25, [pc, #320]
4589 .long 0xf2415d21 // vadd.f32 d21, d1, d17
4590 .long 0xed9f8b52 // vldr d8, [pc, #328]
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004591 .long 0xf3414d12 // vmul.f32 d20, d1, d2
Mike Kleinb3665f02017-05-01 14:56:04 -04004592 .long 0xe4913004 // ldr r3, [r1], #4
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004593 .long 0xf2416d02 // vadd.f32 d22, d1, d2
4594 .long 0xf2407d20 // vadd.f32 d23, d0, d16
Mike Kleinb3665f02017-05-01 14:56:04 -04004595 .long 0xf3620e82 // vcgt.f32 d16, d18, d2
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004596 .long 0xf3455d92 // vmul.f32 d21, d21, d2
4597 .long 0xf2664da4 // vsub.f32 d20, d22, d20
4598 .long 0xf2426d02 // vadd.f32 d22, d2, d2
4599 .long 0xf3c73f10 // vmov.f32 d19, #-1
4600 .long 0xf35501b4 // vbsl d16, d21, d20
4601 .long 0xf2409d29 // vadd.f32 d25, d0, d25
4602 .long 0xf2408d23 // vadd.f32 d24, d0, d19
Mike Kleinb3665f02017-05-01 14:56:04 -04004603 .long 0xf360ae21 // vcgt.f32 d26, d0, d17
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004604 .long 0xf247cda3 // vadd.f32 d28, d23, d19
Mike Kleinb3665f02017-05-01 14:56:04 -04004605 .long 0xf367dea1 // vcgt.f32 d29, d23, d17
4606 .long 0xf240bd21 // vadd.f32 d27, d0, d17
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004607 .long 0xf2666da0 // vsub.f32 d22, d22, d16
Mike Kleinb3665f02017-05-01 14:56:04 -04004608 .long 0xf2474da1 // vadd.f32 d20, d23, d17
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004609 .long 0xf358a190 // vbsl d26, d24, d0
4610 .long 0xf3f98600 // vclt.f32 d24, d0, #0
Mike Kleinb3665f02017-05-01 14:56:04 -04004611 .long 0xf3695ea1 // vcgt.f32 d21, d25, d17
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004612 .long 0xf2493da3 // vadd.f32 d19, d25, d19
4613 .long 0xf35b81ba // vbsl d24, d27, d26
Mike Kleinb3665f02017-05-01 14:56:04 -04004614 .long 0xeddfbb38 // vldr d27, [pc, #224]
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004615 .long 0xf35cd1b7 // vbsl d29, d28, d23
Mike Kleinb3665f02017-05-01 14:56:04 -04004616 .long 0xf3f97627 // vclt.f32 d23, d23, #0
4617 .long 0xf2491da1 // vadd.f32 d17, d25, d17
4618 .long 0xf260ada6 // vsub.f32 d26, d16, d22
4619 .long 0xf35471bd // vbsl d23, d20, d29
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004620 .long 0xf2c14f18 // vmov.f32 d20, #6
4621 .long 0xf35351b9 // vbsl d21, d19, d25
Mike Kleinb3665f02017-05-01 14:56:04 -04004622 .long 0xf3f99629 // vclt.f32 d25, d25, #0
4623 .long 0xf26bcda7 // vsub.f32 d28, d27, d23
4624 .long 0xf35191b5 // vbsl d25, d17, d21
4625 .long 0xf34a1db4 // vmul.f32 d17, d26, d20
4626 .long 0xf26b3da8 // vsub.f32 d19, d27, d24
4627 .long 0xf26b4da9 // vsub.f32 d20, d27, d25
4628 .long 0xf36beea8 // vcgt.f32 d30, d27, d24
4629 .long 0xf3415dbc // vmul.f32 d21, d17, d28
4630 .long 0xf36bcea7 // vcgt.f32 d28, d27, d23
4631 .long 0xf3413db3 // vmul.f32 d19, d17, d19
4632 .long 0xf3444db1 // vmul.f32 d20, d20, d17
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004633 .long 0xf2465da5 // vadd.f32 d21, d22, d21
Mike Kleinb3665f02017-05-01 14:56:04 -04004634 .long 0xf341ddb8 // vmul.f32 d29, d17, d24
4635 .long 0xf341adb7 // vmul.f32 d26, d17, d23
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004636 .long 0xf2463da3 // vadd.f32 d19, d22, d19
Mike Kleinb3665f02017-05-01 14:56:04 -04004637 .long 0xf3220ea8 // vcgt.f32 d0, d18, d24
4638 .long 0xf3491db1 // vmul.f32 d17, d25, d17
4639 .long 0xf355c1b6 // vbsl d28, d21, d22
4640 .long 0xf3685e28 // vcgt.f32 d21, d8, d24
4641 .long 0xf36bbea9 // vcgt.f32 d27, d27, d25
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004642 .long 0xf2464da4 // vadd.f32 d20, d22, d20
Mike Kleinb3665f02017-05-01 14:56:04 -04004643 .long 0xf2468dad // vadd.f32 d24, d22, d29
4644 .long 0xf362fea7 // vcgt.f32 d31, d18, d23
4645 .long 0xf3622ea9 // vcgt.f32 d18, d18, d25
4646 .long 0xf353e1b6 // vbsl d30, d19, d22
4647 .long 0xf3687e27 // vcgt.f32 d23, d8, d23
4648 .long 0xf246adaa // vadd.f32 d26, d22, d26
4649 .long 0xf31001be // vbsl d0, d16, d30
4650 .long 0xf354b1b6 // vbsl d27, d20, d22
4651 .long 0xf3585190 // vbsl d21, d24, d0
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004652 .long 0xf3b90501 // vceq.f32 d0, d1, #0
Mike Kleinb3665f02017-05-01 14:56:04 -04004653 .long 0xf3683e29 // vcgt.f32 d19, d8, d25
4654 .long 0xf2461da1 // vadd.f32 d17, d22, d17
4655 .long 0xf350f1bc // vbsl d31, d16, d28
4656 .long 0xf35021bb // vbsl d18, d16, d27
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004657 .long 0xf2600110 // vorr d16, d0, d0
Mike Kleinb3665f02017-05-01 14:56:04 -04004658 .long 0xf35a71bf // vbsl d23, d26, d31
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004659 .long 0xf2201110 // vorr d1, d0, d0
Mike Kleinb3665f02017-05-01 14:56:04 -04004660 .long 0xf3520137 // vbsl d16, d2, d23
4661 .long 0xf35131b2 // vbsl d19, d17, d18
4662 .long 0xf3121135 // vbsl d1, d2, d21
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004663 .long 0xf3120133 // vbsl d0, d2, d19
4664 .long 0xf22021b0 // vorr d2, d16, d16
Mike Kleinb3665f02017-05-01 14:56:04 -04004665 .long 0xecbd8b02 // vpop {d8}
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004666 .long 0xe12fff13 // bx r3
4667 .long 0xe320f000 // nop {0}
4668 .long 0xbeaaaaab // .word 0xbeaaaaab
4669 .long 0xbeaaaaab // .word 0xbeaaaaab
4670 .long 0x3eaaaaab // .word 0x3eaaaaab
4671 .long 0x3eaaaaab // .word 0x3eaaaaab
4672 .long 0x3f2aaaab // .word 0x3f2aaaab
4673 .long 0x3f2aaaab // .word 0x3f2aaaab
4674 .long 0x3e2aaaab // .word 0x3e2aaaab
4675 .long 0x3e2aaaab // .word 0x3e2aaaab
Mike Klein7125ac62017-04-05 15:27:22 -04004676
Mike Klein7c4af542017-03-29 18:21:14 -04004677HIDDEN _sk_scale_1_float_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004678.globl _sk_scale_1_float_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004679FUNCTION(_sk_scale_1_float_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004680_sk_scale_1_float_vfp4:
4681 .long 0xe8911008 // ldm r1, {r3, ip}
4682 .long 0xe2811008 // add r1, r1, #8
4683 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
4684 .long 0xf3000d90 // vmul.f32 d0, d16, d0
4685 .long 0xf3001d91 // vmul.f32 d1, d16, d1
4686 .long 0xf3002d92 // vmul.f32 d2, d16, d2
4687 .long 0xf3003d93 // vmul.f32 d3, d16, d3
4688 .long 0xe12fff1c // bx ip
4689
Mike Klein7c4af542017-03-29 18:21:14 -04004690HIDDEN _sk_scale_u8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004691.globl _sk_scale_u8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004692FUNCTION(_sk_scale_u8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004693_sk_scale_u8_vfp4:
4694 .long 0xe24dd004 // sub sp, sp, #4
4695 .long 0xe8911008 // ldm r1, {r3, ip}
4696 .long 0xe2811008 // add r1, r1, #8
4697 .long 0xe5933000 // ldr r3, [r3]
4698 .long 0xe0833000 // add r3, r3, r0
4699 .long 0xe1d330b0 // ldrh r3, [r3]
4700 .long 0xe1cd30b0 // strh r3, [sp]
4701 .long 0xe1a0300d // mov r3, sp
4702 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
4703 .long 0xf3c80a30 // vmovl.u8 q8, d16
4704 .long 0xf3d00a30 // vmovl.u16 q8, d16
4705 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
4706 .long 0xeddf1b06 // vldr d17, [pc, #24]
4707 .long 0xf3400db1 // vmul.f32 d16, d16, d17
4708 .long 0xf3000d90 // vmul.f32 d0, d16, d0
4709 .long 0xf3001d91 // vmul.f32 d1, d16, d1
4710 .long 0xf3002d92 // vmul.f32 d2, d16, d2
4711 .long 0xf3003d93 // vmul.f32 d3, d16, d3
4712 .long 0xe28dd004 // add sp, sp, #4
4713 .long 0xe12fff1c // bx ip
4714 .long 0x3b808081 // .word 0x3b808081
4715 .long 0x3b808081 // .word 0x3b808081
4716
Mike Klein7c4af542017-03-29 18:21:14 -04004717HIDDEN _sk_lerp_1_float_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004718.globl _sk_lerp_1_float_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004719FUNCTION(_sk_lerp_1_float_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004720_sk_lerp_1_float_vfp4:
4721 .long 0xe8911008 // ldm r1, {r3, ip}
4722 .long 0xf2600d04 // vsub.f32 d16, d0, d4
4723 .long 0xf2611d05 // vsub.f32 d17, d1, d5
4724 .long 0xf2622d06 // vsub.f32 d18, d2, d6
4725 .long 0xe2811008 // add r1, r1, #8
4726 .long 0xf2633d07 // vsub.f32 d19, d3, d7
4727 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
4728 .long 0xf2240114 // vorr d0, d4, d4
4729 .long 0xf2251115 // vorr d1, d5, d5
4730 .long 0xf2262116 // vorr d2, d6, d6
4731 .long 0xf2273117 // vorr d3, d7, d7
4732 .long 0xf2000cb4 // vfma.f32 d0, d16, d20
4733 .long 0xf2011cb4 // vfma.f32 d1, d17, d20
4734 .long 0xf2022cb4 // vfma.f32 d2, d18, d20
4735 .long 0xf2033cb4 // vfma.f32 d3, d19, d20
4736 .long 0xe12fff1c // bx ip
4737
Mike Klein7c4af542017-03-29 18:21:14 -04004738HIDDEN _sk_lerp_u8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004739.globl _sk_lerp_u8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004740FUNCTION(_sk_lerp_u8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004741_sk_lerp_u8_vfp4:
4742 .long 0xe24dd004 // sub sp, sp, #4
4743 .long 0xe8911008 // ldm r1, {r3, ip}
4744 .long 0xf2602d04 // vsub.f32 d18, d0, d4
4745 .long 0xf2623d06 // vsub.f32 d19, d2, d6
4746 .long 0xf2634d07 // vsub.f32 d20, d3, d7
4747 .long 0xe2811008 // add r1, r1, #8
4748 .long 0xe5933000 // ldr r3, [r3]
4749 .long 0xf2240114 // vorr d0, d4, d4
4750 .long 0xf2262116 // vorr d2, d6, d6
4751 .long 0xe0833000 // add r3, r3, r0
4752 .long 0xf2273117 // vorr d3, d7, d7
4753 .long 0xe1d330b0 // ldrh r3, [r3]
4754 .long 0xe1cd30b0 // strh r3, [sp]
4755 .long 0xe1a0300d // mov r3, sp
4756 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
4757 .long 0xf3c80a30 // vmovl.u8 q8, d16
4758 .long 0xf3d00a30 // vmovl.u16 q8, d16
4759 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
4760 .long 0xeddf1b08 // vldr d17, [pc, #32]
4761 .long 0xf3400db1 // vmul.f32 d16, d16, d17
4762 .long 0xf2611d05 // vsub.f32 d17, d1, d5
4763 .long 0xf2251115 // vorr d1, d5, d5
4764 .long 0xf2020cb0 // vfma.f32 d0, d18, d16
4765 .long 0xf2011cb0 // vfma.f32 d1, d17, d16
4766 .long 0xf2032cb0 // vfma.f32 d2, d19, d16
4767 .long 0xf2043cb0 // vfma.f32 d3, d20, d16
4768 .long 0xe28dd004 // add sp, sp, #4
4769 .long 0xe12fff1c // bx ip
4770 .long 0x3b808081 // .word 0x3b808081
4771 .long 0x3b808081 // .word 0x3b808081
4772
Mike Klein7c4af542017-03-29 18:21:14 -04004773HIDDEN _sk_lerp_565_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004774.globl _sk_lerp_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004775FUNCTION(_sk_lerp_565_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004776_sk_lerp_565_vfp4:
4777 .long 0xe24dd004 // sub sp, sp, #4
4778 .long 0xe8911008 // ldm r1, {r3, ip}
4779 .long 0xf3c72218 // vmov.i32 d18, #63488
4780 .long 0xf2c1101f // vmov.i32 d17, #31
4781 .long 0xf2603d04 // vsub.f32 d19, d0, d4
4782 .long 0xe2811008 // add r1, r1, #8
4783 .long 0xe5933000 // ldr r3, [r3]
4784 .long 0xf2616d05 // vsub.f32 d22, d1, d5
4785 .long 0xf2240114 // vorr d0, d4, d4
4786 .long 0xf2251115 // vorr d1, d5, d5
4787 .long 0xe7933080 // ldr r3, [r3, r0, lsl #1]
4788 .long 0xf2873f10 // vmov.f32 d3, #1
4789 .long 0xe58d3000 // str r3, [sp]
4790 .long 0xe1a0300d // mov r3, sp
4791 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
4792 .long 0xe3a03e7e // mov r3, #2016
4793 .long 0xf3d04a30 // vmovl.u16 q10, d16
4794 .long 0xee803b90 // vdup.32 d16, r3
4795 .long 0xf24421b2 // vand d18, d20, d18
4796 .long 0xf24411b1 // vand d17, d20, d17
4797 .long 0xeddf5b12 // vldr d21, [pc, #72]
4798 .long 0xf24401b0 // vand d16, d20, d16
4799 .long 0xeddf4b0e // vldr d20, [pc, #56]
4800 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
4801 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
4802 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
4803 .long 0xf3422db4 // vmul.f32 d18, d18, d20
4804 .long 0xeddf4b0d // vldr d20, [pc, #52]
4805 .long 0xf3400db5 // vmul.f32 d16, d16, d21
4806 .long 0xf2625d06 // vsub.f32 d21, d2, d6
4807 .long 0xf3411db4 // vmul.f32 d17, d17, d20
4808 .long 0xf2262116 // vorr d2, d6, d6
4809 .long 0xf2030cb2 // vfma.f32 d0, d19, d18
4810 .long 0xf2061cb0 // vfma.f32 d1, d22, d16
4811 .long 0xf2052cb1 // vfma.f32 d2, d21, d17
4812 .long 0xe28dd004 // add sp, sp, #4
4813 .long 0xe12fff1c // bx ip
4814 .long 0xe320f000 // nop {0}
4815 .long 0x37842108 // .word 0x37842108
4816 .long 0x37842108 // .word 0x37842108
4817 .long 0x3a020821 // .word 0x3a020821
4818 .long 0x3a020821 // .word 0x3a020821
4819 .long 0x3d042108 // .word 0x3d042108
4820 .long 0x3d042108 // .word 0x3d042108
4821
Mike Klein7c4af542017-03-29 18:21:14 -04004822HIDDEN _sk_load_tables_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004823.globl _sk_load_tables_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004824FUNCTION(_sk_load_tables_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004825_sk_load_tables_vfp4:
4826 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
4827 .long 0xe8911008 // ldm r1, {r3, ip}
4828 .long 0xf3c7001f // vmov.i32 d16, #255
4829 .long 0xe2811008 // add r1, r1, #8
4830 .long 0xe593e000 // ldr lr, [r3]
4831 .long 0xe99300b0 // ldmib r3, {r4, r5, r7}
4832 .long 0xe08e3100 // add r3, lr, r0, lsl #2
4833 .long 0xedd31b00 // vldr d17, [r3]
4834 .long 0xf24121b0 // vand d18, d17, d16
4835 .long 0xf3f83031 // vshr.u32 d19, d17, #8
4836 .long 0xee323b90 // vmov.32 r3, d18[1]
4837 .long 0xee126b90 // vmov.32 r6, d18[0]
4838 .long 0xf3f02031 // vshr.u32 d18, d17, #16
4839 .long 0xf24221b0 // vand d18, d18, d16
4840 .long 0xf24301b0 // vand d16, d19, d16
4841 .long 0xe0843103 // add r3, r4, r3, lsl #2
4842 .long 0xedd30a00 // vldr s1, [r3]
4843 .long 0xe0843106 // add r3, r4, r6, lsl #2
4844 .long 0xee326b90 // vmov.32 r6, d18[1]
4845 .long 0xed930a00 // vldr s0, [r3]
4846 .long 0xee303b90 // vmov.32 r3, d16[1]
4847 .long 0xee104b90 // vmov.32 r4, d16[0]
4848 .long 0xf3e80031 // vshr.u32 d16, d17, #24
4849 .long 0xeddf1b0d // vldr d17, [pc, #52]
4850 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
4851 .long 0xf3003db1 // vmul.f32 d3, d16, d17
4852 .long 0xe087e106 // add lr, r7, r6, lsl #2
4853 .long 0xee126b90 // vmov.32 r6, d18[0]
4854 .long 0xe0853103 // add r3, r5, r3, lsl #2
4855 .long 0xedde2a00 // vldr s5, [lr]
4856 .long 0xedd31a00 // vldr s3, [r3]
4857 .long 0xe0853104 // add r3, r5, r4, lsl #2
4858 .long 0xed931a00 // vldr s2, [r3]
4859 .long 0xe0873106 // add r3, r7, r6, lsl #2
4860 .long 0xed932a00 // vldr s4, [r3]
4861 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
4862 .long 0xe12fff1c // bx ip
4863 .long 0xe320f000 // nop {0}
4864 .long 0x3b808081 // .word 0x3b808081
4865 .long 0x3b808081 // .word 0x3b808081
4866
Mike Kleina3735cd2017-04-17 13:19:05 -04004867HIDDEN _sk_load_tables_u16_be_vfp4
4868.globl _sk_load_tables_u16_be_vfp4
4869FUNCTION(_sk_load_tables_u16_be_vfp4)
4870_sk_load_tables_u16_be_vfp4:
4871 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
4872 .long 0xe8911008 // ldm r1, {r3, ip}
4873 .long 0xf3c7801f // vmov.i32 d24, #255
4874 .long 0xe2811008 // add r1, r1, #8
4875 .long 0xe5936000 // ldr r6, [r3]
4876 .long 0xe9934030 // ldmib r3, {r4, r5, lr}
4877 .long 0xe0863180 // add r3, r6, r0, lsl #3
4878 .long 0xf4e3070d // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]!
4879 .long 0xf4e3074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3]
4880 .long 0xee903bb0 // vmov.u16 r3, d16[0]
4881 .long 0xee926bb0 // vmov.u16 r6, d18[0]
4882 .long 0xee043b90 // vmov.32 d20[0], r3
4883 .long 0xee913bb0 // vmov.u16 r3, d17[0]
4884 .long 0xee056b90 // vmov.32 d21[0], r6
4885 .long 0xee906bf0 // vmov.u16 r6, d16[1]
4886 .long 0xee063b90 // vmov.32 d22[0], r3
4887 .long 0xee933bb0 // vmov.u16 r3, d19[0]
4888 .long 0xee246b90 // vmov.32 d20[1], r6
4889 .long 0xee926bf0 // vmov.u16 r6, d18[1]
4890 .long 0xf24441b8 // vand d20, d20, d24
4891 .long 0xee073b90 // vmov.32 d23[0], r3
4892 .long 0xee913bf0 // vmov.u16 r3, d17[1]
4893 .long 0xee256b90 // vmov.32 d21[1], r6
4894 .long 0xee936bf0 // vmov.u16 r6, d19[1]
4895 .long 0xf24501b8 // vand d16, d21, d24
4896 .long 0xee107b90 // vmov.32 r7, d16[0]
4897 .long 0xee263b90 // vmov.32 d22[1], r3
4898 .long 0xee343b90 // vmov.32 r3, d20[1]
4899 .long 0xf24611b8 // vand d17, d22, d24
4900 .long 0xee276b90 // vmov.32 d23[1], r6
4901 .long 0xee146b90 // vmov.32 r6, d20[0]
4902 .long 0xf2e82537 // vshl.s32 d18, d23, #8
4903 .long 0xe0843103 // add r3, r4, r3, lsl #2
4904 .long 0xedd30a00 // vldr s1, [r3]
4905 .long 0xe0843106 // add r3, r4, r6, lsl #2
4906 .long 0xee304b90 // vmov.32 r4, d16[1]
4907 .long 0xee116b90 // vmov.32 r6, d17[0]
4908 .long 0xf3c70c1f // vmov.i32 d16, #65535
4909 .long 0xed930a00 // vldr s0, [r3]
4910 .long 0xee313b90 // vmov.32 r3, d17[1]
4911 .long 0xf24711b0 // vand d17, d23, d16
4912 .long 0xf3f81031 // vshr.u32 d17, d17, #8
4913 .long 0xf26211b1 // vorr d17, d18, d17
4914 .long 0xf24101b0 // vand d16, d17, d16
4915 .long 0xeddf1b0c // vldr d17, [pc, #48]
4916 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
4917 .long 0xf3003db1 // vmul.f32 d3, d16, d17
4918 .long 0xe08e4104 // add r4, lr, r4, lsl #2
4919 .long 0xedd42a00 // vldr s5, [r4]
4920 .long 0xe0853103 // add r3, r5, r3, lsl #2
4921 .long 0xedd31a00 // vldr s3, [r3]
4922 .long 0xe0853106 // add r3, r5, r6, lsl #2
4923 .long 0xed931a00 // vldr s2, [r3]
4924 .long 0xe08e3107 // add r3, lr, r7, lsl #2
4925 .long 0xed932a00 // vldr s4, [r3]
4926 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
4927 .long 0xe12fff1c // bx ip
4928 .long 0xe320f000 // nop {0}
4929 .long 0x37800080 // .word 0x37800080
4930 .long 0x37800080 // .word 0x37800080
4931
4932HIDDEN _sk_load_tables_rgb_u16_be_vfp4
4933.globl _sk_load_tables_rgb_u16_be_vfp4
4934FUNCTION(_sk_load_tables_rgb_u16_be_vfp4)
4935_sk_load_tables_rgb_u16_be_vfp4:
4936 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
4937 .long 0xe8911008 // ldm r1, {r3, ip}
4938 .long 0xf3c7601f // vmov.i32 d22, #255
4939 .long 0xe2811008 // add r1, r1, #8
4940 .long 0xf2873f10 // vmov.f32 d3, #1
4941 .long 0xe5936000 // ldr r6, [r3]
4942 .long 0xe9934030 // ldmib r3, {r4, r5, lr}
4943 .long 0xe0803080 // add r3, r0, r0, lsl #1
4944 .long 0xe0863083 // add r3, r6, r3, lsl #1
4945 .long 0xf4e3060d // vld3.16 {d16[0],d17[0],d18[0]}, [r3]!
4946 .long 0xf4e3064f // vld3.16 {d16[1],d17[1],d18[1]}, [r3]
4947 .long 0xee903bb0 // vmov.u16 r3, d16[0]
4948 .long 0xee926bb0 // vmov.u16 r6, d18[0]
4949 .long 0xee043b90 // vmov.32 d20[0], r3
4950 .long 0xee903bf0 // vmov.u16 r3, d16[1]
4951 .long 0xee056b90 // vmov.32 d21[0], r6
4952 .long 0xee916bb0 // vmov.u16 r6, d17[0]
4953 .long 0xee243b90 // vmov.32 d20[1], r3
4954 .long 0xee923bf0 // vmov.u16 r3, d18[1]
4955 .long 0xf24441b6 // vand d20, d20, d22
4956 .long 0xee076b90 // vmov.32 d23[0], r6
4957 .long 0xee916bf0 // vmov.u16 r6, d17[1]
4958 .long 0xee253b90 // vmov.32 d21[1], r3
4959 .long 0xee343b90 // vmov.32 r3, d20[1]
4960 .long 0xf24501b6 // vand d16, d21, d22
4961 .long 0xee276b90 // vmov.32 d23[1], r6
4962 .long 0xee146b90 // vmov.32 r6, d20[0]
4963 .long 0xf24711b6 // vand d17, d23, d22
4964 .long 0xee107b90 // vmov.32 r7, d16[0]
4965 .long 0xe0843103 // add r3, r4, r3, lsl #2
4966 .long 0xedd30a00 // vldr s1, [r3]
4967 .long 0xe0843106 // add r3, r4, r6, lsl #2
4968 .long 0xee304b90 // vmov.32 r4, d16[1]
4969 .long 0xee116b90 // vmov.32 r6, d17[0]
4970 .long 0xed930a00 // vldr s0, [r3]
4971 .long 0xee313b90 // vmov.32 r3, d17[1]
4972 .long 0xe08e4104 // add r4, lr, r4, lsl #2
4973 .long 0xedd42a00 // vldr s5, [r4]
4974 .long 0xe0853103 // add r3, r5, r3, lsl #2
4975 .long 0xedd31a00 // vldr s3, [r3]
4976 .long 0xe0853106 // add r3, r5, r6, lsl #2
4977 .long 0xed931a00 // vldr s2, [r3]
4978 .long 0xe08e3107 // add r3, lr, r7, lsl #2
4979 .long 0xed932a00 // vldr s4, [r3]
4980 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
4981 .long 0xe12fff1c // bx ip
4982
Mike Klein40de6da2017-04-07 13:09:29 -04004983HIDDEN _sk_byte_tables_vfp4
4984.globl _sk_byte_tables_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004985FUNCTION(_sk_byte_tables_vfp4)
Mike Klein40de6da2017-04-07 13:09:29 -04004986_sk_byte_tables_vfp4:
4987 .long 0xe92d4bf0 // push {r4, r5, r6, r7, r8, r9, fp, lr}
4988 .long 0xeddf0b37 // vldr d16, [pc, #220]
4989 .long 0xf2c3261f // vmov.i32 d18, #1056964608
4990 .long 0xf2c3361f // vmov.i32 d19, #1056964608
4991 .long 0xe8911010 // ldm r1, {r4, ip}
4992 .long 0xf2422c30 // vfma.f32 d18, d2, d16
4993 .long 0xf2413c30 // vfma.f32 d19, d1, d16
4994 .long 0xe2811008 // add r1, r1, #8
4995 .long 0xf2c3461f // vmov.i32 d20, #1056964608
4996 .long 0xe89402e0 // ldm r4, {r5, r6, r7, r9}
4997 .long 0xf2404c30 // vfma.f32 d20, d0, d16
4998 .long 0xf2c3161f // vmov.i32 d17, #1056964608
4999 .long 0xf2431c30 // vfma.f32 d17, d3, d16
5000 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5001 .long 0xf3fb37a3 // vcvt.u32.f32 d19, d19
5002 .long 0xf3fb47a4 // vcvt.u32.f32 d20, d20
5003 .long 0xee123b90 // vmov.32 r3, d18[0]
5004 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5005 .long 0xee13eb90 // vmov.32 lr, d19[0]
5006 .long 0xee144b90 // vmov.32 r4, d20[0]
5007 .long 0xe7d78003 // ldrb r8, [r7, r3]
5008 .long 0xe7d6300e // ldrb r3, [r6, lr]
5009 .long 0xee053b90 // vmov.32 d21[0], r3
5010 .long 0xe7d53004 // ldrb r3, [r5, r4]
5011 .long 0xee344b90 // vmov.32 r4, d20[1]
5012 .long 0xee013b90 // vmov.32 d17[0], r3
5013 .long 0xee103b90 // vmov.32 r3, d16[0]
5014 .long 0xee048b90 // vmov.32 d20[0], r8
5015 .long 0xe7d5e004 // ldrb lr, [r5, r4]
5016 .long 0xee334b90 // vmov.32 r4, d19[1]
5017 .long 0xee325b90 // vmov.32 r5, d18[1]
5018 .long 0xf3c7201f // vmov.i32 d18, #255
5019 .long 0xe7d93003 // ldrb r3, [r9, r3]
5020 .long 0xee21eb90 // vmov.32 d17[1], lr
5021 .long 0xf24111b2 // vand d17, d17, d18
5022 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
5023 .long 0xe7d64004 // ldrb r4, [r6, r4]
5024 .long 0xee306b90 // vmov.32 r6, d16[1]
5025 .long 0xee003b90 // vmov.32 d16[0], r3
5026 .long 0xee254b90 // vmov.32 d21[1], r4
5027 .long 0xe7d74005 // ldrb r4, [r7, r5]
5028 .long 0xf24531b2 // vand d19, d21, d18
5029 .long 0xee244b90 // vmov.32 d20[1], r4
5030 .long 0xf24441b2 // vand d20, d20, d18
5031 .long 0xf3fb46a4 // vcvt.f32.u32 d20, d20
5032 .long 0xe7d93006 // ldrb r3, [r9, r6]
5033 .long 0xee203b90 // vmov.32 d16[1], r3
5034 .long 0xf24001b2 // vand d16, d16, d18
5035 .long 0xf3fb26a3 // vcvt.f32.u32 d18, d19
5036 .long 0xeddf3b09 // vldr d19, [pc, #36]
5037 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5038 .long 0xf3010db3 // vmul.f32 d0, d17, d19
5039 .long 0xf3042db3 // vmul.f32 d2, d20, d19
5040 .long 0xf3021db3 // vmul.f32 d1, d18, d19
5041 .long 0xf3003db3 // vmul.f32 d3, d16, d19
5042 .long 0xe8bd4bf0 // pop {r4, r5, r6, r7, r8, r9, fp, lr}
5043 .long 0xe12fff1c // bx ip
5044 .long 0xe320f000 // nop {0}
5045 .long 0x437f0000 // .word 0x437f0000
5046 .long 0x437f0000 // .word 0x437f0000
5047 .long 0x3b808081 // .word 0x3b808081
5048 .long 0x3b808081 // .word 0x3b808081
5049
5050HIDDEN _sk_byte_tables_rgb_vfp4
5051.globl _sk_byte_tables_rgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005052FUNCTION(_sk_byte_tables_rgb_vfp4)
Mike Klein40de6da2017-04-07 13:09:29 -04005053_sk_byte_tables_rgb_vfp4:
5054 .long 0xe92d41f0 // push {r4, r5, r6, r7, r8, lr}
5055 .long 0xe8911008 // ldm r1, {r3, ip}
5056 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5057 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5058 .long 0xf3c7301f // vmov.i32 d19, #255
5059 .long 0xe2811008 // add r1, r1, #8
5060 .long 0xe593e000 // ldr lr, [r3]
5061 .long 0xe9930110 // ldmib r3, {r4, r8}
5062 .long 0xe593300c // ldr r3, [r3, #12]
5063 .long 0xe2433001 // sub r3, r3, #1
5064 .long 0xee803b90 // vdup.32 d16, r3
5065 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5066 .long 0xf2402c30 // vfma.f32 d18, d0, d16
5067 .long 0xf2411c30 // vfma.f32 d17, d1, d16
5068 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5069 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
5070 .long 0xee123b90 // vmov.32 r3, d18[0]
5071 .long 0xee326b90 // vmov.32 r6, d18[1]
5072 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5073 .long 0xf2422c30 // vfma.f32 d18, d2, d16
5074 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
5075 .long 0xee107b90 // vmov.32 r7, d16[0]
5076 .long 0xee305b90 // vmov.32 r5, d16[1]
5077 .long 0xe7de3003 // ldrb r3, [lr, r3]
5078 .long 0xe7dee006 // ldrb lr, [lr, r6]
5079 .long 0xee116b90 // vmov.32 r6, d17[0]
5080 .long 0xee023b90 // vmov.32 d18[0], r3
5081 .long 0xee313b90 // vmov.32 r3, d17[1]
5082 .long 0xee22eb90 // vmov.32 d18[1], lr
5083 .long 0xf24221b3 // vand d18, d18, d19
5084 .long 0xf3fb26a2 // vcvt.f32.u32 d18, d18
5085 .long 0xe7d87007 // ldrb r7, [r8, r7]
5086 .long 0xee017b90 // vmov.32 d17[0], r7
5087 .long 0xe7d46006 // ldrb r6, [r4, r6]
5088 .long 0xe7d43003 // ldrb r3, [r4, r3]
5089 .long 0xee006b90 // vmov.32 d16[0], r6
5090 .long 0xe7d84005 // ldrb r4, [r8, r5]
5091 .long 0xee203b90 // vmov.32 d16[1], r3
5092 .long 0xee214b90 // vmov.32 d17[1], r4
5093 .long 0xf24001b3 // vand d16, d16, d19
5094 .long 0xf24111b3 // vand d17, d17, d19
5095 .long 0xeddf3b07 // vldr d19, [pc, #28]
5096 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5097 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
5098 .long 0xf3020db3 // vmul.f32 d0, d18, d19
5099 .long 0xf3001db3 // vmul.f32 d1, d16, d19
5100 .long 0xf3012db3 // vmul.f32 d2, d17, d19
5101 .long 0xe8bd41f0 // pop {r4, r5, r6, r7, r8, lr}
5102 .long 0xe12fff1c // bx ip
5103 .long 0xe320f000 // nop {0}
5104 .long 0x3b808081 // .word 0x3b808081
5105 .long 0x3b808081 // .word 0x3b808081
5106
Mike Kleinc7d9c0b2017-04-17 14:43:59 -04005107HIDDEN _sk_table_r_vfp4
5108.globl _sk_table_r_vfp4
5109FUNCTION(_sk_table_r_vfp4)
5110_sk_table_r_vfp4:
5111 .long 0xe92d4010 // push {r4, lr}
5112 .long 0xe8911008 // ldm r1, {r3, ip}
5113 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5114 .long 0xe2811008 // add r1, r1, #8
5115 .long 0xe593e000 // ldr lr, [r3]
5116 .long 0xe5933004 // ldr r3, [r3, #4]
5117 .long 0xe2433001 // sub r3, r3, #1
5118 .long 0xee803b90 // vdup.32 d16, r3
5119 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5120 .long 0xf2401c30 // vfma.f32 d17, d0, d16
5121 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5122 .long 0xee303b90 // vmov.32 r3, d16[1]
5123 .long 0xee104b90 // vmov.32 r4, d16[0]
5124 .long 0xe08e3103 // add r3, lr, r3, lsl #2
5125 .long 0xedd30a00 // vldr s1, [r3]
5126 .long 0xe08e3104 // add r3, lr, r4, lsl #2
5127 .long 0xed930a00 // vldr s0, [r3]
5128 .long 0xe8bd4010 // pop {r4, lr}
5129 .long 0xe12fff1c // bx ip
5130
5131HIDDEN _sk_table_g_vfp4
5132.globl _sk_table_g_vfp4
5133FUNCTION(_sk_table_g_vfp4)
5134_sk_table_g_vfp4:
5135 .long 0xe92d4010 // push {r4, lr}
5136 .long 0xe8911008 // ldm r1, {r3, ip}
5137 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5138 .long 0xe2811008 // add r1, r1, #8
5139 .long 0xe593e000 // ldr lr, [r3]
5140 .long 0xe5933004 // ldr r3, [r3, #4]
5141 .long 0xe2433001 // sub r3, r3, #1
5142 .long 0xee803b90 // vdup.32 d16, r3
5143 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5144 .long 0xf2411c30 // vfma.f32 d17, d1, d16
5145 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5146 .long 0xee303b90 // vmov.32 r3, d16[1]
5147 .long 0xee104b90 // vmov.32 r4, d16[0]
5148 .long 0xe08e3103 // add r3, lr, r3, lsl #2
5149 .long 0xedd31a00 // vldr s3, [r3]
5150 .long 0xe08e3104 // add r3, lr, r4, lsl #2
5151 .long 0xed931a00 // vldr s2, [r3]
5152 .long 0xe8bd4010 // pop {r4, lr}
5153 .long 0xe12fff1c // bx ip
5154
5155HIDDEN _sk_table_b_vfp4
5156.globl _sk_table_b_vfp4
5157FUNCTION(_sk_table_b_vfp4)
5158_sk_table_b_vfp4:
5159 .long 0xe92d4010 // push {r4, lr}
5160 .long 0xe8911008 // ldm r1, {r3, ip}
5161 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5162 .long 0xe2811008 // add r1, r1, #8
5163 .long 0xe593e000 // ldr lr, [r3]
5164 .long 0xe5933004 // ldr r3, [r3, #4]
5165 .long 0xe2433001 // sub r3, r3, #1
5166 .long 0xee803b90 // vdup.32 d16, r3
5167 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5168 .long 0xf2421c30 // vfma.f32 d17, d2, d16
5169 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5170 .long 0xee303b90 // vmov.32 r3, d16[1]
5171 .long 0xee104b90 // vmov.32 r4, d16[0]
5172 .long 0xe08e3103 // add r3, lr, r3, lsl #2
5173 .long 0xedd32a00 // vldr s5, [r3]
5174 .long 0xe08e3104 // add r3, lr, r4, lsl #2
5175 .long 0xed932a00 // vldr s4, [r3]
5176 .long 0xe8bd4010 // pop {r4, lr}
5177 .long 0xe12fff1c // bx ip
5178
5179HIDDEN _sk_table_a_vfp4
5180.globl _sk_table_a_vfp4
5181FUNCTION(_sk_table_a_vfp4)
5182_sk_table_a_vfp4:
5183 .long 0xe92d4010 // push {r4, lr}
5184 .long 0xe8911008 // ldm r1, {r3, ip}
5185 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5186 .long 0xe2811008 // add r1, r1, #8
5187 .long 0xe593e000 // ldr lr, [r3]
5188 .long 0xe5933004 // ldr r3, [r3, #4]
5189 .long 0xe2433001 // sub r3, r3, #1
5190 .long 0xee803b90 // vdup.32 d16, r3
5191 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5192 .long 0xf2431c30 // vfma.f32 d17, d3, d16
5193 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5194 .long 0xee303b90 // vmov.32 r3, d16[1]
5195 .long 0xee104b90 // vmov.32 r4, d16[0]
5196 .long 0xe08e3103 // add r3, lr, r3, lsl #2
5197 .long 0xedd33a00 // vldr s7, [r3]
5198 .long 0xe08e3104 // add r3, lr, r4, lsl #2
5199 .long 0xed933a00 // vldr s6, [r3]
5200 .long 0xe8bd4010 // pop {r4, lr}
5201 .long 0xe12fff1c // bx ip
5202
Mike Klein44375172017-04-17 19:32:05 -04005203HIDDEN _sk_parametric_r_vfp4
5204.globl _sk_parametric_r_vfp4
5205FUNCTION(_sk_parametric_r_vfp4)
5206_sk_parametric_r_vfp4:
5207 .long 0xe92d4800 // push {fp, lr}
5208 .long 0xed2d8b06 // vpush {d8-d10}
5209 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04005210 .long 0xeddf3b41 // vldr d19, [pc, #260]
5211 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04005212 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04005213 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04005214 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
5215 .long 0xe591c004 // ldr ip, [r1, #4]
5216 .long 0xe2811008 // add r1, r1, #8
5217 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5218 .long 0xe28e3008 // add r3, lr, #8
5219 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5220 .long 0xe28e300c // add r3, lr, #12
5221 .long 0xf2412c90 // vfma.f32 d18, d17, d0
5222 .long 0xf2c71d1f // vmov.i32 d17, #8388607
5223 .long 0xf24211b1 // vand d17, d18, d17
5224 .long 0xf2c3171f // vorr.i32 d17, #1056964608
5225 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5226 .long 0xf2019da3 // vadd.f32 d9, d17, d19
5227 .long 0xf2c33614 // vmov.i32 d19, #872415232
5228 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04005229 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04005230 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5231 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04005232 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04005233 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04005234 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04005235 .long 0xeddf4b2e // vldr d20, [pc, #184]
5236 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04005237 .long 0xf2621da1 // vsub.f32 d17, d18, d17
5238 .long 0xf2611d8a // vsub.f32 d17, d17, d10
5239 .long 0xf3400db1 // vmul.f32 d16, d16, d17
5240 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
5241 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5242 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
5243 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04005244 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04005245 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04005246 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04005247 .long 0xf2601da1 // vsub.f32 d17, d16, d17
5248 .long 0xf2400da4 // vadd.f32 d16, d16, d20
5249 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04005250 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04005251 .long 0xf3411db2 // vmul.f32 d17, d17, d18
5252 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5253 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5254 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
5255 .long 0xf2600da1 // vsub.f32 d16, d16, d17
5256 .long 0xf2c4161b // vmov.i32 d17, #1258291200
5257 .long 0xf2400d8a // vadd.f32 d16, d16, d10
5258 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
5259 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5260 .long 0xe28e3018 // add r3, lr, #24
5261 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5262 .long 0xe28e3010 // add r3, lr, #16
5263 .long 0xf2401c90 // vfma.f32 d17, d16, d0
5264 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5265 .long 0xe28e3014 // add r3, lr, #20
5266 .long 0xf3400e80 // vcge.f32 d16, d16, d0
5267 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
5268 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5269 .long 0xf2442da2 // vadd.f32 d18, d20, d18
5270 .long 0xf35101b2 // vbsl d16, d17, d18
5271 .long 0xf2c71f10 // vmov.f32 d17, #1
5272 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
5273 .long 0xf2200fa1 // vmin.f32 d0, d16, d17
5274 .long 0xecbd8b06 // vpop {d8-d10}
5275 .long 0xe8bd4800 // pop {fp, lr}
5276 .long 0xe12fff1c // bx ip
5277 .long 0x3eb444f9 // .word 0x3eb444f9
5278 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04005279 .long 0x3fbfbf75 // .word 0x3fbfbf75
5280 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04005281 .long 0xc2f87377 // .word 0xc2f87377
5282 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04005283 .long 0x3f800000 // .word 0x3f800000
5284 .long 0x3f800000 // .word 0x3f800000
5285 .long 0x409af5f8 // .word 0x409af5f8
5286 .long 0x409af5f8 // .word 0x409af5f8
5287 .long 0x3fbebc8d // .word 0x3fbebc8d
5288 .long 0x3fbebc8d // .word 0x3fbebc8d
5289 .long 0x42f28c51 // .word 0x42f28c51
5290 .long 0x42f28c51 // .word 0x42f28c51
5291 .long 0x3fdce9a3 // .word 0x3fdce9a3
5292 .long 0x41ddd2fe // .word 0x41ddd2fe
5293
5294HIDDEN _sk_parametric_g_vfp4
5295.globl _sk_parametric_g_vfp4
5296FUNCTION(_sk_parametric_g_vfp4)
5297_sk_parametric_g_vfp4:
5298 .long 0xe92d4800 // push {fp, lr}
5299 .long 0xed2d8b06 // vpush {d8-d10}
5300 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04005301 .long 0xeddf3b41 // vldr d19, [pc, #260]
5302 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04005303 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04005304 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04005305 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
5306 .long 0xe591c004 // ldr ip, [r1, #4]
5307 .long 0xe2811008 // add r1, r1, #8
5308 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5309 .long 0xe28e3008 // add r3, lr, #8
5310 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5311 .long 0xe28e300c // add r3, lr, #12
5312 .long 0xf2412c91 // vfma.f32 d18, d17, d1
5313 .long 0xf2c71d1f // vmov.i32 d17, #8388607
5314 .long 0xf24211b1 // vand d17, d18, d17
5315 .long 0xf2c3171f // vorr.i32 d17, #1056964608
5316 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5317 .long 0xf2019da3 // vadd.f32 d9, d17, d19
5318 .long 0xf2c33614 // vmov.i32 d19, #872415232
5319 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04005320 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04005321 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5322 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04005323 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04005324 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04005325 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04005326 .long 0xeddf4b2e // vldr d20, [pc, #184]
5327 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04005328 .long 0xf2621da1 // vsub.f32 d17, d18, d17
5329 .long 0xf2611d8a // vsub.f32 d17, d17, d10
5330 .long 0xf3400db1 // vmul.f32 d16, d16, d17
5331 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
5332 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5333 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
5334 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04005335 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04005336 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04005337 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04005338 .long 0xf2601da1 // vsub.f32 d17, d16, d17
5339 .long 0xf2400da4 // vadd.f32 d16, d16, d20
5340 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04005341 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04005342 .long 0xf3411db2 // vmul.f32 d17, d17, d18
5343 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5344 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5345 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
5346 .long 0xf2600da1 // vsub.f32 d16, d16, d17
5347 .long 0xf2c4161b // vmov.i32 d17, #1258291200
5348 .long 0xf2400d8a // vadd.f32 d16, d16, d10
5349 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
5350 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5351 .long 0xe28e3018 // add r3, lr, #24
5352 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5353 .long 0xe28e3010 // add r3, lr, #16
5354 .long 0xf2401c91 // vfma.f32 d17, d16, d1
5355 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5356 .long 0xe28e3014 // add r3, lr, #20
5357 .long 0xf3400e81 // vcge.f32 d16, d16, d1
5358 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
5359 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5360 .long 0xf2442da2 // vadd.f32 d18, d20, d18
5361 .long 0xf35101b2 // vbsl d16, d17, d18
5362 .long 0xf2c71f10 // vmov.f32 d17, #1
5363 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
5364 .long 0xf2201fa1 // vmin.f32 d1, d16, d17
5365 .long 0xecbd8b06 // vpop {d8-d10}
5366 .long 0xe8bd4800 // pop {fp, lr}
5367 .long 0xe12fff1c // bx ip
5368 .long 0x3eb444f9 // .word 0x3eb444f9
5369 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04005370 .long 0x3fbfbf75 // .word 0x3fbfbf75
5371 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04005372 .long 0xc2f87377 // .word 0xc2f87377
5373 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04005374 .long 0x3f800000 // .word 0x3f800000
5375 .long 0x3f800000 // .word 0x3f800000
5376 .long 0x409af5f8 // .word 0x409af5f8
5377 .long 0x409af5f8 // .word 0x409af5f8
5378 .long 0x3fbebc8d // .word 0x3fbebc8d
5379 .long 0x3fbebc8d // .word 0x3fbebc8d
5380 .long 0x42f28c51 // .word 0x42f28c51
5381 .long 0x42f28c51 // .word 0x42f28c51
5382 .long 0x3fdce9a3 // .word 0x3fdce9a3
5383 .long 0x41ddd2fe // .word 0x41ddd2fe
5384
5385HIDDEN _sk_parametric_b_vfp4
5386.globl _sk_parametric_b_vfp4
5387FUNCTION(_sk_parametric_b_vfp4)
5388_sk_parametric_b_vfp4:
5389 .long 0xe92d4800 // push {fp, lr}
5390 .long 0xed2d8b06 // vpush {d8-d10}
5391 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04005392 .long 0xeddf3b41 // vldr d19, [pc, #260]
5393 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04005394 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04005395 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04005396 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
5397 .long 0xe591c004 // ldr ip, [r1, #4]
5398 .long 0xe2811008 // add r1, r1, #8
5399 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5400 .long 0xe28e3008 // add r3, lr, #8
5401 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5402 .long 0xe28e300c // add r3, lr, #12
5403 .long 0xf2412c92 // vfma.f32 d18, d17, d2
5404 .long 0xf2c71d1f // vmov.i32 d17, #8388607
5405 .long 0xf24211b1 // vand d17, d18, d17
5406 .long 0xf2c3171f // vorr.i32 d17, #1056964608
5407 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5408 .long 0xf2019da3 // vadd.f32 d9, d17, d19
5409 .long 0xf2c33614 // vmov.i32 d19, #872415232
5410 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04005411 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04005412 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5413 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04005414 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04005415 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04005416 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04005417 .long 0xeddf4b2e // vldr d20, [pc, #184]
5418 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04005419 .long 0xf2621da1 // vsub.f32 d17, d18, d17
5420 .long 0xf2611d8a // vsub.f32 d17, d17, d10
5421 .long 0xf3400db1 // vmul.f32 d16, d16, d17
5422 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
5423 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5424 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
5425 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04005426 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04005427 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04005428 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04005429 .long 0xf2601da1 // vsub.f32 d17, d16, d17
5430 .long 0xf2400da4 // vadd.f32 d16, d16, d20
5431 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04005432 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04005433 .long 0xf3411db2 // vmul.f32 d17, d17, d18
5434 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5435 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5436 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
5437 .long 0xf2600da1 // vsub.f32 d16, d16, d17
5438 .long 0xf2c4161b // vmov.i32 d17, #1258291200
5439 .long 0xf2400d8a // vadd.f32 d16, d16, d10
5440 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
5441 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5442 .long 0xe28e3018 // add r3, lr, #24
5443 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5444 .long 0xe28e3010 // add r3, lr, #16
5445 .long 0xf2401c92 // vfma.f32 d17, d16, d2
5446 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5447 .long 0xe28e3014 // add r3, lr, #20
5448 .long 0xf3400e82 // vcge.f32 d16, d16, d2
5449 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
5450 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5451 .long 0xf2442da2 // vadd.f32 d18, d20, d18
5452 .long 0xf35101b2 // vbsl d16, d17, d18
5453 .long 0xf2c71f10 // vmov.f32 d17, #1
5454 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
5455 .long 0xf2202fa1 // vmin.f32 d2, d16, d17
5456 .long 0xecbd8b06 // vpop {d8-d10}
5457 .long 0xe8bd4800 // pop {fp, lr}
5458 .long 0xe12fff1c // bx ip
5459 .long 0x3eb444f9 // .word 0x3eb444f9
5460 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04005461 .long 0x3fbfbf75 // .word 0x3fbfbf75
5462 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04005463 .long 0xc2f87377 // .word 0xc2f87377
5464 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04005465 .long 0x3f800000 // .word 0x3f800000
5466 .long 0x3f800000 // .word 0x3f800000
5467 .long 0x409af5f8 // .word 0x409af5f8
5468 .long 0x409af5f8 // .word 0x409af5f8
5469 .long 0x3fbebc8d // .word 0x3fbebc8d
5470 .long 0x3fbebc8d // .word 0x3fbebc8d
5471 .long 0x42f28c51 // .word 0x42f28c51
5472 .long 0x42f28c51 // .word 0x42f28c51
5473 .long 0x3fdce9a3 // .word 0x3fdce9a3
5474 .long 0x41ddd2fe // .word 0x41ddd2fe
5475
5476HIDDEN _sk_parametric_a_vfp4
5477.globl _sk_parametric_a_vfp4
5478FUNCTION(_sk_parametric_a_vfp4)
5479_sk_parametric_a_vfp4:
5480 .long 0xe92d4800 // push {fp, lr}
5481 .long 0xed2d8b06 // vpush {d8-d10}
5482 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04005483 .long 0xeddf3b41 // vldr d19, [pc, #260]
5484 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04005485 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04005486 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04005487 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
5488 .long 0xe591c004 // ldr ip, [r1, #4]
5489 .long 0xe2811008 // add r1, r1, #8
5490 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5491 .long 0xe28e3008 // add r3, lr, #8
5492 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5493 .long 0xe28e300c // add r3, lr, #12
5494 .long 0xf2412c93 // vfma.f32 d18, d17, d3
5495 .long 0xf2c71d1f // vmov.i32 d17, #8388607
5496 .long 0xf24211b1 // vand d17, d18, d17
5497 .long 0xf2c3171f // vorr.i32 d17, #1056964608
5498 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5499 .long 0xf2019da3 // vadd.f32 d9, d17, d19
5500 .long 0xf2c33614 // vmov.i32 d19, #872415232
5501 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04005502 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04005503 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5504 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04005505 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04005506 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04005507 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04005508 .long 0xeddf4b2e // vldr d20, [pc, #184]
5509 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04005510 .long 0xf2621da1 // vsub.f32 d17, d18, d17
5511 .long 0xf2611d8a // vsub.f32 d17, d17, d10
5512 .long 0xf3400db1 // vmul.f32 d16, d16, d17
5513 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
5514 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5515 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
5516 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04005517 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04005518 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04005519 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04005520 .long 0xf2601da1 // vsub.f32 d17, d16, d17
5521 .long 0xf2400da4 // vadd.f32 d16, d16, d20
5522 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04005523 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04005524 .long 0xf3411db2 // vmul.f32 d17, d17, d18
5525 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5526 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5527 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
5528 .long 0xf2600da1 // vsub.f32 d16, d16, d17
5529 .long 0xf2c4161b // vmov.i32 d17, #1258291200
5530 .long 0xf2400d8a // vadd.f32 d16, d16, d10
5531 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
5532 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5533 .long 0xe28e3018 // add r3, lr, #24
5534 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5535 .long 0xe28e3010 // add r3, lr, #16
5536 .long 0xf2401c93 // vfma.f32 d17, d16, d3
5537 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5538 .long 0xe28e3014 // add r3, lr, #20
5539 .long 0xf3400e83 // vcge.f32 d16, d16, d3
5540 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
5541 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5542 .long 0xf2442da2 // vadd.f32 d18, d20, d18
5543 .long 0xf35101b2 // vbsl d16, d17, d18
5544 .long 0xf2c71f10 // vmov.f32 d17, #1
5545 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
5546 .long 0xf2203fa1 // vmin.f32 d3, d16, d17
5547 .long 0xecbd8b06 // vpop {d8-d10}
5548 .long 0xe8bd4800 // pop {fp, lr}
5549 .long 0xe12fff1c // bx ip
5550 .long 0x3eb444f9 // .word 0x3eb444f9
5551 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04005552 .long 0x3fbfbf75 // .word 0x3fbfbf75
5553 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04005554 .long 0xc2f87377 // .word 0xc2f87377
5555 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04005556 .long 0x3f800000 // .word 0x3f800000
5557 .long 0x3f800000 // .word 0x3f800000
5558 .long 0x409af5f8 // .word 0x409af5f8
5559 .long 0x409af5f8 // .word 0x409af5f8
5560 .long 0x3fbebc8d // .word 0x3fbebc8d
5561 .long 0x3fbebc8d // .word 0x3fbebc8d
5562 .long 0x42f28c51 // .word 0x42f28c51
5563 .long 0x42f28c51 // .word 0x42f28c51
5564 .long 0x3fdce9a3 // .word 0x3fdce9a3
5565 .long 0x41ddd2fe // .word 0x41ddd2fe
5566
Mike Klein4e3e9f82017-04-20 11:04:29 -04005567HIDDEN _sk_lab_to_xyz_vfp4
5568.globl _sk_lab_to_xyz_vfp4
5569FUNCTION(_sk_lab_to_xyz_vfp4)
5570_sk_lab_to_xyz_vfp4:
5571 .long 0xeddf1b2e // vldr d17, [pc, #184]
5572 .long 0xf3c43613 // vmov.i32 d19, #-1023410176
5573 .long 0xeddf0b2a // vldr d16, [pc, #168]
5574 .long 0xf2c34f10 // vmov.f32 d20, #16
5575 .long 0xf3401d31 // vmul.f32 d17, d0, d17
5576 .long 0xeddf5b2f // vldr d21, [pc, #188]
5577 .long 0xf3412d30 // vmul.f32 d18, d1, d16
5578 .long 0xeddf6b2f // vldr d22, [pc, #188]
5579 .long 0xf3420d30 // vmul.f32 d16, d2, d16
5580 .long 0xeddf7b2f // vldr d23, [pc, #188]
5581 .long 0xeddf8b30 // vldr d24, [pc, #192]
5582 .long 0xf2411da4 // vadd.f32 d17, d17, d20
5583 .long 0xeddf4b24 // vldr d20, [pc, #144]
5584 .long 0xf2422da3 // vadd.f32 d18, d18, d19
5585 .long 0xe4913004 // ldr r3, [r1], #4
5586 .long 0xf2400da3 // vadd.f32 d16, d16, d19
5587 .long 0xeddf3b22 // vldr d19, [pc, #136]
5588 .long 0xf3411db3 // vmul.f32 d17, d17, d19
5589 .long 0xf3422db4 // vmul.f32 d18, d18, d20
5590 .long 0xf3400db5 // vmul.f32 d16, d16, d21
5591 .long 0xf2412da2 // vadd.f32 d18, d17, d18
5592 .long 0xf2610da0 // vsub.f32 d16, d17, d16
5593 .long 0xf3415db1 // vmul.f32 d21, d17, d17
5594 .long 0xf3423db2 // vmul.f32 d19, d18, d18
5595 .long 0xf3404db0 // vmul.f32 d20, d16, d16
5596 .long 0xf3415db5 // vmul.f32 d21, d17, d21
5597 .long 0xf2411da6 // vadd.f32 d17, d17, d22
5598 .long 0xf3423db3 // vmul.f32 d19, d18, d19
5599 .long 0xf3404db4 // vmul.f32 d20, d16, d20
5600 .long 0xf2400da6 // vadd.f32 d16, d16, d22
5601 .long 0xf2422da6 // vadd.f32 d18, d18, d22
5602 .long 0xeddf6b1d // vldr d22, [pc, #116]
5603 .long 0xf3639ea7 // vcgt.f32 d25, d19, d23
5604 .long 0xf364aea7 // vcgt.f32 d26, d20, d23
5605 .long 0xf3400db8 // vmul.f32 d16, d16, d24
5606 .long 0xf3422db8 // vmul.f32 d18, d18, d24
5607 .long 0xf35391b2 // vbsl d25, d19, d18
5608 .long 0xeddf2b19 // vldr d18, [pc, #100]
5609 .long 0xf354a1b0 // vbsl d26, d20, d16
5610 .long 0xf3251ea7 // vcgt.f32 d1, d21, d23
5611 .long 0xf3090db6 // vmul.f32 d0, d25, d22
5612 .long 0xf30a2db2 // vmul.f32 d2, d26, d18
5613 .long 0xf3410db8 // vmul.f32 d16, d17, d24
5614 .long 0xf31511b0 // vbsl d1, d21, d16
5615 .long 0xe12fff13 // bx r3
5616 .long 0xe320f000 // nop {0}
5617 .long 0x437f0000 // .word 0x437f0000
5618 .long 0x437f0000 // .word 0x437f0000
5619 .long 0x42c80000 // .word 0x42c80000
5620 .long 0x42c80000 // .word 0x42c80000
5621 .long 0x3b03126f // .word 0x3b03126f
5622 .long 0x3b03126f // .word 0x3b03126f
5623 .long 0x3c0d3dcb // .word 0x3c0d3dcb
5624 .long 0x3c0d3dcb // .word 0x3c0d3dcb
5625 .long 0x3ba3d70a // .word 0x3ba3d70a
5626 .long 0x3ba3d70a // .word 0x3ba3d70a
5627 .long 0xbe0d3dcb // .word 0xbe0d3dcb
5628 .long 0xbe0d3dcb // .word 0xbe0d3dcb
5629 .long 0x3c1118c2 // .word 0x3c1118c2
5630 .long 0x3c1118c2 // .word 0x3c1118c2
5631 .long 0x3e038050 // .word 0x3e038050
5632 .long 0x3e038050 // .word 0x3e038050
5633 .long 0x3f76d71f // .word 0x3f76d71f
5634 .long 0x3f76d71f // .word 0x3f76d71f
5635 .long 0x3f5340f6 // .word 0x3f5340f6
5636 .long 0x3f5340f6 // .word 0x3f5340f6
5637
Mike Klein7c4af542017-03-29 18:21:14 -04005638HIDDEN _sk_load_a8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005639.globl _sk_load_a8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005640FUNCTION(_sk_load_a8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005641_sk_load_a8_vfp4:
5642 .long 0xe24dd004 // sub sp, sp, #4
5643 .long 0xe8911008 // ldm r1, {r3, ip}
5644 .long 0xe2811008 // add r1, r1, #8
5645 .long 0xf2800010 // vmov.i32 d0, #0
5646 .long 0xf2801010 // vmov.i32 d1, #0
5647 .long 0xe5933000 // ldr r3, [r3]
5648 .long 0xf2802010 // vmov.i32 d2, #0
5649 .long 0xe0833000 // add r3, r3, r0
5650 .long 0xe1d330b0 // ldrh r3, [r3]
5651 .long 0xe1cd30b0 // strh r3, [sp]
5652 .long 0xe1a0300d // mov r3, sp
5653 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
5654 .long 0xf3c80a30 // vmovl.u8 q8, d16
5655 .long 0xf3d00a30 // vmovl.u16 q8, d16
5656 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5657 .long 0xeddf1b03 // vldr d17, [pc, #12]
5658 .long 0xf3003db1 // vmul.f32 d3, d16, d17
5659 .long 0xe28dd004 // add sp, sp, #4
5660 .long 0xe12fff1c // bx ip
5661 .long 0xe320f000 // nop {0}
5662 .long 0x3b808081 // .word 0x3b808081
5663 .long 0x3b808081 // .word 0x3b808081
5664
Mike Klein21bd3e42017-04-06 16:32:29 -04005665HIDDEN _sk_gather_a8_vfp4
5666.globl _sk_gather_a8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005667FUNCTION(_sk_gather_a8_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04005668_sk_gather_a8_vfp4:
5669 .long 0xe92d4010 // push {r4, lr}
5670 .long 0xe8911008 // ldm r1, {r3, ip}
5671 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
5672 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
5673 .long 0xe2811008 // add r1, r1, #8
5674 .long 0xf2800010 // vmov.i32 d0, #0
5675 .long 0xe493e008 // ldr lr, [r3], #8
5676 .long 0xf2801010 // vmov.i32 d1, #0
5677 .long 0xf2802010 // vmov.i32 d2, #0
5678 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5679 .long 0xf26219a0 // vmla.i32 d17, d18, d16
5680 .long 0xee113b90 // vmov.32 r3, d17[0]
5681 .long 0xee314b90 // vmov.32 r4, d17[1]
5682 .long 0xf3c7101f // vmov.i32 d17, #255
5683 .long 0xe7de3003 // ldrb r3, [lr, r3]
5684 .long 0xe7de4004 // ldrb r4, [lr, r4]
5685 .long 0xee003b90 // vmov.32 d16[0], r3
5686 .long 0xee204b90 // vmov.32 d16[1], r4
5687 .long 0xf24001b1 // vand d16, d16, d17
5688 .long 0xeddf1b03 // vldr d17, [pc, #12]
5689 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5690 .long 0xf3003db1 // vmul.f32 d3, d16, d17
5691 .long 0xe8bd4010 // pop {r4, lr}
5692 .long 0xe12fff1c // bx ip
5693 .long 0x3b808081 // .word 0x3b808081
5694 .long 0x3b808081 // .word 0x3b808081
5695
Mike Klein7c4af542017-03-29 18:21:14 -04005696HIDDEN _sk_store_a8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005697.globl _sk_store_a8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005698FUNCTION(_sk_store_a8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005699_sk_store_a8_vfp4:
5700 .long 0xe92d4800 // push {fp, lr}
5701 .long 0xeddf0b0d // vldr d16, [pc, #52]
5702 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5703 .long 0xf2431c30 // vfma.f32 d17, d3, d16
5704 .long 0xe5913000 // ldr r3, [r1]
5705 .long 0xe5933000 // ldr r3, [r3]
5706 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5707 .long 0xee10eb90 // vmov.32 lr, d16[0]
5708 .long 0xee30cb90 // vmov.32 ip, d16[1]
5709 .long 0xe7e3e000 // strb lr, [r3, r0]!
5710 .long 0xe5c3c001 // strb ip, [r3, #1]
5711 .long 0xe2813008 // add r3, r1, #8
5712 .long 0xe591c004 // ldr ip, [r1, #4]
5713 .long 0xe1a01003 // mov r1, r3
5714 .long 0xe8bd4800 // pop {fp, lr}
5715 .long 0xe12fff1c // bx ip
5716 .long 0x437f0000 // .word 0x437f0000
5717 .long 0x437f0000 // .word 0x437f0000
5718
Mike Kleinf809fef2017-03-31 13:52:45 -04005719HIDDEN _sk_load_g8_vfp4
5720.globl _sk_load_g8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005721FUNCTION(_sk_load_g8_vfp4)
Mike Kleinf809fef2017-03-31 13:52:45 -04005722_sk_load_g8_vfp4:
5723 .long 0xe24dd004 // sub sp, sp, #4
5724 .long 0xe8911008 // ldm r1, {r3, ip}
5725 .long 0xe2811008 // add r1, r1, #8
5726 .long 0xf2873f10 // vmov.f32 d3, #1
5727 .long 0xe5933000 // ldr r3, [r3]
5728 .long 0xe0833000 // add r3, r3, r0
5729 .long 0xe1d330b0 // ldrh r3, [r3]
5730 .long 0xe1cd30b0 // strh r3, [sp]
5731 .long 0xe1a0300d // mov r3, sp
5732 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
5733 .long 0xf3c80a30 // vmovl.u8 q8, d16
5734 .long 0xf3d00a30 // vmovl.u16 q8, d16
5735 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5736 .long 0xeddf1b05 // vldr d17, [pc, #20]
5737 .long 0xf3000db1 // vmul.f32 d0, d16, d17
5738 .long 0xf2201110 // vorr d1, d0, d0
5739 .long 0xf2202110 // vorr d2, d0, d0
5740 .long 0xe28dd004 // add sp, sp, #4
5741 .long 0xe12fff1c // bx ip
5742 .long 0xe320f000 // nop {0}
5743 .long 0x3b808081 // .word 0x3b808081
5744 .long 0x3b808081 // .word 0x3b808081
5745
Mike Klein21bd3e42017-04-06 16:32:29 -04005746HIDDEN _sk_gather_g8_vfp4
5747.globl _sk_gather_g8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005748FUNCTION(_sk_gather_g8_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04005749_sk_gather_g8_vfp4:
5750 .long 0xe92d4010 // push {r4, lr}
5751 .long 0xe8911008 // ldm r1, {r3, ip}
5752 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
5753 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
5754 .long 0xe2811008 // add r1, r1, #8
5755 .long 0xf2873f10 // vmov.f32 d3, #1
5756 .long 0xe493e008 // ldr lr, [r3], #8
5757 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5758 .long 0xf26219a0 // vmla.i32 d17, d18, d16
5759 .long 0xee113b90 // vmov.32 r3, d17[0]
5760 .long 0xee314b90 // vmov.32 r4, d17[1]
5761 .long 0xf3c7101f // vmov.i32 d17, #255
5762 .long 0xe7de3003 // ldrb r3, [lr, r3]
5763 .long 0xe7de4004 // ldrb r4, [lr, r4]
5764 .long 0xee003b90 // vmov.32 d16[0], r3
5765 .long 0xee204b90 // vmov.32 d16[1], r4
5766 .long 0xf24001b1 // vand d16, d16, d17
5767 .long 0xeddf1b05 // vldr d17, [pc, #20]
5768 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5769 .long 0xf3000db1 // vmul.f32 d0, d16, d17
5770 .long 0xf2201110 // vorr d1, d0, d0
5771 .long 0xf2202110 // vorr d2, d0, d0
5772 .long 0xe8bd4010 // pop {r4, lr}
5773 .long 0xe12fff1c // bx ip
5774 .long 0x3b808081 // .word 0x3b808081
5775 .long 0x3b808081 // .word 0x3b808081
5776
Mike Klein7d3d8722017-04-06 17:53:18 -04005777HIDDEN _sk_gather_i8_vfp4
5778.globl _sk_gather_i8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005779FUNCTION(_sk_gather_i8_vfp4)
Mike Klein7d3d8722017-04-06 17:53:18 -04005780_sk_gather_i8_vfp4:
5781 .long 0xe92d4010 // push {r4, lr}
5782 .long 0xe1a0e001 // mov lr, r1
5783 .long 0xe491c004 // ldr ip, [r1], #4
5784 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
5785 .long 0xe35c0000 // cmp ip, #0
5786 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
5787 .long 0xe1a0300c // mov r3, ip
5788 .long 0x028e1008 // addeq r1, lr, #8
5789 .long 0x059e3004 // ldreq r3, [lr, #4]
5790 .long 0xe493e008 // ldr lr, [r3], #8
5791 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5792 .long 0xf26219a0 // vmla.i32 d17, d18, d16
5793 .long 0xee113b90 // vmov.32 r3, d17[0]
5794 .long 0xee314b90 // vmov.32 r4, d17[1]
5795 .long 0xf3c7101f // vmov.i32 d17, #255
5796 .long 0xe7de3003 // ldrb r3, [lr, r3]
5797 .long 0xe7de4004 // ldrb r4, [lr, r4]
5798 .long 0xee003b90 // vmov.32 d16[0], r3
5799 .long 0xee204b90 // vmov.32 d16[1], r4
5800 .long 0xe59c4004 // ldr r4, [ip, #4]
5801 .long 0xf24001b1 // vand d16, d16, d17
5802 .long 0xee103b90 // vmov.32 r3, d16[0]
5803 .long 0xee30eb90 // vmov.32 lr, d16[1]
5804 .long 0xe0843103 // add r3, r4, r3, lsl #2
5805 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
5806 .long 0xe084310e // add r3, r4, lr, lsl #2
5807 .long 0xf4e308bf // vld1.32 {d16[1]}, [r3 :32]
5808 .long 0xf24021b1 // vand d18, d16, d17
5809 .long 0xf3f83030 // vshr.u32 d19, d16, #8
5810 .long 0xf3e84030 // vshr.u32 d20, d16, #24
5811 .long 0xe4913004 // ldr r3, [r1], #4
5812 .long 0xf3f00030 // vshr.u32 d16, d16, #16
5813 .long 0xf24331b1 // vand d19, d19, d17
5814 .long 0xf24001b1 // vand d16, d16, d17
5815 .long 0xeddf1b0a // vldr d17, [pc, #40]
5816 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5817 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
5818 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
5819 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5820 .long 0xf3020db1 // vmul.f32 d0, d18, d17
5821 .long 0xf3043db1 // vmul.f32 d3, d20, d17
5822 .long 0xf3031db1 // vmul.f32 d1, d19, d17
5823 .long 0xf3002db1 // vmul.f32 d2, d16, d17
5824 .long 0xe8bd4010 // pop {r4, lr}
5825 .long 0xe12fff13 // bx r3
5826 .long 0xe320f000 // nop {0}
5827 .long 0x3b808081 // .word 0x3b808081
5828 .long 0x3b808081 // .word 0x3b808081
5829
Mike Klein7c4af542017-03-29 18:21:14 -04005830HIDDEN _sk_load_565_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005831.globl _sk_load_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005832FUNCTION(_sk_load_565_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005833_sk_load_565_vfp4:
5834 .long 0xe24dd004 // sub sp, sp, #4
5835 .long 0xe8911008 // ldm r1, {r3, ip}
5836 .long 0xf2c1101f // vmov.i32 d17, #31
5837 .long 0xf3c72218 // vmov.i32 d18, #63488
5838 .long 0xeddf3b16 // vldr d19, [pc, #88]
5839 .long 0xe2811008 // add r1, r1, #8
5840 .long 0xe5933000 // ldr r3, [r3]
5841 .long 0xf2873f10 // vmov.f32 d3, #1
5842 .long 0xe7933080 // ldr r3, [r3, r0, lsl #1]
5843 .long 0xe58d3000 // str r3, [sp]
5844 .long 0xe1a0300d // mov r3, sp
5845 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
5846 .long 0xe3a03e7e // mov r3, #2016
5847 .long 0xf3d04a30 // vmovl.u16 q10, d16
5848 .long 0xee803b90 // vdup.32 d16, r3
5849 .long 0xf24411b1 // vand d17, d20, d17
5850 .long 0xeddf5b0e // vldr d21, [pc, #56]
5851 .long 0xf24421b2 // vand d18, d20, d18
5852 .long 0xf24401b0 // vand d16, d20, d16
5853 .long 0xeddf4b09 // vldr d20, [pc, #36]
5854 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5855 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5856 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5857 .long 0xf3020db3 // vmul.f32 d0, d18, d19
5858 .long 0xf3001db4 // vmul.f32 d1, d16, d20
5859 .long 0xf3012db5 // vmul.f32 d2, d17, d21
5860 .long 0xe28dd004 // add sp, sp, #4
5861 .long 0xe12fff1c // bx ip
5862 .long 0x37842108 // .word 0x37842108
5863 .long 0x37842108 // .word 0x37842108
5864 .long 0x3a020821 // .word 0x3a020821
5865 .long 0x3a020821 // .word 0x3a020821
5866 .long 0x3d042108 // .word 0x3d042108
5867 .long 0x3d042108 // .word 0x3d042108
5868
Mike Klein21bd3e42017-04-06 16:32:29 -04005869HIDDEN _sk_gather_565_vfp4
5870.globl _sk_gather_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005871FUNCTION(_sk_gather_565_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04005872_sk_gather_565_vfp4:
5873 .long 0xe92d4010 // push {r4, lr}
5874 .long 0xe8911008 // ldm r1, {r3, ip}
5875 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
5876 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
5877 .long 0xeddf4b20 // vldr d20, [pc, #128]
5878 .long 0xe2811008 // add r1, r1, #8
5879 .long 0xe493e008 // ldr lr, [r3], #8
5880 .long 0xf2873f10 // vmov.f32 d3, #1
5881 .long 0xeddf5b1e // vldr d21, [pc, #120]
5882 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5883 .long 0xf26219a0 // vmla.i32 d17, d18, d16
5884 .long 0xf2c1201f // vmov.i32 d18, #31
5885 .long 0xee113b90 // vmov.32 r3, d17[0]
5886 .long 0xee314b90 // vmov.32 r4, d17[1]
5887 .long 0xf3c71218 // vmov.i32 d17, #63488
5888 .long 0xe08e3083 // add r3, lr, r3, lsl #1
5889 .long 0xe08e4084 // add r4, lr, r4, lsl #1
5890 .long 0xe1d330b0 // ldrh r3, [r3]
5891 .long 0xe1d440b0 // ldrh r4, [r4]
5892 .long 0xee003b90 // vmov.32 d16[0], r3
5893 .long 0xe3a03e7e // mov r3, #2016
5894 .long 0xee833b90 // vdup.32 d19, r3
5895 .long 0xee204b90 // vmov.32 d16[1], r4
5896 .long 0xf24011b1 // vand d17, d16, d17
5897 .long 0xf24031b3 // vand d19, d16, d19
5898 .long 0xf24001b2 // vand d16, d16, d18
5899 .long 0xf3fb2623 // vcvt.f32.s32 d18, d19
5900 .long 0xeddf3b07 // vldr d19, [pc, #28]
5901 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5902 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5903 .long 0xf3021db4 // vmul.f32 d1, d18, d20
5904 .long 0xf3010db3 // vmul.f32 d0, d17, d19
5905 .long 0xf3002db5 // vmul.f32 d2, d16, d21
5906 .long 0xe8bd4010 // pop {r4, lr}
5907 .long 0xe12fff1c // bx ip
5908 .long 0xe320f000 // nop {0}
5909 .long 0x37842108 // .word 0x37842108
5910 .long 0x37842108 // .word 0x37842108
5911 .long 0x3a020821 // .word 0x3a020821
5912 .long 0x3a020821 // .word 0x3a020821
5913 .long 0x3d042108 // .word 0x3d042108
5914 .long 0x3d042108 // .word 0x3d042108
5915
Mike Klein7c4af542017-03-29 18:21:14 -04005916HIDDEN _sk_store_565_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005917.globl _sk_store_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005918FUNCTION(_sk_store_565_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005919_sk_store_565_vfp4:
5920 .long 0xf2c30f1f // vmov.f32 d16, #31
5921 .long 0xeddf1b15 // vldr d17, [pc, #84]
5922 .long 0xf2c3361f // vmov.i32 d19, #1056964608
5923 .long 0xe5913000 // ldr r3, [r1]
5924 .long 0xf2413c31 // vfma.f32 d19, d1, d17
5925 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5926 .long 0xf2401c30 // vfma.f32 d17, d0, d16
5927 .long 0xe5933000 // ldr r3, [r3]
5928 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5929 .long 0xf2422c30 // vfma.f32 d18, d2, d16
5930 .long 0xe0833080 // add r3, r3, r0, lsl #1
5931 .long 0xf3fb07a3 // vcvt.u32.f32 d16, d19
5932 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
5933 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5934 .long 0xf2e50530 // vshl.s32 d16, d16, #5
5935 .long 0xf2eb1531 // vshl.s32 d17, d17, #11
5936 .long 0xf26001b1 // vorr d16, d16, d17
5937 .long 0xf26001b2 // vorr d16, d16, d18
5938 .long 0xf3f60121 // vuzp.16 d16, d17
5939 .long 0xf4c3080f // vst1.32 {d16[0]}, [r3]
5940 .long 0xe2813008 // add r3, r1, #8
5941 .long 0xe591c004 // ldr ip, [r1, #4]
5942 .long 0xe1a01003 // mov r1, r3
5943 .long 0xe12fff1c // bx ip
5944 .long 0x427c0000 // .word 0x427c0000
5945 .long 0x427c0000 // .word 0x427c0000
5946
Mike Kleinf809fef2017-03-31 13:52:45 -04005947HIDDEN _sk_load_4444_vfp4
5948.globl _sk_load_4444_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005949FUNCTION(_sk_load_4444_vfp4)
Mike Kleinf809fef2017-03-31 13:52:45 -04005950_sk_load_4444_vfp4:
5951 .long 0xe24dd004 // sub sp, sp, #4
5952 .long 0xe8911008 // ldm r1, {r3, ip}
5953 .long 0xf3c71210 // vmov.i32 d17, #61440
5954 .long 0xf3c74010 // vmov.i32 d20, #240
5955 .long 0xf2c0501f // vmov.i32 d21, #15
5956 .long 0xeddf6b1d // vldr d22, [pc, #116]
5957 .long 0xe5933000 // ldr r3, [r3]
5958 .long 0xe2811008 // add r1, r1, #8
5959 .long 0xe7933080 // ldr r3, [r3, r0, lsl #1]
5960 .long 0xe58d3000 // str r3, [sp]
5961 .long 0xe1a0300d // mov r3, sp
5962 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
5963 .long 0xf3d02a30 // vmovl.u16 q9, d16
5964 .long 0xf2c0021f // vmov.i32 d16, #3840
5965 .long 0xf24211b1 // vand d17, d18, d17
5966 .long 0xf24201b0 // vand d16, d18, d16
5967 .long 0xf24241b4 // vand d20, d18, d20
5968 .long 0xf24221b5 // vand d18, d18, d21
5969 .long 0xeddf3b0c // vldr d19, [pc, #48]
5970 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5971 .long 0xeddf5b0c // vldr d21, [pc, #48]
5972 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5973 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
5974 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5975 .long 0xf3010db3 // vmul.f32 d0, d17, d19
5976 .long 0xeddf1b0b // vldr d17, [pc, #44]
5977 .long 0xf3001db5 // vmul.f32 d1, d16, d21
5978 .long 0xf3042db6 // vmul.f32 d2, d20, d22
5979 .long 0xf3023db1 // vmul.f32 d3, d18, d17
5980 .long 0xe28dd004 // add sp, sp, #4
5981 .long 0xe12fff1c // bx ip
5982 .long 0xe320f000 // nop {0}
5983 .long 0x37888889 // .word 0x37888889
5984 .long 0x37888889 // .word 0x37888889
5985 .long 0x39888889 // .word 0x39888889
5986 .long 0x39888889 // .word 0x39888889
5987 .long 0x3b888889 // .word 0x3b888889
5988 .long 0x3b888889 // .word 0x3b888889
5989 .long 0x3d888889 // .word 0x3d888889
5990 .long 0x3d888889 // .word 0x3d888889
5991
Mike Klein21bd3e42017-04-06 16:32:29 -04005992HIDDEN _sk_gather_4444_vfp4
5993.globl _sk_gather_4444_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005994FUNCTION(_sk_gather_4444_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04005995_sk_gather_4444_vfp4:
5996 .long 0xe92d4010 // push {r4, lr}
5997 .long 0xe8911008 // ldm r1, {r3, ip}
5998 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
5999 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
6000 .long 0xf3c73010 // vmov.i32 d19, #240
6001 .long 0xeddf5b21 // vldr d21, [pc, #132]
6002 .long 0xe493e008 // ldr lr, [r3], #8
6003 .long 0xf2c0401f // vmov.i32 d20, #15
6004 .long 0xeddf6b20 // vldr d22, [pc, #128]
6005 .long 0xe2811008 // add r1, r1, #8
6006 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6007 .long 0xf26219a0 // vmla.i32 d17, d18, d16
6008 .long 0xf2c0221f // vmov.i32 d18, #3840
6009 .long 0xee113b90 // vmov.32 r3, d17[0]
6010 .long 0xee314b90 // vmov.32 r4, d17[1]
6011 .long 0xf3c71210 // vmov.i32 d17, #61440
6012 .long 0xe08e3083 // add r3, lr, r3, lsl #1
6013 .long 0xe08e4084 // add r4, lr, r4, lsl #1
6014 .long 0xe1d330b0 // ldrh r3, [r3]
6015 .long 0xe1d440b0 // ldrh r4, [r4]
6016 .long 0xee003b90 // vmov.32 d16[0], r3
6017 .long 0xee204b90 // vmov.32 d16[1], r4
6018 .long 0xf24011b1 // vand d17, d16, d17
6019 .long 0xf24021b2 // vand d18, d16, d18
6020 .long 0xf24031b3 // vand d19, d16, d19
6021 .long 0xf24001b4 // vand d16, d16, d20
6022 .long 0xeddf4b0a // vldr d20, [pc, #40]
6023 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6024 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6025 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
6026 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6027 .long 0xf3010db4 // vmul.f32 d0, d17, d20
6028 .long 0xeddf1b0a // vldr d17, [pc, #40]
6029 .long 0xf3021db5 // vmul.f32 d1, d18, d21
6030 .long 0xf3032db6 // vmul.f32 d2, d19, d22
6031 .long 0xf3003db1 // vmul.f32 d3, d16, d17
6032 .long 0xe8bd4010 // pop {r4, lr}
6033 .long 0xe12fff1c // bx ip
6034 .long 0x37888889 // .word 0x37888889
6035 .long 0x37888889 // .word 0x37888889
6036 .long 0x39888889 // .word 0x39888889
6037 .long 0x39888889 // .word 0x39888889
6038 .long 0x3b888889 // .word 0x3b888889
6039 .long 0x3b888889 // .word 0x3b888889
6040 .long 0x3d888889 // .word 0x3d888889
6041 .long 0x3d888889 // .word 0x3d888889
6042
Mike Kleinf809fef2017-03-31 13:52:45 -04006043HIDDEN _sk_store_4444_vfp4
6044.globl _sk_store_4444_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006045FUNCTION(_sk_store_4444_vfp4)
Mike Kleinf809fef2017-03-31 13:52:45 -04006046_sk_store_4444_vfp4:
6047 .long 0xf2c20f1e // vmov.f32 d16, #15
6048 .long 0xe5913000 // ldr r3, [r1]
6049 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6050 .long 0xf2c3361f // vmov.i32 d19, #1056964608
6051 .long 0xf2402c30 // vfma.f32 d18, d0, d16
6052 .long 0xe5933000 // ldr r3, [r3]
6053 .long 0xf2413c30 // vfma.f32 d19, d1, d16
6054 .long 0xf2c3461f // vmov.i32 d20, #1056964608
6055 .long 0xe0833080 // add r3, r3, r0, lsl #1
6056 .long 0xf2424c30 // vfma.f32 d20, d2, d16
6057 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6058 .long 0xf2431c30 // vfma.f32 d17, d3, d16
6059 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
6060 .long 0xf3fb27a3 // vcvt.u32.f32 d18, d19
6061 .long 0xf3fb37a4 // vcvt.u32.f32 d19, d20
6062 .long 0xf2ec0530 // vshl.s32 d16, d16, #12
6063 .long 0xf2e82532 // vshl.s32 d18, d18, #8
6064 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
6065 .long 0xf2e43533 // vshl.s32 d19, d19, #4
6066 .long 0xf26201b0 // vorr d16, d18, d16
6067 .long 0xf26001b3 // vorr d16, d16, d19
6068 .long 0xf26001b1 // vorr d16, d16, d17
6069 .long 0xf3f60121 // vuzp.16 d16, d17
6070 .long 0xf4c3080f // vst1.32 {d16[0]}, [r3]
6071 .long 0xe2813008 // add r3, r1, #8
6072 .long 0xe591c004 // ldr ip, [r1, #4]
6073 .long 0xe1a01003 // mov r1, r3
6074 .long 0xe12fff1c // bx ip
6075
Mike Klein7c4af542017-03-29 18:21:14 -04006076HIDDEN _sk_load_8888_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006077.globl _sk_load_8888_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006078FUNCTION(_sk_load_8888_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006079_sk_load_8888_vfp4:
6080 .long 0xe8911008 // ldm r1, {r3, ip}
6081 .long 0xf3c7001f // vmov.i32 d16, #255
6082 .long 0xe2811008 // add r1, r1, #8
6083 .long 0xe5933000 // ldr r3, [r3]
6084 .long 0xe0833100 // add r3, r3, r0, lsl #2
6085 .long 0xedd31b00 // vldr d17, [r3]
6086 .long 0xf24121b0 // vand d18, d17, d16
6087 .long 0xf3f83031 // vshr.u32 d19, d17, #8
6088 .long 0xf3e84031 // vshr.u32 d20, d17, #24
6089 .long 0xf3f01031 // vshr.u32 d17, d17, #16
6090 .long 0xf24331b0 // vand d19, d19, d16
6091 .long 0xf24101b0 // vand d16, d17, d16
6092 .long 0xeddf1b08 // vldr d17, [pc, #32]
6093 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6094 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
6095 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
6096 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6097 .long 0xf3020db1 // vmul.f32 d0, d18, d17
6098 .long 0xf3043db1 // vmul.f32 d3, d20, d17
6099 .long 0xf3031db1 // vmul.f32 d1, d19, d17
6100 .long 0xf3002db1 // vmul.f32 d2, d16, d17
6101 .long 0xe12fff1c // bx ip
6102 .long 0x3b808081 // .word 0x3b808081
6103 .long 0x3b808081 // .word 0x3b808081
6104
Mike Kleindec4ea82017-04-06 15:04:05 -04006105HIDDEN _sk_gather_8888_vfp4
6106.globl _sk_gather_8888_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006107FUNCTION(_sk_gather_8888_vfp4)
Mike Kleindec4ea82017-04-06 15:04:05 -04006108_sk_gather_8888_vfp4:
6109 .long 0xe92d4010 // push {r4, lr}
6110 .long 0xe8911008 // ldm r1, {r3, ip}
6111 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
6112 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
6113 .long 0xe2811008 // add r1, r1, #8
6114 .long 0xe493e008 // ldr lr, [r3], #8
6115 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6116 .long 0xf26219a0 // vmla.i32 d17, d18, d16
6117 .long 0xee113b90 // vmov.32 r3, d17[0]
6118 .long 0xee314b90 // vmov.32 r4, d17[1]
6119 .long 0xf3c7101f // vmov.i32 d17, #255
6120 .long 0xe08e3103 // add r3, lr, r3, lsl #2
6121 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
6122 .long 0xe08e3104 // add r3, lr, r4, lsl #2
6123 .long 0xf4e308bf // vld1.32 {d16[1]}, [r3 :32]
6124 .long 0xf24021b1 // vand d18, d16, d17
6125 .long 0xf3f83030 // vshr.u32 d19, d16, #8
6126 .long 0xf3e84030 // vshr.u32 d20, d16, #24
6127 .long 0xf3f00030 // vshr.u32 d16, d16, #16
6128 .long 0xf24331b1 // vand d19, d19, d17
6129 .long 0xf24001b1 // vand d16, d16, d17
6130 .long 0xeddf1b09 // vldr d17, [pc, #36]
6131 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6132 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
6133 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
6134 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6135 .long 0xf3020db1 // vmul.f32 d0, d18, d17
6136 .long 0xf3043db1 // vmul.f32 d3, d20, d17
6137 .long 0xf3031db1 // vmul.f32 d1, d19, d17
6138 .long 0xf3002db1 // vmul.f32 d2, d16, d17
6139 .long 0xe8bd4010 // pop {r4, lr}
6140 .long 0xe12fff1c // bx ip
6141 .long 0x3b808081 // .word 0x3b808081
6142 .long 0x3b808081 // .word 0x3b808081
6143
Mike Klein7c4af542017-03-29 18:21:14 -04006144HIDDEN _sk_store_8888_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006145.globl _sk_store_8888_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006146FUNCTION(_sk_store_8888_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006147_sk_store_8888_vfp4:
6148 .long 0xeddf0b1a // vldr d16, [pc, #104]
6149 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6150 .long 0xf2412c30 // vfma.f32 d18, d1, d16
6151 .long 0xe5913000 // ldr r3, [r1]
6152 .long 0xf2c3361f // vmov.i32 d19, #1056964608
6153 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6154 .long 0xf2423c30 // vfma.f32 d19, d2, d16
6155 .long 0xe5933000 // ldr r3, [r3]
6156 .long 0xf2c3461f // vmov.i32 d20, #1056964608
6157 .long 0xf2401c30 // vfma.f32 d17, d0, d16
6158 .long 0xe0833100 // add r3, r3, r0, lsl #2
6159 .long 0xf2434c30 // vfma.f32 d20, d3, d16
6160 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
6161 .long 0xf3fb27a3 // vcvt.u32.f32 d18, d19
6162 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
6163 .long 0xf3fb37a4 // vcvt.u32.f32 d19, d20
6164 .long 0xf2e80530 // vshl.s32 d16, d16, #8
6165 .long 0xf2f02532 // vshl.s32 d18, d18, #16
6166 .long 0xf26001b1 // vorr d16, d16, d17
6167 .long 0xf2f81533 // vshl.s32 d17, d19, #24
6168 .long 0xf26001b2 // vorr d16, d16, d18
6169 .long 0xf26001b1 // vorr d16, d16, d17
6170 .long 0xedc30b00 // vstr d16, [r3]
6171 .long 0xe2813008 // add r3, r1, #8
6172 .long 0xe591c004 // ldr ip, [r1, #4]
6173 .long 0xe1a01003 // mov r1, r3
6174 .long 0xe12fff1c // bx ip
6175 .long 0xe320f000 // nop {0}
6176 .long 0x437f0000 // .word 0x437f0000
6177 .long 0x437f0000 // .word 0x437f0000
6178
Mike Klein7c4af542017-03-29 18:21:14 -04006179HIDDEN _sk_load_f16_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006180.globl _sk_load_f16_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006181FUNCTION(_sk_load_f16_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006182_sk_load_f16_vfp4:
6183 .long 0xe8911008 // ldm r1, {r3, ip}
6184 .long 0xe2811008 // add r1, r1, #8
6185 .long 0xe5933000 // ldr r3, [r3]
6186 .long 0xe0833180 // add r3, r3, r0, lsl #3
Mike Klein114e6b32017-04-03 22:21:15 -04006187 .long 0xf4e3070d // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]!
6188 .long 0xf4e3074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3]
6189 .long 0xf3b60720 // vcvt.f32.f16 q0, d16
6190 .long 0xf3b62722 // vcvt.f32.f16 q1, d18
6191 .long 0xf3f64721 // vcvt.f32.f16 q10, d17
6192 .long 0xf3f60723 // vcvt.f32.f16 q8, d19
6193 .long 0xf22411b4 // vorr d1, d20, d20
6194 .long 0xf22031b0 // vorr d3, d16, d16
Mike Kleind7e06ae2017-03-29 16:33:06 -04006195 .long 0xe12fff1c // bx ip
6196
Mike Klein5f055f02017-04-06 20:02:11 -04006197HIDDEN _sk_gather_f16_vfp4
6198.globl _sk_gather_f16_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006199FUNCTION(_sk_gather_f16_vfp4)
Mike Klein5f055f02017-04-06 20:02:11 -04006200_sk_gather_f16_vfp4:
6201 .long 0xe92d4c10 // push {r4, sl, fp, lr}
6202 .long 0xe28db008 // add fp, sp, #8
6203 .long 0xe24dd010 // sub sp, sp, #16
6204 .long 0xe7c3d01f // bfc sp, #0, #4
6205 .long 0xe5913000 // ldr r3, [r1]
6206 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
6207 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
6208 .long 0xe493c008 // ldr ip, [r3], #8
6209 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6210 .long 0xf26219a0 // vmla.i32 d17, d18, d16
6211 .long 0xee113b90 // vmov.32 r3, d17[0]
6212 .long 0xee31eb90 // vmov.32 lr, d17[1]
6213 .long 0xe08c4183 // add r4, ip, r3, lsl #3
6214 .long 0xe08c318e // add r3, ip, lr, lsl #3
6215 .long 0xedd31b00 // vldr d17, [r3]
6216 .long 0xe1a0300d // mov r3, sp
6217 .long 0xedd40b00 // vldr d16, [r4]
6218 .long 0xf4430aef // vst1.64 {d16-d17}, [r3 :128]
6219 .long 0xf4e3071f // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3 :64]
6220 .long 0xe3833008 // orr r3, r3, #8
6221 .long 0xf4e3075f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3 :64]
6222 .long 0xf3b60720 // vcvt.f32.f16 q0, d16
6223 .long 0xf3b62722 // vcvt.f32.f16 q1, d18
6224 .long 0xe5913004 // ldr r3, [r1, #4]
6225 .long 0xe2811008 // add r1, r1, #8
6226 .long 0xf3f64721 // vcvt.f32.f16 q10, d17
6227 .long 0xf3f60723 // vcvt.f32.f16 q8, d19
6228 .long 0xf22411b4 // vorr d1, d20, d20
6229 .long 0xf22031b0 // vorr d3, d16, d16
6230 .long 0xe12fff33 // blx r3
6231 .long 0xe24bd008 // sub sp, fp, #8
6232 .long 0xe8bd8c10 // pop {r4, sl, fp, pc}
6233
Mike Klein7c4af542017-03-29 18:21:14 -04006234HIDDEN _sk_store_f16_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006235.globl _sk_store_f16_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006236FUNCTION(_sk_store_f16_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006237_sk_store_f16_vfp4:
Mike Klein95f53be2017-04-04 10:24:56 -04006238 .long 0xf2630113 // vorr d16, d3, d3
Mike Kleind7e06ae2017-03-29 16:33:06 -04006239 .long 0xe5913000 // ldr r3, [r1]
Mike Klein95f53be2017-04-04 10:24:56 -04006240 .long 0xf2612111 // vorr d18, d1, d1
6241 .long 0xf3f67620 // vcvt.f16.f32 d23, q8
Mike Kleind7e06ae2017-03-29 16:33:06 -04006242 .long 0xe5933000 // ldr r3, [r3]
Mike Klein95f53be2017-04-04 10:24:56 -04006243 .long 0xf3f66602 // vcvt.f16.f32 d22, q1
Mike Kleind7e06ae2017-03-29 16:33:06 -04006244 .long 0xe0833180 // add r3, r3, r0, lsl #3
Mike Klein95f53be2017-04-04 10:24:56 -04006245 .long 0xf3f65622 // vcvt.f16.f32 d21, q9
6246 .long 0xf3f64600 // vcvt.f16.f32 d20, q0
6247 .long 0xf22211b2 // vorr d1, d18, d18
6248 .long 0xf22031b0 // vorr d3, d16, d16
6249 .long 0xf4c3470d // vst4.16 {d20[0],d21[0],d22[0],d23[0]}, [r3]!
6250 .long 0xf4c3474f // vst4.16 {d20[1],d21[1],d22[1],d23[1]}, [r3]
Mike Kleind7e06ae2017-03-29 16:33:06 -04006251 .long 0xe2813008 // add r3, r1, #8
6252 .long 0xe591c004 // ldr ip, [r1, #4]
6253 .long 0xe1a01003 // mov r1, r3
6254 .long 0xe12fff1c // bx ip
6255
Mike Klein3146bb92017-04-05 14:45:02 -04006256HIDDEN _sk_load_u16_be_vfp4
6257.globl _sk_load_u16_be_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006258FUNCTION(_sk_load_u16_be_vfp4)
Mike Klein3146bb92017-04-05 14:45:02 -04006259_sk_load_u16_be_vfp4:
6260 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
6261 .long 0xe8911008 // ldm r1, {r3, ip}
6262 .long 0xe2811008 // add r1, r1, #8
6263 .long 0xe5933000 // ldr r3, [r3]
6264 .long 0xe0833180 // add r3, r3, r0, lsl #3
6265 .long 0xf4e3070d // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]!
6266 .long 0xf4e3074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3]
6267 .long 0xee903bb0 // vmov.u16 r3, d16[0]
6268 .long 0xee92ebb0 // vmov.u16 lr, d18[0]
6269 .long 0xee914bb0 // vmov.u16 r4, d17[0]
6270 .long 0xee937bb0 // vmov.u16 r7, d19[0]
6271 .long 0xee905bf0 // vmov.u16 r5, d16[1]
6272 .long 0xee926bf0 // vmov.u16 r6, d18[1]
6273 .long 0xee043b90 // vmov.32 d20[0], r3
6274 .long 0xee05eb90 // vmov.32 d21[0], lr
6275 .long 0xee93ebf0 // vmov.u16 lr, d19[1]
6276 .long 0xee913bf0 // vmov.u16 r3, d17[1]
6277 .long 0xf3c71c1f // vmov.i32 d17, #65535
6278 .long 0xee004b90 // vmov.32 d16[0], r4
6279 .long 0xee027b90 // vmov.32 d18[0], r7
6280 .long 0xee245b90 // vmov.32 d20[1], r5
6281 .long 0xf24431b1 // vand d19, d20, d17
6282 .long 0xee256b90 // vmov.32 d21[1], r6
6283 .long 0xf2e84534 // vshl.s32 d20, d20, #8
6284 .long 0xf24561b1 // vand d22, d21, d17
6285 .long 0xf3f83033 // vshr.u32 d19, d19, #8
6286 .long 0xf2e85535 // vshl.s32 d21, d21, #8
6287 .long 0xf26431b3 // vorr d19, d20, d19
6288 .long 0xf3f86036 // vshr.u32 d22, d22, #8
6289 .long 0xf24331b1 // vand d19, d19, d17
6290 .long 0xf26551b6 // vorr d21, d21, d22
6291 .long 0xf3fb36a3 // vcvt.f32.u32 d19, d19
6292 .long 0xee22eb90 // vmov.32 d18[1], lr
6293 .long 0xee203b90 // vmov.32 d16[1], r3
6294 .long 0xf24281b1 // vand d24, d18, d17
6295 .long 0xf2e82532 // vshl.s32 d18, d18, #8
6296 .long 0xf24071b1 // vand d23, d16, d17
6297 .long 0xf3f84038 // vshr.u32 d20, d24, #8
6298 .long 0xf2e80530 // vshl.s32 d16, d16, #8
6299 .long 0xf3f87037 // vshr.u32 d23, d23, #8
6300 .long 0xf26221b4 // vorr d18, d18, d20
6301 .long 0xf26001b7 // vorr d16, d16, d23
6302 .long 0xf24541b1 // vand d20, d21, d17
6303 .long 0xf24001b1 // vand d16, d16, d17
6304 .long 0xf24211b1 // vand d17, d18, d17
6305 .long 0xeddf2b09 // vldr d18, [pc, #36]
6306 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
6307 .long 0xf3fb46a4 // vcvt.f32.u32 d20, d20
6308 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
6309 .long 0xf3030db2 // vmul.f32 d0, d19, d18
6310 .long 0xf3001db2 // vmul.f32 d1, d16, d18
6311 .long 0xf3042db2 // vmul.f32 d2, d20, d18
6312 .long 0xf3013db2 // vmul.f32 d3, d17, d18
6313 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
6314 .long 0xe12fff1c // bx ip
6315 .long 0xe320f000 // nop {0}
6316 .long 0x37800080 // .word 0x37800080
6317 .long 0x37800080 // .word 0x37800080
6318
Mike Kleinb3821732017-04-17 10:58:05 -04006319HIDDEN _sk_load_rgb_u16_be_vfp4
6320.globl _sk_load_rgb_u16_be_vfp4
6321FUNCTION(_sk_load_rgb_u16_be_vfp4)
6322_sk_load_rgb_u16_be_vfp4:
6323 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
6324 .long 0xe8911008 // ldm r1, {r3, ip}
6325 .long 0xe2811008 // add r1, r1, #8
6326 .long 0xf2873f10 // vmov.f32 d3, #1
6327 .long 0xe593e000 // ldr lr, [r3]
6328 .long 0xe0803080 // add r3, r0, r0, lsl #1
6329 .long 0xe08e3083 // add r3, lr, r3, lsl #1
6330 .long 0xf4e3060d // vld3.16 {d16[0],d17[0],d18[0]}, [r3]!
6331 .long 0xf4e3064f // vld3.16 {d16[1],d17[1],d18[1]}, [r3]
6332 .long 0xee90ebb0 // vmov.u16 lr, d16[0]
6333 .long 0xee913bb0 // vmov.u16 r3, d17[0]
6334 .long 0xee924bb0 // vmov.u16 r4, d18[0]
6335 .long 0xee927bf0 // vmov.u16 r7, d18[1]
6336 .long 0xf3c73c1f // vmov.i32 d19, #65535
6337 .long 0xee905bf0 // vmov.u16 r5, d16[1]
6338 .long 0xee916bf0 // vmov.u16 r6, d17[1]
6339 .long 0xee00eb90 // vmov.32 d16[0], lr
6340 .long 0xee013b90 // vmov.32 d17[0], r3
6341 .long 0xee024b90 // vmov.32 d18[0], r4
6342 .long 0xee205b90 // vmov.32 d16[1], r5
6343 .long 0xee216b90 // vmov.32 d17[1], r6
6344 .long 0xf24041b3 // vand d20, d16, d19
6345 .long 0xf2e80530 // vshl.s32 d16, d16, #8
6346 .long 0xee227b90 // vmov.32 d18[1], r7
6347 .long 0xf24151b3 // vand d21, d17, d19
6348 .long 0xf3f84034 // vshr.u32 d20, d20, #8
6349 .long 0xf24261b3 // vand d22, d18, d19
6350 .long 0xf2e81531 // vshl.s32 d17, d17, #8
6351 .long 0xf3f85035 // vshr.u32 d21, d21, #8
6352 .long 0xf2e82532 // vshl.s32 d18, d18, #8
6353 .long 0xf3f86036 // vshr.u32 d22, d22, #8
6354 .long 0xf26001b4 // vorr d16, d16, d20
6355 .long 0xf26111b5 // vorr d17, d17, d21
6356 .long 0xf26221b6 // vorr d18, d18, d22
6357 .long 0xf24001b3 // vand d16, d16, d19
6358 .long 0xf24111b3 // vand d17, d17, d19
6359 .long 0xf24221b3 // vand d18, d18, d19
6360 .long 0xeddf3b07 // vldr d19, [pc, #28]
6361 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
6362 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
6363 .long 0xf3fb26a2 // vcvt.f32.u32 d18, d18
6364 .long 0xf3000db3 // vmul.f32 d0, d16, d19
6365 .long 0xf3011db3 // vmul.f32 d1, d17, d19
6366 .long 0xf3022db3 // vmul.f32 d2, d18, d19
6367 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
6368 .long 0xe12fff1c // bx ip
6369 .long 0x37800080 // .word 0x37800080
6370 .long 0x37800080 // .word 0x37800080
6371
Mike Klein3146bb92017-04-05 14:45:02 -04006372HIDDEN _sk_store_u16_be_vfp4
6373.globl _sk_store_u16_be_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006374FUNCTION(_sk_store_u16_be_vfp4)
Mike Klein3146bb92017-04-05 14:45:02 -04006375_sk_store_u16_be_vfp4:
6376 .long 0xeddf0b2a // vldr d16, [pc, #168]
6377 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6378 .long 0xf2c3361f // vmov.i32 d19, #1056964608
6379 .long 0xe5913000 // ldr r3, [r1]
6380 .long 0xf2432c30 // vfma.f32 d18, d3, d16
6381 .long 0xf2c3461f // vmov.i32 d20, #1056964608
6382 .long 0xf2423c30 // vfma.f32 d19, d2, d16
6383 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6384 .long 0xf2414c30 // vfma.f32 d20, d1, d16
6385 .long 0xf2401c30 // vfma.f32 d17, d0, d16
6386 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
6387 .long 0xf3fb27a3 // vcvt.u32.f32 d18, d19
6388 .long 0xf3c73c1f // vmov.i32 d19, #65535
6389 .long 0xf3fb47a4 // vcvt.u32.f32 d20, d20
6390 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
6391 .long 0xf24051b3 // vand d21, d16, d19
6392 .long 0xf24261b3 // vand d22, d18, d19
6393 .long 0xf24471b3 // vand d23, d20, d19
6394 .long 0xf24131b3 // vand d19, d17, d19
6395 .long 0xf2e80530 // vshl.s32 d16, d16, #8
6396 .long 0xf3f85035 // vshr.u32 d21, d21, #8
6397 .long 0xf2e82532 // vshl.s32 d18, d18, #8
6398 .long 0xf3f86036 // vshr.u32 d22, d22, #8
6399 .long 0xf260b1b5 // vorr d27, d16, d21
6400 .long 0xf2e84534 // vshl.s32 d20, d20, #8
6401 .long 0xf3f87037 // vshr.u32 d23, d23, #8
6402 .long 0xf262a1b6 // vorr d26, d18, d22
6403 .long 0xf2e81531 // vshl.s32 d17, d17, #8
6404 .long 0xf3f83033 // vshr.u32 d19, d19, #8
6405 .long 0xf26491b7 // vorr d25, d20, d23
6406 .long 0xf26181b3 // vorr d24, d17, d19
6407 .long 0xf3f6b120 // vuzp.16 d27, d16
6408 .long 0xe5933000 // ldr r3, [r3]
6409 .long 0xf3f6a120 // vuzp.16 d26, d16
6410 .long 0xe0833180 // add r3, r3, r0, lsl #3
6411 .long 0xf3f69120 // vuzp.16 d25, d16
6412 .long 0xf3f68120 // vuzp.16 d24, d16
6413 .long 0xf4c3870d // vst4.16 {d24[0],d25[0],d26[0],d27[0]}, [r3]!
6414 .long 0xf4c3874f // vst4.16 {d24[1],d25[1],d26[1],d27[1]}, [r3]
6415 .long 0xe2813008 // add r3, r1, #8
6416 .long 0xe591c004 // ldr ip, [r1, #4]
6417 .long 0xe1a01003 // mov r1, r3
6418 .long 0xe12fff1c // bx ip
6419 .long 0xe320f000 // nop {0}
6420 .long 0x477fff00 // .word 0x477fff00
6421 .long 0x477fff00 // .word 0x477fff00
6422
Mike Klein14987eb2017-04-06 10:22:26 -04006423HIDDEN _sk_load_f32_vfp4
6424.globl _sk_load_f32_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006425FUNCTION(_sk_load_f32_vfp4)
Mike Klein14987eb2017-04-06 10:22:26 -04006426_sk_load_f32_vfp4:
6427 .long 0xe8911008 // ldm r1, {r3, ip}
6428 .long 0xe2811008 // add r1, r1, #8
6429 .long 0xe5933000 // ldr r3, [r3]
6430 .long 0xe0833200 // add r3, r3, r0, lsl #4
6431 .long 0xf423008f // vld4.32 {d0-d3}, [r3]
6432 .long 0xe12fff1c // bx ip
6433
Mike Klein7c4af542017-03-29 18:21:14 -04006434HIDDEN _sk_store_f32_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006435.globl _sk_store_f32_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006436FUNCTION(_sk_store_f32_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006437_sk_store_f32_vfp4:
6438 .long 0xe5913000 // ldr r3, [r1]
6439 .long 0xe5933000 // ldr r3, [r3]
6440 .long 0xe0833200 // add r3, r3, r0, lsl #4
6441 .long 0xf403008f // vst4.32 {d0-d3}, [r3]
6442 .long 0xe2813008 // add r3, r1, #8
6443 .long 0xe591c004 // ldr ip, [r1, #4]
6444 .long 0xe1a01003 // mov r1, r3
6445 .long 0xe12fff1c // bx ip
6446
Mike Klein7c4af542017-03-29 18:21:14 -04006447HIDDEN _sk_clamp_x_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006448.globl _sk_clamp_x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006449FUNCTION(_sk_clamp_x_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006450_sk_clamp_x_vfp4:
6451 .long 0xe8911008 // ldm r1, {r3, ip}
6452 .long 0xf2c00010 // vmov.i32 d16, #0
6453 .long 0xf3c71e1f // vmov.i8 d17, #255
6454 .long 0xf2400f80 // vmax.f32 d16, d16, d0
6455 .long 0xe2811008 // add r1, r1, #8
6456 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6457 .long 0xf26218a1 // vadd.i32 d17, d18, d17
6458 .long 0xf2200fa1 // vmin.f32 d0, d16, d17
6459 .long 0xe12fff1c // bx ip
6460
Mike Klein7c4af542017-03-29 18:21:14 -04006461HIDDEN _sk_clamp_y_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006462.globl _sk_clamp_y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006463FUNCTION(_sk_clamp_y_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006464_sk_clamp_y_vfp4:
6465 .long 0xe8911008 // ldm r1, {r3, ip}
6466 .long 0xf2c00010 // vmov.i32 d16, #0
6467 .long 0xf3c71e1f // vmov.i8 d17, #255
6468 .long 0xf2400f81 // vmax.f32 d16, d16, d1
6469 .long 0xe2811008 // add r1, r1, #8
6470 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6471 .long 0xf26218a1 // vadd.i32 d17, d18, d17
6472 .long 0xf2201fa1 // vmin.f32 d1, d16, d17
6473 .long 0xe12fff1c // bx ip
6474
Mike Klein7c4af542017-03-29 18:21:14 -04006475HIDDEN _sk_repeat_x_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006476.globl _sk_repeat_x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006477FUNCTION(_sk_repeat_x_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006478_sk_repeat_x_vfp4:
6479 .long 0xed2d8b04 // vpush {d8-d9}
6480 .long 0xe8911008 // ldm r1, {r3, ip}
6481 .long 0xf2c02010 // vmov.i32 d18, #0
6482 .long 0xe2811008 // add r1, r1, #8
6483 .long 0xeddf3b10 // vldr d19, [pc, #64]
6484 .long 0xed938a00 // vldr s16, [r3]
6485 .long 0xeec09a88 // vdiv.f32 s19, s1, s16
6486 .long 0xee809a08 // vdiv.f32 s18, s0, s16
6487 .long 0xf3fb0709 // vcvt.s32.f32 d16, d9
6488 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6489 .long 0xf3601e89 // vcgt.f32 d17, d16, d9
6490 .long 0xf35311b2 // vbsl d17, d19, d18
6491 .long 0xf3f42c08 // vdup.32 d18, d8[0]
6492 .long 0xf2600da1 // vsub.f32 d16, d16, d17
6493 .long 0xf3c71e1f // vmov.i8 d17, #255
6494 .long 0xf26218a1 // vadd.i32 d17, d18, d17
6495 .long 0xf2e009c8 // vmul.f32 d16, d16, d8[0]
6496 .long 0xf2600d20 // vsub.f32 d16, d0, d16
6497 .long 0xf2200fa1 // vmin.f32 d0, d16, d17
6498 .long 0xecbd8b04 // vpop {d8-d9}
6499 .long 0xe12fff1c // bx ip
6500 .long 0xe320f000 // nop {0}
6501 .long 0x3f800000 // .word 0x3f800000
6502 .long 0x3f800000 // .word 0x3f800000
6503
Mike Klein7c4af542017-03-29 18:21:14 -04006504HIDDEN _sk_repeat_y_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006505.globl _sk_repeat_y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006506FUNCTION(_sk_repeat_y_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006507_sk_repeat_y_vfp4:
6508 .long 0xed2d8b04 // vpush {d8-d9}
6509 .long 0xe8911008 // ldm r1, {r3, ip}
6510 .long 0xf2c02010 // vmov.i32 d18, #0
6511 .long 0xe2811008 // add r1, r1, #8
6512 .long 0xeddf3b10 // vldr d19, [pc, #64]
6513 .long 0xed938a00 // vldr s16, [r3]
6514 .long 0xeec19a88 // vdiv.f32 s19, s3, s16
6515 .long 0xee819a08 // vdiv.f32 s18, s2, s16
6516 .long 0xf3fb0709 // vcvt.s32.f32 d16, d9
6517 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6518 .long 0xf3601e89 // vcgt.f32 d17, d16, d9
6519 .long 0xf35311b2 // vbsl d17, d19, d18
6520 .long 0xf3f42c08 // vdup.32 d18, d8[0]
6521 .long 0xf2600da1 // vsub.f32 d16, d16, d17
6522 .long 0xf3c71e1f // vmov.i8 d17, #255
6523 .long 0xf26218a1 // vadd.i32 d17, d18, d17
6524 .long 0xf2e009c8 // vmul.f32 d16, d16, d8[0]
6525 .long 0xf2610d20 // vsub.f32 d16, d1, d16
6526 .long 0xf2201fa1 // vmin.f32 d1, d16, d17
6527 .long 0xecbd8b04 // vpop {d8-d9}
6528 .long 0xe12fff1c // bx ip
6529 .long 0xe320f000 // nop {0}
6530 .long 0x3f800000 // .word 0x3f800000
6531 .long 0x3f800000 // .word 0x3f800000
6532
Mike Klein7c4af542017-03-29 18:21:14 -04006533HIDDEN _sk_mirror_x_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006534.globl _sk_mirror_x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006535FUNCTION(_sk_mirror_x_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006536_sk_mirror_x_vfp4:
6537 .long 0xed2d8b04 // vpush {d8-d9}
6538 .long 0xe8911008 // ldm r1, {r3, ip}
6539 .long 0xf2c03010 // vmov.i32 d19, #0
6540 .long 0xe2811008 // add r1, r1, #8
6541 .long 0xeddf4b14 // vldr d20, [pc, #80]
6542 .long 0xed938a00 // vldr s16, [r3]
6543 .long 0xee389a08 // vadd.f32 s18, s16, s16
6544 .long 0xf3f40c08 // vdup.32 d16, d8[0]
6545 .long 0xf2200d20 // vsub.f32 d0, d0, d16
6546 .long 0xeec08a89 // vdiv.f32 s17, s1, s18
6547 .long 0xee808a09 // vdiv.f32 s16, s0, s18
6548 .long 0xf3fb1708 // vcvt.s32.f32 d17, d8
6549 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6550 .long 0xf3612e88 // vcgt.f32 d18, d17, d8
6551 .long 0xf35421b3 // vbsl d18, d20, d19
6552 .long 0xf2611da2 // vsub.f32 d17, d17, d18
6553 .long 0xf3c72e1f // vmov.i8 d18, #255
6554 .long 0xf2e119c9 // vmul.f32 d17, d17, d9[0]
6555 .long 0xf2601d21 // vsub.f32 d17, d0, d17
6556 .long 0xf2611da0 // vsub.f32 d17, d17, d16
6557 .long 0xf26008a2 // vadd.i32 d16, d16, d18
6558 .long 0xf3f91721 // vabs.f32 d17, d17
6559 .long 0xf2210fa0 // vmin.f32 d0, d17, d16
6560 .long 0xecbd8b04 // vpop {d8-d9}
6561 .long 0xe12fff1c // bx ip
6562 .long 0xe320f000 // nop {0}
6563 .long 0x3f800000 // .word 0x3f800000
6564 .long 0x3f800000 // .word 0x3f800000
6565
Mike Klein7c4af542017-03-29 18:21:14 -04006566HIDDEN _sk_mirror_y_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006567.globl _sk_mirror_y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006568FUNCTION(_sk_mirror_y_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006569_sk_mirror_y_vfp4:
6570 .long 0xed2d8b04 // vpush {d8-d9}
6571 .long 0xe8911008 // ldm r1, {r3, ip}
6572 .long 0xf2c03010 // vmov.i32 d19, #0
6573 .long 0xe2811008 // add r1, r1, #8
6574 .long 0xeddf4b14 // vldr d20, [pc, #80]
6575 .long 0xed938a00 // vldr s16, [r3]
6576 .long 0xee389a08 // vadd.f32 s18, s16, s16
6577 .long 0xf3f40c08 // vdup.32 d16, d8[0]
6578 .long 0xf2211d20 // vsub.f32 d1, d1, d16
6579 .long 0xeec18a89 // vdiv.f32 s17, s3, s18
6580 .long 0xee818a09 // vdiv.f32 s16, s2, s18
6581 .long 0xf3fb1708 // vcvt.s32.f32 d17, d8
6582 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6583 .long 0xf3612e88 // vcgt.f32 d18, d17, d8
6584 .long 0xf35421b3 // vbsl d18, d20, d19
6585 .long 0xf2611da2 // vsub.f32 d17, d17, d18
6586 .long 0xf3c72e1f // vmov.i8 d18, #255
6587 .long 0xf2e119c9 // vmul.f32 d17, d17, d9[0]
6588 .long 0xf2611d21 // vsub.f32 d17, d1, d17
6589 .long 0xf2611da0 // vsub.f32 d17, d17, d16
6590 .long 0xf26008a2 // vadd.i32 d16, d16, d18
6591 .long 0xf3f91721 // vabs.f32 d17, d17
6592 .long 0xf2211fa0 // vmin.f32 d1, d17, d16
6593 .long 0xecbd8b04 // vpop {d8-d9}
6594 .long 0xe12fff1c // bx ip
6595 .long 0xe320f000 // nop {0}
6596 .long 0x3f800000 // .word 0x3f800000
6597 .long 0x3f800000 // .word 0x3f800000
6598
Mike Klein7c4af542017-03-29 18:21:14 -04006599HIDDEN _sk_luminance_to_alpha_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006600.globl _sk_luminance_to_alpha_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006601FUNCTION(_sk_luminance_to_alpha_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006602_sk_luminance_to_alpha_vfp4:
6603 .long 0xeddf0b0a // vldr d16, [pc, #40]
6604 .long 0xeddf1b0b // vldr d17, [pc, #44]
6605 .long 0xf3410d30 // vmul.f32 d16, d1, d16
6606 .long 0xe4913004 // ldr r3, [r1], #4
6607 .long 0xf3401d31 // vmul.f32 d17, d0, d17
6608 .long 0xf2800010 // vmov.i32 d0, #0
6609 .long 0xf2801010 // vmov.i32 d1, #0
6610 .long 0xf2013da0 // vadd.f32 d3, d17, d16
6611 .long 0xeddf0b06 // vldr d16, [pc, #24]
6612 .long 0xf2023c30 // vfma.f32 d3, d2, d16
6613 .long 0xf2802010 // vmov.i32 d2, #0
6614 .long 0xe12fff13 // bx r3
6615 .long 0x3f371759 // .word 0x3f371759
6616 .long 0x3f371759 // .word 0x3f371759
6617 .long 0x3e59b3d0 // .word 0x3e59b3d0
6618 .long 0x3e59b3d0 // .word 0x3e59b3d0
6619 .long 0x3d93dd98 // .word 0x3d93dd98
6620 .long 0x3d93dd98 // .word 0x3d93dd98
6621
Mike Klein7c4af542017-03-29 18:21:14 -04006622HIDDEN _sk_matrix_2x3_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006623.globl _sk_matrix_2x3_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006624FUNCTION(_sk_matrix_2x3_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006625_sk_matrix_2x3_vfp4:
6626 .long 0xe92d4800 // push {fp, lr}
6627 .long 0xe591e000 // ldr lr, [r1]
6628 .long 0xe591c004 // ldr ip, [r1, #4]
6629 .long 0xe2811008 // add r1, r1, #8
6630 .long 0xe28e300c // add r3, lr, #12
6631 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6632 .long 0xe28e3008 // add r3, lr, #8
6633 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6634 .long 0xe28e3010 // add r3, lr, #16
6635 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6636 .long 0xe28e3014 // add r3, lr, #20
6637 .long 0xf2410c31 // vfma.f32 d16, d1, d17
6638 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6639 .long 0xf2411c32 // vfma.f32 d17, d1, d18
6640 .long 0xf4ee2c9d // vld1.32 {d18[]}, [lr :32]!
6641 .long 0xf4ee3c9f // vld1.32 {d19[]}, [lr :32]
6642 .long 0xf2400c32 // vfma.f32 d16, d0, d18
6643 .long 0xf2401c33 // vfma.f32 d17, d0, d19
6644 .long 0xf22001b0 // vorr d0, d16, d16
6645 .long 0xf22111b1 // vorr d1, d17, d17
6646 .long 0xe8bd4800 // pop {fp, lr}
6647 .long 0xe12fff1c // bx ip
6648
Mike Klein7c4af542017-03-29 18:21:14 -04006649HIDDEN _sk_matrix_3x4_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006650.globl _sk_matrix_3x4_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006651FUNCTION(_sk_matrix_3x4_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006652_sk_matrix_3x4_vfp4:
6653 .long 0xe92d4800 // push {fp, lr}
6654 .long 0xe591e000 // ldr lr, [r1]
6655 .long 0xe591c004 // ldr ip, [r1, #4]
6656 .long 0xe2811008 // add r1, r1, #8
6657 .long 0xe28e3020 // add r3, lr, #32
6658 .long 0xf4e33c9f // vld1.32 {d19[]}, [r3 :32]
6659 .long 0xe28e302c // add r3, lr, #44
6660 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6661 .long 0xe28e301c // add r3, lr, #28
6662 .long 0xf2420c33 // vfma.f32 d16, d2, d19
6663 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6664 .long 0xe28e3018 // add r3, lr, #24
6665 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6666 .long 0xe28e3024 // add r3, lr, #36
6667 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6668 .long 0xe28e3028 // add r3, lr, #40
6669 .long 0xf2421c32 // vfma.f32 d17, d2, d18
6670 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6671 .long 0xe28e3010 // add r3, lr, #16
6672 .long 0xf2422c34 // vfma.f32 d18, d2, d20
6673 .long 0xf4e33c9f // vld1.32 {d19[]}, [r3 :32]
6674 .long 0xe28e300c // add r3, lr, #12
6675 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6676 .long 0xe28e3014 // add r3, lr, #20
6677 .long 0xf2411c34 // vfma.f32 d17, d1, d20
6678 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6679 .long 0xf2410c34 // vfma.f32 d16, d1, d20
6680 .long 0xe28e3008 // add r3, lr, #8
6681 .long 0xf2412c33 // vfma.f32 d18, d1, d19
6682 .long 0xf4ee3c9d // vld1.32 {d19[]}, [lr :32]!
6683 .long 0xf4ee4c9f // vld1.32 {d20[]}, [lr :32]
6684 .long 0xf2401c33 // vfma.f32 d17, d0, d19
6685 .long 0xf4e33c9f // vld1.32 {d19[]}, [r3 :32]
6686 .long 0xf2400c33 // vfma.f32 d16, d0, d19
6687 .long 0xf2402c34 // vfma.f32 d18, d0, d20
6688 .long 0xf22101b1 // vorr d0, d17, d17
6689 .long 0xf22021b0 // vorr d2, d16, d16
6690 .long 0xf22211b2 // vorr d1, d18, d18
6691 .long 0xe8bd4800 // pop {fp, lr}
6692 .long 0xe12fff1c // bx ip
6693
Mike Klein7c4af542017-03-29 18:21:14 -04006694HIDDEN _sk_matrix_4x5_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006695.globl _sk_matrix_4x5_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006696FUNCTION(_sk_matrix_4x5_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006697_sk_matrix_4x5_vfp4:
6698 .long 0xe92d4010 // push {r4, lr}
6699 .long 0xe8911008 // ldm r1, {r3, ip}
6700 .long 0xf2620112 // vorr d16, d2, d2
6701 .long 0xe2811008 // add r1, r1, #8
6702 .long 0xe2834014 // add r4, r3, #20
6703 .long 0xe1a0e003 // mov lr, r3
6704 .long 0xf4e45c9f // vld1.32 {d21[]}, [r4 :32]
6705 .long 0xe2834028 // add r4, r3, #40
6706 .long 0xf4e46c9f // vld1.32 {d22[]}, [r4 :32]
6707 .long 0xe2834038 // add r4, r3, #56
6708 .long 0xf4e47c9f // vld1.32 {d23[]}, [r4 :32]
6709 .long 0xe2834048 // add r4, r3, #72
6710 .long 0xf4a42c9f // vld1.32 {d2[]}, [r4 :32]
6711 .long 0xe2834034 // add r4, r3, #52
6712 .long 0xf2032c37 // vfma.f32 d2, d3, d23
6713 .long 0xf4e48c9f // vld1.32 {d24[]}, [r4 :32]
6714 .long 0xe2834044 // add r4, r3, #68
6715 .long 0xf4e41c9f // vld1.32 {d17[]}, [r4 :32]
6716 .long 0xe2834030 // add r4, r3, #48
6717 .long 0xf2431c38 // vfma.f32 d17, d3, d24
6718 .long 0xf4e49c9f // vld1.32 {d25[]}, [r4 :32]
6719 .long 0xe283403c // add r4, r3, #60
6720 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
6721 .long 0xe283404c // add r4, r3, #76
6722 .long 0xf2002cb6 // vfma.f32 d2, d16, d22
6723 .long 0xf4e42c9f // vld1.32 {d18[]}, [r4 :32]
6724 .long 0xe2834040 // add r4, r3, #64
6725 .long 0xf2432c33 // vfma.f32 d18, d3, d19
6726 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
6727 .long 0xe2834020 // add r4, r3, #32
6728 .long 0xf2433c39 // vfma.f32 d19, d3, d25
6729 .long 0xf4e47c9f // vld1.32 {d23[]}, [r4 :32]
6730 .long 0xe283402c // add r4, r3, #44
6731 .long 0xf4e48c9f // vld1.32 {d24[]}, [r4 :32]
6732 .long 0xe2834024 // add r4, r3, #36
6733 .long 0xf2402cb8 // vfma.f32 d18, d16, d24
6734 .long 0xf4e48c9f // vld1.32 {d24[]}, [r4 :32]
6735 .long 0xf2401cb8 // vfma.f32 d17, d16, d24
6736 .long 0xe2834010 // add r4, r3, #16
6737 .long 0xf2403cb7 // vfma.f32 d19, d16, d23
6738 .long 0xf4ee4c9d // vld1.32 {d20[]}, [lr :32]!
6739 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
6740 .long 0xe283401c // add r4, r3, #28
6741 .long 0xf4e46c9f // vld1.32 {d22[]}, [r4 :32]
6742 .long 0xe2834018 // add r4, r3, #24
6743 .long 0xf2412c36 // vfma.f32 d18, d1, d22
6744 .long 0xf2411c35 // vfma.f32 d17, d1, d21
6745 .long 0xf4ee5c9f // vld1.32 {d21[]}, [lr :32]
6746 .long 0xf2413c30 // vfma.f32 d19, d1, d16
6747 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
6748 .long 0xe2834008 // add r4, r3, #8
6749 .long 0xe283300c // add r3, r3, #12
6750 .long 0xf2012c30 // vfma.f32 d2, d1, d16
6751 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
6752 .long 0xf2401c35 // vfma.f32 d17, d0, d21
6753 .long 0xf2403c34 // vfma.f32 d19, d0, d20
6754 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6755 .long 0xf2402c34 // vfma.f32 d18, d0, d20
6756 .long 0xf2002c30 // vfma.f32 d2, d0, d16
6757 .long 0xf22111b1 // vorr d1, d17, d17
6758 .long 0xf22301b3 // vorr d0, d19, d19
6759 .long 0xf22231b2 // vorr d3, d18, d18
6760 .long 0xe8bd4010 // pop {r4, lr}
6761 .long 0xe12fff1c // bx ip
6762
Mike Klein7c4af542017-03-29 18:21:14 -04006763HIDDEN _sk_matrix_perspective_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006764.globl _sk_matrix_perspective_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006765FUNCTION(_sk_matrix_perspective_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006766_sk_matrix_perspective_vfp4:
6767 .long 0xe92d4010 // push {r4, lr}
6768 .long 0xe591e000 // ldr lr, [r1]
6769 .long 0xe591c004 // ldr ip, [r1, #4]
6770 .long 0xe2811008 // add r1, r1, #8
6771 .long 0xe28e301c // add r3, lr, #28
6772 .long 0xe28e4010 // add r4, lr, #16
6773 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6774 .long 0xe28e3020 // add r3, lr, #32
6775 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6776 .long 0xe28e3018 // add r3, lr, #24
6777 .long 0xf2411c30 // vfma.f32 d17, d1, d16
6778 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6779 .long 0xe1a0300e // mov r3, lr
6780 .long 0xf4e42c9f // vld1.32 {d18[]}, [r4 :32]
6781 .long 0xe28e4008 // add r4, lr, #8
6782 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
6783 .long 0xf2401c30 // vfma.f32 d17, d0, d16
6784 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
6785 .long 0xf4e35c9f // vld1.32 {d21[]}, [r3 :32]
6786 .long 0xe28e3014 // add r3, lr, #20
6787 .long 0xf2413c35 // vfma.f32 d19, d1, d21
6788 .long 0xf4e35c9f // vld1.32 {d21[]}, [r3 :32]
6789 .long 0xe28e300c // add r3, lr, #12
6790 .long 0xf2415c32 // vfma.f32 d21, d1, d18
6791 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6792 .long 0xf3fb4521 // vrecpe.f32 d20, d17
6793 .long 0xf2403c30 // vfma.f32 d19, d0, d16
6794 .long 0xf2411fb4 // vrecps.f32 d17, d17, d20
6795 .long 0xf2405c32 // vfma.f32 d21, d0, d18
6796 .long 0xf3440db1 // vmul.f32 d16, d20, d17
6797 .long 0xf3030db0 // vmul.f32 d0, d19, d16
6798 .long 0xf3051db0 // vmul.f32 d1, d21, d16
6799 .long 0xe8bd4010 // pop {r4, lr}
6800 .long 0xe12fff1c // bx ip
6801
Herb Derby7b4202d2017-04-10 10:52:34 -04006802HIDDEN _sk_linear_gradient_vfp4
6803.globl _sk_linear_gradient_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006804FUNCTION(_sk_linear_gradient_vfp4)
Herb Derby7b4202d2017-04-10 10:52:34 -04006805_sk_linear_gradient_vfp4:
6806 .long 0xe92d4010 // push {r4, lr}
6807 .long 0xe591e000 // ldr lr, [r1]
6808 .long 0xe28e3014 // add r3, lr, #20
6809 .long 0xe1a0400e // mov r4, lr
6810 .long 0xf4a33c9f // vld1.32 {d3[]}, [r3 :32]
6811 .long 0xe28e3010 // add r3, lr, #16
6812 .long 0xf4a32c9f // vld1.32 {d2[]}, [r3 :32]
6813 .long 0xe28e3008 // add r3, lr, #8
6814 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6815 .long 0xe494c00c // ldr ip, [r4], #12
6816 .long 0xf4a41c9f // vld1.32 {d1[]}, [r4 :32]
6817 .long 0xe35c0000 // cmp ip, #0
Mike Kleinb3665f02017-05-01 14:56:04 -04006818 .long 0x0a000036 // beq 2d78 <sk_linear_gradient_vfp4+0x110>
Herb Derby7b4202d2017-04-10 10:52:34 -04006819 .long 0xe59e3004 // ldr r3, [lr, #4]
6820 .long 0xf2c01010 // vmov.i32 d17, #0
6821 .long 0xf2c07010 // vmov.i32 d23, #0
6822 .long 0xf2c08010 // vmov.i32 d24, #0
6823 .long 0xe2833020 // add r3, r3, #32
6824 .long 0xf2c06010 // vmov.i32 d22, #0
6825 .long 0xe2434018 // sub r4, r3, #24
6826 .long 0xf4e33c9f // vld1.32 {d19[]}, [r3 :32]
6827 .long 0xe25cc001 // subs ip, ip, #1
6828 .long 0xf4e4dc9f // vld1.32 {d29[]}, [r4 :32]
6829 .long 0xe2434014 // sub r4, r3, #20
6830 .long 0xf4e45c9f // vld1.32 {d21[]}, [r4 :32]
6831 .long 0xe243400c // sub r4, r3, #12
6832 .long 0xf4e44c9f // vld1.32 {d20[]}, [r4 :32]
6833 .long 0xe2434020 // sub r4, r3, #32
6834 .long 0xf4e42c9f // vld1.32 {d18[]}, [r4 :32]
6835 .long 0xe2434004 // sub r4, r3, #4
6836 .long 0xf3622e80 // vcgt.f32 d18, d18, d0
6837 .long 0xf4e4bc9f // vld1.32 {d27[]}, [r4 :32]
6838 .long 0xe2434008 // sub r4, r3, #8
6839 .long 0xf4e4cc9f // vld1.32 {d28[]}, [r4 :32]
6840 .long 0xe2434010 // sub r4, r3, #16
6841 .long 0xf262a1b2 // vorr d26, d18, d18
6842 .long 0xf4e4ec9f // vld1.32 {d30[]}, [r4 :32]
6843 .long 0xe243401c // sub r4, r3, #28
6844 .long 0xf352a13b // vbsl d26, d2, d27
6845 .long 0xe2833024 // add r3, r3, #36
6846 .long 0xf262b1b2 // vorr d27, d18, d18
6847 .long 0xf26291b2 // vorr d25, d18, d18
6848 .long 0xf351b13c // vbsl d27, d1, d28
6849 .long 0xf262c1b2 // vorr d28, d18, d18
6850 .long 0xf3539133 // vbsl d25, d3, d19
6851 .long 0xf350c1b4 // vbsl d28, d16, d20
6852 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
6853 .long 0xf26241b2 // vorr d20, d18, d18
6854 .long 0xf26231b2 // vorr d19, d18, d18
6855 .long 0xf35841b5 // vbsl d20, d24, d21
6856 .long 0xf26251b2 // vorr d21, d18, d18
6857 .long 0xf35121b0 // vbsl d18, d17, d16
6858 .long 0xf35731be // vbsl d19, d23, d30
6859 .long 0xf35651bd // vbsl d21, d22, d29
6860 .long 0xf26211b2 // vorr d17, d18, d18
6861 .long 0xf22931b9 // vorr d3, d25, d25
6862 .long 0xf22a21ba // vorr d2, d26, d26
6863 .long 0xf22b11bb // vorr d1, d27, d27
6864 .long 0xf26c01bc // vorr d16, d28, d28
6865 .long 0xf26371b3 // vorr d23, d19, d19
6866 .long 0xf26481b4 // vorr d24, d20, d20
6867 .long 0xf26561b5 // vorr d22, d21, d21
Mike Kleinb3665f02017-05-01 14:56:04 -04006868 .long 0x1affffd3 // bne 2cb4 <sk_linear_gradient_vfp4+0x4c>
Herb Derby7b4202d2017-04-10 10:52:34 -04006869 .long 0xf26c01bc // vorr d16, d28, d28
6870 .long 0xf22b11bb // vorr d1, d27, d27
6871 .long 0xf22a21ba // vorr d2, d26, d26
6872 .long 0xf22931b9 // vorr d3, d25, d25
Mike Kleinb3665f02017-05-01 14:56:04 -04006873 .long 0xea000003 // b 2d88 <sk_linear_gradient_vfp4+0x120>
Herb Derby7b4202d2017-04-10 10:52:34 -04006874 .long 0xf2c05010 // vmov.i32 d21, #0
6875 .long 0xf2c04010 // vmov.i32 d20, #0
6876 .long 0xf2c03010 // vmov.i32 d19, #0
6877 .long 0xf2c02010 // vmov.i32 d18, #0
6878 .long 0xf2400c32 // vfma.f32 d16, d0, d18
6879 .long 0xe5913004 // ldr r3, [r1, #4]
6880 .long 0xf2001c35 // vfma.f32 d1, d0, d21
6881 .long 0xe2811008 // add r1, r1, #8
6882 .long 0xf2002c34 // vfma.f32 d2, d0, d20
6883 .long 0xf2003c33 // vfma.f32 d3, d0, d19
6884 .long 0xf22001b0 // vorr d0, d16, d16
6885 .long 0xe8bd4010 // pop {r4, lr}
6886 .long 0xe12fff13 // bx r3
6887
Mike Klein7c4af542017-03-29 18:21:14 -04006888HIDDEN _sk_linear_gradient_2stops_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006889.globl _sk_linear_gradient_2stops_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006890FUNCTION(_sk_linear_gradient_2stops_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006891_sk_linear_gradient_2stops_vfp4:
Mike Klein8a823fa2017-04-05 17:29:26 -04006892 .long 0xe92d4010 // push {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04006893 .long 0xe8911008 // ldm r1, {r3, ip}
6894 .long 0xe2811008 // add r1, r1, #8
Herb Derby7b4202d2017-04-10 10:52:34 -04006895 .long 0xe283400c // add r4, r3, #12
Mike Klein8a823fa2017-04-05 17:29:26 -04006896 .long 0xe1a0e003 // mov lr, r3
Mike Klein8a823fa2017-04-05 17:29:26 -04006897 .long 0xf4e42c9f // vld1.32 {d18[]}, [r4 :32]
Mike Klein8a823fa2017-04-05 17:29:26 -04006898 .long 0xe2834008 // add r4, r3, #8
Herb Derby7b4202d2017-04-10 10:52:34 -04006899 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
6900 .long 0xe2834018 // add r4, r3, #24
Mike Klein8a823fa2017-04-05 17:29:26 -04006901 .long 0xf4a42c9f // vld1.32 {d2[]}, [r4 :32]
Herb Derby7b4202d2017-04-10 10:52:34 -04006902 .long 0xe2834010 // add r4, r3, #16
6903 .long 0xf2002c33 // vfma.f32 d2, d0, d19
6904 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
6905 .long 0xe283401c // add r4, r3, #28
6906 .long 0xe2833014 // add r3, r3, #20
6907 .long 0xf4ee1c9d // vld1.32 {d17[]}, [lr :32]!
6908 .long 0xf2400c31 // vfma.f32 d16, d0, d17
6909 .long 0xf4a43c9f // vld1.32 {d3[]}, [r4 :32]
6910 .long 0xf2003c32 // vfma.f32 d3, d0, d18
6911 .long 0xf4ee1c9f // vld1.32 {d17[]}, [lr :32]
6912 .long 0xf4a31c9f // vld1.32 {d1[]}, [r3 :32]
6913 .long 0xf2001c31 // vfma.f32 d1, d0, d17
Mike Kleind7e06ae2017-03-29 16:33:06 -04006914 .long 0xf22001b0 // vorr d0, d16, d16
Mike Klein8a823fa2017-04-05 17:29:26 -04006915 .long 0xe8bd4010 // pop {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04006916 .long 0xe12fff1c // bx ip
Mike Klein0a904492017-04-12 12:52:48 -04006917
6918HIDDEN _sk_save_xy_vfp4
6919.globl _sk_save_xy_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006920FUNCTION(_sk_save_xy_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04006921_sk_save_xy_vfp4:
6922 .long 0xf2c3061f // vmov.i32 d16, #1056964608
6923 .long 0xeddf7b17 // vldr d23, [pc, #92]
6924 .long 0xf2c06010 // vmov.i32 d22, #0
6925 .long 0xe5913000 // ldr r3, [r1]
6926 .long 0xf2401d20 // vadd.f32 d17, d0, d16
6927 .long 0xf2410d20 // vadd.f32 d16, d1, d16
6928 .long 0xed830b00 // vstr d0, [r3]
6929 .long 0xed831b08 // vstr d1, [r3, #32]
6930 .long 0xf3fb2721 // vcvt.s32.f32 d18, d17
6931 .long 0xf3fb3720 // vcvt.s32.f32 d19, d16
6932 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6933 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
6934 .long 0xf3624ea1 // vcgt.f32 d20, d18, d17
6935 .long 0xf3635ea0 // vcgt.f32 d21, d19, d16
6936 .long 0xf35741b6 // vbsl d20, d23, d22
6937 .long 0xf35751b6 // vbsl d21, d23, d22
6938 .long 0xf2622da4 // vsub.f32 d18, d18, d20
6939 .long 0xf2633da5 // vsub.f32 d19, d19, d21
6940 .long 0xf2611da2 // vsub.f32 d17, d17, d18
6941 .long 0xf2600da3 // vsub.f32 d16, d16, d19
6942 .long 0xedc31b10 // vstr d17, [r3, #64]
6943 .long 0xedc30b18 // vstr d16, [r3, #96]
6944 .long 0xe2813008 // add r3, r1, #8
6945 .long 0xe591c004 // ldr ip, [r1, #4]
6946 .long 0xe1a01003 // mov r1, r3
6947 .long 0xe12fff1c // bx ip
6948 .long 0x3f800000 // .word 0x3f800000
6949 .long 0x3f800000 // .word 0x3f800000
6950
6951HIDDEN _sk_accumulate_vfp4
6952.globl _sk_accumulate_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006953FUNCTION(_sk_accumulate_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04006954_sk_accumulate_vfp4:
6955 .long 0xe8911008 // ldm r1, {r3, ip}
6956 .long 0xe2811008 // add r1, r1, #8
6957 .long 0xedd31b28 // vldr d17, [r3, #160]
6958 .long 0xedd30b20 // vldr d16, [r3, #128]
6959 .long 0xf3400db1 // vmul.f32 d16, d16, d17
6960 .long 0xf2004c90 // vfma.f32 d4, d16, d0
6961 .long 0xf2005c91 // vfma.f32 d5, d16, d1
6962 .long 0xf2006c92 // vfma.f32 d6, d16, d2
6963 .long 0xf2007c93 // vfma.f32 d7, d16, d3
6964 .long 0xe12fff1c // bx ip
6965
6966HIDDEN _sk_bilinear_nx_vfp4
6967.globl _sk_bilinear_nx_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006968FUNCTION(_sk_bilinear_nx_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04006969_sk_bilinear_nx_vfp4:
6970 .long 0xe5913000 // ldr r3, [r1]
6971 .long 0xf2c70f10 // vmov.f32 d16, #1
6972 .long 0xedd32b10 // vldr d18, [r3, #64]
6973 .long 0xf2600da2 // vsub.f32 d16, d16, d18
6974 .long 0xedd31b00 // vldr d17, [r3]
6975 .long 0xf3c3261f // vmov.i32 d18, #-1090519040
6976 .long 0xf2010da2 // vadd.f32 d0, d17, d18
6977 .long 0xedc30b20 // vstr d16, [r3, #128]
6978 .long 0xe2813008 // add r3, r1, #8
6979 .long 0xe591c004 // ldr ip, [r1, #4]
6980 .long 0xe1a01003 // mov r1, r3
6981 .long 0xe12fff1c // bx ip
6982
6983HIDDEN _sk_bilinear_px_vfp4
6984.globl _sk_bilinear_px_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006985FUNCTION(_sk_bilinear_px_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04006986_sk_bilinear_px_vfp4:
6987 .long 0xe5913000 // ldr r3, [r1]
6988 .long 0xf2c3061f // vmov.i32 d16, #1056964608
6989 .long 0xedd31b00 // vldr d17, [r3]
6990 .long 0xedd32b10 // vldr d18, [r3, #64]
6991 .long 0xf2010da0 // vadd.f32 d0, d17, d16
6992 .long 0xedc32b20 // vstr d18, [r3, #128]
6993 .long 0xe2813008 // add r3, r1, #8
6994 .long 0xe591c004 // ldr ip, [r1, #4]
6995 .long 0xe1a01003 // mov r1, r3
6996 .long 0xe12fff1c // bx ip
6997
6998HIDDEN _sk_bilinear_ny_vfp4
6999.globl _sk_bilinear_ny_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007000FUNCTION(_sk_bilinear_ny_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007001_sk_bilinear_ny_vfp4:
7002 .long 0xe5913000 // ldr r3, [r1]
7003 .long 0xf2c70f10 // vmov.f32 d16, #1
7004 .long 0xedd32b18 // vldr d18, [r3, #96]
7005 .long 0xf2600da2 // vsub.f32 d16, d16, d18
7006 .long 0xedd31b08 // vldr d17, [r3, #32]
7007 .long 0xf3c3261f // vmov.i32 d18, #-1090519040
7008 .long 0xf2011da2 // vadd.f32 d1, d17, d18
7009 .long 0xedc30b28 // vstr d16, [r3, #160]
7010 .long 0xe2813008 // add r3, r1, #8
7011 .long 0xe591c004 // ldr ip, [r1, #4]
7012 .long 0xe1a01003 // mov r1, r3
7013 .long 0xe12fff1c // bx ip
7014
7015HIDDEN _sk_bilinear_py_vfp4
7016.globl _sk_bilinear_py_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007017FUNCTION(_sk_bilinear_py_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007018_sk_bilinear_py_vfp4:
7019 .long 0xe5913000 // ldr r3, [r1]
7020 .long 0xf2c3061f // vmov.i32 d16, #1056964608
7021 .long 0xedd31b08 // vldr d17, [r3, #32]
7022 .long 0xedd32b18 // vldr d18, [r3, #96]
7023 .long 0xf2011da0 // vadd.f32 d1, d17, d16
7024 .long 0xedc32b28 // vstr d18, [r3, #160]
7025 .long 0xe2813008 // add r3, r1, #8
7026 .long 0xe591c004 // ldr ip, [r1, #4]
7027 .long 0xe1a01003 // mov r1, r3
7028 .long 0xe12fff1c // bx ip
7029
7030HIDDEN _sk_bicubic_n3x_vfp4
7031.globl _sk_bicubic_n3x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007032FUNCTION(_sk_bicubic_n3x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007033_sk_bicubic_n3x_vfp4:
7034 .long 0xe5913000 // ldr r3, [r1]
7035 .long 0xf2c70f10 // vmov.f32 d16, #1
7036 .long 0xeddf3b10 // vldr d19, [pc, #64]
7037 .long 0xedd32b10 // vldr d18, [r3, #64]
7038 .long 0xf2600da2 // vsub.f32 d16, d16, d18
7039 .long 0xeddf2b0b // vldr d18, [pc, #44]
7040 .long 0xedd31b00 // vldr d17, [r3]
7041 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7042 .long 0xf3400db0 // vmul.f32 d16, d16, d16
7043 .long 0xf3c72f18 // vmov.f32 d18, #-1.5
7044 .long 0xf2010da2 // vadd.f32 d0, d17, d18
7045 .long 0xf3400db3 // vmul.f32 d16, d16, d19
7046 .long 0xedc30b20 // vstr d16, [r3, #128]
7047 .long 0xe2813008 // add r3, r1, #8
7048 .long 0xe591c004 // ldr ip, [r1, #4]
7049 .long 0xe1a01003 // mov r1, r3
7050 .long 0xe12fff1c // bx ip
7051 .long 0xe320f000 // nop {0}
7052 .long 0x3ec71c72 // .word 0x3ec71c72
7053 .long 0x3ec71c72 // .word 0x3ec71c72
7054 .long 0xbeaaaaab // .word 0xbeaaaaab
7055 .long 0xbeaaaaab // .word 0xbeaaaaab
7056
7057HIDDEN _sk_bicubic_n1x_vfp4
7058.globl _sk_bicubic_n1x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007059FUNCTION(_sk_bicubic_n1x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007060_sk_bicubic_n1x_vfp4:
7061 .long 0xe5913000 // ldr r3, [r1]
7062 .long 0xf2c70f10 // vmov.f32 d16, #1
7063 .long 0xf2c73f18 // vmov.f32 d19, #1.5
7064 .long 0xedd32b10 // vldr d18, [r3, #64]
7065 .long 0xf2600da2 // vsub.f32 d16, d16, d18
7066 .long 0xeddf2b0d // vldr d18, [pc, #52]
7067 .long 0xedd31b00 // vldr d17, [r3]
7068 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7069 .long 0xf2c3261f // vmov.i32 d18, #1056964608
7070 .long 0xf2402cb3 // vfma.f32 d18, d16, d19
7071 .long 0xeddf3b0a // vldr d19, [pc, #40]
7072 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7073 .long 0xf3c3061f // vmov.i32 d16, #-1090519040
7074 .long 0xf2010da0 // vadd.f32 d0, d17, d16
7075 .long 0xedc33b20 // vstr d19, [r3, #128]
7076 .long 0xe2813008 // add r3, r1, #8
7077 .long 0xe591c004 // ldr ip, [r1, #4]
7078 .long 0xe1a01003 // mov r1, r3
7079 .long 0xe12fff1c // bx ip
7080 .long 0xe320f000 // nop {0}
7081 .long 0xbf955555 // .word 0xbf955555
7082 .long 0xbf955555 // .word 0xbf955555
7083 .long 0x3d638e39 // .word 0x3d638e39
7084 .long 0x3d638e39 // .word 0x3d638e39
7085
7086HIDDEN _sk_bicubic_p1x_vfp4
7087.globl _sk_bicubic_p1x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007088FUNCTION(_sk_bicubic_p1x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007089_sk_bicubic_p1x_vfp4:
7090 .long 0xe5913000 // ldr r3, [r1]
7091 .long 0xf2c71f18 // vmov.f32 d17, #1.5
7092 .long 0xeddf0b0c // vldr d16, [pc, #48]
7093 .long 0xedd33b10 // vldr d19, [r3, #64]
7094 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
7095 .long 0xedd32b00 // vldr d18, [r3]
7096 .long 0xf2c3061f // vmov.i32 d16, #1056964608
7097 .long 0xf2020da0 // vadd.f32 d0, d18, d16
7098 .long 0xf2430cb1 // vfma.f32 d16, d19, d17
7099 .long 0xeddf1b07 // vldr d17, [pc, #28]
7100 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
7101 .long 0xedc31b20 // vstr d17, [r3, #128]
7102 .long 0xe2813008 // add r3, r1, #8
7103 .long 0xe591c004 // ldr ip, [r1, #4]
7104 .long 0xe1a01003 // mov r1, r3
7105 .long 0xe12fff1c // bx ip
7106 .long 0xbf955555 // .word 0xbf955555
7107 .long 0xbf955555 // .word 0xbf955555
7108 .long 0x3d638e39 // .word 0x3d638e39
7109 .long 0x3d638e39 // .word 0x3d638e39
7110
7111HIDDEN _sk_bicubic_p3x_vfp4
7112.globl _sk_bicubic_p3x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007113FUNCTION(_sk_bicubic_p3x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007114_sk_bicubic_p3x_vfp4:
7115 .long 0xe5913000 // ldr r3, [r1]
7116 .long 0xeddf0b0d // vldr d16, [pc, #52]
7117 .long 0xeddf3b0e // vldr d19, [pc, #56]
7118 .long 0xedd32b10 // vldr d18, [r3, #64]
7119 .long 0xf2423cb0 // vfma.f32 d19, d18, d16
7120 .long 0xedd31b00 // vldr d17, [r3]
7121 .long 0xf3420db2 // vmul.f32 d16, d18, d18
7122 .long 0xf2c72f18 // vmov.f32 d18, #1.5
7123 .long 0xf2010da2 // vadd.f32 d0, d17, d18
7124 .long 0xf3400db3 // vmul.f32 d16, d16, d19
7125 .long 0xedc30b20 // vstr d16, [r3, #128]
7126 .long 0xe2813008 // add r3, r1, #8
7127 .long 0xe591c004 // ldr ip, [r1, #4]
7128 .long 0xe1a01003 // mov r1, r3
7129 .long 0xe12fff1c // bx ip
7130 .long 0xe320f000 // nop {0}
7131 .long 0x3ec71c72 // .word 0x3ec71c72
7132 .long 0x3ec71c72 // .word 0x3ec71c72
7133 .long 0xbeaaaaab // .word 0xbeaaaaab
7134 .long 0xbeaaaaab // .word 0xbeaaaaab
7135
7136HIDDEN _sk_bicubic_n3y_vfp4
7137.globl _sk_bicubic_n3y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007138FUNCTION(_sk_bicubic_n3y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007139_sk_bicubic_n3y_vfp4:
7140 .long 0xe5913000 // ldr r3, [r1]
7141 .long 0xf2c70f10 // vmov.f32 d16, #1
7142 .long 0xeddf3b10 // vldr d19, [pc, #64]
7143 .long 0xedd32b18 // vldr d18, [r3, #96]
7144 .long 0xf2600da2 // vsub.f32 d16, d16, d18
7145 .long 0xeddf2b0b // vldr d18, [pc, #44]
7146 .long 0xedd31b08 // vldr d17, [r3, #32]
7147 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7148 .long 0xf3400db0 // vmul.f32 d16, d16, d16
7149 .long 0xf3c72f18 // vmov.f32 d18, #-1.5
7150 .long 0xf2011da2 // vadd.f32 d1, d17, d18
7151 .long 0xf3400db3 // vmul.f32 d16, d16, d19
7152 .long 0xedc30b28 // vstr d16, [r3, #160]
7153 .long 0xe2813008 // add r3, r1, #8
7154 .long 0xe591c004 // ldr ip, [r1, #4]
7155 .long 0xe1a01003 // mov r1, r3
7156 .long 0xe12fff1c // bx ip
7157 .long 0xe320f000 // nop {0}
7158 .long 0x3ec71c72 // .word 0x3ec71c72
7159 .long 0x3ec71c72 // .word 0x3ec71c72
7160 .long 0xbeaaaaab // .word 0xbeaaaaab
7161 .long 0xbeaaaaab // .word 0xbeaaaaab
7162
7163HIDDEN _sk_bicubic_n1y_vfp4
7164.globl _sk_bicubic_n1y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007165FUNCTION(_sk_bicubic_n1y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007166_sk_bicubic_n1y_vfp4:
7167 .long 0xe5913000 // ldr r3, [r1]
7168 .long 0xf2c70f10 // vmov.f32 d16, #1
7169 .long 0xf2c73f18 // vmov.f32 d19, #1.5
7170 .long 0xedd32b18 // vldr d18, [r3, #96]
7171 .long 0xf2600da2 // vsub.f32 d16, d16, d18
7172 .long 0xeddf2b0d // vldr d18, [pc, #52]
7173 .long 0xedd31b08 // vldr d17, [r3, #32]
7174 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7175 .long 0xf2c3261f // vmov.i32 d18, #1056964608
7176 .long 0xf2402cb3 // vfma.f32 d18, d16, d19
7177 .long 0xeddf3b0a // vldr d19, [pc, #40]
7178 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7179 .long 0xf3c3061f // vmov.i32 d16, #-1090519040
7180 .long 0xf2011da0 // vadd.f32 d1, d17, d16
7181 .long 0xedc33b28 // vstr d19, [r3, #160]
7182 .long 0xe2813008 // add r3, r1, #8
7183 .long 0xe591c004 // ldr ip, [r1, #4]
7184 .long 0xe1a01003 // mov r1, r3
7185 .long 0xe12fff1c // bx ip
7186 .long 0xe320f000 // nop {0}
7187 .long 0xbf955555 // .word 0xbf955555
7188 .long 0xbf955555 // .word 0xbf955555
7189 .long 0x3d638e39 // .word 0x3d638e39
7190 .long 0x3d638e39 // .word 0x3d638e39
7191
7192HIDDEN _sk_bicubic_p1y_vfp4
7193.globl _sk_bicubic_p1y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007194FUNCTION(_sk_bicubic_p1y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007195_sk_bicubic_p1y_vfp4:
7196 .long 0xe5913000 // ldr r3, [r1]
7197 .long 0xf2c71f18 // vmov.f32 d17, #1.5
7198 .long 0xeddf0b0c // vldr d16, [pc, #48]
7199 .long 0xedd33b18 // vldr d19, [r3, #96]
7200 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
7201 .long 0xedd32b08 // vldr d18, [r3, #32]
7202 .long 0xf2c3061f // vmov.i32 d16, #1056964608
7203 .long 0xf2021da0 // vadd.f32 d1, d18, d16
7204 .long 0xf2430cb1 // vfma.f32 d16, d19, d17
7205 .long 0xeddf1b07 // vldr d17, [pc, #28]
7206 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
7207 .long 0xedc31b28 // vstr d17, [r3, #160]
7208 .long 0xe2813008 // add r3, r1, #8
7209 .long 0xe591c004 // ldr ip, [r1, #4]
7210 .long 0xe1a01003 // mov r1, r3
7211 .long 0xe12fff1c // bx ip
7212 .long 0xbf955555 // .word 0xbf955555
7213 .long 0xbf955555 // .word 0xbf955555
7214 .long 0x3d638e39 // .word 0x3d638e39
7215 .long 0x3d638e39 // .word 0x3d638e39
7216
7217HIDDEN _sk_bicubic_p3y_vfp4
7218.globl _sk_bicubic_p3y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007219FUNCTION(_sk_bicubic_p3y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007220_sk_bicubic_p3y_vfp4:
7221 .long 0xe5913000 // ldr r3, [r1]
7222 .long 0xeddf0b0d // vldr d16, [pc, #52]
7223 .long 0xeddf3b0e // vldr d19, [pc, #56]
7224 .long 0xedd32b18 // vldr d18, [r3, #96]
7225 .long 0xf2423cb0 // vfma.f32 d19, d18, d16
7226 .long 0xedd31b08 // vldr d17, [r3, #32]
7227 .long 0xf3420db2 // vmul.f32 d16, d18, d18
7228 .long 0xf2c72f18 // vmov.f32 d18, #1.5
7229 .long 0xf2011da2 // vadd.f32 d1, d17, d18
7230 .long 0xf3400db3 // vmul.f32 d16, d16, d19
7231 .long 0xedc30b28 // vstr d16, [r3, #160]
7232 .long 0xe2813008 // add r3, r1, #8
7233 .long 0xe591c004 // ldr ip, [r1, #4]
7234 .long 0xe1a01003 // mov r1, r3
7235 .long 0xe12fff1c // bx ip
7236 .long 0xe320f000 // nop {0}
7237 .long 0x3ec71c72 // .word 0x3ec71c72
7238 .long 0x3ec71c72 // .word 0x3ec71c72
7239 .long 0xbeaaaaab // .word 0xbeaaaaab
7240 .long 0xbeaaaaab // .word 0xbeaaaaab
Mike Klein7fee90c2017-04-07 16:55:09 -04007241
7242HIDDEN _sk_callback_vfp4
7243.globl _sk_callback_vfp4
7244FUNCTION(_sk_callback_vfp4)
7245_sk_callback_vfp4:
Mike Kleinc17dc242017-04-20 16:21:57 -04007246 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
7247 .long 0xed2d8b08 // vpush {d8-d11}
Mike Klein7fee90c2017-04-07 16:55:09 -04007248 .long 0xe1a05001 // mov r5, r1
7249 .long 0xe1a06000 // mov r6, r0
Mike Kleinc17dc242017-04-20 16:21:57 -04007250 .long 0xe5957000 // ldr r7, [r5]
Mike Klein7fee90c2017-04-07 16:55:09 -04007251 .long 0xe1a04002 // mov r4, r2
7252 .long 0xe3a01002 // mov r1, #2
7253 .long 0xeeb08b47 // vmov.f64 d8, d7
Mike Kleinc17dc242017-04-20 16:21:57 -04007254 .long 0xe2870004 // add r0, r7, #4
7255 .long 0xf400008f // vst4.32 {d0-d3}, [r0]
7256 .long 0xe1a00007 // mov r0, r7
7257 .long 0xe5972000 // ldr r2, [r7]
Mike Klein7fee90c2017-04-07 16:55:09 -04007258 .long 0xeeb09b46 // vmov.f64 d9, d6
7259 .long 0xeeb0ab45 // vmov.f64 d10, d5
7260 .long 0xeeb0bb44 // vmov.f64 d11, d4
Mike Klein7fee90c2017-04-07 16:55:09 -04007261 .long 0xe12fff32 // blx r2
Mike Kleinc17dc242017-04-20 16:21:57 -04007262 .long 0xe5970084 // ldr r0, [r7, #132]
Mike Klein7fee90c2017-04-07 16:55:09 -04007263 .long 0xe2851008 // add r1, r5, #8
7264 .long 0xe5953004 // ldr r3, [r5, #4]
Mike Klein7fee90c2017-04-07 16:55:09 -04007265 .long 0xe1a02004 // mov r2, r4
Mike Klein7fee90c2017-04-07 16:55:09 -04007266 .long 0xeeb04b4b // vmov.f64 d4, d11
Mike Kleinc17dc242017-04-20 16:21:57 -04007267 .long 0xf420008f // vld4.32 {d0-d3}, [r0]
7268 .long 0xe1a00006 // mov r0, r6
Mike Klein7fee90c2017-04-07 16:55:09 -04007269 .long 0xeeb05b4a // vmov.f64 d5, d10
7270 .long 0xeeb06b49 // vmov.f64 d6, d9
7271 .long 0xeeb07b48 // vmov.f64 d7, d8
Mike Kleinc17dc242017-04-20 16:21:57 -04007272 .long 0xecbd8b08 // vpop {d8-d11}
7273 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
Mike Klein7fee90c2017-04-07 16:55:09 -04007274 .long 0xe12fff13 // bx r3
Mike Kleind7e06ae2017-03-29 16:33:06 -04007275#elif defined(__x86_64__)
Mike Klein67e61712017-04-26 09:52:09 -04007276BALIGN32
Mike Kleind7e06ae2017-03-29 16:33:06 -04007277
Mike Klein7c4af542017-03-29 18:21:14 -04007278HIDDEN _sk_start_pipeline_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007279.globl _sk_start_pipeline_hsw
Mike Klein86714282017-04-13 17:37:38 -04007280FUNCTION(_sk_start_pipeline_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007281_sk_start_pipeline_hsw:
7282 .byte 65,87 // push %r15
7283 .byte 65,86 // push %r14
7284 .byte 65,85 // push %r13
7285 .byte 65,84 // push %r12
7286 .byte 83 // push %rbx
7287 .byte 73,137,205 // mov %rcx,%r13
7288 .byte 73,137,214 // mov %rdx,%r14
7289 .byte 72,137,251 // mov %rdi,%rbx
7290 .byte 72,173 // lods %ds:(%rsi),%rax
7291 .byte 73,137,199 // mov %rax,%r15
7292 .byte 73,137,244 // mov %rsi,%r12
7293 .byte 72,141,67,8 // lea 0x8(%rbx),%rax
7294 .byte 76,57,232 // cmp %r13,%rax
7295 .byte 118,5 // jbe 28 <_sk_start_pipeline_hsw+0x28>
7296 .byte 72,137,223 // mov %rbx,%rdi
7297 .byte 235,65 // jmp 69 <_sk_start_pipeline_hsw+0x69>
7298 .byte 185,0,0,0,0 // mov $0x0,%ecx
7299 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
7300 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
7301 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
7302 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
7303 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
7304 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
7305 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
7306 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
7307 .byte 72,137,223 // mov %rbx,%rdi
7308 .byte 76,137,230 // mov %r12,%rsi
7309 .byte 76,137,242 // mov %r14,%rdx
7310 .byte 65,255,215 // callq *%r15
7311 .byte 72,141,123,8 // lea 0x8(%rbx),%rdi
7312 .byte 72,131,195,16 // add $0x10,%rbx
7313 .byte 76,57,235 // cmp %r13,%rbx
7314 .byte 72,137,251 // mov %rdi,%rbx
7315 .byte 118,191 // jbe 28 <_sk_start_pipeline_hsw+0x28>
7316 .byte 76,137,233 // mov %r13,%rcx
7317 .byte 72,41,249 // sub %rdi,%rcx
7318 .byte 116,41 // je 9a <_sk_start_pipeline_hsw+0x9a>
7319 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
7320 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
7321 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
7322 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
7323 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
7324 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
7325 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
7326 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
7327 .byte 76,137,230 // mov %r12,%rsi
7328 .byte 76,137,242 // mov %r14,%rdx
7329 .byte 65,255,215 // callq *%r15
7330 .byte 76,137,232 // mov %r13,%rax
7331 .byte 91 // pop %rbx
7332 .byte 65,92 // pop %r12
7333 .byte 65,93 // pop %r13
7334 .byte 65,94 // pop %r14
7335 .byte 65,95 // pop %r15
7336 .byte 197,248,119 // vzeroupper
7337 .byte 195 // retq
7338
Mike Klein7c4af542017-03-29 18:21:14 -04007339HIDDEN _sk_just_return_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007340.globl _sk_just_return_hsw
Mike Klein86714282017-04-13 17:37:38 -04007341FUNCTION(_sk_just_return_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007342_sk_just_return_hsw:
7343 .byte 195 // retq
7344
Mike Klein7c4af542017-03-29 18:21:14 -04007345HIDDEN _sk_seed_shader_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007346.globl _sk_seed_shader_hsw
Mike Klein86714282017-04-13 17:37:38 -04007347FUNCTION(_sk_seed_shader_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007348_sk_seed_shader_hsw:
7349 .byte 72,173 // lods %ds:(%rsi),%rax
7350 .byte 197,249,110,199 // vmovd %edi,%xmm0
7351 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
7352 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04007353 .byte 196,226,125,24,13,165,60,0,0 // vbroadcastss 0x3ca5(%rip),%ymm1 # 3d68 <_sk_callback_hsw+0x125>
Mike Kleind7e06ae2017-03-29 16:33:06 -04007354 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
7355 .byte 197,252,88,2 // vaddps (%rdx),%ymm0,%ymm0
7356 .byte 196,226,125,24,16 // vbroadcastss (%rax),%ymm2
7357 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
7358 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -04007359 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -04007360 .byte 196,226,125,24,21,137,60,0,0 // vbroadcastss 0x3c89(%rip),%ymm2 # 3d6c <_sk_callback_hsw+0x129>
Mike Kleind7e06ae2017-03-29 16:33:06 -04007361 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
7362 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
7363 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
7364 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
7365 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
7366 .byte 255,224 // jmpq *%rax
7367
Mike Klein7c4af542017-03-29 18:21:14 -04007368HIDDEN _sk_constant_color_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007369.globl _sk_constant_color_hsw
Mike Klein86714282017-04-13 17:37:38 -04007370FUNCTION(_sk_constant_color_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007371_sk_constant_color_hsw:
7372 .byte 72,173 // lods %ds:(%rsi),%rax
7373 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
7374 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
7375 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
7376 .byte 196,226,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm3
7377 .byte 72,173 // lods %ds:(%rsi),%rax
7378 .byte 255,224 // jmpq *%rax
7379
Mike Klein7c4af542017-03-29 18:21:14 -04007380HIDDEN _sk_clear_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007381.globl _sk_clear_hsw
Mike Klein86714282017-04-13 17:37:38 -04007382FUNCTION(_sk_clear_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007383_sk_clear_hsw:
7384 .byte 72,173 // lods %ds:(%rsi),%rax
7385 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
7386 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
7387 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
7388 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
7389 .byte 255,224 // jmpq *%rax
7390
Mike Kleinaaca1e42017-03-31 09:29:01 -04007391HIDDEN _sk_srcatop_hsw
7392.globl _sk_srcatop_hsw
Mike Klein86714282017-04-13 17:37:38 -04007393FUNCTION(_sk_srcatop_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007394_sk_srcatop_hsw:
Mike Kleinfe560a82017-05-01 12:56:35 -04007395 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04007396 .byte 196,98,125,24,5,57,60,0,0 // vbroadcastss 0x3c39(%rip),%ymm8 # 3d70 <_sk_callback_hsw+0x12d>
Mike Kleinaaca1e42017-03-31 09:29:01 -04007397 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04007398 .byte 196,226,61,184,196 // vfmadd231ps %ymm4,%ymm8,%ymm0
7399 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
7400 .byte 196,226,61,184,205 // vfmadd231ps %ymm5,%ymm8,%ymm1
7401 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
7402 .byte 196,226,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm2
Mike Kleinaaca1e42017-03-31 09:29:01 -04007403 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
7404 .byte 196,194,69,168,216 // vfmadd213ps %ymm8,%ymm7,%ymm3
7405 .byte 72,173 // lods %ds:(%rsi),%rax
7406 .byte 255,224 // jmpq *%rax
7407
7408HIDDEN _sk_dstatop_hsw
7409.globl _sk_dstatop_hsw
Mike Klein86714282017-04-13 17:37:38 -04007410FUNCTION(_sk_dstatop_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007411_sk_dstatop_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04007412 .byte 196,98,125,24,5,12,60,0,0 // vbroadcastss 0x3c0c(%rip),%ymm8 # 3d74 <_sk_callback_hsw+0x131>
Mike Kleinaaca1e42017-03-31 09:29:01 -04007413 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
7414 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
7415 .byte 196,226,101,184,196 // vfmadd231ps %ymm4,%ymm3,%ymm0
7416 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
7417 .byte 196,226,101,184,205 // vfmadd231ps %ymm5,%ymm3,%ymm1
7418 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
7419 .byte 196,226,101,184,214 // vfmadd231ps %ymm6,%ymm3,%ymm2
7420 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
7421 .byte 196,194,69,168,216 // vfmadd213ps %ymm8,%ymm7,%ymm3
7422 .byte 72,173 // lods %ds:(%rsi),%rax
7423 .byte 255,224 // jmpq *%rax
7424
7425HIDDEN _sk_srcin_hsw
7426.globl _sk_srcin_hsw
Mike Klein86714282017-04-13 17:37:38 -04007427FUNCTION(_sk_srcin_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007428_sk_srcin_hsw:
7429 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
7430 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
7431 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
7432 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
7433 .byte 72,173 // lods %ds:(%rsi),%rax
7434 .byte 255,224 // jmpq *%rax
7435
7436HIDDEN _sk_dstin_hsw
7437.globl _sk_dstin_hsw
Mike Klein86714282017-04-13 17:37:38 -04007438FUNCTION(_sk_dstin_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007439_sk_dstin_hsw:
7440 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
7441 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
7442 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
7443 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
7444 .byte 72,173 // lods %ds:(%rsi),%rax
7445 .byte 255,224 // jmpq *%rax
7446
7447HIDDEN _sk_srcout_hsw
7448.globl _sk_srcout_hsw
Mike Klein86714282017-04-13 17:37:38 -04007449FUNCTION(_sk_srcout_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007450_sk_srcout_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04007451 .byte 196,98,125,24,5,179,59,0,0 // vbroadcastss 0x3bb3(%rip),%ymm8 # 3d78 <_sk_callback_hsw+0x135>
Mike Kleinaaca1e42017-03-31 09:29:01 -04007452 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
7453 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
7454 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
7455 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
7456 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
7457 .byte 72,173 // lods %ds:(%rsi),%rax
7458 .byte 255,224 // jmpq *%rax
7459
7460HIDDEN _sk_dstout_hsw
7461.globl _sk_dstout_hsw
Mike Klein86714282017-04-13 17:37:38 -04007462FUNCTION(_sk_dstout_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007463_sk_dstout_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04007464 .byte 196,226,125,24,5,150,59,0,0 // vbroadcastss 0x3b96(%rip),%ymm0 # 3d7c <_sk_callback_hsw+0x139>
Mike Kleinaaca1e42017-03-31 09:29:01 -04007465 .byte 197,252,92,219 // vsubps %ymm3,%ymm0,%ymm3
7466 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
7467 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
7468 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
7469 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -04007470 .byte 72,173 // lods %ds:(%rsi),%rax
7471 .byte 255,224 // jmpq *%rax
7472
Mike Klein7c4af542017-03-29 18:21:14 -04007473HIDDEN _sk_srcover_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007474.globl _sk_srcover_hsw
Mike Klein86714282017-04-13 17:37:38 -04007475FUNCTION(_sk_srcover_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007476_sk_srcover_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04007477 .byte 196,98,125,24,5,121,59,0,0 // vbroadcastss 0x3b79(%rip),%ymm8 # 3d80 <_sk_callback_hsw+0x13d>
Mike Kleind7e06ae2017-03-29 16:33:06 -04007478 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7479 .byte 196,194,93,184,192 // vfmadd231ps %ymm8,%ymm4,%ymm0
7480 .byte 196,194,85,184,200 // vfmadd231ps %ymm8,%ymm5,%ymm1
7481 .byte 196,194,77,184,208 // vfmadd231ps %ymm8,%ymm6,%ymm2
7482 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7483 .byte 72,173 // lods %ds:(%rsi),%rax
7484 .byte 255,224 // jmpq *%rax
7485
Mike Klein7c4af542017-03-29 18:21:14 -04007486HIDDEN _sk_dstover_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007487.globl _sk_dstover_hsw
Mike Klein86714282017-04-13 17:37:38 -04007488FUNCTION(_sk_dstover_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007489_sk_dstover_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04007490 .byte 196,98,125,24,5,88,59,0,0 // vbroadcastss 0x3b58(%rip),%ymm8 # 3d84 <_sk_callback_hsw+0x141>
Mike Kleind7e06ae2017-03-29 16:33:06 -04007491 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
7492 .byte 196,226,61,168,196 // vfmadd213ps %ymm4,%ymm8,%ymm0
7493 .byte 196,226,61,168,205 // vfmadd213ps %ymm5,%ymm8,%ymm1
7494 .byte 196,226,61,168,214 // vfmadd213ps %ymm6,%ymm8,%ymm2
7495 .byte 196,226,61,168,223 // vfmadd213ps %ymm7,%ymm8,%ymm3
7496 .byte 72,173 // lods %ds:(%rsi),%rax
7497 .byte 255,224 // jmpq *%rax
7498
Mike Kleinaaca1e42017-03-31 09:29:01 -04007499HIDDEN _sk_modulate_hsw
7500.globl _sk_modulate_hsw
Mike Klein86714282017-04-13 17:37:38 -04007501FUNCTION(_sk_modulate_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007502_sk_modulate_hsw:
7503 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
7504 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
7505 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
7506 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
7507 .byte 72,173 // lods %ds:(%rsi),%rax
7508 .byte 255,224 // jmpq *%rax
7509
7510HIDDEN _sk_multiply_hsw
7511.globl _sk_multiply_hsw
Mike Klein86714282017-04-13 17:37:38 -04007512FUNCTION(_sk_multiply_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007513_sk_multiply_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04007514 .byte 196,98,125,24,5,35,59,0,0 // vbroadcastss 0x3b23(%rip),%ymm8 # 3d88 <_sk_callback_hsw+0x145>
Mike Kleinaaca1e42017-03-31 09:29:01 -04007515 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -04007516 .byte 197,52,89,208 // vmulps %ymm0,%ymm9,%ymm10
Mike Kleinaaca1e42017-03-31 09:29:01 -04007517 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04007518 .byte 196,98,61,184,212 // vfmadd231ps %ymm4,%ymm8,%ymm10
Mike Kleinaaca1e42017-03-31 09:29:01 -04007519 .byte 196,194,93,168,194 // vfmadd213ps %ymm10,%ymm4,%ymm0
7520 .byte 197,52,89,209 // vmulps %ymm1,%ymm9,%ymm10
7521 .byte 196,98,61,184,213 // vfmadd231ps %ymm5,%ymm8,%ymm10
7522 .byte 196,194,85,168,202 // vfmadd213ps %ymm10,%ymm5,%ymm1
7523 .byte 197,52,89,210 // vmulps %ymm2,%ymm9,%ymm10
7524 .byte 196,98,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm10
7525 .byte 196,194,77,168,210 // vfmadd213ps %ymm10,%ymm6,%ymm2
7526 .byte 197,52,89,203 // vmulps %ymm3,%ymm9,%ymm9
7527 .byte 196,66,69,168,193 // vfmadd213ps %ymm9,%ymm7,%ymm8
7528 .byte 196,194,69,168,216 // vfmadd213ps %ymm8,%ymm7,%ymm3
7529 .byte 72,173 // lods %ds:(%rsi),%rax
7530 .byte 255,224 // jmpq *%rax
7531
7532HIDDEN _sk_plus__hsw
7533.globl _sk_plus__hsw
Mike Klein86714282017-04-13 17:37:38 -04007534FUNCTION(_sk_plus__hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007535_sk_plus__hsw:
7536 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
7537 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
7538 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
7539 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
7540 .byte 72,173 // lods %ds:(%rsi),%rax
7541 .byte 255,224 // jmpq *%rax
7542
7543HIDDEN _sk_screen_hsw
7544.globl _sk_screen_hsw
Mike Klein86714282017-04-13 17:37:38 -04007545FUNCTION(_sk_screen_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007546_sk_screen_hsw:
7547 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
7548 .byte 196,194,93,172,192 // vfnmadd213ps %ymm8,%ymm4,%ymm0
7549 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
7550 .byte 196,194,85,172,200 // vfnmadd213ps %ymm8,%ymm5,%ymm1
7551 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
7552 .byte 196,194,77,172,208 // vfnmadd213ps %ymm8,%ymm6,%ymm2
7553 .byte 197,100,88,199 // vaddps %ymm7,%ymm3,%ymm8
7554 .byte 196,194,69,172,216 // vfnmadd213ps %ymm8,%ymm7,%ymm3
7555 .byte 72,173 // lods %ds:(%rsi),%rax
7556 .byte 255,224 // jmpq *%rax
7557
7558HIDDEN _sk_xor__hsw
7559.globl _sk_xor__hsw
Mike Klein86714282017-04-13 17:37:38 -04007560FUNCTION(_sk_xor__hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007561_sk_xor__hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04007562 .byte 196,98,125,24,5,158,58,0,0 // vbroadcastss 0x3a9e(%rip),%ymm8 # 3d8c <_sk_callback_hsw+0x149>
Mike Kleinaaca1e42017-03-31 09:29:01 -04007563 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -04007564 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
Mike Kleinaaca1e42017-03-31 09:29:01 -04007565 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04007566 .byte 196,226,61,184,196 // vfmadd231ps %ymm4,%ymm8,%ymm0
Mike Kleinaaca1e42017-03-31 09:29:01 -04007567 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
7568 .byte 196,226,61,184,205 // vfmadd231ps %ymm5,%ymm8,%ymm1
7569 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
7570 .byte 196,226,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm2
7571 .byte 197,180,89,219 // vmulps %ymm3,%ymm9,%ymm3
7572 .byte 196,98,69,168,195 // vfmadd213ps %ymm3,%ymm7,%ymm8
7573 .byte 72,173 // lods %ds:(%rsi),%rax
7574 .byte 197,124,41,195 // vmovaps %ymm8,%ymm3
7575 .byte 255,224 // jmpq *%rax
7576
Mike Klein66b09ab2017-03-31 10:29:40 -04007577HIDDEN _sk_darken_hsw
7578.globl _sk_darken_hsw
Mike Klein86714282017-04-13 17:37:38 -04007579FUNCTION(_sk_darken_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04007580_sk_darken_hsw:
7581 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
7582 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
7583 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
7584 .byte 196,193,124,95,193 // vmaxps %ymm9,%ymm0,%ymm0
7585 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
7586 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
7587 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
7588 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
7589 .byte 196,193,116,95,201 // vmaxps %ymm9,%ymm1,%ymm1
7590 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
7591 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
7592 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
7593 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
7594 .byte 196,193,108,95,209 // vmaxps %ymm9,%ymm2,%ymm2
7595 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04007596 .byte 196,98,125,24,5,38,58,0,0 // vbroadcastss 0x3a26(%rip),%ymm8 # 3d90 <_sk_callback_hsw+0x14d>
Mike Klein66b09ab2017-03-31 10:29:40 -04007597 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7598 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7599 .byte 72,173 // lods %ds:(%rsi),%rax
7600 .byte 255,224 // jmpq *%rax
7601
7602HIDDEN _sk_lighten_hsw
7603.globl _sk_lighten_hsw
Mike Klein86714282017-04-13 17:37:38 -04007604FUNCTION(_sk_lighten_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04007605_sk_lighten_hsw:
7606 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
7607 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
7608 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
7609 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
7610 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
7611 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
7612 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
7613 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
7614 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
7615 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
7616 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
7617 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
7618 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
7619 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
7620 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04007621 .byte 196,98,125,24,5,213,57,0,0 // vbroadcastss 0x39d5(%rip),%ymm8 # 3d94 <_sk_callback_hsw+0x151>
Mike Klein66b09ab2017-03-31 10:29:40 -04007622 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7623 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7624 .byte 72,173 // lods %ds:(%rsi),%rax
7625 .byte 255,224 // jmpq *%rax
7626
7627HIDDEN _sk_difference_hsw
7628.globl _sk_difference_hsw
Mike Klein86714282017-04-13 17:37:38 -04007629FUNCTION(_sk_difference_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04007630_sk_difference_hsw:
7631 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
7632 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
7633 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
7634 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
7635 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
7636 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
7637 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
7638 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
7639 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
7640 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
7641 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
7642 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
7643 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
7644 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
7645 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
7646 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
7647 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
7648 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04007649 .byte 196,98,125,24,5,120,57,0,0 // vbroadcastss 0x3978(%rip),%ymm8 # 3d98 <_sk_callback_hsw+0x155>
Mike Klein66b09ab2017-03-31 10:29:40 -04007650 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7651 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7652 .byte 72,173 // lods %ds:(%rsi),%rax
7653 .byte 255,224 // jmpq *%rax
7654
7655HIDDEN _sk_exclusion_hsw
7656.globl _sk_exclusion_hsw
Mike Klein86714282017-04-13 17:37:38 -04007657FUNCTION(_sk_exclusion_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04007658_sk_exclusion_hsw:
7659 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
7660 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
7661 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
7662 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
7663 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
7664 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
7665 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
7666 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
7667 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
7668 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
7669 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
7670 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04007671 .byte 196,98,125,24,5,54,57,0,0 // vbroadcastss 0x3936(%rip),%ymm8 # 3d9c <_sk_callback_hsw+0x159>
Mike Klein66b09ab2017-03-31 10:29:40 -04007672 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7673 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7674 .byte 72,173 // lods %ds:(%rsi),%rax
7675 .byte 255,224 // jmpq *%rax
7676
Mike Klein61b84162017-03-31 11:48:14 -04007677HIDDEN _sk_colorburn_hsw
7678.globl _sk_colorburn_hsw
Mike Klein86714282017-04-13 17:37:38 -04007679FUNCTION(_sk_colorburn_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04007680_sk_colorburn_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04007681 .byte 196,98,125,24,5,36,57,0,0 // vbroadcastss 0x3924(%rip),%ymm8 # 3da0 <_sk_callback_hsw+0x15d>
Mike Klein61b84162017-03-31 11:48:14 -04007682 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
7683 .byte 197,52,89,216 // vmulps %ymm0,%ymm9,%ymm11
7684 .byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
7685 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7686 .byte 197,60,89,228 // vmulps %ymm4,%ymm8,%ymm12
7687 .byte 197,68,92,236 // vsubps %ymm4,%ymm7,%ymm13
7688 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
7689 .byte 197,20,94,232 // vdivps %ymm0,%ymm13,%ymm13
7690 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
7691 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
7692 .byte 196,66,101,168,235 // vfmadd213ps %ymm11,%ymm3,%ymm13
7693 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
7694 .byte 197,28,88,224 // vaddps %ymm0,%ymm12,%ymm12
7695 .byte 196,193,124,194,194,0 // vcmpeqps %ymm10,%ymm0,%ymm0
7696 .byte 196,195,21,74,196,0 // vblendvps %ymm0,%ymm12,%ymm13,%ymm0
7697 .byte 197,92,194,231,0 // vcmpeqps %ymm7,%ymm4,%ymm12
7698 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
7699 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
7700 .byte 197,52,89,217 // vmulps %ymm1,%ymm9,%ymm11
7701 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
7702 .byte 197,68,92,237 // vsubps %ymm5,%ymm7,%ymm13
7703 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
7704 .byte 197,20,94,233 // vdivps %ymm1,%ymm13,%ymm13
7705 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
7706 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
7707 .byte 196,66,101,168,235 // vfmadd213ps %ymm11,%ymm3,%ymm13
7708 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
7709 .byte 197,28,88,225 // vaddps %ymm1,%ymm12,%ymm12
7710 .byte 196,193,116,194,202,0 // vcmpeqps %ymm10,%ymm1,%ymm1
7711 .byte 196,195,21,74,204,16 // vblendvps %ymm1,%ymm12,%ymm13,%ymm1
7712 .byte 197,84,194,231,0 // vcmpeqps %ymm7,%ymm5,%ymm12
7713 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
7714 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
7715 .byte 197,52,89,202 // vmulps %ymm2,%ymm9,%ymm9
7716 .byte 196,65,108,194,210,0 // vcmpeqps %ymm10,%ymm2,%ymm10
7717 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
7718 .byte 197,68,92,230 // vsubps %ymm6,%ymm7,%ymm12
7719 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
7720 .byte 197,28,94,226 // vdivps %ymm2,%ymm12,%ymm12
7721 .byte 197,164,88,210 // vaddps %ymm2,%ymm11,%ymm2
7722 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
7723 .byte 196,65,68,92,228 // vsubps %ymm12,%ymm7,%ymm12
7724 .byte 196,66,101,168,225 // vfmadd213ps %ymm9,%ymm3,%ymm12
7725 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
7726 .byte 196,227,37,74,210,160 // vblendvps %ymm10,%ymm2,%ymm11,%ymm2
7727 .byte 197,76,194,215,0 // vcmpeqps %ymm7,%ymm6,%ymm10
7728 .byte 197,52,88,206 // vaddps %ymm6,%ymm9,%ymm9
7729 .byte 196,195,109,74,209,160 // vblendvps %ymm10,%ymm9,%ymm2,%ymm2
7730 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7731 .byte 72,173 // lods %ds:(%rsi),%rax
7732 .byte 255,224 // jmpq *%rax
7733
7734HIDDEN _sk_colordodge_hsw
7735.globl _sk_colordodge_hsw
Mike Klein86714282017-04-13 17:37:38 -04007736FUNCTION(_sk_colordodge_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04007737_sk_colordodge_hsw:
7738 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -04007739 .byte 196,98,125,24,13,47,56,0,0 // vbroadcastss 0x382f(%rip),%ymm9 # 3da4 <_sk_callback_hsw+0x161>
Mike Klein61b84162017-03-31 11:48:14 -04007740 .byte 197,52,92,215 // vsubps %ymm7,%ymm9,%ymm10
7741 .byte 197,44,89,216 // vmulps %ymm0,%ymm10,%ymm11
7742 .byte 197,52,92,203 // vsubps %ymm3,%ymm9,%ymm9
7743 .byte 197,100,89,228 // vmulps %ymm4,%ymm3,%ymm12
7744 .byte 197,100,92,232 // vsubps %ymm0,%ymm3,%ymm13
7745 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
7746 .byte 197,52,89,236 // vmulps %ymm4,%ymm9,%ymm13
7747 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
7748 .byte 196,66,101,168,227 // vfmadd213ps %ymm11,%ymm3,%ymm12
7749 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
7750 .byte 197,20,88,232 // vaddps %ymm0,%ymm13,%ymm13
7751 .byte 197,252,194,195,0 // vcmpeqps %ymm3,%ymm0,%ymm0
7752 .byte 196,195,29,74,197,0 // vblendvps %ymm0,%ymm13,%ymm12,%ymm0
7753 .byte 196,65,92,194,224,0 // vcmpeqps %ymm8,%ymm4,%ymm12
7754 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
7755 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
7756 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
7757 .byte 197,100,89,229 // vmulps %ymm5,%ymm3,%ymm12
7758 .byte 197,100,92,233 // vsubps %ymm1,%ymm3,%ymm13
7759 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
7760 .byte 197,52,89,237 // vmulps %ymm5,%ymm9,%ymm13
7761 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
7762 .byte 196,66,101,168,227 // vfmadd213ps %ymm11,%ymm3,%ymm12
7763 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
7764 .byte 197,20,88,233 // vaddps %ymm1,%ymm13,%ymm13
7765 .byte 197,244,194,203,0 // vcmpeqps %ymm3,%ymm1,%ymm1
7766 .byte 196,195,29,74,205,16 // vblendvps %ymm1,%ymm13,%ymm12,%ymm1
7767 .byte 196,65,84,194,224,0 // vcmpeqps %ymm8,%ymm5,%ymm12
7768 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
7769 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
7770 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
7771 .byte 197,100,89,222 // vmulps %ymm6,%ymm3,%ymm11
7772 .byte 197,100,92,226 // vsubps %ymm2,%ymm3,%ymm12
7773 .byte 196,65,36,94,220 // vdivps %ymm12,%ymm11,%ymm11
7774 .byte 197,52,89,230 // vmulps %ymm6,%ymm9,%ymm12
7775 .byte 196,65,68,93,219 // vminps %ymm11,%ymm7,%ymm11
7776 .byte 196,66,101,168,218 // vfmadd213ps %ymm10,%ymm3,%ymm11
7777 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
7778 .byte 197,28,88,226 // vaddps %ymm2,%ymm12,%ymm12
7779 .byte 197,236,194,211,0 // vcmpeqps %ymm3,%ymm2,%ymm2
7780 .byte 196,195,37,74,212,32 // vblendvps %ymm2,%ymm12,%ymm11,%ymm2
7781 .byte 196,65,76,194,192,0 // vcmpeqps %ymm8,%ymm6,%ymm8
7782 .byte 197,44,88,214 // vaddps %ymm6,%ymm10,%ymm10
7783 .byte 196,195,109,74,210,128 // vblendvps %ymm8,%ymm10,%ymm2,%ymm2
7784 .byte 196,194,69,184,217 // vfmadd231ps %ymm9,%ymm7,%ymm3
7785 .byte 72,173 // lods %ds:(%rsi),%rax
7786 .byte 255,224 // jmpq *%rax
7787
7788HIDDEN _sk_hardlight_hsw
7789.globl _sk_hardlight_hsw
Mike Klein86714282017-04-13 17:37:38 -04007790FUNCTION(_sk_hardlight_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04007791_sk_hardlight_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04007792 .byte 196,98,125,24,5,80,55,0,0 // vbroadcastss 0x3750(%rip),%ymm8 # 3da8 <_sk_callback_hsw+0x165>
Mike Klein61b84162017-03-31 11:48:14 -04007793 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -04007794 .byte 197,44,89,216 // vmulps %ymm0,%ymm10,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -04007795 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04007796 .byte 196,98,61,184,220 // vfmadd231ps %ymm4,%ymm8,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -04007797 .byte 197,124,88,200 // vaddps %ymm0,%ymm0,%ymm9
7798 .byte 197,52,194,227,2 // vcmpleps %ymm3,%ymm9,%ymm12
7799 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
7800 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
7801 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
7802 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
7803 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
7804 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
7805 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
7806 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
7807 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -04007808 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04007809 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
7810 .byte 196,98,61,184,221 // vfmadd231ps %ymm5,%ymm8,%ymm11
7811 .byte 197,116,88,225 // vaddps %ymm1,%ymm1,%ymm12
7812 .byte 197,28,194,227,2 // vcmpleps %ymm3,%ymm12,%ymm12
7813 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
7814 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
7815 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
7816 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
7817 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
7818 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
7819 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
7820 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -04007821 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -04007822 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
7823 .byte 196,98,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm10
7824 .byte 197,108,88,218 // vaddps %ymm2,%ymm2,%ymm11
7825 .byte 197,36,194,219,2 // vcmpleps %ymm3,%ymm11,%ymm11
7826 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
7827 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
7828 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
7829 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
7830 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
7831 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
7832 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
7833 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -04007834 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -04007835 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7836 .byte 72,173 // lods %ds:(%rsi),%rax
7837 .byte 255,224 // jmpq *%rax
7838
7839HIDDEN _sk_overlay_hsw
7840.globl _sk_overlay_hsw
Mike Klein86714282017-04-13 17:37:38 -04007841FUNCTION(_sk_overlay_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04007842_sk_overlay_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04007843 .byte 196,98,125,24,5,136,54,0,0 // vbroadcastss 0x3688(%rip),%ymm8 # 3dac <_sk_callback_hsw+0x169>
Mike Klein61b84162017-03-31 11:48:14 -04007844 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -04007845 .byte 197,44,89,216 // vmulps %ymm0,%ymm10,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -04007846 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04007847 .byte 196,98,61,184,220 // vfmadd231ps %ymm4,%ymm8,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -04007848 .byte 197,92,88,204 // vaddps %ymm4,%ymm4,%ymm9
7849 .byte 197,52,194,231,2 // vcmpleps %ymm7,%ymm9,%ymm12
7850 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
7851 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
7852 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
7853 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
7854 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
7855 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
7856 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
7857 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
7858 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -04007859 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04007860 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
7861 .byte 196,98,61,184,221 // vfmadd231ps %ymm5,%ymm8,%ymm11
7862 .byte 197,84,88,229 // vaddps %ymm5,%ymm5,%ymm12
7863 .byte 197,28,194,231,2 // vcmpleps %ymm7,%ymm12,%ymm12
7864 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
7865 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
7866 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
7867 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
7868 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
7869 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
7870 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
7871 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -04007872 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -04007873 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
7874 .byte 196,98,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm10
7875 .byte 197,76,88,222 // vaddps %ymm6,%ymm6,%ymm11
7876 .byte 197,36,194,223,2 // vcmpleps %ymm7,%ymm11,%ymm11
7877 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
7878 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
7879 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
7880 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
7881 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
7882 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
7883 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
7884 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -04007885 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -04007886 .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_softlight_hsw
7891.globl _sk_softlight_hsw
Mike Klein86714282017-04-13 17:37:38 -04007892FUNCTION(_sk_softlight_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04007893_sk_softlight_hsw:
Mike Klein15bf6782017-03-31 12:21:46 -04007894 .byte 197,252,17,84,36,200 // vmovups %ymm2,-0x38(%rsp)
Mike Kleinfe560a82017-05-01 12:56:35 -04007895 .byte 197,252,40,209 // vmovaps %ymm1,%ymm2
7896 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
7897 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
7898 .byte 197,52,194,215,1 // vcmpltps %ymm7,%ymm9,%ymm10
Mike Klein61b84162017-03-31 11:48:14 -04007899 .byte 197,92,94,199 // vdivps %ymm7,%ymm4,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04007900 .byte 196,67,53,74,232,160 // vblendvps %ymm10,%ymm8,%ymm9,%ymm13
7901 .byte 196,65,20,88,197 // vaddps %ymm13,%ymm13,%ymm8
7902 .byte 196,65,60,88,192 // vaddps %ymm8,%ymm8,%ymm8
7903 .byte 196,66,61,168,192 // vfmadd213ps %ymm8,%ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -04007904 .byte 196,98,125,24,29,147,53,0,0 // vbroadcastss 0x3593(%rip),%ymm11 # 3db4 <_sk_callback_hsw+0x171>
Mike Kleinfe560a82017-05-01 12:56:35 -04007905 .byte 196,65,20,88,227 // vaddps %ymm11,%ymm13,%ymm12
7906 .byte 196,65,28,89,192 // vmulps %ymm8,%ymm12,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -04007907 .byte 196,98,125,24,37,132,53,0,0 // vbroadcastss 0x3584(%rip),%ymm12 # 3db8 <_sk_callback_hsw+0x175>
Mike Kleinfe560a82017-05-01 12:56:35 -04007908 .byte 196,66,21,184,196 // vfmadd231ps %ymm12,%ymm13,%ymm8
7909 .byte 196,65,124,82,245 // vrsqrtps %ymm13,%ymm14
7910 .byte 196,65,124,83,246 // vrcpps %ymm14,%ymm14
7911 .byte 196,65,12,92,245 // vsubps %ymm13,%ymm14,%ymm14
7912 .byte 197,92,88,252 // vaddps %ymm4,%ymm4,%ymm15
7913 .byte 196,65,4,88,255 // vaddps %ymm15,%ymm15,%ymm15
7914 .byte 197,4,194,255,2 // vcmpleps %ymm7,%ymm15,%ymm15
7915 .byte 196,67,13,74,240,240 // vblendvps %ymm15,%ymm8,%ymm14,%ymm14
7916 .byte 197,116,88,249 // vaddps %ymm1,%ymm1,%ymm15
Mike Kleinb3665f02017-05-01 14:56:04 -04007917 .byte 196,98,125,24,5,71,53,0,0 // vbroadcastss 0x3547(%rip),%ymm8 # 3db0 <_sk_callback_hsw+0x16d>
Mike Kleinfe560a82017-05-01 12:56:35 -04007918 .byte 196,65,60,92,237 // vsubps %ymm13,%ymm8,%ymm13
7919 .byte 197,132,92,195 // vsubps %ymm3,%ymm15,%ymm0
7920 .byte 196,98,125,168,235 // vfmadd213ps %ymm3,%ymm0,%ymm13
7921 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
7922 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
7923 .byte 197,20,89,236 // vmulps %ymm4,%ymm13,%ymm13
7924 .byte 196,226,101,184,196 // vfmadd231ps %ymm4,%ymm3,%ymm0
7925 .byte 197,4,194,243,2 // vcmpleps %ymm3,%ymm15,%ymm14
7926 .byte 196,195,125,74,197,224 // vblendvps %ymm14,%ymm13,%ymm0,%ymm0
7927 .byte 197,252,17,68,36,168 // vmovups %ymm0,-0x58(%rsp)
7928 .byte 197,212,94,199 // vdivps %ymm7,%ymm5,%ymm0
7929 .byte 196,227,53,74,192,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04007930 .byte 197,124,88,240 // vaddps %ymm0,%ymm0,%ymm14
Mike Klein61b84162017-03-31 11:48:14 -04007931 .byte 196,65,12,88,246 // vaddps %ymm14,%ymm14,%ymm14
7932 .byte 196,66,13,168,246 // vfmadd213ps %ymm14,%ymm14,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -04007933 .byte 196,65,124,88,251 // vaddps %ymm11,%ymm0,%ymm15
Mike Klein61b84162017-03-31 11:48:14 -04007934 .byte 196,65,4,89,246 // vmulps %ymm14,%ymm15,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -04007935 .byte 196,66,125,184,244 // vfmadd231ps %ymm12,%ymm0,%ymm14
7936 .byte 197,124,82,248 // vrsqrtps %ymm0,%ymm15
Mike Klein61b84162017-03-31 11:48:14 -04007937 .byte 196,65,124,83,255 // vrcpps %ymm15,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -04007938 .byte 197,4,92,248 // vsubps %ymm0,%ymm15,%ymm15
7939 .byte 197,84,88,237 // vaddps %ymm5,%ymm5,%ymm13
7940 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
7941 .byte 197,20,194,239,2 // vcmpleps %ymm7,%ymm13,%ymm13
7942 .byte 196,67,5,74,238,208 // vblendvps %ymm13,%ymm14,%ymm15,%ymm13
7943 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
7944 .byte 197,108,88,242 // vaddps %ymm2,%ymm2,%ymm14
Mike Klein61b84162017-03-31 11:48:14 -04007945 .byte 197,12,92,251 // vsubps %ymm3,%ymm14,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -04007946 .byte 196,226,5,168,195 // vfmadd213ps %ymm3,%ymm15,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04007947 .byte 197,4,89,255 // vmulps %ymm7,%ymm15,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -04007948 .byte 196,65,4,89,237 // vmulps %ymm13,%ymm15,%ymm13
7949 .byte 197,252,89,197 // vmulps %ymm5,%ymm0,%ymm0
7950 .byte 196,98,101,184,237 // vfmadd231ps %ymm5,%ymm3,%ymm13
Mike Klein61b84162017-03-31 11:48:14 -04007951 .byte 197,12,194,243,2 // vcmpleps %ymm3,%ymm14,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -04007952 .byte 196,99,21,74,240,224 // vblendvps %ymm14,%ymm0,%ymm13,%ymm14
7953 .byte 197,204,94,199 // vdivps %ymm7,%ymm6,%ymm0
7954 .byte 196,227,53,74,192,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm0
7955 .byte 197,124,88,200 // vaddps %ymm0,%ymm0,%ymm9
7956 .byte 196,65,52,88,201 // vaddps %ymm9,%ymm9,%ymm9
7957 .byte 196,66,53,168,201 // vfmadd213ps %ymm9,%ymm9,%ymm9
7958 .byte 196,65,124,88,211 // vaddps %ymm11,%ymm0,%ymm10
7959 .byte 196,65,44,89,201 // vmulps %ymm9,%ymm10,%ymm9
7960 .byte 196,66,125,184,204 // vfmadd231ps %ymm12,%ymm0,%ymm9
7961 .byte 197,124,82,208 // vrsqrtps %ymm0,%ymm10
7962 .byte 196,65,124,83,210 // vrcpps %ymm10,%ymm10
7963 .byte 197,44,92,208 // vsubps %ymm0,%ymm10,%ymm10
7964 .byte 197,76,88,222 // vaddps %ymm6,%ymm6,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -04007965 .byte 196,65,36,88,219 // vaddps %ymm11,%ymm11,%ymm11
Mike Kleinfe560a82017-05-01 12:56:35 -04007966 .byte 197,36,194,223,2 // vcmpleps %ymm7,%ymm11,%ymm11
7967 .byte 196,67,45,74,201,176 // vblendvps %ymm11,%ymm9,%ymm10,%ymm9
7968 .byte 197,124,16,100,36,200 // vmovups -0x38(%rsp),%ymm12
7969 .byte 196,65,28,88,212 // vaddps %ymm12,%ymm12,%ymm10
7970 .byte 197,44,92,219 // vsubps %ymm3,%ymm10,%ymm11
7971 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
7972 .byte 196,226,37,168,195 // vfmadd213ps %ymm3,%ymm11,%ymm0
7973 .byte 197,36,89,223 // vmulps %ymm7,%ymm11,%ymm11
7974 .byte 196,65,36,89,201 // vmulps %ymm9,%ymm11,%ymm9
7975 .byte 197,252,89,198 // vmulps %ymm6,%ymm0,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04007976 .byte 196,98,101,184,206 // vfmadd231ps %ymm6,%ymm3,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -04007977 .byte 197,44,194,211,2 // vcmpleps %ymm3,%ymm10,%ymm10
7978 .byte 196,99,53,74,200,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm9
Mike Klein61b84162017-03-31 11:48:14 -04007979 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -04007980 .byte 197,172,89,193 // vmulps %ymm1,%ymm10,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04007981 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04007982 .byte 196,226,61,184,196 // vfmadd231ps %ymm4,%ymm8,%ymm0
7983 .byte 197,252,88,68,36,168 // vaddps -0x58(%rsp),%ymm0,%ymm0
7984 .byte 197,172,89,202 // vmulps %ymm2,%ymm10,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -04007985 .byte 196,226,61,184,205 // vfmadd231ps %ymm5,%ymm8,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -04007986 .byte 196,193,116,88,206 // vaddps %ymm14,%ymm1,%ymm1
7987 .byte 196,193,44,89,212 // vmulps %ymm12,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -04007988 .byte 196,226,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm2
7989 .byte 196,193,108,88,209 // vaddps %ymm9,%ymm2,%ymm2
7990 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7991 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein61b84162017-03-31 11:48:14 -04007992 .byte 255,224 // jmpq *%rax
7993
Mike Klein7c4af542017-03-29 18:21:14 -04007994HIDDEN _sk_clamp_0_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007995.globl _sk_clamp_0_hsw
Mike Klein86714282017-04-13 17:37:38 -04007996FUNCTION(_sk_clamp_0_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007997_sk_clamp_0_hsw:
7998 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
7999 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
8000 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
8001 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
8002 .byte 196,193,100,95,216 // vmaxps %ymm8,%ymm3,%ymm3
8003 .byte 72,173 // lods %ds:(%rsi),%rax
8004 .byte 255,224 // jmpq *%rax
8005
Mike Klein7c4af542017-03-29 18:21:14 -04008006HIDDEN _sk_clamp_1_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008007.globl _sk_clamp_1_hsw
Mike Klein86714282017-04-13 17:37:38 -04008008FUNCTION(_sk_clamp_1_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008009_sk_clamp_1_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04008010 .byte 196,98,125,24,5,204,51,0,0 // vbroadcastss 0x33cc(%rip),%ymm8 # 3dbc <_sk_callback_hsw+0x179>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008011 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
8012 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
8013 .byte 196,193,108,93,208 // vminps %ymm8,%ymm2,%ymm2
8014 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
8015 .byte 72,173 // lods %ds:(%rsi),%rax
8016 .byte 255,224 // jmpq *%rax
8017
Mike Klein7c4af542017-03-29 18:21:14 -04008018HIDDEN _sk_clamp_a_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008019.globl _sk_clamp_a_hsw
Mike Klein86714282017-04-13 17:37:38 -04008020FUNCTION(_sk_clamp_a_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008021_sk_clamp_a_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04008022 .byte 196,98,125,24,5,175,51,0,0 // vbroadcastss 0x33af(%rip),%ymm8 # 3dc0 <_sk_callback_hsw+0x17d>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008023 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
8024 .byte 197,252,93,195 // vminps %ymm3,%ymm0,%ymm0
8025 .byte 197,244,93,203 // vminps %ymm3,%ymm1,%ymm1
8026 .byte 197,236,93,211 // vminps %ymm3,%ymm2,%ymm2
8027 .byte 72,173 // lods %ds:(%rsi),%rax
8028 .byte 255,224 // jmpq *%rax
8029
Mike Klein7c4af542017-03-29 18:21:14 -04008030HIDDEN _sk_set_rgb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008031.globl _sk_set_rgb_hsw
Mike Klein86714282017-04-13 17:37:38 -04008032FUNCTION(_sk_set_rgb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008033_sk_set_rgb_hsw:
8034 .byte 72,173 // lods %ds:(%rsi),%rax
8035 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
8036 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
8037 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
8038 .byte 72,173 // lods %ds:(%rsi),%rax
8039 .byte 255,224 // jmpq *%rax
8040
Mike Klein7c4af542017-03-29 18:21:14 -04008041HIDDEN _sk_swap_rb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008042.globl _sk_swap_rb_hsw
Mike Klein86714282017-04-13 17:37:38 -04008043FUNCTION(_sk_swap_rb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008044_sk_swap_rb_hsw:
8045 .byte 197,124,40,192 // vmovaps %ymm0,%ymm8
8046 .byte 72,173 // lods %ds:(%rsi),%rax
8047 .byte 197,252,40,194 // vmovaps %ymm2,%ymm0
8048 .byte 197,124,41,194 // vmovaps %ymm8,%ymm2
8049 .byte 255,224 // jmpq *%rax
8050
Mike Klein7c4af542017-03-29 18:21:14 -04008051HIDDEN _sk_swap_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008052.globl _sk_swap_hsw
Mike Klein86714282017-04-13 17:37:38 -04008053FUNCTION(_sk_swap_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008054_sk_swap_hsw:
8055 .byte 197,124,40,195 // vmovaps %ymm3,%ymm8
8056 .byte 197,124,40,202 // vmovaps %ymm2,%ymm9
8057 .byte 197,124,40,209 // vmovaps %ymm1,%ymm10
8058 .byte 197,124,40,216 // vmovaps %ymm0,%ymm11
8059 .byte 72,173 // lods %ds:(%rsi),%rax
8060 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
8061 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
8062 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
8063 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
8064 .byte 197,124,41,220 // vmovaps %ymm11,%ymm4
8065 .byte 197,124,41,213 // vmovaps %ymm10,%ymm5
8066 .byte 197,124,41,206 // vmovaps %ymm9,%ymm6
8067 .byte 197,124,41,199 // vmovaps %ymm8,%ymm7
8068 .byte 255,224 // jmpq *%rax
8069
Mike Klein7c4af542017-03-29 18:21:14 -04008070HIDDEN _sk_move_src_dst_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008071.globl _sk_move_src_dst_hsw
Mike Klein86714282017-04-13 17:37:38 -04008072FUNCTION(_sk_move_src_dst_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008073_sk_move_src_dst_hsw:
8074 .byte 72,173 // lods %ds:(%rsi),%rax
8075 .byte 197,252,40,224 // vmovaps %ymm0,%ymm4
8076 .byte 197,252,40,233 // vmovaps %ymm1,%ymm5
8077 .byte 197,252,40,242 // vmovaps %ymm2,%ymm6
8078 .byte 197,252,40,251 // vmovaps %ymm3,%ymm7
8079 .byte 255,224 // jmpq *%rax
8080
Mike Klein7c4af542017-03-29 18:21:14 -04008081HIDDEN _sk_move_dst_src_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008082.globl _sk_move_dst_src_hsw
Mike Klein86714282017-04-13 17:37:38 -04008083FUNCTION(_sk_move_dst_src_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008084_sk_move_dst_src_hsw:
8085 .byte 72,173 // lods %ds:(%rsi),%rax
8086 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
8087 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
8088 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
8089 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
8090 .byte 255,224 // jmpq *%rax
8091
Mike Klein7c4af542017-03-29 18:21:14 -04008092HIDDEN _sk_premul_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008093.globl _sk_premul_hsw
Mike Klein86714282017-04-13 17:37:38 -04008094FUNCTION(_sk_premul_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008095_sk_premul_hsw:
8096 .byte 197,252,89,195 // vmulps %ymm3,%ymm0,%ymm0
8097 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
8098 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
8099 .byte 72,173 // lods %ds:(%rsi),%rax
8100 .byte 255,224 // jmpq *%rax
8101
Mike Klein7c4af542017-03-29 18:21:14 -04008102HIDDEN _sk_unpremul_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008103.globl _sk_unpremul_hsw
Mike Klein86714282017-04-13 17:37:38 -04008104FUNCTION(_sk_unpremul_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008105_sk_unpremul_hsw:
8106 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
8107 .byte 196,65,100,194,200,0 // vcmpeqps %ymm8,%ymm3,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -04008108 .byte 196,98,125,24,21,247,50,0,0 // vbroadcastss 0x32f7(%rip),%ymm10 # 3dc4 <_sk_callback_hsw+0x181>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008109 .byte 197,44,94,211 // vdivps %ymm3,%ymm10,%ymm10
8110 .byte 196,67,45,74,192,144 // vblendvps %ymm9,%ymm8,%ymm10,%ymm8
8111 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
8112 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
8113 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
8114 .byte 72,173 // lods %ds:(%rsi),%rax
8115 .byte 255,224 // jmpq *%rax
8116
Mike Klein7c4af542017-03-29 18:21:14 -04008117HIDDEN _sk_from_srgb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008118.globl _sk_from_srgb_hsw
Mike Klein86714282017-04-13 17:37:38 -04008119FUNCTION(_sk_from_srgb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008120_sk_from_srgb_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04008121 .byte 196,98,125,24,5,216,50,0,0 // vbroadcastss 0x32d8(%rip),%ymm8 # 3dc8 <_sk_callback_hsw+0x185>
Mike Kleinfe560a82017-05-01 12:56:35 -04008122 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -04008123 .byte 197,124,89,208 // vmulps %ymm0,%ymm0,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04008124 .byte 196,98,125,24,29,202,50,0,0 // vbroadcastss 0x32ca(%rip),%ymm11 # 3dcc <_sk_callback_hsw+0x189>
8125 .byte 196,98,125,24,37,197,50,0,0 // vbroadcastss 0x32c5(%rip),%ymm12 # 3dd0 <_sk_callback_hsw+0x18d>
Mike Kleinfe560a82017-05-01 12:56:35 -04008126 .byte 196,65,124,40,236 // vmovaps %ymm12,%ymm13
8127 .byte 196,66,125,168,235 // vfmadd213ps %ymm11,%ymm0,%ymm13
Mike Kleinb3665f02017-05-01 14:56:04 -04008128 .byte 196,98,125,24,53,182,50,0,0 // vbroadcastss 0x32b6(%rip),%ymm14 # 3dd4 <_sk_callback_hsw+0x191>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008129 .byte 196,66,45,168,238 // vfmadd213ps %ymm14,%ymm10,%ymm13
Mike Kleinb3665f02017-05-01 14:56:04 -04008130 .byte 196,98,125,24,21,172,50,0,0 // vbroadcastss 0x32ac(%rip),%ymm10 # 3dd8 <_sk_callback_hsw+0x195>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008131 .byte 196,193,124,194,194,1 // vcmpltps %ymm10,%ymm0,%ymm0
8132 .byte 196,195,21,74,193,0 // vblendvps %ymm0,%ymm9,%ymm13,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -04008133 .byte 196,65,116,89,200 // vmulps %ymm8,%ymm1,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -04008134 .byte 197,116,89,233 // vmulps %ymm1,%ymm1,%ymm13
Mike Kleinfe560a82017-05-01 12:56:35 -04008135 .byte 196,65,124,40,252 // vmovaps %ymm12,%ymm15
8136 .byte 196,66,117,168,251 // vfmadd213ps %ymm11,%ymm1,%ymm15
Mike Kleind7e06ae2017-03-29 16:33:06 -04008137 .byte 196,66,21,168,254 // vfmadd213ps %ymm14,%ymm13,%ymm15
8138 .byte 196,193,116,194,202,1 // vcmpltps %ymm10,%ymm1,%ymm1
8139 .byte 196,195,5,74,201,16 // vblendvps %ymm1,%ymm9,%ymm15,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -04008140 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -04008141 .byte 197,108,89,202 // vmulps %ymm2,%ymm2,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -04008142 .byte 196,66,109,168,227 // vfmadd213ps %ymm11,%ymm2,%ymm12
8143 .byte 196,66,53,168,230 // vfmadd213ps %ymm14,%ymm9,%ymm12
Mike Kleind7e06ae2017-03-29 16:33:06 -04008144 .byte 196,193,108,194,210,1 // vcmpltps %ymm10,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -04008145 .byte 196,195,29,74,208,32 // vblendvps %ymm2,%ymm8,%ymm12,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -04008146 .byte 72,173 // lods %ds:(%rsi),%rax
8147 .byte 255,224 // jmpq *%rax
8148
Mike Klein7c4af542017-03-29 18:21:14 -04008149HIDDEN _sk_to_srgb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008150.globl _sk_to_srgb_hsw
Mike Klein86714282017-04-13 17:37:38 -04008151FUNCTION(_sk_to_srgb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008152_sk_to_srgb_hsw:
8153 .byte 197,124,82,192 // vrsqrtps %ymm0,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04008154 .byte 196,65,124,83,200 // vrcpps %ymm8,%ymm9
8155 .byte 196,65,124,82,208 // vrsqrtps %ymm8,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04008156 .byte 196,98,125,24,5,70,50,0,0 // vbroadcastss 0x3246(%rip),%ymm8 # 3ddc <_sk_callback_hsw+0x199>
Mike Kleinfe560a82017-05-01 12:56:35 -04008157 .byte 196,65,124,89,216 // vmulps %ymm8,%ymm0,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04008158 .byte 196,98,125,24,37,60,50,0,0 // vbroadcastss 0x323c(%rip),%ymm12 # 3de0 <_sk_callback_hsw+0x19d>
8159 .byte 196,98,125,24,45,55,50,0,0 // vbroadcastss 0x3237(%rip),%ymm13 # 3de4 <_sk_callback_hsw+0x1a1>
Mike Kleinfe560a82017-05-01 12:56:35 -04008160 .byte 196,66,21,168,204 // vfmadd213ps %ymm12,%ymm13,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -04008161 .byte 196,98,125,24,53,45,50,0,0 // vbroadcastss 0x322d(%rip),%ymm14 # 3de8 <_sk_callback_hsw+0x1a5>
Mike Kleinfe560a82017-05-01 12:56:35 -04008162 .byte 196,66,13,184,202 // vfmadd231ps %ymm10,%ymm14,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -04008163 .byte 196,98,125,24,21,35,50,0,0 // vbroadcastss 0x3223(%rip),%ymm10 # 3dec <_sk_callback_hsw+0x1a9>
Mike Kleinfe560a82017-05-01 12:56:35 -04008164 .byte 196,65,44,93,201 // vminps %ymm9,%ymm10,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -04008165 .byte 196,98,125,24,61,25,50,0,0 // vbroadcastss 0x3219(%rip),%ymm15 # 3df0 <_sk_callback_hsw+0x1ad>
Mike Kleinfe560a82017-05-01 12:56:35 -04008166 .byte 196,193,124,194,199,1 // vcmpltps %ymm15,%ymm0,%ymm0
8167 .byte 196,195,53,74,195,0 // vblendvps %ymm0,%ymm11,%ymm9,%ymm0
8168 .byte 197,124,82,201 // vrsqrtps %ymm1,%ymm9
8169 .byte 196,65,124,83,217 // vrcpps %ymm9,%ymm11
8170 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8171 .byte 196,66,21,168,220 // vfmadd213ps %ymm12,%ymm13,%ymm11
8172 .byte 196,66,13,184,217 // vfmadd231ps %ymm9,%ymm14,%ymm11
8173 .byte 196,65,116,89,200 // vmulps %ymm8,%ymm1,%ymm9
8174 .byte 196,65,44,93,219 // vminps %ymm11,%ymm10,%ymm11
8175 .byte 196,193,116,194,207,1 // vcmpltps %ymm15,%ymm1,%ymm1
8176 .byte 196,195,37,74,201,16 // vblendvps %ymm1,%ymm9,%ymm11,%ymm1
8177 .byte 197,124,82,202 // vrsqrtps %ymm2,%ymm9
8178 .byte 196,65,124,83,217 // vrcpps %ymm9,%ymm11
8179 .byte 196,66,21,168,220 // vfmadd213ps %ymm12,%ymm13,%ymm11
8180 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8181 .byte 196,66,13,184,217 // vfmadd231ps %ymm9,%ymm14,%ymm11
8182 .byte 196,65,44,93,203 // vminps %ymm11,%ymm10,%ymm9
8183 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
8184 .byte 196,193,108,194,215,1 // vcmpltps %ymm15,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -04008185 .byte 196,195,53,74,208,32 // vblendvps %ymm2,%ymm8,%ymm9,%ymm2
8186 .byte 72,173 // lods %ds:(%rsi),%rax
8187 .byte 255,224 // jmpq *%rax
8188
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008189HIDDEN _sk_rgb_to_hsl_hsw
8190.globl _sk_rgb_to_hsl_hsw
Mike Klein86714282017-04-13 17:37:38 -04008191FUNCTION(_sk_rgb_to_hsl_hsw)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008192_sk_rgb_to_hsl_hsw:
Mike Kleinfe560a82017-05-01 12:56:35 -04008193 .byte 197,124,95,193 // vmaxps %ymm1,%ymm0,%ymm8
8194 .byte 197,60,95,194 // vmaxps %ymm2,%ymm8,%ymm8
8195 .byte 197,124,93,201 // vminps %ymm1,%ymm0,%ymm9
8196 .byte 197,52,93,202 // vminps %ymm2,%ymm9,%ymm9
8197 .byte 196,65,60,92,209 // vsubps %ymm9,%ymm8,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04008198 .byte 196,98,125,24,29,147,49,0,0 // vbroadcastss 0x3193(%rip),%ymm11 # 3df4 <_sk_callback_hsw+0x1b1>
Mike Kleinfe560a82017-05-01 12:56:35 -04008199 .byte 196,65,36,94,218 // vdivps %ymm10,%ymm11,%ymm11
8200 .byte 197,116,92,226 // vsubps %ymm2,%ymm1,%ymm12
8201 .byte 197,116,194,234,1 // vcmpltps %ymm2,%ymm1,%ymm13
Mike Kleinb3665f02017-05-01 14:56:04 -04008202 .byte 196,98,125,24,53,128,49,0,0 // vbroadcastss 0x3180(%rip),%ymm14 # 3df8 <_sk_callback_hsw+0x1b5>
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008203 .byte 196,65,4,87,255 // vxorps %ymm15,%ymm15,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -04008204 .byte 196,67,5,74,238,208 // vblendvps %ymm13,%ymm14,%ymm15,%ymm13
8205 .byte 196,66,37,168,229 // vfmadd213ps %ymm13,%ymm11,%ymm12
8206 .byte 197,236,92,208 // vsubps %ymm0,%ymm2,%ymm2
8207 .byte 197,124,92,233 // vsubps %ymm1,%ymm0,%ymm13
Mike Kleinb3665f02017-05-01 14:56:04 -04008208 .byte 196,98,125,24,53,103,49,0,0 // vbroadcastss 0x3167(%rip),%ymm14 # 3e00 <_sk_callback_hsw+0x1bd>
Mike Kleinfe560a82017-05-01 12:56:35 -04008209 .byte 196,66,37,168,238 // vfmadd213ps %ymm14,%ymm11,%ymm13
Mike Kleinb3665f02017-05-01 14:56:04 -04008210 .byte 196,98,125,24,53,85,49,0,0 // vbroadcastss 0x3155(%rip),%ymm14 # 3dfc <_sk_callback_hsw+0x1b9>
Mike Kleinfe560a82017-05-01 12:56:35 -04008211 .byte 196,194,37,168,214 // vfmadd213ps %ymm14,%ymm11,%ymm2
8212 .byte 197,188,194,201,0 // vcmpeqps %ymm1,%ymm8,%ymm1
8213 .byte 196,227,21,74,202,16 // vblendvps %ymm1,%ymm2,%ymm13,%ymm1
8214 .byte 197,188,194,192,0 // vcmpeqps %ymm0,%ymm8,%ymm0
8215 .byte 196,195,117,74,196,0 // vblendvps %ymm0,%ymm12,%ymm1,%ymm0
8216 .byte 196,193,60,88,201 // vaddps %ymm9,%ymm8,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04008217 .byte 196,98,125,24,29,56,49,0,0 // vbroadcastss 0x3138(%rip),%ymm11 # 3e08 <_sk_callback_hsw+0x1c5>
Mike Kleinfe560a82017-05-01 12:56:35 -04008218 .byte 196,193,116,89,211 // vmulps %ymm11,%ymm1,%ymm2
8219 .byte 197,36,194,218,1 // vcmpltps %ymm2,%ymm11,%ymm11
8220 .byte 196,65,12,92,224 // vsubps %ymm8,%ymm14,%ymm12
8221 .byte 196,65,28,92,225 // vsubps %ymm9,%ymm12,%ymm12
8222 .byte 196,195,117,74,204,176 // vblendvps %ymm11,%ymm12,%ymm1,%ymm1
8223 .byte 196,65,60,194,193,0 // vcmpeqps %ymm9,%ymm8,%ymm8
8224 .byte 197,172,94,201 // vdivps %ymm1,%ymm10,%ymm1
8225 .byte 196,195,125,74,199,128 // vblendvps %ymm8,%ymm15,%ymm0,%ymm0
8226 .byte 196,195,117,74,207,128 // vblendvps %ymm8,%ymm15,%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04008227 .byte 196,98,125,24,5,251,48,0,0 // vbroadcastss 0x30fb(%rip),%ymm8 # 3e04 <_sk_callback_hsw+0x1c1>
Mike Kleinfe560a82017-05-01 12:56:35 -04008228 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008229 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008230 .byte 255,224 // jmpq *%rax
8231
8232HIDDEN _sk_hsl_to_rgb_hsw
8233.globl _sk_hsl_to_rgb_hsw
Mike Klein86714282017-04-13 17:37:38 -04008234FUNCTION(_sk_hsl_to_rgb_hsw)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008235_sk_hsl_to_rgb_hsw:
Mike Kleinfb11acd2017-05-01 14:22:10 -04008236 .byte 72,131,236,120 // sub $0x78,%rsp
8237 .byte 197,252,17,124,36,64 // vmovups %ymm7,0x40(%rsp)
8238 .byte 197,252,17,116,36,32 // vmovups %ymm6,0x20(%rsp)
8239 .byte 197,252,17,44,36 // vmovups %ymm5,(%rsp)
8240 .byte 197,252,17,100,36,224 // vmovups %ymm4,-0x20(%rsp)
8241 .byte 197,252,17,92,36,192 // vmovups %ymm3,-0x40(%rsp)
Mike Kleinfb11acd2017-05-01 14:22:10 -04008242 .byte 197,252,17,76,36,160 // vmovups %ymm1,-0x60(%rsp)
Mike Kleinb3665f02017-05-01 14:56:04 -04008243 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
8244 .byte 197,249,110,216 // vmovd %eax,%xmm3
8245 .byte 196,98,125,88,195 // vpbroadcastd %xmm3,%ymm8
8246 .byte 196,193,108,194,232,1 // vcmpltps %ymm8,%ymm2,%ymm5
8247 .byte 196,98,125,24,21,182,48,0,0 // vbroadcastss 0x30b6(%rip),%ymm10 # 3e0c <_sk_callback_hsw+0x1c9>
Mike Kleinfb11acd2017-05-01 14:22:10 -04008248 .byte 196,193,116,88,218 // vaddps %ymm10,%ymm1,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04008249 .byte 197,228,89,218 // vmulps %ymm2,%ymm3,%ymm3
8250 .byte 197,244,88,226 // vaddps %ymm2,%ymm1,%ymm4
8251 .byte 196,226,117,188,226 // vfnmadd231ps %ymm2,%ymm1,%ymm4
8252 .byte 196,99,93,74,203,80 // vblendvps %ymm5,%ymm3,%ymm4,%ymm9
8253 .byte 196,226,125,24,13,157,48,0,0 // vbroadcastss 0x309d(%rip),%ymm1 # 3e14 <_sk_callback_hsw+0x1d1>
8254 .byte 197,252,88,201 // vaddps %ymm1,%ymm0,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -04008255 .byte 65,184,0,0,0,0 // mov $0x0,%r8d
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008256 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
Mike Kleinb3665f02017-05-01 14:56:04 -04008257 .byte 197,249,110,216 // vmovd %eax,%xmm3
8258 .byte 196,98,125,88,227 // vpbroadcastd %xmm3,%ymm12
8259 .byte 197,156,194,217,1 // vcmpltps %ymm1,%ymm12,%ymm3
8260 .byte 196,98,125,24,45,123,48,0,0 // vbroadcastss 0x307b(%rip),%ymm13 # 3e18 <_sk_callback_hsw+0x1d5>
8261 .byte 196,193,116,88,229 // vaddps %ymm13,%ymm1,%ymm4
8262 .byte 196,227,117,74,220,48 // vblendvps %ymm3,%ymm4,%ymm1,%ymm3
8263 .byte 196,193,121,110,224 // vmovd %r8d,%xmm4
8264 .byte 196,98,125,88,252 // vpbroadcastd %xmm4,%ymm15
8265 .byte 196,193,116,194,231,1 // vcmpltps %ymm15,%ymm1,%ymm4
8266 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
8267 .byte 196,227,101,74,241,64 // vblendvps %ymm4,%ymm1,%ymm3,%ymm6
8268 .byte 196,98,125,24,29,68,48,0,0 // vbroadcastss 0x3044(%rip),%ymm11 # 3e10 <_sk_callback_hsw+0x1cd>
8269 .byte 196,66,109,170,217 // vfmsub213ps %ymm9,%ymm2,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -04008270 .byte 196,193,52,92,203 // vsubps %ymm11,%ymm9,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04008271 .byte 196,226,125,24,29,61,48,0,0 // vbroadcastss 0x303d(%rip),%ymm3 # 3e1c <_sk_callback_hsw+0x1d9>
Mike Kleinfb11acd2017-05-01 14:22:10 -04008272 .byte 197,116,89,243 // vmulps %ymm3,%ymm1,%ymm14
8273 .byte 65,184,171,170,42,62 // mov $0x3e2aaaab,%r8d
8274 .byte 184,171,170,42,63 // mov $0x3f2aaaab,%eax
8275 .byte 197,249,110,200 // vmovd %eax,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -04008276 .byte 196,226,125,88,233 // vpbroadcastd %xmm1,%ymm5
8277 .byte 196,226,125,24,37,32,48,0,0 // vbroadcastss 0x3020(%rip),%ymm4 # 3e20 <_sk_callback_hsw+0x1dd>
8278 .byte 197,220,92,206 // vsubps %ymm6,%ymm4,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -04008279 .byte 196,194,13,168,203 // vfmadd213ps %ymm11,%ymm14,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04008280 .byte 197,204,194,253,1 // vcmpltps %ymm5,%ymm6,%ymm7
Mike Kleinfb11acd2017-05-01 14:22:10 -04008281 .byte 196,227,37,74,201,112 // vblendvps %ymm7,%ymm1,%ymm11,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04008282 .byte 196,193,76,194,248,1 // vcmpltps %ymm8,%ymm6,%ymm7
Mike Kleinfb11acd2017-05-01 14:22:10 -04008283 .byte 196,195,117,74,249,112 // vblendvps %ymm7,%ymm9,%ymm1,%ymm7
8284 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -04008285 .byte 196,226,125,88,217 // vpbroadcastd %xmm1,%ymm3
8286 .byte 197,204,194,203,1 // vcmpltps %ymm3,%ymm6,%ymm1
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008287 .byte 196,194,13,168,243 // vfmadd213ps %ymm11,%ymm14,%ymm6
Mike Kleinb3665f02017-05-01 14:56:04 -04008288 .byte 196,227,69,74,206,16 // vblendvps %ymm1,%ymm6,%ymm7,%ymm1
8289 .byte 197,252,17,76,36,128 // vmovups %ymm1,-0x80(%rsp)
8290 .byte 197,156,194,200,1 // vcmpltps %ymm0,%ymm12,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -04008291 .byte 196,193,124,88,253 // vaddps %ymm13,%ymm0,%ymm7
Mike Kleinb3665f02017-05-01 14:56:04 -04008292 .byte 196,227,125,74,207,16 // vblendvps %ymm1,%ymm7,%ymm0,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -04008293 .byte 196,193,124,194,255,1 // vcmpltps %ymm15,%ymm0,%ymm7
Mike Kleinb3665f02017-05-01 14:56:04 -04008294 .byte 196,193,124,88,242 // vaddps %ymm10,%ymm0,%ymm6
8295 .byte 196,227,117,74,206,112 // vblendvps %ymm7,%ymm6,%ymm1,%ymm1
8296 .byte 197,220,92,241 // vsubps %ymm1,%ymm4,%ymm6
8297 .byte 196,194,13,168,243 // vfmadd213ps %ymm11,%ymm14,%ymm6
8298 .byte 197,244,194,253,1 // vcmpltps %ymm5,%ymm1,%ymm7
8299 .byte 196,227,37,74,246,112 // vblendvps %ymm7,%ymm6,%ymm11,%ymm6
8300 .byte 196,193,116,194,248,1 // vcmpltps %ymm8,%ymm1,%ymm7
8301 .byte 196,195,77,74,241,112 // vblendvps %ymm7,%ymm9,%ymm6,%ymm6
8302 .byte 197,244,194,251,1 // vcmpltps %ymm3,%ymm1,%ymm7
8303 .byte 196,194,13,168,203 // vfmadd213ps %ymm11,%ymm14,%ymm1
8304 .byte 196,227,77,74,201,112 // vblendvps %ymm7,%ymm1,%ymm6,%ymm1
8305 .byte 196,226,125,24,53,138,47,0,0 // vbroadcastss 0x2f8a(%rip),%ymm6 # 3e24 <_sk_callback_hsw+0x1e1>
8306 .byte 197,252,88,198 // vaddps %ymm6,%ymm0,%ymm0
8307 .byte 197,156,194,240,1 // vcmpltps %ymm0,%ymm12,%ymm6
8308 .byte 196,193,124,88,253 // vaddps %ymm13,%ymm0,%ymm7
8309 .byte 196,227,125,74,247,96 // vblendvps %ymm6,%ymm7,%ymm0,%ymm6
8310 .byte 196,193,124,194,255,1 // vcmpltps %ymm15,%ymm0,%ymm7
8311 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
8312 .byte 196,227,77,74,192,112 // vblendvps %ymm7,%ymm0,%ymm6,%ymm0
8313 .byte 197,220,92,224 // vsubps %ymm0,%ymm4,%ymm4
8314 .byte 197,252,40,240 // vmovaps %ymm0,%ymm6
8315 .byte 196,194,13,168,243 // vfmadd213ps %ymm11,%ymm14,%ymm6
8316 .byte 196,194,13,168,227 // vfmadd213ps %ymm11,%ymm14,%ymm4
8317 .byte 197,252,194,237,1 // vcmpltps %ymm5,%ymm0,%ymm5
8318 .byte 196,227,37,74,228,80 // vblendvps %ymm5,%ymm4,%ymm11,%ymm4
8319 .byte 196,193,124,194,232,1 // vcmpltps %ymm8,%ymm0,%ymm5
8320 .byte 196,195,93,74,225,80 // vblendvps %ymm5,%ymm9,%ymm4,%ymm4
8321 .byte 197,252,194,195,1 // vcmpltps %ymm3,%ymm0,%ymm0
8322 .byte 196,227,93,74,222,0 // vblendvps %ymm0,%ymm6,%ymm4,%ymm3
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008323 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04008324 .byte 197,252,194,100,36,160,0 // vcmpeqps -0x60(%rsp),%ymm0,%ymm4
Mike Kleinfb11acd2017-05-01 14:22:10 -04008325 .byte 197,252,16,68,36,128 // vmovups -0x80(%rsp),%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04008326 .byte 196,227,125,74,194,64 // vblendvps %ymm4,%ymm2,%ymm0,%ymm0
8327 .byte 196,227,117,74,202,64 // vblendvps %ymm4,%ymm2,%ymm1,%ymm1
8328 .byte 196,227,101,74,210,64 // vblendvps %ymm4,%ymm2,%ymm3,%ymm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008329 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -04008330 .byte 197,252,16,92,36,192 // vmovups -0x40(%rsp),%ymm3
8331 .byte 197,252,16,100,36,224 // vmovups -0x20(%rsp),%ymm4
8332 .byte 197,252,16,44,36 // vmovups (%rsp),%ymm5
8333 .byte 197,252,16,116,36,32 // vmovups 0x20(%rsp),%ymm6
8334 .byte 197,252,16,124,36,64 // vmovups 0x40(%rsp),%ymm7
8335 .byte 72,131,196,120 // add $0x78,%rsp
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008336 .byte 255,224 // jmpq *%rax
8337
Mike Klein7c4af542017-03-29 18:21:14 -04008338HIDDEN _sk_scale_1_float_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008339.globl _sk_scale_1_float_hsw
Mike Klein86714282017-04-13 17:37:38 -04008340FUNCTION(_sk_scale_1_float_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008341_sk_scale_1_float_hsw:
8342 .byte 72,173 // lods %ds:(%rsi),%rax
8343 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
8344 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
8345 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
8346 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
8347 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
8348 .byte 72,173 // lods %ds:(%rsi),%rax
8349 .byte 255,224 // jmpq *%rax
8350
Mike Klein7c4af542017-03-29 18:21:14 -04008351HIDDEN _sk_scale_u8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008352.globl _sk_scale_u8_hsw
Mike Klein86714282017-04-13 17:37:38 -04008353FUNCTION(_sk_scale_u8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008354_sk_scale_u8_hsw:
8355 .byte 73,137,200 // mov %rcx,%r8
8356 .byte 72,173 // lods %ds:(%rsi),%rax
8357 .byte 72,139,0 // mov (%rax),%rax
8358 .byte 72,1,248 // add %rdi,%rax
8359 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -04008360 .byte 117,51 // jne f99 <_sk_scale_u8_hsw+0x43>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008361 .byte 197,122,126,0 // vmovq (%rax),%xmm8
8362 .byte 196,66,125,49,192 // vpmovzxbd %xmm8,%ymm8
8363 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -04008364 .byte 196,98,125,24,13,171,46,0,0 // vbroadcastss 0x2eab(%rip),%ymm9 # 3e28 <_sk_callback_hsw+0x1e5>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008365 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
8366 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
8367 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
8368 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
8369 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
8370 .byte 72,173 // lods %ds:(%rsi),%rax
8371 .byte 76,137,193 // mov %r8,%rcx
8372 .byte 255,224 // jmpq *%rax
8373 .byte 49,201 // xor %ecx,%ecx
8374 .byte 77,137,194 // mov %r8,%r10
8375 .byte 69,49,201 // xor %r9d,%r9d
8376 .byte 68,15,182,24 // movzbl (%rax),%r11d
8377 .byte 72,255,192 // inc %rax
8378 .byte 73,211,227 // shl %cl,%r11
8379 .byte 77,9,217 // or %r11,%r9
8380 .byte 72,131,193,8 // add $0x8,%rcx
8381 .byte 73,255,202 // dec %r10
Mike Kleinb3665f02017-05-01 14:56:04 -04008382 .byte 117,234 // jne fa1 <_sk_scale_u8_hsw+0x4b>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008383 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -04008384 .byte 235,172 // jmp f6a <_sk_scale_u8_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008385
Mike Klein7c4af542017-03-29 18:21:14 -04008386HIDDEN _sk_lerp_1_float_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008387.globl _sk_lerp_1_float_hsw
Mike Klein86714282017-04-13 17:37:38 -04008388FUNCTION(_sk_lerp_1_float_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008389_sk_lerp_1_float_hsw:
8390 .byte 72,173 // lods %ds:(%rsi),%rax
8391 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
8392 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
8393 .byte 196,226,61,168,196 // vfmadd213ps %ymm4,%ymm8,%ymm0
8394 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
8395 .byte 196,226,61,168,205 // vfmadd213ps %ymm5,%ymm8,%ymm1
8396 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
8397 .byte 196,226,61,168,214 // vfmadd213ps %ymm6,%ymm8,%ymm2
8398 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
8399 .byte 196,226,61,168,223 // vfmadd213ps %ymm7,%ymm8,%ymm3
8400 .byte 72,173 // lods %ds:(%rsi),%rax
8401 .byte 255,224 // jmpq *%rax
8402
Mike Klein7c4af542017-03-29 18:21:14 -04008403HIDDEN _sk_lerp_u8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008404.globl _sk_lerp_u8_hsw
Mike Klein86714282017-04-13 17:37:38 -04008405FUNCTION(_sk_lerp_u8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008406_sk_lerp_u8_hsw:
8407 .byte 73,137,200 // mov %rcx,%r8
8408 .byte 72,173 // lods %ds:(%rsi),%rax
8409 .byte 72,139,0 // mov (%rax),%rax
8410 .byte 72,1,248 // add %rdi,%rax
8411 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -04008412 .byte 117,71 // jne 1044 <_sk_lerp_u8_hsw+0x57>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008413 .byte 197,122,126,0 // vmovq (%rax),%xmm8
8414 .byte 196,66,125,49,192 // vpmovzxbd %xmm8,%ymm8
8415 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -04008416 .byte 196,98,125,24,13,24,46,0,0 // vbroadcastss 0x2e18(%rip),%ymm9 # 3e2c <_sk_callback_hsw+0x1e9>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008417 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
8418 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
8419 .byte 196,226,61,168,196 // vfmadd213ps %ymm4,%ymm8,%ymm0
8420 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
8421 .byte 196,226,61,168,205 // vfmadd213ps %ymm5,%ymm8,%ymm1
8422 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
8423 .byte 196,226,61,168,214 // vfmadd213ps %ymm6,%ymm8,%ymm2
8424 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
8425 .byte 196,226,61,168,223 // vfmadd213ps %ymm7,%ymm8,%ymm3
8426 .byte 72,173 // lods %ds:(%rsi),%rax
8427 .byte 76,137,193 // mov %r8,%rcx
8428 .byte 255,224 // jmpq *%rax
8429 .byte 49,201 // xor %ecx,%ecx
8430 .byte 77,137,194 // mov %r8,%r10
8431 .byte 69,49,201 // xor %r9d,%r9d
8432 .byte 68,15,182,24 // movzbl (%rax),%r11d
8433 .byte 72,255,192 // inc %rax
8434 .byte 73,211,227 // shl %cl,%r11
8435 .byte 77,9,217 // or %r11,%r9
8436 .byte 72,131,193,8 // add $0x8,%rcx
8437 .byte 73,255,202 // dec %r10
Mike Kleinb3665f02017-05-01 14:56:04 -04008438 .byte 117,234 // jne 104c <_sk_lerp_u8_hsw+0x5f>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008439 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -04008440 .byte 235,152 // jmp 1001 <_sk_lerp_u8_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008441
Mike Klein7c4af542017-03-29 18:21:14 -04008442HIDDEN _sk_lerp_565_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008443.globl _sk_lerp_565_hsw
Mike Klein86714282017-04-13 17:37:38 -04008444FUNCTION(_sk_lerp_565_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008445_sk_lerp_565_hsw:
8446 .byte 72,173 // lods %ds:(%rsi),%rax
8447 .byte 76,139,16 // mov (%rax),%r10
8448 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008449 .byte 15,133,149,0,0,0 // jne 110c <_sk_lerp_565_hsw+0xa3>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008450 .byte 196,193,122,111,28,122 // vmovdqu (%r10,%rdi,2),%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -04008451 .byte 196,226,125,51,219 // vpmovzxwd %xmm3,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04008452 .byte 196,98,125,88,5,165,45,0,0 // vpbroadcastd 0x2da5(%rip),%ymm8 # 3e30 <_sk_callback_hsw+0x1ed>
Mike Kleinfe560a82017-05-01 12:56:35 -04008453 .byte 196,65,101,219,192 // vpand %ymm8,%ymm3,%ymm8
Mike Klein308e6242017-04-27 13:56:33 -04008454 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -04008455 .byte 196,98,125,24,13,150,45,0,0 // vbroadcastss 0x2d96(%rip),%ymm9 # 3e34 <_sk_callback_hsw+0x1f1>
Mike Kleinfe560a82017-05-01 12:56:35 -04008456 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -04008457 .byte 196,98,125,88,13,140,45,0,0 // vpbroadcastd 0x2d8c(%rip),%ymm9 # 3e38 <_sk_callback_hsw+0x1f5>
Mike Kleinfe560a82017-05-01 12:56:35 -04008458 .byte 196,65,101,219,201 // vpand %ymm9,%ymm3,%ymm9
8459 .byte 196,65,124,91,201 // vcvtdq2ps %ymm9,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -04008460 .byte 196,98,125,24,21,125,45,0,0 // vbroadcastss 0x2d7d(%rip),%ymm10 # 3e3c <_sk_callback_hsw+0x1f9>
Mike Kleinfe560a82017-05-01 12:56:35 -04008461 .byte 196,65,52,89,202 // vmulps %ymm10,%ymm9,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -04008462 .byte 196,98,125,88,21,115,45,0,0 // vpbroadcastd 0x2d73(%rip),%ymm10 # 3e40 <_sk_callback_hsw+0x1fd>
Mike Kleinfe560a82017-05-01 12:56:35 -04008463 .byte 196,193,101,219,218 // vpand %ymm10,%ymm3,%ymm3
8464 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04008465 .byte 196,98,125,24,21,101,45,0,0 // vbroadcastss 0x2d65(%rip),%ymm10 # 3e44 <_sk_callback_hsw+0x201>
Mike Kleinfe560a82017-05-01 12:56:35 -04008466 .byte 196,193,100,89,218 // vmulps %ymm10,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -04008467 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -04008468 .byte 196,226,61,168,196 // vfmadd213ps %ymm4,%ymm8,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -04008469 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -04008470 .byte 196,226,53,168,205 // vfmadd213ps %ymm5,%ymm9,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -04008471 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
8472 .byte 196,226,101,168,214 // vfmadd213ps %ymm6,%ymm3,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -04008473 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -04008474 .byte 196,226,125,24,29,62,45,0,0 // vbroadcastss 0x2d3e(%rip),%ymm3 # 3e48 <_sk_callback_hsw+0x205>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008475 .byte 255,224 // jmpq *%rax
8476 .byte 65,137,200 // mov %ecx,%r8d
8477 .byte 65,128,224,7 // and $0x7,%r8b
8478 .byte 197,225,239,219 // vpxor %xmm3,%xmm3,%xmm3
8479 .byte 65,254,200 // dec %r8b
8480 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinb3665f02017-05-01 14:56:04 -04008481 .byte 15,135,89,255,255,255 // ja 107d <_sk_lerp_565_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008482 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinb3665f02017-05-01 14:56:04 -04008483 .byte 76,141,13,73,0,0,0 // lea 0x49(%rip),%r9 # 1178 <_sk_lerp_565_hsw+0x10f>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008484 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
8485 .byte 76,1,200 // add %r9,%rax
8486 .byte 255,224 // jmpq *%rax
8487 .byte 197,225,239,219 // vpxor %xmm3,%xmm3,%xmm3
8488 .byte 196,193,97,196,92,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm3,%xmm3
8489 .byte 196,193,97,196,92,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm3,%xmm3
8490 .byte 196,193,97,196,92,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm3,%xmm3
8491 .byte 196,193,97,196,92,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm3,%xmm3
8492 .byte 196,193,97,196,92,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm3,%xmm3
8493 .byte 196,193,97,196,92,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm3,%xmm3
8494 .byte 196,193,97,196,28,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm3,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -04008495 .byte 233,5,255,255,255 // jmpq 107d <_sk_lerp_565_hsw+0x14>
Mike Kleinfb11acd2017-05-01 14:22:10 -04008496 .byte 244 // hlt
Mike Kleind7e06ae2017-03-29 16:33:06 -04008497 .byte 255 // (bad)
8498 .byte 255 // (bad)
8499 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -04008500 .byte 236 // in (%dx),%al
Mike Klein7125ac62017-04-05 15:27:22 -04008501 .byte 255 // (bad)
8502 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -04008503 .byte 255,228 // jmpq *%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -04008504 .byte 255 // (bad)
8505 .byte 255 // (bad)
8506 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -04008507 .byte 220,255 // fdivr %st,%st(7)
8508 .byte 255 // (bad)
8509 .byte 255,212 // callq *%rsp
8510 .byte 255 // (bad)
8511 .byte 255 // (bad)
8512 .byte 255,204 // dec %esp
8513 .byte 255 // (bad)
8514 .byte 255 // (bad)
8515 .byte 255,192 // inc %eax
Mike Kleind7e06ae2017-03-29 16:33:06 -04008516 .byte 255 // (bad)
8517 .byte 255 // (bad)
8518 .byte 255 // .byte 0xff
8519
Mike Klein7c4af542017-03-29 18:21:14 -04008520HIDDEN _sk_load_tables_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008521.globl _sk_load_tables_hsw
Mike Klein86714282017-04-13 17:37:38 -04008522FUNCTION(_sk_load_tables_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008523_sk_load_tables_hsw:
8524 .byte 73,137,200 // mov %rcx,%r8
8525 .byte 72,173 // lods %ds:(%rsi),%rax
8526 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
8527 .byte 76,3,8 // add (%rax),%r9
8528 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -04008529 .byte 117,105 // jne 1212 <_sk_load_tables_hsw+0x7e>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008530 .byte 196,193,126,111,25 // vmovdqu (%r9),%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04008531 .byte 197,229,219,13,42,47,0,0 // vpand 0x2f2a(%rip),%ymm3,%ymm1 # 40e0 <_sk_callback_hsw+0x49d>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008532 .byte 196,65,61,118,192 // vpcmpeqd %ymm8,%ymm8,%ymm8
8533 .byte 72,139,72,8 // mov 0x8(%rax),%rcx
8534 .byte 76,139,72,16 // mov 0x10(%rax),%r9
Mike Klein0aa742f2017-04-27 13:36:57 -04008535 .byte 197,237,118,210 // vpcmpeqd %ymm2,%ymm2,%ymm2
8536 .byte 196,226,109,146,4,137 // vgatherdps %ymm2,(%rcx,%ymm1,4),%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04008537 .byte 196,226,101,0,21,42,47,0,0 // vpshufb 0x2f2a(%rip),%ymm3,%ymm2 # 4100 <_sk_callback_hsw+0x4bd>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008538 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
Mike Klein0aa742f2017-04-27 13:36:57 -04008539 .byte 196,194,53,146,12,145 // vgatherdps %ymm9,(%r9,%ymm2,4),%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -04008540 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -04008541 .byte 196,98,101,0,13,50,47,0,0 // vpshufb 0x2f32(%rip),%ymm3,%ymm9 # 4120 <_sk_callback_hsw+0x4dd>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008542 .byte 196,162,61,146,20,136 // vgatherdps %ymm8,(%rax,%ymm9,4),%ymm2
8543 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -04008544 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04008545 .byte 196,98,125,24,5,70,44,0,0 // vbroadcastss 0x2c46(%rip),%ymm8 # 3e4c <_sk_callback_hsw+0x209>
Mike Kleinfe560a82017-05-01 12:56:35 -04008546 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -04008547 .byte 72,173 // lods %ds:(%rsi),%rax
8548 .byte 76,137,193 // mov %r8,%rcx
8549 .byte 255,224 // jmpq *%rax
8550 .byte 185,8,0,0,0 // mov $0x8,%ecx
8551 .byte 68,41,193 // sub %r8d,%ecx
8552 .byte 192,225,3 // shl $0x3,%cl
8553 .byte 73,199,194,255,255,255,255 // mov $0xffffffffffffffff,%r10
8554 .byte 73,211,234 // shr %cl,%r10
8555 .byte 196,193,249,110,194 // vmovq %r10,%xmm0
8556 .byte 196,226,125,33,192 // vpmovsxbd %xmm0,%ymm0
8557 .byte 196,194,125,140,25 // vpmaskmovd (%r9),%ymm0,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04008558 .byte 233,115,255,255,255 // jmpq 11ae <_sk_load_tables_hsw+0x1a>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008559
Mike Kleina3735cd2017-04-17 13:19:05 -04008560HIDDEN _sk_load_tables_u16_be_hsw
8561.globl _sk_load_tables_u16_be_hsw
8562FUNCTION(_sk_load_tables_u16_be_hsw)
8563_sk_load_tables_u16_be_hsw:
8564 .byte 72,173 // lods %ds:(%rsi),%rax
8565 .byte 76,139,0 // mov (%rax),%r8
8566 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
8567 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008568 .byte 15,133,201,0,0,0 // jne 131a <_sk_load_tables_u16_be_hsw+0xdf>
Mike Kleina3735cd2017-04-17 13:19:05 -04008569 .byte 196,1,121,16,4,72 // vmovupd (%r8,%r9,2),%xmm8
8570 .byte 196,129,121,16,84,72,16 // vmovupd 0x10(%r8,%r9,2),%xmm2
8571 .byte 196,129,121,16,92,72,32 // vmovupd 0x20(%r8,%r9,2),%xmm3
8572 .byte 196,1,122,111,76,72,48 // vmovdqu 0x30(%r8,%r9,2),%xmm9
8573 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
8574 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
8575 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
8576 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
8577 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
8578 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
Mike Klein0aa742f2017-04-27 13:36:57 -04008579 .byte 197,241,97,195 // vpunpcklwd %xmm3,%xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -04008580 .byte 197,241,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm3
Mike Klein0aa742f2017-04-27 13:36:57 -04008581 .byte 197,185,108,200 // vpunpcklqdq %xmm0,%xmm8,%xmm1
8582 .byte 197,185,109,208 // vpunpckhqdq %xmm0,%xmm8,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -04008583 .byte 197,49,108,195 // vpunpcklqdq %xmm3,%xmm9,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -04008584 .byte 197,121,111,21,190,47,0,0 // vmovdqa 0x2fbe(%rip),%xmm10 # 4260 <_sk_callback_hsw+0x61d>
Mike Klein0aa742f2017-04-27 13:36:57 -04008585 .byte 196,193,113,219,194 // vpand %xmm10,%xmm1,%xmm0
8586 .byte 196,226,125,51,200 // vpmovzxwd %xmm0,%ymm1
Mike Kleina3735cd2017-04-17 13:19:05 -04008587 .byte 196,65,37,118,219 // vpcmpeqd %ymm11,%ymm11,%ymm11
8588 .byte 76,139,64,8 // mov 0x8(%rax),%r8
8589 .byte 76,139,72,16 // mov 0x10(%rax),%r9
8590 .byte 196,65,29,118,228 // vpcmpeqd %ymm12,%ymm12,%ymm12
8591 .byte 196,194,29,146,4,136 // vgatherdps %ymm12,(%r8,%ymm1,4),%ymm0
Mike Klein0aa742f2017-04-27 13:36:57 -04008592 .byte 196,193,105,219,202 // vpand %xmm10,%xmm2,%xmm1
8593 .byte 196,226,125,51,209 // vpmovzxwd %xmm1,%ymm2
8594 .byte 196,65,29,118,228 // vpcmpeqd %ymm12,%ymm12,%ymm12
8595 .byte 196,194,29,146,12,145 // vgatherdps %ymm12,(%r9,%ymm2,4),%ymm1
Mike Kleina3735cd2017-04-17 13:19:05 -04008596 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -04008597 .byte 196,193,57,219,210 // vpand %xmm10,%xmm8,%xmm2
8598 .byte 196,98,125,51,194 // vpmovzxwd %xmm2,%ymm8
Mike Kleina3735cd2017-04-17 13:19:05 -04008599 .byte 196,162,37,146,20,128 // vgatherdps %ymm11,(%rax,%ymm8,4),%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -04008600 .byte 197,177,109,219 // vpunpckhqdq %xmm3,%xmm9,%xmm3
8601 .byte 197,185,113,243,8 // vpsllw $0x8,%xmm3,%xmm8
Mike Kleina3735cd2017-04-17 13:19:05 -04008602 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -04008603 .byte 197,185,235,219 // vpor %xmm3,%xmm8,%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -04008604 .byte 196,226,125,51,219 // vpmovzxwd %xmm3,%ymm3
8605 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04008606 .byte 196,98,125,24,5,63,43,0,0 // vbroadcastss 0x2b3f(%rip),%ymm8 # 3e50 <_sk_callback_hsw+0x20d>
Mike Kleina3735cd2017-04-17 13:19:05 -04008607 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
8608 .byte 72,173 // lods %ds:(%rsi),%rax
8609 .byte 255,224 // jmpq *%rax
8610 .byte 196,1,123,16,4,72 // vmovsd (%r8,%r9,2),%xmm8
8611 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
8612 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008613 .byte 116,85 // je 1380 <_sk_load_tables_u16_be_hsw+0x145>
Mike Kleina3735cd2017-04-17 13:19:05 -04008614 .byte 196,1,57,22,68,72,8 // vmovhpd 0x8(%r8,%r9,2),%xmm8,%xmm8
8615 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008616 .byte 114,72 // jb 1380 <_sk_load_tables_u16_be_hsw+0x145>
Mike Kleina3735cd2017-04-17 13:19:05 -04008617 .byte 196,129,123,16,84,72,16 // vmovsd 0x10(%r8,%r9,2),%xmm2
8618 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008619 .byte 116,72 // je 138d <_sk_load_tables_u16_be_hsw+0x152>
Mike Kleina3735cd2017-04-17 13:19:05 -04008620 .byte 196,129,105,22,84,72,24 // vmovhpd 0x18(%r8,%r9,2),%xmm2,%xmm2
8621 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008622 .byte 114,59 // jb 138d <_sk_load_tables_u16_be_hsw+0x152>
Mike Kleina3735cd2017-04-17 13:19:05 -04008623 .byte 196,129,123,16,92,72,32 // vmovsd 0x20(%r8,%r9,2),%xmm3
8624 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008625 .byte 15,132,9,255,255,255 // je 126c <_sk_load_tables_u16_be_hsw+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -04008626 .byte 196,129,97,22,92,72,40 // vmovhpd 0x28(%r8,%r9,2),%xmm3,%xmm3
8627 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008628 .byte 15,130,248,254,255,255 // jb 126c <_sk_load_tables_u16_be_hsw+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -04008629 .byte 196,1,122,126,76,72,48 // vmovq 0x30(%r8,%r9,2),%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -04008630 .byte 233,236,254,255,255 // jmpq 126c <_sk_load_tables_u16_be_hsw+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -04008631 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
8632 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -04008633 .byte 233,223,254,255,255 // jmpq 126c <_sk_load_tables_u16_be_hsw+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -04008634 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -04008635 .byte 233,214,254,255,255 // jmpq 126c <_sk_load_tables_u16_be_hsw+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -04008636
8637HIDDEN _sk_load_tables_rgb_u16_be_hsw
8638.globl _sk_load_tables_rgb_u16_be_hsw
8639FUNCTION(_sk_load_tables_rgb_u16_be_hsw)
8640_sk_load_tables_rgb_u16_be_hsw:
8641 .byte 72,173 // lods %ds:(%rsi),%rax
8642 .byte 76,139,0 // mov (%rax),%r8
8643 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
8644 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008645 .byte 15,133,193,0,0,0 // jne 1469 <_sk_load_tables_rgb_u16_be_hsw+0xd3>
Mike Kleina3735cd2017-04-17 13:19:05 -04008646 .byte 196,129,122,111,4,72 // vmovdqu (%r8,%r9,2),%xmm0
8647 .byte 196,129,122,111,84,72,12 // vmovdqu 0xc(%r8,%r9,2),%xmm2
8648 .byte 196,129,122,111,76,72,24 // vmovdqu 0x18(%r8,%r9,2),%xmm1
8649 .byte 196,129,122,111,92,72,32 // vmovdqu 0x20(%r8,%r9,2),%xmm3
8650 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
8651 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
8652 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
8653 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
8654 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
8655 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
8656 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
8657 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
8658 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
8659 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
Mike Klein0aa742f2017-04-27 13:36:57 -04008660 .byte 197,249,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -04008661 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -04008662 .byte 197,241,105,203 // vpunpckhwd %xmm3,%xmm1,%xmm1
8663 .byte 197,185,108,218 // vpunpcklqdq %xmm2,%xmm8,%xmm3
8664 .byte 197,185,109,210 // vpunpckhqdq %xmm2,%xmm8,%xmm2
8665 .byte 197,121,108,193 // vpunpcklqdq %xmm1,%xmm0,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -04008666 .byte 197,121,111,13,94,46,0,0 // vmovdqa 0x2e5e(%rip),%xmm9 # 4270 <_sk_callback_hsw+0x62d>
Mike Klein0aa742f2017-04-27 13:36:57 -04008667 .byte 196,193,97,219,193 // vpand %xmm9,%xmm3,%xmm0
8668 .byte 196,226,125,51,200 // vpmovzxwd %xmm0,%ymm1
8669 .byte 197,229,118,219 // vpcmpeqd %ymm3,%ymm3,%ymm3
Mike Kleina3735cd2017-04-17 13:19:05 -04008670 .byte 76,139,64,8 // mov 0x8(%rax),%r8
8671 .byte 76,139,72,16 // mov 0x10(%rax),%r9
Mike Klein0aa742f2017-04-27 13:36:57 -04008672 .byte 196,65,45,118,210 // vpcmpeqd %ymm10,%ymm10,%ymm10
8673 .byte 196,194,45,146,4,136 // vgatherdps %ymm10,(%r8,%ymm1,4),%ymm0
8674 .byte 196,193,105,219,201 // vpand %xmm9,%xmm2,%xmm1
8675 .byte 196,226,125,51,209 // vpmovzxwd %xmm1,%ymm2
8676 .byte 196,65,45,118,210 // vpcmpeqd %ymm10,%ymm10,%ymm10
8677 .byte 196,194,45,146,12,145 // vgatherdps %ymm10,(%r9,%ymm2,4),%ymm1
Mike Kleina3735cd2017-04-17 13:19:05 -04008678 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -04008679 .byte 196,193,57,219,209 // vpand %xmm9,%xmm8,%xmm2
8680 .byte 196,98,125,51,194 // vpmovzxwd %xmm2,%ymm8
8681 .byte 196,162,101,146,20,128 // vgatherdps %ymm3,(%rax,%ymm8,4),%ymm2
Mike Kleina3735cd2017-04-17 13:19:05 -04008682 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -04008683 .byte 196,226,125,24,29,237,41,0,0 // vbroadcastss 0x29ed(%rip),%ymm3 # 3e54 <_sk_callback_hsw+0x211>
Mike Kleina3735cd2017-04-17 13:19:05 -04008684 .byte 255,224 // jmpq *%rax
8685 .byte 196,129,121,110,4,72 // vmovd (%r8,%r9,2),%xmm0
8686 .byte 196,129,121,196,68,72,4,2 // vpinsrw $0x2,0x4(%r8,%r9,2),%xmm0,%xmm0
8687 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008688 .byte 117,5 // jne 1482 <_sk_load_tables_rgb_u16_be_hsw+0xec>
8689 .byte 233,90,255,255,255 // jmpq 13dc <_sk_load_tables_rgb_u16_be_hsw+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -04008690 .byte 196,129,121,110,76,72,6 // vmovd 0x6(%r8,%r9,2),%xmm1
8691 .byte 196,1,113,196,68,72,10,2 // vpinsrw $0x2,0xa(%r8,%r9,2),%xmm1,%xmm8
8692 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008693 .byte 114,26 // jb 14b1 <_sk_load_tables_rgb_u16_be_hsw+0x11b>
Mike Kleina3735cd2017-04-17 13:19:05 -04008694 .byte 196,129,121,110,76,72,12 // vmovd 0xc(%r8,%r9,2),%xmm1
8695 .byte 196,129,113,196,84,72,16,2 // vpinsrw $0x2,0x10(%r8,%r9,2),%xmm1,%xmm2
8696 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008697 .byte 117,10 // jne 14b6 <_sk_load_tables_rgb_u16_be_hsw+0x120>
8698 .byte 233,43,255,255,255 // jmpq 13dc <_sk_load_tables_rgb_u16_be_hsw+0x46>
8699 .byte 233,38,255,255,255 // jmpq 13dc <_sk_load_tables_rgb_u16_be_hsw+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -04008700 .byte 196,129,121,110,76,72,18 // vmovd 0x12(%r8,%r9,2),%xmm1
8701 .byte 196,1,113,196,76,72,22,2 // vpinsrw $0x2,0x16(%r8,%r9,2),%xmm1,%xmm9
8702 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008703 .byte 114,26 // jb 14e5 <_sk_load_tables_rgb_u16_be_hsw+0x14f>
Mike Kleina3735cd2017-04-17 13:19:05 -04008704 .byte 196,129,121,110,76,72,24 // vmovd 0x18(%r8,%r9,2),%xmm1
8705 .byte 196,129,113,196,76,72,28,2 // vpinsrw $0x2,0x1c(%r8,%r9,2),%xmm1,%xmm1
8706 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008707 .byte 117,10 // jne 14ea <_sk_load_tables_rgb_u16_be_hsw+0x154>
8708 .byte 233,247,254,255,255 // jmpq 13dc <_sk_load_tables_rgb_u16_be_hsw+0x46>
8709 .byte 233,242,254,255,255 // jmpq 13dc <_sk_load_tables_rgb_u16_be_hsw+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -04008710 .byte 196,129,121,110,92,72,30 // vmovd 0x1e(%r8,%r9,2),%xmm3
8711 .byte 196,1,97,196,92,72,34,2 // vpinsrw $0x2,0x22(%r8,%r9,2),%xmm3,%xmm11
8712 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04008713 .byte 114,20 // jb 1513 <_sk_load_tables_rgb_u16_be_hsw+0x17d>
Mike Kleina3735cd2017-04-17 13:19:05 -04008714 .byte 196,129,121,110,92,72,36 // vmovd 0x24(%r8,%r9,2),%xmm3
8715 .byte 196,129,97,196,92,72,40,2 // vpinsrw $0x2,0x28(%r8,%r9,2),%xmm3,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -04008716 .byte 233,201,254,255,255 // jmpq 13dc <_sk_load_tables_rgb_u16_be_hsw+0x46>
8717 .byte 233,196,254,255,255 // jmpq 13dc <_sk_load_tables_rgb_u16_be_hsw+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -04008718
Mike Klein40de6da2017-04-07 13:09:29 -04008719HIDDEN _sk_byte_tables_hsw
8720.globl _sk_byte_tables_hsw
Mike Klein86714282017-04-13 17:37:38 -04008721FUNCTION(_sk_byte_tables_hsw)
Mike Klein40de6da2017-04-07 13:09:29 -04008722_sk_byte_tables_hsw:
8723 .byte 85 // push %rbp
8724 .byte 65,87 // push %r15
8725 .byte 65,86 // push %r14
8726 .byte 65,85 // push %r13
8727 .byte 65,84 // push %r12
8728 .byte 83 // push %rbx
8729 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -04008730 .byte 196,98,125,24,5,43,41,0,0 // vbroadcastss 0x292b(%rip),%ymm8 # 3e58 <_sk_callback_hsw+0x215>
Mike Kleinfe560a82017-05-01 12:56:35 -04008731 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Klein40de6da2017-04-07 13:09:29 -04008732 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
8733 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
8734 .byte 68,137,197 // mov %r8d,%ebp
8735 .byte 77,137,194 // mov %r8,%r10
8736 .byte 73,193,234,32 // shr $0x20,%r10
8737 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
8738 .byte 69,137,195 // mov %r8d,%r11d
8739 .byte 77,137,199 // mov %r8,%r15
8740 .byte 73,193,239,32 // shr $0x20,%r15
8741 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
8742 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
8743 .byte 69,137,198 // mov %r8d,%r14d
8744 .byte 77,137,196 // mov %r8,%r12
8745 .byte 73,193,236,32 // shr $0x20,%r12
8746 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
8747 .byte 65,137,221 // mov %ebx,%r13d
8748 .byte 72,193,235,32 // shr $0x20,%rbx
8749 .byte 76,139,8 // mov (%rax),%r9
8750 .byte 76,139,64,8 // mov 0x8(%rax),%r8
8751 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
8752 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
8753 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
8754 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
8755 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
8756 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
8757 .byte 67,15,182,44,41 // movzbl (%r9,%r13,1),%ebp
8758 .byte 196,227,121,32,197,4 // vpinsrb $0x4,%ebp,%xmm0,%xmm0
8759 .byte 65,15,182,44,25 // movzbl (%r9,%rbx,1),%ebp
8760 .byte 196,227,121,32,197,5 // vpinsrb $0x5,%ebp,%xmm0,%xmm0
8761 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
8762 .byte 196,227,121,32,197,6 // vpinsrb $0x6,%ebp,%xmm0,%xmm0
8763 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
8764 .byte 196,227,121,32,197,7 // vpinsrb $0x7,%ebp,%xmm0,%xmm0
8765 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -04008766 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04008767 .byte 196,98,125,24,13,124,40,0,0 // vbroadcastss 0x287c(%rip),%ymm9 # 3e5c <_sk_callback_hsw+0x219>
Mike Kleinfe560a82017-05-01 12:56:35 -04008768 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
8769 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -04008770 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
8771 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
8772 .byte 65,137,233 // mov %ebp,%r9d
8773 .byte 72,193,237,32 // shr $0x20,%rbp
8774 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
8775 .byte 65,137,218 // mov %ebx,%r10d
8776 .byte 72,193,235,32 // shr $0x20,%rbx
8777 .byte 196,227,125,57,201,1 // vextracti128 $0x1,%ymm1,%xmm1
8778 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
8779 .byte 69,137,222 // mov %r11d,%r14d
8780 .byte 73,193,235,32 // shr $0x20,%r11
8781 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
8782 .byte 69,137,252 // mov %r15d,%r12d
8783 .byte 73,193,239,32 // shr $0x20,%r15
8784 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
8785 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
8786 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
8787 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
8788 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
8789 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
8790 .byte 67,15,182,44,32 // movzbl (%r8,%r12,1),%ebp
8791 .byte 196,227,113,32,205,4 // vpinsrb $0x4,%ebp,%xmm1,%xmm1
8792 .byte 67,15,182,44,56 // movzbl (%r8,%r15,1),%ebp
8793 .byte 196,227,113,32,205,5 // vpinsrb $0x5,%ebp,%xmm1,%xmm1
8794 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
8795 .byte 196,227,113,32,205,6 // vpinsrb $0x6,%ebp,%xmm1,%xmm1
8796 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
8797 .byte 196,227,113,32,205,7 // vpinsrb $0x7,%ebp,%xmm1,%xmm1
8798 .byte 196,226,125,49,201 // vpmovzxbd %xmm1,%ymm1
8799 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -04008800 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -04008801 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Kleinfe560a82017-05-01 12:56:35 -04008802 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -04008803 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
8804 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
8805 .byte 65,137,233 // mov %ebp,%r9d
8806 .byte 72,193,237,32 // shr $0x20,%rbp
8807 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
8808 .byte 65,137,218 // mov %ebx,%r10d
8809 .byte 72,193,235,32 // shr $0x20,%rbx
8810 .byte 196,227,125,57,210,1 // vextracti128 $0x1,%ymm2,%xmm2
8811 .byte 196,195,249,22,211,1 // vpextrq $0x1,%xmm2,%r11
8812 .byte 69,137,222 // mov %r11d,%r14d
8813 .byte 73,193,235,32 // shr $0x20,%r11
8814 .byte 196,193,249,126,215 // vmovq %xmm2,%r15
8815 .byte 69,137,252 // mov %r15d,%r12d
8816 .byte 73,193,239,32 // shr $0x20,%r15
8817 .byte 196,131,121,32,20,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm2
8818 .byte 196,195,105,32,20,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm2,%xmm2
8819 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
8820 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
8821 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
8822 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
8823 .byte 67,15,182,44,32 // movzbl (%r8,%r12,1),%ebp
8824 .byte 196,227,105,32,213,4 // vpinsrb $0x4,%ebp,%xmm2,%xmm2
8825 .byte 67,15,182,44,56 // movzbl (%r8,%r15,1),%ebp
8826 .byte 196,227,105,32,213,5 // vpinsrb $0x5,%ebp,%xmm2,%xmm2
8827 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
8828 .byte 196,227,105,32,213,6 // vpinsrb $0x6,%ebp,%xmm2,%xmm2
8829 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
8830 .byte 196,227,105,32,213,7 // vpinsrb $0x7,%ebp,%xmm2,%xmm2
8831 .byte 196,226,125,49,210 // vpmovzxbd %xmm2,%ymm2
8832 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -04008833 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -04008834 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -04008835 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Klein40de6da2017-04-07 13:09:29 -04008836 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
8837 .byte 196,227,249,22,221,1 // vpextrq $0x1,%xmm3,%rbp
8838 .byte 65,137,232 // mov %ebp,%r8d
8839 .byte 72,193,237,32 // shr $0x20,%rbp
8840 .byte 196,225,249,126,219 // vmovq %xmm3,%rbx
8841 .byte 65,137,217 // mov %ebx,%r9d
8842 .byte 72,193,235,32 // shr $0x20,%rbx
8843 .byte 196,227,125,57,219,1 // vextracti128 $0x1,%ymm3,%xmm3
8844 .byte 196,195,249,22,218,1 // vpextrq $0x1,%xmm3,%r10
8845 .byte 69,137,211 // mov %r10d,%r11d
8846 .byte 73,193,234,32 // shr $0x20,%r10
8847 .byte 196,193,249,126,222 // vmovq %xmm3,%r14
8848 .byte 69,137,247 // mov %r14d,%r15d
8849 .byte 73,193,238,32 // shr $0x20,%r14
8850 .byte 196,163,121,32,28,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm3
8851 .byte 196,227,97,32,28,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm3,%xmm3
8852 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
8853 .byte 196,227,97,32,219,2 // vpinsrb $0x2,%ebx,%xmm3,%xmm3
8854 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
8855 .byte 196,227,97,32,221,3 // vpinsrb $0x3,%ebp,%xmm3,%xmm3
8856 .byte 66,15,182,44,56 // movzbl (%rax,%r15,1),%ebp
8857 .byte 196,227,97,32,221,4 // vpinsrb $0x4,%ebp,%xmm3,%xmm3
8858 .byte 66,15,182,44,48 // movzbl (%rax,%r14,1),%ebp
8859 .byte 196,227,97,32,221,5 // vpinsrb $0x5,%ebp,%xmm3,%xmm3
8860 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
8861 .byte 196,227,97,32,221,6 // vpinsrb $0x6,%ebp,%xmm3,%xmm3
8862 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
8863 .byte 196,227,97,32,216,7 // vpinsrb $0x7,%eax,%xmm3,%xmm3
8864 .byte 196,226,125,49,219 // vpmovzxbd %xmm3,%ymm3
8865 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -04008866 .byte 196,193,100,89,217 // vmulps %ymm9,%ymm3,%ymm3
Mike Klein40de6da2017-04-07 13:09:29 -04008867 .byte 72,173 // lods %ds:(%rsi),%rax
8868 .byte 91 // pop %rbx
8869 .byte 65,92 // pop %r12
8870 .byte 65,93 // pop %r13
8871 .byte 65,94 // pop %r14
8872 .byte 65,95 // pop %r15
8873 .byte 93 // pop %rbp
8874 .byte 255,224 // jmpq *%rax
8875
8876HIDDEN _sk_byte_tables_rgb_hsw
8877.globl _sk_byte_tables_rgb_hsw
Mike Klein86714282017-04-13 17:37:38 -04008878FUNCTION(_sk_byte_tables_rgb_hsw)
Mike Klein40de6da2017-04-07 13:09:29 -04008879_sk_byte_tables_rgb_hsw:
8880 .byte 85 // push %rbp
8881 .byte 65,87 // push %r15
8882 .byte 65,86 // push %r14
8883 .byte 65,85 // push %r13
8884 .byte 65,84 // push %r12
8885 .byte 83 // push %rbx
8886 .byte 72,173 // lods %ds:(%rsi),%rax
8887 .byte 68,139,64,24 // mov 0x18(%rax),%r8d
8888 .byte 65,255,200 // dec %r8d
8889 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
8890 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
8891 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
8892 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
8893 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
8894 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
8895 .byte 68,137,197 // mov %r8d,%ebp
8896 .byte 77,137,194 // mov %r8,%r10
8897 .byte 73,193,234,32 // shr $0x20,%r10
8898 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
8899 .byte 69,137,195 // mov %r8d,%r11d
8900 .byte 77,137,199 // mov %r8,%r15
8901 .byte 73,193,239,32 // shr $0x20,%r15
8902 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
8903 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
8904 .byte 69,137,198 // mov %r8d,%r14d
8905 .byte 77,137,196 // mov %r8,%r12
8906 .byte 73,193,236,32 // shr $0x20,%r12
8907 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
8908 .byte 65,137,221 // mov %ebx,%r13d
8909 .byte 72,193,235,32 // shr $0x20,%rbx
8910 .byte 76,139,8 // mov (%rax),%r9
8911 .byte 76,139,64,8 // mov 0x8(%rax),%r8
8912 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
8913 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
8914 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
8915 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
8916 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
8917 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
8918 .byte 67,15,182,44,41 // movzbl (%r9,%r13,1),%ebp
8919 .byte 196,227,121,32,197,4 // vpinsrb $0x4,%ebp,%xmm0,%xmm0
8920 .byte 65,15,182,44,25 // movzbl (%r9,%rbx,1),%ebp
8921 .byte 196,227,121,32,197,5 // vpinsrb $0x5,%ebp,%xmm0,%xmm0
8922 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
8923 .byte 196,227,121,32,197,6 // vpinsrb $0x6,%ebp,%xmm0,%xmm0
8924 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
8925 .byte 196,227,121,32,197,7 // vpinsrb $0x7,%ebp,%xmm0,%xmm0
8926 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -04008927 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04008928 .byte 196,98,125,24,13,181,37,0,0 // vbroadcastss 0x25b5(%rip),%ymm9 # 3e60 <_sk_callback_hsw+0x21d>
Mike Kleinfe560a82017-05-01 12:56:35 -04008929 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
Mike Klein40de6da2017-04-07 13:09:29 -04008930 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
8931 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
8932 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
8933 .byte 65,137,233 // mov %ebp,%r9d
8934 .byte 72,193,237,32 // shr $0x20,%rbp
8935 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
8936 .byte 65,137,218 // mov %ebx,%r10d
8937 .byte 72,193,235,32 // shr $0x20,%rbx
8938 .byte 196,227,125,57,201,1 // vextracti128 $0x1,%ymm1,%xmm1
8939 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
8940 .byte 69,137,222 // mov %r11d,%r14d
8941 .byte 73,193,235,32 // shr $0x20,%r11
8942 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
8943 .byte 69,137,252 // mov %r15d,%r12d
8944 .byte 73,193,239,32 // shr $0x20,%r15
8945 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
8946 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
8947 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
8948 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
8949 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
8950 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
8951 .byte 67,15,182,44,32 // movzbl (%r8,%r12,1),%ebp
8952 .byte 196,227,113,32,205,4 // vpinsrb $0x4,%ebp,%xmm1,%xmm1
8953 .byte 67,15,182,44,56 // movzbl (%r8,%r15,1),%ebp
8954 .byte 196,227,113,32,205,5 // vpinsrb $0x5,%ebp,%xmm1,%xmm1
8955 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
8956 .byte 196,227,113,32,205,6 // vpinsrb $0x6,%ebp,%xmm1,%xmm1
8957 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
8958 .byte 196,227,113,32,205,7 // vpinsrb $0x7,%ebp,%xmm1,%xmm1
8959 .byte 196,226,125,49,201 // vpmovzxbd %xmm1,%ymm1
8960 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -04008961 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -04008962 .byte 72,139,64,16 // mov 0x10(%rax),%rax
8963 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
8964 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
8965 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
8966 .byte 65,137,232 // mov %ebp,%r8d
8967 .byte 72,193,237,32 // shr $0x20,%rbp
8968 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
8969 .byte 65,137,217 // mov %ebx,%r9d
8970 .byte 72,193,235,32 // shr $0x20,%rbx
8971 .byte 196,227,125,57,210,1 // vextracti128 $0x1,%ymm2,%xmm2
8972 .byte 196,195,249,22,210,1 // vpextrq $0x1,%xmm2,%r10
8973 .byte 69,137,211 // mov %r10d,%r11d
8974 .byte 73,193,234,32 // shr $0x20,%r10
8975 .byte 196,193,249,126,214 // vmovq %xmm2,%r14
8976 .byte 69,137,247 // mov %r14d,%r15d
8977 .byte 73,193,238,32 // shr $0x20,%r14
8978 .byte 196,163,121,32,20,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm2
8979 .byte 196,227,105,32,20,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm2,%xmm2
8980 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
8981 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
8982 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
8983 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
8984 .byte 66,15,182,44,56 // movzbl (%rax,%r15,1),%ebp
8985 .byte 196,227,105,32,213,4 // vpinsrb $0x4,%ebp,%xmm2,%xmm2
8986 .byte 66,15,182,44,48 // movzbl (%rax,%r14,1),%ebp
8987 .byte 196,227,105,32,213,5 // vpinsrb $0x5,%ebp,%xmm2,%xmm2
8988 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
8989 .byte 196,227,105,32,213,6 // vpinsrb $0x6,%ebp,%xmm2,%xmm2
8990 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
8991 .byte 196,227,105,32,208,7 // vpinsrb $0x7,%eax,%xmm2,%xmm2
8992 .byte 196,226,125,49,210 // vpmovzxbd %xmm2,%ymm2
8993 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -04008994 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -04008995 .byte 72,173 // lods %ds:(%rsi),%rax
8996 .byte 91 // pop %rbx
8997 .byte 65,92 // pop %r12
8998 .byte 65,93 // pop %r13
8999 .byte 65,94 // pop %r14
9000 .byte 65,95 // pop %r15
9001 .byte 93 // pop %rbp
9002 .byte 255,224 // jmpq *%rax
9003
Mike Kleinc7d9c0b2017-04-17 14:43:59 -04009004HIDDEN _sk_table_r_hsw
9005.globl _sk_table_r_hsw
9006FUNCTION(_sk_table_r_hsw)
9007_sk_table_r_hsw:
9008 .byte 72,173 // lods %ds:(%rsi),%rax
9009 .byte 76,139,0 // mov (%rax),%r8
9010 .byte 139,64,8 // mov 0x8(%rax),%eax
9011 .byte 255,200 // dec %eax
9012 .byte 197,121,110,192 // vmovd %eax,%xmm8
9013 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
9014 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
9015 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
9016 .byte 197,125,91,192 // vcvtps2dq %ymm0,%ymm8
9017 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
9018 .byte 196,130,53,146,4,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm0
9019 .byte 72,173 // lods %ds:(%rsi),%rax
9020 .byte 255,224 // jmpq *%rax
9021
9022HIDDEN _sk_table_g_hsw
9023.globl _sk_table_g_hsw
9024FUNCTION(_sk_table_g_hsw)
9025_sk_table_g_hsw:
9026 .byte 72,173 // lods %ds:(%rsi),%rax
9027 .byte 76,139,0 // mov (%rax),%r8
9028 .byte 139,64,8 // mov 0x8(%rax),%eax
9029 .byte 255,200 // dec %eax
9030 .byte 197,121,110,192 // vmovd %eax,%xmm8
9031 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
9032 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
9033 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
9034 .byte 197,125,91,193 // vcvtps2dq %ymm1,%ymm8
9035 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
9036 .byte 196,130,53,146,12,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm1
9037 .byte 72,173 // lods %ds:(%rsi),%rax
9038 .byte 255,224 // jmpq *%rax
9039
9040HIDDEN _sk_table_b_hsw
9041.globl _sk_table_b_hsw
9042FUNCTION(_sk_table_b_hsw)
9043_sk_table_b_hsw:
9044 .byte 72,173 // lods %ds:(%rsi),%rax
9045 .byte 76,139,0 // mov (%rax),%r8
9046 .byte 139,64,8 // mov 0x8(%rax),%eax
9047 .byte 255,200 // dec %eax
9048 .byte 197,121,110,192 // vmovd %eax,%xmm8
9049 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
9050 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
9051 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
9052 .byte 197,125,91,194 // vcvtps2dq %ymm2,%ymm8
9053 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
9054 .byte 196,130,53,146,20,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm2
9055 .byte 72,173 // lods %ds:(%rsi),%rax
9056 .byte 255,224 // jmpq *%rax
9057
9058HIDDEN _sk_table_a_hsw
9059.globl _sk_table_a_hsw
9060FUNCTION(_sk_table_a_hsw)
9061_sk_table_a_hsw:
9062 .byte 72,173 // lods %ds:(%rsi),%rax
9063 .byte 76,139,0 // mov (%rax),%r8
9064 .byte 139,64,8 // mov 0x8(%rax),%eax
9065 .byte 255,200 // dec %eax
9066 .byte 197,121,110,192 // vmovd %eax,%xmm8
9067 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
9068 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
9069 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
9070 .byte 197,125,91,195 // vcvtps2dq %ymm3,%ymm8
9071 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
9072 .byte 196,130,53,146,28,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm3
9073 .byte 72,173 // lods %ds:(%rsi),%rax
9074 .byte 255,224 // jmpq *%rax
9075
Mike Klein44375172017-04-17 19:32:05 -04009076HIDDEN _sk_parametric_r_hsw
9077.globl _sk_parametric_r_hsw
9078FUNCTION(_sk_parametric_r_hsw)
9079_sk_parametric_r_hsw:
9080 .byte 72,173 // lods %ds:(%rsi),%rax
9081 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
9082 .byte 196,65,124,194,192,2 // vcmpleps %ymm8,%ymm0,%ymm8
9083 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
9084 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
9085 .byte 196,66,125,168,202 // vfmadd213ps %ymm10,%ymm0,%ymm9
9086 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
9087 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
9088 .byte 196,66,125,168,211 // vfmadd213ps %ymm11,%ymm0,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -04009089 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
Mike Klein44375172017-04-17 19:32:05 -04009090 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009091 .byte 196,98,125,24,37,104,35,0,0 // vbroadcastss 0x2368(%rip),%ymm12 # 3e64 <_sk_callback_hsw+0x221>
9092 .byte 196,98,125,24,45,99,35,0,0 // vbroadcastss 0x2363(%rip),%ymm13 # 3e68 <_sk_callback_hsw+0x225>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009093 .byte 196,65,44,84,213 // vandps %ymm13,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009094 .byte 196,98,125,24,45,89,35,0,0 // vbroadcastss 0x2359(%rip),%ymm13 # 3e6c <_sk_callback_hsw+0x229>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009095 .byte 196,65,44,86,213 // vorps %ymm13,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009096 .byte 196,98,125,24,45,79,35,0,0 // vbroadcastss 0x234f(%rip),%ymm13 # 3e70 <_sk_callback_hsw+0x22d>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009097 .byte 196,66,37,184,236 // vfmadd231ps %ymm12,%ymm11,%ymm13
Mike Kleinb3665f02017-05-01 14:56:04 -04009098 .byte 196,98,125,24,29,69,35,0,0 // vbroadcastss 0x2345(%rip),%ymm11 # 3e74 <_sk_callback_hsw+0x231>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009099 .byte 196,66,45,172,221 // vfnmadd213ps %ymm13,%ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009100 .byte 196,98,125,24,37,59,35,0,0 // vbroadcastss 0x233b(%rip),%ymm12 # 3e78 <_sk_callback_hsw+0x235>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009101 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009102 .byte 196,98,125,24,37,49,35,0,0 // vbroadcastss 0x2331(%rip),%ymm12 # 3e7c <_sk_callback_hsw+0x239>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009103 .byte 196,65,28,94,210 // vdivps %ymm10,%ymm12,%ymm10
Mike Klein44375172017-04-17 19:32:05 -04009104 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -04009105 .byte 196,193,124,89,194 // vmulps %ymm10,%ymm0,%ymm0
9106 .byte 196,99,125,8,208,1 // vroundps $0x1,%ymm0,%ymm10
9107 .byte 196,65,124,92,210 // vsubps %ymm10,%ymm0,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009108 .byte 196,98,125,24,29,18,35,0,0 // vbroadcastss 0x2312(%rip),%ymm11 # 3e80 <_sk_callback_hsw+0x23d>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009109 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009110 .byte 196,98,125,24,29,8,35,0,0 // vbroadcastss 0x2308(%rip),%ymm11 # 3e84 <_sk_callback_hsw+0x241>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009111 .byte 196,98,45,172,216 // vfnmadd213ps %ymm0,%ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009112 .byte 196,226,125,24,5,254,34,0,0 // vbroadcastss 0x22fe(%rip),%ymm0 # 3e88 <_sk_callback_hsw+0x245>
Mike Klein44375172017-04-17 19:32:05 -04009113 .byte 196,193,124,92,194 // vsubps %ymm10,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009114 .byte 196,98,125,24,21,244,34,0,0 // vbroadcastss 0x22f4(%rip),%ymm10 # 3e8c <_sk_callback_hsw+0x249>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009115 .byte 197,172,94,192 // vdivps %ymm0,%ymm10,%ymm0
9116 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009117 .byte 196,98,125,24,21,231,34,0,0 // vbroadcastss 0x22e7(%rip),%ymm10 # 3e90 <_sk_callback_hsw+0x24d>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009118 .byte 196,193,124,89,194 // vmulps %ymm10,%ymm0,%ymm0
Mike Klein44375172017-04-17 19:32:05 -04009119 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
9120 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
9121 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
9122 .byte 196,195,125,74,193,128 // vblendvps %ymm8,%ymm9,%ymm0,%ymm0
9123 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04009124 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009125 .byte 196,98,125,24,5,190,34,0,0 // vbroadcastss 0x22be(%rip),%ymm8 # 3e94 <_sk_callback_hsw+0x251>
Mike Kleinfe560a82017-05-01 12:56:35 -04009126 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
Mike Klein44375172017-04-17 19:32:05 -04009127 .byte 72,173 // lods %ds:(%rsi),%rax
9128 .byte 255,224 // jmpq *%rax
9129
9130HIDDEN _sk_parametric_g_hsw
9131.globl _sk_parametric_g_hsw
9132FUNCTION(_sk_parametric_g_hsw)
9133_sk_parametric_g_hsw:
9134 .byte 72,173 // lods %ds:(%rsi),%rax
9135 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
9136 .byte 196,65,116,194,192,2 // vcmpleps %ymm8,%ymm1,%ymm8
9137 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
9138 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
9139 .byte 196,66,117,168,202 // vfmadd213ps %ymm10,%ymm1,%ymm9
9140 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
9141 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
9142 .byte 196,66,117,168,211 // vfmadd213ps %ymm11,%ymm1,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -04009143 .byte 196,226,125,24,8 // vbroadcastss (%rax),%ymm1
Mike Klein44375172017-04-17 19:32:05 -04009144 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009145 .byte 196,98,125,24,37,118,34,0,0 // vbroadcastss 0x2276(%rip),%ymm12 # 3e98 <_sk_callback_hsw+0x255>
9146 .byte 196,98,125,24,45,113,34,0,0 // vbroadcastss 0x2271(%rip),%ymm13 # 3e9c <_sk_callback_hsw+0x259>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009147 .byte 196,65,44,84,213 // vandps %ymm13,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009148 .byte 196,98,125,24,45,103,34,0,0 // vbroadcastss 0x2267(%rip),%ymm13 # 3ea0 <_sk_callback_hsw+0x25d>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009149 .byte 196,65,44,86,213 // vorps %ymm13,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009150 .byte 196,98,125,24,45,93,34,0,0 // vbroadcastss 0x225d(%rip),%ymm13 # 3ea4 <_sk_callback_hsw+0x261>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009151 .byte 196,66,37,184,236 // vfmadd231ps %ymm12,%ymm11,%ymm13
Mike Kleinb3665f02017-05-01 14:56:04 -04009152 .byte 196,98,125,24,29,83,34,0,0 // vbroadcastss 0x2253(%rip),%ymm11 # 3ea8 <_sk_callback_hsw+0x265>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009153 .byte 196,66,45,172,221 // vfnmadd213ps %ymm13,%ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009154 .byte 196,98,125,24,37,73,34,0,0 // vbroadcastss 0x2249(%rip),%ymm12 # 3eac <_sk_callback_hsw+0x269>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009155 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009156 .byte 196,98,125,24,37,63,34,0,0 // vbroadcastss 0x223f(%rip),%ymm12 # 3eb0 <_sk_callback_hsw+0x26d>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009157 .byte 196,65,28,94,210 // vdivps %ymm10,%ymm12,%ymm10
Mike Klein44375172017-04-17 19:32:05 -04009158 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -04009159 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
9160 .byte 196,99,125,8,209,1 // vroundps $0x1,%ymm1,%ymm10
9161 .byte 196,65,116,92,210 // vsubps %ymm10,%ymm1,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009162 .byte 196,98,125,24,29,32,34,0,0 // vbroadcastss 0x2220(%rip),%ymm11 # 3eb4 <_sk_callback_hsw+0x271>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009163 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009164 .byte 196,98,125,24,29,22,34,0,0 // vbroadcastss 0x2216(%rip),%ymm11 # 3eb8 <_sk_callback_hsw+0x275>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009165 .byte 196,98,45,172,217 // vfnmadd213ps %ymm1,%ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009166 .byte 196,226,125,24,13,12,34,0,0 // vbroadcastss 0x220c(%rip),%ymm1 # 3ebc <_sk_callback_hsw+0x279>
Mike Klein44375172017-04-17 19:32:05 -04009167 .byte 196,193,116,92,202 // vsubps %ymm10,%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009168 .byte 196,98,125,24,21,2,34,0,0 // vbroadcastss 0x2202(%rip),%ymm10 # 3ec0 <_sk_callback_hsw+0x27d>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009169 .byte 197,172,94,201 // vdivps %ymm1,%ymm10,%ymm1
9170 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009171 .byte 196,98,125,24,21,245,33,0,0 // vbroadcastss 0x21f5(%rip),%ymm10 # 3ec4 <_sk_callback_hsw+0x281>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009172 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
Mike Klein44375172017-04-17 19:32:05 -04009173 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
9174 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
9175 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
9176 .byte 196,195,117,74,201,128 // vblendvps %ymm8,%ymm9,%ymm1,%ymm1
9177 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04009178 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009179 .byte 196,98,125,24,5,204,33,0,0 // vbroadcastss 0x21cc(%rip),%ymm8 # 3ec8 <_sk_callback_hsw+0x285>
Mike Kleinfe560a82017-05-01 12:56:35 -04009180 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
Mike Klein44375172017-04-17 19:32:05 -04009181 .byte 72,173 // lods %ds:(%rsi),%rax
9182 .byte 255,224 // jmpq *%rax
9183
9184HIDDEN _sk_parametric_b_hsw
9185.globl _sk_parametric_b_hsw
9186FUNCTION(_sk_parametric_b_hsw)
9187_sk_parametric_b_hsw:
9188 .byte 72,173 // lods %ds:(%rsi),%rax
9189 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
9190 .byte 196,65,108,194,192,2 // vcmpleps %ymm8,%ymm2,%ymm8
9191 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
9192 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
9193 .byte 196,66,109,168,202 // vfmadd213ps %ymm10,%ymm2,%ymm9
9194 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
9195 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
9196 .byte 196,66,109,168,211 // vfmadd213ps %ymm11,%ymm2,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -04009197 .byte 196,226,125,24,16 // vbroadcastss (%rax),%ymm2
Mike Klein44375172017-04-17 19:32:05 -04009198 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009199 .byte 196,98,125,24,37,132,33,0,0 // vbroadcastss 0x2184(%rip),%ymm12 # 3ecc <_sk_callback_hsw+0x289>
9200 .byte 196,98,125,24,45,127,33,0,0 // vbroadcastss 0x217f(%rip),%ymm13 # 3ed0 <_sk_callback_hsw+0x28d>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009201 .byte 196,65,44,84,213 // vandps %ymm13,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009202 .byte 196,98,125,24,45,117,33,0,0 // vbroadcastss 0x2175(%rip),%ymm13 # 3ed4 <_sk_callback_hsw+0x291>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009203 .byte 196,65,44,86,213 // vorps %ymm13,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009204 .byte 196,98,125,24,45,107,33,0,0 // vbroadcastss 0x216b(%rip),%ymm13 # 3ed8 <_sk_callback_hsw+0x295>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009205 .byte 196,66,37,184,236 // vfmadd231ps %ymm12,%ymm11,%ymm13
Mike Kleinb3665f02017-05-01 14:56:04 -04009206 .byte 196,98,125,24,29,97,33,0,0 // vbroadcastss 0x2161(%rip),%ymm11 # 3edc <_sk_callback_hsw+0x299>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009207 .byte 196,66,45,172,221 // vfnmadd213ps %ymm13,%ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009208 .byte 196,98,125,24,37,87,33,0,0 // vbroadcastss 0x2157(%rip),%ymm12 # 3ee0 <_sk_callback_hsw+0x29d>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009209 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009210 .byte 196,98,125,24,37,77,33,0,0 // vbroadcastss 0x214d(%rip),%ymm12 # 3ee4 <_sk_callback_hsw+0x2a1>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009211 .byte 196,65,28,94,210 // vdivps %ymm10,%ymm12,%ymm10
Mike Klein44375172017-04-17 19:32:05 -04009212 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -04009213 .byte 196,193,108,89,210 // vmulps %ymm10,%ymm2,%ymm2
9214 .byte 196,99,125,8,210,1 // vroundps $0x1,%ymm2,%ymm10
9215 .byte 196,65,108,92,210 // vsubps %ymm10,%ymm2,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009216 .byte 196,98,125,24,29,46,33,0,0 // vbroadcastss 0x212e(%rip),%ymm11 # 3ee8 <_sk_callback_hsw+0x2a5>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009217 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009218 .byte 196,98,125,24,29,36,33,0,0 // vbroadcastss 0x2124(%rip),%ymm11 # 3eec <_sk_callback_hsw+0x2a9>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009219 .byte 196,98,45,172,218 // vfnmadd213ps %ymm2,%ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009220 .byte 196,226,125,24,21,26,33,0,0 // vbroadcastss 0x211a(%rip),%ymm2 # 3ef0 <_sk_callback_hsw+0x2ad>
Mike Klein44375172017-04-17 19:32:05 -04009221 .byte 196,193,108,92,210 // vsubps %ymm10,%ymm2,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009222 .byte 196,98,125,24,21,16,33,0,0 // vbroadcastss 0x2110(%rip),%ymm10 # 3ef4 <_sk_callback_hsw+0x2b1>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009223 .byte 197,172,94,210 // vdivps %ymm2,%ymm10,%ymm2
9224 .byte 197,164,88,210 // vaddps %ymm2,%ymm11,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009225 .byte 196,98,125,24,21,3,33,0,0 // vbroadcastss 0x2103(%rip),%ymm10 # 3ef8 <_sk_callback_hsw+0x2b5>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009226 .byte 196,193,108,89,210 // vmulps %ymm10,%ymm2,%ymm2
Mike Klein44375172017-04-17 19:32:05 -04009227 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
9228 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
9229 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
9230 .byte 196,195,109,74,209,128 // vblendvps %ymm8,%ymm9,%ymm2,%ymm2
9231 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04009232 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009233 .byte 196,98,125,24,5,218,32,0,0 // vbroadcastss 0x20da(%rip),%ymm8 # 3efc <_sk_callback_hsw+0x2b9>
Mike Kleinfe560a82017-05-01 12:56:35 -04009234 .byte 196,193,108,93,208 // vminps %ymm8,%ymm2,%ymm2
Mike Klein44375172017-04-17 19:32:05 -04009235 .byte 72,173 // lods %ds:(%rsi),%rax
9236 .byte 255,224 // jmpq *%rax
9237
9238HIDDEN _sk_parametric_a_hsw
9239.globl _sk_parametric_a_hsw
9240FUNCTION(_sk_parametric_a_hsw)
9241_sk_parametric_a_hsw:
9242 .byte 72,173 // lods %ds:(%rsi),%rax
9243 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
9244 .byte 196,65,100,194,192,2 // vcmpleps %ymm8,%ymm3,%ymm8
9245 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
9246 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
9247 .byte 196,66,101,168,202 // vfmadd213ps %ymm10,%ymm3,%ymm9
9248 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
9249 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
9250 .byte 196,66,101,168,211 // vfmadd213ps %ymm11,%ymm3,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -04009251 .byte 196,226,125,24,24 // vbroadcastss (%rax),%ymm3
Mike Klein44375172017-04-17 19:32:05 -04009252 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009253 .byte 196,98,125,24,37,146,32,0,0 // vbroadcastss 0x2092(%rip),%ymm12 # 3f00 <_sk_callback_hsw+0x2bd>
9254 .byte 196,98,125,24,45,141,32,0,0 // vbroadcastss 0x208d(%rip),%ymm13 # 3f04 <_sk_callback_hsw+0x2c1>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009255 .byte 196,65,44,84,213 // vandps %ymm13,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009256 .byte 196,98,125,24,45,131,32,0,0 // vbroadcastss 0x2083(%rip),%ymm13 # 3f08 <_sk_callback_hsw+0x2c5>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009257 .byte 196,65,44,86,213 // vorps %ymm13,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009258 .byte 196,98,125,24,45,121,32,0,0 // vbroadcastss 0x2079(%rip),%ymm13 # 3f0c <_sk_callback_hsw+0x2c9>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009259 .byte 196,66,37,184,236 // vfmadd231ps %ymm12,%ymm11,%ymm13
Mike Kleinb3665f02017-05-01 14:56:04 -04009260 .byte 196,98,125,24,29,111,32,0,0 // vbroadcastss 0x206f(%rip),%ymm11 # 3f10 <_sk_callback_hsw+0x2cd>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009261 .byte 196,66,45,172,221 // vfnmadd213ps %ymm13,%ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009262 .byte 196,98,125,24,37,101,32,0,0 // vbroadcastss 0x2065(%rip),%ymm12 # 3f14 <_sk_callback_hsw+0x2d1>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009263 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009264 .byte 196,98,125,24,37,91,32,0,0 // vbroadcastss 0x205b(%rip),%ymm12 # 3f18 <_sk_callback_hsw+0x2d5>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009265 .byte 196,65,28,94,210 // vdivps %ymm10,%ymm12,%ymm10
Mike Klein44375172017-04-17 19:32:05 -04009266 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -04009267 .byte 196,193,100,89,218 // vmulps %ymm10,%ymm3,%ymm3
9268 .byte 196,99,125,8,211,1 // vroundps $0x1,%ymm3,%ymm10
9269 .byte 196,65,100,92,210 // vsubps %ymm10,%ymm3,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009270 .byte 196,98,125,24,29,60,32,0,0 // vbroadcastss 0x203c(%rip),%ymm11 # 3f1c <_sk_callback_hsw+0x2d9>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009271 .byte 196,193,100,88,219 // vaddps %ymm11,%ymm3,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04009272 .byte 196,98,125,24,29,50,32,0,0 // vbroadcastss 0x2032(%rip),%ymm11 # 3f20 <_sk_callback_hsw+0x2dd>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009273 .byte 196,98,45,172,219 // vfnmadd213ps %ymm3,%ymm10,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -04009274 .byte 196,226,125,24,29,40,32,0,0 // vbroadcastss 0x2028(%rip),%ymm3 # 3f24 <_sk_callback_hsw+0x2e1>
Mike Klein44375172017-04-17 19:32:05 -04009275 .byte 196,193,100,92,218 // vsubps %ymm10,%ymm3,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04009276 .byte 196,98,125,24,21,30,32,0,0 // vbroadcastss 0x201e(%rip),%ymm10 # 3f28 <_sk_callback_hsw+0x2e5>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009277 .byte 197,172,94,219 // vdivps %ymm3,%ymm10,%ymm3
9278 .byte 197,164,88,219 // vaddps %ymm3,%ymm11,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04009279 .byte 196,98,125,24,21,17,32,0,0 // vbroadcastss 0x2011(%rip),%ymm10 # 3f2c <_sk_callback_hsw+0x2e9>
Mike Kleinb4bbc642017-04-27 08:59:55 -04009280 .byte 196,193,100,89,218 // vmulps %ymm10,%ymm3,%ymm3
Mike Klein44375172017-04-17 19:32:05 -04009281 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
9282 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
9283 .byte 196,193,100,88,218 // vaddps %ymm10,%ymm3,%ymm3
9284 .byte 196,195,101,74,217,128 // vblendvps %ymm8,%ymm9,%ymm3,%ymm3
9285 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04009286 .byte 196,193,100,95,216 // vmaxps %ymm8,%ymm3,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04009287 .byte 196,98,125,24,5,232,31,0,0 // vbroadcastss 0x1fe8(%rip),%ymm8 # 3f30 <_sk_callback_hsw+0x2ed>
Mike Kleinfe560a82017-05-01 12:56:35 -04009288 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
Mike Klein44375172017-04-17 19:32:05 -04009289 .byte 72,173 // lods %ds:(%rsi),%rax
9290 .byte 255,224 // jmpq *%rax
9291
Mike Klein4e3e9f82017-04-20 11:04:29 -04009292HIDDEN _sk_lab_to_xyz_hsw
9293.globl _sk_lab_to_xyz_hsw
9294FUNCTION(_sk_lab_to_xyz_hsw)
9295_sk_lab_to_xyz_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -04009296 .byte 196,98,125,24,5,218,31,0,0 // vbroadcastss 0x1fda(%rip),%ymm8 # 3f34 <_sk_callback_hsw+0x2f1>
9297 .byte 196,98,125,24,13,213,31,0,0 // vbroadcastss 0x1fd5(%rip),%ymm9 # 3f38 <_sk_callback_hsw+0x2f5>
9298 .byte 196,98,125,24,21,208,31,0,0 // vbroadcastss 0x1fd0(%rip),%ymm10 # 3f3c <_sk_callback_hsw+0x2f9>
Mike Kleinfe560a82017-05-01 12:56:35 -04009299 .byte 196,194,53,168,202 // vfmadd213ps %ymm10,%ymm9,%ymm1
9300 .byte 196,194,53,168,210 // vfmadd213ps %ymm10,%ymm9,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009301 .byte 196,98,125,24,13,193,31,0,0 // vbroadcastss 0x1fc1(%rip),%ymm9 # 3f40 <_sk_callback_hsw+0x2fd>
Mike Kleinfe560a82017-05-01 12:56:35 -04009302 .byte 196,66,125,184,200 // vfmadd231ps %ymm8,%ymm0,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -04009303 .byte 196,226,125,24,5,183,31,0,0 // vbroadcastss 0x1fb7(%rip),%ymm0 # 3f44 <_sk_callback_hsw+0x301>
Mike Kleinfe560a82017-05-01 12:56:35 -04009304 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009305 .byte 196,98,125,24,5,174,31,0,0 // vbroadcastss 0x1fae(%rip),%ymm8 # 3f48 <_sk_callback_hsw+0x305>
Mike Kleinfe560a82017-05-01 12:56:35 -04009306 .byte 196,98,117,168,192 // vfmadd213ps %ymm0,%ymm1,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -04009307 .byte 196,98,125,24,13,164,31,0,0 // vbroadcastss 0x1fa4(%rip),%ymm9 # 3f4c <_sk_callback_hsw+0x309>
Mike Kleinfe560a82017-05-01 12:56:35 -04009308 .byte 196,98,109,172,200 // vfnmadd213ps %ymm0,%ymm2,%ymm9
Mike Klein4e3e9f82017-04-20 11:04:29 -04009309 .byte 196,193,60,89,200 // vmulps %ymm8,%ymm8,%ymm1
9310 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009311 .byte 196,226,125,24,21,145,31,0,0 // vbroadcastss 0x1f91(%rip),%ymm2 # 3f50 <_sk_callback_hsw+0x30d>
Mike Klein4e3e9f82017-04-20 11:04:29 -04009312 .byte 197,108,194,209,1 // vcmpltps %ymm1,%ymm2,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -04009313 .byte 196,98,125,24,29,135,31,0,0 // vbroadcastss 0x1f87(%rip),%ymm11 # 3f54 <_sk_callback_hsw+0x311>
Mike Kleinfe560a82017-05-01 12:56:35 -04009314 .byte 196,65,60,88,195 // vaddps %ymm11,%ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -04009315 .byte 196,98,125,24,37,125,31,0,0 // vbroadcastss 0x1f7d(%rip),%ymm12 # 3f58 <_sk_callback_hsw+0x315>
Mike Kleinfe560a82017-05-01 12:56:35 -04009316 .byte 196,65,60,89,196 // vmulps %ymm12,%ymm8,%ymm8
9317 .byte 196,99,61,74,193,160 // vblendvps %ymm10,%ymm1,%ymm8,%ymm8
9318 .byte 197,252,89,200 // vmulps %ymm0,%ymm0,%ymm1
9319 .byte 197,252,89,201 // vmulps %ymm1,%ymm0,%ymm1
9320 .byte 197,108,194,209,1 // vcmpltps %ymm1,%ymm2,%ymm10
9321 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
9322 .byte 196,193,124,89,196 // vmulps %ymm12,%ymm0,%ymm0
9323 .byte 196,227,125,74,201,160 // vblendvps %ymm10,%ymm1,%ymm0,%ymm1
9324 .byte 196,193,52,89,193 // vmulps %ymm9,%ymm9,%ymm0
9325 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
9326 .byte 197,236,194,208,1 // vcmpltps %ymm0,%ymm2,%ymm2
9327 .byte 196,65,52,88,203 // vaddps %ymm11,%ymm9,%ymm9
9328 .byte 196,65,52,89,204 // vmulps %ymm12,%ymm9,%ymm9
9329 .byte 196,227,53,74,208,32 // vblendvps %ymm2,%ymm0,%ymm9,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009330 .byte 196,226,125,24,5,50,31,0,0 // vbroadcastss 0x1f32(%rip),%ymm0 # 3f5c <_sk_callback_hsw+0x319>
Mike Kleinfe560a82017-05-01 12:56:35 -04009331 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009332 .byte 196,98,125,24,5,41,31,0,0 // vbroadcastss 0x1f29(%rip),%ymm8 # 3f60 <_sk_callback_hsw+0x31d>
Mike Kleinfe560a82017-05-01 12:56:35 -04009333 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein4e3e9f82017-04-20 11:04:29 -04009334 .byte 72,173 // lods %ds:(%rsi),%rax
9335 .byte 255,224 // jmpq *%rax
9336
Mike Klein7c4af542017-03-29 18:21:14 -04009337HIDDEN _sk_load_a8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04009338.globl _sk_load_a8_hsw
Mike Klein86714282017-04-13 17:37:38 -04009339FUNCTION(_sk_load_a8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04009340_sk_load_a8_hsw:
9341 .byte 73,137,200 // mov %rcx,%r8
9342 .byte 72,173 // lods %ds:(%rsi),%rax
9343 .byte 72,139,0 // mov (%rax),%rax
9344 .byte 72,1,248 // add %rdi,%rax
9345 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -04009346 .byte 117,45 // jne 207d <_sk_load_a8_hsw+0x3d>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009347 .byte 197,250,126,0 // vmovq (%rax),%xmm0
9348 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
9349 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009350 .byte 196,226,125,24,13,254,30,0,0 // vbroadcastss 0x1efe(%rip),%ymm1 # 3f64 <_sk_callback_hsw+0x321>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009351 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
9352 .byte 72,173 // lods %ds:(%rsi),%rax
9353 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
9354 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
9355 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
9356 .byte 76,137,193 // mov %r8,%rcx
9357 .byte 255,224 // jmpq *%rax
9358 .byte 49,201 // xor %ecx,%ecx
9359 .byte 77,137,194 // mov %r8,%r10
9360 .byte 69,49,201 // xor %r9d,%r9d
9361 .byte 68,15,182,24 // movzbl (%rax),%r11d
9362 .byte 72,255,192 // inc %rax
9363 .byte 73,211,227 // shl %cl,%r11
9364 .byte 77,9,217 // or %r11,%r9
9365 .byte 72,131,193,8 // add $0x8,%rcx
9366 .byte 73,255,202 // dec %r10
Mike Kleinb3665f02017-05-01 14:56:04 -04009367 .byte 117,234 // jne 2085 <_sk_load_a8_hsw+0x45>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009368 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009369 .byte 235,178 // jmp 2054 <_sk_load_a8_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009370
Mike Klein21bd3e42017-04-06 16:32:29 -04009371HIDDEN _sk_gather_a8_hsw
9372.globl _sk_gather_a8_hsw
Mike Klein86714282017-04-13 17:37:38 -04009373FUNCTION(_sk_gather_a8_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -04009374_sk_gather_a8_hsw:
9375 .byte 65,87 // push %r15
9376 .byte 65,86 // push %r14
9377 .byte 65,84 // push %r12
9378 .byte 83 // push %rbx
9379 .byte 72,173 // lods %ds:(%rsi),%rax
9380 .byte 76,139,0 // mov (%rax),%r8
9381 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
9382 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
9383 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
9384 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
9385 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
9386 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
9387 .byte 65,137,193 // mov %eax,%r9d
9388 .byte 72,193,232,32 // shr $0x20,%rax
9389 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
9390 .byte 69,137,211 // mov %r10d,%r11d
9391 .byte 73,193,234,32 // shr $0x20,%r10
9392 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
9393 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
9394 .byte 65,137,222 // mov %ebx,%r14d
9395 .byte 72,193,235,32 // shr $0x20,%rbx
9396 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
9397 .byte 69,137,252 // mov %r15d,%r12d
9398 .byte 73,193,239,32 // shr $0x20,%r15
9399 .byte 196,131,121,32,4,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm0
9400 .byte 196,131,121,32,4,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm0,%xmm0
9401 .byte 71,15,182,12,8 // movzbl (%r8,%r9,1),%r9d
9402 .byte 196,195,121,32,193,2 // vpinsrb $0x2,%r9d,%xmm0,%xmm0
9403 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
9404 .byte 196,227,121,32,192,3 // vpinsrb $0x3,%eax,%xmm0,%xmm0
9405 .byte 67,15,182,4,32 // movzbl (%r8,%r12,1),%eax
9406 .byte 196,227,121,32,192,4 // vpinsrb $0x4,%eax,%xmm0,%xmm0
9407 .byte 67,15,182,4,56 // movzbl (%r8,%r15,1),%eax
9408 .byte 196,227,121,32,192,5 // vpinsrb $0x5,%eax,%xmm0,%xmm0
9409 .byte 67,15,182,4,48 // movzbl (%r8,%r14,1),%eax
9410 .byte 196,227,121,32,192,6 // vpinsrb $0x6,%eax,%xmm0,%xmm0
9411 .byte 65,15,182,4,24 // movzbl (%r8,%rbx,1),%eax
9412 .byte 196,227,121,32,192,7 // vpinsrb $0x7,%eax,%xmm0,%xmm0
9413 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
9414 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009415 .byte 196,226,125,24,13,9,30,0,0 // vbroadcastss 0x1e09(%rip),%ymm1 # 3f68 <_sk_callback_hsw+0x325>
Mike Klein21bd3e42017-04-06 16:32:29 -04009416 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
9417 .byte 72,173 // lods %ds:(%rsi),%rax
9418 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
9419 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
9420 .byte 197,237,239,210 // vpxor %ymm2,%ymm2,%ymm2
9421 .byte 91 // pop %rbx
9422 .byte 65,92 // pop %r12
9423 .byte 65,94 // pop %r14
9424 .byte 65,95 // pop %r15
9425 .byte 255,224 // jmpq *%rax
9426
Mike Klein7c4af542017-03-29 18:21:14 -04009427HIDDEN _sk_store_a8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04009428.globl _sk_store_a8_hsw
Mike Klein86714282017-04-13 17:37:38 -04009429FUNCTION(_sk_store_a8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04009430_sk_store_a8_hsw:
9431 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -04009432 .byte 76,139,16 // mov (%rax),%r10
Mike Kleinb3665f02017-05-01 14:56:04 -04009433 .byte 196,98,125,24,5,228,29,0,0 // vbroadcastss 0x1de4(%rip),%ymm8 # 3f6c <_sk_callback_hsw+0x329>
Mike Kleinfe560a82017-05-01 12:56:35 -04009434 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -04009435 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
9436 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
9437 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
9438 .byte 196,65,57,103,192 // vpackuswb %xmm8,%xmm8,%xmm8
9439 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04009440 .byte 117,10 // jne 21b1 <_sk_store_a8_hsw+0x37>
Mike Kleinfe560a82017-05-01 12:56:35 -04009441 .byte 196,65,123,17,4,58 // vmovsd %xmm8,(%r10,%rdi,1)
Mike Kleind7e06ae2017-03-29 16:33:06 -04009442 .byte 72,173 // lods %ds:(%rsi),%rax
9443 .byte 255,224 // jmpq *%rax
9444 .byte 65,137,200 // mov %ecx,%r8d
9445 .byte 65,128,224,7 // and $0x7,%r8b
9446 .byte 65,254,200 // dec %r8b
9447 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinb3665f02017-05-01 14:56:04 -04009448 .byte 119,236 // ja 21ad <_sk_store_a8_hsw+0x33>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009449 .byte 196,66,121,48,192 // vpmovzxbw %xmm8,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -04009450 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinb3665f02017-05-01 14:56:04 -04009451 .byte 76,141,13,67,0,0,0 // lea 0x43(%rip),%r9 # 2214 <_sk_store_a8_hsw+0x9a>
Mike Kleinfe560a82017-05-01 12:56:35 -04009452 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
9453 .byte 76,1,200 // add %r9,%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -04009454 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -04009455 .byte 196,67,121,20,68,58,6,12 // vpextrb $0xc,%xmm8,0x6(%r10,%rdi,1)
9456 .byte 196,67,121,20,68,58,5,10 // vpextrb $0xa,%xmm8,0x5(%r10,%rdi,1)
9457 .byte 196,67,121,20,68,58,4,8 // vpextrb $0x8,%xmm8,0x4(%r10,%rdi,1)
9458 .byte 196,67,121,20,68,58,3,6 // vpextrb $0x6,%xmm8,0x3(%r10,%rdi,1)
9459 .byte 196,67,121,20,68,58,2,4 // vpextrb $0x4,%xmm8,0x2(%r10,%rdi,1)
9460 .byte 196,67,121,20,68,58,1,2 // vpextrb $0x2,%xmm8,0x1(%r10,%rdi,1)
9461 .byte 196,67,121,20,4,58,0 // vpextrb $0x0,%xmm8,(%r10,%rdi,1)
Mike Kleinb3665f02017-05-01 14:56:04 -04009462 .byte 235,154 // jmp 21ad <_sk_store_a8_hsw+0x33>
Mike Klein0aa742f2017-04-27 13:36:57 -04009463 .byte 144 // nop
9464 .byte 246,255 // idiv %bh
Mike Kleina3735cd2017-04-17 13:19:05 -04009465 .byte 255 // (bad)
9466 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -04009467 .byte 238 // out %al,(%dx)
Mike Kleina3735cd2017-04-17 13:19:05 -04009468 .byte 255 // (bad)
9469 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -04009470 .byte 255,230 // jmpq *%rsi
Mike Kleind7e06ae2017-03-29 16:33:06 -04009471 .byte 255 // (bad)
9472 .byte 255 // (bad)
9473 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -04009474 .byte 222,255 // fdivrp %st,%st(7)
Mike Kleina3735cd2017-04-17 13:19:05 -04009475 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -04009476 .byte 255,214 // callq *%rsi
Mike Kleind7e06ae2017-03-29 16:33:06 -04009477 .byte 255 // (bad)
9478 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -04009479 .byte 255,206 // dec %esi
Mike Kleind7e06ae2017-03-29 16:33:06 -04009480 .byte 255 // (bad)
9481 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -04009482 .byte 255,198 // inc %esi
Mike Kleind7e06ae2017-03-29 16:33:06 -04009483 .byte 255 // (bad)
9484 .byte 255 // (bad)
9485 .byte 255 // .byte 0xff
9486
Mike Kleinf809fef2017-03-31 13:52:45 -04009487HIDDEN _sk_load_g8_hsw
9488.globl _sk_load_g8_hsw
Mike Klein86714282017-04-13 17:37:38 -04009489FUNCTION(_sk_load_g8_hsw)
Mike Kleinf809fef2017-03-31 13:52:45 -04009490_sk_load_g8_hsw:
9491 .byte 73,137,200 // mov %rcx,%r8
9492 .byte 72,173 // lods %ds:(%rsi),%rax
9493 .byte 72,139,0 // mov (%rax),%rax
9494 .byte 72,1,248 // add %rdi,%rax
9495 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -04009496 .byte 117,50 // jne 2272 <_sk_load_g8_hsw+0x42>
Mike Kleinf809fef2017-03-31 13:52:45 -04009497 .byte 197,250,126,0 // vmovq (%rax),%xmm0
9498 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
9499 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009500 .byte 196,226,125,24,13,26,29,0,0 // vbroadcastss 0x1d1a(%rip),%ymm1 # 3f70 <_sk_callback_hsw+0x32d>
Mike Kleinf809fef2017-03-31 13:52:45 -04009501 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinf809fef2017-03-31 13:52:45 -04009502 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -04009503 .byte 196,226,125,24,29,15,29,0,0 // vbroadcastss 0x1d0f(%rip),%ymm3 # 3f74 <_sk_callback_hsw+0x331>
Mike Kleinf809fef2017-03-31 13:52:45 -04009504 .byte 76,137,193 // mov %r8,%rcx
9505 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
9506 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
9507 .byte 255,224 // jmpq *%rax
9508 .byte 49,201 // xor %ecx,%ecx
9509 .byte 77,137,194 // mov %r8,%r10
9510 .byte 69,49,201 // xor %r9d,%r9d
9511 .byte 68,15,182,24 // movzbl (%rax),%r11d
9512 .byte 72,255,192 // inc %rax
9513 .byte 73,211,227 // shl %cl,%r11
9514 .byte 77,9,217 // or %r11,%r9
9515 .byte 72,131,193,8 // add $0x8,%rcx
9516 .byte 73,255,202 // dec %r10
Mike Kleinb3665f02017-05-01 14:56:04 -04009517 .byte 117,234 // jne 227a <_sk_load_g8_hsw+0x4a>
Mike Kleinf809fef2017-03-31 13:52:45 -04009518 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009519 .byte 235,173 // jmp 2244 <_sk_load_g8_hsw+0x14>
Mike Klein21bd3e42017-04-06 16:32:29 -04009520
9521HIDDEN _sk_gather_g8_hsw
9522.globl _sk_gather_g8_hsw
Mike Klein86714282017-04-13 17:37:38 -04009523FUNCTION(_sk_gather_g8_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -04009524_sk_gather_g8_hsw:
9525 .byte 65,87 // push %r15
9526 .byte 65,86 // push %r14
9527 .byte 65,84 // push %r12
9528 .byte 83 // push %rbx
9529 .byte 72,173 // lods %ds:(%rsi),%rax
9530 .byte 76,139,0 // mov (%rax),%r8
9531 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
9532 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
9533 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
9534 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
9535 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
9536 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
9537 .byte 65,137,193 // mov %eax,%r9d
9538 .byte 72,193,232,32 // shr $0x20,%rax
9539 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
9540 .byte 69,137,211 // mov %r10d,%r11d
9541 .byte 73,193,234,32 // shr $0x20,%r10
9542 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
9543 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
9544 .byte 65,137,222 // mov %ebx,%r14d
9545 .byte 72,193,235,32 // shr $0x20,%rbx
9546 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
9547 .byte 69,137,252 // mov %r15d,%r12d
9548 .byte 73,193,239,32 // shr $0x20,%r15
9549 .byte 196,131,121,32,4,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm0
9550 .byte 196,131,121,32,4,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm0,%xmm0
9551 .byte 71,15,182,12,8 // movzbl (%r8,%r9,1),%r9d
9552 .byte 196,195,121,32,193,2 // vpinsrb $0x2,%r9d,%xmm0,%xmm0
9553 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
9554 .byte 196,227,121,32,192,3 // vpinsrb $0x3,%eax,%xmm0,%xmm0
9555 .byte 67,15,182,4,32 // movzbl (%r8,%r12,1),%eax
9556 .byte 196,227,121,32,192,4 // vpinsrb $0x4,%eax,%xmm0,%xmm0
9557 .byte 67,15,182,4,56 // movzbl (%r8,%r15,1),%eax
9558 .byte 196,227,121,32,192,5 // vpinsrb $0x5,%eax,%xmm0,%xmm0
9559 .byte 67,15,182,4,48 // movzbl (%r8,%r14,1),%eax
9560 .byte 196,227,121,32,192,6 // vpinsrb $0x6,%eax,%xmm0,%xmm0
9561 .byte 65,15,182,4,24 // movzbl (%r8,%rbx,1),%eax
9562 .byte 196,227,121,32,192,7 // vpinsrb $0x7,%eax,%xmm0,%xmm0
9563 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
9564 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009565 .byte 196,226,125,24,13,36,28,0,0 // vbroadcastss 0x1c24(%rip),%ymm1 # 3f78 <_sk_callback_hsw+0x335>
Mike Klein21bd3e42017-04-06 16:32:29 -04009566 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -04009567 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -04009568 .byte 196,226,125,24,29,25,28,0,0 // vbroadcastss 0x1c19(%rip),%ymm3 # 3f7c <_sk_callback_hsw+0x339>
Mike Klein21bd3e42017-04-06 16:32:29 -04009569 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
9570 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
9571 .byte 91 // pop %rbx
9572 .byte 65,92 // pop %r12
9573 .byte 65,94 // pop %r14
9574 .byte 65,95 // pop %r15
9575 .byte 255,224 // jmpq *%rax
Mike Kleinf809fef2017-03-31 13:52:45 -04009576
Mike Klein7d3d8722017-04-06 17:53:18 -04009577HIDDEN _sk_gather_i8_hsw
9578.globl _sk_gather_i8_hsw
Mike Klein86714282017-04-13 17:37:38 -04009579FUNCTION(_sk_gather_i8_hsw)
Mike Klein7d3d8722017-04-06 17:53:18 -04009580_sk_gather_i8_hsw:
9581 .byte 72,173 // lods %ds:(%rsi),%rax
9582 .byte 73,137,192 // mov %rax,%r8
9583 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -04009584 .byte 116,5 // je 2383 <_sk_gather_i8_hsw+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -04009585 .byte 76,137,192 // mov %r8,%rax
Mike Kleinb3665f02017-05-01 14:56:04 -04009586 .byte 235,2 // jmp 2385 <_sk_gather_i8_hsw+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -04009587 .byte 72,173 // lods %ds:(%rsi),%rax
9588 .byte 65,87 // push %r15
9589 .byte 65,86 // push %r14
9590 .byte 65,85 // push %r13
9591 .byte 65,84 // push %r12
9592 .byte 83 // push %rbx
9593 .byte 76,139,8 // mov (%rax),%r9
9594 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
9595 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
9596 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
9597 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
9598 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
9599 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
9600 .byte 65,137,194 // mov %eax,%r10d
9601 .byte 72,193,232,32 // shr $0x20,%rax
9602 .byte 196,193,249,126,195 // vmovq %xmm0,%r11
9603 .byte 69,137,222 // mov %r11d,%r14d
9604 .byte 73,193,235,32 // shr $0x20,%r11
9605 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
9606 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
9607 .byte 65,137,223 // mov %ebx,%r15d
9608 .byte 72,193,235,32 // shr $0x20,%rbx
9609 .byte 196,193,249,126,196 // vmovq %xmm0,%r12
9610 .byte 69,137,229 // mov %r12d,%r13d
9611 .byte 73,193,236,32 // shr $0x20,%r12
9612 .byte 196,131,121,32,4,49,0 // vpinsrb $0x0,(%r9,%r14,1),%xmm0,%xmm0
9613 .byte 196,131,121,32,4,25,1 // vpinsrb $0x1,(%r9,%r11,1),%xmm0,%xmm0
9614 .byte 196,131,121,32,4,17,2 // vpinsrb $0x2,(%r9,%r10,1),%xmm0,%xmm0
9615 .byte 196,195,121,32,4,1,3 // vpinsrb $0x3,(%r9,%rax,1),%xmm0,%xmm0
9616 .byte 196,131,121,32,4,41,4 // vpinsrb $0x4,(%r9,%r13,1),%xmm0,%xmm0
9617 .byte 196,131,121,32,4,33,5 // vpinsrb $0x5,(%r9,%r12,1),%xmm0,%xmm0
9618 .byte 196,131,121,32,4,57,6 // vpinsrb $0x6,(%r9,%r15,1),%xmm0,%xmm0
9619 .byte 196,195,121,32,4,25,7 // vpinsrb $0x7,(%r9,%rbx,1),%xmm0,%xmm0
9620 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
9621 .byte 73,139,64,8 // mov 0x8(%r8),%rax
9622 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
9623 .byte 196,226,117,144,28,128 // vpgatherdd %ymm1,(%rax,%ymm0,4),%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04009624 .byte 197,229,219,5,13,29,0,0 // vpand 0x1d0d(%rip),%ymm3,%ymm0 # 4140 <_sk_callback_hsw+0x4fd>
Mike Klein7d3d8722017-04-06 17:53:18 -04009625 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009626 .byte 196,98,125,24,5,64,27,0,0 // vbroadcastss 0x1b40(%rip),%ymm8 # 3f80 <_sk_callback_hsw+0x33d>
Mike Klein7d3d8722017-04-06 17:53:18 -04009627 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009628 .byte 196,226,101,0,13,18,29,0,0 // vpshufb 0x1d12(%rip),%ymm3,%ymm1 # 4160 <_sk_callback_hsw+0x51d>
Mike Klein7d3d8722017-04-06 17:53:18 -04009629 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
9630 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009631 .byte 196,226,101,0,21,32,29,0,0 // vpshufb 0x1d20(%rip),%ymm3,%ymm2 # 4180 <_sk_callback_hsw+0x53d>
Mike Klein7d3d8722017-04-06 17:53:18 -04009632 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
9633 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
9634 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
9635 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
9636 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
9637 .byte 72,173 // lods %ds:(%rsi),%rax
9638 .byte 91 // pop %rbx
9639 .byte 65,92 // pop %r12
9640 .byte 65,93 // pop %r13
9641 .byte 65,94 // pop %r14
9642 .byte 65,95 // pop %r15
9643 .byte 255,224 // jmpq *%rax
9644
Mike Klein7c4af542017-03-29 18:21:14 -04009645HIDDEN _sk_load_565_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04009646.globl _sk_load_565_hsw
Mike Klein86714282017-04-13 17:37:38 -04009647FUNCTION(_sk_load_565_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04009648_sk_load_565_hsw:
9649 .byte 72,173 // lods %ds:(%rsi),%rax
9650 .byte 76,139,16 // mov (%rax),%r10
9651 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04009652 .byte 117,114 // jne 2500 <_sk_load_565_hsw+0x7c>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009653 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
9654 .byte 196,226,125,51,208 // vpmovzxwd %xmm0,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009655 .byte 196,226,125,88,5,226,26,0,0 // vpbroadcastd 0x1ae2(%rip),%ymm0 # 3f84 <_sk_callback_hsw+0x341>
Mike Klein308e6242017-04-27 13:56:33 -04009656 .byte 197,237,219,192 // vpand %ymm0,%ymm2,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -04009657 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009658 .byte 196,226,125,24,13,213,26,0,0 // vbroadcastss 0x1ad5(%rip),%ymm1 # 3f88 <_sk_callback_hsw+0x345>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009659 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009660 .byte 196,226,125,88,13,204,26,0,0 // vpbroadcastd 0x1acc(%rip),%ymm1 # 3f8c <_sk_callback_hsw+0x349>
Mike Klein308e6242017-04-27 13:56:33 -04009661 .byte 197,237,219,201 // vpand %ymm1,%ymm2,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -04009662 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009663 .byte 196,226,125,24,29,191,26,0,0 // vbroadcastss 0x1abf(%rip),%ymm3 # 3f90 <_sk_callback_hsw+0x34d>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009664 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009665 .byte 196,226,125,88,29,182,26,0,0 // vpbroadcastd 0x1ab6(%rip),%ymm3 # 3f94 <_sk_callback_hsw+0x351>
Mike Klein308e6242017-04-27 13:56:33 -04009666 .byte 197,237,219,211 // vpand %ymm3,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -04009667 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009668 .byte 196,226,125,24,29,169,26,0,0 // vbroadcastss 0x1aa9(%rip),%ymm3 # 3f98 <_sk_callback_hsw+0x355>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009669 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -04009670 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -04009671 .byte 196,226,125,24,29,158,26,0,0 // vbroadcastss 0x1a9e(%rip),%ymm3 # 3f9c <_sk_callback_hsw+0x359>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009672 .byte 255,224 // jmpq *%rax
9673 .byte 65,137,200 // mov %ecx,%r8d
9674 .byte 65,128,224,7 // and $0x7,%r8b
9675 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
9676 .byte 65,254,200 // dec %r8b
9677 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinb3665f02017-05-01 14:56:04 -04009678 .byte 119,128 // ja 2494 <_sk_load_565_hsw+0x10>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009679 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinb3665f02017-05-01 14:56:04 -04009680 .byte 76,141,13,73,0,0,0 // lea 0x49(%rip),%r9 # 2568 <_sk_load_565_hsw+0xe4>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009681 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
9682 .byte 76,1,200 // add %r9,%rax
9683 .byte 255,224 // jmpq *%rax
9684 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
9685 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
9686 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
9687 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
9688 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
9689 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
9690 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
9691 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009692 .byte 233,44,255,255,255 // jmpq 2494 <_sk_load_565_hsw+0x10>
Mike Kleinfe560a82017-05-01 12:56:35 -04009693 .byte 244 // hlt
Mike Kleind7e06ae2017-03-29 16:33:06 -04009694 .byte 255 // (bad)
9695 .byte 255 // (bad)
9696 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -04009697 .byte 236 // in (%dx),%al
9698 .byte 255 // (bad)
9699 .byte 255 // (bad)
9700 .byte 255,228 // jmpq *%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -04009701 .byte 255 // (bad)
9702 .byte 255 // (bad)
9703 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -04009704 .byte 220,255 // fdivr %st,%st(7)
Mike Klein0aa742f2017-04-27 13:36:57 -04009705 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -04009706 .byte 255,212 // callq *%rsp
Mike Klein0aa742f2017-04-27 13:36:57 -04009707 .byte 255 // (bad)
9708 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -04009709 .byte 255,204 // dec %esp
Mike Klein0aa742f2017-04-27 13:36:57 -04009710 .byte 255 // (bad)
9711 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -04009712 .byte 255,192 // inc %eax
Mike Kleind7e06ae2017-03-29 16:33:06 -04009713 .byte 255 // (bad)
9714 .byte 255 // (bad)
9715 .byte 255 // .byte 0xff
9716
Mike Klein21bd3e42017-04-06 16:32:29 -04009717HIDDEN _sk_gather_565_hsw
9718.globl _sk_gather_565_hsw
Mike Klein86714282017-04-13 17:37:38 -04009719FUNCTION(_sk_gather_565_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -04009720_sk_gather_565_hsw:
9721 .byte 65,87 // push %r15
9722 .byte 65,86 // push %r14
9723 .byte 65,84 // push %r12
9724 .byte 83 // push %rbx
9725 .byte 72,173 // lods %ds:(%rsi),%rax
9726 .byte 76,139,0 // mov (%rax),%r8
9727 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
9728 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
9729 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
9730 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
9731 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
9732 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
9733 .byte 65,137,193 // mov %eax,%r9d
9734 .byte 72,193,232,32 // shr $0x20,%rax
9735 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
9736 .byte 69,137,211 // mov %r10d,%r11d
9737 .byte 73,193,234,32 // shr $0x20,%r10
9738 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
9739 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
9740 .byte 65,137,222 // mov %ebx,%r14d
9741 .byte 72,193,235,32 // shr $0x20,%rbx
9742 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
9743 .byte 69,137,252 // mov %r15d,%r12d
9744 .byte 73,193,239,32 // shr $0x20,%r15
9745 .byte 71,15,183,20,80 // movzwl (%r8,%r10,2),%r10d
9746 .byte 71,15,183,28,88 // movzwl (%r8,%r11,2),%r11d
9747 .byte 196,193,121,110,195 // vmovd %r11d,%xmm0
9748 .byte 196,193,121,196,194,1 // vpinsrw $0x1,%r10d,%xmm0,%xmm0
9749 .byte 71,15,183,12,72 // movzwl (%r8,%r9,2),%r9d
9750 .byte 196,193,121,196,193,2 // vpinsrw $0x2,%r9d,%xmm0,%xmm0
9751 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
9752 .byte 197,249,196,192,3 // vpinsrw $0x3,%eax,%xmm0,%xmm0
9753 .byte 67,15,183,4,96 // movzwl (%r8,%r12,2),%eax
9754 .byte 197,249,196,192,4 // vpinsrw $0x4,%eax,%xmm0,%xmm0
9755 .byte 67,15,183,4,120 // movzwl (%r8,%r15,2),%eax
9756 .byte 197,249,196,192,5 // vpinsrw $0x5,%eax,%xmm0,%xmm0
9757 .byte 67,15,183,4,112 // movzwl (%r8,%r14,2),%eax
9758 .byte 197,249,196,192,6 // vpinsrw $0x6,%eax,%xmm0,%xmm0
9759 .byte 65,15,183,4,88 // movzwl (%r8,%rbx,2),%eax
9760 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
9761 .byte 196,226,125,51,208 // vpmovzxwd %xmm0,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009762 .byte 196,226,125,88,5,97,25,0,0 // vpbroadcastd 0x1961(%rip),%ymm0 # 3fa0 <_sk_callback_hsw+0x35d>
Mike Klein308e6242017-04-27 13:56:33 -04009763 .byte 197,237,219,192 // vpand %ymm0,%ymm2,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -04009764 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009765 .byte 196,226,125,24,13,84,25,0,0 // vbroadcastss 0x1954(%rip),%ymm1 # 3fa4 <_sk_callback_hsw+0x361>
Mike Klein21bd3e42017-04-06 16:32:29 -04009766 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009767 .byte 196,226,125,88,13,75,25,0,0 // vpbroadcastd 0x194b(%rip),%ymm1 # 3fa8 <_sk_callback_hsw+0x365>
Mike Klein308e6242017-04-27 13:56:33 -04009768 .byte 197,237,219,201 // vpand %ymm1,%ymm2,%ymm1
Mike Klein21bd3e42017-04-06 16:32:29 -04009769 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009770 .byte 196,226,125,24,29,62,25,0,0 // vbroadcastss 0x193e(%rip),%ymm3 # 3fac <_sk_callback_hsw+0x369>
Mike Klein21bd3e42017-04-06 16:32:29 -04009771 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009772 .byte 196,226,125,88,29,53,25,0,0 // vpbroadcastd 0x1935(%rip),%ymm3 # 3fb0 <_sk_callback_hsw+0x36d>
Mike Klein308e6242017-04-27 13:56:33 -04009773 .byte 197,237,219,211 // vpand %ymm3,%ymm2,%ymm2
Mike Klein21bd3e42017-04-06 16:32:29 -04009774 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009775 .byte 196,226,125,24,29,40,25,0,0 // vbroadcastss 0x1928(%rip),%ymm3 # 3fb4 <_sk_callback_hsw+0x371>
Mike Klein21bd3e42017-04-06 16:32:29 -04009776 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
Mike Klein21bd3e42017-04-06 16:32:29 -04009777 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -04009778 .byte 196,226,125,24,29,29,25,0,0 // vbroadcastss 0x191d(%rip),%ymm3 # 3fb8 <_sk_callback_hsw+0x375>
Mike Klein21bd3e42017-04-06 16:32:29 -04009779 .byte 91 // pop %rbx
9780 .byte 65,92 // pop %r12
9781 .byte 65,94 // pop %r14
9782 .byte 65,95 // pop %r15
9783 .byte 255,224 // jmpq *%rax
9784
Mike Klein7c4af542017-03-29 18:21:14 -04009785HIDDEN _sk_store_565_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04009786.globl _sk_store_565_hsw
Mike Klein86714282017-04-13 17:37:38 -04009787FUNCTION(_sk_store_565_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04009788_sk_store_565_hsw:
9789 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -04009790 .byte 76,139,16 // mov (%rax),%r10
Mike Kleinb3665f02017-05-01 14:56:04 -04009791 .byte 196,98,125,24,5,10,25,0,0 // vbroadcastss 0x190a(%rip),%ymm8 # 3fbc <_sk_callback_hsw+0x379>
Mike Kleinfe560a82017-05-01 12:56:35 -04009792 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -04009793 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
9794 .byte 196,193,53,114,241,11 // vpslld $0xb,%ymm9,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -04009795 .byte 196,98,125,24,21,245,24,0,0 // vbroadcastss 0x18f5(%rip),%ymm10 # 3fc0 <_sk_callback_hsw+0x37d>
Mike Kleinfe560a82017-05-01 12:56:35 -04009796 .byte 196,65,116,89,210 // vmulps %ymm10,%ymm1,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -04009797 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
9798 .byte 196,193,45,114,242,5 // vpslld $0x5,%ymm10,%ymm10
9799 .byte 196,65,45,235,201 // vpor %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -04009800 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -04009801 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
9802 .byte 196,65,53,235,192 // vpor %ymm8,%ymm9,%ymm8
9803 .byte 196,67,125,57,193,1 // vextracti128 $0x1,%ymm8,%xmm9
9804 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
9805 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04009806 .byte 117,10 // jne 2709 <_sk_store_565_hsw+0x65>
Mike Kleinfe560a82017-05-01 12:56:35 -04009807 .byte 196,65,122,127,4,122 // vmovdqu %xmm8,(%r10,%rdi,2)
Mike Kleind7e06ae2017-03-29 16:33:06 -04009808 .byte 72,173 // lods %ds:(%rsi),%rax
9809 .byte 255,224 // jmpq *%rax
9810 .byte 65,137,200 // mov %ecx,%r8d
9811 .byte 65,128,224,7 // and $0x7,%r8b
9812 .byte 65,254,200 // dec %r8b
9813 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinb3665f02017-05-01 14:56:04 -04009814 .byte 119,236 // ja 2705 <_sk_store_565_hsw+0x61>
Mike Kleinfe560a82017-05-01 12:56:35 -04009815 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinb3665f02017-05-01 14:56:04 -04009816 .byte 76,141,13,68,0,0,0 // lea 0x44(%rip),%r9 # 2768 <_sk_store_565_hsw+0xc4>
Mike Kleinfe560a82017-05-01 12:56:35 -04009817 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
9818 .byte 76,1,200 // add %r9,%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -04009819 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -04009820 .byte 196,67,121,21,68,122,12,6 // vpextrw $0x6,%xmm8,0xc(%r10,%rdi,2)
9821 .byte 196,67,121,21,68,122,10,5 // vpextrw $0x5,%xmm8,0xa(%r10,%rdi,2)
9822 .byte 196,67,121,21,68,122,8,4 // vpextrw $0x4,%xmm8,0x8(%r10,%rdi,2)
9823 .byte 196,67,121,21,68,122,6,3 // vpextrw $0x3,%xmm8,0x6(%r10,%rdi,2)
9824 .byte 196,67,121,21,68,122,4,2 // vpextrw $0x2,%xmm8,0x4(%r10,%rdi,2)
9825 .byte 196,67,121,21,68,122,2,1 // vpextrw $0x1,%xmm8,0x2(%r10,%rdi,2)
9826 .byte 196,67,121,21,4,122,0 // vpextrw $0x0,%xmm8,(%r10,%rdi,2)
Mike Kleinb3665f02017-05-01 14:56:04 -04009827 .byte 235,159 // jmp 2705 <_sk_store_565_hsw+0x61>
Mike Kleinfe560a82017-05-01 12:56:35 -04009828 .byte 102,144 // xchg %ax,%ax
9829 .byte 245 // cmc
9830 .byte 255 // (bad)
9831 .byte 255 // (bad)
9832 .byte 255 // (bad)
9833 .byte 237 // in (%dx),%eax
9834 .byte 255 // (bad)
9835 .byte 255 // (bad)
9836 .byte 255,229 // jmpq *%rbp
9837 .byte 255 // (bad)
9838 .byte 255 // (bad)
9839 .byte 255 // (bad)
9840 .byte 221,255 // (bad)
9841 .byte 255 // (bad)
9842 .byte 255,213 // callq *%rbp
9843 .byte 255 // (bad)
9844 .byte 255 // (bad)
9845 .byte 255,205 // dec %ebp
9846 .byte 255 // (bad)
9847 .byte 255 // (bad)
9848 .byte 255,197 // inc %ebp
9849 .byte 255 // (bad)
9850 .byte 255 // (bad)
9851 .byte 255 // .byte 0xff
9852
9853HIDDEN _sk_load_4444_hsw
9854.globl _sk_load_4444_hsw
9855FUNCTION(_sk_load_4444_hsw)
9856_sk_load_4444_hsw:
9857 .byte 72,173 // lods %ds:(%rsi),%rax
9858 .byte 76,139,16 // mov (%rax),%r10
9859 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -04009860 .byte 15,133,138,0,0,0 // jne 281c <_sk_load_4444_hsw+0x98>
Mike Kleinfe560a82017-05-01 12:56:35 -04009861 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
9862 .byte 196,226,125,51,216 // vpmovzxwd %xmm0,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04009863 .byte 196,226,125,88,5,30,24,0,0 // vpbroadcastd 0x181e(%rip),%ymm0 # 3fc4 <_sk_callback_hsw+0x381>
Mike Kleinfe560a82017-05-01 12:56:35 -04009864 .byte 197,229,219,192 // vpand %ymm0,%ymm3,%ymm0
9865 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009866 .byte 196,226,125,24,13,17,24,0,0 // vbroadcastss 0x1811(%rip),%ymm1 # 3fc8 <_sk_callback_hsw+0x385>
Mike Kleinfe560a82017-05-01 12:56:35 -04009867 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009868 .byte 196,226,125,88,13,8,24,0,0 // vpbroadcastd 0x1808(%rip),%ymm1 # 3fcc <_sk_callback_hsw+0x389>
Mike Kleinfe560a82017-05-01 12:56:35 -04009869 .byte 197,229,219,201 // vpand %ymm1,%ymm3,%ymm1
9870 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009871 .byte 196,226,125,24,21,251,23,0,0 // vbroadcastss 0x17fb(%rip),%ymm2 # 3fd0 <_sk_callback_hsw+0x38d>
Mike Kleinfe560a82017-05-01 12:56:35 -04009872 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009873 .byte 196,226,125,88,21,242,23,0,0 // vpbroadcastd 0x17f2(%rip),%ymm2 # 3fd4 <_sk_callback_hsw+0x391>
Mike Kleinfe560a82017-05-01 12:56:35 -04009874 .byte 197,229,219,210 // vpand %ymm2,%ymm3,%ymm2
9875 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009876 .byte 196,98,125,24,5,229,23,0,0 // vbroadcastss 0x17e5(%rip),%ymm8 # 3fd8 <_sk_callback_hsw+0x395>
Mike Kleinfe560a82017-05-01 12:56:35 -04009877 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009878 .byte 196,98,125,88,5,219,23,0,0 // vpbroadcastd 0x17db(%rip),%ymm8 # 3fdc <_sk_callback_hsw+0x399>
Mike Kleinfe560a82017-05-01 12:56:35 -04009879 .byte 196,193,101,219,216 // vpand %ymm8,%ymm3,%ymm3
9880 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04009881 .byte 196,98,125,24,5,205,23,0,0 // vbroadcastss 0x17cd(%rip),%ymm8 # 3fe0 <_sk_callback_hsw+0x39d>
Mike Kleinfe560a82017-05-01 12:56:35 -04009882 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
9883 .byte 72,173 // lods %ds:(%rsi),%rax
9884 .byte 255,224 // jmpq *%rax
9885 .byte 65,137,200 // mov %ecx,%r8d
9886 .byte 65,128,224,7 // and $0x7,%r8b
9887 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
9888 .byte 65,254,200 // dec %r8b
9889 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinb3665f02017-05-01 14:56:04 -04009890 .byte 15,135,100,255,255,255 // ja 2798 <_sk_load_4444_hsw+0x14>
Mike Kleinfe560a82017-05-01 12:56:35 -04009891 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinb3665f02017-05-01 14:56:04 -04009892 .byte 76,141,13,73,0,0,0 // lea 0x49(%rip),%r9 # 2888 <_sk_load_4444_hsw+0x104>
Mike Kleinfe560a82017-05-01 12:56:35 -04009893 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
9894 .byte 76,1,200 // add %r9,%rax
9895 .byte 255,224 // jmpq *%rax
9896 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
9897 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
9898 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
9899 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
9900 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
9901 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
9902 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
9903 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009904 .byte 233,16,255,255,255 // jmpq 2798 <_sk_load_4444_hsw+0x14>
Mike Klein308e6242017-04-27 13:56:33 -04009905 .byte 244 // hlt
Mike Kleind7e06ae2017-03-29 16:33:06 -04009906 .byte 255 // (bad)
9907 .byte 255 // (bad)
9908 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -04009909 .byte 236 // in (%dx),%al
Mike Kleind7e06ae2017-03-29 16:33:06 -04009910 .byte 255 // (bad)
9911 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -04009912 .byte 255,228 // jmpq *%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -04009913 .byte 255 // (bad)
9914 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -04009915 .byte 255 // (bad)
9916 .byte 220,255 // fdivr %st,%st(7)
9917 .byte 255 // (bad)
9918 .byte 255,212 // callq *%rsp
9919 .byte 255 // (bad)
9920 .byte 255 // (bad)
9921 .byte 255,204 // dec %esp
9922 .byte 255 // (bad)
9923 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -04009924 .byte 255,192 // inc %eax
Mike Kleinf809fef2017-03-31 13:52:45 -04009925 .byte 255 // (bad)
9926 .byte 255 // (bad)
9927 .byte 255 // .byte 0xff
9928
Mike Klein21bd3e42017-04-06 16:32:29 -04009929HIDDEN _sk_gather_4444_hsw
9930.globl _sk_gather_4444_hsw
Mike Klein86714282017-04-13 17:37:38 -04009931FUNCTION(_sk_gather_4444_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -04009932_sk_gather_4444_hsw:
9933 .byte 65,87 // push %r15
9934 .byte 65,86 // push %r14
9935 .byte 65,84 // push %r12
9936 .byte 83 // push %rbx
9937 .byte 72,173 // lods %ds:(%rsi),%rax
9938 .byte 76,139,0 // mov (%rax),%r8
9939 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
9940 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
9941 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
9942 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
9943 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
9944 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
9945 .byte 65,137,193 // mov %eax,%r9d
9946 .byte 72,193,232,32 // shr $0x20,%rax
9947 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
9948 .byte 69,137,211 // mov %r10d,%r11d
9949 .byte 73,193,234,32 // shr $0x20,%r10
9950 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
9951 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
9952 .byte 65,137,222 // mov %ebx,%r14d
9953 .byte 72,193,235,32 // shr $0x20,%rbx
9954 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
9955 .byte 69,137,252 // mov %r15d,%r12d
9956 .byte 73,193,239,32 // shr $0x20,%r15
9957 .byte 71,15,183,20,80 // movzwl (%r8,%r10,2),%r10d
9958 .byte 71,15,183,28,88 // movzwl (%r8,%r11,2),%r11d
9959 .byte 196,193,121,110,195 // vmovd %r11d,%xmm0
9960 .byte 196,193,121,196,194,1 // vpinsrw $0x1,%r10d,%xmm0,%xmm0
9961 .byte 71,15,183,12,72 // movzwl (%r8,%r9,2),%r9d
9962 .byte 196,193,121,196,193,2 // vpinsrw $0x2,%r9d,%xmm0,%xmm0
9963 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
9964 .byte 197,249,196,192,3 // vpinsrw $0x3,%eax,%xmm0,%xmm0
9965 .byte 67,15,183,4,96 // movzwl (%r8,%r12,2),%eax
9966 .byte 197,249,196,192,4 // vpinsrw $0x4,%eax,%xmm0,%xmm0
9967 .byte 67,15,183,4,120 // movzwl (%r8,%r15,2),%eax
9968 .byte 197,249,196,192,5 // vpinsrw $0x5,%eax,%xmm0,%xmm0
9969 .byte 67,15,183,4,112 // movzwl (%r8,%r14,2),%eax
9970 .byte 197,249,196,192,6 // vpinsrw $0x6,%eax,%xmm0,%xmm0
9971 .byte 65,15,183,4,88 // movzwl (%r8,%rbx,2),%eax
9972 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -04009973 .byte 196,226,125,51,216 // vpmovzxwd %xmm0,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04009974 .byte 196,226,125,88,5,133,22,0,0 // vpbroadcastd 0x1685(%rip),%ymm0 # 3fe4 <_sk_callback_hsw+0x3a1>
Mike Klein308e6242017-04-27 13:56:33 -04009975 .byte 197,229,219,192 // vpand %ymm0,%ymm3,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -04009976 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009977 .byte 196,226,125,24,13,120,22,0,0 // vbroadcastss 0x1678(%rip),%ymm1 # 3fe8 <_sk_callback_hsw+0x3a5>
Mike Klein21bd3e42017-04-06 16:32:29 -04009978 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -04009979 .byte 196,226,125,88,13,111,22,0,0 // vpbroadcastd 0x166f(%rip),%ymm1 # 3fec <_sk_callback_hsw+0x3a9>
Mike Klein308e6242017-04-27 13:56:33 -04009980 .byte 197,229,219,201 // vpand %ymm1,%ymm3,%ymm1
Mike Klein21bd3e42017-04-06 16:32:29 -04009981 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009982 .byte 196,226,125,24,21,98,22,0,0 // vbroadcastss 0x1662(%rip),%ymm2 # 3ff0 <_sk_callback_hsw+0x3ad>
Mike Klein21bd3e42017-04-06 16:32:29 -04009983 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -04009984 .byte 196,226,125,88,21,89,22,0,0 // vpbroadcastd 0x1659(%rip),%ymm2 # 3ff4 <_sk_callback_hsw+0x3b1>
Mike Klein308e6242017-04-27 13:56:33 -04009985 .byte 197,229,219,210 // vpand %ymm2,%ymm3,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -04009986 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009987 .byte 196,98,125,24,5,76,22,0,0 // vbroadcastss 0x164c(%rip),%ymm8 # 3ff8 <_sk_callback_hsw+0x3b5>
Mike Kleinfe560a82017-05-01 12:56:35 -04009988 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Kleinb3665f02017-05-01 14:56:04 -04009989 .byte 196,98,125,88,5,66,22,0,0 // vpbroadcastd 0x1642(%rip),%ymm8 # 3ffc <_sk_callback_hsw+0x3b9>
Mike Klein308e6242017-04-27 13:56:33 -04009990 .byte 196,193,101,219,216 // vpand %ymm8,%ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -04009991 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -04009992 .byte 196,98,125,24,5,52,22,0,0 // vbroadcastss 0x1634(%rip),%ymm8 # 4000 <_sk_callback_hsw+0x3bd>
Mike Kleinfe560a82017-05-01 12:56:35 -04009993 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Klein21bd3e42017-04-06 16:32:29 -04009994 .byte 72,173 // lods %ds:(%rsi),%rax
9995 .byte 91 // pop %rbx
9996 .byte 65,92 // pop %r12
9997 .byte 65,94 // pop %r14
9998 .byte 65,95 // pop %r15
9999 .byte 255,224 // jmpq *%rax
10000
Mike Kleinf809fef2017-03-31 13:52:45 -040010001HIDDEN _sk_store_4444_hsw
10002.globl _sk_store_4444_hsw
Mike Klein86714282017-04-13 17:37:38 -040010003FUNCTION(_sk_store_4444_hsw)
Mike Kleinf809fef2017-03-31 13:52:45 -040010004_sk_store_4444_hsw:
10005 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040010006 .byte 76,139,16 // mov (%rax),%r10
Mike Kleinb3665f02017-05-01 14:56:04 -040010007 .byte 196,98,125,24,5,26,22,0,0 // vbroadcastss 0x161a(%rip),%ymm8 # 4004 <_sk_callback_hsw+0x3c1>
Mike Kleinfe560a82017-05-01 12:56:35 -040010008 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleinf809fef2017-03-31 13:52:45 -040010009 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
10010 .byte 196,193,53,114,241,12 // vpslld $0xc,%ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040010011 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Kleinf809fef2017-03-31 13:52:45 -040010012 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
10013 .byte 196,193,45,114,242,8 // vpslld $0x8,%ymm10,%ymm10
10014 .byte 196,65,45,235,201 // vpor %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040010015 .byte 196,65,108,89,208 // vmulps %ymm8,%ymm2,%ymm10
Mike Kleinf809fef2017-03-31 13:52:45 -040010016 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
10017 .byte 196,193,45,114,242,4 // vpslld $0x4,%ymm10,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040010018 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleinf809fef2017-03-31 13:52:45 -040010019 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
10020 .byte 196,65,45,235,192 // vpor %ymm8,%ymm10,%ymm8
10021 .byte 196,65,53,235,192 // vpor %ymm8,%ymm9,%ymm8
10022 .byte 196,67,125,57,193,1 // vextracti128 $0x1,%ymm8,%xmm9
10023 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
10024 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010025 .byte 117,10 // jne 2a4d <_sk_store_4444_hsw+0x71>
Mike Kleinfe560a82017-05-01 12:56:35 -040010026 .byte 196,65,122,127,4,122 // vmovdqu %xmm8,(%r10,%rdi,2)
Mike Kleinf809fef2017-03-31 13:52:45 -040010027 .byte 72,173 // lods %ds:(%rsi),%rax
10028 .byte 255,224 // jmpq *%rax
10029 .byte 65,137,200 // mov %ecx,%r8d
10030 .byte 65,128,224,7 // and $0x7,%r8b
10031 .byte 65,254,200 // dec %r8b
10032 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinb3665f02017-05-01 14:56:04 -040010033 .byte 119,236 // ja 2a49 <_sk_store_4444_hsw+0x6d>
Mike Kleinfe560a82017-05-01 12:56:35 -040010034 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinb3665f02017-05-01 14:56:04 -040010035 .byte 76,141,13,68,0,0,0 // lea 0x44(%rip),%r9 # 2aac <_sk_store_4444_hsw+0xd0>
Mike Kleinfe560a82017-05-01 12:56:35 -040010036 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
10037 .byte 76,1,200 // add %r9,%rax
Mike Kleinf809fef2017-03-31 13:52:45 -040010038 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040010039 .byte 196,67,121,21,68,122,12,6 // vpextrw $0x6,%xmm8,0xc(%r10,%rdi,2)
10040 .byte 196,67,121,21,68,122,10,5 // vpextrw $0x5,%xmm8,0xa(%r10,%rdi,2)
10041 .byte 196,67,121,21,68,122,8,4 // vpextrw $0x4,%xmm8,0x8(%r10,%rdi,2)
10042 .byte 196,67,121,21,68,122,6,3 // vpextrw $0x3,%xmm8,0x6(%r10,%rdi,2)
10043 .byte 196,67,121,21,68,122,4,2 // vpextrw $0x2,%xmm8,0x4(%r10,%rdi,2)
10044 .byte 196,67,121,21,68,122,2,1 // vpextrw $0x1,%xmm8,0x2(%r10,%rdi,2)
10045 .byte 196,67,121,21,4,122,0 // vpextrw $0x0,%xmm8,(%r10,%rdi,2)
Mike Kleinb3665f02017-05-01 14:56:04 -040010046 .byte 235,159 // jmp 2a49 <_sk_store_4444_hsw+0x6d>
Mike Kleinfe560a82017-05-01 12:56:35 -040010047 .byte 102,144 // xchg %ax,%ax
10048 .byte 245 // cmc
Mike Kleinf809fef2017-03-31 13:52:45 -040010049 .byte 255 // (bad)
10050 .byte 255 // (bad)
10051 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040010052 .byte 237 // in (%dx),%eax
Mike Kleinf809fef2017-03-31 13:52:45 -040010053 .byte 255 // (bad)
10054 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040010055 .byte 255,229 // jmpq *%rbp
Mike Kleinf809fef2017-03-31 13:52:45 -040010056 .byte 255 // (bad)
10057 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040010058 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040010059 .byte 221,255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040010060 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040010061 .byte 255,213 // callq *%rbp
Mike Klein308e6242017-04-27 13:56:33 -040010062 .byte 255 // (bad)
10063 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040010064 .byte 255,205 // dec %ebp
Mike Klein308e6242017-04-27 13:56:33 -040010065 .byte 255 // (bad)
10066 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040010067 .byte 255,197 // inc %ebp
Mike Kleinf809fef2017-03-31 13:52:45 -040010068 .byte 255 // (bad)
10069 .byte 255 // (bad)
10070 .byte 255 // .byte 0xff
10071
Mike Klein7c4af542017-03-29 18:21:14 -040010072HIDDEN _sk_load_8888_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010073.globl _sk_load_8888_hsw
Mike Klein86714282017-04-13 17:37:38 -040010074FUNCTION(_sk_load_8888_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010075_sk_load_8888_hsw:
10076 .byte 73,137,200 // mov %rcx,%r8
10077 .byte 72,173 // lods %ds:(%rsi),%rax
10078 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
10079 .byte 76,3,8 // add (%rax),%r9
10080 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -040010081 .byte 117,88 // jne 2b35 <_sk_load_8888_hsw+0x6d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010082 .byte 196,193,126,111,25 // vmovdqu (%r9),%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -040010083 .byte 197,229,219,5,182,22,0,0 // vpand 0x16b6(%rip),%ymm3,%ymm0 # 41a0 <_sk_callback_hsw+0x55d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010084 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -040010085 .byte 196,98,125,24,5,17,21,0,0 // vbroadcastss 0x1511(%rip),%ymm8 # 4008 <_sk_callback_hsw+0x3c5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010086 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -040010087 .byte 196,226,101,0,13,187,22,0,0 // vpshufb 0x16bb(%rip),%ymm3,%ymm1 # 41c0 <_sk_callback_hsw+0x57d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010088 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
10089 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -040010090 .byte 196,226,101,0,21,201,22,0,0 // vpshufb 0x16c9(%rip),%ymm3,%ymm2 # 41e0 <_sk_callback_hsw+0x59d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010091 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
10092 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
10093 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
10094 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
10095 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
10096 .byte 72,173 // lods %ds:(%rsi),%rax
10097 .byte 76,137,193 // mov %r8,%rcx
10098 .byte 255,224 // jmpq *%rax
10099 .byte 185,8,0,0,0 // mov $0x8,%ecx
10100 .byte 68,41,193 // sub %r8d,%ecx
10101 .byte 192,225,3 // shl $0x3,%cl
10102 .byte 72,199,192,255,255,255,255 // mov $0xffffffffffffffff,%rax
10103 .byte 72,211,232 // shr %cl,%rax
10104 .byte 196,225,249,110,192 // vmovq %rax,%xmm0
10105 .byte 196,226,125,33,192 // vpmovsxbd %xmm0,%ymm0
10106 .byte 196,194,125,140,25 // vpmaskmovd (%r9),%ymm0,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -040010107 .byte 235,135 // jmp 2ae2 <_sk_load_8888_hsw+0x1a>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010108
Mike Kleindec4ea82017-04-06 15:04:05 -040010109HIDDEN _sk_gather_8888_hsw
10110.globl _sk_gather_8888_hsw
Mike Klein86714282017-04-13 17:37:38 -040010111FUNCTION(_sk_gather_8888_hsw)
Mike Kleindec4ea82017-04-06 15:04:05 -040010112_sk_gather_8888_hsw:
10113 .byte 72,173 // lods %ds:(%rsi),%rax
10114 .byte 76,139,0 // mov (%rax),%r8
10115 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
10116 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
10117 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
10118 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
10119 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
10120 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
10121 .byte 196,194,117,144,28,128 // vpgatherdd %ymm1,(%r8,%ymm0,4),%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -040010122 .byte 197,229,219,5,119,22,0,0 // vpand 0x1677(%rip),%ymm3,%ymm0 # 4200 <_sk_callback_hsw+0x5bd>
Mike Kleindec4ea82017-04-06 15:04:05 -040010123 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -040010124 .byte 196,98,125,24,5,118,20,0,0 // vbroadcastss 0x1476(%rip),%ymm8 # 400c <_sk_callback_hsw+0x3c9>
Mike Kleindec4ea82017-04-06 15:04:05 -040010125 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -040010126 .byte 196,226,101,0,13,124,22,0,0 // vpshufb 0x167c(%rip),%ymm3,%ymm1 # 4220 <_sk_callback_hsw+0x5dd>
Mike Kleindec4ea82017-04-06 15:04:05 -040010127 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
10128 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -040010129 .byte 196,226,101,0,21,138,22,0,0 // vpshufb 0x168a(%rip),%ymm3,%ymm2 # 4240 <_sk_callback_hsw+0x5fd>
Mike Kleindec4ea82017-04-06 15:04:05 -040010130 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
10131 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
10132 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
10133 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
10134 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
10135 .byte 72,173 // lods %ds:(%rsi),%rax
10136 .byte 255,224 // jmpq *%rax
10137
Mike Klein7c4af542017-03-29 18:21:14 -040010138HIDDEN _sk_store_8888_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010139.globl _sk_store_8888_hsw
Mike Klein86714282017-04-13 17:37:38 -040010140FUNCTION(_sk_store_8888_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010141_sk_store_8888_hsw:
10142 .byte 73,137,200 // mov %rcx,%r8
10143 .byte 72,173 // lods %ds:(%rsi),%rax
10144 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
10145 .byte 76,3,8 // add (%rax),%r9
Mike Kleinb3665f02017-05-01 14:56:04 -040010146 .byte 196,98,125,24,5,38,20,0,0 // vbroadcastss 0x1426(%rip),%ymm8 # 4010 <_sk_callback_hsw+0x3cd>
Mike Kleinfe560a82017-05-01 12:56:35 -040010147 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040010148 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040010149 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040010150 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
10151 .byte 196,193,45,114,242,8 // vpslld $0x8,%ymm10,%ymm10
10152 .byte 196,65,45,235,201 // vpor %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040010153 .byte 196,65,108,89,208 // vmulps %ymm8,%ymm2,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040010154 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
10155 .byte 196,193,45,114,242,16 // vpslld $0x10,%ymm10,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040010156 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040010157 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
10158 .byte 196,193,61,114,240,24 // vpslld $0x18,%ymm8,%ymm8
10159 .byte 196,65,45,235,192 // vpor %ymm8,%ymm10,%ymm8
10160 .byte 196,65,53,235,192 // vpor %ymm8,%ymm9,%ymm8
10161 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -040010162 .byte 117,12 // jne 2c44 <_sk_store_8888_hsw+0x73>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010163 .byte 196,65,126,127,1 // vmovdqu %ymm8,(%r9)
10164 .byte 72,173 // lods %ds:(%rsi),%rax
10165 .byte 76,137,193 // mov %r8,%rcx
10166 .byte 255,224 // jmpq *%rax
10167 .byte 185,8,0,0,0 // mov $0x8,%ecx
10168 .byte 68,41,193 // sub %r8d,%ecx
10169 .byte 192,225,3 // shl $0x3,%cl
10170 .byte 72,199,192,255,255,255,255 // mov $0xffffffffffffffff,%rax
10171 .byte 72,211,232 // shr %cl,%rax
10172 .byte 196,97,249,110,200 // vmovq %rax,%xmm9
10173 .byte 196,66,125,33,201 // vpmovsxbd %xmm9,%ymm9
10174 .byte 196,66,53,142,1 // vpmaskmovd %ymm8,%ymm9,(%r9)
Mike Kleinb3665f02017-05-01 14:56:04 -040010175 .byte 235,211 // jmp 2c3d <_sk_store_8888_hsw+0x6c>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010176
Mike Klein7c4af542017-03-29 18:21:14 -040010177HIDDEN _sk_load_f16_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010178.globl _sk_load_f16_hsw
Mike Klein86714282017-04-13 17:37:38 -040010179FUNCTION(_sk_load_f16_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010180_sk_load_f16_hsw:
10181 .byte 72,173 // lods %ds:(%rsi),%rax
10182 .byte 72,139,0 // mov (%rax),%rax
10183 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010184 .byte 117,97 // jne 2cd5 <_sk_load_f16_hsw+0x6b>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010185 .byte 197,121,16,4,248 // vmovupd (%rax,%rdi,8),%xmm8
10186 .byte 197,249,16,84,248,16 // vmovupd 0x10(%rax,%rdi,8),%xmm2
10187 .byte 197,249,16,92,248,32 // vmovupd 0x20(%rax,%rdi,8),%xmm3
10188 .byte 197,122,111,76,248,48 // vmovdqu 0x30(%rax,%rdi,8),%xmm9
10189 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
10190 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
10191 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
10192 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
10193 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
10194 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
10195 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
10196 .byte 197,241,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm3
10197 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
10198 .byte 196,226,125,19,192 // vcvtph2ps %xmm0,%ymm0
10199 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
10200 .byte 196,226,125,19,201 // vcvtph2ps %xmm1,%ymm1
10201 .byte 197,177,108,211 // vpunpcklqdq %xmm3,%xmm9,%xmm2
10202 .byte 196,226,125,19,210 // vcvtph2ps %xmm2,%ymm2
10203 .byte 197,177,109,219 // vpunpckhqdq %xmm3,%xmm9,%xmm3
10204 .byte 196,226,125,19,219 // vcvtph2ps %xmm3,%ymm3
10205 .byte 72,173 // lods %ds:(%rsi),%rax
10206 .byte 255,224 // jmpq *%rax
10207 .byte 197,123,16,4,248 // vmovsd (%rax,%rdi,8),%xmm8
10208 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
10209 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010210 .byte 116,79 // je 2d34 <_sk_load_f16_hsw+0xca>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010211 .byte 197,57,22,68,248,8 // vmovhpd 0x8(%rax,%rdi,8),%xmm8,%xmm8
10212 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010213 .byte 114,67 // jb 2d34 <_sk_load_f16_hsw+0xca>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010214 .byte 197,251,16,84,248,16 // vmovsd 0x10(%rax,%rdi,8),%xmm2
10215 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010216 .byte 116,68 // je 2d41 <_sk_load_f16_hsw+0xd7>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010217 .byte 197,233,22,84,248,24 // vmovhpd 0x18(%rax,%rdi,8),%xmm2,%xmm2
10218 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010219 .byte 114,56 // jb 2d41 <_sk_load_f16_hsw+0xd7>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010220 .byte 197,251,16,92,248,32 // vmovsd 0x20(%rax,%rdi,8),%xmm3
10221 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010222 .byte 15,132,114,255,255,255 // je 2c8b <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010223 .byte 197,225,22,92,248,40 // vmovhpd 0x28(%rax,%rdi,8),%xmm3,%xmm3
10224 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010225 .byte 15,130,98,255,255,255 // jb 2c8b <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010226 .byte 197,122,126,76,248,48 // vmovq 0x30(%rax,%rdi,8),%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040010227 .byte 233,87,255,255,255 // jmpq 2c8b <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010228 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
10229 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040010230 .byte 233,74,255,255,255 // jmpq 2c8b <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010231 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040010232 .byte 233,65,255,255,255 // jmpq 2c8b <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010233
Mike Klein5f055f02017-04-06 20:02:11 -040010234HIDDEN _sk_gather_f16_hsw
10235.globl _sk_gather_f16_hsw
Mike Klein86714282017-04-13 17:37:38 -040010236FUNCTION(_sk_gather_f16_hsw)
Mike Klein5f055f02017-04-06 20:02:11 -040010237_sk_gather_f16_hsw:
10238 .byte 72,173 // lods %ds:(%rsi),%rax
10239 .byte 76,139,0 // mov (%rax),%r8
10240 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
10241 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
10242 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
10243 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
10244 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
10245 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
10246 .byte 197,237,118,210 // vpcmpeqd %ymm2,%ymm2,%ymm2
10247 .byte 196,194,237,144,28,192 // vpgatherdq %ymm2,(%r8,%xmm0,8),%ymm3
10248 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
10249 .byte 196,194,245,144,20,192 // vpgatherdq %ymm1,(%r8,%xmm0,8),%ymm2
10250 .byte 196,227,125,57,216,1 // vextracti128 $0x1,%ymm3,%xmm0
10251 .byte 196,227,125,57,209,1 // vextracti128 $0x1,%ymm2,%xmm1
10252 .byte 197,97,97,192 // vpunpcklwd %xmm0,%xmm3,%xmm8
10253 .byte 197,225,105,192 // vpunpckhwd %xmm0,%xmm3,%xmm0
10254 .byte 197,233,97,217 // vpunpcklwd %xmm1,%xmm2,%xmm3
10255 .byte 197,233,105,201 // vpunpckhwd %xmm1,%xmm2,%xmm1
10256 .byte 197,57,97,200 // vpunpcklwd %xmm0,%xmm8,%xmm9
10257 .byte 197,57,105,192 // vpunpckhwd %xmm0,%xmm8,%xmm8
10258 .byte 197,225,97,209 // vpunpcklwd %xmm1,%xmm3,%xmm2
10259 .byte 197,225,105,217 // vpunpckhwd %xmm1,%xmm3,%xmm3
10260 .byte 197,177,108,194 // vpunpcklqdq %xmm2,%xmm9,%xmm0
10261 .byte 196,226,125,19,192 // vcvtph2ps %xmm0,%ymm0
10262 .byte 197,177,109,202 // vpunpckhqdq %xmm2,%xmm9,%xmm1
10263 .byte 196,226,125,19,201 // vcvtph2ps %xmm1,%ymm1
10264 .byte 197,185,108,211 // vpunpcklqdq %xmm3,%xmm8,%xmm2
10265 .byte 196,226,125,19,210 // vcvtph2ps %xmm2,%ymm2
10266 .byte 197,185,109,219 // vpunpckhqdq %xmm3,%xmm8,%xmm3
10267 .byte 196,226,125,19,219 // vcvtph2ps %xmm3,%ymm3
10268 .byte 72,173 // lods %ds:(%rsi),%rax
10269 .byte 255,224 // jmpq *%rax
10270
Mike Klein7c4af542017-03-29 18:21:14 -040010271HIDDEN _sk_store_f16_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010272.globl _sk_store_f16_hsw
Mike Klein86714282017-04-13 17:37:38 -040010273FUNCTION(_sk_store_f16_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010274_sk_store_f16_hsw:
10275 .byte 72,173 // lods %ds:(%rsi),%rax
10276 .byte 72,139,0 // mov (%rax),%rax
10277 .byte 196,195,125,29,192,4 // vcvtps2ph $0x4,%ymm0,%xmm8
10278 .byte 196,195,125,29,201,4 // vcvtps2ph $0x4,%ymm1,%xmm9
10279 .byte 196,195,125,29,210,4 // vcvtps2ph $0x4,%ymm2,%xmm10
10280 .byte 196,195,125,29,219,4 // vcvtps2ph $0x4,%ymm3,%xmm11
10281 .byte 196,65,57,97,225 // vpunpcklwd %xmm9,%xmm8,%xmm12
10282 .byte 196,65,57,105,193 // vpunpckhwd %xmm9,%xmm8,%xmm8
10283 .byte 196,65,41,97,203 // vpunpcklwd %xmm11,%xmm10,%xmm9
10284 .byte 196,65,41,105,235 // vpunpckhwd %xmm11,%xmm10,%xmm13
10285 .byte 196,65,25,98,217 // vpunpckldq %xmm9,%xmm12,%xmm11
10286 .byte 196,65,25,106,209 // vpunpckhdq %xmm9,%xmm12,%xmm10
10287 .byte 196,65,57,98,205 // vpunpckldq %xmm13,%xmm8,%xmm9
10288 .byte 196,65,57,106,197 // vpunpckhdq %xmm13,%xmm8,%xmm8
10289 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010290 .byte 117,27 // jne 2e39 <_sk_store_f16_hsw+0x65>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010291 .byte 197,120,17,28,248 // vmovups %xmm11,(%rax,%rdi,8)
10292 .byte 197,120,17,84,248,16 // vmovups %xmm10,0x10(%rax,%rdi,8)
10293 .byte 197,120,17,76,248,32 // vmovups %xmm9,0x20(%rax,%rdi,8)
10294 .byte 197,122,127,68,248,48 // vmovdqu %xmm8,0x30(%rax,%rdi,8)
10295 .byte 72,173 // lods %ds:(%rsi),%rax
10296 .byte 255,224 // jmpq *%rax
10297 .byte 197,121,214,28,248 // vmovq %xmm11,(%rax,%rdi,8)
10298 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010299 .byte 116,241 // je 2e35 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010300 .byte 197,121,23,92,248,8 // vmovhpd %xmm11,0x8(%rax,%rdi,8)
10301 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010302 .byte 114,229 // jb 2e35 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010303 .byte 197,121,214,84,248,16 // vmovq %xmm10,0x10(%rax,%rdi,8)
Mike Kleinb3665f02017-05-01 14:56:04 -040010304 .byte 116,221 // je 2e35 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010305 .byte 197,121,23,84,248,24 // vmovhpd %xmm10,0x18(%rax,%rdi,8)
10306 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010307 .byte 114,209 // jb 2e35 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010308 .byte 197,121,214,76,248,32 // vmovq %xmm9,0x20(%rax,%rdi,8)
Mike Kleinb3665f02017-05-01 14:56:04 -040010309 .byte 116,201 // je 2e35 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010310 .byte 197,121,23,76,248,40 // vmovhpd %xmm9,0x28(%rax,%rdi,8)
10311 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010312 .byte 114,189 // jb 2e35 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010313 .byte 197,121,214,68,248,48 // vmovq %xmm8,0x30(%rax,%rdi,8)
Mike Kleinb3665f02017-05-01 14:56:04 -040010314 .byte 235,181 // jmp 2e35 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010315
Mike Klein3146bb92017-04-05 14:45:02 -040010316HIDDEN _sk_load_u16_be_hsw
10317.globl _sk_load_u16_be_hsw
Mike Klein86714282017-04-13 17:37:38 -040010318FUNCTION(_sk_load_u16_be_hsw)
Mike Klein3146bb92017-04-05 14:45:02 -040010319_sk_load_u16_be_hsw:
10320 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3821732017-04-17 10:58:05 -040010321 .byte 76,139,0 // mov (%rax),%r8
10322 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
Mike Klein3146bb92017-04-05 14:45:02 -040010323 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010324 .byte 15,133,204,0,0,0 // jne 2f62 <_sk_load_u16_be_hsw+0xe2>
Mike Kleinb3821732017-04-17 10:58:05 -040010325 .byte 196,65,121,16,4,64 // vmovupd (%r8,%rax,2),%xmm8
10326 .byte 196,193,121,16,84,64,16 // vmovupd 0x10(%r8,%rax,2),%xmm2
10327 .byte 196,193,121,16,92,64,32 // vmovupd 0x20(%r8,%rax,2),%xmm3
10328 .byte 196,65,122,111,76,64,48 // vmovdqu 0x30(%r8,%rax,2),%xmm9
Mike Klein3146bb92017-04-05 14:45:02 -040010329 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
10330 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
10331 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
10332 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
10333 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
10334 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
10335 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
10336 .byte 197,113,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm11
Mike Klein3146bb92017-04-05 14:45:02 -040010337 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
10338 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
10339 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
10340 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
10341 .byte 196,226,125,51,192 // vpmovzxwd %xmm0,%ymm0
10342 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -040010343 .byte 196,98,125,24,21,29,17,0,0 // vbroadcastss 0x111d(%rip),%ymm10 # 4014 <_sk_callback_hsw+0x3d1>
Mike Kleinfe560a82017-05-01 12:56:35 -040010344 .byte 196,193,124,89,194 // vmulps %ymm10,%ymm0,%ymm0
Mike Klein3146bb92017-04-05 14:45:02 -040010345 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
10346 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
10347 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
10348 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
10349 .byte 196,226,125,51,201 // vpmovzxwd %xmm1,%ymm1
10350 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040010351 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
Mike Klein3146bb92017-04-05 14:45:02 -040010352 .byte 196,193,49,108,211 // vpunpcklqdq %xmm11,%xmm9,%xmm2
10353 .byte 197,225,113,242,8 // vpsllw $0x8,%xmm2,%xmm3
10354 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
10355 .byte 197,225,235,210 // vpor %xmm2,%xmm3,%xmm2
10356 .byte 196,226,125,51,210 // vpmovzxwd %xmm2,%ymm2
10357 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040010358 .byte 196,193,108,89,210 // vmulps %ymm10,%ymm2,%ymm2
Mike Klein3146bb92017-04-05 14:45:02 -040010359 .byte 196,193,49,109,219 // vpunpckhqdq %xmm11,%xmm9,%xmm3
10360 .byte 197,185,113,243,8 // vpsllw $0x8,%xmm3,%xmm8
10361 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
10362 .byte 197,185,235,219 // vpor %xmm3,%xmm8,%xmm3
10363 .byte 196,226,125,51,219 // vpmovzxwd %xmm3,%ymm3
10364 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040010365 .byte 196,193,100,89,218 // vmulps %ymm10,%ymm3,%ymm3
Mike Klein3146bb92017-04-05 14:45:02 -040010366 .byte 72,173 // lods %ds:(%rsi),%rax
10367 .byte 255,224 // jmpq *%rax
Mike Kleinb3821732017-04-17 10:58:05 -040010368 .byte 196,65,123,16,4,64 // vmovsd (%r8,%rax,2),%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040010369 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
10370 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010371 .byte 116,85 // je 2fc8 <_sk_load_u16_be_hsw+0x148>
Mike Kleinb3821732017-04-17 10:58:05 -040010372 .byte 196,65,57,22,68,64,8 // vmovhpd 0x8(%r8,%rax,2),%xmm8,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040010373 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010374 .byte 114,72 // jb 2fc8 <_sk_load_u16_be_hsw+0x148>
Mike Kleinb3821732017-04-17 10:58:05 -040010375 .byte 196,193,123,16,84,64,16 // vmovsd 0x10(%r8,%rax,2),%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040010376 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010377 .byte 116,72 // je 2fd5 <_sk_load_u16_be_hsw+0x155>
Mike Kleinb3821732017-04-17 10:58:05 -040010378 .byte 196,193,105,22,84,64,24 // vmovhpd 0x18(%r8,%rax,2),%xmm2,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040010379 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010380 .byte 114,59 // jb 2fd5 <_sk_load_u16_be_hsw+0x155>
Mike Kleinb3821732017-04-17 10:58:05 -040010381 .byte 196,193,123,16,92,64,32 // vmovsd 0x20(%r8,%rax,2),%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040010382 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010383 .byte 15,132,6,255,255,255 // je 2eb1 <_sk_load_u16_be_hsw+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040010384 .byte 196,193,97,22,92,64,40 // vmovhpd 0x28(%r8,%rax,2),%xmm3,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040010385 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010386 .byte 15,130,245,254,255,255 // jb 2eb1 <_sk_load_u16_be_hsw+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040010387 .byte 196,65,122,126,76,64,48 // vmovq 0x30(%r8,%rax,2),%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040010388 .byte 233,233,254,255,255 // jmpq 2eb1 <_sk_load_u16_be_hsw+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040010389 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
10390 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040010391 .byte 233,220,254,255,255 // jmpq 2eb1 <_sk_load_u16_be_hsw+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040010392 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040010393 .byte 233,211,254,255,255 // jmpq 2eb1 <_sk_load_u16_be_hsw+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040010394
10395HIDDEN _sk_load_rgb_u16_be_hsw
10396.globl _sk_load_rgb_u16_be_hsw
10397FUNCTION(_sk_load_rgb_u16_be_hsw)
10398_sk_load_rgb_u16_be_hsw:
10399 .byte 72,173 // lods %ds:(%rsi),%rax
10400 .byte 76,139,0 // mov (%rax),%r8
10401 .byte 72,141,4,127 // lea (%rdi,%rdi,2),%rax
10402 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010403 .byte 15,133,204,0,0,0 // jne 30bc <_sk_load_rgb_u16_be_hsw+0xde>
Mike Kleinb3821732017-04-17 10:58:05 -040010404 .byte 196,193,122,111,4,64 // vmovdqu (%r8,%rax,2),%xmm0
10405 .byte 196,193,122,111,84,64,12 // vmovdqu 0xc(%r8,%rax,2),%xmm2
10406 .byte 196,193,122,111,76,64,24 // vmovdqu 0x18(%r8,%rax,2),%xmm1
10407 .byte 196,193,122,111,92,64,32 // vmovdqu 0x20(%r8,%rax,2),%xmm3
10408 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
10409 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
10410 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
10411 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
10412 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
10413 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
10414 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
10415 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
10416 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
10417 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
10418 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
10419 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
10420 .byte 197,241,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm3
Mike Kleinb3821732017-04-17 10:58:05 -040010421 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
10422 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
10423 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
10424 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
10425 .byte 196,226,125,51,192 // vpmovzxwd %xmm0,%ymm0
10426 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -040010427 .byte 196,98,125,24,21,174,15,0,0 // vbroadcastss 0xfae(%rip),%ymm10 # 4018 <_sk_callback_hsw+0x3d5>
Mike Kleinfe560a82017-05-01 12:56:35 -040010428 .byte 196,193,124,89,194 // vmulps %ymm10,%ymm0,%ymm0
Mike Kleinb3821732017-04-17 10:58:05 -040010429 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
10430 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
10431 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
10432 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
10433 .byte 196,226,125,51,201 // vpmovzxwd %xmm1,%ymm1
10434 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040010435 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
Mike Kleinb3821732017-04-17 10:58:05 -040010436 .byte 197,177,108,211 // vpunpcklqdq %xmm3,%xmm9,%xmm2
10437 .byte 197,225,113,242,8 // vpsllw $0x8,%xmm2,%xmm3
10438 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
10439 .byte 197,225,235,210 // vpor %xmm2,%xmm3,%xmm2
10440 .byte 196,226,125,51,210 // vpmovzxwd %xmm2,%ymm2
10441 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040010442 .byte 196,193,108,89,210 // vmulps %ymm10,%ymm2,%ymm2
Mike Kleinb3821732017-04-17 10:58:05 -040010443 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040010444 .byte 196,226,125,24,29,98,15,0,0 // vbroadcastss 0xf62(%rip),%ymm3 # 401c <_sk_callback_hsw+0x3d9>
Mike Kleinb3821732017-04-17 10:58:05 -040010445 .byte 255,224 // jmpq *%rax
10446 .byte 196,193,121,110,4,64 // vmovd (%r8,%rax,2),%xmm0
10447 .byte 196,193,121,196,68,64,4,2 // vpinsrw $0x2,0x4(%r8,%rax,2),%xmm0,%xmm0
10448 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010449 .byte 117,5 // jne 30d5 <_sk_load_rgb_u16_be_hsw+0xf7>
10450 .byte 233,79,255,255,255 // jmpq 3024 <_sk_load_rgb_u16_be_hsw+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040010451 .byte 196,193,121,110,76,64,6 // vmovd 0x6(%r8,%rax,2),%xmm1
10452 .byte 196,65,113,196,68,64,10,2 // vpinsrw $0x2,0xa(%r8,%rax,2),%xmm1,%xmm8
10453 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010454 .byte 114,26 // jb 3104 <_sk_load_rgb_u16_be_hsw+0x126>
Mike Kleinb3821732017-04-17 10:58:05 -040010455 .byte 196,193,121,110,76,64,12 // vmovd 0xc(%r8,%rax,2),%xmm1
10456 .byte 196,193,113,196,84,64,16,2 // vpinsrw $0x2,0x10(%r8,%rax,2),%xmm1,%xmm2
10457 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010458 .byte 117,10 // jne 3109 <_sk_load_rgb_u16_be_hsw+0x12b>
10459 .byte 233,32,255,255,255 // jmpq 3024 <_sk_load_rgb_u16_be_hsw+0x46>
10460 .byte 233,27,255,255,255 // jmpq 3024 <_sk_load_rgb_u16_be_hsw+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040010461 .byte 196,193,121,110,76,64,18 // vmovd 0x12(%r8,%rax,2),%xmm1
10462 .byte 196,65,113,196,76,64,22,2 // vpinsrw $0x2,0x16(%r8,%rax,2),%xmm1,%xmm9
10463 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010464 .byte 114,26 // jb 3138 <_sk_load_rgb_u16_be_hsw+0x15a>
Mike Kleinb3821732017-04-17 10:58:05 -040010465 .byte 196,193,121,110,76,64,24 // vmovd 0x18(%r8,%rax,2),%xmm1
10466 .byte 196,193,113,196,76,64,28,2 // vpinsrw $0x2,0x1c(%r8,%rax,2),%xmm1,%xmm1
10467 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010468 .byte 117,10 // jne 313d <_sk_load_rgb_u16_be_hsw+0x15f>
10469 .byte 233,236,254,255,255 // jmpq 3024 <_sk_load_rgb_u16_be_hsw+0x46>
10470 .byte 233,231,254,255,255 // jmpq 3024 <_sk_load_rgb_u16_be_hsw+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040010471 .byte 196,193,121,110,92,64,30 // vmovd 0x1e(%r8,%rax,2),%xmm3
10472 .byte 196,65,97,196,92,64,34,2 // vpinsrw $0x2,0x22(%r8,%rax,2),%xmm3,%xmm11
10473 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010474 .byte 114,20 // jb 3166 <_sk_load_rgb_u16_be_hsw+0x188>
Mike Kleinb3821732017-04-17 10:58:05 -040010475 .byte 196,193,121,110,92,64,36 // vmovd 0x24(%r8,%rax,2),%xmm3
10476 .byte 196,193,97,196,92,64,40,2 // vpinsrw $0x2,0x28(%r8,%rax,2),%xmm3,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040010477 .byte 233,190,254,255,255 // jmpq 3024 <_sk_load_rgb_u16_be_hsw+0x46>
10478 .byte 233,185,254,255,255 // jmpq 3024 <_sk_load_rgb_u16_be_hsw+0x46>
Mike Klein3146bb92017-04-05 14:45:02 -040010479
10480HIDDEN _sk_store_u16_be_hsw
10481.globl _sk_store_u16_be_hsw
Mike Klein86714282017-04-13 17:37:38 -040010482FUNCTION(_sk_store_u16_be_hsw)
Mike Klein3146bb92017-04-05 14:45:02 -040010483_sk_store_u16_be_hsw:
10484 .byte 72,173 // lods %ds:(%rsi),%rax
10485 .byte 76,139,0 // mov (%rax),%r8
Mike Kleinfe560a82017-05-01 12:56:35 -040010486 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040010487 .byte 196,98,125,24,5,159,14,0,0 // vbroadcastss 0xe9f(%rip),%ymm8 # 4020 <_sk_callback_hsw+0x3dd>
Mike Kleinfe560a82017-05-01 12:56:35 -040010488 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Klein3146bb92017-04-05 14:45:02 -040010489 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
10490 .byte 196,67,125,25,202,1 // vextractf128 $0x1,%ymm9,%xmm10
10491 .byte 196,66,49,43,202 // vpackusdw %xmm10,%xmm9,%xmm9
10492 .byte 196,193,41,113,241,8 // vpsllw $0x8,%xmm9,%xmm10
10493 .byte 196,193,49,113,209,8 // vpsrlw $0x8,%xmm9,%xmm9
10494 .byte 196,65,41,235,201 // vpor %xmm9,%xmm10,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040010495 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Klein3146bb92017-04-05 14:45:02 -040010496 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
10497 .byte 196,67,125,25,211,1 // vextractf128 $0x1,%ymm10,%xmm11
10498 .byte 196,66,41,43,211 // vpackusdw %xmm11,%xmm10,%xmm10
10499 .byte 196,193,33,113,242,8 // vpsllw $0x8,%xmm10,%xmm11
10500 .byte 196,193,41,113,210,8 // vpsrlw $0x8,%xmm10,%xmm10
10501 .byte 196,65,33,235,210 // vpor %xmm10,%xmm11,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040010502 .byte 196,65,108,89,216 // vmulps %ymm8,%ymm2,%ymm11
Mike Klein3146bb92017-04-05 14:45:02 -040010503 .byte 196,65,125,91,219 // vcvtps2dq %ymm11,%ymm11
10504 .byte 196,67,125,25,220,1 // vextractf128 $0x1,%ymm11,%xmm12
10505 .byte 196,66,33,43,220 // vpackusdw %xmm12,%xmm11,%xmm11
10506 .byte 196,193,25,113,243,8 // vpsllw $0x8,%xmm11,%xmm12
10507 .byte 196,193,33,113,211,8 // vpsrlw $0x8,%xmm11,%xmm11
10508 .byte 196,65,25,235,219 // vpor %xmm11,%xmm12,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040010509 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Klein3146bb92017-04-05 14:45:02 -040010510 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
10511 .byte 196,67,125,25,196,1 // vextractf128 $0x1,%ymm8,%xmm12
10512 .byte 196,66,57,43,196 // vpackusdw %xmm12,%xmm8,%xmm8
10513 .byte 196,193,25,113,240,8 // vpsllw $0x8,%xmm8,%xmm12
10514 .byte 196,193,57,113,208,8 // vpsrlw $0x8,%xmm8,%xmm8
10515 .byte 196,65,25,235,192 // vpor %xmm8,%xmm12,%xmm8
10516 .byte 196,65,49,97,226 // vpunpcklwd %xmm10,%xmm9,%xmm12
10517 .byte 196,65,49,105,234 // vpunpckhwd %xmm10,%xmm9,%xmm13
10518 .byte 196,65,33,97,200 // vpunpcklwd %xmm8,%xmm11,%xmm9
10519 .byte 196,65,33,105,192 // vpunpckhwd %xmm8,%xmm11,%xmm8
10520 .byte 196,65,25,98,217 // vpunpckldq %xmm9,%xmm12,%xmm11
10521 .byte 196,65,25,106,209 // vpunpckhdq %xmm9,%xmm12,%xmm10
10522 .byte 196,65,17,98,200 // vpunpckldq %xmm8,%xmm13,%xmm9
10523 .byte 196,65,17,106,192 // vpunpckhdq %xmm8,%xmm13,%xmm8
10524 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010525 .byte 117,31 // jne 3265 <_sk_store_u16_be_hsw+0xfa>
Mike Kleinfe560a82017-05-01 12:56:35 -040010526 .byte 196,65,120,17,28,64 // vmovups %xmm11,(%r8,%rax,2)
10527 .byte 196,65,120,17,84,64,16 // vmovups %xmm10,0x10(%r8,%rax,2)
10528 .byte 196,65,120,17,76,64,32 // vmovups %xmm9,0x20(%r8,%rax,2)
10529 .byte 196,65,122,127,68,64,48 // vmovdqu %xmm8,0x30(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040010530 .byte 72,173 // lods %ds:(%rsi),%rax
10531 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040010532 .byte 196,65,121,214,28,64 // vmovq %xmm11,(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040010533 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010534 .byte 116,240 // je 3261 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040010535 .byte 196,65,121,23,92,64,8 // vmovhpd %xmm11,0x8(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040010536 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010537 .byte 114,227 // jb 3261 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040010538 .byte 196,65,121,214,84,64,16 // vmovq %xmm10,0x10(%r8,%rax,2)
Mike Kleinb3665f02017-05-01 14:56:04 -040010539 .byte 116,218 // je 3261 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040010540 .byte 196,65,121,23,84,64,24 // vmovhpd %xmm10,0x18(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040010541 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010542 .byte 114,205 // jb 3261 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040010543 .byte 196,65,121,214,76,64,32 // vmovq %xmm9,0x20(%r8,%rax,2)
Mike Kleinb3665f02017-05-01 14:56:04 -040010544 .byte 116,196 // je 3261 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040010545 .byte 196,65,121,23,76,64,40 // vmovhpd %xmm9,0x28(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040010546 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010547 .byte 114,183 // jb 3261 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040010548 .byte 196,65,121,214,68,64,48 // vmovq %xmm8,0x30(%r8,%rax,2)
Mike Kleinb3665f02017-05-01 14:56:04 -040010549 .byte 235,174 // jmp 3261 <_sk_store_u16_be_hsw+0xf6>
Mike Klein3146bb92017-04-05 14:45:02 -040010550
Mike Klein14987eb2017-04-06 10:22:26 -040010551HIDDEN _sk_load_f32_hsw
10552.globl _sk_load_f32_hsw
Mike Klein86714282017-04-13 17:37:38 -040010553FUNCTION(_sk_load_f32_hsw)
Mike Klein14987eb2017-04-06 10:22:26 -040010554_sk_load_f32_hsw:
10555 .byte 72,173 // lods %ds:(%rsi),%rax
10556 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010557 .byte 119,110 // ja 3329 <_sk_load_f32_hsw+0x76>
Mike Klein14987eb2017-04-06 10:22:26 -040010558 .byte 76,139,0 // mov (%rax),%r8
10559 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
Mike Kleinb3665f02017-05-01 14:56:04 -040010560 .byte 76,141,21,135,0,0,0 // lea 0x87(%rip),%r10 # 3354 <_sk_load_f32_hsw+0xa1>
Mike Klein14987eb2017-04-06 10:22:26 -040010561 .byte 73,99,4,138 // movslq (%r10,%rcx,4),%rax
10562 .byte 76,1,208 // add %r10,%rax
10563 .byte 255,224 // jmpq *%rax
10564 .byte 196,3,125,24,68,136,112,1 // vinsertf128 $0x1,0x70(%r8,%r9,4),%ymm0,%ymm8
10565 .byte 196,131,125,24,92,136,96,1 // vinsertf128 $0x1,0x60(%r8,%r9,4),%ymm0,%ymm3
10566 .byte 196,131,125,24,76,136,80,1 // vinsertf128 $0x1,0x50(%r8,%r9,4),%ymm0,%ymm1
10567 .byte 196,131,125,24,84,136,64,1 // vinsertf128 $0x1,0x40(%r8,%r9,4),%ymm0,%ymm2
10568 .byte 196,129,121,16,68,136,48 // vmovupd 0x30(%r8,%r9,4),%xmm0
10569 .byte 196,195,125,13,192,12 // vblendpd $0xc,%ymm8,%ymm0,%ymm0
10570 .byte 196,1,121,16,68,136,32 // vmovupd 0x20(%r8,%r9,4),%xmm8
10571 .byte 196,99,61,13,203,12 // vblendpd $0xc,%ymm3,%ymm8,%ymm9
10572 .byte 196,129,121,16,92,136,16 // vmovupd 0x10(%r8,%r9,4),%xmm3
10573 .byte 196,99,101,13,209,12 // vblendpd $0xc,%ymm1,%ymm3,%ymm10
10574 .byte 196,129,121,16,12,136 // vmovupd (%r8,%r9,4),%xmm1
10575 .byte 196,227,117,13,202,12 // vblendpd $0xc,%ymm2,%ymm1,%ymm1
10576 .byte 196,193,116,20,210 // vunpcklps %ymm10,%ymm1,%ymm2
10577 .byte 196,193,116,21,218 // vunpckhps %ymm10,%ymm1,%ymm3
10578 .byte 197,180,20,200 // vunpcklps %ymm0,%ymm9,%ymm1
10579 .byte 197,52,21,192 // vunpckhps %ymm0,%ymm9,%ymm8
10580 .byte 197,237,20,193 // vunpcklpd %ymm1,%ymm2,%ymm0
10581 .byte 197,237,21,201 // vunpckhpd %ymm1,%ymm2,%ymm1
10582 .byte 196,193,101,20,208 // vunpcklpd %ymm8,%ymm3,%ymm2
10583 .byte 196,193,101,21,216 // vunpckhpd %ymm8,%ymm3,%ymm3
10584 .byte 72,173 // lods %ds:(%rsi),%rax
10585 .byte 255,224 // jmpq *%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040010586 .byte 15,31,0 // nopl (%rax)
10587 .byte 130 // (bad)
10588 .byte 255 // (bad)
10589 .byte 255 // (bad)
10590 .byte 255,201 // dec %ecx
Mike Klein14987eb2017-04-06 10:22:26 -040010591 .byte 255 // (bad)
10592 .byte 255 // (bad)
10593 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040010594 .byte 188,255,255,255,175 // mov $0xafffffff,%esp
Mike Klein14987eb2017-04-06 10:22:26 -040010595 .byte 255 // (bad)
10596 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040010597 .byte 255,162,255,255,255,154 // jmpq *-0x65000001(%rdx)
Mike Klein14987eb2017-04-06 10:22:26 -040010598 .byte 255 // (bad)
Mike Kleinb3821732017-04-17 10:58:05 -040010599 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040010600 .byte 255,146,255,255,255,138 // callq *-0x75000001(%rdx)
Mike Kleinb3821732017-04-17 10:58:05 -040010601 .byte 255 // (bad)
Mike Klein14987eb2017-04-06 10:22:26 -040010602 .byte 255 // (bad)
10603 .byte 255 // .byte 0xff
10604
Mike Klein7c4af542017-03-29 18:21:14 -040010605HIDDEN _sk_store_f32_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010606.globl _sk_store_f32_hsw
Mike Klein86714282017-04-13 17:37:38 -040010607FUNCTION(_sk_store_f32_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010608_sk_store_f32_hsw:
10609 .byte 72,173 // lods %ds:(%rsi),%rax
10610 .byte 76,139,0 // mov (%rax),%r8
10611 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
10612 .byte 197,124,20,193 // vunpcklps %ymm1,%ymm0,%ymm8
10613 .byte 197,124,21,217 // vunpckhps %ymm1,%ymm0,%ymm11
10614 .byte 197,108,20,203 // vunpcklps %ymm3,%ymm2,%ymm9
10615 .byte 197,108,21,227 // vunpckhps %ymm3,%ymm2,%ymm12
10616 .byte 196,65,61,20,209 // vunpcklpd %ymm9,%ymm8,%ymm10
10617 .byte 196,65,61,21,201 // vunpckhpd %ymm9,%ymm8,%ymm9
10618 .byte 196,65,37,20,196 // vunpcklpd %ymm12,%ymm11,%ymm8
10619 .byte 196,65,37,21,220 // vunpckhpd %ymm12,%ymm11,%ymm11
10620 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010621 .byte 117,55 // jne 33e1 <_sk_store_f32_hsw+0x6d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010622 .byte 196,67,45,24,225,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm12
10623 .byte 196,67,61,24,235,1 // vinsertf128 $0x1,%xmm11,%ymm8,%ymm13
10624 .byte 196,67,45,6,201,49 // vperm2f128 $0x31,%ymm9,%ymm10,%ymm9
10625 .byte 196,67,61,6,195,49 // vperm2f128 $0x31,%ymm11,%ymm8,%ymm8
10626 .byte 196,65,125,17,36,128 // vmovupd %ymm12,(%r8,%rax,4)
10627 .byte 196,65,125,17,108,128,32 // vmovupd %ymm13,0x20(%r8,%rax,4)
10628 .byte 196,65,125,17,76,128,64 // vmovupd %ymm9,0x40(%r8,%rax,4)
10629 .byte 196,65,125,17,68,128,96 // vmovupd %ymm8,0x60(%r8,%rax,4)
10630 .byte 72,173 // lods %ds:(%rsi),%rax
10631 .byte 255,224 // jmpq *%rax
10632 .byte 196,65,121,17,20,128 // vmovupd %xmm10,(%r8,%rax,4)
10633 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010634 .byte 116,240 // je 33dd <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010635 .byte 196,65,121,17,76,128,16 // vmovupd %xmm9,0x10(%r8,%rax,4)
10636 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010637 .byte 114,227 // jb 33dd <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010638 .byte 196,65,121,17,68,128,32 // vmovupd %xmm8,0x20(%r8,%rax,4)
Mike Kleinb3665f02017-05-01 14:56:04 -040010639 .byte 116,218 // je 33dd <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010640 .byte 196,65,121,17,92,128,48 // vmovupd %xmm11,0x30(%r8,%rax,4)
10641 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010642 .byte 114,205 // jb 33dd <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010643 .byte 196,67,125,25,84,128,64,1 // vextractf128 $0x1,%ymm10,0x40(%r8,%rax,4)
Mike Kleinb3665f02017-05-01 14:56:04 -040010644 .byte 116,195 // je 33dd <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010645 .byte 196,67,125,25,76,128,80,1 // vextractf128 $0x1,%ymm9,0x50(%r8,%rax,4)
10646 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040010647 .byte 114,181 // jb 33dd <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010648 .byte 196,67,125,25,68,128,96,1 // vextractf128 $0x1,%ymm8,0x60(%r8,%rax,4)
Mike Kleinb3665f02017-05-01 14:56:04 -040010649 .byte 235,171 // jmp 33dd <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010650
Mike Klein7c4af542017-03-29 18:21:14 -040010651HIDDEN _sk_clamp_x_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010652.globl _sk_clamp_x_hsw
Mike Klein86714282017-04-13 17:37:38 -040010653FUNCTION(_sk_clamp_x_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010654_sk_clamp_x_hsw:
10655 .byte 72,173 // lods %ds:(%rsi),%rax
10656 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
10657 .byte 197,188,95,192 // vmaxps %ymm0,%ymm8,%ymm0
10658 .byte 196,98,125,88,0 // vpbroadcastd (%rax),%ymm8
10659 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
10660 .byte 196,65,61,254,193 // vpaddd %ymm9,%ymm8,%ymm8
10661 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
10662 .byte 72,173 // lods %ds:(%rsi),%rax
10663 .byte 255,224 // jmpq *%rax
10664
Mike Klein7c4af542017-03-29 18:21:14 -040010665HIDDEN _sk_clamp_y_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010666.globl _sk_clamp_y_hsw
Mike Klein86714282017-04-13 17:37:38 -040010667FUNCTION(_sk_clamp_y_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010668_sk_clamp_y_hsw:
10669 .byte 72,173 // lods %ds:(%rsi),%rax
10670 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
10671 .byte 197,188,95,201 // vmaxps %ymm1,%ymm8,%ymm1
10672 .byte 196,98,125,88,0 // vpbroadcastd (%rax),%ymm8
10673 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
10674 .byte 196,65,61,254,193 // vpaddd %ymm9,%ymm8,%ymm8
10675 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
10676 .byte 72,173 // lods %ds:(%rsi),%rax
10677 .byte 255,224 // jmpq *%rax
10678
Mike Klein7c4af542017-03-29 18:21:14 -040010679HIDDEN _sk_repeat_x_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010680.globl _sk_repeat_x_hsw
Mike Klein86714282017-04-13 17:37:38 -040010681FUNCTION(_sk_repeat_x_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010682_sk_repeat_x_hsw:
10683 .byte 72,173 // lods %ds:(%rsi),%rax
10684 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
10685 .byte 196,65,124,94,200 // vdivps %ymm8,%ymm0,%ymm9
10686 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
10687 .byte 196,98,61,172,200 // vfnmadd213ps %ymm0,%ymm8,%ymm9
10688 .byte 197,253,118,192 // vpcmpeqd %ymm0,%ymm0,%ymm0
10689 .byte 197,189,254,192 // vpaddd %ymm0,%ymm8,%ymm0
10690 .byte 197,180,93,192 // vminps %ymm0,%ymm9,%ymm0
10691 .byte 72,173 // lods %ds:(%rsi),%rax
10692 .byte 255,224 // jmpq *%rax
10693
Mike Klein7c4af542017-03-29 18:21:14 -040010694HIDDEN _sk_repeat_y_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010695.globl _sk_repeat_y_hsw
Mike Klein86714282017-04-13 17:37:38 -040010696FUNCTION(_sk_repeat_y_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010697_sk_repeat_y_hsw:
10698 .byte 72,173 // lods %ds:(%rsi),%rax
10699 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
10700 .byte 196,65,116,94,200 // vdivps %ymm8,%ymm1,%ymm9
10701 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
10702 .byte 196,98,61,172,201 // vfnmadd213ps %ymm1,%ymm8,%ymm9
10703 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
10704 .byte 197,189,254,201 // vpaddd %ymm1,%ymm8,%ymm1
10705 .byte 197,180,93,201 // vminps %ymm1,%ymm9,%ymm1
10706 .byte 72,173 // lods %ds:(%rsi),%rax
10707 .byte 255,224 // jmpq *%rax
10708
Mike Klein7c4af542017-03-29 18:21:14 -040010709HIDDEN _sk_mirror_x_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010710.globl _sk_mirror_x_hsw
Mike Klein86714282017-04-13 17:37:38 -040010711FUNCTION(_sk_mirror_x_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010712_sk_mirror_x_hsw:
10713 .byte 72,173 // lods %ds:(%rsi),%rax
10714 .byte 197,122,16,0 // vmovss (%rax),%xmm8
10715 .byte 196,66,125,24,200 // vbroadcastss %xmm8,%ymm9
10716 .byte 196,65,124,92,209 // vsubps %ymm9,%ymm0,%ymm10
10717 .byte 196,193,58,88,192 // vaddss %xmm8,%xmm8,%xmm0
10718 .byte 196,226,125,24,192 // vbroadcastss %xmm0,%ymm0
10719 .byte 197,44,94,192 // vdivps %ymm0,%ymm10,%ymm8
10720 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
10721 .byte 196,66,125,172,194 // vfnmadd213ps %ymm10,%ymm0,%ymm8
10722 .byte 196,193,60,92,193 // vsubps %ymm9,%ymm8,%ymm0
10723 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
10724 .byte 197,60,92,192 // vsubps %ymm0,%ymm8,%ymm8
10725 .byte 197,188,84,192 // vandps %ymm0,%ymm8,%ymm0
10726 .byte 196,65,61,118,192 // vpcmpeqd %ymm8,%ymm8,%ymm8
10727 .byte 196,65,53,254,192 // vpaddd %ymm8,%ymm9,%ymm8
10728 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
10729 .byte 72,173 // lods %ds:(%rsi),%rax
10730 .byte 255,224 // jmpq *%rax
10731
Mike Klein7c4af542017-03-29 18:21:14 -040010732HIDDEN _sk_mirror_y_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010733.globl _sk_mirror_y_hsw
Mike Klein86714282017-04-13 17:37:38 -040010734FUNCTION(_sk_mirror_y_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010735_sk_mirror_y_hsw:
10736 .byte 72,173 // lods %ds:(%rsi),%rax
10737 .byte 197,122,16,0 // vmovss (%rax),%xmm8
10738 .byte 196,66,125,24,200 // vbroadcastss %xmm8,%ymm9
10739 .byte 196,65,116,92,209 // vsubps %ymm9,%ymm1,%ymm10
10740 .byte 196,193,58,88,200 // vaddss %xmm8,%xmm8,%xmm1
10741 .byte 196,226,125,24,201 // vbroadcastss %xmm1,%ymm1
10742 .byte 197,44,94,193 // vdivps %ymm1,%ymm10,%ymm8
10743 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
10744 .byte 196,66,117,172,194 // vfnmadd213ps %ymm10,%ymm1,%ymm8
10745 .byte 196,193,60,92,201 // vsubps %ymm9,%ymm8,%ymm1
10746 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
10747 .byte 197,60,92,193 // vsubps %ymm1,%ymm8,%ymm8
10748 .byte 197,188,84,201 // vandps %ymm1,%ymm8,%ymm1
10749 .byte 196,65,61,118,192 // vpcmpeqd %ymm8,%ymm8,%ymm8
10750 .byte 196,65,53,254,192 // vpaddd %ymm8,%ymm9,%ymm8
10751 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
10752 .byte 72,173 // lods %ds:(%rsi),%rax
10753 .byte 255,224 // jmpq *%rax
10754
Mike Klein7c4af542017-03-29 18:21:14 -040010755HIDDEN _sk_luminance_to_alpha_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010756.globl _sk_luminance_to_alpha_hsw
Mike Klein86714282017-04-13 17:37:38 -040010757FUNCTION(_sk_luminance_to_alpha_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010758_sk_luminance_to_alpha_hsw:
Mike Kleinb3665f02017-05-01 14:56:04 -040010759 .byte 196,226,125,24,29,185,10,0,0 // vbroadcastss 0xab9(%rip),%ymm3 # 4024 <_sk_callback_hsw+0x3e1>
10760 .byte 196,98,125,24,5,180,10,0,0 // vbroadcastss 0xab4(%rip),%ymm8 # 4028 <_sk_callback_hsw+0x3e5>
Mike Kleinfe560a82017-05-01 12:56:35 -040010761 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
10762 .byte 196,226,125,184,203 // vfmadd231ps %ymm3,%ymm0,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -040010763 .byte 196,226,125,24,29,165,10,0,0 // vbroadcastss 0xaa5(%rip),%ymm3 # 402c <_sk_callback_hsw+0x3e9>
Mike Kleinfe560a82017-05-01 12:56:35 -040010764 .byte 196,226,109,168,217 // vfmadd213ps %ymm1,%ymm2,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040010765 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040010766 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040010767 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
10768 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
10769 .byte 255,224 // jmpq *%rax
10770
Mike Klein7c4af542017-03-29 18:21:14 -040010771HIDDEN _sk_matrix_2x3_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010772.globl _sk_matrix_2x3_hsw
Mike Klein86714282017-04-13 17:37:38 -040010773FUNCTION(_sk_matrix_2x3_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010774_sk_matrix_2x3_hsw:
10775 .byte 72,173 // lods %ds:(%rsi),%rax
10776 .byte 196,98,125,24,8 // vbroadcastss (%rax),%ymm9
10777 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
10778 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
10779 .byte 196,66,117,184,194 // vfmadd231ps %ymm10,%ymm1,%ymm8
10780 .byte 196,66,125,184,193 // vfmadd231ps %ymm9,%ymm0,%ymm8
10781 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
10782 .byte 196,98,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm11
10783 .byte 196,98,125,24,72,20 // vbroadcastss 0x14(%rax),%ymm9
10784 .byte 196,66,117,184,203 // vfmadd231ps %ymm11,%ymm1,%ymm9
10785 .byte 196,66,125,184,202 // vfmadd231ps %ymm10,%ymm0,%ymm9
10786 .byte 72,173 // lods %ds:(%rsi),%rax
10787 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
10788 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
10789 .byte 255,224 // jmpq *%rax
10790
Mike Klein7c4af542017-03-29 18:21:14 -040010791HIDDEN _sk_matrix_3x4_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010792.globl _sk_matrix_3x4_hsw
Mike Klein86714282017-04-13 17:37:38 -040010793FUNCTION(_sk_matrix_3x4_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010794_sk_matrix_3x4_hsw:
10795 .byte 72,173 // lods %ds:(%rsi),%rax
10796 .byte 196,98,125,24,8 // vbroadcastss (%rax),%ymm9
10797 .byte 196,98,125,24,80,12 // vbroadcastss 0xc(%rax),%ymm10
10798 .byte 196,98,125,24,88,24 // vbroadcastss 0x18(%rax),%ymm11
10799 .byte 196,98,125,24,64,36 // vbroadcastss 0x24(%rax),%ymm8
10800 .byte 196,66,109,184,195 // vfmadd231ps %ymm11,%ymm2,%ymm8
10801 .byte 196,66,117,184,194 // vfmadd231ps %ymm10,%ymm1,%ymm8
10802 .byte 196,66,125,184,193 // vfmadd231ps %ymm9,%ymm0,%ymm8
10803 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
10804 .byte 196,98,125,24,88,16 // vbroadcastss 0x10(%rax),%ymm11
10805 .byte 196,98,125,24,96,28 // vbroadcastss 0x1c(%rax),%ymm12
10806 .byte 196,98,125,24,72,40 // vbroadcastss 0x28(%rax),%ymm9
10807 .byte 196,66,109,184,204 // vfmadd231ps %ymm12,%ymm2,%ymm9
10808 .byte 196,66,117,184,203 // vfmadd231ps %ymm11,%ymm1,%ymm9
10809 .byte 196,66,125,184,202 // vfmadd231ps %ymm10,%ymm0,%ymm9
10810 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
10811 .byte 196,98,125,24,96,20 // vbroadcastss 0x14(%rax),%ymm12
10812 .byte 196,98,125,24,104,32 // vbroadcastss 0x20(%rax),%ymm13
10813 .byte 196,98,125,24,80,44 // vbroadcastss 0x2c(%rax),%ymm10
10814 .byte 196,66,109,184,213 // vfmadd231ps %ymm13,%ymm2,%ymm10
10815 .byte 196,66,117,184,212 // vfmadd231ps %ymm12,%ymm1,%ymm10
10816 .byte 196,66,125,184,211 // vfmadd231ps %ymm11,%ymm0,%ymm10
10817 .byte 72,173 // lods %ds:(%rsi),%rax
10818 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
10819 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
10820 .byte 197,124,41,210 // vmovaps %ymm10,%ymm2
10821 .byte 255,224 // jmpq *%rax
10822
Mike Klein7c4af542017-03-29 18:21:14 -040010823HIDDEN _sk_matrix_4x5_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010824.globl _sk_matrix_4x5_hsw
Mike Klein86714282017-04-13 17:37:38 -040010825FUNCTION(_sk_matrix_4x5_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010826_sk_matrix_4x5_hsw:
10827 .byte 72,173 // lods %ds:(%rsi),%rax
10828 .byte 196,98,125,24,8 // vbroadcastss (%rax),%ymm9
10829 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
10830 .byte 196,98,125,24,88,32 // vbroadcastss 0x20(%rax),%ymm11
10831 .byte 196,98,125,24,96,48 // vbroadcastss 0x30(%rax),%ymm12
10832 .byte 196,98,125,24,64,64 // vbroadcastss 0x40(%rax),%ymm8
10833 .byte 196,66,101,184,196 // vfmadd231ps %ymm12,%ymm3,%ymm8
10834 .byte 196,66,109,184,195 // vfmadd231ps %ymm11,%ymm2,%ymm8
10835 .byte 196,66,117,184,194 // vfmadd231ps %ymm10,%ymm1,%ymm8
10836 .byte 196,66,125,184,193 // vfmadd231ps %ymm9,%ymm0,%ymm8
10837 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
10838 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
10839 .byte 196,98,125,24,96,36 // vbroadcastss 0x24(%rax),%ymm12
10840 .byte 196,98,125,24,104,52 // vbroadcastss 0x34(%rax),%ymm13
10841 .byte 196,98,125,24,72,68 // vbroadcastss 0x44(%rax),%ymm9
10842 .byte 196,66,101,184,205 // vfmadd231ps %ymm13,%ymm3,%ymm9
10843 .byte 196,66,109,184,204 // vfmadd231ps %ymm12,%ymm2,%ymm9
10844 .byte 196,66,117,184,203 // vfmadd231ps %ymm11,%ymm1,%ymm9
10845 .byte 196,66,125,184,202 // vfmadd231ps %ymm10,%ymm0,%ymm9
10846 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
10847 .byte 196,98,125,24,96,24 // vbroadcastss 0x18(%rax),%ymm12
10848 .byte 196,98,125,24,104,40 // vbroadcastss 0x28(%rax),%ymm13
10849 .byte 196,98,125,24,112,56 // vbroadcastss 0x38(%rax),%ymm14
10850 .byte 196,98,125,24,80,72 // vbroadcastss 0x48(%rax),%ymm10
10851 .byte 196,66,101,184,214 // vfmadd231ps %ymm14,%ymm3,%ymm10
10852 .byte 196,66,109,184,213 // vfmadd231ps %ymm13,%ymm2,%ymm10
10853 .byte 196,66,117,184,212 // vfmadd231ps %ymm12,%ymm1,%ymm10
10854 .byte 196,66,125,184,211 // vfmadd231ps %ymm11,%ymm0,%ymm10
10855 .byte 196,98,125,24,96,12 // vbroadcastss 0xc(%rax),%ymm12
10856 .byte 196,98,125,24,104,28 // vbroadcastss 0x1c(%rax),%ymm13
10857 .byte 196,98,125,24,112,44 // vbroadcastss 0x2c(%rax),%ymm14
10858 .byte 196,98,125,24,120,60 // vbroadcastss 0x3c(%rax),%ymm15
10859 .byte 196,98,125,24,88,76 // vbroadcastss 0x4c(%rax),%ymm11
10860 .byte 196,66,101,184,223 // vfmadd231ps %ymm15,%ymm3,%ymm11
10861 .byte 196,66,109,184,222 // vfmadd231ps %ymm14,%ymm2,%ymm11
10862 .byte 196,66,117,184,221 // vfmadd231ps %ymm13,%ymm1,%ymm11
10863 .byte 196,66,125,184,220 // vfmadd231ps %ymm12,%ymm0,%ymm11
10864 .byte 72,173 // lods %ds:(%rsi),%rax
10865 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
10866 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
10867 .byte 197,124,41,210 // vmovaps %ymm10,%ymm2
10868 .byte 197,124,41,219 // vmovaps %ymm11,%ymm3
10869 .byte 255,224 // jmpq *%rax
10870
Mike Klein7c4af542017-03-29 18:21:14 -040010871HIDDEN _sk_matrix_perspective_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010872.globl _sk_matrix_perspective_hsw
Mike Klein86714282017-04-13 17:37:38 -040010873FUNCTION(_sk_matrix_perspective_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010874_sk_matrix_perspective_hsw:
10875 .byte 72,173 // lods %ds:(%rsi),%rax
10876 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
10877 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
10878 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
10879 .byte 196,66,117,184,209 // vfmadd231ps %ymm9,%ymm1,%ymm10
10880 .byte 196,66,125,184,208 // vfmadd231ps %ymm8,%ymm0,%ymm10
10881 .byte 196,98,125,24,64,12 // vbroadcastss 0xc(%rax),%ymm8
10882 .byte 196,98,125,24,72,16 // vbroadcastss 0x10(%rax),%ymm9
10883 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
10884 .byte 196,66,117,184,217 // vfmadd231ps %ymm9,%ymm1,%ymm11
10885 .byte 196,66,125,184,216 // vfmadd231ps %ymm8,%ymm0,%ymm11
10886 .byte 196,98,125,24,64,24 // vbroadcastss 0x18(%rax),%ymm8
10887 .byte 196,98,125,24,72,28 // vbroadcastss 0x1c(%rax),%ymm9
10888 .byte 196,98,125,24,96,32 // vbroadcastss 0x20(%rax),%ymm12
10889 .byte 196,66,117,184,225 // vfmadd231ps %ymm9,%ymm1,%ymm12
10890 .byte 196,66,125,184,224 // vfmadd231ps %ymm8,%ymm0,%ymm12
10891 .byte 196,193,124,83,204 // vrcpps %ymm12,%ymm1
10892 .byte 197,172,89,193 // vmulps %ymm1,%ymm10,%ymm0
10893 .byte 197,164,89,201 // vmulps %ymm1,%ymm11,%ymm1
10894 .byte 72,173 // lods %ds:(%rsi),%rax
10895 .byte 255,224 // jmpq *%rax
10896
Herb Derby7b4202d2017-04-10 10:52:34 -040010897HIDDEN _sk_linear_gradient_hsw
10898.globl _sk_linear_gradient_hsw
Mike Klein86714282017-04-13 17:37:38 -040010899FUNCTION(_sk_linear_gradient_hsw)
Herb Derby7b4202d2017-04-10 10:52:34 -040010900_sk_linear_gradient_hsw:
10901 .byte 72,173 // lods %ds:(%rsi),%rax
10902 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
10903 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
10904 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
10905 .byte 196,98,125,24,72,28 // vbroadcastss 0x1c(%rax),%ymm9
10906 .byte 76,139,0 // mov (%rax),%r8
10907 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -040010908 .byte 15,132,143,0,0,0 // je 385f <_sk_linear_gradient_hsw+0xb5>
Herb Derby7b4202d2017-04-10 10:52:34 -040010909 .byte 72,139,64,8 // mov 0x8(%rax),%rax
10910 .byte 72,131,192,32 // add $0x20,%rax
10911 .byte 196,65,28,87,228 // vxorps %ymm12,%ymm12,%ymm12
10912 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
10913 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
10914 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
10915 .byte 196,98,125,24,104,224 // vbroadcastss -0x20(%rax),%ymm13
10916 .byte 196,65,124,194,237,1 // vcmpltps %ymm13,%ymm0,%ymm13
10917 .byte 196,98,125,24,112,228 // vbroadcastss -0x1c(%rax),%ymm14
10918 .byte 196,67,13,74,228,208 // vblendvps %ymm13,%ymm12,%ymm14,%ymm12
10919 .byte 196,98,125,24,112,232 // vbroadcastss -0x18(%rax),%ymm14
10920 .byte 196,227,13,74,201,208 // vblendvps %ymm13,%ymm1,%ymm14,%ymm1
10921 .byte 196,98,125,24,112,236 // vbroadcastss -0x14(%rax),%ymm14
10922 .byte 196,227,13,74,210,208 // vblendvps %ymm13,%ymm2,%ymm14,%ymm2
10923 .byte 196,98,125,24,112,240 // vbroadcastss -0x10(%rax),%ymm14
10924 .byte 196,227,13,74,219,208 // vblendvps %ymm13,%ymm3,%ymm14,%ymm3
10925 .byte 196,98,125,24,112,244 // vbroadcastss -0xc(%rax),%ymm14
10926 .byte 196,67,13,74,192,208 // vblendvps %ymm13,%ymm8,%ymm14,%ymm8
10927 .byte 196,98,125,24,112,248 // vbroadcastss -0x8(%rax),%ymm14
10928 .byte 196,67,13,74,219,208 // vblendvps %ymm13,%ymm11,%ymm14,%ymm11
10929 .byte 196,98,125,24,112,252 // vbroadcastss -0x4(%rax),%ymm14
10930 .byte 196,67,13,74,210,208 // vblendvps %ymm13,%ymm10,%ymm14,%ymm10
10931 .byte 196,98,125,24,48 // vbroadcastss (%rax),%ymm14
10932 .byte 196,67,13,74,201,208 // vblendvps %ymm13,%ymm9,%ymm14,%ymm9
10933 .byte 72,131,192,36 // add $0x24,%rax
10934 .byte 73,255,200 // dec %r8
Mike Kleinb3665f02017-05-01 14:56:04 -040010935 .byte 117,140 // jne 37e9 <_sk_linear_gradient_hsw+0x3f>
10936 .byte 235,17 // jmp 3870 <_sk_linear_gradient_hsw+0xc6>
Herb Derby7b4202d2017-04-10 10:52:34 -040010937 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
10938 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
10939 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
10940 .byte 196,65,28,87,228 // vxorps %ymm12,%ymm12,%ymm12
10941 .byte 196,66,125,184,196 // vfmadd231ps %ymm12,%ymm0,%ymm8
10942 .byte 196,194,125,168,203 // vfmadd213ps %ymm11,%ymm0,%ymm1
10943 .byte 196,194,125,168,210 // vfmadd213ps %ymm10,%ymm0,%ymm2
10944 .byte 196,194,125,168,217 // vfmadd213ps %ymm9,%ymm0,%ymm3
10945 .byte 72,173 // lods %ds:(%rsi),%rax
10946 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
10947 .byte 255,224 // jmpq *%rax
10948
Mike Klein7c4af542017-03-29 18:21:14 -040010949HIDDEN _sk_linear_gradient_2stops_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010950.globl _sk_linear_gradient_2stops_hsw
Mike Klein86714282017-04-13 17:37:38 -040010951FUNCTION(_sk_linear_gradient_2stops_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010952_sk_linear_gradient_2stops_hsw:
10953 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040010954 .byte 196,226,125,24,8 // vbroadcastss (%rax),%ymm1
10955 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040010956 .byte 196,98,125,184,193 // vfmadd231ps %ymm1,%ymm0,%ymm8
Herb Derby7b4202d2017-04-10 10:52:34 -040010957 .byte 196,226,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm2
10958 .byte 196,226,125,24,72,20 // vbroadcastss 0x14(%rax),%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040010959 .byte 196,226,125,184,202 // vfmadd231ps %ymm2,%ymm0,%ymm1
Herb Derby7b4202d2017-04-10 10:52:34 -040010960 .byte 196,226,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm3
10961 .byte 196,226,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040010962 .byte 196,226,125,184,211 // vfmadd231ps %ymm3,%ymm0,%ymm2
Herb Derby7b4202d2017-04-10 10:52:34 -040010963 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
10964 .byte 196,226,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040010965 .byte 196,194,125,184,217 // vfmadd231ps %ymm9,%ymm0,%ymm3
10966 .byte 72,173 // lods %ds:(%rsi),%rax
10967 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
10968 .byte 255,224 // jmpq *%rax
10969
Mike Klein0a904492017-04-12 12:52:48 -040010970HIDDEN _sk_save_xy_hsw
10971.globl _sk_save_xy_hsw
Mike Klein86714282017-04-13 17:37:38 -040010972FUNCTION(_sk_save_xy_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040010973_sk_save_xy_hsw:
10974 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040010975 .byte 196,98,125,24,5,76,7,0,0 // vbroadcastss 0x74c(%rip),%ymm8 # 4030 <_sk_callback_hsw+0x3ed>
Mike Kleinfe560a82017-05-01 12:56:35 -040010976 .byte 196,65,124,88,200 // vaddps %ymm8,%ymm0,%ymm9
Mike Klein0a904492017-04-12 12:52:48 -040010977 .byte 196,67,125,8,209,1 // vroundps $0x1,%ymm9,%ymm10
10978 .byte 196,65,52,92,202 // vsubps %ymm10,%ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040010979 .byte 196,65,116,88,192 // vaddps %ymm8,%ymm1,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040010980 .byte 196,67,125,8,208,1 // vroundps $0x1,%ymm8,%ymm10
10981 .byte 196,65,60,92,194 // vsubps %ymm10,%ymm8,%ymm8
10982 .byte 197,252,17,0 // vmovups %ymm0,(%rax)
10983 .byte 197,252,17,72,32 // vmovups %ymm1,0x20(%rax)
10984 .byte 197,124,17,72,64 // vmovups %ymm9,0x40(%rax)
10985 .byte 197,124,17,64,96 // vmovups %ymm8,0x60(%rax)
10986 .byte 72,173 // lods %ds:(%rsi),%rax
10987 .byte 255,224 // jmpq *%rax
10988
10989HIDDEN _sk_accumulate_hsw
10990.globl _sk_accumulate_hsw
Mike Klein86714282017-04-13 17:37:38 -040010991FUNCTION(_sk_accumulate_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040010992_sk_accumulate_hsw:
10993 .byte 72,173 // lods %ds:(%rsi),%rax
10994 .byte 197,124,16,128,128,0,0,0 // vmovups 0x80(%rax),%ymm8
10995 .byte 197,60,89,128,160,0,0,0 // vmulps 0xa0(%rax),%ymm8,%ymm8
10996 .byte 196,226,61,184,224 // vfmadd231ps %ymm0,%ymm8,%ymm4
10997 .byte 196,226,61,184,233 // vfmadd231ps %ymm1,%ymm8,%ymm5
10998 .byte 196,226,61,184,242 // vfmadd231ps %ymm2,%ymm8,%ymm6
10999 .byte 196,98,101,168,199 // vfmadd213ps %ymm7,%ymm3,%ymm8
11000 .byte 72,173 // lods %ds:(%rsi),%rax
11001 .byte 197,124,41,199 // vmovaps %ymm8,%ymm7
11002 .byte 255,224 // jmpq *%rax
11003
11004HIDDEN _sk_bilinear_nx_hsw
11005.globl _sk_bilinear_nx_hsw
Mike Klein86714282017-04-13 17:37:38 -040011006FUNCTION(_sk_bilinear_nx_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011007_sk_bilinear_nx_hsw:
11008 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011009 .byte 196,226,125,24,5,224,6,0,0 // vbroadcastss 0x6e0(%rip),%ymm0 # 4034 <_sk_callback_hsw+0x3f1>
Mike Klein0a904492017-04-12 12:52:48 -040011010 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -040011011 .byte 196,98,125,24,5,215,6,0,0 // vbroadcastss 0x6d7(%rip),%ymm8 # 4038 <_sk_callback_hsw+0x3f5>
Mike Klein0a904492017-04-12 12:52:48 -040011012 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
11013 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
11014 .byte 72,173 // lods %ds:(%rsi),%rax
11015 .byte 255,224 // jmpq *%rax
11016
11017HIDDEN _sk_bilinear_px_hsw
11018.globl _sk_bilinear_px_hsw
Mike Klein86714282017-04-13 17:37:38 -040011019FUNCTION(_sk_bilinear_px_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011020_sk_bilinear_px_hsw:
11021 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011022 .byte 196,226,125,24,5,191,6,0,0 // vbroadcastss 0x6bf(%rip),%ymm0 # 403c <_sk_callback_hsw+0x3f9>
Mike Klein0a904492017-04-12 12:52:48 -040011023 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
11024 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
11025 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
11026 .byte 72,173 // lods %ds:(%rsi),%rax
11027 .byte 255,224 // jmpq *%rax
11028
11029HIDDEN _sk_bilinear_ny_hsw
11030.globl _sk_bilinear_ny_hsw
Mike Klein86714282017-04-13 17:37:38 -040011031FUNCTION(_sk_bilinear_ny_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011032_sk_bilinear_ny_hsw:
11033 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011034 .byte 196,226,125,24,13,163,6,0,0 // vbroadcastss 0x6a3(%rip),%ymm1 # 4040 <_sk_callback_hsw+0x3fd>
Mike Klein0a904492017-04-12 12:52:48 -040011035 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -040011036 .byte 196,98,125,24,5,153,6,0,0 // vbroadcastss 0x699(%rip),%ymm8 # 4044 <_sk_callback_hsw+0x401>
Mike Klein0a904492017-04-12 12:52:48 -040011037 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
11038 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
11039 .byte 72,173 // lods %ds:(%rsi),%rax
11040 .byte 255,224 // jmpq *%rax
11041
11042HIDDEN _sk_bilinear_py_hsw
11043.globl _sk_bilinear_py_hsw
Mike Klein86714282017-04-13 17:37:38 -040011044FUNCTION(_sk_bilinear_py_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011045_sk_bilinear_py_hsw:
11046 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011047 .byte 196,226,125,24,13,129,6,0,0 // vbroadcastss 0x681(%rip),%ymm1 # 4048 <_sk_callback_hsw+0x405>
Mike Klein0a904492017-04-12 12:52:48 -040011048 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
11049 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
11050 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
11051 .byte 72,173 // lods %ds:(%rsi),%rax
11052 .byte 255,224 // jmpq *%rax
11053
11054HIDDEN _sk_bicubic_n3x_hsw
11055.globl _sk_bicubic_n3x_hsw
Mike Klein86714282017-04-13 17:37:38 -040011056FUNCTION(_sk_bicubic_n3x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011057_sk_bicubic_n3x_hsw:
11058 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011059 .byte 196,226,125,24,5,100,6,0,0 // vbroadcastss 0x664(%rip),%ymm0 # 404c <_sk_callback_hsw+0x409>
Mike Klein0a904492017-04-12 12:52:48 -040011060 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -040011061 .byte 196,98,125,24,5,91,6,0,0 // vbroadcastss 0x65b(%rip),%ymm8 # 4050 <_sk_callback_hsw+0x40d>
Mike Klein0a904492017-04-12 12:52:48 -040011062 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
11063 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -040011064 .byte 196,98,125,24,21,76,6,0,0 // vbroadcastss 0x64c(%rip),%ymm10 # 4054 <_sk_callback_hsw+0x411>
11065 .byte 196,98,125,24,29,71,6,0,0 // vbroadcastss 0x647(%rip),%ymm11 # 4058 <_sk_callback_hsw+0x415>
Mike Kleinfe560a82017-05-01 12:56:35 -040011066 .byte 196,66,61,168,218 // vfmadd213ps %ymm10,%ymm8,%ymm11
11067 .byte 196,65,36,89,193 // vmulps %ymm9,%ymm11,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040011068 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
11069 .byte 72,173 // lods %ds:(%rsi),%rax
11070 .byte 255,224 // jmpq *%rax
11071
11072HIDDEN _sk_bicubic_n1x_hsw
11073.globl _sk_bicubic_n1x_hsw
Mike Klein86714282017-04-13 17:37:38 -040011074FUNCTION(_sk_bicubic_n1x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011075_sk_bicubic_n1x_hsw:
11076 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011077 .byte 196,226,125,24,5,42,6,0,0 // vbroadcastss 0x62a(%rip),%ymm0 # 405c <_sk_callback_hsw+0x419>
Mike Klein0a904492017-04-12 12:52:48 -040011078 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -040011079 .byte 196,98,125,24,5,33,6,0,0 // vbroadcastss 0x621(%rip),%ymm8 # 4060 <_sk_callback_hsw+0x41d>
Mike Klein0a904492017-04-12 12:52:48 -040011080 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -040011081 .byte 196,98,125,24,13,23,6,0,0 // vbroadcastss 0x617(%rip),%ymm9 # 4064 <_sk_callback_hsw+0x421>
11082 .byte 196,98,125,24,21,18,6,0,0 // vbroadcastss 0x612(%rip),%ymm10 # 4068 <_sk_callback_hsw+0x425>
Mike Kleinfe560a82017-05-01 12:56:35 -040011083 .byte 196,66,61,168,209 // vfmadd213ps %ymm9,%ymm8,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -040011084 .byte 196,98,125,24,13,8,6,0,0 // vbroadcastss 0x608(%rip),%ymm9 # 406c <_sk_callback_hsw+0x429>
Mike Klein0a904492017-04-12 12:52:48 -040011085 .byte 196,66,61,184,202 // vfmadd231ps %ymm10,%ymm8,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -040011086 .byte 196,98,125,24,21,254,5,0,0 // vbroadcastss 0x5fe(%rip),%ymm10 # 4070 <_sk_callback_hsw+0x42d>
Mike Kleinfe560a82017-05-01 12:56:35 -040011087 .byte 196,66,61,184,209 // vfmadd231ps %ymm9,%ymm8,%ymm10
11088 .byte 197,124,17,144,128,0,0,0 // vmovups %ymm10,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040011089 .byte 72,173 // lods %ds:(%rsi),%rax
11090 .byte 255,224 // jmpq *%rax
11091
11092HIDDEN _sk_bicubic_p1x_hsw
11093.globl _sk_bicubic_p1x_hsw
Mike Klein86714282017-04-13 17:37:38 -040011094FUNCTION(_sk_bicubic_p1x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011095_sk_bicubic_p1x_hsw:
11096 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011097 .byte 196,98,125,24,5,230,5,0,0 // vbroadcastss 0x5e6(%rip),%ymm8 # 4074 <_sk_callback_hsw+0x431>
Mike Klein0a904492017-04-12 12:52:48 -040011098 .byte 197,188,88,0 // vaddps (%rax),%ymm8,%ymm0
11099 .byte 197,124,16,72,64 // vmovups 0x40(%rax),%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -040011100 .byte 196,98,125,24,21,216,5,0,0 // vbroadcastss 0x5d8(%rip),%ymm10 # 4078 <_sk_callback_hsw+0x435>
11101 .byte 196,98,125,24,29,211,5,0,0 // vbroadcastss 0x5d3(%rip),%ymm11 # 407c <_sk_callback_hsw+0x439>
Mike Kleinfe560a82017-05-01 12:56:35 -040011102 .byte 196,66,53,168,218 // vfmadd213ps %ymm10,%ymm9,%ymm11
11103 .byte 196,66,53,168,216 // vfmadd213ps %ymm8,%ymm9,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -040011104 .byte 196,98,125,24,5,196,5,0,0 // vbroadcastss 0x5c4(%rip),%ymm8 # 4080 <_sk_callback_hsw+0x43d>
Mike Kleinfe560a82017-05-01 12:56:35 -040011105 .byte 196,66,53,184,195 // vfmadd231ps %ymm11,%ymm9,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040011106 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
11107 .byte 72,173 // lods %ds:(%rsi),%rax
11108 .byte 255,224 // jmpq *%rax
11109
11110HIDDEN _sk_bicubic_p3x_hsw
11111.globl _sk_bicubic_p3x_hsw
Mike Klein86714282017-04-13 17:37:38 -040011112FUNCTION(_sk_bicubic_p3x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011113_sk_bicubic_p3x_hsw:
11114 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011115 .byte 196,226,125,24,5,172,5,0,0 // vbroadcastss 0x5ac(%rip),%ymm0 # 4084 <_sk_callback_hsw+0x441>
Mike Klein0a904492017-04-12 12:52:48 -040011116 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
11117 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
11118 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -040011119 .byte 196,98,125,24,21,153,5,0,0 // vbroadcastss 0x599(%rip),%ymm10 # 4088 <_sk_callback_hsw+0x445>
11120 .byte 196,98,125,24,29,148,5,0,0 // vbroadcastss 0x594(%rip),%ymm11 # 408c <_sk_callback_hsw+0x449>
Mike Kleinfe560a82017-05-01 12:56:35 -040011121 .byte 196,66,61,168,218 // vfmadd213ps %ymm10,%ymm8,%ymm11
11122 .byte 196,65,52,89,195 // vmulps %ymm11,%ymm9,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040011123 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
11124 .byte 72,173 // lods %ds:(%rsi),%rax
11125 .byte 255,224 // jmpq *%rax
11126
11127HIDDEN _sk_bicubic_n3y_hsw
11128.globl _sk_bicubic_n3y_hsw
Mike Klein86714282017-04-13 17:37:38 -040011129FUNCTION(_sk_bicubic_n3y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011130_sk_bicubic_n3y_hsw:
11131 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011132 .byte 196,226,125,24,13,119,5,0,0 // vbroadcastss 0x577(%rip),%ymm1 # 4090 <_sk_callback_hsw+0x44d>
Mike Klein0a904492017-04-12 12:52:48 -040011133 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -040011134 .byte 196,98,125,24,5,109,5,0,0 // vbroadcastss 0x56d(%rip),%ymm8 # 4094 <_sk_callback_hsw+0x451>
Mike Klein0a904492017-04-12 12:52:48 -040011135 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
11136 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -040011137 .byte 196,98,125,24,21,94,5,0,0 // vbroadcastss 0x55e(%rip),%ymm10 # 4098 <_sk_callback_hsw+0x455>
11138 .byte 196,98,125,24,29,89,5,0,0 // vbroadcastss 0x559(%rip),%ymm11 # 409c <_sk_callback_hsw+0x459>
Mike Kleinfe560a82017-05-01 12:56:35 -040011139 .byte 196,66,61,168,218 // vfmadd213ps %ymm10,%ymm8,%ymm11
11140 .byte 196,65,36,89,193 // vmulps %ymm9,%ymm11,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040011141 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
11142 .byte 72,173 // lods %ds:(%rsi),%rax
11143 .byte 255,224 // jmpq *%rax
11144
11145HIDDEN _sk_bicubic_n1y_hsw
11146.globl _sk_bicubic_n1y_hsw
Mike Klein86714282017-04-13 17:37:38 -040011147FUNCTION(_sk_bicubic_n1y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011148_sk_bicubic_n1y_hsw:
11149 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011150 .byte 196,226,125,24,13,60,5,0,0 // vbroadcastss 0x53c(%rip),%ymm1 # 40a0 <_sk_callback_hsw+0x45d>
Mike Klein0a904492017-04-12 12:52:48 -040011151 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -040011152 .byte 196,98,125,24,5,50,5,0,0 // vbroadcastss 0x532(%rip),%ymm8 # 40a4 <_sk_callback_hsw+0x461>
Mike Klein0a904492017-04-12 12:52:48 -040011153 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -040011154 .byte 196,98,125,24,13,40,5,0,0 // vbroadcastss 0x528(%rip),%ymm9 # 40a8 <_sk_callback_hsw+0x465>
11155 .byte 196,98,125,24,21,35,5,0,0 // vbroadcastss 0x523(%rip),%ymm10 # 40ac <_sk_callback_hsw+0x469>
Mike Kleinfe560a82017-05-01 12:56:35 -040011156 .byte 196,66,61,168,209 // vfmadd213ps %ymm9,%ymm8,%ymm10
Mike Kleinb3665f02017-05-01 14:56:04 -040011157 .byte 196,98,125,24,13,25,5,0,0 // vbroadcastss 0x519(%rip),%ymm9 # 40b0 <_sk_callback_hsw+0x46d>
Mike Klein0a904492017-04-12 12:52:48 -040011158 .byte 196,66,61,184,202 // vfmadd231ps %ymm10,%ymm8,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -040011159 .byte 196,98,125,24,21,15,5,0,0 // vbroadcastss 0x50f(%rip),%ymm10 # 40b4 <_sk_callback_hsw+0x471>
Mike Kleinfe560a82017-05-01 12:56:35 -040011160 .byte 196,66,61,184,209 // vfmadd231ps %ymm9,%ymm8,%ymm10
11161 .byte 197,124,17,144,160,0,0,0 // vmovups %ymm10,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040011162 .byte 72,173 // lods %ds:(%rsi),%rax
11163 .byte 255,224 // jmpq *%rax
11164
11165HIDDEN _sk_bicubic_p1y_hsw
11166.globl _sk_bicubic_p1y_hsw
Mike Klein86714282017-04-13 17:37:38 -040011167FUNCTION(_sk_bicubic_p1y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011168_sk_bicubic_p1y_hsw:
11169 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011170 .byte 196,98,125,24,5,247,4,0,0 // vbroadcastss 0x4f7(%rip),%ymm8 # 40b8 <_sk_callback_hsw+0x475>
Mike Klein0a904492017-04-12 12:52:48 -040011171 .byte 197,188,88,72,32 // vaddps 0x20(%rax),%ymm8,%ymm1
11172 .byte 197,124,16,72,96 // vmovups 0x60(%rax),%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -040011173 .byte 196,98,125,24,21,232,4,0,0 // vbroadcastss 0x4e8(%rip),%ymm10 # 40bc <_sk_callback_hsw+0x479>
11174 .byte 196,98,125,24,29,227,4,0,0 // vbroadcastss 0x4e3(%rip),%ymm11 # 40c0 <_sk_callback_hsw+0x47d>
Mike Kleinfe560a82017-05-01 12:56:35 -040011175 .byte 196,66,53,168,218 // vfmadd213ps %ymm10,%ymm9,%ymm11
11176 .byte 196,66,53,168,216 // vfmadd213ps %ymm8,%ymm9,%ymm11
Mike Kleinb3665f02017-05-01 14:56:04 -040011177 .byte 196,98,125,24,5,212,4,0,0 // vbroadcastss 0x4d4(%rip),%ymm8 # 40c4 <_sk_callback_hsw+0x481>
Mike Kleinfe560a82017-05-01 12:56:35 -040011178 .byte 196,66,53,184,195 // vfmadd231ps %ymm11,%ymm9,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040011179 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
11180 .byte 72,173 // lods %ds:(%rsi),%rax
11181 .byte 255,224 // jmpq *%rax
11182
11183HIDDEN _sk_bicubic_p3y_hsw
11184.globl _sk_bicubic_p3y_hsw
Mike Klein86714282017-04-13 17:37:38 -040011185FUNCTION(_sk_bicubic_p3y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011186_sk_bicubic_p3y_hsw:
11187 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040011188 .byte 196,226,125,24,13,188,4,0,0 // vbroadcastss 0x4bc(%rip),%ymm1 # 40c8 <_sk_callback_hsw+0x485>
Mike Klein0a904492017-04-12 12:52:48 -040011189 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
11190 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
11191 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -040011192 .byte 196,98,125,24,21,168,4,0,0 // vbroadcastss 0x4a8(%rip),%ymm10 # 40cc <_sk_callback_hsw+0x489>
11193 .byte 196,98,125,24,29,163,4,0,0 // vbroadcastss 0x4a3(%rip),%ymm11 # 40d0 <_sk_callback_hsw+0x48d>
Mike Kleinfe560a82017-05-01 12:56:35 -040011194 .byte 196,66,61,168,218 // vfmadd213ps %ymm10,%ymm8,%ymm11
11195 .byte 196,65,52,89,195 // vmulps %ymm11,%ymm9,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040011196 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
11197 .byte 72,173 // lods %ds:(%rsi),%rax
11198 .byte 255,224 // jmpq *%rax
11199
Mike Klein7fee90c2017-04-07 16:55:09 -040011200HIDDEN _sk_callback_hsw
11201.globl _sk_callback_hsw
11202FUNCTION(_sk_callback_hsw)
11203_sk_callback_hsw:
11204 .byte 65,87 // push %r15
11205 .byte 65,86 // push %r14
Mike Kleinc17dc242017-04-20 16:21:57 -040011206 .byte 65,85 // push %r13
Mike Klein7fee90c2017-04-07 16:55:09 -040011207 .byte 65,84 // push %r12
11208 .byte 83 // push %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040011209 .byte 72,129,236,144,0,0,0 // sub $0x90,%rsp
11210 .byte 197,252,17,124,36,96 // vmovups %ymm7,0x60(%rsp)
11211 .byte 197,252,17,116,36,64 // vmovups %ymm6,0x40(%rsp)
11212 .byte 197,252,17,108,36,32 // vmovups %ymm5,0x20(%rsp)
11213 .byte 197,252,17,36,36 // vmovups %ymm4,(%rsp)
11214 .byte 73,137,205 // mov %rcx,%r13
Mike Klein7fee90c2017-04-07 16:55:09 -040011215 .byte 73,137,214 // mov %rdx,%r14
11216 .byte 73,137,255 // mov %rdi,%r15
11217 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinc17dc242017-04-20 16:21:57 -040011218 .byte 72,137,195 // mov %rax,%rbx
Mike Klein7fee90c2017-04-07 16:55:09 -040011219 .byte 73,137,244 // mov %rsi,%r12
Mike Kleinc17dc242017-04-20 16:21:57 -040011220 .byte 197,252,20,225 // vunpcklps %ymm1,%ymm0,%ymm4
11221 .byte 197,252,21,193 // vunpckhps %ymm1,%ymm0,%ymm0
11222 .byte 197,236,20,203 // vunpcklps %ymm3,%ymm2,%ymm1
11223 .byte 197,236,21,211 // vunpckhps %ymm3,%ymm2,%ymm2
11224 .byte 197,221,20,217 // vunpcklpd %ymm1,%ymm4,%ymm3
11225 .byte 197,221,21,201 // vunpckhpd %ymm1,%ymm4,%ymm1
11226 .byte 197,253,20,226 // vunpcklpd %ymm2,%ymm0,%ymm4
11227 .byte 197,253,21,194 // vunpckhpd %ymm2,%ymm0,%ymm0
11228 .byte 196,227,101,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm3,%ymm2
11229 .byte 196,227,93,24,232,1 // vinsertf128 $0x1,%xmm0,%ymm4,%ymm5
11230 .byte 196,227,101,6,201,49 // vperm2f128 $0x31,%ymm1,%ymm3,%ymm1
11231 .byte 196,227,93,6,192,49 // vperm2f128 $0x31,%ymm0,%ymm4,%ymm0
11232 .byte 197,253,17,83,8 // vmovupd %ymm2,0x8(%rbx)
11233 .byte 197,253,17,107,40 // vmovupd %ymm5,0x28(%rbx)
11234 .byte 197,253,17,75,72 // vmovupd %ymm1,0x48(%rbx)
11235 .byte 197,253,17,67,104 // vmovupd %ymm0,0x68(%rbx)
11236 .byte 77,133,237 // test %r13,%r13
Mike Klein7fee90c2017-04-07 16:55:09 -040011237 .byte 190,8,0,0,0 // mov $0x8,%esi
Mike Kleinc17dc242017-04-20 16:21:57 -040011238 .byte 65,15,69,245 // cmovne %r13d,%esi
11239 .byte 72,137,223 // mov %rbx,%rdi
Mike Klein7fee90c2017-04-07 16:55:09 -040011240 .byte 197,248,119 // vzeroupper
Mike Kleinc17dc242017-04-20 16:21:57 -040011241 .byte 255,19 // callq *(%rbx)
11242 .byte 72,139,131,136,0,0,0 // mov 0x88(%rbx),%rax
11243 .byte 197,248,16,0 // vmovups (%rax),%xmm0
11244 .byte 197,248,16,72,16 // vmovups 0x10(%rax),%xmm1
11245 .byte 197,248,16,80,32 // vmovups 0x20(%rax),%xmm2
11246 .byte 197,248,16,88,48 // vmovups 0x30(%rax),%xmm3
11247 .byte 196,227,101,24,88,112,1 // vinsertf128 $0x1,0x70(%rax),%ymm3,%ymm3
11248 .byte 196,227,109,24,80,96,1 // vinsertf128 $0x1,0x60(%rax),%ymm2,%ymm2
11249 .byte 196,227,117,24,72,80,1 // vinsertf128 $0x1,0x50(%rax),%ymm1,%ymm1
11250 .byte 196,227,125,24,64,64,1 // vinsertf128 $0x1,0x40(%rax),%ymm0,%ymm0
11251 .byte 197,252,20,225 // vunpcklps %ymm1,%ymm0,%ymm4
11252 .byte 197,252,21,233 // vunpckhps %ymm1,%ymm0,%ymm5
11253 .byte 197,236,20,203 // vunpcklps %ymm3,%ymm2,%ymm1
11254 .byte 197,236,21,219 // vunpckhps %ymm3,%ymm2,%ymm3
11255 .byte 197,221,20,193 // vunpcklpd %ymm1,%ymm4,%ymm0
11256 .byte 197,221,21,201 // vunpckhpd %ymm1,%ymm4,%ymm1
11257 .byte 197,213,20,211 // vunpcklpd %ymm3,%ymm5,%ymm2
11258 .byte 197,213,21,219 // vunpckhpd %ymm3,%ymm5,%ymm3
Mike Klein7fee90c2017-04-07 16:55:09 -040011259 .byte 76,137,230 // mov %r12,%rsi
11260 .byte 72,173 // lods %ds:(%rsi),%rax
11261 .byte 76,137,255 // mov %r15,%rdi
11262 .byte 76,137,242 // mov %r14,%rdx
Mike Kleinc17dc242017-04-20 16:21:57 -040011263 .byte 76,137,233 // mov %r13,%rcx
11264 .byte 197,252,16,36,36 // vmovups (%rsp),%ymm4
11265 .byte 197,252,16,108,36,32 // vmovups 0x20(%rsp),%ymm5
11266 .byte 197,252,16,116,36,64 // vmovups 0x40(%rsp),%ymm6
11267 .byte 197,252,16,124,36,96 // vmovups 0x60(%rsp),%ymm7
11268 .byte 72,129,196,144,0,0,0 // add $0x90,%rsp
Mike Klein7fee90c2017-04-07 16:55:09 -040011269 .byte 91 // pop %rbx
11270 .byte 65,92 // pop %r12
Mike Kleinc17dc242017-04-20 16:21:57 -040011271 .byte 65,93 // pop %r13
Mike Klein7fee90c2017-04-07 16:55:09 -040011272 .byte 65,94 // pop %r14
11273 .byte 65,95 // pop %r15
11274 .byte 255,224 // jmpq *%rax
11275
Mike Klein2229b572017-04-21 10:30:29 -040011276BALIGN4
11277 .byte 0,0 // add %al,(%rax)
11278 .byte 0,63 // add %bh,(%rdi)
11279 .byte 0,0 // add %al,(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040011280 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040011281 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
11282 .byte 63 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040011283 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011284 .byte 128,63,0 // cmpb $0x0,(%rdi)
11285 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
11286 .byte 63 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040011287 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011288 .byte 128,63,0 // cmpb $0x0,(%rdi)
11289 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
11290 .byte 63 // (bad)
11291 .byte 0,0 // add %al,(%rax)
11292 .byte 128,63,0 // cmpb $0x0,(%rdi)
11293 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
11294 .byte 63 // (bad)
11295 .byte 0,0 // add %al,(%rax)
11296 .byte 128,63,0 // cmpb $0x0,(%rdi)
11297 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
11298 .byte 63 // (bad)
11299 .byte 0,0 // add %al,(%rax)
11300 .byte 128,63,0 // cmpb $0x0,(%rdi)
11301 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
11302 .byte 63 // (bad)
11303 .byte 0,0 // add %al,(%rax)
11304 .byte 128,191,0,0,224,64,0 // cmpb $0x0,0x40e00000(%rdi)
11305 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
11306 .byte 63 // (bad)
11307 .byte 0,0 // add %al,(%rax)
11308 .byte 128,63,145 // cmpb $0x91,(%rdi)
11309 .byte 131,158,61,92,143,50,63 // sbbl $0x3f,0x328f5c3d(%rsi)
11310 .byte 154 // (bad)
11311 .byte 153 // cltd
11312 .byte 153 // cltd
11313 .byte 62,10,215 // ds or %bh,%dl
11314 .byte 35,59 // and (%rbx),%edi
11315 .byte 174 // scas %es:(%rdi),%al
11316 .byte 71,97 // rex.RXB (bad)
11317 .byte 61,41,92,71,65 // cmp $0x41475c29,%eax
11318 .byte 168,87 // test $0x57,%al
11319 .byte 202,189,206 // lret $0xcebd
11320 .byte 111 // outsl %ds:(%rsi),(%dx)
11321 .byte 48,63 // xor %bh,(%rdi)
11322 .byte 194,135,210 // retq $0xd287
11323 .byte 62,0,0 // add %al,%ds:(%rax)
11324 .byte 128,63,4 // cmpb $0x4,(%rdi)
11325 .byte 231,140 // out %eax,$0x8c
11326 .byte 59,0 // cmp (%rax),%eax
11327 .byte 0,128,63,0,0,192 // add %al,-0x3fffffc1(%rax)
11328 .byte 64,0,0 // add %al,(%rax)
11329 .byte 0,64,0 // add %al,0x0(%rax)
11330 .byte 0,128,64,171,170,42 // add %al,0x2aaaab40(%rax)
11331 .byte 62,0,0 // add %al,%ds:(%rax)
11332 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040011333 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040011334 .byte 128,63,0 // cmpb $0x0,(%rdi)
11335 .byte 0,0 // add %al,(%rax)
11336 .byte 64,171 // rex stos %eax,%es:(%rdi)
11337 .byte 170 // stos %al,%es:(%rdi)
11338 .byte 170 // stos %al,%es:(%rdi)
11339 .byte 62,0,0 // add %al,%ds:(%rax)
11340 .byte 128,191,0,0,192,64,171 // cmpb $0xab,0x40c00000(%rdi)
11341 .byte 170 // stos %al,%es:(%rdi)
11342 .byte 42,63 // sub (%rdi),%bh
11343 .byte 171 // stos %eax,%es:(%rdi)
11344 .byte 170 // stos %al,%es:(%rdi)
11345 .byte 170 // stos %al,%es:(%rdi)
11346 .byte 190,129,128,128,59 // mov $0x3b808081,%esi
11347 .byte 129,128,128,59,0,248,0,0,8,33 // addl $0x21080000,-0x7ffc480(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011348 .byte 132,55 // test %dh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040011349 .byte 224,7 // loopne 3e41 <.literal4+0xd9>
Mike Kleinfe560a82017-05-01 12:56:35 -040011350 .byte 0,0 // add %al,(%rax)
11351 .byte 33,8 // and %ecx,(%rax)
11352 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040011353 .byte 31 // (bad)
11354 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011355 .byte 0,8 // add %cl,(%rax)
11356 .byte 33,4,61,0,0,128,63 // and %eax,0x3f800000(,%rdi,1)
11357 .byte 129,128,128,59,128,0,128,55,0,0 // addl $0x3780,0x803b80(%rax)
11358 .byte 128,63,0 // cmpb $0x0,(%rdi)
11359 .byte 0,127,67 // add %bh,0x43(%rdi)
11360 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
11361 .byte 0,52,255 // add %dh,(%rdi,%rdi,8)
Mike Kleinb4bbc642017-04-27 08:59:55 -040011362 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011363 .byte 127,0 // jg 3e6c <.literal4+0x104>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011364 .byte 0,0 // add %al,(%rax)
11365 .byte 0,63 // add %bh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040011366 .byte 119,115 // ja 3ee5 <.literal4+0x17d>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011367 .byte 248 // clc
11368 .byte 194,117,191 // retq $0xbf75
11369 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
11370 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
11371 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
11372 .byte 154 // (bad)
11373 .byte 64,254 // rex (bad)
11374 .byte 210,221 // rcr %cl,%ch
11375 .byte 65,0,0 // add %al,(%r8)
11376 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040011377 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040011378 .byte 52,255 // xor $0xff,%al
11379 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011380 .byte 127,0 // jg 3ea0 <.literal4+0x138>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011381 .byte 0,0 // add %al,(%rax)
11382 .byte 0,63 // add %bh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040011383 .byte 119,115 // ja 3f19 <.literal4+0x1b1>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011384 .byte 248 // clc
11385 .byte 194,117,191 // retq $0xbf75
11386 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
11387 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
11388 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
11389 .byte 154 // (bad)
11390 .byte 64,254 // rex (bad)
11391 .byte 210,221 // rcr %cl,%ch
11392 .byte 65,0,0 // add %al,(%r8)
11393 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040011394 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040011395 .byte 52,255 // xor $0xff,%al
11396 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011397 .byte 127,0 // jg 3ed4 <.literal4+0x16c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011398 .byte 0,0 // add %al,(%rax)
11399 .byte 0,63 // add %bh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040011400 .byte 119,115 // ja 3f4d <.literal4+0x1e5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011401 .byte 248 // clc
11402 .byte 194,117,191 // retq $0xbf75
11403 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
11404 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
11405 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
11406 .byte 154 // (bad)
11407 .byte 64,254 // rex (bad)
11408 .byte 210,221 // rcr %cl,%ch
11409 .byte 65,0,0 // add %al,(%r8)
11410 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040011411 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040011412 .byte 52,255 // xor $0xff,%al
11413 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011414 .byte 127,0 // jg 3f08 <.literal4+0x1a0>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011415 .byte 0,0 // add %al,(%rax)
11416 .byte 0,63 // add %bh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040011417 .byte 119,115 // ja 3f81 <.literal4+0x219>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011418 .byte 248 // clc
11419 .byte 194,117,191 // retq $0xbf75
11420 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
11421 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
11422 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
11423 .byte 154 // (bad)
11424 .byte 64,254 // rex (bad)
11425 .byte 210,221 // rcr %cl,%ch
11426 .byte 65,0,0 // add %al,(%r8)
Mike Klein308e6242017-04-27 13:56:33 -040011427 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040011428 .byte 0,128,63,0,0,200 // add %al,-0x37ffffc1(%rax)
11429 .byte 66,0,0 // rex.X add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040011430 .byte 127,67 // jg 3f7f <.literal4+0x217>
Mike Kleinfe560a82017-05-01 12:56:35 -040011431 .byte 0,0 // add %al,(%rax)
11432 .byte 0,195 // add %al,%bl
11433 .byte 0,0 // add %al,(%rax)
11434 .byte 128,65,203,61 // addb $0x3d,-0x35(%rcx)
11435 .byte 13,60,111,18,3 // or $0x3126f3c,%eax
11436 .byte 59,10 // cmp (%rdx),%ecx
11437 .byte 215 // xlat %ds:(%rbx)
11438 .byte 163,59,194,24,17,60,203,61,13 // movabs %eax,0xd3dcb3c1118c23b
11439 .byte 190,80,128,3,62 // mov $0x3e038050,%esi
11440 .byte 31 // (bad)
11441 .byte 215 // xlat %ds:(%rbx)
Mike Kleinb3665f02017-05-01 14:56:04 -040011442 .byte 118,63 // jbe 3f9f <.literal4+0x237>
Mike Kleinfe560a82017-05-01 12:56:35 -040011443 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
11444 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040011445 .byte 127,67 // jg 3fb3 <.literal4+0x24b>
Mike Kleinfe560a82017-05-01 12:56:35 -040011446 .byte 129,128,128,59,0,0,128,63,129,128 // addl $0x80813f80,0x3b80(%rax)
11447 .byte 128,59,0 // cmpb $0x0,(%rbx)
11448 .byte 0,128,63,129,128,128 // add %al,-0x7f7f7ec1(%rax)
11449 .byte 59,0 // cmp (%rax),%eax
Mike Klein308e6242017-04-27 13:56:33 -040011450 .byte 248 // clc
11451 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011452 .byte 8,33 // or %ah,(%rcx)
11453 .byte 132,55 // test %dh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040011454 .byte 224,7 // loopne 3f95 <.literal4+0x22d>
Mike Klein308e6242017-04-27 13:56:33 -040011455 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011456 .byte 33,8 // and %ecx,(%rax)
11457 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040011458 .byte 31 // (bad)
11459 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011460 .byte 0,8 // add %cl,(%rax)
11461 .byte 33,4,61,0,0,128,63 // and %eax,0x3f800000(,%rdi,1)
11462 .byte 0,248 // add %bh,%al
Mike Klein308e6242017-04-27 13:56:33 -040011463 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011464 .byte 8,33 // or %ah,(%rcx)
11465 .byte 132,55 // test %dh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040011466 .byte 224,7 // loopne 3fb1 <.literal4+0x249>
Mike Klein308e6242017-04-27 13:56:33 -040011467 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011468 .byte 33,8 // and %ecx,(%rax)
11469 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040011470 .byte 31 // (bad)
11471 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011472 .byte 0,8 // add %cl,(%rax)
11473 .byte 33,4,61,0,0,128,63 // and %eax,0x3f800000(,%rdi,1)
Mike Klein308e6242017-04-27 13:56:33 -040011474 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011475 .byte 248 // clc
11476 .byte 65,0,0 // add %al,(%r8)
Mike Kleinb3665f02017-05-01 14:56:04 -040011477 .byte 124,66 // jl 4006 <.literal4+0x29e>
Mike Kleinfe560a82017-05-01 12:56:35 -040011478 .byte 0,240 // add %dh,%al
Mike Klein308e6242017-04-27 13:56:33 -040011479 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011480 .byte 137,136,136,55,0,15 // mov %ecx,0xf003788(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040011481 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011482 .byte 137,136,136,57,240,0 // mov %ecx,0xf03988(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040011483 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011484 .byte 137,136,136,59,15,0 // mov %ecx,0xf3b88(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040011485 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011486 .byte 137,136,136,61,0,240 // mov %ecx,-0xfffc278(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040011487 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040011488 .byte 137,136,136,55,0,15 // mov %ecx,0xf003788(%rax)
11489 .byte 0,0 // add %al,(%rax)
11490 .byte 137,136,136,57,240,0 // mov %ecx,0xf03988(%rax)
11491 .byte 0,0 // add %al,(%rax)
11492 .byte 137,136,136,59,15,0 // mov %ecx,0xf3b88(%rax)
11493 .byte 0,0 // add %al,(%rax)
11494 .byte 137,136,136,61,0,0 // mov %ecx,0x3d88(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040011495 .byte 112,65 // jo 4049 <.literal4+0x2e1>
Mike Kleinfe560a82017-05-01 12:56:35 -040011496 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040011497 .byte 127,67 // jg 4057 <.literal4+0x2ef>
Mike Kleinfe560a82017-05-01 12:56:35 -040011498 .byte 128,0,128 // addb $0x80,(%rax)
11499 .byte 55 // (bad)
11500 .byte 128,0,128 // addb $0x80,(%rax)
11501 .byte 55 // (bad)
11502 .byte 0,0 // add %al,(%rax)
11503 .byte 128,63,0 // cmpb $0x0,(%rdi)
11504 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011505 .byte 127,71 // jg 406b <.literal4+0x303>
Mike Kleinfe560a82017-05-01 12:56:35 -040011506 .byte 208 // (bad)
11507 .byte 179,89 // mov $0x59,%bl
11508 .byte 62,89 // ds pop %rcx
11509 .byte 23 // (bad)
11510 .byte 55 // (bad)
11511 .byte 63 // (bad)
11512 .byte 152 // cwtl
11513 .byte 221,147,61,0,0,0 // fstl 0x3d(%rbx)
11514 .byte 63 // (bad)
11515 .byte 0,0 // add %al,(%rax)
11516 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
11517 .byte 0,0 // add %al,(%rax)
11518 .byte 0,63 // add %bh,(%rdi)
11519 .byte 0,0 // add %al,(%rax)
11520 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
11521 .byte 0,0 // add %al,(%rax)
11522 .byte 0,63 // add %bh,(%rdi)
11523 .byte 0,0 // add %al,(%rax)
11524 .byte 192,191,0,0,128,63,171 // sarb $0xab,0x3f800000(%rdi)
11525 .byte 170 // stos %al,%es:(%rdi)
11526 .byte 170 // stos %al,%es:(%rdi)
11527 .byte 190,114,28,199,62 // mov $0x3ec71c72,%esi
11528 .byte 0,0 // add %al,(%rax)
11529 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
11530 .byte 0,0 // add %al,(%rax)
11531 .byte 192,63,85 // sarb $0x55,(%rdi)
11532 .byte 85 // push %rbp
11533 .byte 149 // xchg %eax,%ebp
11534 .byte 191,0,0,0,63 // mov $0x3f000000,%edi
11535 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
11536 .byte 0,63 // add %bh,(%rdi)
11537 .byte 0,0 // add %al,(%rax)
11538 .byte 192,63,85 // sarb $0x55,(%rdi)
11539 .byte 85 // push %rbp
11540 .byte 149 // xchg %eax,%ebp
11541 .byte 191,57,142,99,61 // mov $0x3d638e39,%edi
11542 .byte 0,0 // add %al,(%rax)
11543 .byte 192,63,171 // sarb $0xab,(%rdi)
11544 .byte 170 // stos %al,%es:(%rdi)
11545 .byte 170 // stos %al,%es:(%rdi)
11546 .byte 190,114,28,199,62 // mov $0x3ec71c72,%esi
11547 .byte 0,0 // add %al,(%rax)
11548 .byte 192,191,0,0,128,63,171 // sarb $0xab,0x3f800000(%rdi)
11549 .byte 170 // stos %al,%es:(%rdi)
11550 .byte 170 // stos %al,%es:(%rdi)
11551 .byte 190,114,28,199,62 // mov $0x3ec71c72,%esi
11552 .byte 0,0 // add %al,(%rax)
11553 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
11554 .byte 0,0 // add %al,(%rax)
11555 .byte 192,63,85 // sarb $0x55,(%rdi)
11556 .byte 85 // push %rbp
11557 .byte 149 // xchg %eax,%ebp
11558 .byte 191,0,0,0,63 // mov $0x3f000000,%edi
11559 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
11560 .byte 0,63 // add %bh,(%rdi)
11561 .byte 0,0 // add %al,(%rax)
11562 .byte 192,63,85 // sarb $0x55,(%rdi)
11563 .byte 85 // push %rbp
11564 .byte 149 // xchg %eax,%ebp
11565 .byte 191,57,142,99,61 // mov $0x3d638e39,%edi
11566 .byte 0,0 // add %al,(%rax)
11567 .byte 192,63,171 // sarb $0xab,(%rdi)
11568 .byte 170 // stos %al,%es:(%rdi)
11569 .byte 170 // stos %al,%es:(%rdi)
11570 .byte 190,114,28,199,62 // mov $0x3ec71c72,%esi
Mike Klein0aa742f2017-04-27 13:36:57 -040011571
11572BALIGN32
11573 .byte 255,0 // incl (%rax)
11574 .byte 0,0 // add %al,(%rax)
11575 .byte 255,0 // incl (%rax)
11576 .byte 0,0 // add %al,(%rax)
11577 .byte 255,0 // incl (%rax)
11578 .byte 0,0 // add %al,(%rax)
11579 .byte 255,0 // incl (%rax)
11580 .byte 0,0 // add %al,(%rax)
11581 .byte 255,0 // incl (%rax)
11582 .byte 0,0 // add %al,(%rax)
11583 .byte 255,0 // incl (%rax)
11584 .byte 0,0 // add %al,(%rax)
11585 .byte 255,0 // incl (%rax)
11586 .byte 0,0 // add %al,(%rax)
11587 .byte 255,0 // incl (%rax)
11588 .byte 0,0 // add %al,(%rax)
11589 .byte 1,255 // add %edi,%edi
11590 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011591 .byte 255,5,255,255,255,9 // incl 0x9ffffff(%rip) # a004108 <_sk_callback_hsw+0xa0004c5>
Mike Klein0aa742f2017-04-27 13:36:57 -040011592 .byte 255 // (bad)
11593 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011594 .byte 255,13,255,255,255,17 // decl 0x11ffffff(%rip) # 12004110 <_sk_callback_hsw+0x120004cd>
Mike Klein0aa742f2017-04-27 13:36:57 -040011595 .byte 255 // (bad)
11596 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011597 .byte 255,21,255,255,255,25 // callq *0x19ffffff(%rip) # 1a004118 <_sk_callback_hsw+0x1a0004d5>
Mike Klein0aa742f2017-04-27 13:36:57 -040011598 .byte 255 // (bad)
11599 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011600 .byte 255,29,255,255,255,2 // lcall *0x2ffffff(%rip) # 3004120 <_sk_callback_hsw+0x30004dd>
Mike Klein0aa742f2017-04-27 13:36:57 -040011601 .byte 255 // (bad)
11602 .byte 255 // (bad)
11603 .byte 255,6 // incl (%rsi)
11604 .byte 255 // (bad)
11605 .byte 255 // (bad)
11606 .byte 255,10 // decl (%rdx)
11607 .byte 255 // (bad)
11608 .byte 255 // (bad)
11609 .byte 255,14 // decl (%rsi)
11610 .byte 255 // (bad)
11611 .byte 255 // (bad)
11612 .byte 255,18 // callq *(%rdx)
11613 .byte 255 // (bad)
11614 .byte 255 // (bad)
11615 .byte 255,22 // callq *(%rsi)
11616 .byte 255 // (bad)
11617 .byte 255 // (bad)
11618 .byte 255,26 // lcall *(%rdx)
11619 .byte 255 // (bad)
11620 .byte 255 // (bad)
11621 .byte 255,30 // lcall *(%rsi)
11622 .byte 255 // (bad)
11623 .byte 255 // (bad)
11624 .byte 255 // (bad)
11625 .byte 255,0 // incl (%rax)
11626 .byte 0,0 // add %al,(%rax)
11627 .byte 255,0 // incl (%rax)
11628 .byte 0,0 // add %al,(%rax)
11629 .byte 255,0 // incl (%rax)
11630 .byte 0,0 // add %al,(%rax)
11631 .byte 255,0 // incl (%rax)
11632 .byte 0,0 // add %al,(%rax)
11633 .byte 255,0 // incl (%rax)
11634 .byte 0,0 // add %al,(%rax)
11635 .byte 255,0 // incl (%rax)
11636 .byte 0,0 // add %al,(%rax)
11637 .byte 255,0 // incl (%rax)
11638 .byte 0,0 // add %al,(%rax)
11639 .byte 255,0 // incl (%rax)
11640 .byte 0,0 // add %al,(%rax)
11641 .byte 1,255 // add %edi,%edi
11642 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011643 .byte 255,5,255,255,255,9 // incl 0x9ffffff(%rip) # a004168 <_sk_callback_hsw+0xa000525>
Mike Klein0aa742f2017-04-27 13:36:57 -040011644 .byte 255 // (bad)
11645 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011646 .byte 255,13,255,255,255,17 // decl 0x11ffffff(%rip) # 12004170 <_sk_callback_hsw+0x1200052d>
Mike Klein0aa742f2017-04-27 13:36:57 -040011647 .byte 255 // (bad)
11648 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011649 .byte 255,21,255,255,255,25 // callq *0x19ffffff(%rip) # 1a004178 <_sk_callback_hsw+0x1a000535>
Mike Klein0aa742f2017-04-27 13:36:57 -040011650 .byte 255 // (bad)
11651 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011652 .byte 255,29,255,255,255,2 // lcall *0x2ffffff(%rip) # 3004180 <_sk_callback_hsw+0x300053d>
Mike Klein0aa742f2017-04-27 13:36:57 -040011653 .byte 255 // (bad)
11654 .byte 255 // (bad)
11655 .byte 255,6 // incl (%rsi)
11656 .byte 255 // (bad)
11657 .byte 255 // (bad)
11658 .byte 255,10 // decl (%rdx)
11659 .byte 255 // (bad)
11660 .byte 255 // (bad)
11661 .byte 255,14 // decl (%rsi)
11662 .byte 255 // (bad)
11663 .byte 255 // (bad)
11664 .byte 255,18 // callq *(%rdx)
11665 .byte 255 // (bad)
11666 .byte 255 // (bad)
11667 .byte 255,22 // callq *(%rsi)
11668 .byte 255 // (bad)
11669 .byte 255 // (bad)
11670 .byte 255,26 // lcall *(%rdx)
11671 .byte 255 // (bad)
11672 .byte 255 // (bad)
11673 .byte 255,30 // lcall *(%rsi)
11674 .byte 255 // (bad)
11675 .byte 255 // (bad)
11676 .byte 255 // (bad)
11677 .byte 255,0 // incl (%rax)
11678 .byte 0,0 // add %al,(%rax)
11679 .byte 255,0 // incl (%rax)
11680 .byte 0,0 // add %al,(%rax)
11681 .byte 255,0 // incl (%rax)
11682 .byte 0,0 // add %al,(%rax)
11683 .byte 255,0 // incl (%rax)
11684 .byte 0,0 // add %al,(%rax)
11685 .byte 255,0 // incl (%rax)
11686 .byte 0,0 // add %al,(%rax)
11687 .byte 255,0 // incl (%rax)
11688 .byte 0,0 // add %al,(%rax)
11689 .byte 255,0 // incl (%rax)
11690 .byte 0,0 // add %al,(%rax)
11691 .byte 255,0 // incl (%rax)
11692 .byte 0,0 // add %al,(%rax)
11693 .byte 1,255 // add %edi,%edi
11694 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011695 .byte 255,5,255,255,255,9 // incl 0x9ffffff(%rip) # a0041c8 <_sk_callback_hsw+0xa000585>
Mike Klein0aa742f2017-04-27 13:36:57 -040011696 .byte 255 // (bad)
11697 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011698 .byte 255,13,255,255,255,17 // decl 0x11ffffff(%rip) # 120041d0 <_sk_callback_hsw+0x1200058d>
Mike Klein0aa742f2017-04-27 13:36:57 -040011699 .byte 255 // (bad)
11700 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011701 .byte 255,21,255,255,255,25 // callq *0x19ffffff(%rip) # 1a0041d8 <_sk_callback_hsw+0x1a000595>
Mike Klein0aa742f2017-04-27 13:36:57 -040011702 .byte 255 // (bad)
11703 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011704 .byte 255,29,255,255,255,2 // lcall *0x2ffffff(%rip) # 30041e0 <_sk_callback_hsw+0x300059d>
Mike Klein0aa742f2017-04-27 13:36:57 -040011705 .byte 255 // (bad)
11706 .byte 255 // (bad)
11707 .byte 255,6 // incl (%rsi)
11708 .byte 255 // (bad)
11709 .byte 255 // (bad)
11710 .byte 255,10 // decl (%rdx)
11711 .byte 255 // (bad)
11712 .byte 255 // (bad)
11713 .byte 255,14 // decl (%rsi)
11714 .byte 255 // (bad)
11715 .byte 255 // (bad)
11716 .byte 255,18 // callq *(%rdx)
11717 .byte 255 // (bad)
11718 .byte 255 // (bad)
11719 .byte 255,22 // callq *(%rsi)
11720 .byte 255 // (bad)
11721 .byte 255 // (bad)
11722 .byte 255,26 // lcall *(%rdx)
11723 .byte 255 // (bad)
11724 .byte 255 // (bad)
11725 .byte 255,30 // lcall *(%rsi)
11726 .byte 255 // (bad)
11727 .byte 255 // (bad)
11728 .byte 255 // (bad)
11729 .byte 255,0 // incl (%rax)
11730 .byte 0,0 // add %al,(%rax)
11731 .byte 255,0 // incl (%rax)
11732 .byte 0,0 // add %al,(%rax)
11733 .byte 255,0 // incl (%rax)
11734 .byte 0,0 // add %al,(%rax)
11735 .byte 255,0 // incl (%rax)
11736 .byte 0,0 // add %al,(%rax)
11737 .byte 255,0 // incl (%rax)
11738 .byte 0,0 // add %al,(%rax)
11739 .byte 255,0 // incl (%rax)
11740 .byte 0,0 // add %al,(%rax)
11741 .byte 255,0 // incl (%rax)
11742 .byte 0,0 // add %al,(%rax)
11743 .byte 255,0 // incl (%rax)
11744 .byte 0,0 // add %al,(%rax)
11745 .byte 1,255 // add %edi,%edi
11746 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011747 .byte 255,5,255,255,255,9 // incl 0x9ffffff(%rip) # a004228 <_sk_callback_hsw+0xa0005e5>
Mike Klein0aa742f2017-04-27 13:36:57 -040011748 .byte 255 // (bad)
11749 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011750 .byte 255,13,255,255,255,17 // decl 0x11ffffff(%rip) # 12004230 <_sk_callback_hsw+0x120005ed>
Mike Klein0aa742f2017-04-27 13:36:57 -040011751 .byte 255 // (bad)
11752 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011753 .byte 255,21,255,255,255,25 // callq *0x19ffffff(%rip) # 1a004238 <_sk_callback_hsw+0x1a0005f5>
Mike Klein0aa742f2017-04-27 13:36:57 -040011754 .byte 255 // (bad)
11755 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040011756 .byte 255,29,255,255,255,2 // lcall *0x2ffffff(%rip) # 3004240 <_sk_callback_hsw+0x30005fd>
Mike Klein0aa742f2017-04-27 13:36:57 -040011757 .byte 255 // (bad)
11758 .byte 255 // (bad)
11759 .byte 255,6 // incl (%rsi)
11760 .byte 255 // (bad)
11761 .byte 255 // (bad)
11762 .byte 255,10 // decl (%rdx)
11763 .byte 255 // (bad)
11764 .byte 255 // (bad)
11765 .byte 255,14 // decl (%rsi)
11766 .byte 255 // (bad)
11767 .byte 255 // (bad)
11768 .byte 255,18 // callq *(%rdx)
11769 .byte 255 // (bad)
11770 .byte 255 // (bad)
11771 .byte 255,22 // callq *(%rsi)
11772 .byte 255 // (bad)
11773 .byte 255 // (bad)
11774 .byte 255,26 // lcall *(%rdx)
11775 .byte 255 // (bad)
11776 .byte 255 // (bad)
11777 .byte 255,30 // lcall *(%rsi)
11778 .byte 255 // (bad)
11779 .byte 255 // (bad)
11780 .byte 255 // .byte 0xff
11781
11782BALIGN16
11783 .byte 255,0 // incl (%rax)
11784 .byte 255,0 // incl (%rax)
11785 .byte 255,0 // incl (%rax)
11786 .byte 255,0 // incl (%rax)
11787 .byte 255,0 // incl (%rax)
11788 .byte 255,0 // incl (%rax)
11789 .byte 255,0 // incl (%rax)
11790 .byte 255,0 // incl (%rax)
11791 .byte 255,0 // incl (%rax)
11792 .byte 255,0 // incl (%rax)
11793 .byte 255,0 // incl (%rax)
11794 .byte 255,0 // incl (%rax)
11795 .byte 255,0 // incl (%rax)
11796 .byte 255,0 // incl (%rax)
11797 .byte 255,0 // incl (%rax)
11798 .byte 255,0 // incl (%rax)
Mike Klein67e61712017-04-26 09:52:09 -040011799BALIGN32
Mike Klein2229b572017-04-21 10:30:29 -040011800
Mike Klein7c4af542017-03-29 18:21:14 -040011801HIDDEN _sk_start_pipeline_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040011802.globl _sk_start_pipeline_avx
Mike Klein86714282017-04-13 17:37:38 -040011803FUNCTION(_sk_start_pipeline_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011804_sk_start_pipeline_avx:
11805 .byte 65,87 // push %r15
11806 .byte 65,86 // push %r14
11807 .byte 65,85 // push %r13
11808 .byte 65,84 // push %r12
11809 .byte 83 // push %rbx
11810 .byte 73,137,205 // mov %rcx,%r13
11811 .byte 73,137,214 // mov %rdx,%r14
11812 .byte 72,137,251 // mov %rdi,%rbx
11813 .byte 72,173 // lods %ds:(%rsi),%rax
11814 .byte 73,137,199 // mov %rax,%r15
11815 .byte 73,137,244 // mov %rsi,%r12
11816 .byte 72,141,67,8 // lea 0x8(%rbx),%rax
11817 .byte 76,57,232 // cmp %r13,%rax
11818 .byte 118,5 // jbe 28 <_sk_start_pipeline_avx+0x28>
11819 .byte 72,137,223 // mov %rbx,%rdi
11820 .byte 235,65 // jmp 69 <_sk_start_pipeline_avx+0x69>
11821 .byte 185,0,0,0,0 // mov $0x0,%ecx
11822 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
11823 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
11824 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
11825 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
11826 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
11827 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
11828 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
11829 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
11830 .byte 72,137,223 // mov %rbx,%rdi
11831 .byte 76,137,230 // mov %r12,%rsi
11832 .byte 76,137,242 // mov %r14,%rdx
11833 .byte 65,255,215 // callq *%r15
11834 .byte 72,141,123,8 // lea 0x8(%rbx),%rdi
11835 .byte 72,131,195,16 // add $0x10,%rbx
11836 .byte 76,57,235 // cmp %r13,%rbx
11837 .byte 72,137,251 // mov %rdi,%rbx
11838 .byte 118,191 // jbe 28 <_sk_start_pipeline_avx+0x28>
11839 .byte 76,137,233 // mov %r13,%rcx
11840 .byte 72,41,249 // sub %rdi,%rcx
11841 .byte 116,41 // je 9a <_sk_start_pipeline_avx+0x9a>
11842 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
11843 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
11844 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
11845 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
11846 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
11847 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
11848 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
11849 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
11850 .byte 76,137,230 // mov %r12,%rsi
11851 .byte 76,137,242 // mov %r14,%rdx
11852 .byte 65,255,215 // callq *%r15
11853 .byte 76,137,232 // mov %r13,%rax
11854 .byte 91 // pop %rbx
11855 .byte 65,92 // pop %r12
11856 .byte 65,93 // pop %r13
11857 .byte 65,94 // pop %r14
11858 .byte 65,95 // pop %r15
11859 .byte 197,248,119 // vzeroupper
11860 .byte 195 // retq
11861
Mike Klein7c4af542017-03-29 18:21:14 -040011862HIDDEN _sk_just_return_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040011863.globl _sk_just_return_avx
Mike Klein86714282017-04-13 17:37:38 -040011864FUNCTION(_sk_just_return_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011865_sk_just_return_avx:
11866 .byte 195 // retq
11867
Mike Klein7c4af542017-03-29 18:21:14 -040011868HIDDEN _sk_seed_shader_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040011869.globl _sk_seed_shader_avx
Mike Klein86714282017-04-13 17:37:38 -040011870FUNCTION(_sk_seed_shader_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011871_sk_seed_shader_avx:
11872 .byte 72,173 // lods %ds:(%rsi),%rax
11873 .byte 197,249,110,199 // vmovd %edi,%xmm0
11874 .byte 197,249,112,192,0 // vpshufd $0x0,%xmm0,%xmm0
11875 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
11876 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040011877 .byte 196,226,125,24,13,111,83,0,0 // vbroadcastss 0x536f(%rip),%ymm1 # 5438 <_sk_callback_avx+0x126>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011878 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
11879 .byte 197,252,88,2 // vaddps (%rdx),%ymm0,%ymm0
11880 .byte 196,226,125,24,16 // vbroadcastss (%rax),%ymm2
11881 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
11882 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040011883 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040011884 .byte 196,226,125,24,21,83,83,0,0 // vbroadcastss 0x5353(%rip),%ymm2 # 543c <_sk_callback_avx+0x12a>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011885 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
11886 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
11887 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
11888 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
11889 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
11890 .byte 255,224 // jmpq *%rax
11891
Mike Klein7c4af542017-03-29 18:21:14 -040011892HIDDEN _sk_constant_color_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040011893.globl _sk_constant_color_avx
Mike Klein86714282017-04-13 17:37:38 -040011894FUNCTION(_sk_constant_color_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011895_sk_constant_color_avx:
11896 .byte 72,173 // lods %ds:(%rsi),%rax
11897 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
11898 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
11899 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
11900 .byte 196,226,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm3
11901 .byte 72,173 // lods %ds:(%rsi),%rax
11902 .byte 255,224 // jmpq *%rax
11903
Mike Klein7c4af542017-03-29 18:21:14 -040011904HIDDEN _sk_clear_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040011905.globl _sk_clear_avx
Mike Klein86714282017-04-13 17:37:38 -040011906FUNCTION(_sk_clear_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011907_sk_clear_avx:
11908 .byte 72,173 // lods %ds:(%rsi),%rax
11909 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
11910 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
11911 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
11912 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
11913 .byte 255,224 // jmpq *%rax
11914
Mike Kleinaaca1e42017-03-31 09:29:01 -040011915HIDDEN _sk_srcatop_avx
11916.globl _sk_srcatop_avx
Mike Klein86714282017-04-13 17:37:38 -040011917FUNCTION(_sk_srcatop_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040011918_sk_srcatop_avx:
Mike Kleinfe560a82017-05-01 12:56:35 -040011919 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040011920 .byte 196,98,125,24,5,3,83,0,0 // vbroadcastss 0x5303(%rip),%ymm8 # 5440 <_sk_callback_avx+0x12e>
Mike Kleinfe560a82017-05-01 12:56:35 -040011921 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
11922 .byte 197,60,89,204 // vmulps %ymm4,%ymm8,%ymm9
11923 .byte 197,180,88,192 // vaddps %ymm0,%ymm9,%ymm0
Mike Kleinaaca1e42017-03-31 09:29:01 -040011924 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040011925 .byte 197,60,89,205 // vmulps %ymm5,%ymm8,%ymm9
11926 .byte 197,180,88,201 // vaddps %ymm1,%ymm9,%ymm1
Mike Kleinaaca1e42017-03-31 09:29:01 -040011927 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040011928 .byte 197,60,89,206 // vmulps %ymm6,%ymm8,%ymm9
11929 .byte 197,180,88,210 // vaddps %ymm2,%ymm9,%ymm2
Mike Kleinaaca1e42017-03-31 09:29:01 -040011930 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040011931 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
Mike Kleinaaca1e42017-03-31 09:29:01 -040011932 .byte 196,193,100,88,216 // vaddps %ymm8,%ymm3,%ymm3
11933 .byte 72,173 // lods %ds:(%rsi),%rax
11934 .byte 255,224 // jmpq *%rax
11935
11936HIDDEN _sk_dstatop_avx
11937.globl _sk_dstatop_avx
Mike Klein86714282017-04-13 17:37:38 -040011938FUNCTION(_sk_dstatop_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040011939_sk_dstatop_avx:
11940 .byte 197,100,89,196 // vmulps %ymm4,%ymm3,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040011941 .byte 196,98,125,24,13,197,82,0,0 // vbroadcastss 0x52c5(%rip),%ymm9 # 5444 <_sk_callback_avx+0x132>
Mike Kleinaaca1e42017-03-31 09:29:01 -040011942 .byte 197,52,92,207 // vsubps %ymm7,%ymm9,%ymm9
11943 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
11944 .byte 197,188,88,192 // vaddps %ymm0,%ymm8,%ymm0
11945 .byte 197,100,89,197 // vmulps %ymm5,%ymm3,%ymm8
11946 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
11947 .byte 197,188,88,201 // vaddps %ymm1,%ymm8,%ymm1
11948 .byte 197,100,89,198 // vmulps %ymm6,%ymm3,%ymm8
11949 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
11950 .byte 197,188,88,210 // vaddps %ymm2,%ymm8,%ymm2
11951 .byte 197,100,89,199 // vmulps %ymm7,%ymm3,%ymm8
11952 .byte 197,180,89,219 // vmulps %ymm3,%ymm9,%ymm3
11953 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
11954 .byte 72,173 // lods %ds:(%rsi),%rax
11955 .byte 255,224 // jmpq *%rax
11956
11957HIDDEN _sk_srcin_avx
11958.globl _sk_srcin_avx
Mike Klein86714282017-04-13 17:37:38 -040011959FUNCTION(_sk_srcin_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040011960_sk_srcin_avx:
11961 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
11962 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
11963 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
11964 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
11965 .byte 72,173 // lods %ds:(%rsi),%rax
11966 .byte 255,224 // jmpq *%rax
11967
11968HIDDEN _sk_dstin_avx
11969.globl _sk_dstin_avx
Mike Klein86714282017-04-13 17:37:38 -040011970FUNCTION(_sk_dstin_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040011971_sk_dstin_avx:
11972 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
11973 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
11974 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
11975 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
11976 .byte 72,173 // lods %ds:(%rsi),%rax
11977 .byte 255,224 // jmpq *%rax
11978
11979HIDDEN _sk_srcout_avx
11980.globl _sk_srcout_avx
Mike Klein86714282017-04-13 17:37:38 -040011981FUNCTION(_sk_srcout_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040011982_sk_srcout_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040011983 .byte 196,98,125,24,5,100,82,0,0 // vbroadcastss 0x5264(%rip),%ymm8 # 5448 <_sk_callback_avx+0x136>
Mike Kleinaaca1e42017-03-31 09:29:01 -040011984 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
11985 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
11986 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
11987 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
11988 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
11989 .byte 72,173 // lods %ds:(%rsi),%rax
11990 .byte 255,224 // jmpq *%rax
11991
11992HIDDEN _sk_dstout_avx
11993.globl _sk_dstout_avx
Mike Klein86714282017-04-13 17:37:38 -040011994FUNCTION(_sk_dstout_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040011995_sk_dstout_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040011996 .byte 196,226,125,24,5,71,82,0,0 // vbroadcastss 0x5247(%rip),%ymm0 # 544c <_sk_callback_avx+0x13a>
Mike Kleinaaca1e42017-03-31 09:29:01 -040011997 .byte 197,252,92,219 // vsubps %ymm3,%ymm0,%ymm3
11998 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
11999 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
12000 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
12001 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040012002 .byte 72,173 // lods %ds:(%rsi),%rax
12003 .byte 255,224 // jmpq *%rax
12004
Mike Klein7c4af542017-03-29 18:21:14 -040012005HIDDEN _sk_srcover_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012006.globl _sk_srcover_avx
Mike Klein86714282017-04-13 17:37:38 -040012007FUNCTION(_sk_srcover_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012008_sk_srcover_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040012009 .byte 196,98,125,24,5,42,82,0,0 // vbroadcastss 0x522a(%rip),%ymm8 # 5450 <_sk_callback_avx+0x13e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012010 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12011 .byte 197,60,89,204 // vmulps %ymm4,%ymm8,%ymm9
12012 .byte 197,180,88,192 // vaddps %ymm0,%ymm9,%ymm0
12013 .byte 197,60,89,205 // vmulps %ymm5,%ymm8,%ymm9
12014 .byte 197,180,88,201 // vaddps %ymm1,%ymm9,%ymm1
12015 .byte 197,60,89,206 // vmulps %ymm6,%ymm8,%ymm9
12016 .byte 197,180,88,210 // vaddps %ymm2,%ymm9,%ymm2
12017 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12018 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12019 .byte 72,173 // lods %ds:(%rsi),%rax
12020 .byte 255,224 // jmpq *%rax
12021
Mike Klein7c4af542017-03-29 18:21:14 -040012022HIDDEN _sk_dstover_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012023.globl _sk_dstover_avx
Mike Klein86714282017-04-13 17:37:38 -040012024FUNCTION(_sk_dstover_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012025_sk_dstover_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040012026 .byte 196,98,125,24,5,253,81,0,0 // vbroadcastss 0x51fd(%rip),%ymm8 # 5454 <_sk_callback_avx+0x142>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012027 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
12028 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
12029 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
12030 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
12031 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
12032 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
12033 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
12034 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
12035 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
12036 .byte 72,173 // lods %ds:(%rsi),%rax
12037 .byte 255,224 // jmpq *%rax
12038
Mike Kleinaaca1e42017-03-31 09:29:01 -040012039HIDDEN _sk_modulate_avx
12040.globl _sk_modulate_avx
Mike Klein86714282017-04-13 17:37:38 -040012041FUNCTION(_sk_modulate_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012042_sk_modulate_avx:
12043 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
12044 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
12045 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
12046 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
12047 .byte 72,173 // lods %ds:(%rsi),%rax
12048 .byte 255,224 // jmpq *%rax
12049
12050HIDDEN _sk_multiply_avx
12051.globl _sk_multiply_avx
Mike Klein86714282017-04-13 17:37:38 -040012052FUNCTION(_sk_multiply_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012053_sk_multiply_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040012054 .byte 196,98,125,24,5,188,81,0,0 // vbroadcastss 0x51bc(%rip),%ymm8 # 5458 <_sk_callback_avx+0x146>
Mike Kleinaaca1e42017-03-31 09:29:01 -040012055 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
12056 .byte 197,52,89,208 // vmulps %ymm0,%ymm9,%ymm10
12057 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12058 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
Mike Kleinfe560a82017-05-01 12:56:35 -040012059 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
Mike Kleinaaca1e42017-03-31 09:29:01 -040012060 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
12061 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
12062 .byte 197,52,89,209 // vmulps %ymm1,%ymm9,%ymm10
12063 .byte 197,60,89,221 // vmulps %ymm5,%ymm8,%ymm11
12064 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
12065 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
12066 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
12067 .byte 197,52,89,210 // vmulps %ymm2,%ymm9,%ymm10
12068 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
12069 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
12070 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
12071 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
12072 .byte 197,52,89,203 // vmulps %ymm3,%ymm9,%ymm9
12073 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12074 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
12075 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
12076 .byte 196,193,100,88,216 // vaddps %ymm8,%ymm3,%ymm3
12077 .byte 72,173 // lods %ds:(%rsi),%rax
12078 .byte 255,224 // jmpq *%rax
12079
12080HIDDEN _sk_plus__avx
12081.globl _sk_plus__avx
Mike Klein86714282017-04-13 17:37:38 -040012082FUNCTION(_sk_plus__avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012083_sk_plus__avx:
12084 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
12085 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
12086 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
12087 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
12088 .byte 72,173 // lods %ds:(%rsi),%rax
12089 .byte 255,224 // jmpq *%rax
12090
12091HIDDEN _sk_screen_avx
12092.globl _sk_screen_avx
Mike Klein86714282017-04-13 17:37:38 -040012093FUNCTION(_sk_screen_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012094_sk_screen_avx:
12095 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
12096 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
12097 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12098 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
12099 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
12100 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
12101 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
12102 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
12103 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
12104 .byte 197,100,88,199 // vaddps %ymm7,%ymm3,%ymm8
12105 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
12106 .byte 197,188,92,219 // vsubps %ymm3,%ymm8,%ymm3
12107 .byte 72,173 // lods %ds:(%rsi),%rax
12108 .byte 255,224 // jmpq *%rax
12109
12110HIDDEN _sk_xor__avx
12111.globl _sk_xor__avx
Mike Klein86714282017-04-13 17:37:38 -040012112FUNCTION(_sk_xor__avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012113_sk_xor__avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040012114 .byte 196,98,125,24,5,11,81,0,0 // vbroadcastss 0x510b(%rip),%ymm8 # 545c <_sk_callback_avx+0x14a>
Mike Kleinaaca1e42017-03-31 09:29:01 -040012115 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
12116 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
12117 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12118 .byte 197,60,89,212 // vmulps %ymm4,%ymm8,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040012119 .byte 197,172,88,192 // vaddps %ymm0,%ymm10,%ymm0
Mike Kleinaaca1e42017-03-31 09:29:01 -040012120 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
12121 .byte 197,60,89,213 // vmulps %ymm5,%ymm8,%ymm10
12122 .byte 197,172,88,201 // vaddps %ymm1,%ymm10,%ymm1
12123 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
12124 .byte 197,60,89,214 // vmulps %ymm6,%ymm8,%ymm10
12125 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
12126 .byte 197,180,89,219 // vmulps %ymm3,%ymm9,%ymm3
12127 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12128 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12129 .byte 72,173 // lods %ds:(%rsi),%rax
12130 .byte 255,224 // jmpq *%rax
12131
Mike Klein66b09ab2017-03-31 10:29:40 -040012132HIDDEN _sk_darken_avx
12133.globl _sk_darken_avx
Mike Klein86714282017-04-13 17:37:38 -040012134FUNCTION(_sk_darken_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040012135_sk_darken_avx:
12136 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
12137 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
12138 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
12139 .byte 196,193,124,95,193 // vmaxps %ymm9,%ymm0,%ymm0
12140 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12141 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
12142 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
12143 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
12144 .byte 196,193,116,95,201 // vmaxps %ymm9,%ymm1,%ymm1
12145 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
12146 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
12147 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
12148 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
12149 .byte 196,193,108,95,209 // vmaxps %ymm9,%ymm2,%ymm2
12150 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040012151 .byte 196,98,125,24,5,139,80,0,0 // vbroadcastss 0x508b(%rip),%ymm8 # 5460 <_sk_callback_avx+0x14e>
Mike Klein66b09ab2017-03-31 10:29:40 -040012152 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12153 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12154 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12155 .byte 72,173 // lods %ds:(%rsi),%rax
12156 .byte 255,224 // jmpq *%rax
12157
12158HIDDEN _sk_lighten_avx
12159.globl _sk_lighten_avx
Mike Klein86714282017-04-13 17:37:38 -040012160FUNCTION(_sk_lighten_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040012161_sk_lighten_avx:
12162 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
12163 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
12164 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
12165 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
12166 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12167 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
12168 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
12169 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
12170 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
12171 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
12172 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
12173 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
12174 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
12175 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
12176 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040012177 .byte 196,98,125,24,5,55,80,0,0 // vbroadcastss 0x5037(%rip),%ymm8 # 5464 <_sk_callback_avx+0x152>
Mike Klein66b09ab2017-03-31 10:29:40 -040012178 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12179 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12180 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12181 .byte 72,173 // lods %ds:(%rsi),%rax
12182 .byte 255,224 // jmpq *%rax
12183
12184HIDDEN _sk_difference_avx
12185.globl _sk_difference_avx
Mike Klein86714282017-04-13 17:37:38 -040012186FUNCTION(_sk_difference_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040012187_sk_difference_avx:
12188 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
12189 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
12190 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
12191 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
12192 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
12193 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12194 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
12195 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
12196 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
12197 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
12198 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
12199 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
12200 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
12201 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
12202 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
12203 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
12204 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
12205 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040012206 .byte 196,98,125,24,5,215,79,0,0 // vbroadcastss 0x4fd7(%rip),%ymm8 # 5468 <_sk_callback_avx+0x156>
Mike Klein66b09ab2017-03-31 10:29:40 -040012207 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12208 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12209 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12210 .byte 72,173 // lods %ds:(%rsi),%rax
12211 .byte 255,224 // jmpq *%rax
12212
12213HIDDEN _sk_exclusion_avx
12214.globl _sk_exclusion_avx
Mike Klein86714282017-04-13 17:37:38 -040012215FUNCTION(_sk_exclusion_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040012216_sk_exclusion_avx:
12217 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
12218 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
12219 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
12220 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12221 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
12222 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
12223 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
12224 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
12225 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
12226 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
12227 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
12228 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040012229 .byte 196,98,125,24,5,146,79,0,0 // vbroadcastss 0x4f92(%rip),%ymm8 # 546c <_sk_callback_avx+0x15a>
Mike Klein66b09ab2017-03-31 10:29:40 -040012230 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12231 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12232 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12233 .byte 72,173 // lods %ds:(%rsi),%rax
12234 .byte 255,224 // jmpq *%rax
12235
Mike Klein61b84162017-03-31 11:48:14 -040012236HIDDEN _sk_colorburn_avx
12237.globl _sk_colorburn_avx
Mike Klein86714282017-04-13 17:37:38 -040012238FUNCTION(_sk_colorburn_avx)
Mike Klein61b84162017-03-31 11:48:14 -040012239_sk_colorburn_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040012240 .byte 196,98,125,24,5,125,79,0,0 // vbroadcastss 0x4f7d(%rip),%ymm8 # 5470 <_sk_callback_avx+0x15e>
Mike Klein61b84162017-03-31 11:48:14 -040012241 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
12242 .byte 197,52,89,216 // vmulps %ymm0,%ymm9,%ymm11
12243 .byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
12244 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12245 .byte 197,60,89,228 // vmulps %ymm4,%ymm8,%ymm12
12246 .byte 197,68,92,236 // vsubps %ymm4,%ymm7,%ymm13
12247 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
12248 .byte 197,20,94,232 // vdivps %ymm0,%ymm13,%ymm13
12249 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
12250 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
12251 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
Mike Kleinfe560a82017-05-01 12:56:35 -040012252 .byte 196,65,36,88,237 // vaddps %ymm13,%ymm11,%ymm13
Mike Klein61b84162017-03-31 11:48:14 -040012253 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
12254 .byte 197,28,88,224 // vaddps %ymm0,%ymm12,%ymm12
12255 .byte 196,193,124,194,194,0 // vcmpeqps %ymm10,%ymm0,%ymm0
12256 .byte 196,195,21,74,196,0 // vblendvps %ymm0,%ymm12,%ymm13,%ymm0
12257 .byte 197,92,194,231,0 // vcmpeqps %ymm7,%ymm4,%ymm12
12258 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
12259 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
12260 .byte 197,52,89,217 // vmulps %ymm1,%ymm9,%ymm11
12261 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
12262 .byte 197,68,92,237 // vsubps %ymm5,%ymm7,%ymm13
12263 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
12264 .byte 197,20,94,233 // vdivps %ymm1,%ymm13,%ymm13
12265 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
12266 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
12267 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
12268 .byte 196,65,36,88,237 // vaddps %ymm13,%ymm11,%ymm13
12269 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
12270 .byte 197,28,88,225 // vaddps %ymm1,%ymm12,%ymm12
12271 .byte 196,193,116,194,202,0 // vcmpeqps %ymm10,%ymm1,%ymm1
12272 .byte 196,195,21,74,204,16 // vblendvps %ymm1,%ymm12,%ymm13,%ymm1
12273 .byte 197,84,194,231,0 // vcmpeqps %ymm7,%ymm5,%ymm12
12274 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
12275 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
12276 .byte 197,52,89,202 // vmulps %ymm2,%ymm9,%ymm9
12277 .byte 196,65,108,194,210,0 // vcmpeqps %ymm10,%ymm2,%ymm10
12278 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
12279 .byte 197,68,92,230 // vsubps %ymm6,%ymm7,%ymm12
12280 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
12281 .byte 197,28,94,226 // vdivps %ymm2,%ymm12,%ymm12
12282 .byte 197,164,88,210 // vaddps %ymm2,%ymm11,%ymm2
12283 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
12284 .byte 196,65,68,92,228 // vsubps %ymm12,%ymm7,%ymm12
12285 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
12286 .byte 196,65,52,88,228 // vaddps %ymm12,%ymm9,%ymm12
12287 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
12288 .byte 196,227,37,74,210,160 // vblendvps %ymm10,%ymm2,%ymm11,%ymm2
12289 .byte 197,76,194,215,0 // vcmpeqps %ymm7,%ymm6,%ymm10
12290 .byte 197,52,88,206 // vaddps %ymm6,%ymm9,%ymm9
12291 .byte 196,195,109,74,209,160 // vblendvps %ymm10,%ymm9,%ymm2,%ymm2
12292 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12293 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12294 .byte 72,173 // lods %ds:(%rsi),%rax
12295 .byte 255,224 // jmpq *%rax
12296
12297HIDDEN _sk_colordodge_avx
12298.globl _sk_colordodge_avx
Mike Klein86714282017-04-13 17:37:38 -040012299FUNCTION(_sk_colordodge_avx)
Mike Klein61b84162017-03-31 11:48:14 -040012300_sk_colordodge_avx:
12301 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040012302 .byte 196,98,125,24,13,121,78,0,0 // vbroadcastss 0x4e79(%rip),%ymm9 # 5474 <_sk_callback_avx+0x162>
Mike Klein61b84162017-03-31 11:48:14 -040012303 .byte 197,52,92,215 // vsubps %ymm7,%ymm9,%ymm10
12304 .byte 197,44,89,216 // vmulps %ymm0,%ymm10,%ymm11
12305 .byte 197,52,92,203 // vsubps %ymm3,%ymm9,%ymm9
12306 .byte 197,100,89,228 // vmulps %ymm4,%ymm3,%ymm12
12307 .byte 197,100,92,232 // vsubps %ymm0,%ymm3,%ymm13
12308 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
12309 .byte 197,52,89,236 // vmulps %ymm4,%ymm9,%ymm13
12310 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
12311 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
Mike Kleinfe560a82017-05-01 12:56:35 -040012312 .byte 196,65,36,88,228 // vaddps %ymm12,%ymm11,%ymm12
Mike Klein61b84162017-03-31 11:48:14 -040012313 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
12314 .byte 197,20,88,232 // vaddps %ymm0,%ymm13,%ymm13
12315 .byte 197,252,194,195,0 // vcmpeqps %ymm3,%ymm0,%ymm0
12316 .byte 196,195,29,74,197,0 // vblendvps %ymm0,%ymm13,%ymm12,%ymm0
12317 .byte 196,65,92,194,224,0 // vcmpeqps %ymm8,%ymm4,%ymm12
12318 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
12319 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
12320 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
12321 .byte 197,100,89,229 // vmulps %ymm5,%ymm3,%ymm12
12322 .byte 197,100,92,233 // vsubps %ymm1,%ymm3,%ymm13
12323 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
12324 .byte 197,52,89,237 // vmulps %ymm5,%ymm9,%ymm13
12325 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
12326 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
Mike Kleinfe560a82017-05-01 12:56:35 -040012327 .byte 196,65,36,88,228 // vaddps %ymm12,%ymm11,%ymm12
Mike Klein61b84162017-03-31 11:48:14 -040012328 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
12329 .byte 197,20,88,233 // vaddps %ymm1,%ymm13,%ymm13
12330 .byte 197,244,194,203,0 // vcmpeqps %ymm3,%ymm1,%ymm1
12331 .byte 196,195,29,74,205,16 // vblendvps %ymm1,%ymm13,%ymm12,%ymm1
12332 .byte 196,65,84,194,224,0 // vcmpeqps %ymm8,%ymm5,%ymm12
12333 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
12334 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
12335 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
12336 .byte 197,100,89,222 // vmulps %ymm6,%ymm3,%ymm11
12337 .byte 197,100,92,226 // vsubps %ymm2,%ymm3,%ymm12
12338 .byte 196,65,36,94,220 // vdivps %ymm12,%ymm11,%ymm11
12339 .byte 197,52,89,230 // vmulps %ymm6,%ymm9,%ymm12
12340 .byte 196,65,68,93,219 // vminps %ymm11,%ymm7,%ymm11
12341 .byte 197,36,89,219 // vmulps %ymm3,%ymm11,%ymm11
12342 .byte 196,65,44,88,219 // vaddps %ymm11,%ymm10,%ymm11
12343 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
12344 .byte 197,28,88,226 // vaddps %ymm2,%ymm12,%ymm12
12345 .byte 197,236,194,211,0 // vcmpeqps %ymm3,%ymm2,%ymm2
12346 .byte 196,195,37,74,212,32 // vblendvps %ymm2,%ymm12,%ymm11,%ymm2
12347 .byte 196,65,76,194,192,0 // vcmpeqps %ymm8,%ymm6,%ymm8
12348 .byte 197,44,88,214 // vaddps %ymm6,%ymm10,%ymm10
12349 .byte 196,195,109,74,210,128 // vblendvps %ymm8,%ymm10,%ymm2,%ymm2
12350 .byte 197,52,89,199 // vmulps %ymm7,%ymm9,%ymm8
12351 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12352 .byte 72,173 // lods %ds:(%rsi),%rax
12353 .byte 255,224 // jmpq *%rax
12354
12355HIDDEN _sk_hardlight_avx
12356.globl _sk_hardlight_avx
Mike Klein86714282017-04-13 17:37:38 -040012357FUNCTION(_sk_hardlight_avx)
Mike Klein61b84162017-03-31 11:48:14 -040012358_sk_hardlight_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040012359 .byte 196,98,125,24,5,139,77,0,0 // vbroadcastss 0x4d8b(%rip),%ymm8 # 5478 <_sk_callback_avx+0x166>
Mike Klein61b84162017-03-31 11:48:14 -040012360 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
12361 .byte 197,44,89,200 // vmulps %ymm0,%ymm10,%ymm9
12362 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12363 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
Mike Kleinfe560a82017-05-01 12:56:35 -040012364 .byte 196,65,36,88,217 // vaddps %ymm9,%ymm11,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -040012365 .byte 197,124,88,200 // vaddps %ymm0,%ymm0,%ymm9
12366 .byte 197,52,194,227,2 // vcmpleps %ymm3,%ymm9,%ymm12
12367 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
12368 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
12369 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
12370 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
12371 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
12372 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
12373 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
12374 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
12375 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040012376 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -040012377 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
12378 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
12379 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
12380 .byte 197,116,88,225 // vaddps %ymm1,%ymm1,%ymm12
12381 .byte 197,28,194,227,2 // vcmpleps %ymm3,%ymm12,%ymm12
12382 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
12383 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
12384 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
12385 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
12386 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
12387 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
12388 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
12389 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040012390 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -040012391 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
12392 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
12393 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
12394 .byte 197,108,88,218 // vaddps %ymm2,%ymm2,%ymm11
12395 .byte 197,36,194,219,2 // vcmpleps %ymm3,%ymm11,%ymm11
12396 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
12397 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
12398 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
12399 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
12400 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
12401 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
12402 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
12403 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040012404 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -040012405 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12406 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12407 .byte 72,173 // lods %ds:(%rsi),%rax
12408 .byte 255,224 // jmpq *%rax
12409
12410HIDDEN _sk_overlay_avx
12411.globl _sk_overlay_avx
Mike Klein86714282017-04-13 17:37:38 -040012412FUNCTION(_sk_overlay_avx)
Mike Klein61b84162017-03-31 11:48:14 -040012413_sk_overlay_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040012414 .byte 196,98,125,24,5,180,76,0,0 // vbroadcastss 0x4cb4(%rip),%ymm8 # 547c <_sk_callback_avx+0x16a>
Mike Klein61b84162017-03-31 11:48:14 -040012415 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
12416 .byte 197,44,89,200 // vmulps %ymm0,%ymm10,%ymm9
12417 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12418 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
Mike Kleinfe560a82017-05-01 12:56:35 -040012419 .byte 196,65,36,88,217 // vaddps %ymm9,%ymm11,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -040012420 .byte 197,92,88,204 // vaddps %ymm4,%ymm4,%ymm9
12421 .byte 197,52,194,231,2 // vcmpleps %ymm7,%ymm9,%ymm12
12422 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
12423 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
12424 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
12425 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
12426 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
12427 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
12428 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
12429 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
12430 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040012431 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -040012432 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
12433 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
12434 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
12435 .byte 197,84,88,229 // vaddps %ymm5,%ymm5,%ymm12
12436 .byte 197,28,194,231,2 // vcmpleps %ymm7,%ymm12,%ymm12
12437 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
12438 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
12439 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
12440 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
12441 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
12442 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
12443 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
12444 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040012445 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -040012446 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
12447 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
12448 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
12449 .byte 197,76,88,222 // vaddps %ymm6,%ymm6,%ymm11
12450 .byte 197,36,194,223,2 // vcmpleps %ymm7,%ymm11,%ymm11
12451 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
12452 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
12453 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
12454 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
12455 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
12456 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
12457 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
12458 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040012459 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -040012460 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12461 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12462 .byte 72,173 // lods %ds:(%rsi),%rax
12463 .byte 255,224 // jmpq *%rax
12464
12465HIDDEN _sk_softlight_avx
12466.globl _sk_softlight_avx
Mike Klein86714282017-04-13 17:37:38 -040012467FUNCTION(_sk_softlight_avx)
Mike Klein61b84162017-03-31 11:48:14 -040012468_sk_softlight_avx:
Mike Klein15bf6782017-03-31 12:21:46 -040012469 .byte 197,252,17,84,36,200 // vmovups %ymm2,-0x38(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040012470 .byte 197,252,40,209 // vmovaps %ymm1,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040012471 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -040012472 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
12473 .byte 197,52,194,215,1 // vcmpltps %ymm7,%ymm9,%ymm10
12474 .byte 197,92,94,199 // vdivps %ymm7,%ymm4,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040012475 .byte 196,67,53,74,224,160 // vblendvps %ymm10,%ymm8,%ymm9,%ymm12
12476 .byte 196,65,28,88,196 // vaddps %ymm12,%ymm12,%ymm8
12477 .byte 196,65,60,88,192 // vaddps %ymm8,%ymm8,%ymm8
12478 .byte 196,65,60,89,216 // vmulps %ymm8,%ymm8,%ymm11
12479 .byte 196,65,60,88,195 // vaddps %ymm11,%ymm8,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040012480 .byte 196,98,125,24,29,171,75,0,0 // vbroadcastss 0x4bab(%rip),%ymm11 # 5484 <_sk_callback_avx+0x172>
Mike Kleinfe560a82017-05-01 12:56:35 -040012481 .byte 196,65,28,88,235 // vaddps %ymm11,%ymm12,%ymm13
12482 .byte 196,65,20,89,192 // vmulps %ymm8,%ymm13,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040012483 .byte 196,98,125,24,45,156,75,0,0 // vbroadcastss 0x4b9c(%rip),%ymm13 # 5488 <_sk_callback_avx+0x176>
Mike Kleinfe560a82017-05-01 12:56:35 -040012484 .byte 196,65,28,89,245 // vmulps %ymm13,%ymm12,%ymm14
12485 .byte 196,65,12,88,192 // vaddps %ymm8,%ymm14,%ymm8
12486 .byte 196,65,124,82,244 // vrsqrtps %ymm12,%ymm14
Mike Klein61b84162017-03-31 11:48:14 -040012487 .byte 196,65,124,83,246 // vrcpps %ymm14,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -040012488 .byte 196,65,12,92,244 // vsubps %ymm12,%ymm14,%ymm14
Mike Klein61b84162017-03-31 11:48:14 -040012489 .byte 197,92,88,252 // vaddps %ymm4,%ymm4,%ymm15
12490 .byte 196,65,4,88,255 // vaddps %ymm15,%ymm15,%ymm15
12491 .byte 197,4,194,255,2 // vcmpleps %ymm7,%ymm15,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -040012492 .byte 196,67,13,74,240,240 // vblendvps %ymm15,%ymm8,%ymm14,%ymm14
12493 .byte 197,116,88,249 // vaddps %ymm1,%ymm1,%ymm15
Mike Kleinfb11acd2017-05-01 14:22:10 -040012494 .byte 196,98,125,24,5,90,75,0,0 // vbroadcastss 0x4b5a(%rip),%ymm8 # 5480 <_sk_callback_avx+0x16e>
Mike Kleinfe560a82017-05-01 12:56:35 -040012495 .byte 196,65,60,92,228 // vsubps %ymm12,%ymm8,%ymm12
12496 .byte 197,132,92,195 // vsubps %ymm3,%ymm15,%ymm0
12497 .byte 196,65,124,89,228 // vmulps %ymm12,%ymm0,%ymm12
12498 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
12499 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
12500 .byte 197,100,89,244 // vmulps %ymm4,%ymm3,%ymm14
12501 .byte 197,140,88,192 // vaddps %ymm0,%ymm14,%ymm0
12502 .byte 197,28,88,227 // vaddps %ymm3,%ymm12,%ymm12
12503 .byte 197,28,89,228 // vmulps %ymm4,%ymm12,%ymm12
12504 .byte 197,4,194,243,2 // vcmpleps %ymm3,%ymm15,%ymm14
12505 .byte 196,195,125,74,196,224 // vblendvps %ymm14,%ymm12,%ymm0,%ymm0
12506 .byte 197,252,17,68,36,168 // vmovups %ymm0,-0x58(%rsp)
12507 .byte 197,212,94,199 // vdivps %ymm7,%ymm5,%ymm0
12508 .byte 196,227,53,74,192,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -040012509 .byte 197,124,88,240 // vaddps %ymm0,%ymm0,%ymm14
Mike Klein61b84162017-03-31 11:48:14 -040012510 .byte 196,65,12,88,246 // vaddps %ymm14,%ymm14,%ymm14
12511 .byte 196,65,12,89,254 // vmulps %ymm14,%ymm14,%ymm15
12512 .byte 196,65,12,88,247 // vaddps %ymm15,%ymm14,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -040012513 .byte 196,65,124,88,251 // vaddps %ymm11,%ymm0,%ymm15
Mike Klein61b84162017-03-31 11:48:14 -040012514 .byte 196,65,4,89,246 // vmulps %ymm14,%ymm15,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -040012515 .byte 196,65,124,89,253 // vmulps %ymm13,%ymm0,%ymm15
Mike Klein61b84162017-03-31 11:48:14 -040012516 .byte 196,65,4,88,246 // vaddps %ymm14,%ymm15,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -040012517 .byte 197,124,82,248 // vrsqrtps %ymm0,%ymm15
Mike Klein61b84162017-03-31 11:48:14 -040012518 .byte 196,65,124,83,255 // vrcpps %ymm15,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -040012519 .byte 197,4,92,248 // vsubps %ymm0,%ymm15,%ymm15
12520 .byte 197,84,88,229 // vaddps %ymm5,%ymm5,%ymm12
Mike Klein61b84162017-03-31 11:48:14 -040012521 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
12522 .byte 197,28,194,231,2 // vcmpleps %ymm7,%ymm12,%ymm12
Mike Kleinfe560a82017-05-01 12:56:35 -040012523 .byte 196,67,5,74,230,192 // vblendvps %ymm12,%ymm14,%ymm15,%ymm12
12524 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12525 .byte 197,108,88,242 // vaddps %ymm2,%ymm2,%ymm14
12526 .byte 197,12,92,251 // vsubps %ymm3,%ymm14,%ymm15
12527 .byte 197,132,89,192 // vmulps %ymm0,%ymm15,%ymm0
12528 .byte 197,4,89,255 // vmulps %ymm7,%ymm15,%ymm15
12529 .byte 196,65,4,89,228 // vmulps %ymm12,%ymm15,%ymm12
12530 .byte 197,100,89,253 // vmulps %ymm5,%ymm3,%ymm15
12531 .byte 196,65,4,88,228 // vaddps %ymm12,%ymm15,%ymm12
12532 .byte 197,252,88,195 // vaddps %ymm3,%ymm0,%ymm0
12533 .byte 197,252,89,197 // vmulps %ymm5,%ymm0,%ymm0
12534 .byte 197,12,194,243,2 // vcmpleps %ymm3,%ymm14,%ymm14
12535 .byte 196,99,29,74,240,224 // vblendvps %ymm14,%ymm0,%ymm12,%ymm14
12536 .byte 197,204,94,199 // vdivps %ymm7,%ymm6,%ymm0
12537 .byte 196,227,53,74,192,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm0
12538 .byte 197,124,88,200 // vaddps %ymm0,%ymm0,%ymm9
12539 .byte 196,65,52,88,201 // vaddps %ymm9,%ymm9,%ymm9
12540 .byte 196,65,52,89,209 // vmulps %ymm9,%ymm9,%ymm10
12541 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
12542 .byte 196,65,124,88,211 // vaddps %ymm11,%ymm0,%ymm10
12543 .byte 196,65,44,89,201 // vmulps %ymm9,%ymm10,%ymm9
12544 .byte 196,65,124,89,213 // vmulps %ymm13,%ymm0,%ymm10
12545 .byte 196,65,44,88,201 // vaddps %ymm9,%ymm10,%ymm9
12546 .byte 197,124,82,208 // vrsqrtps %ymm0,%ymm10
12547 .byte 196,65,124,83,210 // vrcpps %ymm10,%ymm10
12548 .byte 197,44,92,208 // vsubps %ymm0,%ymm10,%ymm10
12549 .byte 197,76,88,222 // vaddps %ymm6,%ymm6,%ymm11
12550 .byte 196,65,36,88,219 // vaddps %ymm11,%ymm11,%ymm11
12551 .byte 197,36,194,223,2 // vcmpleps %ymm7,%ymm11,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -040012552 .byte 196,67,45,74,201,176 // vblendvps %ymm11,%ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040012553 .byte 197,124,16,100,36,200 // vmovups -0x38(%rsp),%ymm12
12554 .byte 196,65,28,88,212 // vaddps %ymm12,%ymm12,%ymm10
12555 .byte 197,44,92,219 // vsubps %ymm3,%ymm10,%ymm11
12556 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12557 .byte 197,164,89,192 // vmulps %ymm0,%ymm11,%ymm0
12558 .byte 197,36,89,223 // vmulps %ymm7,%ymm11,%ymm11
12559 .byte 196,65,36,89,201 // vmulps %ymm9,%ymm11,%ymm9
12560 .byte 197,100,89,222 // vmulps %ymm6,%ymm3,%ymm11
12561 .byte 196,65,36,88,201 // vaddps %ymm9,%ymm11,%ymm9
12562 .byte 197,252,88,195 // vaddps %ymm3,%ymm0,%ymm0
12563 .byte 197,252,89,198 // vmulps %ymm6,%ymm0,%ymm0
12564 .byte 197,44,194,211,2 // vcmpleps %ymm3,%ymm10,%ymm10
12565 .byte 196,99,53,74,200,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm9
Mike Klein61b84162017-03-31 11:48:14 -040012566 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040012567 .byte 197,172,89,193 // vmulps %ymm1,%ymm10,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -040012568 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040012569 .byte 197,188,89,204 // vmulps %ymm4,%ymm8,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -040012570 .byte 197,244,88,192 // vaddps %ymm0,%ymm1,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040012571 .byte 197,252,88,68,36,168 // vaddps -0x58(%rsp),%ymm0,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -040012572 .byte 197,172,89,202 // vmulps %ymm2,%ymm10,%ymm1
12573 .byte 197,188,89,213 // vmulps %ymm5,%ymm8,%ymm2
12574 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040012575 .byte 196,193,116,88,206 // vaddps %ymm14,%ymm1,%ymm1
12576 .byte 196,193,44,89,212 // vmulps %ymm12,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -040012577 .byte 197,60,89,214 // vmulps %ymm6,%ymm8,%ymm10
12578 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
12579 .byte 196,193,108,88,209 // vaddps %ymm9,%ymm2,%ymm2
12580 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12581 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12582 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein61b84162017-03-31 11:48:14 -040012583 .byte 255,224 // jmpq *%rax
12584
Mike Klein7c4af542017-03-29 18:21:14 -040012585HIDDEN _sk_clamp_0_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012586.globl _sk_clamp_0_avx
Mike Klein86714282017-04-13 17:37:38 -040012587FUNCTION(_sk_clamp_0_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012588_sk_clamp_0_avx:
12589 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
12590 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
12591 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
12592 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
12593 .byte 196,193,100,95,216 // vmaxps %ymm8,%ymm3,%ymm3
12594 .byte 72,173 // lods %ds:(%rsi),%rax
12595 .byte 255,224 // jmpq *%rax
12596
Mike Klein7c4af542017-03-29 18:21:14 -040012597HIDDEN _sk_clamp_1_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012598.globl _sk_clamp_1_avx
Mike Klein86714282017-04-13 17:37:38 -040012599FUNCTION(_sk_clamp_1_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012600_sk_clamp_1_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040012601 .byte 196,98,125,24,5,170,73,0,0 // vbroadcastss 0x49aa(%rip),%ymm8 # 548c <_sk_callback_avx+0x17a>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012602 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
12603 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
12604 .byte 196,193,108,93,208 // vminps %ymm8,%ymm2,%ymm2
12605 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
12606 .byte 72,173 // lods %ds:(%rsi),%rax
12607 .byte 255,224 // jmpq *%rax
12608
Mike Klein7c4af542017-03-29 18:21:14 -040012609HIDDEN _sk_clamp_a_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012610.globl _sk_clamp_a_avx
Mike Klein86714282017-04-13 17:37:38 -040012611FUNCTION(_sk_clamp_a_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012612_sk_clamp_a_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040012613 .byte 196,98,125,24,5,141,73,0,0 // vbroadcastss 0x498d(%rip),%ymm8 # 5490 <_sk_callback_avx+0x17e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012614 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
12615 .byte 197,252,93,195 // vminps %ymm3,%ymm0,%ymm0
12616 .byte 197,244,93,203 // vminps %ymm3,%ymm1,%ymm1
12617 .byte 197,236,93,211 // vminps %ymm3,%ymm2,%ymm2
12618 .byte 72,173 // lods %ds:(%rsi),%rax
12619 .byte 255,224 // jmpq *%rax
12620
Mike Klein7c4af542017-03-29 18:21:14 -040012621HIDDEN _sk_set_rgb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012622.globl _sk_set_rgb_avx
Mike Klein86714282017-04-13 17:37:38 -040012623FUNCTION(_sk_set_rgb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012624_sk_set_rgb_avx:
12625 .byte 72,173 // lods %ds:(%rsi),%rax
12626 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
12627 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
12628 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
12629 .byte 72,173 // lods %ds:(%rsi),%rax
12630 .byte 255,224 // jmpq *%rax
12631
Mike Klein7c4af542017-03-29 18:21:14 -040012632HIDDEN _sk_swap_rb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012633.globl _sk_swap_rb_avx
Mike Klein86714282017-04-13 17:37:38 -040012634FUNCTION(_sk_swap_rb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012635_sk_swap_rb_avx:
12636 .byte 197,124,40,192 // vmovaps %ymm0,%ymm8
12637 .byte 72,173 // lods %ds:(%rsi),%rax
12638 .byte 197,252,40,194 // vmovaps %ymm2,%ymm0
12639 .byte 197,124,41,194 // vmovaps %ymm8,%ymm2
12640 .byte 255,224 // jmpq *%rax
12641
Mike Klein7c4af542017-03-29 18:21:14 -040012642HIDDEN _sk_swap_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012643.globl _sk_swap_avx
Mike Klein86714282017-04-13 17:37:38 -040012644FUNCTION(_sk_swap_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012645_sk_swap_avx:
12646 .byte 197,124,40,195 // vmovaps %ymm3,%ymm8
12647 .byte 197,124,40,202 // vmovaps %ymm2,%ymm9
12648 .byte 197,124,40,209 // vmovaps %ymm1,%ymm10
12649 .byte 197,124,40,216 // vmovaps %ymm0,%ymm11
12650 .byte 72,173 // lods %ds:(%rsi),%rax
12651 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
12652 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
12653 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
12654 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
12655 .byte 197,124,41,220 // vmovaps %ymm11,%ymm4
12656 .byte 197,124,41,213 // vmovaps %ymm10,%ymm5
12657 .byte 197,124,41,206 // vmovaps %ymm9,%ymm6
12658 .byte 197,124,41,199 // vmovaps %ymm8,%ymm7
12659 .byte 255,224 // jmpq *%rax
12660
Mike Klein7c4af542017-03-29 18:21:14 -040012661HIDDEN _sk_move_src_dst_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012662.globl _sk_move_src_dst_avx
Mike Klein86714282017-04-13 17:37:38 -040012663FUNCTION(_sk_move_src_dst_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012664_sk_move_src_dst_avx:
12665 .byte 72,173 // lods %ds:(%rsi),%rax
12666 .byte 197,252,40,224 // vmovaps %ymm0,%ymm4
12667 .byte 197,252,40,233 // vmovaps %ymm1,%ymm5
12668 .byte 197,252,40,242 // vmovaps %ymm2,%ymm6
12669 .byte 197,252,40,251 // vmovaps %ymm3,%ymm7
12670 .byte 255,224 // jmpq *%rax
12671
Mike Klein7c4af542017-03-29 18:21:14 -040012672HIDDEN _sk_move_dst_src_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012673.globl _sk_move_dst_src_avx
Mike Klein86714282017-04-13 17:37:38 -040012674FUNCTION(_sk_move_dst_src_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012675_sk_move_dst_src_avx:
12676 .byte 72,173 // lods %ds:(%rsi),%rax
12677 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
12678 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
12679 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
12680 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
12681 .byte 255,224 // jmpq *%rax
12682
Mike Klein7c4af542017-03-29 18:21:14 -040012683HIDDEN _sk_premul_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012684.globl _sk_premul_avx
Mike Klein86714282017-04-13 17:37:38 -040012685FUNCTION(_sk_premul_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012686_sk_premul_avx:
12687 .byte 197,252,89,195 // vmulps %ymm3,%ymm0,%ymm0
12688 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
12689 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
12690 .byte 72,173 // lods %ds:(%rsi),%rax
12691 .byte 255,224 // jmpq *%rax
12692
Mike Klein7c4af542017-03-29 18:21:14 -040012693HIDDEN _sk_unpremul_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012694.globl _sk_unpremul_avx
Mike Klein86714282017-04-13 17:37:38 -040012695FUNCTION(_sk_unpremul_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012696_sk_unpremul_avx:
12697 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
12698 .byte 196,65,100,194,200,0 // vcmpeqps %ymm8,%ymm3,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040012699 .byte 196,98,125,24,21,213,72,0,0 // vbroadcastss 0x48d5(%rip),%ymm10 # 5494 <_sk_callback_avx+0x182>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012700 .byte 197,44,94,211 // vdivps %ymm3,%ymm10,%ymm10
12701 .byte 196,67,45,74,192,144 // vblendvps %ymm9,%ymm8,%ymm10,%ymm8
12702 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
12703 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
12704 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
12705 .byte 72,173 // lods %ds:(%rsi),%rax
12706 .byte 255,224 // jmpq *%rax
12707
Mike Klein7c4af542017-03-29 18:21:14 -040012708HIDDEN _sk_from_srgb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012709.globl _sk_from_srgb_avx
Mike Klein86714282017-04-13 17:37:38 -040012710FUNCTION(_sk_from_srgb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012711_sk_from_srgb_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040012712 .byte 196,98,125,24,5,182,72,0,0 // vbroadcastss 0x48b6(%rip),%ymm8 # 5498 <_sk_callback_avx+0x186>
Mike Kleinfe560a82017-05-01 12:56:35 -040012713 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040012714 .byte 197,124,89,208 // vmulps %ymm0,%ymm0,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040012715 .byte 196,98,125,24,29,168,72,0,0 // vbroadcastss 0x48a8(%rip),%ymm11 # 549c <_sk_callback_avx+0x18a>
Mike Kleinfe560a82017-05-01 12:56:35 -040012716 .byte 196,65,124,89,227 // vmulps %ymm11,%ymm0,%ymm12
Mike Kleinfb11acd2017-05-01 14:22:10 -040012717 .byte 196,98,125,24,45,158,72,0,0 // vbroadcastss 0x489e(%rip),%ymm13 # 54a0 <_sk_callback_avx+0x18e>
Mike Kleinfe560a82017-05-01 12:56:35 -040012718 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
12719 .byte 196,65,44,89,212 // vmulps %ymm12,%ymm10,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040012720 .byte 196,98,125,24,37,143,72,0,0 // vbroadcastss 0x488f(%rip),%ymm12 # 54a4 <_sk_callback_avx+0x192>
Mike Kleinfe560a82017-05-01 12:56:35 -040012721 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040012722 .byte 196,98,125,24,53,133,72,0,0 // vbroadcastss 0x4885(%rip),%ymm14 # 54a8 <_sk_callback_avx+0x196>
Mike Kleinfe560a82017-05-01 12:56:35 -040012723 .byte 196,193,124,194,198,1 // vcmpltps %ymm14,%ymm0,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040012724 .byte 196,195,45,74,193,0 // vblendvps %ymm0,%ymm9,%ymm10,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040012725 .byte 196,65,116,89,200 // vmulps %ymm8,%ymm1,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040012726 .byte 197,116,89,209 // vmulps %ymm1,%ymm1,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040012727 .byte 196,65,116,89,251 // vmulps %ymm11,%ymm1,%ymm15
12728 .byte 196,65,4,88,253 // vaddps %ymm13,%ymm15,%ymm15
Mike Kleind7e06ae2017-03-29 16:33:06 -040012729 .byte 196,65,44,89,215 // vmulps %ymm15,%ymm10,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040012730 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
12731 .byte 196,193,116,194,206,1 // vcmpltps %ymm14,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040012732 .byte 196,195,45,74,201,16 // vblendvps %ymm1,%ymm9,%ymm10,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040012733 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040012734 .byte 197,108,89,202 // vmulps %ymm2,%ymm2,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040012735 .byte 196,65,108,89,211 // vmulps %ymm11,%ymm2,%ymm10
12736 .byte 196,65,44,88,213 // vaddps %ymm13,%ymm10,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040012737 .byte 196,65,52,89,202 // vmulps %ymm10,%ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040012738 .byte 196,65,52,88,204 // vaddps %ymm12,%ymm9,%ymm9
12739 .byte 196,193,108,194,214,1 // vcmpltps %ymm14,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040012740 .byte 196,195,53,74,208,32 // vblendvps %ymm2,%ymm8,%ymm9,%ymm2
12741 .byte 72,173 // lods %ds:(%rsi),%rax
12742 .byte 255,224 // jmpq *%rax
12743
Mike Klein7c4af542017-03-29 18:21:14 -040012744HIDDEN _sk_to_srgb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012745.globl _sk_to_srgb_avx
Mike Klein86714282017-04-13 17:37:38 -040012746FUNCTION(_sk_to_srgb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012747_sk_to_srgb_avx:
12748 .byte 197,124,82,192 // vrsqrtps %ymm0,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040012749 .byte 196,65,124,83,200 // vrcpps %ymm8,%ymm9
12750 .byte 196,65,124,82,208 // vrsqrtps %ymm8,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040012751 .byte 196,98,125,24,5,16,72,0,0 // vbroadcastss 0x4810(%rip),%ymm8 # 54ac <_sk_callback_avx+0x19a>
Mike Kleinfe560a82017-05-01 12:56:35 -040012752 .byte 196,65,124,89,216 // vmulps %ymm8,%ymm0,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040012753 .byte 196,98,125,24,37,6,72,0,0 // vbroadcastss 0x4806(%rip),%ymm12 # 54b0 <_sk_callback_avx+0x19e>
Mike Kleinfe560a82017-05-01 12:56:35 -040012754 .byte 196,65,52,89,204 // vmulps %ymm12,%ymm9,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040012755 .byte 196,98,125,24,45,252,71,0,0 // vbroadcastss 0x47fc(%rip),%ymm13 # 54b4 <_sk_callback_avx+0x1a2>
Mike Kleinfe560a82017-05-01 12:56:35 -040012756 .byte 196,65,52,88,205 // vaddps %ymm13,%ymm9,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040012757 .byte 196,98,125,24,53,242,71,0,0 // vbroadcastss 0x47f2(%rip),%ymm14 # 54b8 <_sk_callback_avx+0x1a6>
Mike Kleinfe560a82017-05-01 12:56:35 -040012758 .byte 196,65,44,89,214 // vmulps %ymm14,%ymm10,%ymm10
12759 .byte 196,65,44,88,201 // vaddps %ymm9,%ymm10,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040012760 .byte 196,98,125,24,21,227,71,0,0 // vbroadcastss 0x47e3(%rip),%ymm10 # 54bc <_sk_callback_avx+0x1aa>
Mike Kleinfe560a82017-05-01 12:56:35 -040012761 .byte 196,65,44,93,201 // vminps %ymm9,%ymm10,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040012762 .byte 196,98,125,24,61,217,71,0,0 // vbroadcastss 0x47d9(%rip),%ymm15 # 54c0 <_sk_callback_avx+0x1ae>
Mike Kleinfe560a82017-05-01 12:56:35 -040012763 .byte 196,193,124,194,199,1 // vcmpltps %ymm15,%ymm0,%ymm0
12764 .byte 196,195,53,74,195,0 // vblendvps %ymm0,%ymm11,%ymm9,%ymm0
12765 .byte 197,124,82,201 // vrsqrtps %ymm1,%ymm9
12766 .byte 196,65,124,83,217 // vrcpps %ymm9,%ymm11
12767 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
12768 .byte 196,65,36,89,220 // vmulps %ymm12,%ymm11,%ymm11
12769 .byte 196,65,36,88,221 // vaddps %ymm13,%ymm11,%ymm11
12770 .byte 196,65,52,89,206 // vmulps %ymm14,%ymm9,%ymm9
12771 .byte 196,65,52,88,203 // vaddps %ymm11,%ymm9,%ymm9
12772 .byte 196,65,116,89,216 // vmulps %ymm8,%ymm1,%ymm11
12773 .byte 196,65,44,93,201 // vminps %ymm9,%ymm10,%ymm9
12774 .byte 196,193,116,194,207,1 // vcmpltps %ymm15,%ymm1,%ymm1
12775 .byte 196,195,53,74,203,16 // vblendvps %ymm1,%ymm11,%ymm9,%ymm1
12776 .byte 197,124,82,202 // vrsqrtps %ymm2,%ymm9
12777 .byte 196,65,124,83,217 // vrcpps %ymm9,%ymm11
12778 .byte 196,65,36,89,220 // vmulps %ymm12,%ymm11,%ymm11
12779 .byte 196,65,36,88,221 // vaddps %ymm13,%ymm11,%ymm11
12780 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
12781 .byte 196,65,52,89,206 // vmulps %ymm14,%ymm9,%ymm9
12782 .byte 196,65,52,88,203 // vaddps %ymm11,%ymm9,%ymm9
12783 .byte 196,65,44,93,201 // vminps %ymm9,%ymm10,%ymm9
12784 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
12785 .byte 196,193,108,194,215,1 // vcmpltps %ymm15,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040012786 .byte 196,195,53,74,208,32 // vblendvps %ymm2,%ymm8,%ymm9,%ymm2
12787 .byte 72,173 // lods %ds:(%rsi),%rax
12788 .byte 255,224 // jmpq *%rax
12789
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012790HIDDEN _sk_rgb_to_hsl_avx
12791.globl _sk_rgb_to_hsl_avx
Mike Klein86714282017-04-13 17:37:38 -040012792FUNCTION(_sk_rgb_to_hsl_avx)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012793_sk_rgb_to_hsl_avx:
12794 .byte 197,124,95,193 // vmaxps %ymm1,%ymm0,%ymm8
12795 .byte 197,60,95,194 // vmaxps %ymm2,%ymm8,%ymm8
12796 .byte 197,124,93,201 // vminps %ymm1,%ymm0,%ymm9
12797 .byte 197,52,93,202 // vminps %ymm2,%ymm9,%ymm9
12798 .byte 196,65,60,92,209 // vsubps %ymm9,%ymm8,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040012799 .byte 196,98,125,24,29,63,71,0,0 // vbroadcastss 0x473f(%rip),%ymm11 # 54c4 <_sk_callback_avx+0x1b2>
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012800 .byte 196,65,36,94,218 // vdivps %ymm10,%ymm11,%ymm11
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012801 .byte 197,116,92,226 // vsubps %ymm2,%ymm1,%ymm12
12802 .byte 196,65,28,89,227 // vmulps %ymm11,%ymm12,%ymm12
Mike Kleinfe560a82017-05-01 12:56:35 -040012803 .byte 197,116,194,234,1 // vcmpltps %ymm2,%ymm1,%ymm13
12804 .byte 197,60,194,241,0 // vcmpeqps %ymm1,%ymm8,%ymm14
12805 .byte 197,236,92,208 // vsubps %ymm0,%ymm2,%ymm2
12806 .byte 196,193,108,89,211 // vmulps %ymm11,%ymm2,%ymm2
12807 .byte 197,252,92,201 // vsubps %ymm1,%ymm0,%ymm1
12808 .byte 196,193,116,89,203 // vmulps %ymm11,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040012809 .byte 196,98,125,24,29,24,71,0,0 // vbroadcastss 0x4718(%rip),%ymm11 # 54d0 <_sk_callback_avx+0x1be>
Mike Kleinfe560a82017-05-01 12:56:35 -040012810 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040012811 .byte 196,98,125,24,29,6,71,0,0 // vbroadcastss 0x4706(%rip),%ymm11 # 54cc <_sk_callback_avx+0x1ba>
Mike Kleinfe560a82017-05-01 12:56:35 -040012812 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
12813 .byte 196,227,117,74,202,224 // vblendvps %ymm14,%ymm2,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040012814 .byte 196,226,125,24,21,238,70,0,0 // vbroadcastss 0x46ee(%rip),%ymm2 # 54c8 <_sk_callback_avx+0x1b6>
Mike Kleinfe560a82017-05-01 12:56:35 -040012815 .byte 196,65,12,87,246 // vxorps %ymm14,%ymm14,%ymm14
12816 .byte 196,227,13,74,210,208 // vblendvps %ymm13,%ymm2,%ymm14,%ymm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012817 .byte 197,188,194,192,0 // vcmpeqps %ymm0,%ymm8,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040012818 .byte 196,193,108,88,212 // vaddps %ymm12,%ymm2,%ymm2
12819 .byte 196,227,117,74,194,0 // vblendvps %ymm0,%ymm2,%ymm1,%ymm0
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012820 .byte 196,193,60,88,201 // vaddps %ymm9,%ymm8,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040012821 .byte 196,98,125,24,37,213,70,0,0 // vbroadcastss 0x46d5(%rip),%ymm12 # 54d8 <_sk_callback_avx+0x1c6>
Mike Kleinfe560a82017-05-01 12:56:35 -040012822 .byte 196,193,116,89,212 // vmulps %ymm12,%ymm1,%ymm2
12823 .byte 197,28,194,226,1 // vcmpltps %ymm2,%ymm12,%ymm12
12824 .byte 196,65,36,92,216 // vsubps %ymm8,%ymm11,%ymm11
12825 .byte 196,65,36,92,217 // vsubps %ymm9,%ymm11,%ymm11
12826 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012827 .byte 196,65,60,194,193,0 // vcmpeqps %ymm9,%ymm8,%ymm8
12828 .byte 197,172,94,201 // vdivps %ymm1,%ymm10,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040012829 .byte 196,195,125,74,198,128 // vblendvps %ymm8,%ymm14,%ymm0,%ymm0
12830 .byte 196,195,117,74,206,128 // vblendvps %ymm8,%ymm14,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040012831 .byte 196,98,125,24,5,152,70,0,0 // vbroadcastss 0x4698(%rip),%ymm8 # 54d4 <_sk_callback_avx+0x1c2>
Mike Kleinfe560a82017-05-01 12:56:35 -040012832 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012833 .byte 72,173 // lods %ds:(%rsi),%rax
12834 .byte 255,224 // jmpq *%rax
12835
12836HIDDEN _sk_hsl_to_rgb_avx
12837.globl _sk_hsl_to_rgb_avx
Mike Klein86714282017-04-13 17:37:38 -040012838FUNCTION(_sk_hsl_to_rgb_avx)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012839_sk_hsl_to_rgb_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040012840 .byte 72,131,236,120 // sub $0x78,%rsp
12841 .byte 197,252,17,124,36,64 // vmovups %ymm7,0x40(%rsp)
12842 .byte 197,252,17,116,36,32 // vmovups %ymm6,0x20(%rsp)
12843 .byte 197,252,17,44,36 // vmovups %ymm5,(%rsp)
12844 .byte 197,252,17,100,36,224 // vmovups %ymm4,-0x20(%rsp)
12845 .byte 197,252,17,92,36,192 // vmovups %ymm3,-0x40(%rsp)
Mike Kleinb3665f02017-05-01 14:56:04 -040012846 .byte 197,252,40,234 // vmovaps %ymm2,%ymm5
Mike Kleinfb11acd2017-05-01 14:22:10 -040012847 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012848 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
12849 .byte 197,249,110,192 // vmovd %eax,%xmm0
12850 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
12851 .byte 196,99,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -040012852 .byte 196,193,84,194,192,1 // vcmpltps %ymm8,%ymm5,%ymm0
12853 .byte 196,98,125,24,21,74,70,0,0 // vbroadcastss 0x464a(%rip),%ymm10 # 54dc <_sk_callback_avx+0x1ca>
12854 .byte 197,252,17,76,36,160 // vmovups %ymm1,-0x60(%rsp)
Mike Kleinfb11acd2017-05-01 14:22:10 -040012855 .byte 196,193,116,88,218 // vaddps %ymm10,%ymm1,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -040012856 .byte 197,228,89,221 // vmulps %ymm5,%ymm3,%ymm3
12857 .byte 197,244,88,229 // vaddps %ymm5,%ymm1,%ymm4
12858 .byte 197,244,89,245 // vmulps %ymm5,%ymm1,%ymm6
12859 .byte 197,220,92,230 // vsubps %ymm6,%ymm4,%ymm4
Mike Kleinfb11acd2017-05-01 14:22:10 -040012860 .byte 196,99,93,74,203,0 // vblendvps %ymm0,%ymm3,%ymm4,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -040012861 .byte 196,226,125,24,13,36,70,0,0 // vbroadcastss 0x4624(%rip),%ymm1 # 54e0 <_sk_callback_avx+0x1ce>
12862 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040012863 .byte 65,184,0,0,0,0 // mov $0x0,%r8d
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012864 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
Mike Kleinfb11acd2017-05-01 14:22:10 -040012865 .byte 197,249,110,216 // vmovd %eax,%xmm3
12866 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
12867 .byte 196,99,101,24,227,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm12
12868 .byte 197,156,194,217,1 // vcmpltps %ymm1,%ymm12,%ymm3
12869 .byte 196,98,125,24,53,251,69,0,0 // vbroadcastss 0x45fb(%rip),%ymm14 # 54e4 <_sk_callback_avx+0x1d2>
12870 .byte 196,193,116,88,230 // vaddps %ymm14,%ymm1,%ymm4
12871 .byte 196,227,117,74,220,48 // vblendvps %ymm3,%ymm4,%ymm1,%ymm3
12872 .byte 196,193,121,110,224 // vmovd %r8d,%xmm4
12873 .byte 196,227,121,4,228,0 // vpermilps $0x0,%xmm4,%xmm4
12874 .byte 196,99,93,24,252,1 // vinsertf128 $0x1,%xmm4,%ymm4,%ymm15
12875 .byte 196,193,116,194,231,1 // vcmpltps %ymm15,%ymm1,%ymm4
Mike Kleinb3665f02017-05-01 14:56:04 -040012876 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
12877 .byte 196,227,101,74,241,64 // vblendvps %ymm4,%ymm1,%ymm3,%ymm6
12878 .byte 197,212,88,205 // vaddps %ymm5,%ymm5,%ymm1
12879 .byte 196,65,116,92,217 // vsubps %ymm9,%ymm1,%ymm11
12880 .byte 196,193,52,92,203 // vsubps %ymm11,%ymm9,%ymm1
12881 .byte 196,226,125,24,29,187,69,0,0 // vbroadcastss 0x45bb(%rip),%ymm3 # 54e8 <_sk_callback_avx+0x1d6>
12882 .byte 197,116,89,235 // vmulps %ymm3,%ymm1,%ymm13
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012883 .byte 65,184,171,170,42,62 // mov $0x3e2aaaab,%r8d
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012884 .byte 184,171,170,42,63 // mov $0x3f2aaaab,%eax
Mike Kleinb3665f02017-05-01 14:56:04 -040012885 .byte 197,249,110,200 // vmovd %eax,%xmm1
12886 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
12887 .byte 196,227,117,24,225,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm4
12888 .byte 196,226,125,24,29,151,69,0,0 // vbroadcastss 0x4597(%rip),%ymm3 # 54ec <_sk_callback_avx+0x1da>
12889 .byte 197,228,92,206 // vsubps %ymm6,%ymm3,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040012890 .byte 197,148,89,201 // vmulps %ymm1,%ymm13,%ymm1
12891 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -040012892 .byte 197,204,194,252,1 // vcmpltps %ymm4,%ymm6,%ymm7
Mike Kleinfb11acd2017-05-01 14:22:10 -040012893 .byte 196,227,37,74,201,112 // vblendvps %ymm7,%ymm1,%ymm11,%ymm1
Mike Kleinb3665f02017-05-01 14:56:04 -040012894 .byte 196,193,76,194,248,1 // vcmpltps %ymm8,%ymm6,%ymm7
12895 .byte 196,195,117,74,249,112 // vblendvps %ymm7,%ymm9,%ymm1,%ymm7
12896 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
12897 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
12898 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
12899 .byte 197,204,194,193,1 // vcmpltps %ymm1,%ymm6,%ymm0
12900 .byte 197,148,89,246 // vmulps %ymm6,%ymm13,%ymm6
12901 .byte 197,164,88,246 // vaddps %ymm6,%ymm11,%ymm6
12902 .byte 196,227,69,74,198,0 // vblendvps %ymm0,%ymm6,%ymm7,%ymm0
12903 .byte 197,252,17,68,36,128 // vmovups %ymm0,-0x80(%rsp)
12904 .byte 197,156,194,194,1 // vcmpltps %ymm2,%ymm12,%ymm0
12905 .byte 196,193,108,88,254 // vaddps %ymm14,%ymm2,%ymm7
12906 .byte 196,227,109,74,199,0 // vblendvps %ymm0,%ymm7,%ymm2,%ymm0
12907 .byte 196,193,108,194,255,1 // vcmpltps %ymm15,%ymm2,%ymm7
12908 .byte 196,193,108,88,242 // vaddps %ymm10,%ymm2,%ymm6
12909 .byte 196,227,125,74,198,112 // vblendvps %ymm7,%ymm6,%ymm0,%ymm0
12910 .byte 197,228,92,240 // vsubps %ymm0,%ymm3,%ymm6
12911 .byte 197,148,89,246 // vmulps %ymm6,%ymm13,%ymm6
12912 .byte 197,164,88,246 // vaddps %ymm6,%ymm11,%ymm6
12913 .byte 197,252,194,252,1 // vcmpltps %ymm4,%ymm0,%ymm7
12914 .byte 196,227,37,74,246,112 // vblendvps %ymm7,%ymm6,%ymm11,%ymm6
Mike Kleinfb11acd2017-05-01 14:22:10 -040012915 .byte 196,193,124,194,248,1 // vcmpltps %ymm8,%ymm0,%ymm7
Mike Kleinb3665f02017-05-01 14:56:04 -040012916 .byte 196,195,77,74,241,112 // vblendvps %ymm7,%ymm9,%ymm6,%ymm6
12917 .byte 197,252,194,249,1 // vcmpltps %ymm1,%ymm0,%ymm7
12918 .byte 197,148,89,192 // vmulps %ymm0,%ymm13,%ymm0
12919 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
12920 .byte 196,227,77,74,240,112 // vblendvps %ymm7,%ymm0,%ymm6,%ymm6
12921 .byte 196,226,125,24,5,238,68,0,0 // vbroadcastss 0x44ee(%rip),%ymm0 # 54f0 <_sk_callback_avx+0x1de>
Mike Kleinfb11acd2017-05-01 14:22:10 -040012922 .byte 197,236,88,192 // vaddps %ymm0,%ymm2,%ymm0
12923 .byte 197,156,194,208,1 // vcmpltps %ymm0,%ymm12,%ymm2
12924 .byte 196,193,124,88,254 // vaddps %ymm14,%ymm0,%ymm7
12925 .byte 196,227,125,74,215,32 // vblendvps %ymm2,%ymm7,%ymm0,%ymm2
12926 .byte 196,193,124,194,255,1 // vcmpltps %ymm15,%ymm0,%ymm7
Mike Kleinb3665f02017-05-01 14:56:04 -040012927 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
12928 .byte 196,227,109,74,192,112 // vblendvps %ymm7,%ymm0,%ymm2,%ymm0
12929 .byte 197,252,194,212,1 // vcmpltps %ymm4,%ymm0,%ymm2
12930 .byte 197,228,92,216 // vsubps %ymm0,%ymm3,%ymm3
12931 .byte 197,148,89,219 // vmulps %ymm3,%ymm13,%ymm3
12932 .byte 197,164,88,219 // vaddps %ymm3,%ymm11,%ymm3
12933 .byte 196,227,37,74,211,32 // vblendvps %ymm2,%ymm3,%ymm11,%ymm2
12934 .byte 196,193,124,194,216,1 // vcmpltps %ymm8,%ymm0,%ymm3
12935 .byte 196,195,109,74,209,48 // vblendvps %ymm3,%ymm9,%ymm2,%ymm2
12936 .byte 197,252,194,201,1 // vcmpltps %ymm1,%ymm0,%ymm1
12937 .byte 197,148,89,192 // vmulps %ymm0,%ymm13,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040012938 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -040012939 .byte 196,227,109,74,208,16 // vblendvps %ymm1,%ymm0,%ymm2,%ymm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012940 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040012941 .byte 197,252,194,92,36,160,0 // vcmpeqps -0x60(%rsp),%ymm0,%ymm3
12942 .byte 197,252,16,68,36,128 // vmovups -0x80(%rsp),%ymm0
Mike Kleinb3665f02017-05-01 14:56:04 -040012943 .byte 196,227,125,74,197,48 // vblendvps %ymm3,%ymm5,%ymm0,%ymm0
12944 .byte 196,227,77,74,205,48 // vblendvps %ymm3,%ymm5,%ymm6,%ymm1
12945 .byte 196,227,109,74,213,48 // vblendvps %ymm3,%ymm5,%ymm2,%ymm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012946 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040012947 .byte 197,252,16,92,36,192 // vmovups -0x40(%rsp),%ymm3
12948 .byte 197,252,16,100,36,224 // vmovups -0x20(%rsp),%ymm4
12949 .byte 197,252,16,44,36 // vmovups (%rsp),%ymm5
12950 .byte 197,252,16,116,36,32 // vmovups 0x20(%rsp),%ymm6
12951 .byte 197,252,16,124,36,64 // vmovups 0x40(%rsp),%ymm7
12952 .byte 72,131,196,120 // add $0x78,%rsp
Mike Kleindb1cbcb2017-04-12 08:35:41 -040012953 .byte 255,224 // jmpq *%rax
12954
Mike Klein7c4af542017-03-29 18:21:14 -040012955HIDDEN _sk_scale_1_float_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012956.globl _sk_scale_1_float_avx
Mike Klein86714282017-04-13 17:37:38 -040012957FUNCTION(_sk_scale_1_float_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012958_sk_scale_1_float_avx:
12959 .byte 72,173 // lods %ds:(%rsi),%rax
12960 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
12961 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
12962 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
12963 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
12964 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
12965 .byte 72,173 // lods %ds:(%rsi),%rax
12966 .byte 255,224 // jmpq *%rax
12967
Mike Klein7c4af542017-03-29 18:21:14 -040012968HIDDEN _sk_scale_u8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012969.globl _sk_scale_u8_avx
Mike Klein86714282017-04-13 17:37:38 -040012970FUNCTION(_sk_scale_u8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012971_sk_scale_u8_avx:
12972 .byte 73,137,200 // mov %rcx,%r8
12973 .byte 72,173 // lods %ds:(%rsi),%rax
12974 .byte 72,139,0 // mov (%rax),%rax
12975 .byte 72,1,248 // add %rdi,%rax
12976 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -040012977 .byte 117,68 // jne 1114 <_sk_scale_u8_avx+0x54>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012978 .byte 197,122,126,0 // vmovq (%rax),%xmm8
12979 .byte 196,66,121,49,200 // vpmovzxbd %xmm8,%xmm9
12980 .byte 196,67,121,4,192,229 // vpermilps $0xe5,%xmm8,%xmm8
12981 .byte 196,66,121,49,192 // vpmovzxbd %xmm8,%xmm8
12982 .byte 196,67,53,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm9,%ymm8
12983 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -040012984 .byte 196,98,125,24,13,252,67,0,0 // vbroadcastss 0x43fc(%rip),%ymm9 # 54f4 <_sk_callback_avx+0x1e2>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012985 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
12986 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
12987 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
12988 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
12989 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
12990 .byte 72,173 // lods %ds:(%rsi),%rax
12991 .byte 76,137,193 // mov %r8,%rcx
12992 .byte 255,224 // jmpq *%rax
12993 .byte 49,201 // xor %ecx,%ecx
12994 .byte 77,137,194 // mov %r8,%r10
12995 .byte 69,49,201 // xor %r9d,%r9d
12996 .byte 68,15,182,24 // movzbl (%rax),%r11d
12997 .byte 72,255,192 // inc %rax
12998 .byte 73,211,227 // shl %cl,%r11
12999 .byte 77,9,217 // or %r11,%r9
13000 .byte 72,131,193,8 // add $0x8,%rcx
13001 .byte 73,255,202 // dec %r10
Mike Kleinb3665f02017-05-01 14:56:04 -040013002 .byte 117,234 // jne 111c <_sk_scale_u8_avx+0x5c>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013003 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040013004 .byte 235,155 // jmp 10d4 <_sk_scale_u8_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013005
Mike Klein7c4af542017-03-29 18:21:14 -040013006HIDDEN _sk_lerp_1_float_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013007.globl _sk_lerp_1_float_avx
Mike Klein86714282017-04-13 17:37:38 -040013008FUNCTION(_sk_lerp_1_float_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013009_sk_lerp_1_float_avx:
13010 .byte 72,173 // lods %ds:(%rsi),%rax
13011 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
13012 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
13013 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
13014 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
13015 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
13016 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
13017 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
13018 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
13019 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
13020 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
13021 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
13022 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
13023 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
13024 .byte 72,173 // lods %ds:(%rsi),%rax
13025 .byte 255,224 // jmpq *%rax
13026
Mike Klein7c4af542017-03-29 18:21:14 -040013027HIDDEN _sk_lerp_u8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013028.globl _sk_lerp_u8_avx
Mike Klein86714282017-04-13 17:37:38 -040013029FUNCTION(_sk_lerp_u8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013030_sk_lerp_u8_avx:
13031 .byte 73,137,200 // mov %rcx,%r8
13032 .byte 72,173 // lods %ds:(%rsi),%rax
13033 .byte 72,139,0 // mov (%rax),%rax
13034 .byte 72,1,248 // add %rdi,%rax
13035 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -040013036 .byte 117,104 // jne 11f0 <_sk_lerp_u8_avx+0x78>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013037 .byte 197,122,126,0 // vmovq (%rax),%xmm8
13038 .byte 196,66,121,49,200 // vpmovzxbd %xmm8,%xmm9
13039 .byte 196,67,121,4,192,229 // vpermilps $0xe5,%xmm8,%xmm8
13040 .byte 196,66,121,49,192 // vpmovzxbd %xmm8,%xmm8
13041 .byte 196,67,53,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm9,%ymm8
13042 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -040013043 .byte 196,98,125,24,13,72,67,0,0 // vbroadcastss 0x4348(%rip),%ymm9 # 54f8 <_sk_callback_avx+0x1e6>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013044 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
13045 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
13046 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
13047 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
13048 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
13049 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
13050 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
13051 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
13052 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
13053 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
13054 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
13055 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
13056 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
13057 .byte 72,173 // lods %ds:(%rsi),%rax
13058 .byte 76,137,193 // mov %r8,%rcx
13059 .byte 255,224 // jmpq *%rax
13060 .byte 49,201 // xor %ecx,%ecx
13061 .byte 77,137,194 // mov %r8,%r10
13062 .byte 69,49,201 // xor %r9d,%r9d
13063 .byte 68,15,182,24 // movzbl (%rax),%r11d
13064 .byte 72,255,192 // inc %rax
13065 .byte 73,211,227 // shl %cl,%r11
13066 .byte 77,9,217 // or %r11,%r9
13067 .byte 72,131,193,8 // add $0x8,%rcx
13068 .byte 73,255,202 // dec %r10
Mike Kleinb3665f02017-05-01 14:56:04 -040013069 .byte 117,234 // jne 11f8 <_sk_lerp_u8_avx+0x80>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013070 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040013071 .byte 233,116,255,255,255 // jmpq 118c <_sk_lerp_u8_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013072
Mike Klein7c4af542017-03-29 18:21:14 -040013073HIDDEN _sk_lerp_565_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013074.globl _sk_lerp_565_avx
Mike Klein86714282017-04-13 17:37:38 -040013075FUNCTION(_sk_lerp_565_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013076_sk_lerp_565_avx:
13077 .byte 72,173 // lods %ds:(%rsi),%rax
13078 .byte 76,139,16 // mov (%rax),%r10
13079 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040013080 .byte 15,133,174,0,0,0 // jne 12d4 <_sk_lerp_565_avx+0xbc>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013081 .byte 196,65,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm8
13082 .byte 197,225,239,219 // vpxor %xmm3,%xmm3,%xmm3
13083 .byte 197,185,105,219 // vpunpckhwd %xmm3,%xmm8,%xmm3
13084 .byte 196,66,121,51,192 // vpmovzxwd %xmm8,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040013085 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -040013086 .byte 196,98,125,24,5,180,66,0,0 // vbroadcastss 0x42b4(%rip),%ymm8 # 54fc <_sk_callback_avx+0x1ea>
Mike Kleinfe560a82017-05-01 12:56:35 -040013087 .byte 196,65,100,84,192 // vandps %ymm8,%ymm3,%ymm8
Mike Klein308e6242017-04-27 13:56:33 -040013088 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -040013089 .byte 196,98,125,24,13,165,66,0,0 // vbroadcastss 0x42a5(%rip),%ymm9 # 5500 <_sk_callback_avx+0x1ee>
Mike Kleinfe560a82017-05-01 12:56:35 -040013090 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
Mike Kleinb3665f02017-05-01 14:56:04 -040013091 .byte 196,98,125,24,13,155,66,0,0 // vbroadcastss 0x429b(%rip),%ymm9 # 5504 <_sk_callback_avx+0x1f2>
Mike Kleinfe560a82017-05-01 12:56:35 -040013092 .byte 196,65,100,84,201 // vandps %ymm9,%ymm3,%ymm9
13093 .byte 196,65,124,91,201 // vcvtdq2ps %ymm9,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -040013094 .byte 196,98,125,24,21,140,66,0,0 // vbroadcastss 0x428c(%rip),%ymm10 # 5508 <_sk_callback_avx+0x1f6>
Mike Kleinfe560a82017-05-01 12:56:35 -040013095 .byte 196,65,52,89,202 // vmulps %ymm10,%ymm9,%ymm9
Mike Kleinb3665f02017-05-01 14:56:04 -040013096 .byte 196,98,125,24,21,130,66,0,0 // vbroadcastss 0x4282(%rip),%ymm10 # 550c <_sk_callback_avx+0x1fa>
Mike Kleinfe560a82017-05-01 12:56:35 -040013097 .byte 196,193,100,84,218 // vandps %ymm10,%ymm3,%ymm3
13098 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinb3665f02017-05-01 14:56:04 -040013099 .byte 196,98,125,24,21,116,66,0,0 // vbroadcastss 0x4274(%rip),%ymm10 # 5510 <_sk_callback_avx+0x1fe>
Mike Kleinfe560a82017-05-01 12:56:35 -040013100 .byte 196,193,100,89,218 // vmulps %ymm10,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040013101 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040013102 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040013103 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
13104 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040013105 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040013106 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
13107 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
13108 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
13109 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040013110 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040013111 .byte 196,226,125,24,29,66,66,0,0 // vbroadcastss 0x4242(%rip),%ymm3 # 5514 <_sk_callback_avx+0x202>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013112 .byte 255,224 // jmpq *%rax
13113 .byte 65,137,200 // mov %ecx,%r8d
13114 .byte 65,128,224,7 // and $0x7,%r8b
13115 .byte 196,65,57,239,192 // vpxor %xmm8,%xmm8,%xmm8
13116 .byte 65,254,200 // dec %r8b
13117 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinb3665f02017-05-01 14:56:04 -040013118 .byte 15,135,63,255,255,255 // ja 122c <_sk_lerp_565_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013119 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinb3665f02017-05-01 14:56:04 -040013120 .byte 76,141,13,76,0,0,0 // lea 0x4c(%rip),%r9 # 1344 <_sk_lerp_565_avx+0x12c>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013121 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
13122 .byte 76,1,200 // add %r9,%rax
13123 .byte 255,224 // jmpq *%rax
13124 .byte 197,225,239,219 // vpxor %xmm3,%xmm3,%xmm3
13125 .byte 196,65,97,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm3,%xmm8
13126 .byte 196,65,57,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm8,%xmm8
13127 .byte 196,65,57,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm8,%xmm8
13128 .byte 196,65,57,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm8,%xmm8
13129 .byte 196,65,57,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm8,%xmm8
13130 .byte 196,65,57,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm8,%xmm8
13131 .byte 196,65,57,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm8,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040013132 .byte 233,235,254,255,255 // jmpq 122c <_sk_lerp_565_avx+0x14>
13133 .byte 15,31,0 // nopl (%rax)
13134 .byte 241 // icebp
Mike Kleind7e06ae2017-03-29 16:33:06 -040013135 .byte 255 // (bad)
13136 .byte 255 // (bad)
13137 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040013138 .byte 233,255,255,255,225 // jmpq ffffffffe200134c <_sk_callback_avx+0xffffffffe1ffc03a>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013139 .byte 255 // (bad)
13140 .byte 255 // (bad)
13141 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040013142 .byte 217,255 // fcos
13143 .byte 255 // (bad)
13144 .byte 255,209 // callq *%rcx
13145 .byte 255 // (bad)
13146 .byte 255 // (bad)
13147 .byte 255,201 // dec %ecx
13148 .byte 255 // (bad)
13149 .byte 255 // (bad)
13150 .byte 255 // (bad)
13151 .byte 189 // .byte 0xbd
Mike Kleind7e06ae2017-03-29 16:33:06 -040013152 .byte 255 // (bad)
13153 .byte 255 // (bad)
13154 .byte 255 // .byte 0xff
13155
Mike Klein7c4af542017-03-29 18:21:14 -040013156HIDDEN _sk_load_tables_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013157.globl _sk_load_tables_avx
Mike Klein86714282017-04-13 17:37:38 -040013158FUNCTION(_sk_load_tables_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013159_sk_load_tables_avx:
Mike Klein0aa742f2017-04-27 13:36:57 -040013160 .byte 72,173 // lods %ds:(%rsi),%rax
13161 .byte 76,139,0 // mov (%rax),%r8
13162 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013163 .byte 15,133,26,2,0,0 // jne 1588 <_sk_load_tables_avx+0x228>
Mike Klein0aa742f2017-04-27 13:36:57 -040013164 .byte 196,65,124,16,4,184 // vmovups (%r8,%rdi,4),%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040013165 .byte 85 // push %rbp
13166 .byte 65,87 // push %r15
13167 .byte 65,86 // push %r14
13168 .byte 65,85 // push %r13
13169 .byte 65,84 // push %r12
13170 .byte 83 // push %rbx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013171 .byte 197,124,40,13,90,68,0,0 // vmovaps 0x445a(%rip),%ymm9 # 57e0 <_sk_callback_avx+0x4ce>
Mike Klein0aa742f2017-04-27 13:36:57 -040013172 .byte 196,193,60,84,193 // vandps %ymm9,%ymm8,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040013173 .byte 196,193,249,126,193 // vmovq %xmm0,%r9
13174 .byte 69,137,203 // mov %r9d,%r11d
13175 .byte 196,195,249,22,194,1 // vpextrq $0x1,%xmm0,%r10
13176 .byte 69,137,214 // mov %r10d,%r14d
13177 .byte 73,193,234,32 // shr $0x20,%r10
13178 .byte 73,193,233,32 // shr $0x20,%r9
13179 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
13180 .byte 196,193,249,126,196 // vmovq %xmm0,%r12
13181 .byte 69,137,231 // mov %r12d,%r15d
13182 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
13183 .byte 65,137,221 // mov %ebx,%r13d
13184 .byte 72,193,235,32 // shr $0x20,%rbx
13185 .byte 73,193,236,32 // shr $0x20,%r12
13186 .byte 72,139,104,8 // mov 0x8(%rax),%rbp
13187 .byte 76,139,64,16 // mov 0x10(%rax),%r8
13188 .byte 196,161,122,16,68,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm0
13189 .byte 196,163,121,33,68,165,0,16 // vinsertps $0x10,0x0(%rbp,%r12,4),%xmm0,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040013190 .byte 196,163,121,33,68,173,0,32 // vinsertps $0x20,0x0(%rbp,%r13,4),%xmm0,%xmm0
13191 .byte 196,227,121,33,68,157,0,48 // vinsertps $0x30,0x0(%rbp,%rbx,4),%xmm0,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040013192 .byte 196,161,122,16,76,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm1
13193 .byte 196,163,113,33,76,141,0,16 // vinsertps $0x10,0x0(%rbp,%r9,4),%xmm1,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040013194 .byte 196,163,113,33,76,181,0,32 // vinsertps $0x20,0x0(%rbp,%r14,4),%xmm1,%xmm1
13195 .byte 196,163,113,33,76,149,0,48 // vinsertps $0x30,0x0(%rbp,%r10,4),%xmm1,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040013196 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
13197 .byte 196,193,113,114,208,8 // vpsrld $0x8,%xmm8,%xmm1
13198 .byte 196,67,125,25,194,1 // vextractf128 $0x1,%ymm8,%xmm10
13199 .byte 196,193,105,114,210,8 // vpsrld $0x8,%xmm10,%xmm2
13200 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
Mike Klein0aa742f2017-04-27 13:36:57 -040013201 .byte 196,193,116,84,201 // vandps %ymm9,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040013202 .byte 196,193,249,126,201 // vmovq %xmm1,%r9
13203 .byte 69,137,203 // mov %r9d,%r11d
13204 .byte 196,195,249,22,202,1 // vpextrq $0x1,%xmm1,%r10
13205 .byte 69,137,214 // mov %r10d,%r14d
13206 .byte 73,193,234,32 // shr $0x20,%r10
13207 .byte 73,193,233,32 // shr $0x20,%r9
13208 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
13209 .byte 196,225,249,126,205 // vmovq %xmm1,%rbp
13210 .byte 65,137,239 // mov %ebp,%r15d
13211 .byte 196,227,249,22,203,1 // vpextrq $0x1,%xmm1,%rbx
13212 .byte 65,137,220 // mov %ebx,%r12d
13213 .byte 72,193,235,32 // shr $0x20,%rbx
13214 .byte 72,193,237,32 // shr $0x20,%rbp
13215 .byte 196,129,122,16,12,184 // vmovss (%r8,%r15,4),%xmm1
13216 .byte 196,195,113,33,12,168,16 // vinsertps $0x10,(%r8,%rbp,4),%xmm1,%xmm1
13217 .byte 196,129,122,16,20,160 // vmovss (%r8,%r12,4),%xmm2
13218 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
13219 .byte 196,193,122,16,20,152 // vmovss (%r8,%rbx,4),%xmm2
13220 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
13221 .byte 196,129,122,16,20,152 // vmovss (%r8,%r11,4),%xmm2
13222 .byte 196,131,105,33,20,136,16 // vinsertps $0x10,(%r8,%r9,4),%xmm2,%xmm2
13223 .byte 196,129,122,16,28,176 // vmovss (%r8,%r14,4),%xmm3
13224 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
13225 .byte 196,129,122,16,28,144 // vmovss (%r8,%r10,4),%xmm3
13226 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
13227 .byte 196,227,109,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm1
13228 .byte 72,139,64,24 // mov 0x18(%rax),%rax
13229 .byte 196,193,105,114,208,16 // vpsrld $0x10,%xmm8,%xmm2
13230 .byte 196,193,97,114,210,16 // vpsrld $0x10,%xmm10,%xmm3
13231 .byte 196,227,109,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm2,%ymm2
Mike Klein0aa742f2017-04-27 13:36:57 -040013232 .byte 196,193,108,84,209 // vandps %ymm9,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040013233 .byte 196,193,249,126,208 // vmovq %xmm2,%r8
13234 .byte 69,137,194 // mov %r8d,%r10d
13235 .byte 196,195,249,22,209,1 // vpextrq $0x1,%xmm2,%r9
13236 .byte 69,137,203 // mov %r9d,%r11d
13237 .byte 73,193,233,32 // shr $0x20,%r9
13238 .byte 73,193,232,32 // shr $0x20,%r8
13239 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
13240 .byte 196,225,249,126,213 // vmovq %xmm2,%rbp
13241 .byte 65,137,238 // mov %ebp,%r14d
13242 .byte 196,227,249,22,211,1 // vpextrq $0x1,%xmm2,%rbx
13243 .byte 65,137,223 // mov %ebx,%r15d
13244 .byte 72,193,235,32 // shr $0x20,%rbx
13245 .byte 72,193,237,32 // shr $0x20,%rbp
13246 .byte 196,161,122,16,20,176 // vmovss (%rax,%r14,4),%xmm2
13247 .byte 196,227,105,33,20,168,16 // vinsertps $0x10,(%rax,%rbp,4),%xmm2,%xmm2
13248 .byte 196,161,122,16,28,184 // vmovss (%rax,%r15,4),%xmm3
13249 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
13250 .byte 197,250,16,28,152 // vmovss (%rax,%rbx,4),%xmm3
13251 .byte 196,99,105,33,203,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm9
13252 .byte 196,161,122,16,28,144 // vmovss (%rax,%r10,4),%xmm3
13253 .byte 196,163,97,33,28,128,16 // vinsertps $0x10,(%rax,%r8,4),%xmm3,%xmm3
13254 .byte 196,161,122,16,20,152 // vmovss (%rax,%r11,4),%xmm2
13255 .byte 196,227,97,33,210,32 // vinsertps $0x20,%xmm2,%xmm3,%xmm2
13256 .byte 196,161,122,16,28,136 // vmovss (%rax,%r9,4),%xmm3
13257 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
13258 .byte 196,195,109,24,209,1 // vinsertf128 $0x1,%xmm9,%ymm2,%ymm2
13259 .byte 196,193,57,114,208,24 // vpsrld $0x18,%xmm8,%xmm8
13260 .byte 196,193,97,114,210,24 // vpsrld $0x18,%xmm10,%xmm3
13261 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040013262 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040013263 .byte 196,98,125,24,5,163,63,0,0 // vbroadcastss 0x3fa3(%rip),%ymm8 # 5518 <_sk_callback_avx+0x206>
Mike Kleinfe560a82017-05-01 12:56:35 -040013264 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040013265 .byte 72,173 // lods %ds:(%rsi),%rax
13266 .byte 91 // pop %rbx
13267 .byte 65,92 // pop %r12
13268 .byte 65,93 // pop %r13
13269 .byte 65,94 // pop %r14
13270 .byte 65,95 // pop %r15
13271 .byte 93 // pop %rbp
13272 .byte 255,224 // jmpq *%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040013273 .byte 65,137,201 // mov %ecx,%r9d
13274 .byte 65,128,225,7 // and $0x7,%r9b
Mike Kleind7e06ae2017-03-29 16:33:06 -040013275 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Klein0aa742f2017-04-27 13:36:57 -040013276 .byte 65,254,201 // dec %r9b
13277 .byte 65,128,249,6 // cmp $0x6,%r9b
Mike Kleinfb11acd2017-05-01 14:22:10 -040013278 .byte 15,135,211,253,255,255 // ja 1374 <_sk_load_tables_avx+0x14>
Mike Klein0aa742f2017-04-27 13:36:57 -040013279 .byte 69,15,182,201 // movzbl %r9b,%r9d
Mike Kleinfb11acd2017-05-01 14:22:10 -040013280 .byte 76,141,21,140,0,0,0 // lea 0x8c(%rip),%r10 # 1638 <_sk_load_tables_avx+0x2d8>
Mike Klein0aa742f2017-04-27 13:36:57 -040013281 .byte 79,99,12,138 // movslq (%r10,%r9,4),%r9
13282 .byte 77,1,209 // add %r10,%r9
13283 .byte 65,255,225 // jmpq *%r9
Mike Kleind7e06ae2017-03-29 16:33:06 -040013284 .byte 196,193,121,110,68,184,24 // vmovd 0x18(%r8,%rdi,4),%xmm0
13285 .byte 197,249,112,192,68 // vpshufd $0x44,%xmm0,%xmm0
13286 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
13287 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
13288 .byte 196,99,117,12,192,64 // vblendps $0x40,%ymm0,%ymm1,%ymm8
13289 .byte 196,99,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm0
13290 .byte 196,195,121,34,68,184,20,1 // vpinsrd $0x1,0x14(%r8,%rdi,4),%xmm0,%xmm0
13291 .byte 196,99,61,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm8,%ymm8
13292 .byte 196,99,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm0
13293 .byte 196,195,121,34,68,184,16,0 // vpinsrd $0x0,0x10(%r8,%rdi,4),%xmm0,%xmm0
13294 .byte 196,99,61,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm8,%ymm8
13295 .byte 196,195,57,34,68,184,12,3 // vpinsrd $0x3,0xc(%r8,%rdi,4),%xmm8,%xmm0
13296 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
13297 .byte 196,195,57,34,68,184,8,2 // vpinsrd $0x2,0x8(%r8,%rdi,4),%xmm8,%xmm0
13298 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
13299 .byte 196,195,57,34,68,184,4,1 // vpinsrd $0x1,0x4(%r8,%rdi,4),%xmm8,%xmm0
13300 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
13301 .byte 196,195,57,34,4,184,0 // vpinsrd $0x0,(%r8,%rdi,4),%xmm8,%xmm0
13302 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040013303 .byte 233,62,253,255,255 // jmpq 1374 <_sk_load_tables_avx+0x14>
Mike Kleinfe560a82017-05-01 12:56:35 -040013304 .byte 102,144 // xchg %ax,%ax
13305 .byte 236 // in (%dx),%al
Mike Kleind7e06ae2017-03-29 16:33:06 -040013306 .byte 255 // (bad)
13307 .byte 255 // (bad)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013308 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040013309 .byte 222,255 // fdivrp %st,%st(7)
13310 .byte 255 // (bad)
13311 .byte 255,208 // callq *%rax
13312 .byte 255 // (bad)
13313 .byte 255 // (bad)
13314 .byte 255,194 // inc %edx
13315 .byte 255 // (bad)
13316 .byte 255 // (bad)
13317 .byte 255,174,255,255,255,154 // ljmp *-0x65000001(%rsi)
13318 .byte 255 // (bad)
13319 .byte 255 // (bad)
13320 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040013321 .byte 126,255 // jle 1651 <_sk_load_tables_avx+0x2f1>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013322 .byte 255 // (bad)
13323 .byte 255 // .byte 0xff
Mike Kleind7e06ae2017-03-29 16:33:06 -040013324
Mike Kleina3735cd2017-04-17 13:19:05 -040013325HIDDEN _sk_load_tables_u16_be_avx
13326.globl _sk_load_tables_u16_be_avx
13327FUNCTION(_sk_load_tables_u16_be_avx)
13328_sk_load_tables_u16_be_avx:
13329 .byte 72,173 // lods %ds:(%rsi),%rax
13330 .byte 76,139,0 // mov (%rax),%r8
13331 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
13332 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013333 .byte 15,133,113,2,0,0 // jne 18db <_sk_load_tables_u16_be_avx+0x287>
Mike Kleina3735cd2017-04-17 13:19:05 -040013334 .byte 196,1,121,16,4,72 // vmovupd (%r8,%r9,2),%xmm8
13335 .byte 196,129,121,16,84,72,16 // vmovupd 0x10(%r8,%r9,2),%xmm2
13336 .byte 196,129,121,16,92,72,32 // vmovupd 0x20(%r8,%r9,2),%xmm3
13337 .byte 196,1,122,111,76,72,48 // vmovdqu 0x30(%r8,%r9,2),%xmm9
13338 .byte 85 // push %rbp
13339 .byte 65,87 // push %r15
13340 .byte 65,86 // push %r14
13341 .byte 65,85 // push %r13
13342 .byte 65,84 // push %r12
13343 .byte 83 // push %rbx
13344 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
13345 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
13346 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
13347 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
Mike Klein0aa742f2017-04-27 13:36:57 -040013348 .byte 197,121,97,202 // vpunpcklwd %xmm2,%xmm0,%xmm9
13349 .byte 197,121,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm8
13350 .byte 197,241,97,195 // vpunpcklwd %xmm3,%xmm1,%xmm0
13351 .byte 197,113,105,227 // vpunpckhwd %xmm3,%xmm1,%xmm12
13352 .byte 197,177,108,208 // vpunpcklqdq %xmm0,%xmm9,%xmm2
13353 .byte 197,177,109,200 // vpunpckhqdq %xmm0,%xmm9,%xmm1
13354 .byte 196,65,57,108,212 // vpunpcklqdq %xmm12,%xmm8,%xmm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040013355 .byte 197,121,111,29,154,65,0,0 // vmovdqa 0x419a(%rip),%xmm11 # 5860 <_sk_callback_avx+0x54e>
Mike Klein0aa742f2017-04-27 13:36:57 -040013356 .byte 196,193,105,219,195 // vpand %xmm11,%xmm2,%xmm0
13357 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
13358 .byte 196,193,121,105,209 // vpunpckhwd %xmm9,%xmm0,%xmm2
13359 .byte 196,195,249,22,208,1 // vpextrq $0x1,%xmm2,%r8
13360 .byte 69,137,193 // mov %r8d,%r9d
13361 .byte 77,137,194 // mov %r8,%r10
Mike Kleina3735cd2017-04-17 13:19:05 -040013362 .byte 73,193,234,32 // shr $0x20,%r10
Mike Klein0aa742f2017-04-27 13:36:57 -040013363 .byte 196,193,249,126,208 // vmovq %xmm2,%r8
13364 .byte 69,137,195 // mov %r8d,%r11d
13365 .byte 77,137,198 // mov %r8,%r14
13366 .byte 73,193,238,32 // shr $0x20,%r14
13367 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
13368 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
13369 .byte 65,137,223 // mov %ebx,%r15d
13370 .byte 72,193,235,30 // shr $0x1e,%rbx
13371 .byte 196,195,249,22,196,1 // vpextrq $0x1,%xmm0,%r12
13372 .byte 69,137,229 // mov %r12d,%r13d
13373 .byte 73,193,236,30 // shr $0x1e,%r12
Mike Kleina3735cd2017-04-17 13:19:05 -040013374 .byte 72,139,104,8 // mov 0x8(%rax),%rbp
13375 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040013376 .byte 196,161,122,16,68,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm0
13377 .byte 196,163,121,33,68,181,0,16 // vinsertps $0x10,0x0(%rbp,%r14,4),%xmm0,%xmm0
13378 .byte 196,161,122,16,84,141,0 // vmovss 0x0(%rbp,%r9,4),%xmm2
13379 .byte 196,227,121,33,194,32 // vinsertps $0x20,%xmm2,%xmm0,%xmm0
13380 .byte 196,161,122,16,84,149,0 // vmovss 0x0(%rbp,%r10,4),%xmm2
13381 .byte 196,227,121,33,194,48 // vinsertps $0x30,%xmm2,%xmm0,%xmm0
13382 .byte 196,161,122,16,84,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm2
13383 .byte 196,227,105,33,84,29,0,16 // vinsertps $0x10,0x0(%rbp,%rbx,1),%xmm2,%xmm2
13384 .byte 196,161,122,16,92,173,0 // vmovss 0x0(%rbp,%r13,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013385 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040013386 .byte 196,161,122,16,92,37,0 // vmovss 0x0(%rbp,%r12,1),%xmm3
13387 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
13388 .byte 196,227,109,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm2,%ymm0
13389 .byte 196,193,113,219,203 // vpand %xmm11,%xmm1,%xmm1
13390 .byte 196,193,113,105,209 // vpunpckhwd %xmm9,%xmm1,%xmm2
13391 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
13392 .byte 65,137,233 // mov %ebp,%r9d
13393 .byte 72,193,237,32 // shr $0x20,%rbp
13394 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
13395 .byte 65,137,218 // mov %ebx,%r10d
13396 .byte 72,193,235,32 // shr $0x20,%rbx
13397 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
13398 .byte 196,193,249,126,203 // vmovq %xmm1,%r11
13399 .byte 69,137,222 // mov %r11d,%r14d
13400 .byte 73,193,235,30 // shr $0x1e,%r11
13401 .byte 196,195,249,22,207,1 // vpextrq $0x1,%xmm1,%r15
13402 .byte 69,137,252 // mov %r15d,%r12d
13403 .byte 73,193,239,30 // shr $0x1e,%r15
13404 .byte 196,129,122,16,12,144 // vmovss (%r8,%r10,4),%xmm1
13405 .byte 196,195,113,33,12,152,16 // vinsertps $0x10,(%r8,%rbx,4),%xmm1,%xmm1
13406 .byte 196,129,122,16,20,136 // vmovss (%r8,%r9,4),%xmm2
13407 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
13408 .byte 196,193,122,16,20,168 // vmovss (%r8,%rbp,4),%xmm2
13409 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
13410 .byte 196,129,122,16,20,176 // vmovss (%r8,%r14,4),%xmm2
13411 .byte 196,131,105,33,20,24,16 // vinsertps $0x10,(%r8,%r11,1),%xmm2,%xmm2
13412 .byte 196,129,122,16,28,160 // vmovss (%r8,%r12,4),%xmm3
13413 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
13414 .byte 196,129,122,16,28,56 // vmovss (%r8,%r15,1),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013415 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
13416 .byte 196,227,109,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm1
Mike Klein0aa742f2017-04-27 13:36:57 -040013417 .byte 76,139,80,24 // mov 0x18(%rax),%r10
13418 .byte 196,193,41,219,211 // vpand %xmm11,%xmm10,%xmm2
13419 .byte 196,193,105,105,217 // vpunpckhwd %xmm9,%xmm2,%xmm3
13420 .byte 196,227,249,22,221,1 // vpextrq $0x1,%xmm3,%rbp
13421 .byte 65,137,232 // mov %ebp,%r8d
Mike Kleina3735cd2017-04-17 13:19:05 -040013422 .byte 72,193,237,32 // shr $0x20,%rbp
Mike Klein0aa742f2017-04-27 13:36:57 -040013423 .byte 196,225,249,126,219 // vmovq %xmm3,%rbx
13424 .byte 65,137,217 // mov %ebx,%r9d
13425 .byte 72,193,235,32 // shr $0x20,%rbx
13426 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
13427 .byte 196,225,249,126,208 // vmovq %xmm2,%rax
13428 .byte 65,137,195 // mov %eax,%r11d
13429 .byte 72,193,232,30 // shr $0x1e,%rax
13430 .byte 196,195,249,22,214,1 // vpextrq $0x1,%xmm2,%r14
13431 .byte 69,137,247 // mov %r14d,%r15d
13432 .byte 73,193,238,30 // shr $0x1e,%r14
13433 .byte 196,129,122,16,20,138 // vmovss (%r10,%r9,4),%xmm2
13434 .byte 196,195,105,33,20,154,16 // vinsertps $0x10,(%r10,%rbx,4),%xmm2,%xmm2
13435 .byte 196,129,122,16,28,130 // vmovss (%r10,%r8,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013436 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040013437 .byte 196,193,122,16,28,170 // vmovss (%r10,%rbp,4),%xmm3
13438 .byte 196,99,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm10
13439 .byte 196,129,122,16,28,154 // vmovss (%r10,%r11,4),%xmm3
13440 .byte 196,195,97,33,28,2,16 // vinsertps $0x10,(%r10,%rax,1),%xmm3,%xmm3
13441 .byte 196,129,122,16,20,186 // vmovss (%r10,%r15,4),%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040013442 .byte 196,227,97,33,210,32 // vinsertps $0x20,%xmm2,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040013443 .byte 196,129,122,16,28,50 // vmovss (%r10,%r14,1),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013444 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040013445 .byte 196,195,109,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm2,%ymm2
Mike Klein0aa742f2017-04-27 13:36:57 -040013446 .byte 196,193,57,109,220 // vpunpckhqdq %xmm12,%xmm8,%xmm3
13447 .byte 197,185,113,243,8 // vpsllw $0x8,%xmm3,%xmm8
Mike Kleina3735cd2017-04-17 13:19:05 -040013448 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
Mike Klein0aa742f2017-04-27 13:36:57 -040013449 .byte 197,185,235,219 // vpor %xmm3,%xmm8,%xmm3
13450 .byte 196,65,97,105,193 // vpunpckhwd %xmm9,%xmm3,%xmm8
Mike Kleina3735cd2017-04-17 13:19:05 -040013451 .byte 196,226,121,51,219 // vpmovzxwd %xmm3,%xmm3
13452 .byte 196,195,101,24,216,1 // vinsertf128 $0x1,%xmm8,%ymm3,%ymm3
13453 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040013454 .byte 196,98,125,24,5,84,60,0,0 // vbroadcastss 0x3c54(%rip),%ymm8 # 551c <_sk_callback_avx+0x20a>
Mike Kleinfe560a82017-05-01 12:56:35 -040013455 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013456 .byte 72,173 // lods %ds:(%rsi),%rax
13457 .byte 91 // pop %rbx
13458 .byte 65,92 // pop %r12
13459 .byte 65,93 // pop %r13
13460 .byte 65,94 // pop %r14
13461 .byte 65,95 // pop %r15
13462 .byte 93 // pop %rbp
13463 .byte 255,224 // jmpq *%rax
13464 .byte 196,1,123,16,4,72 // vmovsd (%r8,%r9,2),%xmm8
13465 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
13466 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013467 .byte 116,85 // je 1941 <_sk_load_tables_u16_be_avx+0x2ed>
Mike Kleina3735cd2017-04-17 13:19:05 -040013468 .byte 196,1,57,22,68,72,8 // vmovhpd 0x8(%r8,%r9,2),%xmm8,%xmm8
13469 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013470 .byte 114,72 // jb 1941 <_sk_load_tables_u16_be_avx+0x2ed>
Mike Kleina3735cd2017-04-17 13:19:05 -040013471 .byte 196,129,123,16,84,72,16 // vmovsd 0x10(%r8,%r9,2),%xmm2
13472 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013473 .byte 116,72 // je 194e <_sk_load_tables_u16_be_avx+0x2fa>
Mike Kleina3735cd2017-04-17 13:19:05 -040013474 .byte 196,129,105,22,84,72,24 // vmovhpd 0x18(%r8,%r9,2),%xmm2,%xmm2
13475 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013476 .byte 114,59 // jb 194e <_sk_load_tables_u16_be_avx+0x2fa>
Mike Kleina3735cd2017-04-17 13:19:05 -040013477 .byte 196,129,123,16,92,72,32 // vmovsd 0x20(%r8,%r9,2),%xmm3
13478 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013479 .byte 15,132,97,253,255,255 // je 1685 <_sk_load_tables_u16_be_avx+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040013480 .byte 196,129,97,22,92,72,40 // vmovhpd 0x28(%r8,%r9,2),%xmm3,%xmm3
13481 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013482 .byte 15,130,80,253,255,255 // jb 1685 <_sk_load_tables_u16_be_avx+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040013483 .byte 196,1,122,126,76,72,48 // vmovq 0x30(%r8,%r9,2),%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040013484 .byte 233,68,253,255,255 // jmpq 1685 <_sk_load_tables_u16_be_avx+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040013485 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
13486 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040013487 .byte 233,55,253,255,255 // jmpq 1685 <_sk_load_tables_u16_be_avx+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040013488 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040013489 .byte 233,46,253,255,255 // jmpq 1685 <_sk_load_tables_u16_be_avx+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040013490
13491HIDDEN _sk_load_tables_rgb_u16_be_avx
13492.globl _sk_load_tables_rgb_u16_be_avx
13493FUNCTION(_sk_load_tables_rgb_u16_be_avx)
13494_sk_load_tables_rgb_u16_be_avx:
13495 .byte 72,173 // lods %ds:(%rsi),%rax
13496 .byte 76,139,0 // mov (%rax),%r8
13497 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
13498 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013499 .byte 15,133,93,2,0,0 // jne 1bc6 <_sk_load_tables_rgb_u16_be_avx+0x26f>
Mike Kleina3735cd2017-04-17 13:19:05 -040013500 .byte 196,129,122,111,4,72 // vmovdqu (%r8,%r9,2),%xmm0
13501 .byte 196,129,122,111,84,72,12 // vmovdqu 0xc(%r8,%r9,2),%xmm2
13502 .byte 196,129,122,111,76,72,24 // vmovdqu 0x18(%r8,%r9,2),%xmm1
13503 .byte 196,129,122,111,92,72,32 // vmovdqu 0x20(%r8,%r9,2),%xmm3
13504 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
13505 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
13506 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
13507 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
13508 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
13509 .byte 85 // push %rbp
13510 .byte 65,87 // push %r15
13511 .byte 65,86 // push %r14
13512 .byte 65,85 // push %r13
13513 .byte 65,84 // push %r12
13514 .byte 83 // push %rbx
13515 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
13516 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
13517 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
13518 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
Mike Klein0aa742f2017-04-27 13:36:57 -040013519 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
13520 .byte 197,249,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040013521 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040013522 .byte 197,241,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm3
13523 .byte 197,185,108,202 // vpunpcklqdq %xmm2,%xmm8,%xmm1
13524 .byte 197,185,109,210 // vpunpckhqdq %xmm2,%xmm8,%xmm2
13525 .byte 197,121,108,195 // vpunpcklqdq %xmm3,%xmm0,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040013526 .byte 197,121,111,13,147,62,0,0 // vmovdqa 0x3e93(%rip),%xmm9 # 5870 <_sk_callback_avx+0x55e>
Mike Klein0aa742f2017-04-27 13:36:57 -040013527 .byte 196,193,113,219,193 // vpand %xmm9,%xmm1,%xmm0
13528 .byte 196,65,41,239,210 // vpxor %xmm10,%xmm10,%xmm10
13529 .byte 196,193,121,105,202 // vpunpckhwd %xmm10,%xmm0,%xmm1
13530 .byte 196,195,249,22,200,1 // vpextrq $0x1,%xmm1,%r8
13531 .byte 69,137,193 // mov %r8d,%r9d
13532 .byte 77,137,194 // mov %r8,%r10
Mike Kleina3735cd2017-04-17 13:19:05 -040013533 .byte 73,193,234,32 // shr $0x20,%r10
Mike Klein0aa742f2017-04-27 13:36:57 -040013534 .byte 196,193,249,126,200 // vmovq %xmm1,%r8
13535 .byte 69,137,195 // mov %r8d,%r11d
13536 .byte 77,137,198 // mov %r8,%r14
13537 .byte 73,193,238,32 // shr $0x20,%r14
13538 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
13539 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
13540 .byte 65,137,223 // mov %ebx,%r15d
13541 .byte 72,193,235,30 // shr $0x1e,%rbx
13542 .byte 196,195,249,22,196,1 // vpextrq $0x1,%xmm0,%r12
13543 .byte 69,137,229 // mov %r12d,%r13d
13544 .byte 73,193,236,30 // shr $0x1e,%r12
Mike Kleina3735cd2017-04-17 13:19:05 -040013545 .byte 72,139,104,8 // mov 0x8(%rax),%rbp
13546 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040013547 .byte 196,161,122,16,68,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm0
13548 .byte 196,163,121,33,68,181,0,16 // vinsertps $0x10,0x0(%rbp,%r14,4),%xmm0,%xmm0
13549 .byte 196,161,122,16,76,141,0 // vmovss 0x0(%rbp,%r9,4),%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040013550 .byte 196,227,121,33,193,32 // vinsertps $0x20,%xmm1,%xmm0,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040013551 .byte 196,161,122,16,76,149,0 // vmovss 0x0(%rbp,%r10,4),%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040013552 .byte 196,227,121,33,193,48 // vinsertps $0x30,%xmm1,%xmm0,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040013553 .byte 196,161,122,16,76,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm1
13554 .byte 196,227,113,33,76,29,0,16 // vinsertps $0x10,0x0(%rbp,%rbx,1),%xmm1,%xmm1
13555 .byte 196,161,122,16,92,173,0 // vmovss 0x0(%rbp,%r13,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013556 .byte 196,227,113,33,203,32 // vinsertps $0x20,%xmm3,%xmm1,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040013557 .byte 196,161,122,16,92,37,0 // vmovss 0x0(%rbp,%r12,1),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013558 .byte 196,227,113,33,203,48 // vinsertps $0x30,%xmm3,%xmm1,%xmm1
13559 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
Mike Klein0aa742f2017-04-27 13:36:57 -040013560 .byte 196,193,105,219,201 // vpand %xmm9,%xmm2,%xmm1
13561 .byte 196,193,113,105,210 // vpunpckhwd %xmm10,%xmm1,%xmm2
13562 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
13563 .byte 65,137,233 // mov %ebp,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040013564 .byte 72,193,237,32 // shr $0x20,%rbp
Mike Klein0aa742f2017-04-27 13:36:57 -040013565 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
13566 .byte 65,137,218 // mov %ebx,%r10d
13567 .byte 72,193,235,32 // shr $0x20,%rbx
13568 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
13569 .byte 196,193,249,126,203 // vmovq %xmm1,%r11
13570 .byte 69,137,222 // mov %r11d,%r14d
13571 .byte 73,193,235,30 // shr $0x1e,%r11
13572 .byte 196,195,249,22,207,1 // vpextrq $0x1,%xmm1,%r15
13573 .byte 69,137,252 // mov %r15d,%r12d
13574 .byte 73,193,239,30 // shr $0x1e,%r15
13575 .byte 196,129,122,16,12,144 // vmovss (%r8,%r10,4),%xmm1
13576 .byte 196,195,113,33,12,152,16 // vinsertps $0x10,(%r8,%rbx,4),%xmm1,%xmm1
13577 .byte 196,129,122,16,20,136 // vmovss (%r8,%r9,4),%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040013578 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040013579 .byte 196,193,122,16,20,168 // vmovss (%r8,%rbp,4),%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040013580 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040013581 .byte 196,129,122,16,20,176 // vmovss (%r8,%r14,4),%xmm2
13582 .byte 196,131,105,33,20,24,16 // vinsertps $0x10,(%r8,%r11,1),%xmm2,%xmm2
13583 .byte 196,129,122,16,28,160 // vmovss (%r8,%r12,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013584 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040013585 .byte 196,129,122,16,28,56 // vmovss (%r8,%r15,1),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013586 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
13587 .byte 196,227,109,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm1
Mike Klein0aa742f2017-04-27 13:36:57 -040013588 .byte 76,139,80,24 // mov 0x18(%rax),%r10
13589 .byte 196,193,57,219,209 // vpand %xmm9,%xmm8,%xmm2
13590 .byte 196,193,105,105,218 // vpunpckhwd %xmm10,%xmm2,%xmm3
13591 .byte 196,227,249,22,221,1 // vpextrq $0x1,%xmm3,%rbp
13592 .byte 65,137,232 // mov %ebp,%r8d
Mike Kleina3735cd2017-04-17 13:19:05 -040013593 .byte 72,193,237,32 // shr $0x20,%rbp
Mike Klein0aa742f2017-04-27 13:36:57 -040013594 .byte 196,225,249,126,219 // vmovq %xmm3,%rbx
13595 .byte 65,137,217 // mov %ebx,%r9d
13596 .byte 72,193,235,32 // shr $0x20,%rbx
13597 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
13598 .byte 196,225,249,126,208 // vmovq %xmm2,%rax
13599 .byte 65,137,195 // mov %eax,%r11d
13600 .byte 72,193,232,30 // shr $0x1e,%rax
13601 .byte 196,195,249,22,214,1 // vpextrq $0x1,%xmm2,%r14
13602 .byte 69,137,247 // mov %r14d,%r15d
13603 .byte 73,193,238,30 // shr $0x1e,%r14
13604 .byte 196,129,122,16,20,138 // vmovss (%r10,%r9,4),%xmm2
13605 .byte 196,195,105,33,20,154,16 // vinsertps $0x10,(%r10,%rbx,4),%xmm2,%xmm2
13606 .byte 196,129,122,16,28,130 // vmovss (%r10,%r8,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013607 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040013608 .byte 196,193,122,16,28,170 // vmovss (%r10,%rbp,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013609 .byte 196,99,105,33,195,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm8
Mike Klein0aa742f2017-04-27 13:36:57 -040013610 .byte 196,129,122,16,28,154 // vmovss (%r10,%r11,4),%xmm3
13611 .byte 196,195,97,33,28,2,16 // vinsertps $0x10,(%r10,%rax,1),%xmm3,%xmm3
13612 .byte 196,129,122,16,20,186 // vmovss (%r10,%r15,4),%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040013613 .byte 196,227,97,33,210,32 // vinsertps $0x20,%xmm2,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040013614 .byte 196,129,122,16,28,50 // vmovss (%r10,%r14,1),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040013615 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
13616 .byte 196,195,109,24,208,1 // vinsertf128 $0x1,%xmm8,%ymm2,%ymm2
Mike Kleina3735cd2017-04-17 13:19:05 -040013617 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040013618 .byte 196,226,125,24,29,102,57,0,0 // vbroadcastss 0x3966(%rip),%ymm3 # 5520 <_sk_callback_avx+0x20e>
Mike Kleina3735cd2017-04-17 13:19:05 -040013619 .byte 91 // pop %rbx
13620 .byte 65,92 // pop %r12
13621 .byte 65,93 // pop %r13
13622 .byte 65,94 // pop %r14
13623 .byte 65,95 // pop %r15
13624 .byte 93 // pop %rbp
13625 .byte 255,224 // jmpq *%rax
13626 .byte 196,129,121,110,4,72 // vmovd (%r8,%r9,2),%xmm0
13627 .byte 196,129,121,196,68,72,4,2 // vpinsrw $0x2,0x4(%r8,%r9,2),%xmm0,%xmm0
13628 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013629 .byte 117,5 // jne 1bdf <_sk_load_tables_rgb_u16_be_avx+0x288>
13630 .byte 233,190,253,255,255 // jmpq 199d <_sk_load_tables_rgb_u16_be_avx+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040013631 .byte 196,129,121,110,76,72,6 // vmovd 0x6(%r8,%r9,2),%xmm1
13632 .byte 196,1,113,196,68,72,10,2 // vpinsrw $0x2,0xa(%r8,%r9,2),%xmm1,%xmm8
13633 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013634 .byte 114,26 // jb 1c0e <_sk_load_tables_rgb_u16_be_avx+0x2b7>
Mike Kleina3735cd2017-04-17 13:19:05 -040013635 .byte 196,129,121,110,76,72,12 // vmovd 0xc(%r8,%r9,2),%xmm1
13636 .byte 196,129,113,196,84,72,16,2 // vpinsrw $0x2,0x10(%r8,%r9,2),%xmm1,%xmm2
13637 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013638 .byte 117,10 // jne 1c13 <_sk_load_tables_rgb_u16_be_avx+0x2bc>
13639 .byte 233,143,253,255,255 // jmpq 199d <_sk_load_tables_rgb_u16_be_avx+0x46>
13640 .byte 233,138,253,255,255 // jmpq 199d <_sk_load_tables_rgb_u16_be_avx+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040013641 .byte 196,129,121,110,76,72,18 // vmovd 0x12(%r8,%r9,2),%xmm1
13642 .byte 196,1,113,196,76,72,22,2 // vpinsrw $0x2,0x16(%r8,%r9,2),%xmm1,%xmm9
13643 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013644 .byte 114,26 // jb 1c42 <_sk_load_tables_rgb_u16_be_avx+0x2eb>
Mike Kleina3735cd2017-04-17 13:19:05 -040013645 .byte 196,129,121,110,76,72,24 // vmovd 0x18(%r8,%r9,2),%xmm1
13646 .byte 196,129,113,196,76,72,28,2 // vpinsrw $0x2,0x1c(%r8,%r9,2),%xmm1,%xmm1
13647 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013648 .byte 117,10 // jne 1c47 <_sk_load_tables_rgb_u16_be_avx+0x2f0>
13649 .byte 233,91,253,255,255 // jmpq 199d <_sk_load_tables_rgb_u16_be_avx+0x46>
13650 .byte 233,86,253,255,255 // jmpq 199d <_sk_load_tables_rgb_u16_be_avx+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040013651 .byte 196,129,121,110,92,72,30 // vmovd 0x1e(%r8,%r9,2),%xmm3
13652 .byte 196,1,97,196,92,72,34,2 // vpinsrw $0x2,0x22(%r8,%r9,2),%xmm3,%xmm11
13653 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040013654 .byte 114,20 // jb 1c70 <_sk_load_tables_rgb_u16_be_avx+0x319>
Mike Kleina3735cd2017-04-17 13:19:05 -040013655 .byte 196,129,121,110,92,72,36 // vmovd 0x24(%r8,%r9,2),%xmm3
13656 .byte 196,129,97,196,92,72,40,2 // vpinsrw $0x2,0x28(%r8,%r9,2),%xmm3,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040013657 .byte 233,45,253,255,255 // jmpq 199d <_sk_load_tables_rgb_u16_be_avx+0x46>
13658 .byte 233,40,253,255,255 // jmpq 199d <_sk_load_tables_rgb_u16_be_avx+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040013659
Mike Klein40de6da2017-04-07 13:09:29 -040013660HIDDEN _sk_byte_tables_avx
13661.globl _sk_byte_tables_avx
Mike Klein86714282017-04-13 17:37:38 -040013662FUNCTION(_sk_byte_tables_avx)
Mike Klein40de6da2017-04-07 13:09:29 -040013663_sk_byte_tables_avx:
13664 .byte 85 // push %rbp
13665 .byte 65,87 // push %r15
13666 .byte 65,86 // push %r14
13667 .byte 65,85 // push %r13
13668 .byte 65,84 // push %r12
13669 .byte 83 // push %rbx
13670 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040013671 .byte 196,98,125,24,5,154,56,0,0 // vbroadcastss 0x389a(%rip),%ymm8 # 5524 <_sk_callback_avx+0x212>
Mike Kleinfe560a82017-05-01 12:56:35 -040013672 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Klein40de6da2017-04-07 13:09:29 -040013673 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
13674 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
13675 .byte 68,137,197 // mov %r8d,%ebp
13676 .byte 77,137,194 // mov %r8,%r10
13677 .byte 73,193,234,32 // shr $0x20,%r10
13678 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
13679 .byte 69,137,195 // mov %r8d,%r11d
13680 .byte 77,137,199 // mov %r8,%r15
13681 .byte 73,193,239,32 // shr $0x20,%r15
13682 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
13683 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
13684 .byte 69,137,198 // mov %r8d,%r14d
13685 .byte 77,137,196 // mov %r8,%r12
13686 .byte 73,193,236,32 // shr $0x20,%r12
13687 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
13688 .byte 65,137,221 // mov %ebx,%r13d
13689 .byte 72,193,235,32 // shr $0x20,%rbx
13690 .byte 76,139,8 // mov (%rax),%r9
13691 .byte 76,139,64,8 // mov 0x8(%rax),%r8
13692 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
13693 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
13694 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
13695 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
13696 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
13697 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
13698 .byte 196,98,121,49,200 // vpmovzxbd %xmm0,%xmm9
13699 .byte 196,131,121,32,4,41,0 // vpinsrb $0x0,(%r9,%r13,1),%xmm0,%xmm0
13700 .byte 196,195,121,32,4,25,1 // vpinsrb $0x1,(%r9,%rbx,1),%xmm0,%xmm0
13701 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
13702 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
13703 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
13704 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
13705 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
13706 .byte 196,227,53,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040013707 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040013708 .byte 196,98,125,24,13,232,55,0,0 // vbroadcastss 0x37e8(%rip),%ymm9 # 5528 <_sk_callback_avx+0x216>
Mike Kleinfe560a82017-05-01 12:56:35 -040013709 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
13710 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -040013711 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
13712 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
13713 .byte 65,137,233 // mov %ebp,%r9d
13714 .byte 72,193,237,32 // shr $0x20,%rbp
13715 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
13716 .byte 65,137,218 // mov %ebx,%r10d
13717 .byte 72,193,235,32 // shr $0x20,%rbx
13718 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
13719 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
13720 .byte 69,137,222 // mov %r11d,%r14d
13721 .byte 73,193,235,32 // shr $0x20,%r11
13722 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
13723 .byte 69,137,252 // mov %r15d,%r12d
13724 .byte 73,193,239,32 // shr $0x20,%r15
13725 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
13726 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
13727 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
13728 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
13729 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
13730 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
13731 .byte 196,98,121,49,209 // vpmovzxbd %xmm1,%xmm10
13732 .byte 196,131,121,32,12,32,0 // vpinsrb $0x0,(%r8,%r12,1),%xmm0,%xmm1
13733 .byte 196,131,113,32,12,56,1 // vpinsrb $0x1,(%r8,%r15,1),%xmm1,%xmm1
13734 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
13735 .byte 196,227,113,32,205,2 // vpinsrb $0x2,%ebp,%xmm1,%xmm1
13736 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
13737 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
13738 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
13739 .byte 196,227,45,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm10,%ymm1
13740 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040013741 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -040013742 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Kleinfe560a82017-05-01 12:56:35 -040013743 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -040013744 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
13745 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
13746 .byte 65,137,233 // mov %ebp,%r9d
13747 .byte 72,193,237,32 // shr $0x20,%rbp
13748 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
13749 .byte 65,137,218 // mov %ebx,%r10d
13750 .byte 72,193,235,32 // shr $0x20,%rbx
13751 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
13752 .byte 196,195,249,22,211,1 // vpextrq $0x1,%xmm2,%r11
13753 .byte 69,137,222 // mov %r11d,%r14d
13754 .byte 73,193,235,32 // shr $0x20,%r11
13755 .byte 196,193,249,126,215 // vmovq %xmm2,%r15
13756 .byte 69,137,252 // mov %r15d,%r12d
13757 .byte 73,193,239,32 // shr $0x20,%r15
13758 .byte 196,131,121,32,20,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm2
13759 .byte 196,195,105,32,20,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm2,%xmm2
13760 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
13761 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
13762 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
13763 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
13764 .byte 196,98,121,49,210 // vpmovzxbd %xmm2,%xmm10
13765 .byte 196,131,121,32,20,32,0 // vpinsrb $0x0,(%r8,%r12,1),%xmm0,%xmm2
13766 .byte 196,131,105,32,20,56,1 // vpinsrb $0x1,(%r8,%r15,1),%xmm2,%xmm2
13767 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
13768 .byte 196,227,105,32,213,2 // vpinsrb $0x2,%ebp,%xmm2,%xmm2
13769 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
13770 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
13771 .byte 196,226,121,49,210 // vpmovzxbd %xmm2,%xmm2
13772 .byte 196,227,45,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm10,%ymm2
13773 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040013774 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -040013775 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040013776 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Klein40de6da2017-04-07 13:09:29 -040013777 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
13778 .byte 196,227,249,22,221,1 // vpextrq $0x1,%xmm3,%rbp
13779 .byte 65,137,232 // mov %ebp,%r8d
13780 .byte 72,193,237,32 // shr $0x20,%rbp
13781 .byte 196,225,249,126,219 // vmovq %xmm3,%rbx
13782 .byte 65,137,217 // mov %ebx,%r9d
13783 .byte 72,193,235,32 // shr $0x20,%rbx
13784 .byte 196,227,125,25,219,1 // vextractf128 $0x1,%ymm3,%xmm3
13785 .byte 196,195,249,22,218,1 // vpextrq $0x1,%xmm3,%r10
13786 .byte 69,137,211 // mov %r10d,%r11d
13787 .byte 73,193,234,32 // shr $0x20,%r10
13788 .byte 196,193,249,126,222 // vmovq %xmm3,%r14
13789 .byte 69,137,247 // mov %r14d,%r15d
13790 .byte 73,193,238,32 // shr $0x20,%r14
13791 .byte 196,163,121,32,28,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm3
13792 .byte 196,227,97,32,28,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm3,%xmm3
13793 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
13794 .byte 196,227,97,32,219,2 // vpinsrb $0x2,%ebx,%xmm3,%xmm3
13795 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
13796 .byte 196,227,97,32,221,3 // vpinsrb $0x3,%ebp,%xmm3,%xmm3
13797 .byte 196,98,121,49,195 // vpmovzxbd %xmm3,%xmm8
13798 .byte 196,163,121,32,28,56,0 // vpinsrb $0x0,(%rax,%r15,1),%xmm0,%xmm3
13799 .byte 196,163,97,32,28,48,1 // vpinsrb $0x1,(%rax,%r14,1),%xmm3,%xmm3
13800 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
13801 .byte 196,227,97,32,221,2 // vpinsrb $0x2,%ebp,%xmm3,%xmm3
13802 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
13803 .byte 196,227,97,32,216,3 // vpinsrb $0x3,%eax,%xmm3,%xmm3
13804 .byte 196,226,121,49,219 // vpmovzxbd %xmm3,%xmm3
13805 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
13806 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040013807 .byte 196,193,100,89,217 // vmulps %ymm9,%ymm3,%ymm3
Mike Klein40de6da2017-04-07 13:09:29 -040013808 .byte 72,173 // lods %ds:(%rsi),%rax
13809 .byte 91 // pop %rbx
13810 .byte 65,92 // pop %r12
13811 .byte 65,93 // pop %r13
13812 .byte 65,94 // pop %r14
13813 .byte 65,95 // pop %r15
13814 .byte 93 // pop %rbp
13815 .byte 255,224 // jmpq *%rax
13816
13817HIDDEN _sk_byte_tables_rgb_avx
13818.globl _sk_byte_tables_rgb_avx
Mike Klein86714282017-04-13 17:37:38 -040013819FUNCTION(_sk_byte_tables_rgb_avx)
Mike Klein40de6da2017-04-07 13:09:29 -040013820_sk_byte_tables_rgb_avx:
13821 .byte 85 // push %rbp
13822 .byte 65,87 // push %r15
13823 .byte 65,86 // push %r14
13824 .byte 65,85 // push %r13
13825 .byte 65,84 // push %r12
13826 .byte 83 // push %rbx
13827 .byte 72,173 // lods %ds:(%rsi),%rax
13828 .byte 68,139,64,24 // mov 0x18(%rax),%r8d
13829 .byte 65,255,200 // dec %r8d
13830 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
13831 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
13832 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
13833 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
13834 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
13835 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
13836 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
13837 .byte 68,137,197 // mov %r8d,%ebp
13838 .byte 77,137,194 // mov %r8,%r10
13839 .byte 73,193,234,32 // shr $0x20,%r10
13840 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
13841 .byte 69,137,195 // mov %r8d,%r11d
13842 .byte 77,137,199 // mov %r8,%r15
13843 .byte 73,193,239,32 // shr $0x20,%r15
13844 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
13845 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
13846 .byte 69,137,198 // mov %r8d,%r14d
13847 .byte 77,137,196 // mov %r8,%r12
13848 .byte 73,193,236,32 // shr $0x20,%r12
13849 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
13850 .byte 65,137,221 // mov %ebx,%r13d
13851 .byte 72,193,235,32 // shr $0x20,%rbx
13852 .byte 76,139,8 // mov (%rax),%r9
13853 .byte 76,139,64,8 // mov 0x8(%rax),%r8
13854 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
13855 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
13856 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
13857 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
13858 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
13859 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
13860 .byte 196,98,121,49,200 // vpmovzxbd %xmm0,%xmm9
13861 .byte 196,131,121,32,4,41,0 // vpinsrb $0x0,(%r9,%r13,1),%xmm0,%xmm0
13862 .byte 196,195,121,32,4,25,1 // vpinsrb $0x1,(%r9,%rbx,1),%xmm0,%xmm0
13863 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
13864 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
13865 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
13866 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
13867 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
13868 .byte 196,227,53,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040013869 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040013870 .byte 196,98,125,24,13,14,53,0,0 // vbroadcastss 0x350e(%rip),%ymm9 # 552c <_sk_callback_avx+0x21a>
Mike Kleinfe560a82017-05-01 12:56:35 -040013871 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
Mike Klein40de6da2017-04-07 13:09:29 -040013872 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
13873 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
13874 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
13875 .byte 65,137,233 // mov %ebp,%r9d
13876 .byte 72,193,237,32 // shr $0x20,%rbp
13877 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
13878 .byte 65,137,218 // mov %ebx,%r10d
13879 .byte 72,193,235,32 // shr $0x20,%rbx
13880 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
13881 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
13882 .byte 69,137,222 // mov %r11d,%r14d
13883 .byte 73,193,235,32 // shr $0x20,%r11
13884 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
13885 .byte 69,137,252 // mov %r15d,%r12d
13886 .byte 73,193,239,32 // shr $0x20,%r15
13887 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
13888 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
13889 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
13890 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
13891 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
13892 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
13893 .byte 196,98,121,49,209 // vpmovzxbd %xmm1,%xmm10
13894 .byte 196,131,121,32,12,32,0 // vpinsrb $0x0,(%r8,%r12,1),%xmm0,%xmm1
13895 .byte 196,131,113,32,12,56,1 // vpinsrb $0x1,(%r8,%r15,1),%xmm1,%xmm1
13896 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
13897 .byte 196,227,113,32,205,2 // vpinsrb $0x2,%ebp,%xmm1,%xmm1
13898 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
13899 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
13900 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
13901 .byte 196,227,45,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm10,%ymm1
13902 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040013903 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -040013904 .byte 72,139,64,16 // mov 0x10(%rax),%rax
13905 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
13906 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
13907 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
13908 .byte 65,137,232 // mov %ebp,%r8d
13909 .byte 72,193,237,32 // shr $0x20,%rbp
13910 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
13911 .byte 65,137,217 // mov %ebx,%r9d
13912 .byte 72,193,235,32 // shr $0x20,%rbx
13913 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
13914 .byte 196,195,249,22,210,1 // vpextrq $0x1,%xmm2,%r10
13915 .byte 69,137,211 // mov %r10d,%r11d
13916 .byte 73,193,234,32 // shr $0x20,%r10
13917 .byte 196,193,249,126,214 // vmovq %xmm2,%r14
13918 .byte 69,137,247 // mov %r14d,%r15d
13919 .byte 73,193,238,32 // shr $0x20,%r14
13920 .byte 196,163,121,32,20,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm2
13921 .byte 196,227,105,32,20,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm2,%xmm2
13922 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
13923 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
13924 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
13925 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
13926 .byte 196,98,121,49,194 // vpmovzxbd %xmm2,%xmm8
13927 .byte 196,163,121,32,20,56,0 // vpinsrb $0x0,(%rax,%r15,1),%xmm0,%xmm2
13928 .byte 196,163,105,32,20,48,1 // vpinsrb $0x1,(%rax,%r14,1),%xmm2,%xmm2
13929 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
13930 .byte 196,227,105,32,213,2 // vpinsrb $0x2,%ebp,%xmm2,%xmm2
13931 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
13932 .byte 196,227,105,32,208,3 // vpinsrb $0x3,%eax,%xmm2,%xmm2
13933 .byte 196,226,121,49,210 // vpmovzxbd %xmm2,%xmm2
13934 .byte 196,227,61,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm8,%ymm2
13935 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040013936 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -040013937 .byte 72,173 // lods %ds:(%rsi),%rax
13938 .byte 91 // pop %rbx
13939 .byte 65,92 // pop %r12
13940 .byte 65,93 // pop %r13
13941 .byte 65,94 // pop %r14
13942 .byte 65,95 // pop %r15
13943 .byte 93 // pop %rbp
13944 .byte 255,224 // jmpq *%rax
13945
Mike Kleinc7d9c0b2017-04-17 14:43:59 -040013946HIDDEN _sk_table_r_avx
13947.globl _sk_table_r_avx
13948FUNCTION(_sk_table_r_avx)
13949_sk_table_r_avx:
13950 .byte 65,87 // push %r15
13951 .byte 65,86 // push %r14
13952 .byte 65,84 // push %r12
13953 .byte 83 // push %rbx
13954 .byte 72,173 // lods %ds:(%rsi),%rax
13955 .byte 76,139,0 // mov (%rax),%r8
13956 .byte 139,64,8 // mov 0x8(%rax),%eax
13957 .byte 255,200 // dec %eax
13958 .byte 197,121,110,192 // vmovd %eax,%xmm8
13959 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
13960 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
13961 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
13962 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
13963 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
13964 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
13965 .byte 65,137,193 // mov %eax,%r9d
13966 .byte 72,193,232,32 // shr $0x20,%rax
13967 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
13968 .byte 69,137,211 // mov %r10d,%r11d
13969 .byte 73,193,234,32 // shr $0x20,%r10
13970 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
13971 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
13972 .byte 65,137,222 // mov %ebx,%r14d
13973 .byte 72,193,235,32 // shr $0x20,%rbx
13974 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
13975 .byte 69,137,252 // mov %r15d,%r12d
13976 .byte 73,193,239,32 // shr $0x20,%r15
13977 .byte 196,129,122,16,4,160 // vmovss (%r8,%r12,4),%xmm0
13978 .byte 196,3,121,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm0,%xmm8
13979 .byte 196,129,122,16,4,176 // vmovss (%r8,%r14,4),%xmm0
13980 .byte 196,99,57,33,192,32 // vinsertps $0x20,%xmm0,%xmm8,%xmm8
13981 .byte 196,193,122,16,4,152 // vmovss (%r8,%rbx,4),%xmm0
13982 .byte 196,99,57,33,192,48 // vinsertps $0x30,%xmm0,%xmm8,%xmm8
13983 .byte 196,129,122,16,4,152 // vmovss (%r8,%r11,4),%xmm0
13984 .byte 196,3,121,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm0,%xmm9
13985 .byte 196,129,122,16,4,136 // vmovss (%r8,%r9,4),%xmm0
13986 .byte 196,99,49,33,200,32 // vinsertps $0x20,%xmm0,%xmm9,%xmm9
13987 .byte 196,193,122,16,4,128 // vmovss (%r8,%rax,4),%xmm0
13988 .byte 196,227,49,33,192,48 // vinsertps $0x30,%xmm0,%xmm9,%xmm0
13989 .byte 196,195,125,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm0,%ymm0
13990 .byte 72,173 // lods %ds:(%rsi),%rax
13991 .byte 91 // pop %rbx
13992 .byte 65,92 // pop %r12
13993 .byte 65,94 // pop %r14
13994 .byte 65,95 // pop %r15
13995 .byte 255,224 // jmpq *%rax
13996
13997HIDDEN _sk_table_g_avx
13998.globl _sk_table_g_avx
13999FUNCTION(_sk_table_g_avx)
14000_sk_table_g_avx:
14001 .byte 65,87 // push %r15
14002 .byte 65,86 // push %r14
14003 .byte 65,84 // push %r12
14004 .byte 83 // push %rbx
14005 .byte 72,173 // lods %ds:(%rsi),%rax
14006 .byte 76,139,0 // mov (%rax),%r8
14007 .byte 139,64,8 // mov 0x8(%rax),%eax
14008 .byte 255,200 // dec %eax
14009 .byte 197,121,110,192 // vmovd %eax,%xmm8
14010 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
14011 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
14012 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
14013 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
14014 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
14015 .byte 196,227,249,22,200,1 // vpextrq $0x1,%xmm1,%rax
14016 .byte 65,137,193 // mov %eax,%r9d
14017 .byte 72,193,232,32 // shr $0x20,%rax
14018 .byte 196,193,249,126,202 // vmovq %xmm1,%r10
14019 .byte 69,137,211 // mov %r10d,%r11d
14020 .byte 73,193,234,32 // shr $0x20,%r10
14021 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
14022 .byte 196,227,249,22,203,1 // vpextrq $0x1,%xmm1,%rbx
14023 .byte 65,137,222 // mov %ebx,%r14d
14024 .byte 72,193,235,32 // shr $0x20,%rbx
14025 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
14026 .byte 69,137,252 // mov %r15d,%r12d
14027 .byte 73,193,239,32 // shr $0x20,%r15
14028 .byte 196,129,122,16,12,160 // vmovss (%r8,%r12,4),%xmm1
14029 .byte 196,3,113,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm1,%xmm8
14030 .byte 196,129,122,16,12,176 // vmovss (%r8,%r14,4),%xmm1
14031 .byte 196,99,57,33,193,32 // vinsertps $0x20,%xmm1,%xmm8,%xmm8
14032 .byte 196,193,122,16,12,152 // vmovss (%r8,%rbx,4),%xmm1
14033 .byte 196,99,57,33,193,48 // vinsertps $0x30,%xmm1,%xmm8,%xmm8
14034 .byte 196,129,122,16,12,152 // vmovss (%r8,%r11,4),%xmm1
14035 .byte 196,3,113,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm1,%xmm9
14036 .byte 196,129,122,16,12,136 // vmovss (%r8,%r9,4),%xmm1
14037 .byte 196,99,49,33,201,32 // vinsertps $0x20,%xmm1,%xmm9,%xmm9
14038 .byte 196,193,122,16,12,128 // vmovss (%r8,%rax,4),%xmm1
14039 .byte 196,227,49,33,201,48 // vinsertps $0x30,%xmm1,%xmm9,%xmm1
14040 .byte 196,195,117,24,200,1 // vinsertf128 $0x1,%xmm8,%ymm1,%ymm1
14041 .byte 72,173 // lods %ds:(%rsi),%rax
14042 .byte 91 // pop %rbx
14043 .byte 65,92 // pop %r12
14044 .byte 65,94 // pop %r14
14045 .byte 65,95 // pop %r15
14046 .byte 255,224 // jmpq *%rax
14047
14048HIDDEN _sk_table_b_avx
14049.globl _sk_table_b_avx
14050FUNCTION(_sk_table_b_avx)
14051_sk_table_b_avx:
14052 .byte 65,87 // push %r15
14053 .byte 65,86 // push %r14
14054 .byte 65,84 // push %r12
14055 .byte 83 // push %rbx
14056 .byte 72,173 // lods %ds:(%rsi),%rax
14057 .byte 76,139,0 // mov (%rax),%r8
14058 .byte 139,64,8 // mov 0x8(%rax),%eax
14059 .byte 255,200 // dec %eax
14060 .byte 197,121,110,192 // vmovd %eax,%xmm8
14061 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
14062 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
14063 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
14064 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
14065 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
14066 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
14067 .byte 65,137,193 // mov %eax,%r9d
14068 .byte 72,193,232,32 // shr $0x20,%rax
14069 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
14070 .byte 69,137,211 // mov %r10d,%r11d
14071 .byte 73,193,234,32 // shr $0x20,%r10
14072 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
14073 .byte 196,227,249,22,211,1 // vpextrq $0x1,%xmm2,%rbx
14074 .byte 65,137,222 // mov %ebx,%r14d
14075 .byte 72,193,235,32 // shr $0x20,%rbx
14076 .byte 196,193,249,126,215 // vmovq %xmm2,%r15
14077 .byte 69,137,252 // mov %r15d,%r12d
14078 .byte 73,193,239,32 // shr $0x20,%r15
14079 .byte 196,129,122,16,20,160 // vmovss (%r8,%r12,4),%xmm2
14080 .byte 196,3,105,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm2,%xmm8
14081 .byte 196,129,122,16,20,176 // vmovss (%r8,%r14,4),%xmm2
14082 .byte 196,99,57,33,194,32 // vinsertps $0x20,%xmm2,%xmm8,%xmm8
14083 .byte 196,193,122,16,20,152 // vmovss (%r8,%rbx,4),%xmm2
14084 .byte 196,99,57,33,194,48 // vinsertps $0x30,%xmm2,%xmm8,%xmm8
14085 .byte 196,129,122,16,20,152 // vmovss (%r8,%r11,4),%xmm2
14086 .byte 196,3,105,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm2,%xmm9
14087 .byte 196,129,122,16,20,136 // vmovss (%r8,%r9,4),%xmm2
14088 .byte 196,99,49,33,202,32 // vinsertps $0x20,%xmm2,%xmm9,%xmm9
14089 .byte 196,193,122,16,20,128 // vmovss (%r8,%rax,4),%xmm2
14090 .byte 196,227,49,33,210,48 // vinsertps $0x30,%xmm2,%xmm9,%xmm2
14091 .byte 196,195,109,24,208,1 // vinsertf128 $0x1,%xmm8,%ymm2,%ymm2
14092 .byte 72,173 // lods %ds:(%rsi),%rax
14093 .byte 91 // pop %rbx
14094 .byte 65,92 // pop %r12
14095 .byte 65,94 // pop %r14
14096 .byte 65,95 // pop %r15
14097 .byte 255,224 // jmpq *%rax
14098
14099HIDDEN _sk_table_a_avx
14100.globl _sk_table_a_avx
14101FUNCTION(_sk_table_a_avx)
14102_sk_table_a_avx:
14103 .byte 65,87 // push %r15
14104 .byte 65,86 // push %r14
14105 .byte 65,84 // push %r12
14106 .byte 83 // push %rbx
14107 .byte 72,173 // lods %ds:(%rsi),%rax
14108 .byte 76,139,0 // mov (%rax),%r8
14109 .byte 139,64,8 // mov 0x8(%rax),%eax
14110 .byte 255,200 // dec %eax
14111 .byte 197,121,110,192 // vmovd %eax,%xmm8
14112 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
14113 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
14114 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
14115 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
14116 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
14117 .byte 196,227,249,22,216,1 // vpextrq $0x1,%xmm3,%rax
14118 .byte 65,137,193 // mov %eax,%r9d
14119 .byte 72,193,232,32 // shr $0x20,%rax
14120 .byte 196,193,249,126,218 // vmovq %xmm3,%r10
14121 .byte 69,137,211 // mov %r10d,%r11d
14122 .byte 73,193,234,32 // shr $0x20,%r10
14123 .byte 196,227,125,25,219,1 // vextractf128 $0x1,%ymm3,%xmm3
14124 .byte 196,227,249,22,219,1 // vpextrq $0x1,%xmm3,%rbx
14125 .byte 65,137,222 // mov %ebx,%r14d
14126 .byte 72,193,235,32 // shr $0x20,%rbx
14127 .byte 196,193,249,126,223 // vmovq %xmm3,%r15
14128 .byte 69,137,252 // mov %r15d,%r12d
14129 .byte 73,193,239,32 // shr $0x20,%r15
14130 .byte 196,129,122,16,28,160 // vmovss (%r8,%r12,4),%xmm3
14131 .byte 196,3,97,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm3,%xmm8
14132 .byte 196,129,122,16,28,176 // vmovss (%r8,%r14,4),%xmm3
14133 .byte 196,99,57,33,195,32 // vinsertps $0x20,%xmm3,%xmm8,%xmm8
14134 .byte 196,193,122,16,28,152 // vmovss (%r8,%rbx,4),%xmm3
14135 .byte 196,99,57,33,195,48 // vinsertps $0x30,%xmm3,%xmm8,%xmm8
14136 .byte 196,129,122,16,28,152 // vmovss (%r8,%r11,4),%xmm3
14137 .byte 196,3,97,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm3,%xmm9
14138 .byte 196,129,122,16,28,136 // vmovss (%r8,%r9,4),%xmm3
14139 .byte 196,99,49,33,203,32 // vinsertps $0x20,%xmm3,%xmm9,%xmm9
14140 .byte 196,193,122,16,28,128 // vmovss (%r8,%rax,4),%xmm3
14141 .byte 196,227,49,33,219,48 // vinsertps $0x30,%xmm3,%xmm9,%xmm3
14142 .byte 196,195,101,24,216,1 // vinsertf128 $0x1,%xmm8,%ymm3,%ymm3
14143 .byte 72,173 // lods %ds:(%rsi),%rax
14144 .byte 91 // pop %rbx
14145 .byte 65,92 // pop %r12
14146 .byte 65,94 // pop %r14
14147 .byte 65,95 // pop %r15
14148 .byte 255,224 // jmpq *%rax
14149
Mike Klein44375172017-04-17 19:32:05 -040014150HIDDEN _sk_parametric_r_avx
14151.globl _sk_parametric_r_avx
14152FUNCTION(_sk_parametric_r_avx)
14153_sk_parametric_r_avx:
14154 .byte 72,173 // lods %ds:(%rsi),%rax
14155 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
14156 .byte 196,65,124,194,192,2 // vcmpleps %ymm8,%ymm0,%ymm8
14157 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
14158 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
14159 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
14160 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
14161 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
14162 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
14163 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040014164 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
14165 .byte 196,98,125,24,16 // vbroadcastss (%rax),%ymm10
14166 .byte 197,124,91,216 // vcvtdq2ps %ymm0,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014167 .byte 196,98,125,24,37,108,48,0,0 // vbroadcastss 0x306c(%rip),%ymm12 # 5530 <_sk_callback_avx+0x21e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014168 .byte 196,65,36,89,220 // vmulps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014169 .byte 196,98,125,24,37,98,48,0,0 // vbroadcastss 0x3062(%rip),%ymm12 # 5534 <_sk_callback_avx+0x222>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014170 .byte 196,193,124,84,196 // vandps %ymm12,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014171 .byte 196,98,125,24,37,88,48,0,0 // vbroadcastss 0x3058(%rip),%ymm12 # 5538 <_sk_callback_avx+0x226>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014172 .byte 196,193,124,86,196 // vorps %ymm12,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014173 .byte 196,98,125,24,37,78,48,0,0 // vbroadcastss 0x304e(%rip),%ymm12 # 553c <_sk_callback_avx+0x22a>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014174 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014175 .byte 196,98,125,24,37,68,48,0,0 // vbroadcastss 0x3044(%rip),%ymm12 # 5540 <_sk_callback_avx+0x22e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014176 .byte 196,65,124,89,228 // vmulps %ymm12,%ymm0,%ymm12
14177 .byte 196,65,36,92,220 // vsubps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014178 .byte 196,98,125,24,37,53,48,0,0 // vbroadcastss 0x3035(%rip),%ymm12 # 5544 <_sk_callback_avx+0x232>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014179 .byte 196,193,124,88,196 // vaddps %ymm12,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014180 .byte 196,98,125,24,37,43,48,0,0 // vbroadcastss 0x302b(%rip),%ymm12 # 5548 <_sk_callback_avx+0x236>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014181 .byte 197,156,94,192 // vdivps %ymm0,%ymm12,%ymm0
Mike Kleinda164342017-04-19 14:33:58 -040014182 .byte 197,164,92,192 // vsubps %ymm0,%ymm11,%ymm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040014183 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
14184 .byte 196,99,125,8,208,1 // vroundps $0x1,%ymm0,%ymm10
14185 .byte 196,65,124,92,210 // vsubps %ymm10,%ymm0,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014186 .byte 196,98,125,24,29,15,48,0,0 // vbroadcastss 0x300f(%rip),%ymm11 # 554c <_sk_callback_avx+0x23a>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014187 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014188 .byte 196,98,125,24,29,5,48,0,0 // vbroadcastss 0x3005(%rip),%ymm11 # 5550 <_sk_callback_avx+0x23e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014189 .byte 196,65,44,89,219 // vmulps %ymm11,%ymm10,%ymm11
14190 .byte 196,193,124,92,195 // vsubps %ymm11,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014191 .byte 196,98,125,24,29,246,47,0,0 // vbroadcastss 0x2ff6(%rip),%ymm11 # 5554 <_sk_callback_avx+0x242>
Mike Klein44375172017-04-17 19:32:05 -040014192 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014193 .byte 196,98,125,24,29,236,47,0,0 // vbroadcastss 0x2fec(%rip),%ymm11 # 5558 <_sk_callback_avx+0x246>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014194 .byte 196,65,36,94,210 // vdivps %ymm10,%ymm11,%ymm10
14195 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014196 .byte 196,98,125,24,21,221,47,0,0 // vbroadcastss 0x2fdd(%rip),%ymm10 # 555c <_sk_callback_avx+0x24a>
Mike Klein44375172017-04-17 19:32:05 -040014197 .byte 196,193,124,89,194 // vmulps %ymm10,%ymm0,%ymm0
Mike Klein44375172017-04-17 19:32:05 -040014198 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
14199 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
14200 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
14201 .byte 196,195,125,74,193,128 // vblendvps %ymm8,%ymm9,%ymm0,%ymm0
14202 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040014203 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014204 .byte 196,98,125,24,5,180,47,0,0 // vbroadcastss 0x2fb4(%rip),%ymm8 # 5560 <_sk_callback_avx+0x24e>
Mike Kleinfe560a82017-05-01 12:56:35 -040014205 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
Mike Klein44375172017-04-17 19:32:05 -040014206 .byte 72,173 // lods %ds:(%rsi),%rax
14207 .byte 255,224 // jmpq *%rax
14208
14209HIDDEN _sk_parametric_g_avx
14210.globl _sk_parametric_g_avx
14211FUNCTION(_sk_parametric_g_avx)
14212_sk_parametric_g_avx:
14213 .byte 72,173 // lods %ds:(%rsi),%rax
14214 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
14215 .byte 196,65,116,194,192,2 // vcmpleps %ymm8,%ymm1,%ymm8
14216 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
14217 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
14218 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
14219 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
14220 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
14221 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
14222 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040014223 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
14224 .byte 196,98,125,24,16 // vbroadcastss (%rax),%ymm10
14225 .byte 197,124,91,217 // vcvtdq2ps %ymm1,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014226 .byte 196,98,125,24,37,101,47,0,0 // vbroadcastss 0x2f65(%rip),%ymm12 # 5564 <_sk_callback_avx+0x252>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014227 .byte 196,65,36,89,220 // vmulps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014228 .byte 196,98,125,24,37,91,47,0,0 // vbroadcastss 0x2f5b(%rip),%ymm12 # 5568 <_sk_callback_avx+0x256>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014229 .byte 196,193,116,84,204 // vandps %ymm12,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014230 .byte 196,98,125,24,37,81,47,0,0 // vbroadcastss 0x2f51(%rip),%ymm12 # 556c <_sk_callback_avx+0x25a>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014231 .byte 196,193,116,86,204 // vorps %ymm12,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014232 .byte 196,98,125,24,37,71,47,0,0 // vbroadcastss 0x2f47(%rip),%ymm12 # 5570 <_sk_callback_avx+0x25e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014233 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014234 .byte 196,98,125,24,37,61,47,0,0 // vbroadcastss 0x2f3d(%rip),%ymm12 # 5574 <_sk_callback_avx+0x262>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014235 .byte 196,65,116,89,228 // vmulps %ymm12,%ymm1,%ymm12
14236 .byte 196,65,36,92,220 // vsubps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014237 .byte 196,98,125,24,37,46,47,0,0 // vbroadcastss 0x2f2e(%rip),%ymm12 # 5578 <_sk_callback_avx+0x266>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014238 .byte 196,193,116,88,204 // vaddps %ymm12,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014239 .byte 196,98,125,24,37,36,47,0,0 // vbroadcastss 0x2f24(%rip),%ymm12 # 557c <_sk_callback_avx+0x26a>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014240 .byte 197,156,94,201 // vdivps %ymm1,%ymm12,%ymm1
Mike Kleinda164342017-04-19 14:33:58 -040014241 .byte 197,164,92,201 // vsubps %ymm1,%ymm11,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040014242 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
14243 .byte 196,99,125,8,209,1 // vroundps $0x1,%ymm1,%ymm10
14244 .byte 196,65,116,92,210 // vsubps %ymm10,%ymm1,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014245 .byte 196,98,125,24,29,8,47,0,0 // vbroadcastss 0x2f08(%rip),%ymm11 # 5580 <_sk_callback_avx+0x26e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014246 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014247 .byte 196,98,125,24,29,254,46,0,0 // vbroadcastss 0x2efe(%rip),%ymm11 # 5584 <_sk_callback_avx+0x272>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014248 .byte 196,65,44,89,219 // vmulps %ymm11,%ymm10,%ymm11
14249 .byte 196,193,116,92,203 // vsubps %ymm11,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014250 .byte 196,98,125,24,29,239,46,0,0 // vbroadcastss 0x2eef(%rip),%ymm11 # 5588 <_sk_callback_avx+0x276>
Mike Klein44375172017-04-17 19:32:05 -040014251 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014252 .byte 196,98,125,24,29,229,46,0,0 // vbroadcastss 0x2ee5(%rip),%ymm11 # 558c <_sk_callback_avx+0x27a>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014253 .byte 196,65,36,94,210 // vdivps %ymm10,%ymm11,%ymm10
14254 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014255 .byte 196,98,125,24,21,214,46,0,0 // vbroadcastss 0x2ed6(%rip),%ymm10 # 5590 <_sk_callback_avx+0x27e>
Mike Klein44375172017-04-17 19:32:05 -040014256 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
Mike Klein44375172017-04-17 19:32:05 -040014257 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
14258 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
14259 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
14260 .byte 196,195,117,74,201,128 // vblendvps %ymm8,%ymm9,%ymm1,%ymm1
14261 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040014262 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014263 .byte 196,98,125,24,5,173,46,0,0 // vbroadcastss 0x2ead(%rip),%ymm8 # 5594 <_sk_callback_avx+0x282>
Mike Kleinfe560a82017-05-01 12:56:35 -040014264 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
Mike Klein44375172017-04-17 19:32:05 -040014265 .byte 72,173 // lods %ds:(%rsi),%rax
14266 .byte 255,224 // jmpq *%rax
14267
14268HIDDEN _sk_parametric_b_avx
14269.globl _sk_parametric_b_avx
14270FUNCTION(_sk_parametric_b_avx)
14271_sk_parametric_b_avx:
14272 .byte 72,173 // lods %ds:(%rsi),%rax
14273 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
14274 .byte 196,65,108,194,192,2 // vcmpleps %ymm8,%ymm2,%ymm8
14275 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
14276 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
14277 .byte 197,52,89,202 // vmulps %ymm2,%ymm9,%ymm9
14278 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
14279 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
14280 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
14281 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040014282 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
14283 .byte 196,98,125,24,16 // vbroadcastss (%rax),%ymm10
14284 .byte 197,124,91,218 // vcvtdq2ps %ymm2,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014285 .byte 196,98,125,24,37,94,46,0,0 // vbroadcastss 0x2e5e(%rip),%ymm12 # 5598 <_sk_callback_avx+0x286>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014286 .byte 196,65,36,89,220 // vmulps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014287 .byte 196,98,125,24,37,84,46,0,0 // vbroadcastss 0x2e54(%rip),%ymm12 # 559c <_sk_callback_avx+0x28a>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014288 .byte 196,193,108,84,212 // vandps %ymm12,%ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014289 .byte 196,98,125,24,37,74,46,0,0 // vbroadcastss 0x2e4a(%rip),%ymm12 # 55a0 <_sk_callback_avx+0x28e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014290 .byte 196,193,108,86,212 // vorps %ymm12,%ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014291 .byte 196,98,125,24,37,64,46,0,0 // vbroadcastss 0x2e40(%rip),%ymm12 # 55a4 <_sk_callback_avx+0x292>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014292 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014293 .byte 196,98,125,24,37,54,46,0,0 // vbroadcastss 0x2e36(%rip),%ymm12 # 55a8 <_sk_callback_avx+0x296>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014294 .byte 196,65,108,89,228 // vmulps %ymm12,%ymm2,%ymm12
14295 .byte 196,65,36,92,220 // vsubps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014296 .byte 196,98,125,24,37,39,46,0,0 // vbroadcastss 0x2e27(%rip),%ymm12 # 55ac <_sk_callback_avx+0x29a>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014297 .byte 196,193,108,88,212 // vaddps %ymm12,%ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014298 .byte 196,98,125,24,37,29,46,0,0 // vbroadcastss 0x2e1d(%rip),%ymm12 # 55b0 <_sk_callback_avx+0x29e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014299 .byte 197,156,94,210 // vdivps %ymm2,%ymm12,%ymm2
Mike Kleinda164342017-04-19 14:33:58 -040014300 .byte 197,164,92,210 // vsubps %ymm2,%ymm11,%ymm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040014301 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
14302 .byte 196,99,125,8,210,1 // vroundps $0x1,%ymm2,%ymm10
14303 .byte 196,65,108,92,210 // vsubps %ymm10,%ymm2,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014304 .byte 196,98,125,24,29,1,46,0,0 // vbroadcastss 0x2e01(%rip),%ymm11 # 55b4 <_sk_callback_avx+0x2a2>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014305 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014306 .byte 196,98,125,24,29,247,45,0,0 // vbroadcastss 0x2df7(%rip),%ymm11 # 55b8 <_sk_callback_avx+0x2a6>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014307 .byte 196,65,44,89,219 // vmulps %ymm11,%ymm10,%ymm11
14308 .byte 196,193,108,92,211 // vsubps %ymm11,%ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014309 .byte 196,98,125,24,29,232,45,0,0 // vbroadcastss 0x2de8(%rip),%ymm11 # 55bc <_sk_callback_avx+0x2aa>
Mike Klein44375172017-04-17 19:32:05 -040014310 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014311 .byte 196,98,125,24,29,222,45,0,0 // vbroadcastss 0x2dde(%rip),%ymm11 # 55c0 <_sk_callback_avx+0x2ae>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014312 .byte 196,65,36,94,210 // vdivps %ymm10,%ymm11,%ymm10
14313 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014314 .byte 196,98,125,24,21,207,45,0,0 // vbroadcastss 0x2dcf(%rip),%ymm10 # 55c4 <_sk_callback_avx+0x2b2>
Mike Klein44375172017-04-17 19:32:05 -040014315 .byte 196,193,108,89,210 // vmulps %ymm10,%ymm2,%ymm2
Mike Klein44375172017-04-17 19:32:05 -040014316 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
14317 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
14318 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
14319 .byte 196,195,109,74,209,128 // vblendvps %ymm8,%ymm9,%ymm2,%ymm2
14320 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040014321 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014322 .byte 196,98,125,24,5,166,45,0,0 // vbroadcastss 0x2da6(%rip),%ymm8 # 55c8 <_sk_callback_avx+0x2b6>
Mike Kleinfe560a82017-05-01 12:56:35 -040014323 .byte 196,193,108,93,208 // vminps %ymm8,%ymm2,%ymm2
Mike Klein44375172017-04-17 19:32:05 -040014324 .byte 72,173 // lods %ds:(%rsi),%rax
14325 .byte 255,224 // jmpq *%rax
14326
14327HIDDEN _sk_parametric_a_avx
14328.globl _sk_parametric_a_avx
14329FUNCTION(_sk_parametric_a_avx)
14330_sk_parametric_a_avx:
14331 .byte 72,173 // lods %ds:(%rsi),%rax
14332 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
14333 .byte 196,65,100,194,192,2 // vcmpleps %ymm8,%ymm3,%ymm8
14334 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
14335 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
14336 .byte 197,52,89,203 // vmulps %ymm3,%ymm9,%ymm9
14337 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
14338 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
14339 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
14340 .byte 197,172,89,219 // vmulps %ymm3,%ymm10,%ymm3
Mike Kleinb4bbc642017-04-27 08:59:55 -040014341 .byte 196,193,100,88,219 // vaddps %ymm11,%ymm3,%ymm3
14342 .byte 196,98,125,24,16 // vbroadcastss (%rax),%ymm10
14343 .byte 197,124,91,219 // vcvtdq2ps %ymm3,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014344 .byte 196,98,125,24,37,87,45,0,0 // vbroadcastss 0x2d57(%rip),%ymm12 # 55cc <_sk_callback_avx+0x2ba>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014345 .byte 196,65,36,89,220 // vmulps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014346 .byte 196,98,125,24,37,77,45,0,0 // vbroadcastss 0x2d4d(%rip),%ymm12 # 55d0 <_sk_callback_avx+0x2be>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014347 .byte 196,193,100,84,220 // vandps %ymm12,%ymm3,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040014348 .byte 196,98,125,24,37,67,45,0,0 // vbroadcastss 0x2d43(%rip),%ymm12 # 55d4 <_sk_callback_avx+0x2c2>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014349 .byte 196,193,100,86,220 // vorps %ymm12,%ymm3,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040014350 .byte 196,98,125,24,37,57,45,0,0 // vbroadcastss 0x2d39(%rip),%ymm12 # 55d8 <_sk_callback_avx+0x2c6>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014351 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014352 .byte 196,98,125,24,37,47,45,0,0 // vbroadcastss 0x2d2f(%rip),%ymm12 # 55dc <_sk_callback_avx+0x2ca>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014353 .byte 196,65,100,89,228 // vmulps %ymm12,%ymm3,%ymm12
14354 .byte 196,65,36,92,220 // vsubps %ymm12,%ymm11,%ymm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040014355 .byte 196,98,125,24,37,32,45,0,0 // vbroadcastss 0x2d20(%rip),%ymm12 # 55e0 <_sk_callback_avx+0x2ce>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014356 .byte 196,193,100,88,220 // vaddps %ymm12,%ymm3,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040014357 .byte 196,98,125,24,37,22,45,0,0 // vbroadcastss 0x2d16(%rip),%ymm12 # 55e4 <_sk_callback_avx+0x2d2>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014358 .byte 197,156,94,219 // vdivps %ymm3,%ymm12,%ymm3
Mike Kleinda164342017-04-19 14:33:58 -040014359 .byte 197,164,92,219 // vsubps %ymm3,%ymm11,%ymm3
Mike Kleinb4bbc642017-04-27 08:59:55 -040014360 .byte 197,172,89,219 // vmulps %ymm3,%ymm10,%ymm3
14361 .byte 196,99,125,8,211,1 // vroundps $0x1,%ymm3,%ymm10
14362 .byte 196,65,100,92,210 // vsubps %ymm10,%ymm3,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014363 .byte 196,98,125,24,29,250,44,0,0 // vbroadcastss 0x2cfa(%rip),%ymm11 # 55e8 <_sk_callback_avx+0x2d6>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014364 .byte 196,193,100,88,219 // vaddps %ymm11,%ymm3,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040014365 .byte 196,98,125,24,29,240,44,0,0 // vbroadcastss 0x2cf0(%rip),%ymm11 # 55ec <_sk_callback_avx+0x2da>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014366 .byte 196,65,44,89,219 // vmulps %ymm11,%ymm10,%ymm11
14367 .byte 196,193,100,92,219 // vsubps %ymm11,%ymm3,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040014368 .byte 196,98,125,24,29,225,44,0,0 // vbroadcastss 0x2ce1(%rip),%ymm11 # 55f0 <_sk_callback_avx+0x2de>
Mike Klein44375172017-04-17 19:32:05 -040014369 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014370 .byte 196,98,125,24,29,215,44,0,0 // vbroadcastss 0x2cd7(%rip),%ymm11 # 55f4 <_sk_callback_avx+0x2e2>
Mike Kleinb4bbc642017-04-27 08:59:55 -040014371 .byte 196,65,36,94,210 // vdivps %ymm10,%ymm11,%ymm10
14372 .byte 196,193,100,88,218 // vaddps %ymm10,%ymm3,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040014373 .byte 196,98,125,24,21,200,44,0,0 // vbroadcastss 0x2cc8(%rip),%ymm10 # 55f8 <_sk_callback_avx+0x2e6>
Mike Klein44375172017-04-17 19:32:05 -040014374 .byte 196,193,100,89,218 // vmulps %ymm10,%ymm3,%ymm3
Mike Klein44375172017-04-17 19:32:05 -040014375 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
14376 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
14377 .byte 196,193,100,88,218 // vaddps %ymm10,%ymm3,%ymm3
14378 .byte 196,195,101,74,217,128 // vblendvps %ymm8,%ymm9,%ymm3,%ymm3
14379 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040014380 .byte 196,193,100,95,216 // vmaxps %ymm8,%ymm3,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040014381 .byte 196,98,125,24,5,159,44,0,0 // vbroadcastss 0x2c9f(%rip),%ymm8 # 55fc <_sk_callback_avx+0x2ea>
Mike Kleinfe560a82017-05-01 12:56:35 -040014382 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
Mike Klein44375172017-04-17 19:32:05 -040014383 .byte 72,173 // lods %ds:(%rsi),%rax
14384 .byte 255,224 // jmpq *%rax
14385
Mike Klein4e3e9f82017-04-20 11:04:29 -040014386HIDDEN _sk_lab_to_xyz_avx
14387.globl _sk_lab_to_xyz_avx
14388FUNCTION(_sk_lab_to_xyz_avx)
14389_sk_lab_to_xyz_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040014390 .byte 196,98,125,24,5,145,44,0,0 // vbroadcastss 0x2c91(%rip),%ymm8 # 5600 <_sk_callback_avx+0x2ee>
Mike Kleinfe560a82017-05-01 12:56:35 -040014391 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014392 .byte 196,98,125,24,5,135,44,0,0 // vbroadcastss 0x2c87(%rip),%ymm8 # 5604 <_sk_callback_avx+0x2f2>
Mike Kleinfe560a82017-05-01 12:56:35 -040014393 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014394 .byte 196,98,125,24,13,125,44,0,0 // vbroadcastss 0x2c7d(%rip),%ymm9 # 5608 <_sk_callback_avx+0x2f6>
Mike Kleinfe560a82017-05-01 12:56:35 -040014395 .byte 196,193,116,88,201 // vaddps %ymm9,%ymm1,%ymm1
14396 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
14397 .byte 196,193,108,88,209 // vaddps %ymm9,%ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014398 .byte 196,98,125,24,5,105,44,0,0 // vbroadcastss 0x2c69(%rip),%ymm8 # 560c <_sk_callback_avx+0x2fa>
Mike Kleinfe560a82017-05-01 12:56:35 -040014399 .byte 196,193,124,88,192 // vaddps %ymm8,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014400 .byte 196,98,125,24,5,95,44,0,0 // vbroadcastss 0x2c5f(%rip),%ymm8 # 5610 <_sk_callback_avx+0x2fe>
Mike Kleinfe560a82017-05-01 12:56:35 -040014401 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014402 .byte 196,98,125,24,5,85,44,0,0 // vbroadcastss 0x2c55(%rip),%ymm8 # 5614 <_sk_callback_avx+0x302>
Mike Kleinfe560a82017-05-01 12:56:35 -040014403 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
14404 .byte 197,252,88,201 // vaddps %ymm1,%ymm0,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014405 .byte 196,98,125,24,5,71,44,0,0 // vbroadcastss 0x2c47(%rip),%ymm8 # 5618 <_sk_callback_avx+0x306>
Mike Kleinfe560a82017-05-01 12:56:35 -040014406 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
14407 .byte 197,252,92,210 // vsubps %ymm2,%ymm0,%ymm2
14408 .byte 197,116,89,193 // vmulps %ymm1,%ymm1,%ymm8
14409 .byte 196,65,116,89,192 // vmulps %ymm8,%ymm1,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040014410 .byte 196,98,125,24,13,48,44,0,0 // vbroadcastss 0x2c30(%rip),%ymm9 # 561c <_sk_callback_avx+0x30a>
Mike Kleinfe560a82017-05-01 12:56:35 -040014411 .byte 196,65,52,194,208,1 // vcmpltps %ymm8,%ymm9,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014412 .byte 196,98,125,24,29,37,44,0,0 // vbroadcastss 0x2c25(%rip),%ymm11 # 5620 <_sk_callback_avx+0x30e>
Mike Kleinfe560a82017-05-01 12:56:35 -040014413 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014414 .byte 196,98,125,24,37,27,44,0,0 // vbroadcastss 0x2c1b(%rip),%ymm12 # 5624 <_sk_callback_avx+0x312>
Mike Kleinfe560a82017-05-01 12:56:35 -040014415 .byte 196,193,116,89,204 // vmulps %ymm12,%ymm1,%ymm1
14416 .byte 196,67,117,74,192,160 // vblendvps %ymm10,%ymm8,%ymm1,%ymm8
Mike Klein4e3e9f82017-04-20 11:04:29 -040014417 .byte 197,252,89,200 // vmulps %ymm0,%ymm0,%ymm1
14418 .byte 197,252,89,201 // vmulps %ymm1,%ymm0,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040014419 .byte 197,52,194,209,1 // vcmpltps %ymm1,%ymm9,%ymm10
14420 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
14421 .byte 196,193,124,89,196 // vmulps %ymm12,%ymm0,%ymm0
14422 .byte 196,227,125,74,201,160 // vblendvps %ymm10,%ymm1,%ymm0,%ymm1
14423 .byte 197,236,89,194 // vmulps %ymm2,%ymm2,%ymm0
14424 .byte 197,236,89,192 // vmulps %ymm0,%ymm2,%ymm0
14425 .byte 197,52,194,200,1 // vcmpltps %ymm0,%ymm9,%ymm9
14426 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
14427 .byte 196,193,108,89,212 // vmulps %ymm12,%ymm2,%ymm2
14428 .byte 196,227,109,74,208,144 // vblendvps %ymm9,%ymm0,%ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014429 .byte 196,226,125,24,5,209,43,0,0 // vbroadcastss 0x2bd1(%rip),%ymm0 # 5628 <_sk_callback_avx+0x316>
Mike Klein4e3e9f82017-04-20 11:04:29 -040014430 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014431 .byte 196,98,125,24,5,200,43,0,0 // vbroadcastss 0x2bc8(%rip),%ymm8 # 562c <_sk_callback_avx+0x31a>
Mike Kleinfe560a82017-05-01 12:56:35 -040014432 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein4e3e9f82017-04-20 11:04:29 -040014433 .byte 72,173 // lods %ds:(%rsi),%rax
14434 .byte 255,224 // jmpq *%rax
14435
Mike Klein7c4af542017-03-29 18:21:14 -040014436HIDDEN _sk_load_a8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014437.globl _sk_load_a8_avx
Mike Klein86714282017-04-13 17:37:38 -040014438FUNCTION(_sk_load_a8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014439_sk_load_a8_avx:
14440 .byte 73,137,200 // mov %rcx,%r8
14441 .byte 72,173 // lods %ds:(%rsi),%rax
14442 .byte 72,139,0 // mov (%rax),%rax
14443 .byte 72,1,248 // add %rdi,%rax
14444 .byte 77,133,192 // test %r8,%r8
Mike Kleinfb11acd2017-05-01 14:22:10 -040014445 .byte 117,62 // jne 2abb <_sk_load_a8_avx+0x4e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014446 .byte 197,250,126,0 // vmovq (%rax),%xmm0
14447 .byte 196,226,121,49,200 // vpmovzxbd %xmm0,%xmm1
14448 .byte 196,227,121,4,192,229 // vpermilps $0xe5,%xmm0,%xmm0
14449 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
14450 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
14451 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014452 .byte 196,226,125,24,13,140,43,0,0 // vbroadcastss 0x2b8c(%rip),%ymm1 # 5630 <_sk_callback_avx+0x31e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014453 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
14454 .byte 72,173 // lods %ds:(%rsi),%rax
14455 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
14456 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
14457 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
14458 .byte 76,137,193 // mov %r8,%rcx
14459 .byte 255,224 // jmpq *%rax
14460 .byte 49,201 // xor %ecx,%ecx
14461 .byte 77,137,194 // mov %r8,%r10
14462 .byte 69,49,201 // xor %r9d,%r9d
14463 .byte 68,15,182,24 // movzbl (%rax),%r11d
14464 .byte 72,255,192 // inc %rax
14465 .byte 73,211,227 // shl %cl,%r11
14466 .byte 77,9,217 // or %r11,%r9
14467 .byte 72,131,193,8 // add $0x8,%rcx
14468 .byte 73,255,202 // dec %r10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014469 .byte 117,234 // jne 2ac3 <_sk_load_a8_avx+0x56>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014470 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014471 .byte 235,161 // jmp 2a81 <_sk_load_a8_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014472
Mike Klein21bd3e42017-04-06 16:32:29 -040014473HIDDEN _sk_gather_a8_avx
14474.globl _sk_gather_a8_avx
Mike Klein86714282017-04-13 17:37:38 -040014475FUNCTION(_sk_gather_a8_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040014476_sk_gather_a8_avx:
14477 .byte 65,87 // push %r15
14478 .byte 65,86 // push %r14
14479 .byte 65,84 // push %r12
14480 .byte 83 // push %rbx
14481 .byte 72,173 // lods %ds:(%rsi),%rax
14482 .byte 76,139,0 // mov (%rax),%r8
14483 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
14484 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
14485 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
14486 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
14487 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
14488 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
14489 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
14490 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
14491 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
14492 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
14493 .byte 65,137,193 // mov %eax,%r9d
14494 .byte 72,193,232,32 // shr $0x20,%rax
14495 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
14496 .byte 69,137,211 // mov %r10d,%r11d
14497 .byte 73,193,234,32 // shr $0x20,%r10
14498 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
14499 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
14500 .byte 65,137,222 // mov %ebx,%r14d
14501 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
14502 .byte 69,137,252 // mov %r15d,%r12d
14503 .byte 73,193,239,32 // shr $0x20,%r15
14504 .byte 72,193,235,32 // shr $0x20,%rbx
14505 .byte 196,131,121,32,4,48,0 // vpinsrb $0x0,(%r8,%r14,1),%xmm0,%xmm0
14506 .byte 196,195,121,32,4,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm0,%xmm0
14507 .byte 67,15,182,28,32 // movzbl (%r8,%r12,1),%ebx
14508 .byte 196,227,121,32,195,2 // vpinsrb $0x2,%ebx,%xmm0,%xmm0
14509 .byte 67,15,182,28,56 // movzbl (%r8,%r15,1),%ebx
14510 .byte 196,227,121,32,195,3 // vpinsrb $0x3,%ebx,%xmm0,%xmm0
14511 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
14512 .byte 196,131,121,32,12,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm1
14513 .byte 196,131,113,32,12,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm1,%xmm1
14514 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
14515 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
14516 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
14517 .byte 196,227,113,32,200,3 // vpinsrb $0x3,%eax,%xmm1,%xmm1
14518 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
14519 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
14520 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014521 .byte 196,226,125,24,13,129,42,0,0 // vbroadcastss 0x2a81(%rip),%ymm1 # 5634 <_sk_callback_avx+0x322>
Mike Klein21bd3e42017-04-06 16:32:29 -040014522 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
14523 .byte 72,173 // lods %ds:(%rsi),%rax
14524 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
14525 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
14526 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
14527 .byte 91 // pop %rbx
14528 .byte 65,92 // pop %r12
14529 .byte 65,94 // pop %r14
14530 .byte 65,95 // pop %r15
14531 .byte 255,224 // jmpq *%rax
14532
Mike Klein7c4af542017-03-29 18:21:14 -040014533HIDDEN _sk_store_a8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014534.globl _sk_store_a8_avx
Mike Klein86714282017-04-13 17:37:38 -040014535FUNCTION(_sk_store_a8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014536_sk_store_a8_avx:
14537 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040014538 .byte 76,139,16 // mov (%rax),%r10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014539 .byte 196,98,125,24,5,92,42,0,0 // vbroadcastss 0x2a5c(%rip),%ymm8 # 5638 <_sk_callback_avx+0x326>
Mike Kleinfe560a82017-05-01 12:56:35 -040014540 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040014541 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
14542 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
14543 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
14544 .byte 196,65,57,103,192 // vpackuswb %xmm8,%xmm8,%xmm8
14545 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040014546 .byte 117,10 // jne 2c05 <_sk_store_a8_avx+0x37>
Mike Kleinfe560a82017-05-01 12:56:35 -040014547 .byte 196,65,123,17,4,58 // vmovsd %xmm8,(%r10,%rdi,1)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014548 .byte 72,173 // lods %ds:(%rsi),%rax
14549 .byte 255,224 // jmpq *%rax
14550 .byte 65,137,200 // mov %ecx,%r8d
14551 .byte 65,128,224,7 // and $0x7,%r8b
14552 .byte 65,254,200 // dec %r8b
14553 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinfb11acd2017-05-01 14:22:10 -040014554 .byte 119,236 // ja 2c01 <_sk_store_a8_avx+0x33>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014555 .byte 196,66,121,48,192 // vpmovzxbw %xmm8,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040014556 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinfb11acd2017-05-01 14:22:10 -040014557 .byte 76,141,13,67,0,0,0 // lea 0x43(%rip),%r9 # 2c68 <_sk_store_a8_avx+0x9a>
Mike Kleinfe560a82017-05-01 12:56:35 -040014558 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
14559 .byte 76,1,200 // add %r9,%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040014560 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040014561 .byte 196,67,121,20,68,58,6,12 // vpextrb $0xc,%xmm8,0x6(%r10,%rdi,1)
14562 .byte 196,67,121,20,68,58,5,10 // vpextrb $0xa,%xmm8,0x5(%r10,%rdi,1)
14563 .byte 196,67,121,20,68,58,4,8 // vpextrb $0x8,%xmm8,0x4(%r10,%rdi,1)
14564 .byte 196,67,121,20,68,58,3,6 // vpextrb $0x6,%xmm8,0x3(%r10,%rdi,1)
14565 .byte 196,67,121,20,68,58,2,4 // vpextrb $0x4,%xmm8,0x2(%r10,%rdi,1)
14566 .byte 196,67,121,20,68,58,1,2 // vpextrb $0x2,%xmm8,0x1(%r10,%rdi,1)
14567 .byte 196,67,121,20,4,58,0 // vpextrb $0x0,%xmm8,(%r10,%rdi,1)
Mike Kleinfb11acd2017-05-01 14:22:10 -040014568 .byte 235,154 // jmp 2c01 <_sk_store_a8_avx+0x33>
Mike Kleinfe560a82017-05-01 12:56:35 -040014569 .byte 144 // nop
14570 .byte 246,255 // idiv %bh
14571 .byte 255 // (bad)
14572 .byte 255 // (bad)
14573 .byte 238 // out %al,(%dx)
14574 .byte 255 // (bad)
14575 .byte 255 // (bad)
14576 .byte 255,230 // jmpq *%rsi
Mike Kleind7e06ae2017-03-29 16:33:06 -040014577 .byte 255 // (bad)
14578 .byte 255 // (bad)
14579 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040014580 .byte 222,255 // fdivrp %st,%st(7)
14581 .byte 255 // (bad)
14582 .byte 255,214 // callq *%rsi
Mike Kleind7e06ae2017-03-29 16:33:06 -040014583 .byte 255 // (bad)
14584 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040014585 .byte 255,206 // dec %esi
Mike Kleind7e06ae2017-03-29 16:33:06 -040014586 .byte 255 // (bad)
14587 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040014588 .byte 255,198 // inc %esi
Mike Kleind7e06ae2017-03-29 16:33:06 -040014589 .byte 255 // (bad)
14590 .byte 255 // (bad)
14591 .byte 255 // .byte 0xff
14592
Mike Kleinf809fef2017-03-31 13:52:45 -040014593HIDDEN _sk_load_g8_avx
14594.globl _sk_load_g8_avx
Mike Klein86714282017-04-13 17:37:38 -040014595FUNCTION(_sk_load_g8_avx)
Mike Kleinf809fef2017-03-31 13:52:45 -040014596_sk_load_g8_avx:
14597 .byte 73,137,200 // mov %rcx,%r8
14598 .byte 72,173 // lods %ds:(%rsi),%rax
14599 .byte 72,139,0 // mov (%rax),%rax
14600 .byte 72,1,248 // add %rdi,%rax
14601 .byte 77,133,192 // test %r8,%r8
Mike Kleinfb11acd2017-05-01 14:22:10 -040014602 .byte 117,67 // jne 2cd7 <_sk_load_g8_avx+0x53>
Mike Kleinf809fef2017-03-31 13:52:45 -040014603 .byte 197,250,126,0 // vmovq (%rax),%xmm0
14604 .byte 196,226,121,49,200 // vpmovzxbd %xmm0,%xmm1
14605 .byte 196,227,121,4,192,229 // vpermilps $0xe5,%xmm0,%xmm0
14606 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
14607 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
14608 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014609 .byte 196,226,125,24,13,129,41,0,0 // vbroadcastss 0x2981(%rip),%ymm1 # 563c <_sk_callback_avx+0x32a>
Mike Kleinf809fef2017-03-31 13:52:45 -040014610 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinf809fef2017-03-31 13:52:45 -040014611 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040014612 .byte 196,226,125,24,29,118,41,0,0 // vbroadcastss 0x2976(%rip),%ymm3 # 5640 <_sk_callback_avx+0x32e>
Mike Kleinf809fef2017-03-31 13:52:45 -040014613 .byte 76,137,193 // mov %r8,%rcx
14614 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
14615 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
14616 .byte 255,224 // jmpq *%rax
14617 .byte 49,201 // xor %ecx,%ecx
14618 .byte 77,137,194 // mov %r8,%r10
14619 .byte 69,49,201 // xor %r9d,%r9d
14620 .byte 68,15,182,24 // movzbl (%rax),%r11d
14621 .byte 72,255,192 // inc %rax
14622 .byte 73,211,227 // shl %cl,%r11
14623 .byte 77,9,217 // or %r11,%r9
14624 .byte 72,131,193,8 // add $0x8,%rcx
14625 .byte 73,255,202 // dec %r10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014626 .byte 117,234 // jne 2cdf <_sk_load_g8_avx+0x5b>
Mike Kleinf809fef2017-03-31 13:52:45 -040014627 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014628 .byte 235,156 // jmp 2c98 <_sk_load_g8_avx+0x14>
Mike Klein21bd3e42017-04-06 16:32:29 -040014629
14630HIDDEN _sk_gather_g8_avx
14631.globl _sk_gather_g8_avx
Mike Klein86714282017-04-13 17:37:38 -040014632FUNCTION(_sk_gather_g8_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040014633_sk_gather_g8_avx:
14634 .byte 65,87 // push %r15
14635 .byte 65,86 // push %r14
14636 .byte 65,84 // push %r12
14637 .byte 83 // push %rbx
14638 .byte 72,173 // lods %ds:(%rsi),%rax
14639 .byte 76,139,0 // mov (%rax),%r8
14640 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
14641 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
14642 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
14643 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
14644 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
14645 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
14646 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
14647 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
14648 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
14649 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
14650 .byte 65,137,193 // mov %eax,%r9d
14651 .byte 72,193,232,32 // shr $0x20,%rax
14652 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
14653 .byte 69,137,211 // mov %r10d,%r11d
14654 .byte 73,193,234,32 // shr $0x20,%r10
14655 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
14656 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
14657 .byte 65,137,222 // mov %ebx,%r14d
14658 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
14659 .byte 69,137,252 // mov %r15d,%r12d
14660 .byte 73,193,239,32 // shr $0x20,%r15
14661 .byte 72,193,235,32 // shr $0x20,%rbx
14662 .byte 196,131,121,32,4,48,0 // vpinsrb $0x0,(%r8,%r14,1),%xmm0,%xmm0
14663 .byte 196,195,121,32,4,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm0,%xmm0
14664 .byte 67,15,182,28,32 // movzbl (%r8,%r12,1),%ebx
14665 .byte 196,227,121,32,195,2 // vpinsrb $0x2,%ebx,%xmm0,%xmm0
14666 .byte 67,15,182,28,56 // movzbl (%r8,%r15,1),%ebx
14667 .byte 196,227,121,32,195,3 // vpinsrb $0x3,%ebx,%xmm0,%xmm0
14668 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
14669 .byte 196,131,121,32,12,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm1
14670 .byte 196,131,113,32,12,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm1,%xmm1
14671 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
14672 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
14673 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
14674 .byte 196,227,113,32,200,3 // vpinsrb $0x3,%eax,%xmm1,%xmm1
14675 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
14676 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
14677 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014678 .byte 196,226,125,24,13,117,40,0,0 // vbroadcastss 0x2875(%rip),%ymm1 # 5644 <_sk_callback_avx+0x332>
Mike Klein21bd3e42017-04-06 16:32:29 -040014679 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -040014680 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040014681 .byte 196,226,125,24,29,106,40,0,0 // vbroadcastss 0x286a(%rip),%ymm3 # 5648 <_sk_callback_avx+0x336>
Mike Klein21bd3e42017-04-06 16:32:29 -040014682 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
14683 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
14684 .byte 91 // pop %rbx
14685 .byte 65,92 // pop %r12
14686 .byte 65,94 // pop %r14
14687 .byte 65,95 // pop %r15
14688 .byte 255,224 // jmpq *%rax
Mike Kleinf809fef2017-03-31 13:52:45 -040014689
Mike Klein7d3d8722017-04-06 17:53:18 -040014690HIDDEN _sk_gather_i8_avx
14691.globl _sk_gather_i8_avx
Mike Klein86714282017-04-13 17:37:38 -040014692FUNCTION(_sk_gather_i8_avx)
Mike Klein7d3d8722017-04-06 17:53:18 -040014693_sk_gather_i8_avx:
14694 .byte 72,173 // lods %ds:(%rsi),%rax
14695 .byte 73,137,192 // mov %rax,%r8
14696 .byte 77,133,192 // test %r8,%r8
Mike Kleinfb11acd2017-05-01 14:22:10 -040014697 .byte 116,5 // je 2dfe <_sk_gather_i8_avx+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -040014698 .byte 76,137,192 // mov %r8,%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040014699 .byte 235,2 // jmp 2e00 <_sk_gather_i8_avx+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -040014700 .byte 72,173 // lods %ds:(%rsi),%rax
14701 .byte 65,87 // push %r15
14702 .byte 65,86 // push %r14
14703 .byte 65,85 // push %r13
14704 .byte 65,84 // push %r12
14705 .byte 83 // push %rbx
14706 .byte 76,139,8 // mov (%rax),%r9
14707 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
14708 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
14709 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
14710 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
14711 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
14712 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
14713 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
14714 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
14715 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
14716 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
14717 .byte 65,137,194 // mov %eax,%r10d
14718 .byte 72,193,232,32 // shr $0x20,%rax
14719 .byte 196,193,249,126,211 // vmovq %xmm2,%r11
14720 .byte 69,137,222 // mov %r11d,%r14d
14721 .byte 73,193,235,32 // shr $0x20,%r11
14722 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
14723 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
14724 .byte 65,137,223 // mov %ebx,%r15d
14725 .byte 196,195,249,22,196,1 // vpextrq $0x1,%xmm0,%r12
14726 .byte 69,137,229 // mov %r12d,%r13d
14727 .byte 73,193,236,32 // shr $0x20,%r12
14728 .byte 72,193,235,32 // shr $0x20,%rbx
14729 .byte 196,131,121,32,4,49,0 // vpinsrb $0x0,(%r9,%r14,1),%xmm0,%xmm0
14730 .byte 196,131,121,32,4,25,1 // vpinsrb $0x1,(%r9,%r11,1),%xmm0,%xmm0
14731 .byte 196,131,121,32,4,17,2 // vpinsrb $0x2,(%r9,%r10,1),%xmm0,%xmm0
14732 .byte 196,195,121,32,4,1,3 // vpinsrb $0x3,(%r9,%rax,1),%xmm0,%xmm0
14733 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
14734 .byte 196,195,249,22,194,1 // vpextrq $0x1,%xmm0,%r10
14735 .byte 196,193,249,126,195 // vmovq %xmm0,%r11
14736 .byte 196,131,121,32,4,57,0 // vpinsrb $0x0,(%r9,%r15,1),%xmm0,%xmm0
14737 .byte 196,195,121,32,4,25,1 // vpinsrb $0x1,(%r9,%rbx,1),%xmm0,%xmm0
14738 .byte 196,131,121,32,4,41,2 // vpinsrb $0x2,(%r9,%r13,1),%xmm0,%xmm0
14739 .byte 196,131,121,32,4,33,3 // vpinsrb $0x3,(%r9,%r12,1),%xmm0,%xmm0
14740 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
14741 .byte 73,139,88,8 // mov 0x8(%r8),%rbx
14742 .byte 196,193,249,126,193 // vmovq %xmm0,%r9
14743 .byte 69,137,200 // mov %r9d,%r8d
14744 .byte 73,193,233,30 // shr $0x1e,%r9
14745 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
14746 .byte 65,137,198 // mov %eax,%r14d
14747 .byte 72,193,232,30 // shr $0x1e,%rax
14748 .byte 69,137,223 // mov %r11d,%r15d
14749 .byte 73,193,235,30 // shr $0x1e,%r11
14750 .byte 69,137,212 // mov %r10d,%r12d
14751 .byte 73,193,234,30 // shr $0x1e,%r10
14752 .byte 196,161,121,110,4,131 // vmovd (%rbx,%r8,4),%xmm0
14753 .byte 196,163,121,34,4,11,1 // vpinsrd $0x1,(%rbx,%r9,1),%xmm0,%xmm0
14754 .byte 196,163,121,34,4,179,2 // vpinsrd $0x2,(%rbx,%r14,4),%xmm0,%xmm0
14755 .byte 196,99,121,34,4,3,3 // vpinsrd $0x3,(%rbx,%rax,1),%xmm0,%xmm8
14756 .byte 196,161,121,110,4,187 // vmovd (%rbx,%r15,4),%xmm0
14757 .byte 196,163,121,34,4,27,1 // vpinsrd $0x1,(%rbx,%r11,1),%xmm0,%xmm0
14758 .byte 196,163,121,34,4,163,2 // vpinsrd $0x2,(%rbx,%r12,4),%xmm0,%xmm0
14759 .byte 196,163,121,34,28,19,3 // vpinsrd $0x3,(%rbx,%r10,1),%xmm0,%xmm3
14760 .byte 196,227,61,24,195,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014761 .byte 197,124,40,21,214,40,0,0 // vmovaps 0x28d6(%rip),%ymm10 # 5800 <_sk_callback_avx+0x4ee>
Mike Klein0aa742f2017-04-27 13:36:57 -040014762 .byte 196,193,124,84,194 // vandps %ymm10,%ymm0,%ymm0
Mike Klein7d3d8722017-04-06 17:53:18 -040014763 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014764 .byte 196,98,125,24,13,16,39,0,0 // vbroadcastss 0x2710(%rip),%ymm9 # 564c <_sk_callback_avx+0x33a>
Mike Klein7d3d8722017-04-06 17:53:18 -040014765 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
Mike Klein0aa742f2017-04-27 13:36:57 -040014766 .byte 196,193,113,114,208,8 // vpsrld $0x8,%xmm8,%xmm1
14767 .byte 197,233,114,211,8 // vpsrld $0x8,%xmm3,%xmm2
14768 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
14769 .byte 196,193,116,84,202 // vandps %ymm10,%ymm1,%ymm1
Mike Klein7d3d8722017-04-06 17:53:18 -040014770 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
14771 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein0aa742f2017-04-27 13:36:57 -040014772 .byte 196,193,33,114,208,16 // vpsrld $0x10,%xmm8,%xmm11
Mike Klein7d3d8722017-04-06 17:53:18 -040014773 .byte 197,233,114,211,16 // vpsrld $0x10,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040014774 .byte 196,227,37,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm11,%ymm2
14775 .byte 196,193,108,84,210 // vandps %ymm10,%ymm2,%ymm2
Mike Klein7d3d8722017-04-06 17:53:18 -040014776 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
14777 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
14778 .byte 196,193,57,114,208,24 // vpsrld $0x18,%xmm8,%xmm8
14779 .byte 197,225,114,211,24 // vpsrld $0x18,%xmm3,%xmm3
14780 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
14781 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
14782 .byte 196,193,100,89,217 // vmulps %ymm9,%ymm3,%ymm3
14783 .byte 72,173 // lods %ds:(%rsi),%rax
14784 .byte 91 // pop %rbx
14785 .byte 65,92 // pop %r12
14786 .byte 65,93 // pop %r13
14787 .byte 65,94 // pop %r14
14788 .byte 65,95 // pop %r15
14789 .byte 255,224 // jmpq *%rax
14790
Mike Klein7c4af542017-03-29 18:21:14 -040014791HIDDEN _sk_load_565_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014792.globl _sk_load_565_avx
Mike Klein86714282017-04-13 17:37:38 -040014793FUNCTION(_sk_load_565_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014794_sk_load_565_avx:
14795 .byte 72,173 // lods %ds:(%rsi),%rax
14796 .byte 76,139,16 // mov (%rax),%r10
14797 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040014798 .byte 15,133,128,0,0,0 // jne 3034 <_sk_load_565_avx+0x8e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014799 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
14800 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
14801 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
14802 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
14803 .byte 196,227,125,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014804 .byte 196,226,125,24,5,122,38,0,0 // vbroadcastss 0x267a(%rip),%ymm0 # 5650 <_sk_callback_avx+0x33e>
Mike Klein308e6242017-04-27 13:56:33 -040014805 .byte 197,236,84,192 // vandps %ymm0,%ymm2,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040014806 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014807 .byte 196,226,125,24,13,109,38,0,0 // vbroadcastss 0x266d(%rip),%ymm1 # 5654 <_sk_callback_avx+0x342>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014808 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014809 .byte 196,226,125,24,13,100,38,0,0 // vbroadcastss 0x2664(%rip),%ymm1 # 5658 <_sk_callback_avx+0x346>
Mike Klein308e6242017-04-27 13:56:33 -040014810 .byte 197,236,84,201 // vandps %ymm1,%ymm2,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040014811 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014812 .byte 196,226,125,24,29,87,38,0,0 // vbroadcastss 0x2657(%rip),%ymm3 # 565c <_sk_callback_avx+0x34a>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014813 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014814 .byte 196,226,125,24,29,78,38,0,0 // vbroadcastss 0x264e(%rip),%ymm3 # 5660 <_sk_callback_avx+0x34e>
Mike Klein308e6242017-04-27 13:56:33 -040014815 .byte 197,236,84,211 // vandps %ymm3,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040014816 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014817 .byte 196,226,125,24,29,65,38,0,0 // vbroadcastss 0x2641(%rip),%ymm3 # 5664 <_sk_callback_avx+0x352>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014818 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040014819 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040014820 .byte 196,226,125,24,29,54,38,0,0 // vbroadcastss 0x2636(%rip),%ymm3 # 5668 <_sk_callback_avx+0x356>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014821 .byte 255,224 // jmpq *%rax
14822 .byte 65,137,200 // mov %ecx,%r8d
14823 .byte 65,128,224,7 // and $0x7,%r8b
14824 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
14825 .byte 65,254,200 // dec %r8b
14826 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinfb11acd2017-05-01 14:22:10 -040014827 .byte 15,135,110,255,255,255 // ja 2fba <_sk_load_565_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014828 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinfb11acd2017-05-01 14:22:10 -040014829 .byte 76,141,13,73,0,0,0 // lea 0x49(%rip),%r9 # 30a0 <_sk_load_565_avx+0xfa>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014830 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
14831 .byte 76,1,200 // add %r9,%rax
14832 .byte 255,224 // jmpq *%rax
14833 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
14834 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
14835 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
14836 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
14837 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
14838 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
14839 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
14840 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014841 .byte 233,26,255,255,255 // jmpq 2fba <_sk_load_565_avx+0x14>
Mike Klein308e6242017-04-27 13:56:33 -040014842 .byte 244 // hlt
Mike Kleind7e06ae2017-03-29 16:33:06 -040014843 .byte 255 // (bad)
14844 .byte 255 // (bad)
14845 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040014846 .byte 236 // in (%dx),%al
14847 .byte 255 // (bad)
14848 .byte 255 // (bad)
14849 .byte 255,228 // jmpq *%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040014850 .byte 255 // (bad)
14851 .byte 255 // (bad)
14852 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040014853 .byte 220,255 // fdivr %st,%st(7)
Mike Klein0aa742f2017-04-27 13:36:57 -040014854 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040014855 .byte 255,212 // callq *%rsp
Mike Klein0aa742f2017-04-27 13:36:57 -040014856 .byte 255 // (bad)
14857 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040014858 .byte 255,204 // dec %esp
Mike Klein0aa742f2017-04-27 13:36:57 -040014859 .byte 255 // (bad)
14860 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040014861 .byte 255,192 // inc %eax
Mike Kleind7e06ae2017-03-29 16:33:06 -040014862 .byte 255 // (bad)
14863 .byte 255 // (bad)
14864 .byte 255 // .byte 0xff
14865
Mike Klein21bd3e42017-04-06 16:32:29 -040014866HIDDEN _sk_gather_565_avx
14867.globl _sk_gather_565_avx
Mike Klein86714282017-04-13 17:37:38 -040014868FUNCTION(_sk_gather_565_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040014869_sk_gather_565_avx:
14870 .byte 85 // push %rbp
14871 .byte 65,87 // push %r15
14872 .byte 65,86 // push %r14
14873 .byte 65,84 // push %r12
14874 .byte 83 // push %rbx
14875 .byte 72,173 // lods %ds:(%rsi),%rax
14876 .byte 76,139,0 // mov (%rax),%r8
14877 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
14878 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
14879 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
14880 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
14881 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
14882 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
14883 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
14884 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
14885 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
14886 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
14887 .byte 65,137,193 // mov %eax,%r9d
14888 .byte 72,193,232,32 // shr $0x20,%rax
14889 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
14890 .byte 69,137,211 // mov %r10d,%r11d
14891 .byte 73,193,234,32 // shr $0x20,%r10
14892 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
14893 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
14894 .byte 65,137,222 // mov %ebx,%r14d
14895 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
14896 .byte 69,137,252 // mov %r15d,%r12d
14897 .byte 73,193,239,32 // shr $0x20,%r15
14898 .byte 72,193,235,32 // shr $0x20,%rbx
14899 .byte 65,15,183,28,88 // movzwl (%r8,%rbx,2),%ebx
14900 .byte 67,15,183,44,112 // movzwl (%r8,%r14,2),%ebp
14901 .byte 197,249,110,197 // vmovd %ebp,%xmm0
14902 .byte 197,249,196,195,1 // vpinsrw $0x1,%ebx,%xmm0,%xmm0
14903 .byte 67,15,183,28,96 // movzwl (%r8,%r12,2),%ebx
14904 .byte 197,249,196,195,2 // vpinsrw $0x2,%ebx,%xmm0,%xmm0
14905 .byte 67,15,183,28,120 // movzwl (%r8,%r15,2),%ebx
14906 .byte 197,249,196,195,3 // vpinsrw $0x3,%ebx,%xmm0,%xmm0
14907 .byte 67,15,183,44,88 // movzwl (%r8,%r11,2),%ebp
14908 .byte 197,249,196,197,4 // vpinsrw $0x4,%ebp,%xmm0,%xmm0
14909 .byte 67,15,183,44,80 // movzwl (%r8,%r10,2),%ebp
14910 .byte 197,249,196,197,5 // vpinsrw $0x5,%ebp,%xmm0,%xmm0
14911 .byte 67,15,183,44,72 // movzwl (%r8,%r9,2),%ebp
14912 .byte 197,249,196,197,6 // vpinsrw $0x6,%ebp,%xmm0,%xmm0
14913 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
14914 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
14915 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
14916 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
14917 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
14918 .byte 196,227,125,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014919 .byte 196,226,125,24,5,214,36,0,0 // vbroadcastss 0x24d6(%rip),%ymm0 # 566c <_sk_callback_avx+0x35a>
Mike Klein308e6242017-04-27 13:56:33 -040014920 .byte 197,236,84,192 // vandps %ymm0,%ymm2,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -040014921 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014922 .byte 196,226,125,24,13,201,36,0,0 // vbroadcastss 0x24c9(%rip),%ymm1 # 5670 <_sk_callback_avx+0x35e>
Mike Klein21bd3e42017-04-06 16:32:29 -040014923 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040014924 .byte 196,226,125,24,13,192,36,0,0 // vbroadcastss 0x24c0(%rip),%ymm1 # 5674 <_sk_callback_avx+0x362>
Mike Klein308e6242017-04-27 13:56:33 -040014925 .byte 197,236,84,201 // vandps %ymm1,%ymm2,%ymm1
Mike Klein21bd3e42017-04-06 16:32:29 -040014926 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014927 .byte 196,226,125,24,29,179,36,0,0 // vbroadcastss 0x24b3(%rip),%ymm3 # 5678 <_sk_callback_avx+0x366>
Mike Klein21bd3e42017-04-06 16:32:29 -040014928 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040014929 .byte 196,226,125,24,29,170,36,0,0 // vbroadcastss 0x24aa(%rip),%ymm3 # 567c <_sk_callback_avx+0x36a>
Mike Klein308e6242017-04-27 13:56:33 -040014930 .byte 197,236,84,211 // vandps %ymm3,%ymm2,%ymm2
Mike Klein21bd3e42017-04-06 16:32:29 -040014931 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040014932 .byte 196,226,125,24,29,157,36,0,0 // vbroadcastss 0x249d(%rip),%ymm3 # 5680 <_sk_callback_avx+0x36e>
Mike Klein21bd3e42017-04-06 16:32:29 -040014933 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
Mike Klein21bd3e42017-04-06 16:32:29 -040014934 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040014935 .byte 196,226,125,24,29,146,36,0,0 // vbroadcastss 0x2492(%rip),%ymm3 # 5684 <_sk_callback_avx+0x372>
Mike Klein21bd3e42017-04-06 16:32:29 -040014936 .byte 91 // pop %rbx
14937 .byte 65,92 // pop %r12
14938 .byte 65,94 // pop %r14
14939 .byte 65,95 // pop %r15
14940 .byte 93 // pop %rbp
14941 .byte 255,224 // jmpq *%rax
14942
Mike Klein7c4af542017-03-29 18:21:14 -040014943HIDDEN _sk_store_565_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014944.globl _sk_store_565_avx
Mike Klein86714282017-04-13 17:37:38 -040014945FUNCTION(_sk_store_565_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014946_sk_store_565_avx:
14947 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040014948 .byte 76,139,16 // mov (%rax),%r10
Mike Kleinfb11acd2017-05-01 14:22:10 -040014949 .byte 196,98,125,24,5,126,36,0,0 // vbroadcastss 0x247e(%rip),%ymm8 # 5688 <_sk_callback_avx+0x376>
Mike Kleinfe560a82017-05-01 12:56:35 -040014950 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040014951 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
14952 .byte 196,193,41,114,241,11 // vpslld $0xb,%xmm9,%xmm10
14953 .byte 196,67,125,25,201,1 // vextractf128 $0x1,%ymm9,%xmm9
14954 .byte 196,193,49,114,241,11 // vpslld $0xb,%xmm9,%xmm9
14955 .byte 196,67,45,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040014956 .byte 196,98,125,24,21,87,36,0,0 // vbroadcastss 0x2457(%rip),%ymm10 # 568c <_sk_callback_avx+0x37a>
Mike Kleinfe560a82017-05-01 12:56:35 -040014957 .byte 196,65,116,89,210 // vmulps %ymm10,%ymm1,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040014958 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
14959 .byte 196,193,33,114,242,5 // vpslld $0x5,%xmm10,%xmm11
14960 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
14961 .byte 196,193,41,114,242,5 // vpslld $0x5,%xmm10,%xmm10
14962 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
14963 .byte 196,65,45,86,201 // vorpd %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040014964 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040014965 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
14966 .byte 196,65,53,86,192 // vorpd %ymm8,%ymm9,%ymm8
14967 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
14968 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
14969 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040014970 .byte 117,10 // jne 3285 <_sk_store_565_avx+0x89>
Mike Kleinfe560a82017-05-01 12:56:35 -040014971 .byte 196,65,122,127,4,122 // vmovdqu %xmm8,(%r10,%rdi,2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014972 .byte 72,173 // lods %ds:(%rsi),%rax
14973 .byte 255,224 // jmpq *%rax
14974 .byte 65,137,200 // mov %ecx,%r8d
14975 .byte 65,128,224,7 // and $0x7,%r8b
14976 .byte 65,254,200 // dec %r8b
14977 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinfb11acd2017-05-01 14:22:10 -040014978 .byte 119,236 // ja 3281 <_sk_store_565_avx+0x85>
Mike Kleinfe560a82017-05-01 12:56:35 -040014979 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinfb11acd2017-05-01 14:22:10 -040014980 .byte 76,141,13,68,0,0,0 // lea 0x44(%rip),%r9 # 32e4 <_sk_store_565_avx+0xe8>
Mike Kleinfe560a82017-05-01 12:56:35 -040014981 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
14982 .byte 76,1,200 // add %r9,%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040014983 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040014984 .byte 196,67,121,21,68,122,12,6 // vpextrw $0x6,%xmm8,0xc(%r10,%rdi,2)
14985 .byte 196,67,121,21,68,122,10,5 // vpextrw $0x5,%xmm8,0xa(%r10,%rdi,2)
14986 .byte 196,67,121,21,68,122,8,4 // vpextrw $0x4,%xmm8,0x8(%r10,%rdi,2)
14987 .byte 196,67,121,21,68,122,6,3 // vpextrw $0x3,%xmm8,0x6(%r10,%rdi,2)
14988 .byte 196,67,121,21,68,122,4,2 // vpextrw $0x2,%xmm8,0x4(%r10,%rdi,2)
14989 .byte 196,67,121,21,68,122,2,1 // vpextrw $0x1,%xmm8,0x2(%r10,%rdi,2)
14990 .byte 196,67,121,21,4,122,0 // vpextrw $0x0,%xmm8,(%r10,%rdi,2)
Mike Kleinfb11acd2017-05-01 14:22:10 -040014991 .byte 235,159 // jmp 3281 <_sk_store_565_avx+0x85>
Mike Kleinfe560a82017-05-01 12:56:35 -040014992 .byte 102,144 // xchg %ax,%ax
14993 .byte 245 // cmc
Mike Kleind7e06ae2017-03-29 16:33:06 -040014994 .byte 255 // (bad)
14995 .byte 255 // (bad)
14996 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040014997 .byte 237 // in (%dx),%eax
Mike Kleind7e06ae2017-03-29 16:33:06 -040014998 .byte 255 // (bad)
14999 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040015000 .byte 255,229 // jmpq *%rbp
Mike Kleind7e06ae2017-03-29 16:33:06 -040015001 .byte 255 // (bad)
15002 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040015003 .byte 255 // (bad)
15004 .byte 221,255 // (bad)
15005 .byte 255 // (bad)
15006 .byte 255,213 // callq *%rbp
15007 .byte 255 // (bad)
15008 .byte 255 // (bad)
15009 .byte 255,205 // dec %ebp
15010 .byte 255 // (bad)
15011 .byte 255 // (bad)
15012 .byte 255,197 // inc %ebp
Mike Kleind7e06ae2017-03-29 16:33:06 -040015013 .byte 255 // (bad)
15014 .byte 255 // (bad)
15015 .byte 255 // .byte 0xff
15016
Mike Kleinf809fef2017-03-31 13:52:45 -040015017HIDDEN _sk_load_4444_avx
15018.globl _sk_load_4444_avx
Mike Klein86714282017-04-13 17:37:38 -040015019FUNCTION(_sk_load_4444_avx)
Mike Kleinf809fef2017-03-31 13:52:45 -040015020_sk_load_4444_avx:
15021 .byte 72,173 // lods %ds:(%rsi),%rax
15022 .byte 76,139,16 // mov (%rax),%r10
15023 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015024 .byte 15,133,152,0,0,0 // jne 33a6 <_sk_load_4444_avx+0xa6>
Mike Kleinf809fef2017-03-31 13:52:45 -040015025 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
15026 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
15027 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
15028 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -040015029 .byte 196,227,125,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040015030 .byte 196,226,125,24,5,96,35,0,0 // vbroadcastss 0x2360(%rip),%ymm0 # 5690 <_sk_callback_avx+0x37e>
Mike Klein308e6242017-04-27 13:56:33 -040015031 .byte 197,228,84,192 // vandps %ymm0,%ymm3,%ymm0
Mike Kleinf809fef2017-03-31 13:52:45 -040015032 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040015033 .byte 196,226,125,24,13,83,35,0,0 // vbroadcastss 0x2353(%rip),%ymm1 # 5694 <_sk_callback_avx+0x382>
Mike Kleinf809fef2017-03-31 13:52:45 -040015034 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040015035 .byte 196,226,125,24,13,74,35,0,0 // vbroadcastss 0x234a(%rip),%ymm1 # 5698 <_sk_callback_avx+0x386>
Mike Klein308e6242017-04-27 13:56:33 -040015036 .byte 197,228,84,201 // vandps %ymm1,%ymm3,%ymm1
Mike Kleinf809fef2017-03-31 13:52:45 -040015037 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040015038 .byte 196,226,125,24,21,61,35,0,0 // vbroadcastss 0x233d(%rip),%ymm2 # 569c <_sk_callback_avx+0x38a>
Mike Kleinf809fef2017-03-31 13:52:45 -040015039 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040015040 .byte 196,226,125,24,21,52,35,0,0 // vbroadcastss 0x2334(%rip),%ymm2 # 56a0 <_sk_callback_avx+0x38e>
Mike Klein308e6242017-04-27 13:56:33 -040015041 .byte 197,228,84,210 // vandps %ymm2,%ymm3,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040015042 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040015043 .byte 196,98,125,24,5,39,35,0,0 // vbroadcastss 0x2327(%rip),%ymm8 # 56a4 <_sk_callback_avx+0x392>
Mike Kleinfe560a82017-05-01 12:56:35 -040015044 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040015045 .byte 196,98,125,24,5,29,35,0,0 // vbroadcastss 0x231d(%rip),%ymm8 # 56a8 <_sk_callback_avx+0x396>
Mike Klein308e6242017-04-27 13:56:33 -040015046 .byte 196,193,100,84,216 // vandps %ymm8,%ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040015047 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040015048 .byte 196,98,125,24,5,15,35,0,0 // vbroadcastss 0x230f(%rip),%ymm8 # 56ac <_sk_callback_avx+0x39a>
Mike Kleinfe560a82017-05-01 12:56:35 -040015049 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Kleinf809fef2017-03-31 13:52:45 -040015050 .byte 72,173 // lods %ds:(%rsi),%rax
15051 .byte 255,224 // jmpq *%rax
15052 .byte 65,137,200 // mov %ecx,%r8d
15053 .byte 65,128,224,7 // and $0x7,%r8b
15054 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
15055 .byte 65,254,200 // dec %r8b
15056 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinfb11acd2017-05-01 14:22:10 -040015057 .byte 15,135,86,255,255,255 // ja 3314 <_sk_load_4444_avx+0x14>
Mike Kleinf809fef2017-03-31 13:52:45 -040015058 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinfb11acd2017-05-01 14:22:10 -040015059 .byte 76,141,13,75,0,0,0 // lea 0x4b(%rip),%r9 # 3414 <_sk_load_4444_avx+0x114>
Mike Kleinf809fef2017-03-31 13:52:45 -040015060 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
15061 .byte 76,1,200 // add %r9,%rax
15062 .byte 255,224 // jmpq *%rax
15063 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
15064 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
15065 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
15066 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
15067 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
15068 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
15069 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
15070 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040015071 .byte 233,2,255,255,255 // jmpq 3314 <_sk_load_4444_avx+0x14>
Mike Kleinfe560a82017-05-01 12:56:35 -040015072 .byte 102,144 // xchg %ax,%ax
15073 .byte 242,255 // repnz (bad)
15074 .byte 255 // (bad)
15075 .byte 255 // (bad)
15076 .byte 234 // (bad)
15077 .byte 255 // (bad)
15078 .byte 255 // (bad)
15079 .byte 255,226 // jmpq *%rdx
Mike Kleinf809fef2017-03-31 13:52:45 -040015080 .byte 255 // (bad)
15081 .byte 255 // (bad)
15082 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040015083 .byte 218,255 // (bad)
15084 .byte 255 // (bad)
15085 .byte 255,210 // callq *%rdx
Mike Kleinf809fef2017-03-31 13:52:45 -040015086 .byte 255 // (bad)
15087 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040015088 .byte 255,202 // dec %edx
Mike Kleinf809fef2017-03-31 13:52:45 -040015089 .byte 255 // (bad)
15090 .byte 255 // (bad)
15091 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040015092 .byte 190 // .byte 0xbe
Mike Kleinf809fef2017-03-31 13:52:45 -040015093 .byte 255 // (bad)
15094 .byte 255 // (bad)
15095 .byte 255 // .byte 0xff
15096
Mike Klein21bd3e42017-04-06 16:32:29 -040015097HIDDEN _sk_gather_4444_avx
15098.globl _sk_gather_4444_avx
Mike Klein86714282017-04-13 17:37:38 -040015099FUNCTION(_sk_gather_4444_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040015100_sk_gather_4444_avx:
15101 .byte 85 // push %rbp
15102 .byte 65,87 // push %r15
15103 .byte 65,86 // push %r14
15104 .byte 65,84 // push %r12
15105 .byte 83 // push %rbx
15106 .byte 72,173 // lods %ds:(%rsi),%rax
15107 .byte 76,139,0 // mov (%rax),%r8
15108 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
15109 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
15110 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
15111 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
15112 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
15113 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
15114 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
15115 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
15116 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
15117 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
15118 .byte 65,137,193 // mov %eax,%r9d
15119 .byte 72,193,232,32 // shr $0x20,%rax
15120 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
15121 .byte 69,137,211 // mov %r10d,%r11d
15122 .byte 73,193,234,32 // shr $0x20,%r10
15123 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
15124 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
15125 .byte 65,137,222 // mov %ebx,%r14d
15126 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
15127 .byte 69,137,252 // mov %r15d,%r12d
15128 .byte 73,193,239,32 // shr $0x20,%r15
15129 .byte 72,193,235,32 // shr $0x20,%rbx
15130 .byte 65,15,183,28,88 // movzwl (%r8,%rbx,2),%ebx
15131 .byte 67,15,183,44,112 // movzwl (%r8,%r14,2),%ebp
15132 .byte 197,249,110,197 // vmovd %ebp,%xmm0
15133 .byte 197,249,196,195,1 // vpinsrw $0x1,%ebx,%xmm0,%xmm0
15134 .byte 67,15,183,28,96 // movzwl (%r8,%r12,2),%ebx
15135 .byte 197,249,196,195,2 // vpinsrw $0x2,%ebx,%xmm0,%xmm0
15136 .byte 67,15,183,28,120 // movzwl (%r8,%r15,2),%ebx
15137 .byte 197,249,196,195,3 // vpinsrw $0x3,%ebx,%xmm0,%xmm0
15138 .byte 67,15,183,44,88 // movzwl (%r8,%r11,2),%ebp
15139 .byte 197,249,196,197,4 // vpinsrw $0x4,%ebp,%xmm0,%xmm0
15140 .byte 67,15,183,44,80 // movzwl (%r8,%r10,2),%ebp
15141 .byte 197,249,196,197,5 // vpinsrw $0x5,%ebp,%xmm0,%xmm0
15142 .byte 67,15,183,44,72 // movzwl (%r8,%r9,2),%ebp
15143 .byte 197,249,196,197,6 // vpinsrw $0x6,%ebp,%xmm0,%xmm0
15144 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
15145 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
15146 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
15147 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
15148 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -040015149 .byte 196,227,125,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040015150 .byte 196,226,125,24,5,166,33,0,0 // vbroadcastss 0x21a6(%rip),%ymm0 # 56b0 <_sk_callback_avx+0x39e>
Mike Klein308e6242017-04-27 13:56:33 -040015151 .byte 197,228,84,192 // vandps %ymm0,%ymm3,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -040015152 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040015153 .byte 196,226,125,24,13,153,33,0,0 // vbroadcastss 0x2199(%rip),%ymm1 # 56b4 <_sk_callback_avx+0x3a2>
Mike Klein21bd3e42017-04-06 16:32:29 -040015154 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040015155 .byte 196,226,125,24,13,144,33,0,0 // vbroadcastss 0x2190(%rip),%ymm1 # 56b8 <_sk_callback_avx+0x3a6>
Mike Klein308e6242017-04-27 13:56:33 -040015156 .byte 197,228,84,201 // vandps %ymm1,%ymm3,%ymm1
Mike Klein21bd3e42017-04-06 16:32:29 -040015157 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040015158 .byte 196,226,125,24,21,131,33,0,0 // vbroadcastss 0x2183(%rip),%ymm2 # 56bc <_sk_callback_avx+0x3aa>
Mike Klein21bd3e42017-04-06 16:32:29 -040015159 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040015160 .byte 196,226,125,24,21,122,33,0,0 // vbroadcastss 0x217a(%rip),%ymm2 # 56c0 <_sk_callback_avx+0x3ae>
Mike Klein308e6242017-04-27 13:56:33 -040015161 .byte 197,228,84,210 // vandps %ymm2,%ymm3,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040015162 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040015163 .byte 196,98,125,24,5,109,33,0,0 // vbroadcastss 0x216d(%rip),%ymm8 # 56c4 <_sk_callback_avx+0x3b2>
Mike Kleinfe560a82017-05-01 12:56:35 -040015164 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040015165 .byte 196,98,125,24,5,99,33,0,0 // vbroadcastss 0x2163(%rip),%ymm8 # 56c8 <_sk_callback_avx+0x3b6>
Mike Klein308e6242017-04-27 13:56:33 -040015166 .byte 196,193,100,84,216 // vandps %ymm8,%ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040015167 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040015168 .byte 196,98,125,24,5,85,33,0,0 // vbroadcastss 0x2155(%rip),%ymm8 # 56cc <_sk_callback_avx+0x3ba>
Mike Kleinfe560a82017-05-01 12:56:35 -040015169 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Klein21bd3e42017-04-06 16:32:29 -040015170 .byte 72,173 // lods %ds:(%rsi),%rax
15171 .byte 91 // pop %rbx
15172 .byte 65,92 // pop %r12
15173 .byte 65,94 // pop %r14
15174 .byte 65,95 // pop %r15
15175 .byte 93 // pop %rbp
15176 .byte 255,224 // jmpq *%rax
15177
Mike Kleinf809fef2017-03-31 13:52:45 -040015178HIDDEN _sk_store_4444_avx
15179.globl _sk_store_4444_avx
Mike Klein86714282017-04-13 17:37:38 -040015180FUNCTION(_sk_store_4444_avx)
Mike Kleinf809fef2017-03-31 13:52:45 -040015181_sk_store_4444_avx:
15182 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040015183 .byte 76,139,16 // mov (%rax),%r10
Mike Kleinfb11acd2017-05-01 14:22:10 -040015184 .byte 196,98,125,24,5,58,33,0,0 // vbroadcastss 0x213a(%rip),%ymm8 # 56d0 <_sk_callback_avx+0x3be>
Mike Kleinfe560a82017-05-01 12:56:35 -040015185 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleinf809fef2017-03-31 13:52:45 -040015186 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
15187 .byte 196,193,41,114,241,12 // vpslld $0xc,%xmm9,%xmm10
15188 .byte 196,67,125,25,201,1 // vextractf128 $0x1,%ymm9,%xmm9
15189 .byte 196,193,49,114,241,12 // vpslld $0xc,%xmm9,%xmm9
15190 .byte 196,67,45,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015191 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Kleinf809fef2017-03-31 13:52:45 -040015192 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
15193 .byte 196,193,33,114,242,8 // vpslld $0x8,%xmm10,%xmm11
15194 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
15195 .byte 196,193,41,114,242,8 // vpslld $0x8,%xmm10,%xmm10
15196 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
15197 .byte 196,65,45,86,201 // vorpd %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015198 .byte 196,65,108,89,208 // vmulps %ymm8,%ymm2,%ymm10
Mike Kleinf809fef2017-03-31 13:52:45 -040015199 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
15200 .byte 196,193,33,114,242,4 // vpslld $0x4,%xmm10,%xmm11
15201 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
15202 .byte 196,193,41,114,242,4 // vpslld $0x4,%xmm10,%xmm10
15203 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040015204 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleinf809fef2017-03-31 13:52:45 -040015205 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
15206 .byte 196,65,45,86,192 // vorpd %ymm8,%ymm10,%ymm8
15207 .byte 196,65,53,86,192 // vorpd %ymm8,%ymm9,%ymm8
15208 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
15209 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
15210 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015211 .byte 117,10 // jne 362f <_sk_store_4444_avx+0xa7>
Mike Kleinfe560a82017-05-01 12:56:35 -040015212 .byte 196,65,122,127,4,122 // vmovdqu %xmm8,(%r10,%rdi,2)
Mike Kleinf809fef2017-03-31 13:52:45 -040015213 .byte 72,173 // lods %ds:(%rsi),%rax
15214 .byte 255,224 // jmpq *%rax
15215 .byte 65,137,200 // mov %ecx,%r8d
15216 .byte 65,128,224,7 // and $0x7,%r8b
15217 .byte 65,254,200 // dec %r8b
15218 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinfb11acd2017-05-01 14:22:10 -040015219 .byte 119,236 // ja 362b <_sk_store_4444_avx+0xa3>
Mike Kleinfe560a82017-05-01 12:56:35 -040015220 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinfb11acd2017-05-01 14:22:10 -040015221 .byte 76,141,13,66,0,0,0 // lea 0x42(%rip),%r9 # 368c <_sk_store_4444_avx+0x104>
Mike Kleinfe560a82017-05-01 12:56:35 -040015222 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
15223 .byte 76,1,200 // add %r9,%rax
Mike Kleinf809fef2017-03-31 13:52:45 -040015224 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040015225 .byte 196,67,121,21,68,122,12,6 // vpextrw $0x6,%xmm8,0xc(%r10,%rdi,2)
15226 .byte 196,67,121,21,68,122,10,5 // vpextrw $0x5,%xmm8,0xa(%r10,%rdi,2)
15227 .byte 196,67,121,21,68,122,8,4 // vpextrw $0x4,%xmm8,0x8(%r10,%rdi,2)
15228 .byte 196,67,121,21,68,122,6,3 // vpextrw $0x3,%xmm8,0x6(%r10,%rdi,2)
15229 .byte 196,67,121,21,68,122,4,2 // vpextrw $0x2,%xmm8,0x4(%r10,%rdi,2)
15230 .byte 196,67,121,21,68,122,2,1 // vpextrw $0x1,%xmm8,0x2(%r10,%rdi,2)
15231 .byte 196,67,121,21,4,122,0 // vpextrw $0x0,%xmm8,(%r10,%rdi,2)
Mike Kleinfb11acd2017-05-01 14:22:10 -040015232 .byte 235,159 // jmp 362b <_sk_store_4444_avx+0xa3>
Mike Kleinfe560a82017-05-01 12:56:35 -040015233 .byte 247,255 // idiv %edi
15234 .byte 255 // (bad)
15235 .byte 255 // (bad)
15236 .byte 239 // out %eax,(%dx)
15237 .byte 255 // (bad)
15238 .byte 255 // (bad)
15239 .byte 255,231 // jmpq *%rdi
Mike Kleinf809fef2017-03-31 13:52:45 -040015240 .byte 255 // (bad)
15241 .byte 255 // (bad)
15242 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040015243 .byte 223,255 // (bad)
15244 .byte 255 // (bad)
15245 .byte 255,215 // callq *%rdi
Mike Kleinf809fef2017-03-31 13:52:45 -040015246 .byte 255 // (bad)
15247 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040015248 .byte 255,207 // dec %edi
Mike Kleinf809fef2017-03-31 13:52:45 -040015249 .byte 255 // (bad)
15250 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040015251 .byte 255,199 // inc %edi
Mike Kleinf809fef2017-03-31 13:52:45 -040015252 .byte 255 // (bad)
15253 .byte 255 // (bad)
15254 .byte 255 // .byte 0xff
15255
Mike Klein7c4af542017-03-29 18:21:14 -040015256HIDDEN _sk_load_8888_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015257.globl _sk_load_8888_avx
Mike Klein86714282017-04-13 17:37:38 -040015258FUNCTION(_sk_load_8888_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015259_sk_load_8888_avx:
15260 .byte 72,173 // lods %ds:(%rsi),%rax
15261 .byte 76,139,16 // mov (%rax),%r10
15262 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015263 .byte 15,133,135,0,0,0 // jne 373d <_sk_load_8888_avx+0x95>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015264 .byte 196,65,124,16,12,186 // vmovups (%r10,%rdi,4),%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040015265 .byte 197,124,40,21,92,33,0,0 // vmovaps 0x215c(%rip),%ymm10 # 5820 <_sk_callback_avx+0x50e>
Mike Klein0aa742f2017-04-27 13:36:57 -040015266 .byte 196,193,52,84,194 // vandps %ymm10,%ymm9,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040015267 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040015268 .byte 196,98,125,24,5,254,31,0,0 // vbroadcastss 0x1ffe(%rip),%ymm8 # 56d4 <_sk_callback_avx+0x3c2>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015269 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Klein0aa742f2017-04-27 13:36:57 -040015270 .byte 196,193,113,114,209,8 // vpsrld $0x8,%xmm9,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040015271 .byte 196,99,125,25,203,1 // vextractf128 $0x1,%ymm9,%xmm3
Mike Klein0aa742f2017-04-27 13:36:57 -040015272 .byte 197,233,114,211,8 // vpsrld $0x8,%xmm3,%xmm2
15273 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
15274 .byte 196,193,116,84,202 // vandps %ymm10,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040015275 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
15276 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Klein0aa742f2017-04-27 13:36:57 -040015277 .byte 196,193,33,114,209,16 // vpsrld $0x10,%xmm9,%xmm11
Mike Kleind7e06ae2017-03-29 16:33:06 -040015278 .byte 197,233,114,211,16 // vpsrld $0x10,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040015279 .byte 196,227,37,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm11,%ymm2
15280 .byte 196,193,108,84,210 // vandps %ymm10,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040015281 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
15282 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
15283 .byte 196,193,49,114,209,24 // vpsrld $0x18,%xmm9,%xmm9
15284 .byte 197,225,114,211,24 // vpsrld $0x18,%xmm3,%xmm3
15285 .byte 196,227,53,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm9,%ymm3
15286 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
15287 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
15288 .byte 72,173 // lods %ds:(%rsi),%rax
15289 .byte 255,224 // jmpq *%rax
15290 .byte 65,137,200 // mov %ecx,%r8d
15291 .byte 65,128,224,7 // and $0x7,%r8b
15292 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
15293 .byte 65,254,200 // dec %r8b
15294 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinfb11acd2017-05-01 14:22:10 -040015295 .byte 15,135,102,255,255,255 // ja 36bc <_sk_load_8888_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015296 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinfb11acd2017-05-01 14:22:10 -040015297 .byte 76,141,13,139,0,0,0 // lea 0x8b(%rip),%r9 # 37ec <_sk_load_8888_avx+0x144>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015298 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
15299 .byte 76,1,200 // add %r9,%rax
15300 .byte 255,224 // jmpq *%rax
15301 .byte 196,193,121,110,68,186,24 // vmovd 0x18(%r10,%rdi,4),%xmm0
15302 .byte 197,249,112,192,68 // vpshufd $0x44,%xmm0,%xmm0
15303 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
15304 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
15305 .byte 196,99,117,12,200,64 // vblendps $0x40,%ymm0,%ymm1,%ymm9
15306 .byte 196,99,125,25,200,1 // vextractf128 $0x1,%ymm9,%xmm0
15307 .byte 196,195,121,34,68,186,20,1 // vpinsrd $0x1,0x14(%r10,%rdi,4),%xmm0,%xmm0
15308 .byte 196,99,53,24,200,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm9
15309 .byte 196,99,125,25,200,1 // vextractf128 $0x1,%ymm9,%xmm0
15310 .byte 196,195,121,34,68,186,16,0 // vpinsrd $0x0,0x10(%r10,%rdi,4),%xmm0,%xmm0
15311 .byte 196,99,53,24,200,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm9
15312 .byte 196,195,49,34,68,186,12,3 // vpinsrd $0x3,0xc(%r10,%rdi,4),%xmm9,%xmm0
15313 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
15314 .byte 196,195,49,34,68,186,8,2 // vpinsrd $0x2,0x8(%r10,%rdi,4),%xmm9,%xmm0
15315 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
15316 .byte 196,195,49,34,68,186,4,1 // vpinsrd $0x1,0x4(%r10,%rdi,4),%xmm9,%xmm0
15317 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
15318 .byte 196,195,49,34,4,186,0 // vpinsrd $0x0,(%r10,%rdi,4),%xmm9,%xmm0
15319 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040015320 .byte 233,210,254,255,255 // jmpq 36bc <_sk_load_8888_avx+0x14>
Mike Klein0aa742f2017-04-27 13:36:57 -040015321 .byte 102,144 // xchg %ax,%ax
15322 .byte 236 // in (%dx),%al
Mike Kleind7e06ae2017-03-29 16:33:06 -040015323 .byte 255 // (bad)
15324 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040015325 .byte 255 // (bad)
15326 .byte 222,255 // fdivrp %st,%st(7)
15327 .byte 255 // (bad)
15328 .byte 255,208 // callq *%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040015329 .byte 255 // (bad)
15330 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040015331 .byte 255,194 // inc %edx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015332 .byte 255 // (bad)
15333 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040015334 .byte 255,174,255,255,255,154 // ljmp *-0x65000001(%rsi)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015335 .byte 255 // (bad)
15336 .byte 255 // (bad)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015337 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040015338 .byte 126,255 // jle 3805 <_sk_load_8888_avx+0x15d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015339 .byte 255 // (bad)
15340 .byte 255 // .byte 0xff
Mike Kleind7e06ae2017-03-29 16:33:06 -040015341
Mike Kleindec4ea82017-04-06 15:04:05 -040015342HIDDEN _sk_gather_8888_avx
15343.globl _sk_gather_8888_avx
Mike Klein86714282017-04-13 17:37:38 -040015344FUNCTION(_sk_gather_8888_avx)
Mike Kleindec4ea82017-04-06 15:04:05 -040015345_sk_gather_8888_avx:
15346 .byte 65,87 // push %r15
15347 .byte 65,86 // push %r14
15348 .byte 65,84 // push %r12
15349 .byte 83 // push %rbx
15350 .byte 72,173 // lods %ds:(%rsi),%rax
15351 .byte 76,139,0 // mov (%rax),%r8
15352 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
15353 .byte 197,249,110,80,16 // vmovd 0x10(%rax),%xmm2
15354 .byte 197,249,112,210,0 // vpshufd $0x0,%xmm2,%xmm2
15355 .byte 196,226,105,64,217 // vpmulld %xmm1,%xmm2,%xmm3
15356 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
15357 .byte 196,226,105,64,201 // vpmulld %xmm1,%xmm2,%xmm1
15358 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
15359 .byte 196,227,125,25,194,1 // vextractf128 $0x1,%ymm0,%xmm2
15360 .byte 197,241,254,202 // vpaddd %xmm2,%xmm1,%xmm1
15361 .byte 196,225,249,126,200 // vmovq %xmm1,%rax
15362 .byte 65,137,193 // mov %eax,%r9d
15363 .byte 72,193,232,32 // shr $0x20,%rax
15364 .byte 196,195,249,22,202,1 // vpextrq $0x1,%xmm1,%r10
15365 .byte 69,137,211 // mov %r10d,%r11d
15366 .byte 73,193,234,32 // shr $0x20,%r10
15367 .byte 197,225,254,192 // vpaddd %xmm0,%xmm3,%xmm0
15368 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
15369 .byte 65,137,222 // mov %ebx,%r14d
15370 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
15371 .byte 69,137,252 // mov %r15d,%r12d
15372 .byte 72,193,235,32 // shr $0x20,%rbx
15373 .byte 73,193,239,32 // shr $0x20,%r15
15374 .byte 196,129,121,110,4,176 // vmovd (%r8,%r14,4),%xmm0
15375 .byte 196,195,121,34,4,152,1 // vpinsrd $0x1,(%r8,%rbx,4),%xmm0,%xmm0
15376 .byte 196,131,121,34,4,160,2 // vpinsrd $0x2,(%r8,%r12,4),%xmm0,%xmm0
15377 .byte 196,3,121,34,4,184,3 // vpinsrd $0x3,(%r8,%r15,4),%xmm0,%xmm8
15378 .byte 196,129,121,110,4,136 // vmovd (%r8,%r9,4),%xmm0
15379 .byte 196,195,121,34,4,128,1 // vpinsrd $0x1,(%r8,%rax,4),%xmm0,%xmm0
15380 .byte 196,131,121,34,4,152,2 // vpinsrd $0x2,(%r8,%r11,4),%xmm0,%xmm0
15381 .byte 196,131,121,34,28,144,3 // vpinsrd $0x3,(%r8,%r10,4),%xmm0,%xmm3
15382 .byte 196,227,61,24,195,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040015383 .byte 197,124,40,21,134,31,0,0 // vmovaps 0x1f86(%rip),%ymm10 # 5840 <_sk_callback_avx+0x52e>
Mike Klein0aa742f2017-04-27 13:36:57 -040015384 .byte 196,193,124,84,194 // vandps %ymm10,%ymm0,%ymm0
Mike Kleindec4ea82017-04-06 15:04:05 -040015385 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040015386 .byte 196,98,125,24,13,12,30,0,0 // vbroadcastss 0x1e0c(%rip),%ymm9 # 56d8 <_sk_callback_avx+0x3c6>
Mike Kleindec4ea82017-04-06 15:04:05 -040015387 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
Mike Klein0aa742f2017-04-27 13:36:57 -040015388 .byte 196,193,113,114,208,8 // vpsrld $0x8,%xmm8,%xmm1
15389 .byte 197,233,114,211,8 // vpsrld $0x8,%xmm3,%xmm2
15390 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
15391 .byte 196,193,116,84,202 // vandps %ymm10,%ymm1,%ymm1
Mike Kleindec4ea82017-04-06 15:04:05 -040015392 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
15393 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein0aa742f2017-04-27 13:36:57 -040015394 .byte 196,193,33,114,208,16 // vpsrld $0x10,%xmm8,%xmm11
Mike Kleindec4ea82017-04-06 15:04:05 -040015395 .byte 197,233,114,211,16 // vpsrld $0x10,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040015396 .byte 196,227,37,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm11,%ymm2
15397 .byte 196,193,108,84,210 // vandps %ymm10,%ymm2,%ymm2
Mike Kleindec4ea82017-04-06 15:04:05 -040015398 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
15399 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
15400 .byte 196,193,57,114,208,24 // vpsrld $0x18,%xmm8,%xmm8
15401 .byte 197,225,114,211,24 // vpsrld $0x18,%xmm3,%xmm3
15402 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
15403 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
15404 .byte 196,193,100,89,217 // vmulps %ymm9,%ymm3,%ymm3
15405 .byte 72,173 // lods %ds:(%rsi),%rax
15406 .byte 91 // pop %rbx
15407 .byte 65,92 // pop %r12
15408 .byte 65,94 // pop %r14
15409 .byte 65,95 // pop %r15
15410 .byte 255,224 // jmpq *%rax
15411
Mike Klein7c4af542017-03-29 18:21:14 -040015412HIDDEN _sk_store_8888_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015413.globl _sk_store_8888_avx
Mike Klein86714282017-04-13 17:37:38 -040015414FUNCTION(_sk_store_8888_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015415_sk_store_8888_avx:
15416 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040015417 .byte 76,139,16 // mov (%rax),%r10
Mike Kleinfb11acd2017-05-01 14:22:10 -040015418 .byte 196,98,125,24,5,154,29,0,0 // vbroadcastss 0x1d9a(%rip),%ymm8 # 56dc <_sk_callback_avx+0x3ca>
Mike Kleinfe560a82017-05-01 12:56:35 -040015419 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040015420 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015421 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040015422 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
15423 .byte 196,193,33,114,242,8 // vpslld $0x8,%xmm10,%xmm11
15424 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
15425 .byte 196,193,41,114,242,8 // vpslld $0x8,%xmm10,%xmm10
15426 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
15427 .byte 196,65,45,86,201 // vorpd %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015428 .byte 196,65,108,89,208 // vmulps %ymm8,%ymm2,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040015429 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
15430 .byte 196,193,33,114,242,16 // vpslld $0x10,%xmm10,%xmm11
15431 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
15432 .byte 196,193,41,114,242,16 // vpslld $0x10,%xmm10,%xmm10
15433 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040015434 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040015435 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
15436 .byte 196,193,33,114,240,24 // vpslld $0x18,%xmm8,%xmm11
15437 .byte 196,67,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm8
15438 .byte 196,193,57,114,240,24 // vpslld $0x18,%xmm8,%xmm8
15439 .byte 196,67,37,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm11,%ymm8
15440 .byte 196,65,45,86,192 // vorpd %ymm8,%ymm10,%ymm8
15441 .byte 196,65,53,86,192 // vorpd %ymm8,%ymm9,%ymm8
15442 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015443 .byte 117,10 // jne 39d0 <_sk_store_8888_avx+0x9c>
Mike Kleinfe560a82017-05-01 12:56:35 -040015444 .byte 196,65,124,17,4,186 // vmovups %ymm8,(%r10,%rdi,4)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015445 .byte 72,173 // lods %ds:(%rsi),%rax
15446 .byte 255,224 // jmpq *%rax
15447 .byte 65,137,200 // mov %ecx,%r8d
15448 .byte 65,128,224,7 // and $0x7,%r8b
15449 .byte 65,254,200 // dec %r8b
15450 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinfb11acd2017-05-01 14:22:10 -040015451 .byte 119,236 // ja 39cc <_sk_store_8888_avx+0x98>
Mike Kleinfe560a82017-05-01 12:56:35 -040015452 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinfb11acd2017-05-01 14:22:10 -040015453 .byte 76,141,13,85,0,0,0 // lea 0x55(%rip),%r9 # 3a40 <_sk_store_8888_avx+0x10c>
Mike Kleinfe560a82017-05-01 12:56:35 -040015454 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
15455 .byte 76,1,200 // add %r9,%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040015456 .byte 255,224 // jmpq *%rax
15457 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015458 .byte 196,67,121,22,76,186,24,2 // vpextrd $0x2,%xmm9,0x18(%r10,%rdi,4)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015459 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015460 .byte 196,67,121,22,76,186,20,1 // vpextrd $0x1,%xmm9,0x14(%r10,%rdi,4)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015461 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015462 .byte 196,65,122,17,76,186,16 // vmovss %xmm9,0x10(%r10,%rdi,4)
15463 .byte 196,67,121,22,68,186,12,3 // vpextrd $0x3,%xmm8,0xc(%r10,%rdi,4)
15464 .byte 196,67,121,22,68,186,8,2 // vpextrd $0x2,%xmm8,0x8(%r10,%rdi,4)
15465 .byte 196,67,121,22,68,186,4,1 // vpextrd $0x1,%xmm8,0x4(%r10,%rdi,4)
15466 .byte 196,65,121,126,4,186 // vmovd %xmm8,(%r10,%rdi,4)
Mike Kleinfb11acd2017-05-01 14:22:10 -040015467 .byte 235,143 // jmp 39cc <_sk_store_8888_avx+0x98>
Mike Klein0aa742f2017-04-27 13:36:57 -040015468 .byte 15,31,0 // nopl (%rax)
15469 .byte 245 // cmc
Mike Kleind7e06ae2017-03-29 16:33:06 -040015470 .byte 255 // (bad)
15471 .byte 255 // (bad)
15472 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040015473 .byte 237 // in (%dx),%eax
Mike Kleind7e06ae2017-03-29 16:33:06 -040015474 .byte 255 // (bad)
15475 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040015476 .byte 255,229 // jmpq *%rbp
15477 .byte 255 // (bad)
15478 .byte 255 // (bad)
15479 .byte 255 // (bad)
15480 .byte 221,255 // (bad)
15481 .byte 255 // (bad)
15482 .byte 255,208 // callq *%rax
15483 .byte 255 // (bad)
15484 .byte 255 // (bad)
15485 .byte 255,194 // inc %edx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015486 .byte 255 // (bad)
15487 .byte 255 // (bad)
15488 .byte 255 // .byte 0xff
Mike Klein0aa742f2017-04-27 13:36:57 -040015489 .byte 180,255 // mov $0xff,%ah
Mike Kleind7e06ae2017-03-29 16:33:06 -040015490 .byte 255 // (bad)
15491 .byte 255 // .byte 0xff
15492
Mike Klein7c4af542017-03-29 18:21:14 -040015493HIDDEN _sk_load_f16_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015494.globl _sk_load_f16_avx
Mike Klein86714282017-04-13 17:37:38 -040015495FUNCTION(_sk_load_f16_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015496_sk_load_f16_avx:
Mike Kleinb4bbc642017-04-27 08:59:55 -040015497 .byte 72,131,236,24 // sub $0x18,%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040015498 .byte 72,173 // lods %ds:(%rsi),%rax
15499 .byte 72,139,0 // mov (%rax),%rax
15500 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb4bbc642017-04-27 08:59:55 -040015501 .byte 197,252,17,124,36,224 // vmovups %ymm7,-0x20(%rsp)
15502 .byte 197,252,17,116,36,192 // vmovups %ymm6,-0x40(%rsp)
15503 .byte 197,252,17,108,36,160 // vmovups %ymm5,-0x60(%rsp)
15504 .byte 197,254,127,100,36,128 // vmovdqu %ymm4,-0x80(%rsp)
Mike Kleinfb11acd2017-05-01 14:22:10 -040015505 .byte 15,133,141,2,0,0 // jne 3d13 <_sk_load_f16_avx+0x2b7>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015506 .byte 197,121,16,4,248 // vmovupd (%rax,%rdi,8),%xmm8
15507 .byte 197,249,16,84,248,16 // vmovupd 0x10(%rax,%rdi,8),%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015508 .byte 197,249,16,76,248,32 // vmovupd 0x20(%rax,%rdi,8),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040015509 .byte 197,122,111,76,248,48 // vmovdqu 0x30(%rax,%rdi,8),%xmm9
15510 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
15511 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015512 .byte 196,193,113,97,217 // vpunpcklwd %xmm9,%xmm1,%xmm3
15513 .byte 196,193,113,105,201 // vpunpckhwd %xmm9,%xmm1,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040015514 .byte 197,121,97,250 // vpunpcklwd %xmm2,%xmm0,%xmm15
Mike Klein114e6b32017-04-03 22:21:15 -040015515 .byte 197,121,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040015516 .byte 197,225,97,209 // vpunpcklwd %xmm1,%xmm3,%xmm2
15517 .byte 197,97,105,201 // vpunpckhwd %xmm1,%xmm3,%xmm9
15518 .byte 197,129,108,194 // vpunpcklqdq %xmm2,%xmm15,%xmm0
15519 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
15520 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040015521 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
15522 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040015523 .byte 196,98,125,24,37,1,28,0,0 // vbroadcastss 0x1c01(%rip),%ymm12 # 56e0 <_sk_callback_avx+0x3ce>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015524 .byte 196,193,124,84,204 // vandps %ymm12,%ymm0,%ymm1
Mike Kleind0ce1482017-04-19 17:19:30 -040015525 .byte 197,252,87,193 // vxorps %ymm1,%ymm0,%ymm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040015526 .byte 196,195,125,25,198,1 // vextractf128 $0x1,%ymm0,%xmm14
Mike Kleinfb11acd2017-05-01 14:22:10 -040015527 .byte 196,98,121,24,29,237,27,0,0 // vbroadcastss 0x1bed(%rip),%xmm11 # 56e4 <_sk_callback_avx+0x3d2>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015528 .byte 196,193,8,87,219 // vxorps %xmm11,%xmm14,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040015529 .byte 196,98,121,24,45,227,27,0,0 // vbroadcastss 0x1be3(%rip),%xmm13 # 56e8 <_sk_callback_avx+0x3d6>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015530 .byte 197,145,102,219 // vpcmpgtd %xmm3,%xmm13,%xmm3
15531 .byte 196,65,120,87,211 // vxorps %xmm11,%xmm0,%xmm10
15532 .byte 196,65,17,102,210 // vpcmpgtd %xmm10,%xmm13,%xmm10
15533 .byte 196,99,45,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm10,%ymm10
15534 .byte 197,225,114,241,16 // vpslld $0x10,%xmm1,%xmm3
15535 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040015536 .byte 197,241,114,241,16 // vpslld $0x10,%xmm1,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040015537 .byte 196,227,101,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm3,%ymm1
Mike Kleind0ce1482017-04-19 17:19:30 -040015538 .byte 197,249,114,240,13 // vpslld $0xd,%xmm0,%xmm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040015539 .byte 196,193,97,114,246,13 // vpslld $0xd,%xmm14,%xmm3
15540 .byte 196,227,125,24,195,1 // vinsertf128 $0x1,%xmm3,%ymm0,%ymm0
15541 .byte 197,252,86,193 // vorps %ymm1,%ymm0,%ymm0
15542 .byte 196,227,125,25,193,1 // vextractf128 $0x1,%ymm0,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040015543 .byte 196,226,121,24,29,153,27,0,0 // vbroadcastss 0x1b99(%rip),%xmm3 # 56ec <_sk_callback_avx+0x3da>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015544 .byte 197,241,254,203 // vpaddd %xmm3,%xmm1,%xmm1
15545 .byte 197,249,254,195 // vpaddd %xmm3,%xmm0,%xmm0
15546 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
15547 .byte 196,65,12,87,246 // vxorps %ymm14,%ymm14,%ymm14
15548 .byte 196,195,125,74,198,160 // vblendvps %ymm10,%ymm14,%ymm0,%ymm0
15549 .byte 197,129,109,202 // vpunpckhqdq %xmm2,%xmm15,%xmm1
15550 .byte 197,217,239,228 // vpxor %xmm4,%xmm4,%xmm4
15551 .byte 197,241,105,212 // vpunpckhwd %xmm4,%xmm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015552 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
15553 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040015554 .byte 196,193,116,84,212 // vandps %ymm12,%ymm1,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015555 .byte 197,244,87,202 // vxorps %ymm2,%ymm1,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040015556 .byte 196,195,125,25,202,1 // vextractf128 $0x1,%ymm1,%xmm10
15557 .byte 196,193,40,87,251 // vxorps %xmm11,%xmm10,%xmm7
15558 .byte 197,145,102,255 // vpcmpgtd %xmm7,%xmm13,%xmm7
15559 .byte 196,193,112,87,243 // vxorps %xmm11,%xmm1,%xmm6
15560 .byte 197,145,102,246 // vpcmpgtd %xmm6,%xmm13,%xmm6
15561 .byte 196,227,77,24,247,1 // vinsertf128 $0x1,%xmm7,%ymm6,%ymm6
15562 .byte 197,193,114,242,16 // vpslld $0x10,%xmm2,%xmm7
15563 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015564 .byte 197,233,114,242,16 // vpslld $0x10,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040015565 .byte 196,227,69,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm7,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040015566 .byte 197,241,114,241,13 // vpslld $0xd,%xmm1,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040015567 .byte 196,193,65,114,242,13 // vpslld $0xd,%xmm10,%xmm7
15568 .byte 196,227,117,24,207,1 // vinsertf128 $0x1,%xmm7,%ymm1,%ymm1
15569 .byte 197,244,86,202 // vorps %ymm2,%ymm1,%ymm1
15570 .byte 196,227,125,25,202,1 // vextractf128 $0x1,%ymm1,%xmm2
15571 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
15572 .byte 197,241,254,203 // vpaddd %xmm3,%xmm1,%xmm1
15573 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
15574 .byte 196,195,117,74,206,96 // vblendvps %ymm6,%ymm14,%ymm1,%ymm1
15575 .byte 196,193,57,108,209 // vpunpcklqdq %xmm9,%xmm8,%xmm2
15576 .byte 197,233,105,244 // vpunpckhwd %xmm4,%xmm2,%xmm6
15577 .byte 196,65,41,239,210 // vpxor %xmm10,%xmm10,%xmm10
Mike Kleind0ce1482017-04-19 17:19:30 -040015578 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
15579 .byte 196,227,109,24,214,1 // vinsertf128 $0x1,%xmm6,%ymm2,%ymm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040015580 .byte 196,193,108,84,244 // vandps %ymm12,%ymm2,%ymm6
Mike Klein097d0932017-04-20 09:11:53 -040015581 .byte 197,236,87,214 // vxorps %ymm6,%ymm2,%ymm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040015582 .byte 196,227,125,25,215,1 // vextractf128 $0x1,%ymm2,%xmm7
15583 .byte 196,193,64,87,235 // vxorps %xmm11,%xmm7,%xmm5
15584 .byte 197,145,102,237 // vpcmpgtd %xmm5,%xmm13,%xmm5
15585 .byte 196,193,104,87,227 // vxorps %xmm11,%xmm2,%xmm4
15586 .byte 197,145,102,228 // vpcmpgtd %xmm4,%xmm13,%xmm4
15587 .byte 196,227,93,24,229,1 // vinsertf128 $0x1,%xmm5,%ymm4,%ymm4
15588 .byte 197,209,114,246,16 // vpslld $0x10,%xmm6,%xmm5
15589 .byte 196,227,125,25,246,1 // vextractf128 $0x1,%ymm6,%xmm6
Mike Klein097d0932017-04-20 09:11:53 -040015590 .byte 197,201,114,246,16 // vpslld $0x10,%xmm6,%xmm6
Mike Kleinb4bbc642017-04-27 08:59:55 -040015591 .byte 196,227,85,24,238,1 // vinsertf128 $0x1,%xmm6,%ymm5,%ymm5
Mike Klein097d0932017-04-20 09:11:53 -040015592 .byte 197,233,114,242,13 // vpslld $0xd,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040015593 .byte 197,201,114,247,13 // vpslld $0xd,%xmm7,%xmm6
15594 .byte 196,227,109,24,214,1 // vinsertf128 $0x1,%xmm6,%ymm2,%ymm2
15595 .byte 197,236,86,213 // vorps %ymm5,%ymm2,%ymm2
15596 .byte 196,227,125,25,213,1 // vextractf128 $0x1,%ymm2,%xmm5
15597 .byte 197,209,254,235 // vpaddd %xmm3,%xmm5,%xmm5
15598 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
15599 .byte 196,227,109,24,213,1 // vinsertf128 $0x1,%xmm5,%ymm2,%ymm2
15600 .byte 196,195,109,74,214,64 // vblendvps %ymm4,%ymm14,%ymm2,%ymm2
15601 .byte 196,193,57,109,225 // vpunpckhqdq %xmm9,%xmm8,%xmm4
15602 .byte 196,193,89,105,234 // vpunpckhwd %xmm10,%xmm4,%xmm5
15603 .byte 196,226,121,51,228 // vpmovzxwd %xmm4,%xmm4
15604 .byte 196,227,93,24,229,1 // vinsertf128 $0x1,%xmm5,%ymm4,%ymm4
15605 .byte 196,193,92,84,236 // vandps %ymm12,%ymm4,%ymm5
15606 .byte 197,220,87,229 // vxorps %ymm5,%ymm4,%ymm4
15607 .byte 196,227,125,25,230,1 // vextractf128 $0x1,%ymm4,%xmm6
15608 .byte 196,193,72,87,251 // vxorps %xmm11,%xmm6,%xmm7
15609 .byte 197,17,102,199 // vpcmpgtd %xmm7,%xmm13,%xmm8
15610 .byte 196,193,88,87,251 // vxorps %xmm11,%xmm4,%xmm7
15611 .byte 197,145,102,255 // vpcmpgtd %xmm7,%xmm13,%xmm7
15612 .byte 196,195,69,24,248,1 // vinsertf128 $0x1,%xmm8,%ymm7,%ymm7
15613 .byte 197,185,114,245,16 // vpslld $0x10,%xmm5,%xmm8
15614 .byte 196,227,125,25,237,1 // vextractf128 $0x1,%ymm5,%xmm5
15615 .byte 197,209,114,245,16 // vpslld $0x10,%xmm5,%xmm5
15616 .byte 196,227,61,24,237,1 // vinsertf128 $0x1,%xmm5,%ymm8,%ymm5
15617 .byte 197,217,114,244,13 // vpslld $0xd,%xmm4,%xmm4
15618 .byte 197,201,114,246,13 // vpslld $0xd,%xmm6,%xmm6
15619 .byte 196,227,93,24,230,1 // vinsertf128 $0x1,%xmm6,%ymm4,%ymm4
15620 .byte 197,220,86,229 // vorps %ymm5,%ymm4,%ymm4
15621 .byte 196,227,125,25,229,1 // vextractf128 $0x1,%ymm4,%xmm5
15622 .byte 197,209,254,235 // vpaddd %xmm3,%xmm5,%xmm5
15623 .byte 197,217,254,219 // vpaddd %xmm3,%xmm4,%xmm3
15624 .byte 196,227,101,24,221,1 // vinsertf128 $0x1,%xmm5,%ymm3,%ymm3
15625 .byte 196,195,101,74,222,112 // vblendvps %ymm7,%ymm14,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040015626 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb4bbc642017-04-27 08:59:55 -040015627 .byte 197,252,16,100,36,128 // vmovups -0x80(%rsp),%ymm4
15628 .byte 197,252,16,108,36,160 // vmovups -0x60(%rsp),%ymm5
15629 .byte 197,252,16,116,36,192 // vmovups -0x40(%rsp),%ymm6
15630 .byte 197,252,16,124,36,224 // vmovups -0x20(%rsp),%ymm7
15631 .byte 72,131,196,24 // add $0x18,%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040015632 .byte 255,224 // jmpq *%rax
15633 .byte 197,123,16,4,248 // vmovsd (%rax,%rdi,8),%xmm8
15634 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
15635 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015636 .byte 116,79 // je 3d72 <_sk_load_f16_avx+0x316>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015637 .byte 197,57,22,68,248,8 // vmovhpd 0x8(%rax,%rdi,8),%xmm8,%xmm8
15638 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015639 .byte 114,67 // jb 3d72 <_sk_load_f16_avx+0x316>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015640 .byte 197,251,16,84,248,16 // vmovsd 0x10(%rax,%rdi,8),%xmm2
15641 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015642 .byte 116,68 // je 3d7f <_sk_load_f16_avx+0x323>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015643 .byte 197,233,22,84,248,24 // vmovhpd 0x18(%rax,%rdi,8),%xmm2,%xmm2
15644 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015645 .byte 114,56 // jb 3d7f <_sk_load_f16_avx+0x323>
Mike Kleind0ce1482017-04-19 17:19:30 -040015646 .byte 197,251,16,76,248,32 // vmovsd 0x20(%rax,%rdi,8),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040015647 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015648 .byte 15,132,70,253,255,255 // je 3a9d <_sk_load_f16_avx+0x41>
Mike Kleind0ce1482017-04-19 17:19:30 -040015649 .byte 197,241,22,76,248,40 // vmovhpd 0x28(%rax,%rdi,8),%xmm1,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040015650 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015651 .byte 15,130,54,253,255,255 // jb 3a9d <_sk_load_f16_avx+0x41>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015652 .byte 197,122,126,76,248,48 // vmovq 0x30(%rax,%rdi,8),%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040015653 .byte 233,43,253,255,255 // jmpq 3a9d <_sk_load_f16_avx+0x41>
Mike Kleind0ce1482017-04-19 17:19:30 -040015654 .byte 197,241,87,201 // vxorpd %xmm1,%xmm1,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040015655 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040015656 .byte 233,30,253,255,255 // jmpq 3a9d <_sk_load_f16_avx+0x41>
Mike Kleind0ce1482017-04-19 17:19:30 -040015657 .byte 197,241,87,201 // vxorpd %xmm1,%xmm1,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040015658 .byte 233,21,253,255,255 // jmpq 3a9d <_sk_load_f16_avx+0x41>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015659
Mike Klein5f055f02017-04-06 20:02:11 -040015660HIDDEN _sk_gather_f16_avx
15661.globl _sk_gather_f16_avx
Mike Klein86714282017-04-13 17:37:38 -040015662FUNCTION(_sk_gather_f16_avx)
Mike Klein5f055f02017-04-06 20:02:11 -040015663_sk_gather_f16_avx:
15664 .byte 65,87 // push %r15
15665 .byte 65,86 // push %r14
15666 .byte 65,84 // push %r12
15667 .byte 83 // push %rbx
Mike Kleind0ce1482017-04-19 17:19:30 -040015668 .byte 72,131,236,24 // sub $0x18,%rsp
15669 .byte 197,252,17,124,36,224 // vmovups %ymm7,-0x20(%rsp)
15670 .byte 197,252,17,116,36,192 // vmovups %ymm6,-0x40(%rsp)
15671 .byte 197,252,17,108,36,160 // vmovups %ymm5,-0x60(%rsp)
Mike Kleinb4bbc642017-04-27 08:59:55 -040015672 .byte 197,254,127,100,36,128 // vmovdqu %ymm4,-0x80(%rsp)
Mike Klein5f055f02017-04-06 20:02:11 -040015673 .byte 72,173 // lods %ds:(%rsi),%rax
15674 .byte 76,139,0 // mov (%rax),%r8
15675 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
15676 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
15677 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
15678 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
15679 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
15680 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
15681 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
15682 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
15683 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
15684 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
15685 .byte 65,137,193 // mov %eax,%r9d
15686 .byte 72,193,232,32 // shr $0x20,%rax
15687 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
15688 .byte 69,137,211 // mov %r10d,%r11d
15689 .byte 73,193,234,32 // shr $0x20,%r10
15690 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
15691 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
15692 .byte 65,137,222 // mov %ebx,%r14d
15693 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
15694 .byte 69,137,252 // mov %r15d,%r12d
15695 .byte 73,193,239,32 // shr $0x20,%r15
15696 .byte 72,193,235,32 // shr $0x20,%rbx
15697 .byte 196,193,122,126,4,216 // vmovq (%r8,%rbx,8),%xmm0
15698 .byte 196,129,122,126,12,240 // vmovq (%r8,%r14,8),%xmm1
15699 .byte 197,113,108,200 // vpunpcklqdq %xmm0,%xmm1,%xmm9
15700 .byte 196,129,122,126,12,248 // vmovq (%r8,%r15,8),%xmm1
15701 .byte 196,129,122,126,20,224 // vmovq (%r8,%r12,8),%xmm2
15702 .byte 197,233,108,201 // vpunpcklqdq %xmm1,%xmm2,%xmm1
15703 .byte 196,129,122,126,20,208 // vmovq (%r8,%r10,8),%xmm2
15704 .byte 196,129,122,126,28,216 // vmovq (%r8,%r11,8),%xmm3
15705 .byte 197,97,108,210 // vpunpcklqdq %xmm2,%xmm3,%xmm10
15706 .byte 196,65,122,126,4,192 // vmovq (%r8,%rax,8),%xmm8
15707 .byte 196,129,122,126,28,200 // vmovq (%r8,%r9,8),%xmm3
15708 .byte 196,193,97,108,216 // vpunpcklqdq %xmm8,%xmm3,%xmm3
15709 .byte 197,177,97,193 // vpunpcklwd %xmm1,%xmm9,%xmm0
15710 .byte 197,177,105,201 // vpunpckhwd %xmm1,%xmm9,%xmm1
15711 .byte 197,169,97,211 // vpunpcklwd %xmm3,%xmm10,%xmm2
15712 .byte 197,169,105,219 // vpunpckhwd %xmm3,%xmm10,%xmm3
Mike Kleinb4bbc642017-04-27 08:59:55 -040015713 .byte 197,121,97,249 // vpunpcklwd %xmm1,%xmm0,%xmm15
Mike Klein5f055f02017-04-06 20:02:11 -040015714 .byte 197,121,105,193 // vpunpckhwd %xmm1,%xmm0,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040015715 .byte 197,233,97,203 // vpunpcklwd %xmm3,%xmm2,%xmm1
15716 .byte 197,105,105,203 // vpunpckhwd %xmm3,%xmm2,%xmm9
15717 .byte 197,129,108,193 // vpunpcklqdq %xmm1,%xmm15,%xmm0
15718 .byte 197,233,239,210 // vpxor %xmm2,%xmm2,%xmm2
15719 .byte 197,249,105,210 // vpunpckhwd %xmm2,%xmm0,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015720 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
15721 .byte 196,227,125,24,194,1 // vinsertf128 $0x1,%xmm2,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040015722 .byte 196,98,125,24,37,93,24,0,0 // vbroadcastss 0x185d(%rip),%ymm12 # 56f0 <_sk_callback_avx+0x3de>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015723 .byte 196,193,124,84,212 // vandps %ymm12,%ymm0,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015724 .byte 197,252,87,194 // vxorps %ymm2,%ymm0,%ymm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040015725 .byte 196,195,125,25,198,1 // vextractf128 $0x1,%ymm0,%xmm14
Mike Kleinfb11acd2017-05-01 14:22:10 -040015726 .byte 196,98,121,24,29,73,24,0,0 // vbroadcastss 0x1849(%rip),%xmm11 # 56f4 <_sk_callback_avx+0x3e2>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015727 .byte 196,193,8,87,219 // vxorps %xmm11,%xmm14,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040015728 .byte 196,98,121,24,45,63,24,0,0 // vbroadcastss 0x183f(%rip),%xmm13 # 56f8 <_sk_callback_avx+0x3e6>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015729 .byte 197,145,102,219 // vpcmpgtd %xmm3,%xmm13,%xmm3
15730 .byte 196,65,120,87,211 // vxorps %xmm11,%xmm0,%xmm10
15731 .byte 196,65,17,102,210 // vpcmpgtd %xmm10,%xmm13,%xmm10
15732 .byte 196,99,45,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm10,%ymm10
15733 .byte 197,225,114,242,16 // vpslld $0x10,%xmm2,%xmm3
15734 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015735 .byte 197,233,114,242,16 // vpslld $0x10,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040015736 .byte 196,227,101,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm3,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015737 .byte 197,249,114,240,13 // vpslld $0xd,%xmm0,%xmm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040015738 .byte 196,193,97,114,246,13 // vpslld $0xd,%xmm14,%xmm3
15739 .byte 196,227,125,24,195,1 // vinsertf128 $0x1,%xmm3,%ymm0,%ymm0
15740 .byte 197,252,86,194 // vorps %ymm2,%ymm0,%ymm0
15741 .byte 196,227,125,25,194,1 // vextractf128 $0x1,%ymm0,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040015742 .byte 196,226,121,24,29,245,23,0,0 // vbroadcastss 0x17f5(%rip),%xmm3 # 56fc <_sk_callback_avx+0x3ea>
Mike Kleind0ce1482017-04-19 17:19:30 -040015743 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040015744 .byte 197,249,254,195 // vpaddd %xmm3,%xmm0,%xmm0
15745 .byte 196,227,125,24,194,1 // vinsertf128 $0x1,%xmm2,%ymm0,%ymm0
15746 .byte 196,65,12,87,246 // vxorps %ymm14,%ymm14,%ymm14
15747 .byte 196,195,125,74,198,160 // vblendvps %ymm10,%ymm14,%ymm0,%ymm0
15748 .byte 197,129,109,201 // vpunpckhqdq %xmm1,%xmm15,%xmm1
15749 .byte 197,217,239,228 // vpxor %xmm4,%xmm4,%xmm4
15750 .byte 197,241,105,212 // vpunpckhwd %xmm4,%xmm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015751 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
15752 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040015753 .byte 196,193,116,84,212 // vandps %ymm12,%ymm1,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015754 .byte 197,244,87,202 // vxorps %ymm2,%ymm1,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040015755 .byte 196,195,125,25,202,1 // vextractf128 $0x1,%ymm1,%xmm10
15756 .byte 196,193,40,87,251 // vxorps %xmm11,%xmm10,%xmm7
15757 .byte 197,145,102,255 // vpcmpgtd %xmm7,%xmm13,%xmm7
15758 .byte 196,193,112,87,243 // vxorps %xmm11,%xmm1,%xmm6
15759 .byte 197,145,102,246 // vpcmpgtd %xmm6,%xmm13,%xmm6
15760 .byte 196,227,77,24,247,1 // vinsertf128 $0x1,%xmm7,%ymm6,%ymm6
15761 .byte 197,193,114,242,16 // vpslld $0x10,%xmm2,%xmm7
15762 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015763 .byte 197,233,114,242,16 // vpslld $0x10,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040015764 .byte 196,227,69,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm7,%ymm2
Mike Klein5f055f02017-04-06 20:02:11 -040015765 .byte 197,241,114,241,13 // vpslld $0xd,%xmm1,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040015766 .byte 196,193,65,114,242,13 // vpslld $0xd,%xmm10,%xmm7
15767 .byte 196,227,117,24,207,1 // vinsertf128 $0x1,%xmm7,%ymm1,%ymm1
15768 .byte 197,244,86,202 // vorps %ymm2,%ymm1,%ymm1
15769 .byte 196,227,125,25,202,1 // vextractf128 $0x1,%ymm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015770 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040015771 .byte 197,241,254,203 // vpaddd %xmm3,%xmm1,%xmm1
15772 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
15773 .byte 196,195,117,74,206,96 // vblendvps %ymm6,%ymm14,%ymm1,%ymm1
15774 .byte 196,193,57,108,209 // vpunpcklqdq %xmm9,%xmm8,%xmm2
15775 .byte 197,233,105,244 // vpunpckhwd %xmm4,%xmm2,%xmm6
15776 .byte 196,65,41,239,210 // vpxor %xmm10,%xmm10,%xmm10
Mike Kleind0ce1482017-04-19 17:19:30 -040015777 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040015778 .byte 196,227,109,24,214,1 // vinsertf128 $0x1,%xmm6,%ymm2,%ymm2
15779 .byte 196,193,108,84,244 // vandps %ymm12,%ymm2,%ymm6
15780 .byte 197,236,87,214 // vxorps %ymm6,%ymm2,%ymm2
15781 .byte 196,227,125,25,215,1 // vextractf128 $0x1,%ymm2,%xmm7
15782 .byte 196,193,64,87,235 // vxorps %xmm11,%xmm7,%xmm5
15783 .byte 197,145,102,237 // vpcmpgtd %xmm5,%xmm13,%xmm5
15784 .byte 196,193,104,87,227 // vxorps %xmm11,%xmm2,%xmm4
15785 .byte 197,145,102,228 // vpcmpgtd %xmm4,%xmm13,%xmm4
15786 .byte 196,227,93,24,229,1 // vinsertf128 $0x1,%xmm5,%ymm4,%ymm4
15787 .byte 197,209,114,246,16 // vpslld $0x10,%xmm6,%xmm5
15788 .byte 196,227,125,25,246,1 // vextractf128 $0x1,%ymm6,%xmm6
15789 .byte 197,201,114,246,16 // vpslld $0x10,%xmm6,%xmm6
15790 .byte 196,227,85,24,238,1 // vinsertf128 $0x1,%xmm6,%ymm5,%ymm5
Mike Klein5f055f02017-04-06 20:02:11 -040015791 .byte 197,233,114,242,13 // vpslld $0xd,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040015792 .byte 197,201,114,247,13 // vpslld $0xd,%xmm7,%xmm6
15793 .byte 196,227,109,24,214,1 // vinsertf128 $0x1,%xmm6,%ymm2,%ymm2
15794 .byte 197,236,86,213 // vorps %ymm5,%ymm2,%ymm2
15795 .byte 196,227,125,25,213,1 // vextractf128 $0x1,%ymm2,%xmm5
15796 .byte 197,209,254,235 // vpaddd %xmm3,%xmm5,%xmm5
15797 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040015798 .byte 196,227,109,24,213,1 // vinsertf128 $0x1,%xmm5,%ymm2,%ymm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040015799 .byte 196,195,109,74,214,64 // vblendvps %ymm4,%ymm14,%ymm2,%ymm2
15800 .byte 196,193,57,109,225 // vpunpckhqdq %xmm9,%xmm8,%xmm4
15801 .byte 196,193,89,105,234 // vpunpckhwd %xmm10,%xmm4,%xmm5
Mike Kleind0ce1482017-04-19 17:19:30 -040015802 .byte 196,226,121,51,228 // vpmovzxwd %xmm4,%xmm4
15803 .byte 196,227,93,24,229,1 // vinsertf128 $0x1,%xmm5,%ymm4,%ymm4
Mike Kleinb4bbc642017-04-27 08:59:55 -040015804 .byte 196,193,92,84,236 // vandps %ymm12,%ymm4,%ymm5
Mike Klein097d0932017-04-20 09:11:53 -040015805 .byte 197,220,87,229 // vxorps %ymm5,%ymm4,%ymm4
Mike Kleind0ce1482017-04-19 17:19:30 -040015806 .byte 196,227,125,25,230,1 // vextractf128 $0x1,%ymm4,%xmm6
Mike Kleinb4bbc642017-04-27 08:59:55 -040015807 .byte 196,193,72,87,251 // vxorps %xmm11,%xmm6,%xmm7
15808 .byte 197,17,102,199 // vpcmpgtd %xmm7,%xmm13,%xmm8
15809 .byte 196,193,88,87,251 // vxorps %xmm11,%xmm4,%xmm7
15810 .byte 197,145,102,255 // vpcmpgtd %xmm7,%xmm13,%xmm7
15811 .byte 196,195,69,24,248,1 // vinsertf128 $0x1,%xmm8,%ymm7,%ymm7
15812 .byte 197,185,114,245,16 // vpslld $0x10,%xmm5,%xmm8
15813 .byte 196,227,125,25,237,1 // vextractf128 $0x1,%ymm5,%xmm5
Mike Klein097d0932017-04-20 09:11:53 -040015814 .byte 197,209,114,245,16 // vpslld $0x10,%xmm5,%xmm5
Mike Kleinb4bbc642017-04-27 08:59:55 -040015815 .byte 196,227,61,24,237,1 // vinsertf128 $0x1,%xmm5,%ymm8,%ymm5
Mike Kleind0ce1482017-04-19 17:19:30 -040015816 .byte 197,217,114,244,13 // vpslld $0xd,%xmm4,%xmm4
Mike Kleinb4bbc642017-04-27 08:59:55 -040015817 .byte 197,201,114,246,13 // vpslld $0xd,%xmm6,%xmm6
15818 .byte 196,227,93,24,230,1 // vinsertf128 $0x1,%xmm6,%ymm4,%ymm4
15819 .byte 197,220,86,229 // vorps %ymm5,%ymm4,%ymm4
15820 .byte 196,227,125,25,229,1 // vextractf128 $0x1,%ymm4,%xmm5
15821 .byte 197,209,254,235 // vpaddd %xmm3,%xmm5,%xmm5
15822 .byte 197,217,254,219 // vpaddd %xmm3,%xmm4,%xmm3
15823 .byte 196,227,101,24,221,1 // vinsertf128 $0x1,%xmm5,%ymm3,%ymm3
15824 .byte 196,195,101,74,222,112 // vblendvps %ymm7,%ymm14,%ymm3,%ymm3
Mike Klein5f055f02017-04-06 20:02:11 -040015825 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleind0ce1482017-04-19 17:19:30 -040015826 .byte 197,252,16,100,36,128 // vmovups -0x80(%rsp),%ymm4
15827 .byte 197,252,16,108,36,160 // vmovups -0x60(%rsp),%ymm5
15828 .byte 197,252,16,116,36,192 // vmovups -0x40(%rsp),%ymm6
15829 .byte 197,252,16,124,36,224 // vmovups -0x20(%rsp),%ymm7
15830 .byte 72,131,196,24 // add $0x18,%rsp
Mike Klein5f055f02017-04-06 20:02:11 -040015831 .byte 91 // pop %rbx
15832 .byte 65,92 // pop %r12
15833 .byte 65,94 // pop %r14
15834 .byte 65,95 // pop %r15
15835 .byte 255,224 // jmpq *%rax
15836
Mike Klein7c4af542017-03-29 18:21:14 -040015837HIDDEN _sk_store_f16_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015838.globl _sk_store_f16_avx
Mike Klein86714282017-04-13 17:37:38 -040015839FUNCTION(_sk_store_f16_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015840_sk_store_f16_avx:
Mike Kleind0ce1482017-04-19 17:19:30 -040015841 .byte 72,131,236,88 // sub $0x58,%rsp
15842 .byte 197,252,17,124,36,32 // vmovups %ymm7,0x20(%rsp)
15843 .byte 197,252,17,52,36 // vmovups %ymm6,(%rsp)
15844 .byte 197,252,17,108,36,224 // vmovups %ymm5,-0x20(%rsp)
15845 .byte 197,252,17,100,36,192 // vmovups %ymm4,-0x40(%rsp)
Mike Kleinfb11acd2017-05-01 14:22:10 -040015846 .byte 196,98,125,24,13,14,22,0,0 // vbroadcastss 0x160e(%rip),%ymm9 # 5700 <_sk_callback_avx+0x3ee>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015847 .byte 196,65,124,84,209 // vandps %ymm9,%ymm0,%ymm10
15848 .byte 197,252,17,68,36,128 // vmovups %ymm0,-0x80(%rsp)
Mike Kleind0ce1482017-04-19 17:19:30 -040015849 .byte 196,65,124,87,218 // vxorps %ymm10,%ymm0,%ymm11
Mike Klein097d0932017-04-20 09:11:53 -040015850 .byte 196,67,125,25,220,1 // vextractf128 $0x1,%ymm11,%xmm12
Mike Kleinfb11acd2017-05-01 14:22:10 -040015851 .byte 196,98,121,24,5,243,21,0,0 // vbroadcastss 0x15f3(%rip),%xmm8 # 5704 <_sk_callback_avx+0x3f2>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015852 .byte 196,65,57,102,236 // vpcmpgtd %xmm12,%xmm8,%xmm13
15853 .byte 196,65,57,102,243 // vpcmpgtd %xmm11,%xmm8,%xmm14
Mike Klein097d0932017-04-20 09:11:53 -040015854 .byte 196,67,13,24,237,1 // vinsertf128 $0x1,%xmm13,%ymm14,%ymm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040015855 .byte 196,193,9,114,210,16 // vpsrld $0x10,%xmm10,%xmm14
15856 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
15857 .byte 196,193,41,114,210,16 // vpsrld $0x10,%xmm10,%xmm10
15858 .byte 196,67,13,24,242,1 // vinsertf128 $0x1,%xmm10,%ymm14,%ymm14
Mike Klein097d0932017-04-20 09:11:53 -040015859 .byte 196,193,33,114,211,13 // vpsrld $0xd,%xmm11,%xmm11
15860 .byte 196,193,25,114,212,13 // vpsrld $0xd,%xmm12,%xmm12
Mike Kleinfb11acd2017-05-01 14:22:10 -040015861 .byte 196,98,125,24,21,186,21,0,0 // vbroadcastss 0x15ba(%rip),%ymm10 # 5708 <_sk_callback_avx+0x3f6>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015862 .byte 196,65,12,86,242 // vorps %ymm10,%ymm14,%ymm14
Mike Klein097d0932017-04-20 09:11:53 -040015863 .byte 196,67,125,25,247,1 // vextractf128 $0x1,%ymm14,%xmm15
Mike Kleinb4bbc642017-04-27 08:59:55 -040015864 .byte 196,65,1,254,228 // vpaddd %xmm12,%xmm15,%xmm12
15865 .byte 196,65,9,254,219 // vpaddd %xmm11,%xmm14,%xmm11
15866 .byte 196,67,37,24,228,1 // vinsertf128 $0x1,%xmm12,%ymm11,%ymm12
15867 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
15868 .byte 196,99,29,74,224,208 // vblendvps %ymm13,%ymm0,%ymm12,%ymm12
15869 .byte 196,65,116,84,233 // vandps %ymm9,%ymm1,%ymm13
15870 .byte 197,252,17,76,36,160 // vmovups %ymm1,-0x60(%rsp)
15871 .byte 196,65,116,87,245 // vxorps %ymm13,%ymm1,%ymm14
15872 .byte 196,67,125,25,247,1 // vextractf128 $0x1,%ymm14,%xmm15
15873 .byte 196,193,57,102,255 // vpcmpgtd %xmm15,%xmm8,%xmm7
15874 .byte 196,65,57,102,222 // vpcmpgtd %xmm14,%xmm8,%xmm11
15875 .byte 196,227,37,24,255,1 // vinsertf128 $0x1,%xmm7,%ymm11,%ymm7
15876 .byte 196,193,33,114,213,16 // vpsrld $0x10,%xmm13,%xmm11
Mike Klein097d0932017-04-20 09:11:53 -040015877 .byte 196,99,125,25,238,1 // vextractf128 $0x1,%ymm13,%xmm6
Mike Kleind0ce1482017-04-19 17:19:30 -040015878 .byte 197,201,114,214,16 // vpsrld $0x10,%xmm6,%xmm6
Mike Kleinb4bbc642017-04-27 08:59:55 -040015879 .byte 196,227,37,24,246,1 // vinsertf128 $0x1,%xmm6,%ymm11,%ymm6
15880 .byte 196,193,33,114,215,13 // vpsrld $0xd,%xmm15,%xmm11
15881 .byte 196,193,76,86,242 // vorps %ymm10,%ymm6,%ymm6
Mike Klein097d0932017-04-20 09:11:53 -040015882 .byte 196,227,125,25,245,1 // vextractf128 $0x1,%ymm6,%xmm5
Mike Kleinb4bbc642017-04-27 08:59:55 -040015883 .byte 196,193,81,254,235 // vpaddd %xmm11,%xmm5,%xmm5
15884 .byte 196,193,89,114,214,13 // vpsrld $0xd,%xmm14,%xmm4
15885 .byte 197,201,254,228 // vpaddd %xmm4,%xmm6,%xmm4
15886 .byte 196,227,93,24,229,1 // vinsertf128 $0x1,%xmm5,%ymm4,%ymm4
15887 .byte 196,99,93,74,232,112 // vblendvps %ymm7,%ymm0,%ymm4,%ymm13
15888 .byte 196,193,108,84,225 // vandps %ymm9,%ymm2,%ymm4
15889 .byte 197,236,87,236 // vxorps %ymm4,%ymm2,%ymm5
15890 .byte 196,227,125,25,238,1 // vextractf128 $0x1,%ymm5,%xmm6
15891 .byte 197,185,102,254 // vpcmpgtd %xmm6,%xmm8,%xmm7
15892 .byte 197,57,102,221 // vpcmpgtd %xmm5,%xmm8,%xmm11
15893 .byte 196,227,37,24,255,1 // vinsertf128 $0x1,%xmm7,%ymm11,%ymm7
15894 .byte 197,161,114,212,16 // vpsrld $0x10,%xmm4,%xmm11
15895 .byte 196,227,125,25,228,1 // vextractf128 $0x1,%ymm4,%xmm4
15896 .byte 197,217,114,212,16 // vpsrld $0x10,%xmm4,%xmm4
15897 .byte 196,227,37,24,228,1 // vinsertf128 $0x1,%xmm4,%ymm11,%ymm4
Mike Klein097d0932017-04-20 09:11:53 -040015898 .byte 197,201,114,214,13 // vpsrld $0xd,%xmm6,%xmm6
Mike Kleinb4bbc642017-04-27 08:59:55 -040015899 .byte 196,193,92,86,226 // vorps %ymm10,%ymm4,%ymm4
15900 .byte 196,227,125,25,225,1 // vextractf128 $0x1,%ymm4,%xmm1
15901 .byte 197,241,254,206 // vpaddd %xmm6,%xmm1,%xmm1
15902 .byte 197,209,114,213,13 // vpsrld $0xd,%xmm5,%xmm5
15903 .byte 197,217,254,229 // vpaddd %xmm5,%xmm4,%xmm4
15904 .byte 196,227,93,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm4,%ymm1
15905 .byte 196,99,117,74,216,112 // vblendvps %ymm7,%ymm0,%ymm1,%ymm11
15906 .byte 196,193,100,84,225 // vandps %ymm9,%ymm3,%ymm4
15907 .byte 197,228,87,236 // vxorps %ymm4,%ymm3,%ymm5
15908 .byte 196,227,125,25,238,1 // vextractf128 $0x1,%ymm5,%xmm6
15909 .byte 197,185,102,254 // vpcmpgtd %xmm6,%xmm8,%xmm7
15910 .byte 197,57,102,197 // vpcmpgtd %xmm5,%xmm8,%xmm8
15911 .byte 196,227,61,24,255,1 // vinsertf128 $0x1,%xmm7,%ymm8,%ymm7
15912 .byte 197,185,114,212,16 // vpsrld $0x10,%xmm4,%xmm8
15913 .byte 196,227,125,25,228,1 // vextractf128 $0x1,%ymm4,%xmm4
15914 .byte 197,217,114,212,16 // vpsrld $0x10,%xmm4,%xmm4
15915 .byte 196,227,61,24,228,1 // vinsertf128 $0x1,%xmm4,%ymm8,%ymm4
15916 .byte 196,193,92,86,226 // vorps %ymm10,%ymm4,%ymm4
15917 .byte 197,201,114,214,13 // vpsrld $0xd,%xmm6,%xmm6
15918 .byte 196,227,125,25,225,1 // vextractf128 $0x1,%ymm4,%xmm1
15919 .byte 197,241,254,206 // vpaddd %xmm6,%xmm1,%xmm1
15920 .byte 197,209,114,213,13 // vpsrld $0xd,%xmm5,%xmm5
15921 .byte 197,217,254,229 // vpaddd %xmm5,%xmm4,%xmm4
15922 .byte 196,227,93,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm4,%ymm1
15923 .byte 196,227,117,74,200,112 // vblendvps %ymm7,%ymm0,%ymm1,%ymm1
15924 .byte 196,99,125,25,224,1 // vextractf128 $0x1,%ymm12,%xmm0
15925 .byte 196,226,25,43,192 // vpackusdw %xmm0,%xmm12,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040015926 .byte 196,99,125,25,236,1 // vextractf128 $0x1,%ymm13,%xmm4
15927 .byte 196,226,17,43,228 // vpackusdw %xmm4,%xmm13,%xmm4
15928 .byte 196,99,125,25,221,1 // vextractf128 $0x1,%ymm11,%xmm5
Mike Kleinb4bbc642017-04-27 08:59:55 -040015929 .byte 196,226,33,43,245 // vpackusdw %xmm5,%xmm11,%xmm6
15930 .byte 196,227,125,25,205,1 // vextractf128 $0x1,%ymm1,%xmm5
15931 .byte 196,226,113,43,205 // vpackusdw %xmm5,%xmm1,%xmm1
15932 .byte 197,249,97,236 // vpunpcklwd %xmm4,%xmm0,%xmm5
15933 .byte 197,249,105,196 // vpunpckhwd %xmm4,%xmm0,%xmm0
15934 .byte 197,201,97,225 // vpunpcklwd %xmm1,%xmm6,%xmm4
15935 .byte 197,201,105,201 // vpunpckhwd %xmm1,%xmm6,%xmm1
15936 .byte 197,81,98,220 // vpunpckldq %xmm4,%xmm5,%xmm11
15937 .byte 197,81,106,212 // vpunpckhdq %xmm4,%xmm5,%xmm10
15938 .byte 197,121,98,201 // vpunpckldq %xmm1,%xmm0,%xmm9
15939 .byte 197,121,106,193 // vpunpckhdq %xmm1,%xmm0,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040015940 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb4bbc642017-04-27 08:59:55 -040015941 .byte 72,139,0 // mov (%rax),%rax
15942 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015943 .byte 117,66 // jne 432c <_sk_store_f16_avx+0x25e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015944 .byte 197,120,17,28,248 // vmovups %xmm11,(%rax,%rdi,8)
15945 .byte 197,120,17,84,248,16 // vmovups %xmm10,0x10(%rax,%rdi,8)
15946 .byte 197,120,17,76,248,32 // vmovups %xmm9,0x20(%rax,%rdi,8)
15947 .byte 197,122,127,68,248,48 // vmovdqu %xmm8,0x30(%rax,%rdi,8)
15948 .byte 72,173 // lods %ds:(%rsi),%rax
15949 .byte 197,252,16,68,36,128 // vmovups -0x80(%rsp),%ymm0
15950 .byte 197,252,16,76,36,160 // vmovups -0x60(%rsp),%ymm1
Mike Kleind0ce1482017-04-19 17:19:30 -040015951 .byte 197,252,16,100,36,192 // vmovups -0x40(%rsp),%ymm4
15952 .byte 197,252,16,108,36,224 // vmovups -0x20(%rsp),%ymm5
15953 .byte 197,252,16,52,36 // vmovups (%rsp),%ymm6
15954 .byte 197,252,16,124,36,32 // vmovups 0x20(%rsp),%ymm7
15955 .byte 72,131,196,88 // add $0x58,%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040015956 .byte 255,224 // jmpq *%rax
Mike Kleinb4bbc642017-04-27 08:59:55 -040015957 .byte 197,121,214,28,248 // vmovq %xmm11,(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015958 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015959 .byte 116,202 // je 4301 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015960 .byte 197,121,23,92,248,8 // vmovhpd %xmm11,0x8(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015961 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015962 .byte 114,190 // jb 4301 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015963 .byte 197,121,214,84,248,16 // vmovq %xmm10,0x10(%rax,%rdi,8)
Mike Kleinfb11acd2017-05-01 14:22:10 -040015964 .byte 116,182 // je 4301 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015965 .byte 197,121,23,84,248,24 // vmovhpd %xmm10,0x18(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015966 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015967 .byte 114,170 // jb 4301 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015968 .byte 197,121,214,76,248,32 // vmovq %xmm9,0x20(%rax,%rdi,8)
Mike Kleinfb11acd2017-05-01 14:22:10 -040015969 .byte 116,162 // je 4301 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015970 .byte 197,121,23,76,248,40 // vmovhpd %xmm9,0x28(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015971 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015972 .byte 114,150 // jb 4301 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040015973 .byte 197,121,214,68,248,48 // vmovq %xmm8,0x30(%rax,%rdi,8)
Mike Kleinfb11acd2017-05-01 14:22:10 -040015974 .byte 235,142 // jmp 4301 <_sk_store_f16_avx+0x233>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015975
Mike Klein3146bb92017-04-05 14:45:02 -040015976HIDDEN _sk_load_u16_be_avx
15977.globl _sk_load_u16_be_avx
Mike Klein86714282017-04-13 17:37:38 -040015978FUNCTION(_sk_load_u16_be_avx)
Mike Klein3146bb92017-04-05 14:45:02 -040015979_sk_load_u16_be_avx:
15980 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3821732017-04-17 10:58:05 -040015981 .byte 76,139,0 // mov (%rax),%r8
15982 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
Mike Klein3146bb92017-04-05 14:45:02 -040015983 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040015984 .byte 15,133,253,0,0,0 // jne 4486 <_sk_load_u16_be_avx+0x113>
Mike Kleinb3821732017-04-17 10:58:05 -040015985 .byte 196,65,121,16,4,64 // vmovupd (%r8,%rax,2),%xmm8
15986 .byte 196,193,121,16,84,64,16 // vmovupd 0x10(%r8,%rax,2),%xmm2
15987 .byte 196,193,121,16,92,64,32 // vmovupd 0x20(%r8,%rax,2),%xmm3
15988 .byte 196,65,122,111,76,64,48 // vmovdqu 0x30(%r8,%rax,2),%xmm9
Mike Klein3146bb92017-04-05 14:45:02 -040015989 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
15990 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
15991 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
15992 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040015993 .byte 197,121,97,202 // vpunpcklwd %xmm2,%xmm0,%xmm9
Mike Klein3146bb92017-04-05 14:45:02 -040015994 .byte 197,121,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm8
15995 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040015996 .byte 197,113,105,227 // vpunpckhwd %xmm3,%xmm1,%xmm12
15997 .byte 197,177,108,194 // vpunpcklqdq %xmm2,%xmm9,%xmm0
Mike Klein3146bb92017-04-05 14:45:02 -040015998 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
15999 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
16000 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040016001 .byte 196,65,41,239,210 // vpxor %xmm10,%xmm10,%xmm10
16002 .byte 196,193,121,105,202 // vpunpckhwd %xmm10,%xmm0,%xmm1
Mike Klein3146bb92017-04-05 14:45:02 -040016003 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
16004 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
16005 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040016006 .byte 196,98,125,24,29,18,19,0,0 // vbroadcastss 0x1312(%rip),%ymm11 # 570c <_sk_callback_avx+0x3fa>
Mike Kleinfe560a82017-05-01 12:56:35 -040016007 .byte 196,193,124,89,195 // vmulps %ymm11,%ymm0,%ymm0
16008 .byte 197,177,109,202 // vpunpckhqdq %xmm2,%xmm9,%xmm1
Mike Klein3146bb92017-04-05 14:45:02 -040016009 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
16010 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
16011 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040016012 .byte 196,193,113,105,210 // vpunpckhwd %xmm10,%xmm1,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040016013 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
16014 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
16015 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040016016 .byte 196,193,116,89,203 // vmulps %ymm11,%ymm1,%ymm1
16017 .byte 196,193,57,108,212 // vpunpcklqdq %xmm12,%xmm8,%xmm2
16018 .byte 197,225,113,242,8 // vpsllw $0x8,%xmm2,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040016019 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040016020 .byte 197,225,235,210 // vpor %xmm2,%xmm3,%xmm2
16021 .byte 196,193,105,105,218 // vpunpckhwd %xmm10,%xmm2,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040016022 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040016023 .byte 196,227,109,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm2,%ymm2
Mike Klein3146bb92017-04-05 14:45:02 -040016024 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040016025 .byte 196,193,108,89,211 // vmulps %ymm11,%ymm2,%ymm2
16026 .byte 196,193,57,109,220 // vpunpckhqdq %xmm12,%xmm8,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040016027 .byte 197,185,113,243,8 // vpsllw $0x8,%xmm3,%xmm8
16028 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
16029 .byte 197,185,235,219 // vpor %xmm3,%xmm8,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040016030 .byte 196,65,97,105,194 // vpunpckhwd %xmm10,%xmm3,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040016031 .byte 196,226,121,51,219 // vpmovzxwd %xmm3,%xmm3
16032 .byte 196,195,101,24,216,1 // vinsertf128 $0x1,%xmm8,%ymm3,%ymm3
16033 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040016034 .byte 196,193,100,89,219 // vmulps %ymm11,%ymm3,%ymm3
Mike Klein3146bb92017-04-05 14:45:02 -040016035 .byte 72,173 // lods %ds:(%rsi),%rax
16036 .byte 255,224 // jmpq *%rax
Mike Kleinb3821732017-04-17 10:58:05 -040016037 .byte 196,65,123,16,4,64 // vmovsd (%r8,%rax,2),%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040016038 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
16039 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016040 .byte 116,85 // je 44ec <_sk_load_u16_be_avx+0x179>
Mike Kleinb3821732017-04-17 10:58:05 -040016041 .byte 196,65,57,22,68,64,8 // vmovhpd 0x8(%r8,%rax,2),%xmm8,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040016042 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016043 .byte 114,72 // jb 44ec <_sk_load_u16_be_avx+0x179>
Mike Kleinb3821732017-04-17 10:58:05 -040016044 .byte 196,193,123,16,84,64,16 // vmovsd 0x10(%r8,%rax,2),%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040016045 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016046 .byte 116,72 // je 44f9 <_sk_load_u16_be_avx+0x186>
Mike Kleinb3821732017-04-17 10:58:05 -040016047 .byte 196,193,105,22,84,64,24 // vmovhpd 0x18(%r8,%rax,2),%xmm2,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040016048 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016049 .byte 114,59 // jb 44f9 <_sk_load_u16_be_avx+0x186>
Mike Kleinb3821732017-04-17 10:58:05 -040016050 .byte 196,193,123,16,92,64,32 // vmovsd 0x20(%r8,%rax,2),%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040016051 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016052 .byte 15,132,213,254,255,255 // je 43a4 <_sk_load_u16_be_avx+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040016053 .byte 196,193,97,22,92,64,40 // vmovhpd 0x28(%r8,%rax,2),%xmm3,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040016054 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016055 .byte 15,130,196,254,255,255 // jb 43a4 <_sk_load_u16_be_avx+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040016056 .byte 196,65,122,126,76,64,48 // vmovq 0x30(%r8,%rax,2),%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016057 .byte 233,184,254,255,255 // jmpq 43a4 <_sk_load_u16_be_avx+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040016058 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
16059 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040016060 .byte 233,171,254,255,255 // jmpq 43a4 <_sk_load_u16_be_avx+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040016061 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040016062 .byte 233,162,254,255,255 // jmpq 43a4 <_sk_load_u16_be_avx+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040016063
16064HIDDEN _sk_load_rgb_u16_be_avx
16065.globl _sk_load_rgb_u16_be_avx
16066FUNCTION(_sk_load_rgb_u16_be_avx)
16067_sk_load_rgb_u16_be_avx:
16068 .byte 72,173 // lods %ds:(%rsi),%rax
16069 .byte 76,139,0 // mov (%rax),%r8
16070 .byte 72,141,4,127 // lea (%rdi,%rdi,2),%rax
16071 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016072 .byte 15,133,243,0,0,0 // jne 4607 <_sk_load_rgb_u16_be_avx+0x105>
Mike Kleinb3821732017-04-17 10:58:05 -040016073 .byte 196,193,122,111,4,64 // vmovdqu (%r8,%rax,2),%xmm0
16074 .byte 196,193,122,111,84,64,12 // vmovdqu 0xc(%r8,%rax,2),%xmm2
16075 .byte 196,193,122,111,76,64,24 // vmovdqu 0x18(%r8,%rax,2),%xmm1
16076 .byte 196,193,122,111,92,64,32 // vmovdqu 0x20(%r8,%rax,2),%xmm3
16077 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
16078 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
16079 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
16080 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
16081 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
16082 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
16083 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
16084 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
16085 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
16086 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
16087 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
16088 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040016089 .byte 197,113,105,211 // vpunpckhwd %xmm3,%xmm1,%xmm10
Mike Kleinb3821732017-04-17 10:58:05 -040016090 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
16091 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
16092 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
16093 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
16094 .byte 196,65,25,239,228 // vpxor %xmm12,%xmm12,%xmm12
16095 .byte 196,193,121,105,204 // vpunpckhwd %xmm12,%xmm0,%xmm1
16096 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
16097 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
16098 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040016099 .byte 196,98,125,24,29,114,17,0,0 // vbroadcastss 0x1172(%rip),%ymm11 # 5710 <_sk_callback_avx+0x3fe>
Mike Kleinfe560a82017-05-01 12:56:35 -040016100 .byte 196,193,124,89,195 // vmulps %ymm11,%ymm0,%ymm0
Mike Kleinb3821732017-04-17 10:58:05 -040016101 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
16102 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
16103 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
16104 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
16105 .byte 196,193,113,105,212 // vpunpckhwd %xmm12,%xmm1,%xmm2
16106 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
16107 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
16108 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040016109 .byte 196,193,116,89,203 // vmulps %ymm11,%ymm1,%ymm1
16110 .byte 196,193,49,108,210 // vpunpcklqdq %xmm10,%xmm9,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040016111 .byte 197,225,113,242,8 // vpsllw $0x8,%xmm2,%xmm3
16112 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
16113 .byte 197,225,235,210 // vpor %xmm2,%xmm3,%xmm2
16114 .byte 196,193,105,105,220 // vpunpckhwd %xmm12,%xmm2,%xmm3
16115 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
16116 .byte 196,227,109,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm2,%ymm2
16117 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040016118 .byte 196,193,108,89,211 // vmulps %ymm11,%ymm2,%ymm2
Mike Kleinb3821732017-04-17 10:58:05 -040016119 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016120 .byte 196,226,125,24,29,15,17,0,0 // vbroadcastss 0x110f(%rip),%ymm3 # 5714 <_sk_callback_avx+0x402>
Mike Kleinb3821732017-04-17 10:58:05 -040016121 .byte 255,224 // jmpq *%rax
16122 .byte 196,193,121,110,4,64 // vmovd (%r8,%rax,2),%xmm0
16123 .byte 196,193,121,196,68,64,4,2 // vpinsrw $0x2,0x4(%r8,%rax,2),%xmm0,%xmm0
16124 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016125 .byte 117,5 // jne 4620 <_sk_load_rgb_u16_be_avx+0x11e>
16126 .byte 233,40,255,255,255 // jmpq 4548 <_sk_load_rgb_u16_be_avx+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040016127 .byte 196,193,121,110,76,64,6 // vmovd 0x6(%r8,%rax,2),%xmm1
16128 .byte 196,65,113,196,68,64,10,2 // vpinsrw $0x2,0xa(%r8,%rax,2),%xmm1,%xmm8
16129 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016130 .byte 114,26 // jb 464f <_sk_load_rgb_u16_be_avx+0x14d>
Mike Kleinb3821732017-04-17 10:58:05 -040016131 .byte 196,193,121,110,76,64,12 // vmovd 0xc(%r8,%rax,2),%xmm1
16132 .byte 196,193,113,196,84,64,16,2 // vpinsrw $0x2,0x10(%r8,%rax,2),%xmm1,%xmm2
16133 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016134 .byte 117,10 // jne 4654 <_sk_load_rgb_u16_be_avx+0x152>
16135 .byte 233,249,254,255,255 // jmpq 4548 <_sk_load_rgb_u16_be_avx+0x46>
16136 .byte 233,244,254,255,255 // jmpq 4548 <_sk_load_rgb_u16_be_avx+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040016137 .byte 196,193,121,110,76,64,18 // vmovd 0x12(%r8,%rax,2),%xmm1
16138 .byte 196,65,113,196,76,64,22,2 // vpinsrw $0x2,0x16(%r8,%rax,2),%xmm1,%xmm9
16139 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016140 .byte 114,26 // jb 4683 <_sk_load_rgb_u16_be_avx+0x181>
Mike Kleinb3821732017-04-17 10:58:05 -040016141 .byte 196,193,121,110,76,64,24 // vmovd 0x18(%r8,%rax,2),%xmm1
16142 .byte 196,193,113,196,76,64,28,2 // vpinsrw $0x2,0x1c(%r8,%rax,2),%xmm1,%xmm1
16143 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016144 .byte 117,10 // jne 4688 <_sk_load_rgb_u16_be_avx+0x186>
16145 .byte 233,197,254,255,255 // jmpq 4548 <_sk_load_rgb_u16_be_avx+0x46>
16146 .byte 233,192,254,255,255 // jmpq 4548 <_sk_load_rgb_u16_be_avx+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040016147 .byte 196,193,121,110,92,64,30 // vmovd 0x1e(%r8,%rax,2),%xmm3
16148 .byte 196,65,97,196,92,64,34,2 // vpinsrw $0x2,0x22(%r8,%rax,2),%xmm3,%xmm11
16149 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016150 .byte 114,20 // jb 46b1 <_sk_load_rgb_u16_be_avx+0x1af>
Mike Kleinb3821732017-04-17 10:58:05 -040016151 .byte 196,193,121,110,92,64,36 // vmovd 0x24(%r8,%rax,2),%xmm3
16152 .byte 196,193,97,196,92,64,40,2 // vpinsrw $0x2,0x28(%r8,%rax,2),%xmm3,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040016153 .byte 233,151,254,255,255 // jmpq 4548 <_sk_load_rgb_u16_be_avx+0x46>
16154 .byte 233,146,254,255,255 // jmpq 4548 <_sk_load_rgb_u16_be_avx+0x46>
Mike Klein3146bb92017-04-05 14:45:02 -040016155
16156HIDDEN _sk_store_u16_be_avx
16157.globl _sk_store_u16_be_avx
Mike Klein86714282017-04-13 17:37:38 -040016158FUNCTION(_sk_store_u16_be_avx)
Mike Klein3146bb92017-04-05 14:45:02 -040016159_sk_store_u16_be_avx:
16160 .byte 72,173 // lods %ds:(%rsi),%rax
16161 .byte 76,139,0 // mov (%rax),%r8
Mike Kleinfe560a82017-05-01 12:56:35 -040016162 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016163 .byte 196,98,125,24,5,76,16,0,0 // vbroadcastss 0x104c(%rip),%ymm8 # 5718 <_sk_callback_avx+0x406>
Mike Kleinfe560a82017-05-01 12:56:35 -040016164 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Klein3146bb92017-04-05 14:45:02 -040016165 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
16166 .byte 196,67,125,25,202,1 // vextractf128 $0x1,%ymm9,%xmm10
16167 .byte 196,66,49,43,202 // vpackusdw %xmm10,%xmm9,%xmm9
16168 .byte 196,193,41,113,241,8 // vpsllw $0x8,%xmm9,%xmm10
16169 .byte 196,193,49,113,209,8 // vpsrlw $0x8,%xmm9,%xmm9
16170 .byte 196,65,41,235,201 // vpor %xmm9,%xmm10,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040016171 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Klein3146bb92017-04-05 14:45:02 -040016172 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
16173 .byte 196,67,125,25,211,1 // vextractf128 $0x1,%ymm10,%xmm11
16174 .byte 196,66,41,43,211 // vpackusdw %xmm11,%xmm10,%xmm10
16175 .byte 196,193,33,113,242,8 // vpsllw $0x8,%xmm10,%xmm11
16176 .byte 196,193,41,113,210,8 // vpsrlw $0x8,%xmm10,%xmm10
16177 .byte 196,65,33,235,210 // vpor %xmm10,%xmm11,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040016178 .byte 196,65,108,89,216 // vmulps %ymm8,%ymm2,%ymm11
Mike Klein3146bb92017-04-05 14:45:02 -040016179 .byte 196,65,125,91,219 // vcvtps2dq %ymm11,%ymm11
16180 .byte 196,67,125,25,220,1 // vextractf128 $0x1,%ymm11,%xmm12
16181 .byte 196,66,33,43,220 // vpackusdw %xmm12,%xmm11,%xmm11
16182 .byte 196,193,25,113,243,8 // vpsllw $0x8,%xmm11,%xmm12
16183 .byte 196,193,33,113,211,8 // vpsrlw $0x8,%xmm11,%xmm11
16184 .byte 196,65,25,235,219 // vpor %xmm11,%xmm12,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040016185 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Klein3146bb92017-04-05 14:45:02 -040016186 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
16187 .byte 196,67,125,25,196,1 // vextractf128 $0x1,%ymm8,%xmm12
16188 .byte 196,66,57,43,196 // vpackusdw %xmm12,%xmm8,%xmm8
16189 .byte 196,193,25,113,240,8 // vpsllw $0x8,%xmm8,%xmm12
16190 .byte 196,193,57,113,208,8 // vpsrlw $0x8,%xmm8,%xmm8
16191 .byte 196,65,25,235,192 // vpor %xmm8,%xmm12,%xmm8
16192 .byte 196,65,49,97,226 // vpunpcklwd %xmm10,%xmm9,%xmm12
16193 .byte 196,65,49,105,234 // vpunpckhwd %xmm10,%xmm9,%xmm13
16194 .byte 196,65,33,97,200 // vpunpcklwd %xmm8,%xmm11,%xmm9
16195 .byte 196,65,33,105,192 // vpunpckhwd %xmm8,%xmm11,%xmm8
16196 .byte 196,65,25,98,217 // vpunpckldq %xmm9,%xmm12,%xmm11
16197 .byte 196,65,25,106,209 // vpunpckhdq %xmm9,%xmm12,%xmm10
16198 .byte 196,65,17,98,200 // vpunpckldq %xmm8,%xmm13,%xmm9
16199 .byte 196,65,17,106,192 // vpunpckhdq %xmm8,%xmm13,%xmm8
16200 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016201 .byte 117,31 // jne 47b0 <_sk_store_u16_be_avx+0xfa>
Mike Kleinfe560a82017-05-01 12:56:35 -040016202 .byte 196,65,120,17,28,64 // vmovups %xmm11,(%r8,%rax,2)
16203 .byte 196,65,120,17,84,64,16 // vmovups %xmm10,0x10(%r8,%rax,2)
16204 .byte 196,65,120,17,76,64,32 // vmovups %xmm9,0x20(%r8,%rax,2)
16205 .byte 196,65,122,127,68,64,48 // vmovdqu %xmm8,0x30(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040016206 .byte 72,173 // lods %ds:(%rsi),%rax
16207 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040016208 .byte 196,65,121,214,28,64 // vmovq %xmm11,(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040016209 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016210 .byte 116,240 // je 47ac <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040016211 .byte 196,65,121,23,92,64,8 // vmovhpd %xmm11,0x8(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040016212 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016213 .byte 114,227 // jb 47ac <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040016214 .byte 196,65,121,214,84,64,16 // vmovq %xmm10,0x10(%r8,%rax,2)
Mike Kleinfb11acd2017-05-01 14:22:10 -040016215 .byte 116,218 // je 47ac <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040016216 .byte 196,65,121,23,84,64,24 // vmovhpd %xmm10,0x18(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040016217 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016218 .byte 114,205 // jb 47ac <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040016219 .byte 196,65,121,214,76,64,32 // vmovq %xmm9,0x20(%r8,%rax,2)
Mike Kleinfb11acd2017-05-01 14:22:10 -040016220 .byte 116,196 // je 47ac <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040016221 .byte 196,65,121,23,76,64,40 // vmovhpd %xmm9,0x28(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040016222 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016223 .byte 114,183 // jb 47ac <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040016224 .byte 196,65,121,214,68,64,48 // vmovq %xmm8,0x30(%r8,%rax,2)
Mike Kleinfb11acd2017-05-01 14:22:10 -040016225 .byte 235,174 // jmp 47ac <_sk_store_u16_be_avx+0xf6>
Mike Klein3146bb92017-04-05 14:45:02 -040016226
Mike Klein14987eb2017-04-06 10:22:26 -040016227HIDDEN _sk_load_f32_avx
16228.globl _sk_load_f32_avx
Mike Klein86714282017-04-13 17:37:38 -040016229FUNCTION(_sk_load_f32_avx)
Mike Klein14987eb2017-04-06 10:22:26 -040016230_sk_load_f32_avx:
16231 .byte 72,173 // lods %ds:(%rsi),%rax
16232 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016233 .byte 119,110 // ja 4874 <_sk_load_f32_avx+0x76>
Mike Klein14987eb2017-04-06 10:22:26 -040016234 .byte 76,139,0 // mov (%rax),%r8
16235 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016236 .byte 76,141,21,132,0,0,0 // lea 0x84(%rip),%r10 # 489c <_sk_load_f32_avx+0x9e>
Mike Klein14987eb2017-04-06 10:22:26 -040016237 .byte 73,99,4,138 // movslq (%r10,%rcx,4),%rax
16238 .byte 76,1,208 // add %r10,%rax
16239 .byte 255,224 // jmpq *%rax
16240 .byte 196,3,125,24,68,136,112,1 // vinsertf128 $0x1,0x70(%r8,%r9,4),%ymm0,%ymm8
16241 .byte 196,131,125,24,92,136,96,1 // vinsertf128 $0x1,0x60(%r8,%r9,4),%ymm0,%ymm3
16242 .byte 196,131,125,24,76,136,80,1 // vinsertf128 $0x1,0x50(%r8,%r9,4),%ymm0,%ymm1
16243 .byte 196,131,125,24,84,136,64,1 // vinsertf128 $0x1,0x40(%r8,%r9,4),%ymm0,%ymm2
16244 .byte 196,129,121,16,68,136,48 // vmovupd 0x30(%r8,%r9,4),%xmm0
16245 .byte 196,195,125,13,192,12 // vblendpd $0xc,%ymm8,%ymm0,%ymm0
16246 .byte 196,1,121,16,68,136,32 // vmovupd 0x20(%r8,%r9,4),%xmm8
16247 .byte 196,99,61,13,203,12 // vblendpd $0xc,%ymm3,%ymm8,%ymm9
16248 .byte 196,129,121,16,92,136,16 // vmovupd 0x10(%r8,%r9,4),%xmm3
16249 .byte 196,99,101,13,209,12 // vblendpd $0xc,%ymm1,%ymm3,%ymm10
16250 .byte 196,129,121,16,12,136 // vmovupd (%r8,%r9,4),%xmm1
16251 .byte 196,227,117,13,202,12 // vblendpd $0xc,%ymm2,%ymm1,%ymm1
16252 .byte 196,193,116,20,210 // vunpcklps %ymm10,%ymm1,%ymm2
16253 .byte 196,193,116,21,218 // vunpckhps %ymm10,%ymm1,%ymm3
16254 .byte 197,180,20,200 // vunpcklps %ymm0,%ymm9,%ymm1
16255 .byte 197,52,21,192 // vunpckhps %ymm0,%ymm9,%ymm8
16256 .byte 197,237,20,193 // vunpcklpd %ymm1,%ymm2,%ymm0
16257 .byte 197,237,21,201 // vunpckhpd %ymm1,%ymm2,%ymm1
16258 .byte 196,193,101,20,208 // vunpcklpd %ymm8,%ymm3,%ymm2
16259 .byte 196,193,101,21,216 // vunpckhpd %ymm8,%ymm3,%ymm3
16260 .byte 72,173 // lods %ds:(%rsi),%rax
16261 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040016262 .byte 133,255 // test %edi,%edi
Mike Kleinb4bbc642017-04-27 08:59:55 -040016263 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040016264 .byte 255,204 // dec %esp
Mike Klein14987eb2017-04-06 10:22:26 -040016265 .byte 255 // (bad)
16266 .byte 255 // (bad)
16267 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040016268 .byte 191,255,255,255,178 // mov $0xb2ffffff,%edi
Mike Klein14987eb2017-04-06 10:22:26 -040016269 .byte 255 // (bad)
16270 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040016271 .byte 255,165,255,255,255,157 // jmpq *-0x62000001(%rbp)
Mike Klein14987eb2017-04-06 10:22:26 -040016272 .byte 255 // (bad)
16273 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040016274 .byte 255,149,255,255,255,141 // callq *-0x72000001(%rbp)
Mike Klein14987eb2017-04-06 10:22:26 -040016275 .byte 255 // (bad)
16276 .byte 255 // (bad)
16277 .byte 255 // .byte 0xff
16278
Mike Klein7c4af542017-03-29 18:21:14 -040016279HIDDEN _sk_store_f32_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016280.globl _sk_store_f32_avx
Mike Klein86714282017-04-13 17:37:38 -040016281FUNCTION(_sk_store_f32_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016282_sk_store_f32_avx:
16283 .byte 72,173 // lods %ds:(%rsi),%rax
16284 .byte 76,139,0 // mov (%rax),%r8
16285 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
16286 .byte 197,124,20,193 // vunpcklps %ymm1,%ymm0,%ymm8
16287 .byte 197,124,21,217 // vunpckhps %ymm1,%ymm0,%ymm11
16288 .byte 197,108,20,203 // vunpcklps %ymm3,%ymm2,%ymm9
16289 .byte 197,108,21,227 // vunpckhps %ymm3,%ymm2,%ymm12
16290 .byte 196,65,61,20,209 // vunpcklpd %ymm9,%ymm8,%ymm10
16291 .byte 196,65,61,21,201 // vunpckhpd %ymm9,%ymm8,%ymm9
16292 .byte 196,65,37,20,196 // vunpcklpd %ymm12,%ymm11,%ymm8
16293 .byte 196,65,37,21,220 // vunpckhpd %ymm12,%ymm11,%ymm11
16294 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016295 .byte 117,55 // jne 4929 <_sk_store_f32_avx+0x6d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016296 .byte 196,67,45,24,225,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm12
16297 .byte 196,67,61,24,235,1 // vinsertf128 $0x1,%xmm11,%ymm8,%ymm13
16298 .byte 196,67,45,6,201,49 // vperm2f128 $0x31,%ymm9,%ymm10,%ymm9
16299 .byte 196,67,61,6,195,49 // vperm2f128 $0x31,%ymm11,%ymm8,%ymm8
16300 .byte 196,65,125,17,36,128 // vmovupd %ymm12,(%r8,%rax,4)
16301 .byte 196,65,125,17,108,128,32 // vmovupd %ymm13,0x20(%r8,%rax,4)
16302 .byte 196,65,125,17,76,128,64 // vmovupd %ymm9,0x40(%r8,%rax,4)
16303 .byte 196,65,125,17,68,128,96 // vmovupd %ymm8,0x60(%r8,%rax,4)
16304 .byte 72,173 // lods %ds:(%rsi),%rax
16305 .byte 255,224 // jmpq *%rax
16306 .byte 196,65,121,17,20,128 // vmovupd %xmm10,(%r8,%rax,4)
16307 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016308 .byte 116,240 // je 4925 <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016309 .byte 196,65,121,17,76,128,16 // vmovupd %xmm9,0x10(%r8,%rax,4)
16310 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016311 .byte 114,227 // jb 4925 <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016312 .byte 196,65,121,17,68,128,32 // vmovupd %xmm8,0x20(%r8,%rax,4)
Mike Kleinfb11acd2017-05-01 14:22:10 -040016313 .byte 116,218 // je 4925 <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016314 .byte 196,65,121,17,92,128,48 // vmovupd %xmm11,0x30(%r8,%rax,4)
16315 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016316 .byte 114,205 // jb 4925 <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016317 .byte 196,67,125,25,84,128,64,1 // vextractf128 $0x1,%ymm10,0x40(%r8,%rax,4)
Mike Kleinfb11acd2017-05-01 14:22:10 -040016318 .byte 116,195 // je 4925 <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016319 .byte 196,67,125,25,76,128,80,1 // vextractf128 $0x1,%ymm9,0x50(%r8,%rax,4)
16320 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040016321 .byte 114,181 // jb 4925 <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016322 .byte 196,67,125,25,68,128,96,1 // vextractf128 $0x1,%ymm8,0x60(%r8,%rax,4)
Mike Kleinfb11acd2017-05-01 14:22:10 -040016323 .byte 235,171 // jmp 4925 <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016324
Mike Klein7c4af542017-03-29 18:21:14 -040016325HIDDEN _sk_clamp_x_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016326.globl _sk_clamp_x_avx
Mike Klein86714282017-04-13 17:37:38 -040016327FUNCTION(_sk_clamp_x_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016328_sk_clamp_x_avx:
16329 .byte 72,173 // lods %ds:(%rsi),%rax
16330 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
16331 .byte 197,60,95,200 // vmaxps %ymm0,%ymm8,%ymm9
16332 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
16333 .byte 196,99,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm0
16334 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
16335 .byte 196,193,121,254,194 // vpaddd %xmm10,%xmm0,%xmm0
16336 .byte 196,65,57,254,194 // vpaddd %xmm10,%xmm8,%xmm8
16337 .byte 196,227,61,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm8,%ymm0
16338 .byte 197,180,93,192 // vminps %ymm0,%ymm9,%ymm0
16339 .byte 72,173 // lods %ds:(%rsi),%rax
16340 .byte 255,224 // jmpq *%rax
16341
Mike Klein7c4af542017-03-29 18:21:14 -040016342HIDDEN _sk_clamp_y_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016343.globl _sk_clamp_y_avx
Mike Klein86714282017-04-13 17:37:38 -040016344FUNCTION(_sk_clamp_y_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016345_sk_clamp_y_avx:
16346 .byte 72,173 // lods %ds:(%rsi),%rax
16347 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
16348 .byte 197,60,95,201 // vmaxps %ymm1,%ymm8,%ymm9
16349 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
16350 .byte 196,99,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm1
16351 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
16352 .byte 196,193,113,254,202 // vpaddd %xmm10,%xmm1,%xmm1
16353 .byte 196,65,57,254,194 // vpaddd %xmm10,%xmm8,%xmm8
16354 .byte 196,227,61,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm8,%ymm1
16355 .byte 197,180,93,201 // vminps %ymm1,%ymm9,%ymm1
16356 .byte 72,173 // lods %ds:(%rsi),%rax
16357 .byte 255,224 // jmpq *%rax
16358
Mike Klein7c4af542017-03-29 18:21:14 -040016359HIDDEN _sk_repeat_x_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016360.globl _sk_repeat_x_avx
Mike Klein86714282017-04-13 17:37:38 -040016361FUNCTION(_sk_repeat_x_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016362_sk_repeat_x_avx:
16363 .byte 72,173 // lods %ds:(%rsi),%rax
16364 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
16365 .byte 196,65,124,94,200 // vdivps %ymm8,%ymm0,%ymm9
16366 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
16367 .byte 196,65,52,89,200 // vmulps %ymm8,%ymm9,%ymm9
16368 .byte 196,65,124,92,201 // vsubps %ymm9,%ymm0,%ymm9
16369 .byte 196,99,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm0
16370 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
16371 .byte 196,193,121,254,194 // vpaddd %xmm10,%xmm0,%xmm0
16372 .byte 196,65,57,254,194 // vpaddd %xmm10,%xmm8,%xmm8
16373 .byte 196,227,61,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm8,%ymm0
16374 .byte 197,180,93,192 // vminps %ymm0,%ymm9,%ymm0
16375 .byte 72,173 // lods %ds:(%rsi),%rax
16376 .byte 255,224 // jmpq *%rax
16377
Mike Klein7c4af542017-03-29 18:21:14 -040016378HIDDEN _sk_repeat_y_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016379.globl _sk_repeat_y_avx
Mike Klein86714282017-04-13 17:37:38 -040016380FUNCTION(_sk_repeat_y_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016381_sk_repeat_y_avx:
16382 .byte 72,173 // lods %ds:(%rsi),%rax
16383 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
16384 .byte 196,65,116,94,200 // vdivps %ymm8,%ymm1,%ymm9
16385 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
16386 .byte 196,65,52,89,200 // vmulps %ymm8,%ymm9,%ymm9
16387 .byte 196,65,116,92,201 // vsubps %ymm9,%ymm1,%ymm9
16388 .byte 196,99,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm1
16389 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
16390 .byte 196,193,113,254,202 // vpaddd %xmm10,%xmm1,%xmm1
16391 .byte 196,65,57,254,194 // vpaddd %xmm10,%xmm8,%xmm8
16392 .byte 196,227,61,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm8,%ymm1
16393 .byte 197,180,93,201 // vminps %ymm1,%ymm9,%ymm1
16394 .byte 72,173 // lods %ds:(%rsi),%rax
16395 .byte 255,224 // jmpq *%rax
16396
Mike Klein7c4af542017-03-29 18:21:14 -040016397HIDDEN _sk_mirror_x_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016398.globl _sk_mirror_x_avx
Mike Klein86714282017-04-13 17:37:38 -040016399FUNCTION(_sk_mirror_x_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016400_sk_mirror_x_avx:
16401 .byte 72,173 // lods %ds:(%rsi),%rax
16402 .byte 197,121,110,0 // vmovd (%rax),%xmm8
16403 .byte 196,65,121,112,200,0 // vpshufd $0x0,%xmm8,%xmm9
16404 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
16405 .byte 196,65,124,92,209 // vsubps %ymm9,%ymm0,%ymm10
16406 .byte 196,193,58,88,192 // vaddss %xmm8,%xmm8,%xmm0
16407 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
16408 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
16409 .byte 197,44,94,192 // vdivps %ymm0,%ymm10,%ymm8
16410 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
16411 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
16412 .byte 197,172,92,192 // vsubps %ymm0,%ymm10,%ymm0
16413 .byte 196,193,124,92,193 // vsubps %ymm9,%ymm0,%ymm0
16414 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
16415 .byte 197,60,92,192 // vsubps %ymm0,%ymm8,%ymm8
16416 .byte 197,60,84,192 // vandps %ymm0,%ymm8,%ymm8
16417 .byte 196,99,125,25,200,1 // vextractf128 $0x1,%ymm9,%xmm0
16418 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
16419 .byte 196,193,121,254,194 // vpaddd %xmm10,%xmm0,%xmm0
16420 .byte 196,65,49,254,202 // vpaddd %xmm10,%xmm9,%xmm9
16421 .byte 196,227,53,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm0
16422 .byte 197,188,93,192 // vminps %ymm0,%ymm8,%ymm0
16423 .byte 72,173 // lods %ds:(%rsi),%rax
16424 .byte 255,224 // jmpq *%rax
16425
Mike Klein7c4af542017-03-29 18:21:14 -040016426HIDDEN _sk_mirror_y_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016427.globl _sk_mirror_y_avx
Mike Klein86714282017-04-13 17:37:38 -040016428FUNCTION(_sk_mirror_y_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016429_sk_mirror_y_avx:
16430 .byte 72,173 // lods %ds:(%rsi),%rax
16431 .byte 197,121,110,0 // vmovd (%rax),%xmm8
16432 .byte 196,65,121,112,200,0 // vpshufd $0x0,%xmm8,%xmm9
16433 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
16434 .byte 196,65,116,92,209 // vsubps %ymm9,%ymm1,%ymm10
16435 .byte 196,193,58,88,200 // vaddss %xmm8,%xmm8,%xmm1
16436 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
16437 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
16438 .byte 197,44,94,193 // vdivps %ymm1,%ymm10,%ymm8
16439 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
16440 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
16441 .byte 197,172,92,201 // vsubps %ymm1,%ymm10,%ymm1
16442 .byte 196,193,116,92,201 // vsubps %ymm9,%ymm1,%ymm1
16443 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
16444 .byte 197,60,92,193 // vsubps %ymm1,%ymm8,%ymm8
16445 .byte 197,60,84,193 // vandps %ymm1,%ymm8,%ymm8
16446 .byte 196,99,125,25,201,1 // vextractf128 $0x1,%ymm9,%xmm1
16447 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
16448 .byte 196,193,113,254,202 // vpaddd %xmm10,%xmm1,%xmm1
16449 .byte 196,65,49,254,202 // vpaddd %xmm10,%xmm9,%xmm9
16450 .byte 196,227,53,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm9,%ymm1
16451 .byte 197,188,93,201 // vminps %ymm1,%ymm8,%ymm1
16452 .byte 72,173 // lods %ds:(%rsi),%rax
16453 .byte 255,224 // jmpq *%rax
16454
Mike Klein7c4af542017-03-29 18:21:14 -040016455HIDDEN _sk_luminance_to_alpha_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016456.globl _sk_luminance_to_alpha_avx
Mike Klein86714282017-04-13 17:37:38 -040016457FUNCTION(_sk_luminance_to_alpha_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016458_sk_luminance_to_alpha_avx:
Mike Kleinfb11acd2017-05-01 14:22:10 -040016459 .byte 196,226,125,24,29,215,11,0,0 // vbroadcastss 0xbd7(%rip),%ymm3 # 571c <_sk_callback_avx+0x40a>
Mike Kleinfe560a82017-05-01 12:56:35 -040016460 .byte 197,252,89,195 // vmulps %ymm3,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040016461 .byte 196,226,125,24,29,206,11,0,0 // vbroadcastss 0xbce(%rip),%ymm3 # 5720 <_sk_callback_avx+0x40e>
Mike Kleinfe560a82017-05-01 12:56:35 -040016462 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040016463 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040016464 .byte 196,226,125,24,13,193,11,0,0 // vbroadcastss 0xbc1(%rip),%ymm1 # 5724 <_sk_callback_avx+0x412>
Mike Kleinfe560a82017-05-01 12:56:35 -040016465 .byte 197,236,89,201 // vmulps %ymm1,%ymm2,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040016466 .byte 197,252,88,217 // vaddps %ymm1,%ymm0,%ymm3
16467 .byte 72,173 // lods %ds:(%rsi),%rax
16468 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
16469 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
16470 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
16471 .byte 255,224 // jmpq *%rax
16472
Mike Klein7c4af542017-03-29 18:21:14 -040016473HIDDEN _sk_matrix_2x3_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016474.globl _sk_matrix_2x3_avx
Mike Klein86714282017-04-13 17:37:38 -040016475FUNCTION(_sk_matrix_2x3_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016476_sk_matrix_2x3_avx:
16477 .byte 72,173 // lods %ds:(%rsi),%rax
16478 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
16479 .byte 196,98,125,24,72,8 // vbroadcastss 0x8(%rax),%ymm9
16480 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
16481 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
16482 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
16483 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
16484 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
16485 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
16486 .byte 196,98,125,24,80,12 // vbroadcastss 0xc(%rax),%ymm10
16487 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
16488 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
16489 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
16490 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
16491 .byte 197,252,88,201 // vaddps %ymm1,%ymm0,%ymm1
16492 .byte 72,173 // lods %ds:(%rsi),%rax
16493 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
16494 .byte 255,224 // jmpq *%rax
16495
Mike Klein7c4af542017-03-29 18:21:14 -040016496HIDDEN _sk_matrix_3x4_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016497.globl _sk_matrix_3x4_avx
Mike Klein86714282017-04-13 17:37:38 -040016498FUNCTION(_sk_matrix_3x4_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016499_sk_matrix_3x4_avx:
16500 .byte 72,173 // lods %ds:(%rsi),%rax
16501 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
16502 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
16503 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
16504 .byte 196,98,125,24,88,36 // vbroadcastss 0x24(%rax),%ymm11
16505 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
16506 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
16507 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
16508 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
16509 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
16510 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
16511 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
16512 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
16513 .byte 196,98,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm11
16514 .byte 196,98,125,24,96,40 // vbroadcastss 0x28(%rax),%ymm12
16515 .byte 197,36,89,218 // vmulps %ymm2,%ymm11,%ymm11
16516 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
16517 .byte 197,44,89,209 // vmulps %ymm1,%ymm10,%ymm10
16518 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
16519 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
16520 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
16521 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
16522 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
16523 .byte 196,98,125,24,96,32 // vbroadcastss 0x20(%rax),%ymm12
16524 .byte 196,98,125,24,104,44 // vbroadcastss 0x2c(%rax),%ymm13
16525 .byte 197,156,89,210 // vmulps %ymm2,%ymm12,%ymm2
16526 .byte 196,193,108,88,213 // vaddps %ymm13,%ymm2,%ymm2
16527 .byte 197,164,89,201 // vmulps %ymm1,%ymm11,%ymm1
16528 .byte 197,244,88,202 // vaddps %ymm2,%ymm1,%ymm1
16529 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
16530 .byte 197,252,88,209 // vaddps %ymm1,%ymm0,%ymm2
16531 .byte 72,173 // lods %ds:(%rsi),%rax
16532 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
16533 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
16534 .byte 255,224 // jmpq *%rax
16535
Mike Klein7c4af542017-03-29 18:21:14 -040016536HIDDEN _sk_matrix_4x5_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016537.globl _sk_matrix_4x5_avx
Mike Klein86714282017-04-13 17:37:38 -040016538FUNCTION(_sk_matrix_4x5_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016539_sk_matrix_4x5_avx:
16540 .byte 72,173 // lods %ds:(%rsi),%rax
16541 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
16542 .byte 196,98,125,24,72,16 // vbroadcastss 0x10(%rax),%ymm9
16543 .byte 196,98,125,24,80,32 // vbroadcastss 0x20(%rax),%ymm10
16544 .byte 196,98,125,24,88,48 // vbroadcastss 0x30(%rax),%ymm11
16545 .byte 196,98,125,24,96,64 // vbroadcastss 0x40(%rax),%ymm12
16546 .byte 197,36,89,219 // vmulps %ymm3,%ymm11,%ymm11
16547 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
16548 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
16549 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
16550 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
16551 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
16552 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
16553 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
16554 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
16555 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
16556 .byte 196,98,125,24,88,36 // vbroadcastss 0x24(%rax),%ymm11
16557 .byte 196,98,125,24,96,52 // vbroadcastss 0x34(%rax),%ymm12
16558 .byte 196,98,125,24,104,68 // vbroadcastss 0x44(%rax),%ymm13
16559 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
16560 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
16561 .byte 197,36,89,218 // vmulps %ymm2,%ymm11,%ymm11
16562 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
16563 .byte 197,44,89,209 // vmulps %ymm1,%ymm10,%ymm10
16564 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
16565 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
16566 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
16567 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
16568 .byte 196,98,125,24,88,24 // vbroadcastss 0x18(%rax),%ymm11
16569 .byte 196,98,125,24,96,40 // vbroadcastss 0x28(%rax),%ymm12
16570 .byte 196,98,125,24,104,56 // vbroadcastss 0x38(%rax),%ymm13
16571 .byte 196,98,125,24,112,72 // vbroadcastss 0x48(%rax),%ymm14
16572 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
16573 .byte 196,65,20,88,238 // vaddps %ymm14,%ymm13,%ymm13
16574 .byte 197,28,89,226 // vmulps %ymm2,%ymm12,%ymm12
16575 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
16576 .byte 197,36,89,217 // vmulps %ymm1,%ymm11,%ymm11
16577 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
16578 .byte 197,44,89,208 // vmulps %ymm0,%ymm10,%ymm10
16579 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
16580 .byte 196,98,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm11
16581 .byte 196,98,125,24,96,28 // vbroadcastss 0x1c(%rax),%ymm12
16582 .byte 196,98,125,24,104,44 // vbroadcastss 0x2c(%rax),%ymm13
16583 .byte 196,98,125,24,112,60 // vbroadcastss 0x3c(%rax),%ymm14
16584 .byte 196,98,125,24,120,76 // vbroadcastss 0x4c(%rax),%ymm15
16585 .byte 197,140,89,219 // vmulps %ymm3,%ymm14,%ymm3
16586 .byte 196,193,100,88,223 // vaddps %ymm15,%ymm3,%ymm3
16587 .byte 197,148,89,210 // vmulps %ymm2,%ymm13,%ymm2
16588 .byte 197,236,88,211 // vaddps %ymm3,%ymm2,%ymm2
16589 .byte 197,156,89,201 // vmulps %ymm1,%ymm12,%ymm1
16590 .byte 197,244,88,202 // vaddps %ymm2,%ymm1,%ymm1
16591 .byte 197,164,89,192 // vmulps %ymm0,%ymm11,%ymm0
16592 .byte 197,252,88,217 // vaddps %ymm1,%ymm0,%ymm3
16593 .byte 72,173 // lods %ds:(%rsi),%rax
16594 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
16595 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
16596 .byte 197,124,41,210 // vmovaps %ymm10,%ymm2
16597 .byte 255,224 // jmpq *%rax
16598
Mike Klein7c4af542017-03-29 18:21:14 -040016599HIDDEN _sk_matrix_perspective_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016600.globl _sk_matrix_perspective_avx
Mike Klein86714282017-04-13 17:37:38 -040016601FUNCTION(_sk_matrix_perspective_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016602_sk_matrix_perspective_avx:
16603 .byte 72,173 // lods %ds:(%rsi),%rax
16604 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
16605 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
16606 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
16607 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
16608 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
16609 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
16610 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
16611 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
16612 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
16613 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
16614 .byte 197,44,89,209 // vmulps %ymm1,%ymm10,%ymm10
16615 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
16616 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
16617 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
16618 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
16619 .byte 196,98,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm11
16620 .byte 196,98,125,24,96,32 // vbroadcastss 0x20(%rax),%ymm12
16621 .byte 197,164,89,201 // vmulps %ymm1,%ymm11,%ymm1
16622 .byte 196,193,116,88,204 // vaddps %ymm12,%ymm1,%ymm1
16623 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
16624 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
16625 .byte 197,252,83,200 // vrcpps %ymm0,%ymm1
16626 .byte 197,188,89,193 // vmulps %ymm1,%ymm8,%ymm0
16627 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
16628 .byte 72,173 // lods %ds:(%rsi),%rax
16629 .byte 255,224 // jmpq *%rax
16630
Herb Derby7b4202d2017-04-10 10:52:34 -040016631HIDDEN _sk_linear_gradient_avx
16632.globl _sk_linear_gradient_avx
Mike Klein86714282017-04-13 17:37:38 -040016633FUNCTION(_sk_linear_gradient_avx)
Herb Derby7b4202d2017-04-10 10:52:34 -040016634_sk_linear_gradient_avx:
16635 .byte 72,173 // lods %ds:(%rsi),%rax
16636 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
16637 .byte 196,226,125,24,72,20 // vbroadcastss 0x14(%rax),%ymm1
16638 .byte 196,226,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm2
16639 .byte 196,226,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm3
16640 .byte 76,139,0 // mov (%rax),%r8
16641 .byte 77,133,192 // test %r8,%r8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016642 .byte 15,132,146,0,0,0 // je 4eb9 <_sk_linear_gradient_avx+0xb8>
Herb Derby7b4202d2017-04-10 10:52:34 -040016643 .byte 72,139,64,8 // mov 0x8(%rax),%rax
16644 .byte 72,131,192,32 // add $0x20,%rax
16645 .byte 196,65,28,87,228 // vxorps %ymm12,%ymm12,%ymm12
16646 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
16647 .byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
16648 .byte 196,65,36,87,219 // vxorps %ymm11,%ymm11,%ymm11
16649 .byte 196,98,125,24,104,224 // vbroadcastss -0x20(%rax),%ymm13
16650 .byte 196,65,124,194,237,1 // vcmpltps %ymm13,%ymm0,%ymm13
16651 .byte 196,98,125,24,112,228 // vbroadcastss -0x1c(%rax),%ymm14
16652 .byte 196,67,13,74,228,208 // vblendvps %ymm13,%ymm12,%ymm14,%ymm12
16653 .byte 196,98,125,24,112,232 // vbroadcastss -0x18(%rax),%ymm14
16654 .byte 196,67,13,74,219,208 // vblendvps %ymm13,%ymm11,%ymm14,%ymm11
16655 .byte 196,98,125,24,112,236 // vbroadcastss -0x14(%rax),%ymm14
16656 .byte 196,67,13,74,210,208 // vblendvps %ymm13,%ymm10,%ymm14,%ymm10
16657 .byte 196,98,125,24,112,240 // vbroadcastss -0x10(%rax),%ymm14
16658 .byte 196,67,13,74,201,208 // vblendvps %ymm13,%ymm9,%ymm14,%ymm9
16659 .byte 196,98,125,24,112,244 // vbroadcastss -0xc(%rax),%ymm14
16660 .byte 196,67,13,74,192,208 // vblendvps %ymm13,%ymm8,%ymm14,%ymm8
16661 .byte 196,98,125,24,112,248 // vbroadcastss -0x8(%rax),%ymm14
16662 .byte 196,227,13,74,201,208 // vblendvps %ymm13,%ymm1,%ymm14,%ymm1
16663 .byte 196,98,125,24,112,252 // vbroadcastss -0x4(%rax),%ymm14
16664 .byte 196,227,13,74,210,208 // vblendvps %ymm13,%ymm2,%ymm14,%ymm2
16665 .byte 196,98,125,24,48 // vbroadcastss (%rax),%ymm14
16666 .byte 196,227,13,74,219,208 // vblendvps %ymm13,%ymm3,%ymm14,%ymm3
16667 .byte 72,131,192,36 // add $0x24,%rax
16668 .byte 73,255,200 // dec %r8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016669 .byte 117,140 // jne 4e43 <_sk_linear_gradient_avx+0x42>
16670 .byte 235,20 // jmp 4ecd <_sk_linear_gradient_avx+0xcc>
Herb Derby7b4202d2017-04-10 10:52:34 -040016671 .byte 196,65,36,87,219 // vxorps %ymm11,%ymm11,%ymm11
16672 .byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
16673 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
16674 .byte 196,65,28,87,228 // vxorps %ymm12,%ymm12,%ymm12
16675 .byte 197,28,89,224 // vmulps %ymm0,%ymm12,%ymm12
16676 .byte 196,65,60,88,196 // vaddps %ymm12,%ymm8,%ymm8
16677 .byte 197,36,89,216 // vmulps %ymm0,%ymm11,%ymm11
16678 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
16679 .byte 197,44,89,208 // vmulps %ymm0,%ymm10,%ymm10
16680 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
16681 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
16682 .byte 197,252,88,219 // vaddps %ymm3,%ymm0,%ymm3
16683 .byte 72,173 // lods %ds:(%rsi),%rax
16684 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
16685 .byte 255,224 // jmpq *%rax
16686
Mike Klein7c4af542017-03-29 18:21:14 -040016687HIDDEN _sk_linear_gradient_2stops_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016688.globl _sk_linear_gradient_2stops_avx
Mike Klein86714282017-04-13 17:37:38 -040016689FUNCTION(_sk_linear_gradient_2stops_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016690_sk_linear_gradient_2stops_avx:
16691 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040016692 .byte 196,226,125,24,8 // vbroadcastss (%rax),%ymm1
16693 .byte 196,226,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040016694 .byte 197,244,89,200 // vmulps %ymm0,%ymm1,%ymm1
Mike Klein8a823fa2017-04-05 17:29:26 -040016695 .byte 197,116,88,194 // vaddps %ymm2,%ymm1,%ymm8
Herb Derby7b4202d2017-04-10 10:52:34 -040016696 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
16697 .byte 196,226,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040016698 .byte 197,244,89,200 // vmulps %ymm0,%ymm1,%ymm1
Mike Klein8a823fa2017-04-05 17:29:26 -040016699 .byte 197,244,88,202 // vaddps %ymm2,%ymm1,%ymm1
Herb Derby7b4202d2017-04-10 10:52:34 -040016700 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
16701 .byte 196,226,125,24,88,24 // vbroadcastss 0x18(%rax),%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040016702 .byte 197,236,89,208 // vmulps %ymm0,%ymm2,%ymm2
Mike Klein8a823fa2017-04-05 17:29:26 -040016703 .byte 197,236,88,211 // vaddps %ymm3,%ymm2,%ymm2
Herb Derby7b4202d2017-04-10 10:52:34 -040016704 .byte 196,226,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm3
16705 .byte 196,98,125,24,72,28 // vbroadcastss 0x1c(%rax),%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040016706 .byte 197,228,89,192 // vmulps %ymm0,%ymm3,%ymm0
Mike Klein8a823fa2017-04-05 17:29:26 -040016707 .byte 196,193,124,88,217 // vaddps %ymm9,%ymm0,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040016708 .byte 72,173 // lods %ds:(%rsi),%rax
16709 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
16710 .byte 255,224 // jmpq *%rax
16711
Mike Klein0a904492017-04-12 12:52:48 -040016712HIDDEN _sk_save_xy_avx
16713.globl _sk_save_xy_avx
Mike Klein86714282017-04-13 17:37:38 -040016714FUNCTION(_sk_save_xy_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016715_sk_save_xy_avx:
16716 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016717 .byte 196,98,125,24,5,205,7,0,0 // vbroadcastss 0x7cd(%rip),%ymm8 # 5728 <_sk_callback_avx+0x416>
Mike Kleinfe560a82017-05-01 12:56:35 -040016718 .byte 196,65,124,88,200 // vaddps %ymm8,%ymm0,%ymm9
Mike Klein0a904492017-04-12 12:52:48 -040016719 .byte 196,67,125,8,209,1 // vroundps $0x1,%ymm9,%ymm10
16720 .byte 196,65,52,92,202 // vsubps %ymm10,%ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040016721 .byte 196,65,116,88,192 // vaddps %ymm8,%ymm1,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040016722 .byte 196,67,125,8,208,1 // vroundps $0x1,%ymm8,%ymm10
16723 .byte 196,65,60,92,194 // vsubps %ymm10,%ymm8,%ymm8
16724 .byte 197,252,17,0 // vmovups %ymm0,(%rax)
16725 .byte 197,252,17,72,32 // vmovups %ymm1,0x20(%rax)
16726 .byte 197,124,17,72,64 // vmovups %ymm9,0x40(%rax)
16727 .byte 197,124,17,64,96 // vmovups %ymm8,0x60(%rax)
16728 .byte 72,173 // lods %ds:(%rsi),%rax
16729 .byte 255,224 // jmpq *%rax
16730
16731HIDDEN _sk_accumulate_avx
16732.globl _sk_accumulate_avx
Mike Klein86714282017-04-13 17:37:38 -040016733FUNCTION(_sk_accumulate_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016734_sk_accumulate_avx:
16735 .byte 72,173 // lods %ds:(%rsi),%rax
16736 .byte 197,124,16,128,128,0,0,0 // vmovups 0x80(%rax),%ymm8
16737 .byte 197,60,89,128,160,0,0,0 // vmulps 0xa0(%rax),%ymm8,%ymm8
16738 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
16739 .byte 197,180,88,228 // vaddps %ymm4,%ymm9,%ymm4
16740 .byte 197,60,89,201 // vmulps %ymm1,%ymm8,%ymm9
16741 .byte 197,180,88,237 // vaddps %ymm5,%ymm9,%ymm5
16742 .byte 197,60,89,202 // vmulps %ymm2,%ymm8,%ymm9
16743 .byte 197,180,88,246 // vaddps %ymm6,%ymm9,%ymm6
16744 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
16745 .byte 197,188,88,255 // vaddps %ymm7,%ymm8,%ymm7
16746 .byte 72,173 // lods %ds:(%rsi),%rax
16747 .byte 255,224 // jmpq *%rax
16748
16749HIDDEN _sk_bilinear_nx_avx
16750.globl _sk_bilinear_nx_avx
Mike Klein86714282017-04-13 17:37:38 -040016751FUNCTION(_sk_bilinear_nx_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016752_sk_bilinear_nx_avx:
16753 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016754 .byte 196,226,125,24,5,89,7,0,0 // vbroadcastss 0x759(%rip),%ymm0 # 572c <_sk_callback_avx+0x41a>
Mike Klein0a904492017-04-12 12:52:48 -040016755 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040016756 .byte 196,98,125,24,5,80,7,0,0 // vbroadcastss 0x750(%rip),%ymm8 # 5730 <_sk_callback_avx+0x41e>
Mike Klein0a904492017-04-12 12:52:48 -040016757 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
16758 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
16759 .byte 72,173 // lods %ds:(%rsi),%rax
16760 .byte 255,224 // jmpq *%rax
16761
16762HIDDEN _sk_bilinear_px_avx
16763.globl _sk_bilinear_px_avx
Mike Klein86714282017-04-13 17:37:38 -040016764FUNCTION(_sk_bilinear_px_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016765_sk_bilinear_px_avx:
16766 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016767 .byte 196,226,125,24,5,56,7,0,0 // vbroadcastss 0x738(%rip),%ymm0 # 5734 <_sk_callback_avx+0x422>
Mike Klein0a904492017-04-12 12:52:48 -040016768 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040016769 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040016770 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
16771 .byte 72,173 // lods %ds:(%rsi),%rax
16772 .byte 255,224 // jmpq *%rax
16773
16774HIDDEN _sk_bilinear_ny_avx
16775.globl _sk_bilinear_ny_avx
Mike Klein86714282017-04-13 17:37:38 -040016776FUNCTION(_sk_bilinear_ny_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016777_sk_bilinear_ny_avx:
16778 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016779 .byte 196,226,125,24,13,28,7,0,0 // vbroadcastss 0x71c(%rip),%ymm1 # 5738 <_sk_callback_avx+0x426>
Mike Klein0a904492017-04-12 12:52:48 -040016780 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040016781 .byte 196,98,125,24,5,18,7,0,0 // vbroadcastss 0x712(%rip),%ymm8 # 573c <_sk_callback_avx+0x42a>
Mike Klein0a904492017-04-12 12:52:48 -040016782 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
16783 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
16784 .byte 72,173 // lods %ds:(%rsi),%rax
16785 .byte 255,224 // jmpq *%rax
16786
16787HIDDEN _sk_bilinear_py_avx
16788.globl _sk_bilinear_py_avx
Mike Klein86714282017-04-13 17:37:38 -040016789FUNCTION(_sk_bilinear_py_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016790_sk_bilinear_py_avx:
16791 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016792 .byte 196,226,125,24,13,250,6,0,0 // vbroadcastss 0x6fa(%rip),%ymm1 # 5740 <_sk_callback_avx+0x42e>
Mike Klein0a904492017-04-12 12:52:48 -040016793 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040016794 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040016795 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
16796 .byte 72,173 // lods %ds:(%rsi),%rax
16797 .byte 255,224 // jmpq *%rax
16798
16799HIDDEN _sk_bicubic_n3x_avx
16800.globl _sk_bicubic_n3x_avx
Mike Klein86714282017-04-13 17:37:38 -040016801FUNCTION(_sk_bicubic_n3x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016802_sk_bicubic_n3x_avx:
16803 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016804 .byte 196,226,125,24,5,221,6,0,0 // vbroadcastss 0x6dd(%rip),%ymm0 # 5744 <_sk_callback_avx+0x432>
Mike Klein0a904492017-04-12 12:52:48 -040016805 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040016806 .byte 196,98,125,24,5,212,6,0,0 // vbroadcastss 0x6d4(%rip),%ymm8 # 5748 <_sk_callback_avx+0x436>
Mike Klein0a904492017-04-12 12:52:48 -040016807 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
16808 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016809 .byte 196,98,125,24,21,197,6,0,0 // vbroadcastss 0x6c5(%rip),%ymm10 # 574c <_sk_callback_avx+0x43a>
Mike Kleinfe560a82017-05-01 12:56:35 -040016810 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016811 .byte 196,98,125,24,21,187,6,0,0 // vbroadcastss 0x6bb(%rip),%ymm10 # 5750 <_sk_callback_avx+0x43e>
Mike Kleinfe560a82017-05-01 12:56:35 -040016812 .byte 196,65,60,88,194 // vaddps %ymm10,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040016813 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
16814 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
16815 .byte 72,173 // lods %ds:(%rsi),%rax
16816 .byte 255,224 // jmpq *%rax
16817
16818HIDDEN _sk_bicubic_n1x_avx
16819.globl _sk_bicubic_n1x_avx
Mike Klein86714282017-04-13 17:37:38 -040016820FUNCTION(_sk_bicubic_n1x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016821_sk_bicubic_n1x_avx:
16822 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016823 .byte 196,226,125,24,5,158,6,0,0 // vbroadcastss 0x69e(%rip),%ymm0 # 5754 <_sk_callback_avx+0x442>
Mike Klein0a904492017-04-12 12:52:48 -040016824 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040016825 .byte 196,98,125,24,5,149,6,0,0 // vbroadcastss 0x695(%rip),%ymm8 # 5758 <_sk_callback_avx+0x446>
Mike Klein0a904492017-04-12 12:52:48 -040016826 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016827 .byte 196,98,125,24,13,139,6,0,0 // vbroadcastss 0x68b(%rip),%ymm9 # 575c <_sk_callback_avx+0x44a>
Mike Klein0a904492017-04-12 12:52:48 -040016828 .byte 196,65,60,89,201 // vmulps %ymm9,%ymm8,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016829 .byte 196,98,125,24,21,129,6,0,0 // vbroadcastss 0x681(%rip),%ymm10 # 5760 <_sk_callback_avx+0x44e>
Mike Kleinfe560a82017-05-01 12:56:35 -040016830 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
16831 .byte 196,65,60,89,201 // vmulps %ymm9,%ymm8,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016832 .byte 196,98,125,24,21,114,6,0,0 // vbroadcastss 0x672(%rip),%ymm10 # 5764 <_sk_callback_avx+0x452>
Mike Kleinfe560a82017-05-01 12:56:35 -040016833 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
Mike Klein0a904492017-04-12 12:52:48 -040016834 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016835 .byte 196,98,125,24,13,99,6,0,0 // vbroadcastss 0x663(%rip),%ymm9 # 5768 <_sk_callback_avx+0x456>
Mike Kleinfe560a82017-05-01 12:56:35 -040016836 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040016837 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
16838 .byte 72,173 // lods %ds:(%rsi),%rax
16839 .byte 255,224 // jmpq *%rax
16840
16841HIDDEN _sk_bicubic_p1x_avx
16842.globl _sk_bicubic_p1x_avx
Mike Klein86714282017-04-13 17:37:38 -040016843FUNCTION(_sk_bicubic_p1x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016844_sk_bicubic_p1x_avx:
16845 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016846 .byte 196,98,125,24,5,75,6,0,0 // vbroadcastss 0x64b(%rip),%ymm8 # 576c <_sk_callback_avx+0x45a>
Mike Klein0a904492017-04-12 12:52:48 -040016847 .byte 197,188,88,0 // vaddps (%rax),%ymm8,%ymm0
16848 .byte 197,124,16,72,64 // vmovups 0x40(%rax),%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016849 .byte 196,98,125,24,21,61,6,0,0 // vbroadcastss 0x63d(%rip),%ymm10 # 5770 <_sk_callback_avx+0x45e>
Mike Klein0a904492017-04-12 12:52:48 -040016850 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040016851 .byte 196,98,125,24,29,51,6,0,0 // vbroadcastss 0x633(%rip),%ymm11 # 5774 <_sk_callback_avx+0x462>
Mike Klein0a904492017-04-12 12:52:48 -040016852 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
16853 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
Mike Klein0a904492017-04-12 12:52:48 -040016854 .byte 196,65,44,88,192 // vaddps %ymm8,%ymm10,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040016855 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016856 .byte 196,98,125,24,13,26,6,0,0 // vbroadcastss 0x61a(%rip),%ymm9 # 5778 <_sk_callback_avx+0x466>
Mike Kleinfe560a82017-05-01 12:56:35 -040016857 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040016858 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
16859 .byte 72,173 // lods %ds:(%rsi),%rax
16860 .byte 255,224 // jmpq *%rax
16861
16862HIDDEN _sk_bicubic_p3x_avx
16863.globl _sk_bicubic_p3x_avx
Mike Klein86714282017-04-13 17:37:38 -040016864FUNCTION(_sk_bicubic_p3x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016865_sk_bicubic_p3x_avx:
16866 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016867 .byte 196,226,125,24,5,2,6,0,0 // vbroadcastss 0x602(%rip),%ymm0 # 577c <_sk_callback_avx+0x46a>
Mike Klein0a904492017-04-12 12:52:48 -040016868 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
16869 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
16870 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016871 .byte 196,98,125,24,21,239,5,0,0 // vbroadcastss 0x5ef(%rip),%ymm10 # 5780 <_sk_callback_avx+0x46e>
Mike Klein0a904492017-04-12 12:52:48 -040016872 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016873 .byte 196,98,125,24,21,229,5,0,0 // vbroadcastss 0x5e5(%rip),%ymm10 # 5784 <_sk_callback_avx+0x472>
Mike Kleinfe560a82017-05-01 12:56:35 -040016874 .byte 196,65,60,88,194 // vaddps %ymm10,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040016875 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
16876 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
16877 .byte 72,173 // lods %ds:(%rsi),%rax
16878 .byte 255,224 // jmpq *%rax
16879
16880HIDDEN _sk_bicubic_n3y_avx
16881.globl _sk_bicubic_n3y_avx
Mike Klein86714282017-04-13 17:37:38 -040016882FUNCTION(_sk_bicubic_n3y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016883_sk_bicubic_n3y_avx:
16884 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016885 .byte 196,226,125,24,13,200,5,0,0 // vbroadcastss 0x5c8(%rip),%ymm1 # 5788 <_sk_callback_avx+0x476>
Mike Klein0a904492017-04-12 12:52:48 -040016886 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040016887 .byte 196,98,125,24,5,190,5,0,0 // vbroadcastss 0x5be(%rip),%ymm8 # 578c <_sk_callback_avx+0x47a>
Mike Klein0a904492017-04-12 12:52:48 -040016888 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
16889 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016890 .byte 196,98,125,24,21,175,5,0,0 // vbroadcastss 0x5af(%rip),%ymm10 # 5790 <_sk_callback_avx+0x47e>
Mike Kleinfe560a82017-05-01 12:56:35 -040016891 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016892 .byte 196,98,125,24,21,165,5,0,0 // vbroadcastss 0x5a5(%rip),%ymm10 # 5794 <_sk_callback_avx+0x482>
Mike Kleinfe560a82017-05-01 12:56:35 -040016893 .byte 196,65,60,88,194 // vaddps %ymm10,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040016894 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
16895 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
16896 .byte 72,173 // lods %ds:(%rsi),%rax
16897 .byte 255,224 // jmpq *%rax
16898
16899HIDDEN _sk_bicubic_n1y_avx
16900.globl _sk_bicubic_n1y_avx
Mike Klein86714282017-04-13 17:37:38 -040016901FUNCTION(_sk_bicubic_n1y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016902_sk_bicubic_n1y_avx:
16903 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016904 .byte 196,226,125,24,13,136,5,0,0 // vbroadcastss 0x588(%rip),%ymm1 # 5798 <_sk_callback_avx+0x486>
Mike Klein0a904492017-04-12 12:52:48 -040016905 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040016906 .byte 196,98,125,24,5,126,5,0,0 // vbroadcastss 0x57e(%rip),%ymm8 # 579c <_sk_callback_avx+0x48a>
Mike Klein0a904492017-04-12 12:52:48 -040016907 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016908 .byte 196,98,125,24,13,116,5,0,0 // vbroadcastss 0x574(%rip),%ymm9 # 57a0 <_sk_callback_avx+0x48e>
Mike Klein0a904492017-04-12 12:52:48 -040016909 .byte 196,65,60,89,201 // vmulps %ymm9,%ymm8,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016910 .byte 196,98,125,24,21,106,5,0,0 // vbroadcastss 0x56a(%rip),%ymm10 # 57a4 <_sk_callback_avx+0x492>
Mike Kleinfe560a82017-05-01 12:56:35 -040016911 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
16912 .byte 196,65,60,89,201 // vmulps %ymm9,%ymm8,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016913 .byte 196,98,125,24,21,91,5,0,0 // vbroadcastss 0x55b(%rip),%ymm10 # 57a8 <_sk_callback_avx+0x496>
Mike Kleinfe560a82017-05-01 12:56:35 -040016914 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
Mike Klein0a904492017-04-12 12:52:48 -040016915 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016916 .byte 196,98,125,24,13,76,5,0,0 // vbroadcastss 0x54c(%rip),%ymm9 # 57ac <_sk_callback_avx+0x49a>
Mike Kleinfe560a82017-05-01 12:56:35 -040016917 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040016918 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
16919 .byte 72,173 // lods %ds:(%rsi),%rax
16920 .byte 255,224 // jmpq *%rax
16921
16922HIDDEN _sk_bicubic_p1y_avx
16923.globl _sk_bicubic_p1y_avx
Mike Klein86714282017-04-13 17:37:38 -040016924FUNCTION(_sk_bicubic_p1y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016925_sk_bicubic_p1y_avx:
16926 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016927 .byte 196,98,125,24,5,52,5,0,0 // vbroadcastss 0x534(%rip),%ymm8 # 57b0 <_sk_callback_avx+0x49e>
Mike Klein0a904492017-04-12 12:52:48 -040016928 .byte 197,188,88,72,32 // vaddps 0x20(%rax),%ymm8,%ymm1
16929 .byte 197,124,16,72,96 // vmovups 0x60(%rax),%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016930 .byte 196,98,125,24,21,37,5,0,0 // vbroadcastss 0x525(%rip),%ymm10 # 57b4 <_sk_callback_avx+0x4a2>
Mike Klein0a904492017-04-12 12:52:48 -040016931 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040016932 .byte 196,98,125,24,29,27,5,0,0 // vbroadcastss 0x51b(%rip),%ymm11 # 57b8 <_sk_callback_avx+0x4a6>
Mike Klein0a904492017-04-12 12:52:48 -040016933 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
16934 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
Mike Klein0a904492017-04-12 12:52:48 -040016935 .byte 196,65,44,88,192 // vaddps %ymm8,%ymm10,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040016936 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016937 .byte 196,98,125,24,13,2,5,0,0 // vbroadcastss 0x502(%rip),%ymm9 # 57bc <_sk_callback_avx+0x4aa>
Mike Kleinfe560a82017-05-01 12:56:35 -040016938 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040016939 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
16940 .byte 72,173 // lods %ds:(%rsi),%rax
16941 .byte 255,224 // jmpq *%rax
16942
16943HIDDEN _sk_bicubic_p3y_avx
16944.globl _sk_bicubic_p3y_avx
Mike Klein86714282017-04-13 17:37:38 -040016945FUNCTION(_sk_bicubic_p3y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040016946_sk_bicubic_p3y_avx:
16947 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040016948 .byte 196,226,125,24,13,234,4,0,0 // vbroadcastss 0x4ea(%rip),%ymm1 # 57c0 <_sk_callback_avx+0x4ae>
Mike Klein0a904492017-04-12 12:52:48 -040016949 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
16950 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
16951 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040016952 .byte 196,98,125,24,21,214,4,0,0 // vbroadcastss 0x4d6(%rip),%ymm10 # 57c4 <_sk_callback_avx+0x4b2>
Mike Klein0a904492017-04-12 12:52:48 -040016953 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040016954 .byte 196,98,125,24,21,204,4,0,0 // vbroadcastss 0x4cc(%rip),%ymm10 # 57c8 <_sk_callback_avx+0x4b6>
Mike Kleinfe560a82017-05-01 12:56:35 -040016955 .byte 196,65,60,88,194 // vaddps %ymm10,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040016956 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
16957 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
16958 .byte 72,173 // lods %ds:(%rsi),%rax
16959 .byte 255,224 // jmpq *%rax
16960
Mike Klein7fee90c2017-04-07 16:55:09 -040016961HIDDEN _sk_callback_avx
16962.globl _sk_callback_avx
16963FUNCTION(_sk_callback_avx)
16964_sk_callback_avx:
16965 .byte 65,87 // push %r15
16966 .byte 65,86 // push %r14
Mike Kleinc17dc242017-04-20 16:21:57 -040016967 .byte 65,85 // push %r13
Mike Klein7fee90c2017-04-07 16:55:09 -040016968 .byte 65,84 // push %r12
16969 .byte 83 // push %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040016970 .byte 72,129,236,144,0,0,0 // sub $0x90,%rsp
16971 .byte 197,252,17,124,36,96 // vmovups %ymm7,0x60(%rsp)
16972 .byte 197,252,17,116,36,64 // vmovups %ymm6,0x40(%rsp)
16973 .byte 197,252,17,108,36,32 // vmovups %ymm5,0x20(%rsp)
16974 .byte 197,252,17,36,36 // vmovups %ymm4,(%rsp)
16975 .byte 73,137,205 // mov %rcx,%r13
Mike Klein7fee90c2017-04-07 16:55:09 -040016976 .byte 73,137,214 // mov %rdx,%r14
16977 .byte 73,137,255 // mov %rdi,%r15
16978 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinc17dc242017-04-20 16:21:57 -040016979 .byte 72,137,195 // mov %rax,%rbx
Mike Klein7fee90c2017-04-07 16:55:09 -040016980 .byte 73,137,244 // mov %rsi,%r12
Mike Kleinc17dc242017-04-20 16:21:57 -040016981 .byte 197,252,20,225 // vunpcklps %ymm1,%ymm0,%ymm4
16982 .byte 197,252,21,193 // vunpckhps %ymm1,%ymm0,%ymm0
16983 .byte 197,236,20,203 // vunpcklps %ymm3,%ymm2,%ymm1
16984 .byte 197,236,21,211 // vunpckhps %ymm3,%ymm2,%ymm2
16985 .byte 197,221,20,217 // vunpcklpd %ymm1,%ymm4,%ymm3
16986 .byte 197,221,21,201 // vunpckhpd %ymm1,%ymm4,%ymm1
16987 .byte 197,253,20,226 // vunpcklpd %ymm2,%ymm0,%ymm4
16988 .byte 197,253,21,194 // vunpckhpd %ymm2,%ymm0,%ymm0
16989 .byte 196,227,101,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm3,%ymm2
16990 .byte 196,227,93,24,232,1 // vinsertf128 $0x1,%xmm0,%ymm4,%ymm5
16991 .byte 196,227,101,6,201,49 // vperm2f128 $0x31,%ymm1,%ymm3,%ymm1
16992 .byte 196,227,93,6,192,49 // vperm2f128 $0x31,%ymm0,%ymm4,%ymm0
16993 .byte 197,253,17,83,8 // vmovupd %ymm2,0x8(%rbx)
16994 .byte 197,253,17,107,40 // vmovupd %ymm5,0x28(%rbx)
16995 .byte 197,253,17,75,72 // vmovupd %ymm1,0x48(%rbx)
16996 .byte 197,253,17,67,104 // vmovupd %ymm0,0x68(%rbx)
16997 .byte 77,133,237 // test %r13,%r13
Mike Klein7fee90c2017-04-07 16:55:09 -040016998 .byte 190,8,0,0,0 // mov $0x8,%esi
Mike Kleinc17dc242017-04-20 16:21:57 -040016999 .byte 65,15,69,245 // cmovne %r13d,%esi
17000 .byte 72,137,223 // mov %rbx,%rdi
Mike Klein7fee90c2017-04-07 16:55:09 -040017001 .byte 197,248,119 // vzeroupper
Mike Kleinc17dc242017-04-20 16:21:57 -040017002 .byte 255,19 // callq *(%rbx)
17003 .byte 72,139,131,136,0,0,0 // mov 0x88(%rbx),%rax
17004 .byte 197,248,16,0 // vmovups (%rax),%xmm0
17005 .byte 197,248,16,72,16 // vmovups 0x10(%rax),%xmm1
17006 .byte 197,248,16,80,32 // vmovups 0x20(%rax),%xmm2
17007 .byte 197,248,16,88,48 // vmovups 0x30(%rax),%xmm3
17008 .byte 196,227,101,24,88,112,1 // vinsertf128 $0x1,0x70(%rax),%ymm3,%ymm3
17009 .byte 196,227,109,24,80,96,1 // vinsertf128 $0x1,0x60(%rax),%ymm2,%ymm2
17010 .byte 196,227,117,24,72,80,1 // vinsertf128 $0x1,0x50(%rax),%ymm1,%ymm1
17011 .byte 196,227,125,24,64,64,1 // vinsertf128 $0x1,0x40(%rax),%ymm0,%ymm0
17012 .byte 197,252,20,225 // vunpcklps %ymm1,%ymm0,%ymm4
17013 .byte 197,252,21,233 // vunpckhps %ymm1,%ymm0,%ymm5
17014 .byte 197,236,20,203 // vunpcklps %ymm3,%ymm2,%ymm1
17015 .byte 197,236,21,219 // vunpckhps %ymm3,%ymm2,%ymm3
17016 .byte 197,221,20,193 // vunpcklpd %ymm1,%ymm4,%ymm0
17017 .byte 197,221,21,201 // vunpckhpd %ymm1,%ymm4,%ymm1
17018 .byte 197,213,20,211 // vunpcklpd %ymm3,%ymm5,%ymm2
17019 .byte 197,213,21,219 // vunpckhpd %ymm3,%ymm5,%ymm3
Mike Klein7fee90c2017-04-07 16:55:09 -040017020 .byte 76,137,230 // mov %r12,%rsi
17021 .byte 72,173 // lods %ds:(%rsi),%rax
17022 .byte 76,137,255 // mov %r15,%rdi
17023 .byte 76,137,242 // mov %r14,%rdx
Mike Kleinc17dc242017-04-20 16:21:57 -040017024 .byte 76,137,233 // mov %r13,%rcx
17025 .byte 197,252,16,36,36 // vmovups (%rsp),%ymm4
17026 .byte 197,252,16,108,36,32 // vmovups 0x20(%rsp),%ymm5
17027 .byte 197,252,16,116,36,64 // vmovups 0x40(%rsp),%ymm6
17028 .byte 197,252,16,124,36,96 // vmovups 0x60(%rsp),%ymm7
17029 .byte 72,129,196,144,0,0,0 // add $0x90,%rsp
Mike Klein7fee90c2017-04-07 16:55:09 -040017030 .byte 91 // pop %rbx
17031 .byte 65,92 // pop %r12
Mike Kleinc17dc242017-04-20 16:21:57 -040017032 .byte 65,93 // pop %r13
Mike Klein7fee90c2017-04-07 16:55:09 -040017033 .byte 65,94 // pop %r14
17034 .byte 65,95 // pop %r15
17035 .byte 255,224 // jmpq *%rax
17036
Mike Klein2229b572017-04-21 10:30:29 -040017037BALIGN4
17038 .byte 0,0 // add %al,(%rax)
17039 .byte 0,63 // add %bh,(%rdi)
17040 .byte 0,0 // add %al,(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040017041 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040017042 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
17043 .byte 63 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040017044 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017045 .byte 128,63,0 // cmpb $0x0,(%rdi)
17046 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
17047 .byte 63 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040017048 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017049 .byte 128,63,0 // cmpb $0x0,(%rdi)
17050 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
17051 .byte 63 // (bad)
17052 .byte 0,0 // add %al,(%rax)
17053 .byte 128,63,0 // cmpb $0x0,(%rdi)
17054 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
17055 .byte 63 // (bad)
17056 .byte 0,0 // add %al,(%rax)
17057 .byte 128,63,0 // cmpb $0x0,(%rdi)
17058 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
17059 .byte 63 // (bad)
17060 .byte 0,0 // add %al,(%rax)
17061 .byte 128,63,0 // cmpb $0x0,(%rdi)
17062 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
17063 .byte 63 // (bad)
17064 .byte 0,0 // add %al,(%rax)
17065 .byte 128,191,0,0,224,64,0 // cmpb $0x0,0x40e00000(%rdi)
17066 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
17067 .byte 63 // (bad)
17068 .byte 0,0 // add %al,(%rax)
17069 .byte 128,63,145 // cmpb $0x91,(%rdi)
17070 .byte 131,158,61,154,153,153,62 // sbbl $0x3e,-0x666665c3(%rsi)
17071 .byte 92 // pop %rsp
17072 .byte 143 // (bad)
17073 .byte 50,63 // xor (%rdi),%bh
17074 .byte 10,215 // or %bh,%dl
17075 .byte 35,59 // and (%rbx),%edi
17076 .byte 174 // scas %es:(%rdi),%al
17077 .byte 71,97 // rex.RXB (bad)
17078 .byte 61,41,92,71,65 // cmp $0x41475c29,%eax
17079 .byte 206 // (bad)
17080 .byte 111 // outsl %ds:(%rsi),(%dx)
17081 .byte 48,63 // xor %bh,(%rdi)
17082 .byte 168,87 // test $0x57,%al
17083 .byte 202,189,194 // lret $0xc2bd
17084 .byte 135,210 // xchg %edx,%edx
17085 .byte 62,0,0 // add %al,%ds:(%rax)
17086 .byte 128,63,4 // cmpb $0x4,(%rdi)
17087 .byte 231,140 // out %eax,$0x8c
17088 .byte 59,0 // cmp (%rax),%eax
17089 .byte 0,128,63,0,0,192 // add %al,-0x3fffffc1(%rax)
17090 .byte 64,0,0 // add %al,(%rax)
17091 .byte 0,64,0 // add %al,0x0(%rax)
17092 .byte 0,128,64,171,170,42 // add %al,0x2aaaab40(%rax)
17093 .byte 62,0,0 // add %al,%ds:(%rax)
17094 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040017095 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017096 .byte 128,63,171 // cmpb $0xab,(%rdi)
17097 .byte 170 // stos %al,%es:(%rdi)
17098 .byte 170 // stos %al,%es:(%rdi)
17099 .byte 62,0,0 // add %al,%ds:(%rax)
17100 .byte 128,191,0,0,192,64,171 // cmpb $0xab,0x40c00000(%rdi)
17101 .byte 170 // stos %al,%es:(%rdi)
17102 .byte 42,63 // sub (%rdi),%bh
17103 .byte 171 // stos %eax,%es:(%rdi)
17104 .byte 170 // stos %al,%es:(%rdi)
17105 .byte 170 // stos %al,%es:(%rdi)
17106 .byte 190,129,128,128,59 // mov $0x3b808081,%esi
17107 .byte 129,128,128,59,0,248,0,0,8,33 // addl $0x21080000,-0x7ffc480(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017108 .byte 132,55 // test %dh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017109 .byte 224,7 // loopne 550d <.literal4+0xd5>
Mike Kleinfe560a82017-05-01 12:56:35 -040017110 .byte 0,0 // add %al,(%rax)
17111 .byte 33,8 // and %ecx,(%rax)
17112 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040017113 .byte 31 // (bad)
17114 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017115 .byte 0,8 // add %cl,(%rax)
17116 .byte 33,4,61,0,0,128,63 // and %eax,0x3f800000(,%rdi,1)
17117 .byte 129,128,128,59,128,0,128,55,0,0 // addl $0x3780,0x803b80(%rax)
17118 .byte 128,63,0 // cmpb $0x0,(%rdi)
17119 .byte 0,127,67 // add %bh,0x43(%rdi)
17120 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
17121 .byte 0,52,255 // add %dh,(%rdi,%rdi,8)
Mike Kleinb4bbc642017-04-27 08:59:55 -040017122 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017123 .byte 127,0 // jg 5538 <.literal4+0x100>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017124 .byte 0,0 // add %al,(%rax)
17125 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017126 .byte 119,115 // ja 55b1 <.literal4+0x179>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017127 .byte 248 // clc
17128 .byte 194,117,191 // retq $0xbf75
17129 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
17130 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
17131 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
17132 .byte 154 // (bad)
17133 .byte 64,254 // rex (bad)
17134 .byte 210,221 // rcr %cl,%ch
17135 .byte 65,0,0 // add %al,(%r8)
17136 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040017137 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040017138 .byte 52,255 // xor $0xff,%al
17139 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017140 .byte 127,0 // jg 556c <.literal4+0x134>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017141 .byte 0,0 // add %al,(%rax)
17142 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017143 .byte 119,115 // ja 55e5 <.literal4+0x1ad>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017144 .byte 248 // clc
17145 .byte 194,117,191 // retq $0xbf75
17146 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
17147 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
17148 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
17149 .byte 154 // (bad)
17150 .byte 64,254 // rex (bad)
17151 .byte 210,221 // rcr %cl,%ch
17152 .byte 65,0,0 // add %al,(%r8)
17153 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040017154 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040017155 .byte 52,255 // xor $0xff,%al
17156 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017157 .byte 127,0 // jg 55a0 <.literal4+0x168>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017158 .byte 0,0 // add %al,(%rax)
17159 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017160 .byte 119,115 // ja 5619 <.literal4+0x1e1>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017161 .byte 248 // clc
17162 .byte 194,117,191 // retq $0xbf75
17163 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
17164 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
17165 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
17166 .byte 154 // (bad)
17167 .byte 64,254 // rex (bad)
17168 .byte 210,221 // rcr %cl,%ch
17169 .byte 65,0,0 // add %al,(%r8)
17170 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040017171 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040017172 .byte 52,255 // xor $0xff,%al
17173 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017174 .byte 127,0 // jg 55d4 <.literal4+0x19c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017175 .byte 0,0 // add %al,(%rax)
17176 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017177 .byte 119,115 // ja 564d <.literal4+0x215>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017178 .byte 248 // clc
17179 .byte 194,117,191 // retq $0xbf75
17180 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
17181 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
17182 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
17183 .byte 154 // (bad)
17184 .byte 64,254 // rex (bad)
17185 .byte 210,221 // rcr %cl,%ch
17186 .byte 65,0,0 // add %al,(%r8)
17187 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040017188 .byte 0,128,63,0,0,200 // add %al,-0x37ffffc1(%rax)
17189 .byte 66,0,0 // rex.X add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017190 .byte 127,67 // jg 564b <.literal4+0x213>
Mike Kleinfe560a82017-05-01 12:56:35 -040017191 .byte 0,0 // add %al,(%rax)
17192 .byte 0,195 // add %al,%bl
17193 .byte 0,0 // add %al,(%rax)
17194 .byte 128,65,203,61 // addb $0x3d,-0x35(%rcx)
17195 .byte 13,60,111,18,3 // or $0x3126f3c,%eax
17196 .byte 59,10 // cmp (%rdx),%ecx
17197 .byte 215 // xlat %ds:(%rbx)
17198 .byte 163,59,194,24,17,60,203,61,13 // movabs %eax,0xd3dcb3c1118c23b
17199 .byte 190,80,128,3,62 // mov $0x3e038050,%esi
17200 .byte 31 // (bad)
17201 .byte 215 // xlat %ds:(%rbx)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017202 .byte 118,63 // jbe 566b <.literal4+0x233>
Mike Kleinfe560a82017-05-01 12:56:35 -040017203 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
17204 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017205 .byte 127,67 // jg 567f <.literal4+0x247>
Mike Kleinfe560a82017-05-01 12:56:35 -040017206 .byte 129,128,128,59,0,0,128,63,129,128 // addl $0x80813f80,0x3b80(%rax)
17207 .byte 128,59,0 // cmpb $0x0,(%rbx)
17208 .byte 0,128,63,129,128,128 // add %al,-0x7f7f7ec1(%rax)
17209 .byte 59,0 // cmp (%rax),%eax
Mike Klein308e6242017-04-27 13:56:33 -040017210 .byte 248 // clc
17211 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017212 .byte 8,33 // or %ah,(%rcx)
17213 .byte 132,55 // test %dh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017214 .byte 224,7 // loopne 5661 <.literal4+0x229>
Mike Klein308e6242017-04-27 13:56:33 -040017215 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017216 .byte 33,8 // and %ecx,(%rax)
17217 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040017218 .byte 31 // (bad)
17219 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017220 .byte 0,8 // add %cl,(%rax)
17221 .byte 33,4,61,0,0,128,63 // and %eax,0x3f800000(,%rdi,1)
17222 .byte 0,248 // add %bh,%al
Mike Klein308e6242017-04-27 13:56:33 -040017223 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017224 .byte 8,33 // or %ah,(%rcx)
17225 .byte 132,55 // test %dh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017226 .byte 224,7 // loopne 567d <.literal4+0x245>
Mike Klein308e6242017-04-27 13:56:33 -040017227 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017228 .byte 33,8 // and %ecx,(%rax)
17229 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040017230 .byte 31 // (bad)
17231 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017232 .byte 0,8 // add %cl,(%rax)
17233 .byte 33,4,61,0,0,128,63 // and %eax,0x3f800000(,%rdi,1)
Mike Klein308e6242017-04-27 13:56:33 -040017234 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017235 .byte 248 // clc
17236 .byte 65,0,0 // add %al,(%r8)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017237 .byte 124,66 // jl 56d2 <.literal4+0x29a>
Mike Kleinfe560a82017-05-01 12:56:35 -040017238 .byte 0,240 // add %dh,%al
Mike Klein308e6242017-04-27 13:56:33 -040017239 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017240 .byte 137,136,136,55,0,15 // mov %ecx,0xf003788(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040017241 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017242 .byte 137,136,136,57,240,0 // mov %ecx,0xf03988(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040017243 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017244 .byte 137,136,136,59,15,0 // mov %ecx,0xf3b88(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040017245 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017246 .byte 137,136,136,61,0,240 // mov %ecx,-0xfffc278(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040017247 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017248 .byte 137,136,136,55,0,15 // mov %ecx,0xf003788(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040017249 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017250 .byte 137,136,136,57,240,0 // mov %ecx,0xf03988(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040017251 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017252 .byte 137,136,136,59,15,0 // mov %ecx,0xf3b88(%rax)
17253 .byte 0,0 // add %al,(%rax)
17254 .byte 137,136,136,61,0,0 // mov %ecx,0x3d88(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017255 .byte 112,65 // jo 5715 <.literal4+0x2dd>
Mike Kleinfe560a82017-05-01 12:56:35 -040017256 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040017257 .byte 127,67 // jg 5723 <.literal4+0x2eb>
Mike Kleinfe560a82017-05-01 12:56:35 -040017258 .byte 0,128,0,0,0,0 // add %al,0x0(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040017259 .byte 0,128,0,4,0,128 // add %al,-0x7ffffc00(%rax)
17260 .byte 0,0 // add %al,(%rax)
17261 .byte 0,56 // add %bh,(%rax)
17262 .byte 0,128,0,0,0,0 // add %al,0x0(%rax)
17263 .byte 0,128,0,4,0,128 // add %al,-0x7ffffc00(%rax)
17264 .byte 0,0 // add %al,(%rax)
17265 .byte 0,56 // add %bh,(%rax)
17266 .byte 0,0 // add %al,(%rax)
17267 .byte 0,128,0,0,128,56 // add %al,0x38800000(%rax)
17268 .byte 0,64,254 // add %al,-0x2(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040017269 .byte 255,128,0,128,55,128 // incl -0x7fc88000(%rax)
17270 .byte 0,128,55,0,0,128 // add %al,-0x7fffffc9(%rax)
17271 .byte 63 // (bad)
17272 .byte 0,255 // add %bh,%bh
Mike Kleinfb11acd2017-05-01 14:22:10 -040017273 .byte 127,71 // jg 5763 <.literal4+0x32b>
Mike Kleinfe560a82017-05-01 12:56:35 -040017274 .byte 208 // (bad)
17275 .byte 179,89 // mov $0x59,%bl
17276 .byte 62,89 // ds pop %rcx
17277 .byte 23 // (bad)
17278 .byte 55 // (bad)
17279 .byte 63 // (bad)
17280 .byte 152 // cwtl
17281 .byte 221,147,61,0,0,0 // fstl 0x3d(%rbx)
17282 .byte 63 // (bad)
17283 .byte 0,0 // add %al,(%rax)
17284 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
17285 .byte 0,0 // add %al,(%rax)
17286 .byte 0,63 // add %bh,(%rdi)
17287 .byte 0,0 // add %al,(%rax)
17288 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
17289 .byte 0,0 // add %al,(%rax)
17290 .byte 0,63 // add %bh,(%rdi)
17291 .byte 0,0 // add %al,(%rax)
17292 .byte 192,191,0,0,128,63,114 // sarb $0x72,0x3f800000(%rdi)
17293 .byte 28,199 // sbb $0xc7,%al
17294 .byte 62,171 // ds stos %eax,%es:(%rdi)
17295 .byte 170 // stos %al,%es:(%rdi)
17296 .byte 170 // stos %al,%es:(%rdi)
17297 .byte 190,0,0,0,191 // mov $0xbf000000,%esi
17298 .byte 0,0 // add %al,(%rax)
17299 .byte 128,63,85 // cmpb $0x55,(%rdi)
17300 .byte 85 // push %rbp
17301 .byte 149 // xchg %eax,%ebp
17302 .byte 191,0,0,192,63 // mov $0x3fc00000,%edi
17303 .byte 0,0 // add %al,(%rax)
17304 .byte 0,63 // add %bh,(%rdi)
17305 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
17306 .byte 0,63 // add %bh,(%rdi)
17307 .byte 85 // push %rbp
17308 .byte 85 // push %rbp
17309 .byte 149 // xchg %eax,%ebp
17310 .byte 191,0,0,192,63 // mov $0x3fc00000,%edi
17311 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
17312 .byte 192,63,114 // sarb $0x72,(%rdi)
17313 .byte 28,199 // sbb $0xc7,%al
17314 .byte 62,171 // ds stos %eax,%es:(%rdi)
17315 .byte 170 // stos %al,%es:(%rdi)
17316 .byte 170 // stos %al,%es:(%rdi)
17317 .byte 190,0,0,192,191 // mov $0xbfc00000,%esi
17318 .byte 0,0 // add %al,(%rax)
17319 .byte 128,63,114 // cmpb $0x72,(%rdi)
17320 .byte 28,199 // sbb $0xc7,%al
17321 .byte 62,171 // ds stos %eax,%es:(%rdi)
17322 .byte 170 // stos %al,%es:(%rdi)
17323 .byte 170 // stos %al,%es:(%rdi)
17324 .byte 190,0,0,0,191 // mov $0xbf000000,%esi
17325 .byte 0,0 // add %al,(%rax)
17326 .byte 128,63,85 // cmpb $0x55,(%rdi)
17327 .byte 85 // push %rbp
17328 .byte 149 // xchg %eax,%ebp
17329 .byte 191,0,0,192,63 // mov $0x3fc00000,%edi
17330 .byte 0,0 // add %al,(%rax)
17331 .byte 0,63 // add %bh,(%rdi)
17332 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
17333 .byte 0,63 // add %bh,(%rdi)
17334 .byte 85 // push %rbp
17335 .byte 85 // push %rbp
17336 .byte 149 // xchg %eax,%ebp
17337 .byte 191,0,0,192,63 // mov $0x3fc00000,%edi
17338 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
17339 .byte 192,63,114 // sarb $0x72,(%rdi)
17340 .byte 28,199 // sbb $0xc7,%al
17341 .byte 62,171 // ds stos %eax,%es:(%rdi)
17342 .byte 170 // stos %al,%es:(%rdi)
17343 .byte 170 // stos %al,%es:(%rdi)
17344 .byte 190 // .byte 0xbe
Mike Klein0aa742f2017-04-27 13:36:57 -040017345
17346BALIGN32
17347 .byte 255,0 // incl (%rax)
17348 .byte 0,0 // add %al,(%rax)
17349 .byte 255,0 // incl (%rax)
17350 .byte 0,0 // add %al,(%rax)
17351 .byte 255,0 // incl (%rax)
17352 .byte 0,0 // add %al,(%rax)
17353 .byte 255,0 // incl (%rax)
17354 .byte 0,0 // add %al,(%rax)
17355 .byte 255,0 // incl (%rax)
17356 .byte 0,0 // add %al,(%rax)
17357 .byte 255,0 // incl (%rax)
17358 .byte 0,0 // add %al,(%rax)
17359 .byte 255,0 // incl (%rax)
17360 .byte 0,0 // add %al,(%rax)
17361 .byte 255,0 // incl (%rax)
17362 .byte 0,0 // add %al,(%rax)
17363 .byte 255,0 // incl (%rax)
17364 .byte 0,0 // add %al,(%rax)
17365 .byte 255,0 // incl (%rax)
17366 .byte 0,0 // add %al,(%rax)
17367 .byte 255,0 // incl (%rax)
17368 .byte 0,0 // add %al,(%rax)
17369 .byte 255,0 // incl (%rax)
17370 .byte 0,0 // add %al,(%rax)
17371 .byte 255,0 // incl (%rax)
17372 .byte 0,0 // add %al,(%rax)
17373 .byte 255,0 // incl (%rax)
17374 .byte 0,0 // add %al,(%rax)
17375 .byte 255,0 // incl (%rax)
17376 .byte 0,0 // add %al,(%rax)
17377 .byte 255,0 // incl (%rax)
17378 .byte 0,0 // add %al,(%rax)
17379 .byte 255,0 // incl (%rax)
17380 .byte 0,0 // add %al,(%rax)
17381 .byte 255,0 // incl (%rax)
17382 .byte 0,0 // add %al,(%rax)
17383 .byte 255,0 // incl (%rax)
17384 .byte 0,0 // add %al,(%rax)
17385 .byte 255,0 // incl (%rax)
17386 .byte 0,0 // add %al,(%rax)
17387 .byte 255,0 // incl (%rax)
17388 .byte 0,0 // add %al,(%rax)
17389 .byte 255,0 // incl (%rax)
17390 .byte 0,0 // add %al,(%rax)
17391 .byte 255,0 // incl (%rax)
17392 .byte 0,0 // add %al,(%rax)
17393 .byte 255,0 // incl (%rax)
17394 .byte 0,0 // add %al,(%rax)
17395 .byte 255,0 // incl (%rax)
17396 .byte 0,0 // add %al,(%rax)
17397 .byte 255,0 // incl (%rax)
17398 .byte 0,0 // add %al,(%rax)
17399 .byte 255,0 // incl (%rax)
17400 .byte 0,0 // add %al,(%rax)
17401 .byte 255,0 // incl (%rax)
17402 .byte 0,0 // add %al,(%rax)
17403 .byte 255,0 // incl (%rax)
17404 .byte 0,0 // add %al,(%rax)
17405 .byte 255,0 // incl (%rax)
17406 .byte 0,0 // add %al,(%rax)
17407 .byte 255,0 // incl (%rax)
17408 .byte 0,0 // add %al,(%rax)
17409 .byte 255,0 // incl (%rax)
17410 .byte 0,0 // add %al,(%rax)
17411
17412BALIGN16
17413 .byte 255,0 // incl (%rax)
17414 .byte 255,0 // incl (%rax)
17415 .byte 255,0 // incl (%rax)
17416 .byte 255,0 // incl (%rax)
17417 .byte 255,0 // incl (%rax)
17418 .byte 255,0 // incl (%rax)
17419 .byte 255,0 // incl (%rax)
17420 .byte 255,0 // incl (%rax)
17421 .byte 255,0 // incl (%rax)
17422 .byte 255,0 // incl (%rax)
17423 .byte 255,0 // incl (%rax)
17424 .byte 255,0 // incl (%rax)
17425 .byte 255,0 // incl (%rax)
17426 .byte 255,0 // incl (%rax)
17427 .byte 255,0 // incl (%rax)
17428 .byte 255,0 // incl (%rax)
Mike Klein67e61712017-04-26 09:52:09 -040017429BALIGN32
Mike Klein2229b572017-04-21 10:30:29 -040017430
Mike Klein7c4af542017-03-29 18:21:14 -040017431HIDDEN _sk_start_pipeline_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017432.globl _sk_start_pipeline_sse41
Mike Klein86714282017-04-13 17:37:38 -040017433FUNCTION(_sk_start_pipeline_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017434_sk_start_pipeline_sse41:
17435 .byte 65,87 // push %r15
17436 .byte 65,86 // push %r14
17437 .byte 65,85 // push %r13
17438 .byte 65,84 // push %r12
17439 .byte 83 // push %rbx
17440 .byte 73,137,207 // mov %rcx,%r15
17441 .byte 73,137,214 // mov %rdx,%r14
17442 .byte 72,137,251 // mov %rdi,%rbx
17443 .byte 72,173 // lods %ds:(%rsi),%rax
17444 .byte 73,137,196 // mov %rax,%r12
17445 .byte 73,137,245 // mov %rsi,%r13
17446 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
17447 .byte 76,57,248 // cmp %r15,%rax
17448 .byte 118,5 // jbe 28 <_sk_start_pipeline_sse41+0x28>
17449 .byte 72,137,216 // mov %rbx,%rax
17450 .byte 235,52 // jmp 5c <_sk_start_pipeline_sse41+0x5c>
17451 .byte 15,87,192 // xorps %xmm0,%xmm0
17452 .byte 15,87,201 // xorps %xmm1,%xmm1
17453 .byte 15,87,210 // xorps %xmm2,%xmm2
17454 .byte 15,87,219 // xorps %xmm3,%xmm3
17455 .byte 15,87,228 // xorps %xmm4,%xmm4
17456 .byte 15,87,237 // xorps %xmm5,%xmm5
17457 .byte 15,87,246 // xorps %xmm6,%xmm6
17458 .byte 15,87,255 // xorps %xmm7,%xmm7
17459 .byte 72,137,223 // mov %rbx,%rdi
17460 .byte 76,137,238 // mov %r13,%rsi
17461 .byte 76,137,242 // mov %r14,%rdx
17462 .byte 65,255,212 // callq *%r12
17463 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
17464 .byte 72,131,195,8 // add $0x8,%rbx
17465 .byte 76,57,251 // cmp %r15,%rbx
17466 .byte 72,137,195 // mov %rax,%rbx
17467 .byte 118,204 // jbe 28 <_sk_start_pipeline_sse41+0x28>
17468 .byte 91 // pop %rbx
17469 .byte 65,92 // pop %r12
17470 .byte 65,93 // pop %r13
17471 .byte 65,94 // pop %r14
17472 .byte 65,95 // pop %r15
17473 .byte 195 // retq
17474
Mike Klein7c4af542017-03-29 18:21:14 -040017475HIDDEN _sk_just_return_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017476.globl _sk_just_return_sse41
Mike Klein86714282017-04-13 17:37:38 -040017477FUNCTION(_sk_just_return_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017478_sk_just_return_sse41:
17479 .byte 195 // retq
17480
Mike Klein7c4af542017-03-29 18:21:14 -040017481HIDDEN _sk_seed_shader_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017482.globl _sk_seed_shader_sse41
Mike Klein86714282017-04-13 17:37:38 -040017483FUNCTION(_sk_seed_shader_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017484_sk_seed_shader_sse41:
17485 .byte 72,173 // lods %ds:(%rsi),%rax
17486 .byte 102,15,110,199 // movd %edi,%xmm0
17487 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
17488 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040017489 .byte 15,40,21,148,57,0,0 // movaps 0x3994(%rip),%xmm2 # 3a10 <_sk_callback_sse41+0xe3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017490 .byte 15,88,202 // addps %xmm2,%xmm1
17491 .byte 15,16,2 // movups (%rdx),%xmm0
17492 .byte 15,88,193 // addps %xmm1,%xmm0
17493 .byte 102,15,110,8 // movd (%rax),%xmm1
17494 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
17495 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
17496 .byte 15,88,202 // addps %xmm2,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040017497 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040017498 .byte 15,40,21,131,57,0,0 // movaps 0x3983(%rip),%xmm2 # 3a20 <_sk_callback_sse41+0xf3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017499 .byte 15,87,219 // xorps %xmm3,%xmm3
17500 .byte 15,87,228 // xorps %xmm4,%xmm4
17501 .byte 15,87,237 // xorps %xmm5,%xmm5
17502 .byte 15,87,246 // xorps %xmm6,%xmm6
17503 .byte 15,87,255 // xorps %xmm7,%xmm7
17504 .byte 255,224 // jmpq *%rax
17505
Mike Klein7c4af542017-03-29 18:21:14 -040017506HIDDEN _sk_constant_color_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017507.globl _sk_constant_color_sse41
Mike Klein86714282017-04-13 17:37:38 -040017508FUNCTION(_sk_constant_color_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017509_sk_constant_color_sse41:
17510 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8a823fa2017-04-05 17:29:26 -040017511 .byte 243,15,16,0 // movss (%rax),%xmm0
17512 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040017513 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040017514 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
17515 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
17516 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
17517 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
17518 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040017519 .byte 72,173 // lods %ds:(%rsi),%rax
17520 .byte 255,224 // jmpq *%rax
17521
Mike Klein7c4af542017-03-29 18:21:14 -040017522HIDDEN _sk_clear_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017523.globl _sk_clear_sse41
Mike Klein86714282017-04-13 17:37:38 -040017524FUNCTION(_sk_clear_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017525_sk_clear_sse41:
17526 .byte 72,173 // lods %ds:(%rsi),%rax
17527 .byte 15,87,192 // xorps %xmm0,%xmm0
17528 .byte 15,87,201 // xorps %xmm1,%xmm1
17529 .byte 15,87,210 // xorps %xmm2,%xmm2
17530 .byte 15,87,219 // xorps %xmm3,%xmm3
17531 .byte 255,224 // jmpq *%rax
17532
Mike Kleinaaca1e42017-03-31 09:29:01 -040017533HIDDEN _sk_srcatop_sse41
17534.globl _sk_srcatop_sse41
Mike Klein86714282017-04-13 17:37:38 -040017535FUNCTION(_sk_srcatop_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017536_sk_srcatop_sse41:
17537 .byte 15,89,199 // mulps %xmm7,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040017538 .byte 68,15,40,5,62,57,0,0 // movaps 0x393e(%rip),%xmm8 # 3a30 <_sk_callback_sse41+0x103>
Mike Kleinaaca1e42017-03-31 09:29:01 -040017539 .byte 68,15,92,195 // subps %xmm3,%xmm8
17540 .byte 69,15,40,200 // movaps %xmm8,%xmm9
17541 .byte 68,15,89,204 // mulps %xmm4,%xmm9
17542 .byte 65,15,88,193 // addps %xmm9,%xmm0
17543 .byte 15,89,207 // mulps %xmm7,%xmm1
17544 .byte 69,15,40,200 // movaps %xmm8,%xmm9
17545 .byte 68,15,89,205 // mulps %xmm5,%xmm9
17546 .byte 65,15,88,201 // addps %xmm9,%xmm1
17547 .byte 15,89,215 // mulps %xmm7,%xmm2
17548 .byte 69,15,40,200 // movaps %xmm8,%xmm9
17549 .byte 68,15,89,206 // mulps %xmm6,%xmm9
17550 .byte 65,15,88,209 // addps %xmm9,%xmm2
17551 .byte 15,89,223 // mulps %xmm7,%xmm3
17552 .byte 68,15,89,199 // mulps %xmm7,%xmm8
17553 .byte 65,15,88,216 // addps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040017554 .byte 72,173 // lods %ds:(%rsi),%rax
17555 .byte 255,224 // jmpq *%rax
17556
Mike Kleinaaca1e42017-03-31 09:29:01 -040017557HIDDEN _sk_dstatop_sse41
17558.globl _sk_dstatop_sse41
Mike Klein86714282017-04-13 17:37:38 -040017559FUNCTION(_sk_dstatop_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017560_sk_dstatop_sse41:
17561 .byte 68,15,40,195 // movaps %xmm3,%xmm8
17562 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040017563 .byte 68,15,40,13,1,57,0,0 // movaps 0x3901(%rip),%xmm9 # 3a40 <_sk_callback_sse41+0x113>
Mike Kleinaaca1e42017-03-31 09:29:01 -040017564 .byte 68,15,92,207 // subps %xmm7,%xmm9
17565 .byte 65,15,89,193 // mulps %xmm9,%xmm0
17566 .byte 65,15,88,192 // addps %xmm8,%xmm0
17567 .byte 68,15,40,195 // movaps %xmm3,%xmm8
17568 .byte 68,15,89,197 // mulps %xmm5,%xmm8
17569 .byte 65,15,89,201 // mulps %xmm9,%xmm1
17570 .byte 65,15,88,200 // addps %xmm8,%xmm1
17571 .byte 68,15,40,195 // movaps %xmm3,%xmm8
17572 .byte 68,15,89,198 // mulps %xmm6,%xmm8
17573 .byte 65,15,89,209 // mulps %xmm9,%xmm2
17574 .byte 65,15,88,208 // addps %xmm8,%xmm2
17575 .byte 68,15,89,203 // mulps %xmm3,%xmm9
17576 .byte 15,89,223 // mulps %xmm7,%xmm3
17577 .byte 65,15,88,217 // addps %xmm9,%xmm3
17578 .byte 72,173 // lods %ds:(%rsi),%rax
17579 .byte 255,224 // jmpq *%rax
17580
17581HIDDEN _sk_srcin_sse41
17582.globl _sk_srcin_sse41
Mike Klein86714282017-04-13 17:37:38 -040017583FUNCTION(_sk_srcin_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017584_sk_srcin_sse41:
17585 .byte 15,89,199 // mulps %xmm7,%xmm0
17586 .byte 15,89,207 // mulps %xmm7,%xmm1
17587 .byte 15,89,215 // mulps %xmm7,%xmm2
17588 .byte 15,89,223 // mulps %xmm7,%xmm3
17589 .byte 72,173 // lods %ds:(%rsi),%rax
17590 .byte 255,224 // jmpq *%rax
17591
17592HIDDEN _sk_dstin_sse41
17593.globl _sk_dstin_sse41
Mike Klein86714282017-04-13 17:37:38 -040017594FUNCTION(_sk_dstin_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017595_sk_dstin_sse41:
17596 .byte 15,40,195 // movaps %xmm3,%xmm0
17597 .byte 15,89,196 // mulps %xmm4,%xmm0
17598 .byte 15,40,203 // movaps %xmm3,%xmm1
17599 .byte 15,89,205 // mulps %xmm5,%xmm1
17600 .byte 15,40,211 // movaps %xmm3,%xmm2
17601 .byte 15,89,214 // mulps %xmm6,%xmm2
17602 .byte 15,89,223 // mulps %xmm7,%xmm3
17603 .byte 72,173 // lods %ds:(%rsi),%rax
17604 .byte 255,224 // jmpq *%rax
17605
17606HIDDEN _sk_srcout_sse41
17607.globl _sk_srcout_sse41
Mike Klein86714282017-04-13 17:37:38 -040017608FUNCTION(_sk_srcout_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017609_sk_srcout_sse41:
Mike Kleinb3665f02017-05-01 14:56:04 -040017610 .byte 68,15,40,5,165,56,0,0 // movaps 0x38a5(%rip),%xmm8 # 3a50 <_sk_callback_sse41+0x123>
Mike Kleinaaca1e42017-03-31 09:29:01 -040017611 .byte 68,15,92,199 // subps %xmm7,%xmm8
17612 .byte 65,15,89,192 // mulps %xmm8,%xmm0
17613 .byte 65,15,89,200 // mulps %xmm8,%xmm1
17614 .byte 65,15,89,208 // mulps %xmm8,%xmm2
17615 .byte 65,15,89,216 // mulps %xmm8,%xmm3
17616 .byte 72,173 // lods %ds:(%rsi),%rax
17617 .byte 255,224 // jmpq *%rax
17618
17619HIDDEN _sk_dstout_sse41
17620.globl _sk_dstout_sse41
Mike Klein86714282017-04-13 17:37:38 -040017621FUNCTION(_sk_dstout_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017622_sk_dstout_sse41:
Mike Kleinb3665f02017-05-01 14:56:04 -040017623 .byte 68,15,40,5,149,56,0,0 // movaps 0x3895(%rip),%xmm8 # 3a60 <_sk_callback_sse41+0x133>
Mike Kleinaaca1e42017-03-31 09:29:01 -040017624 .byte 68,15,92,195 // subps %xmm3,%xmm8
17625 .byte 65,15,40,192 // movaps %xmm8,%xmm0
17626 .byte 15,89,196 // mulps %xmm4,%xmm0
17627 .byte 65,15,40,200 // movaps %xmm8,%xmm1
17628 .byte 15,89,205 // mulps %xmm5,%xmm1
17629 .byte 65,15,40,208 // movaps %xmm8,%xmm2
17630 .byte 15,89,214 // mulps %xmm6,%xmm2
17631 .byte 68,15,89,199 // mulps %xmm7,%xmm8
17632 .byte 72,173 // lods %ds:(%rsi),%rax
17633 .byte 65,15,40,216 // movaps %xmm8,%xmm3
17634 .byte 255,224 // jmpq *%rax
17635
Mike Klein7c4af542017-03-29 18:21:14 -040017636HIDDEN _sk_srcover_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017637.globl _sk_srcover_sse41
Mike Klein86714282017-04-13 17:37:38 -040017638FUNCTION(_sk_srcover_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017639_sk_srcover_sse41:
Mike Kleinb3665f02017-05-01 14:56:04 -040017640 .byte 68,15,40,5,120,56,0,0 // movaps 0x3878(%rip),%xmm8 # 3a70 <_sk_callback_sse41+0x143>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017641 .byte 68,15,92,195 // subps %xmm3,%xmm8
17642 .byte 69,15,40,200 // movaps %xmm8,%xmm9
17643 .byte 68,15,89,204 // mulps %xmm4,%xmm9
17644 .byte 65,15,88,193 // addps %xmm9,%xmm0
17645 .byte 69,15,40,200 // movaps %xmm8,%xmm9
17646 .byte 68,15,89,205 // mulps %xmm5,%xmm9
17647 .byte 65,15,88,201 // addps %xmm9,%xmm1
17648 .byte 69,15,40,200 // movaps %xmm8,%xmm9
17649 .byte 68,15,89,206 // mulps %xmm6,%xmm9
17650 .byte 65,15,88,209 // addps %xmm9,%xmm2
17651 .byte 68,15,89,199 // mulps %xmm7,%xmm8
17652 .byte 65,15,88,216 // addps %xmm8,%xmm3
17653 .byte 72,173 // lods %ds:(%rsi),%rax
17654 .byte 255,224 // jmpq *%rax
17655
Mike Klein7c4af542017-03-29 18:21:14 -040017656HIDDEN _sk_dstover_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017657.globl _sk_dstover_sse41
Mike Klein86714282017-04-13 17:37:38 -040017658FUNCTION(_sk_dstover_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017659_sk_dstover_sse41:
Mike Kleinb3665f02017-05-01 14:56:04 -040017660 .byte 68,15,40,5,76,56,0,0 // movaps 0x384c(%rip),%xmm8 # 3a80 <_sk_callback_sse41+0x153>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017661 .byte 68,15,92,199 // subps %xmm7,%xmm8
17662 .byte 65,15,89,192 // mulps %xmm8,%xmm0
17663 .byte 15,88,196 // addps %xmm4,%xmm0
17664 .byte 65,15,89,200 // mulps %xmm8,%xmm1
17665 .byte 15,88,205 // addps %xmm5,%xmm1
17666 .byte 65,15,89,208 // mulps %xmm8,%xmm2
17667 .byte 15,88,214 // addps %xmm6,%xmm2
17668 .byte 65,15,89,216 // mulps %xmm8,%xmm3
17669 .byte 15,88,223 // addps %xmm7,%xmm3
17670 .byte 72,173 // lods %ds:(%rsi),%rax
17671 .byte 255,224 // jmpq *%rax
17672
Mike Kleinaaca1e42017-03-31 09:29:01 -040017673HIDDEN _sk_modulate_sse41
17674.globl _sk_modulate_sse41
Mike Klein86714282017-04-13 17:37:38 -040017675FUNCTION(_sk_modulate_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017676_sk_modulate_sse41:
17677 .byte 15,89,196 // mulps %xmm4,%xmm0
17678 .byte 15,89,205 // mulps %xmm5,%xmm1
17679 .byte 15,89,214 // mulps %xmm6,%xmm2
17680 .byte 15,89,223 // mulps %xmm7,%xmm3
17681 .byte 72,173 // lods %ds:(%rsi),%rax
17682 .byte 255,224 // jmpq *%rax
17683
17684HIDDEN _sk_multiply_sse41
17685.globl _sk_multiply_sse41
Mike Klein86714282017-04-13 17:37:38 -040017686FUNCTION(_sk_multiply_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017687_sk_multiply_sse41:
Mike Kleinb3665f02017-05-01 14:56:04 -040017688 .byte 68,15,40,5,32,56,0,0 // movaps 0x3820(%rip),%xmm8 # 3a90 <_sk_callback_sse41+0x163>
Mike Kleinaaca1e42017-03-31 09:29:01 -040017689 .byte 69,15,40,200 // movaps %xmm8,%xmm9
17690 .byte 68,15,92,207 // subps %xmm7,%xmm9
17691 .byte 69,15,40,209 // movaps %xmm9,%xmm10
17692 .byte 68,15,89,208 // mulps %xmm0,%xmm10
17693 .byte 68,15,92,195 // subps %xmm3,%xmm8
17694 .byte 69,15,40,216 // movaps %xmm8,%xmm11
17695 .byte 68,15,89,220 // mulps %xmm4,%xmm11
17696 .byte 69,15,88,218 // addps %xmm10,%xmm11
17697 .byte 15,89,196 // mulps %xmm4,%xmm0
17698 .byte 65,15,88,195 // addps %xmm11,%xmm0
17699 .byte 69,15,40,209 // movaps %xmm9,%xmm10
17700 .byte 68,15,89,209 // mulps %xmm1,%xmm10
17701 .byte 69,15,40,216 // movaps %xmm8,%xmm11
17702 .byte 68,15,89,221 // mulps %xmm5,%xmm11
17703 .byte 69,15,88,218 // addps %xmm10,%xmm11
17704 .byte 15,89,205 // mulps %xmm5,%xmm1
17705 .byte 65,15,88,203 // addps %xmm11,%xmm1
17706 .byte 69,15,40,209 // movaps %xmm9,%xmm10
17707 .byte 68,15,89,210 // mulps %xmm2,%xmm10
17708 .byte 69,15,40,216 // movaps %xmm8,%xmm11
17709 .byte 68,15,89,222 // mulps %xmm6,%xmm11
17710 .byte 69,15,88,218 // addps %xmm10,%xmm11
17711 .byte 15,89,214 // mulps %xmm6,%xmm2
17712 .byte 65,15,88,211 // addps %xmm11,%xmm2
17713 .byte 68,15,89,203 // mulps %xmm3,%xmm9
17714 .byte 68,15,89,199 // mulps %xmm7,%xmm8
17715 .byte 69,15,88,193 // addps %xmm9,%xmm8
17716 .byte 15,89,223 // mulps %xmm7,%xmm3
17717 .byte 65,15,88,216 // addps %xmm8,%xmm3
17718 .byte 72,173 // lods %ds:(%rsi),%rax
17719 .byte 255,224 // jmpq *%rax
17720
17721HIDDEN _sk_plus__sse41
17722.globl _sk_plus__sse41
Mike Klein86714282017-04-13 17:37:38 -040017723FUNCTION(_sk_plus__sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017724_sk_plus__sse41:
17725 .byte 15,88,196 // addps %xmm4,%xmm0
17726 .byte 15,88,205 // addps %xmm5,%xmm1
17727 .byte 15,88,214 // addps %xmm6,%xmm2
17728 .byte 15,88,223 // addps %xmm7,%xmm3
17729 .byte 72,173 // lods %ds:(%rsi),%rax
17730 .byte 255,224 // jmpq *%rax
17731
17732HIDDEN _sk_screen_sse41
17733.globl _sk_screen_sse41
Mike Klein86714282017-04-13 17:37:38 -040017734FUNCTION(_sk_screen_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017735_sk_screen_sse41:
17736 .byte 68,15,40,192 // movaps %xmm0,%xmm8
17737 .byte 68,15,88,196 // addps %xmm4,%xmm8
17738 .byte 15,89,196 // mulps %xmm4,%xmm0
17739 .byte 68,15,92,192 // subps %xmm0,%xmm8
17740 .byte 68,15,40,201 // movaps %xmm1,%xmm9
17741 .byte 68,15,88,205 // addps %xmm5,%xmm9
17742 .byte 15,89,205 // mulps %xmm5,%xmm1
17743 .byte 68,15,92,201 // subps %xmm1,%xmm9
17744 .byte 68,15,40,210 // movaps %xmm2,%xmm10
17745 .byte 68,15,88,214 // addps %xmm6,%xmm10
17746 .byte 15,89,214 // mulps %xmm6,%xmm2
17747 .byte 68,15,92,210 // subps %xmm2,%xmm10
17748 .byte 68,15,40,219 // movaps %xmm3,%xmm11
17749 .byte 68,15,88,223 // addps %xmm7,%xmm11
17750 .byte 15,89,223 // mulps %xmm7,%xmm3
17751 .byte 68,15,92,219 // subps %xmm3,%xmm11
17752 .byte 72,173 // lods %ds:(%rsi),%rax
17753 .byte 65,15,40,192 // movaps %xmm8,%xmm0
17754 .byte 65,15,40,201 // movaps %xmm9,%xmm1
17755 .byte 65,15,40,210 // movaps %xmm10,%xmm2
17756 .byte 65,15,40,219 // movaps %xmm11,%xmm3
17757 .byte 255,224 // jmpq *%rax
17758
17759HIDDEN _sk_xor__sse41
17760.globl _sk_xor__sse41
Mike Klein86714282017-04-13 17:37:38 -040017761FUNCTION(_sk_xor__sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017762_sk_xor__sse41:
17763 .byte 68,15,40,195 // movaps %xmm3,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040017764 .byte 15,40,29,81,55,0,0 // movaps 0x3751(%rip),%xmm3 # 3aa0 <_sk_callback_sse41+0x173>
Mike Kleinaaca1e42017-03-31 09:29:01 -040017765 .byte 68,15,40,203 // movaps %xmm3,%xmm9
17766 .byte 68,15,92,207 // subps %xmm7,%xmm9
17767 .byte 65,15,89,193 // mulps %xmm9,%xmm0
17768 .byte 65,15,92,216 // subps %xmm8,%xmm3
17769 .byte 68,15,40,211 // movaps %xmm3,%xmm10
17770 .byte 68,15,89,212 // mulps %xmm4,%xmm10
17771 .byte 65,15,88,194 // addps %xmm10,%xmm0
17772 .byte 65,15,89,201 // mulps %xmm9,%xmm1
17773 .byte 68,15,40,211 // movaps %xmm3,%xmm10
17774 .byte 68,15,89,213 // mulps %xmm5,%xmm10
17775 .byte 65,15,88,202 // addps %xmm10,%xmm1
17776 .byte 65,15,89,209 // mulps %xmm9,%xmm2
17777 .byte 68,15,40,211 // movaps %xmm3,%xmm10
17778 .byte 68,15,89,214 // mulps %xmm6,%xmm10
17779 .byte 65,15,88,210 // addps %xmm10,%xmm2
17780 .byte 69,15,89,200 // mulps %xmm8,%xmm9
17781 .byte 15,89,223 // mulps %xmm7,%xmm3
17782 .byte 65,15,88,217 // addps %xmm9,%xmm3
17783 .byte 72,173 // lods %ds:(%rsi),%rax
17784 .byte 255,224 // jmpq *%rax
17785
Mike Klein66b09ab2017-03-31 10:29:40 -040017786HIDDEN _sk_darken_sse41
17787.globl _sk_darken_sse41
Mike Klein86714282017-04-13 17:37:38 -040017788FUNCTION(_sk_darken_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040017789_sk_darken_sse41:
17790 .byte 68,15,40,193 // movaps %xmm1,%xmm8
17791 .byte 68,15,40,200 // movaps %xmm0,%xmm9
17792 .byte 15,88,196 // addps %xmm4,%xmm0
17793 .byte 68,15,89,207 // mulps %xmm7,%xmm9
17794 .byte 15,40,203 // movaps %xmm3,%xmm1
17795 .byte 15,89,204 // mulps %xmm4,%xmm1
17796 .byte 68,15,95,201 // maxps %xmm1,%xmm9
17797 .byte 65,15,92,193 // subps %xmm9,%xmm0
17798 .byte 65,15,40,200 // movaps %xmm8,%xmm1
17799 .byte 15,88,205 // addps %xmm5,%xmm1
17800 .byte 68,15,89,199 // mulps %xmm7,%xmm8
17801 .byte 68,15,40,203 // movaps %xmm3,%xmm9
17802 .byte 68,15,89,205 // mulps %xmm5,%xmm9
17803 .byte 69,15,95,193 // maxps %xmm9,%xmm8
17804 .byte 65,15,92,200 // subps %xmm8,%xmm1
17805 .byte 68,15,40,194 // movaps %xmm2,%xmm8
17806 .byte 68,15,88,198 // addps %xmm6,%xmm8
17807 .byte 15,89,215 // mulps %xmm7,%xmm2
17808 .byte 68,15,40,203 // movaps %xmm3,%xmm9
17809 .byte 68,15,89,206 // mulps %xmm6,%xmm9
17810 .byte 65,15,95,209 // maxps %xmm9,%xmm2
17811 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040017812 .byte 15,40,21,188,54,0,0 // movaps 0x36bc(%rip),%xmm2 # 3ab0 <_sk_callback_sse41+0x183>
Mike Klein66b09ab2017-03-31 10:29:40 -040017813 .byte 15,92,211 // subps %xmm3,%xmm2
17814 .byte 15,89,215 // mulps %xmm7,%xmm2
17815 .byte 15,88,218 // addps %xmm2,%xmm3
17816 .byte 72,173 // lods %ds:(%rsi),%rax
17817 .byte 65,15,40,208 // movaps %xmm8,%xmm2
17818 .byte 255,224 // jmpq *%rax
17819
17820HIDDEN _sk_lighten_sse41
17821.globl _sk_lighten_sse41
Mike Klein86714282017-04-13 17:37:38 -040017822FUNCTION(_sk_lighten_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040017823_sk_lighten_sse41:
17824 .byte 68,15,40,193 // movaps %xmm1,%xmm8
17825 .byte 68,15,40,200 // movaps %xmm0,%xmm9
17826 .byte 15,88,196 // addps %xmm4,%xmm0
17827 .byte 68,15,89,207 // mulps %xmm7,%xmm9
17828 .byte 15,40,203 // movaps %xmm3,%xmm1
17829 .byte 15,89,204 // mulps %xmm4,%xmm1
17830 .byte 68,15,93,201 // minps %xmm1,%xmm9
17831 .byte 65,15,92,193 // subps %xmm9,%xmm0
17832 .byte 65,15,40,200 // movaps %xmm8,%xmm1
17833 .byte 15,88,205 // addps %xmm5,%xmm1
17834 .byte 68,15,89,199 // mulps %xmm7,%xmm8
17835 .byte 68,15,40,203 // movaps %xmm3,%xmm9
17836 .byte 68,15,89,205 // mulps %xmm5,%xmm9
17837 .byte 69,15,93,193 // minps %xmm9,%xmm8
17838 .byte 65,15,92,200 // subps %xmm8,%xmm1
17839 .byte 68,15,40,194 // movaps %xmm2,%xmm8
17840 .byte 68,15,88,198 // addps %xmm6,%xmm8
17841 .byte 15,89,215 // mulps %xmm7,%xmm2
17842 .byte 68,15,40,203 // movaps %xmm3,%xmm9
17843 .byte 68,15,89,206 // mulps %xmm6,%xmm9
17844 .byte 65,15,93,209 // minps %xmm9,%xmm2
17845 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040017846 .byte 15,40,21,97,54,0,0 // movaps 0x3661(%rip),%xmm2 # 3ac0 <_sk_callback_sse41+0x193>
Mike Klein66b09ab2017-03-31 10:29:40 -040017847 .byte 15,92,211 // subps %xmm3,%xmm2
17848 .byte 15,89,215 // mulps %xmm7,%xmm2
17849 .byte 15,88,218 // addps %xmm2,%xmm3
17850 .byte 72,173 // lods %ds:(%rsi),%rax
17851 .byte 65,15,40,208 // movaps %xmm8,%xmm2
17852 .byte 255,224 // jmpq *%rax
17853
17854HIDDEN _sk_difference_sse41
17855.globl _sk_difference_sse41
Mike Klein86714282017-04-13 17:37:38 -040017856FUNCTION(_sk_difference_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040017857_sk_difference_sse41:
17858 .byte 68,15,40,193 // movaps %xmm1,%xmm8
17859 .byte 68,15,40,200 // movaps %xmm0,%xmm9
17860 .byte 15,88,196 // addps %xmm4,%xmm0
17861 .byte 68,15,89,207 // mulps %xmm7,%xmm9
17862 .byte 15,40,203 // movaps %xmm3,%xmm1
17863 .byte 15,89,204 // mulps %xmm4,%xmm1
17864 .byte 68,15,93,201 // minps %xmm1,%xmm9
17865 .byte 69,15,88,201 // addps %xmm9,%xmm9
17866 .byte 65,15,92,193 // subps %xmm9,%xmm0
17867 .byte 65,15,40,200 // movaps %xmm8,%xmm1
17868 .byte 15,88,205 // addps %xmm5,%xmm1
17869 .byte 68,15,89,199 // mulps %xmm7,%xmm8
17870 .byte 68,15,40,203 // movaps %xmm3,%xmm9
17871 .byte 68,15,89,205 // mulps %xmm5,%xmm9
17872 .byte 69,15,93,193 // minps %xmm9,%xmm8
17873 .byte 69,15,88,192 // addps %xmm8,%xmm8
17874 .byte 65,15,92,200 // subps %xmm8,%xmm1
17875 .byte 68,15,40,194 // movaps %xmm2,%xmm8
17876 .byte 68,15,88,198 // addps %xmm6,%xmm8
17877 .byte 15,89,215 // mulps %xmm7,%xmm2
17878 .byte 68,15,40,203 // movaps %xmm3,%xmm9
17879 .byte 68,15,89,206 // mulps %xmm6,%xmm9
17880 .byte 65,15,93,209 // minps %xmm9,%xmm2
17881 .byte 15,88,210 // addps %xmm2,%xmm2
17882 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040017883 .byte 15,40,21,251,53,0,0 // movaps 0x35fb(%rip),%xmm2 # 3ad0 <_sk_callback_sse41+0x1a3>
Mike Klein66b09ab2017-03-31 10:29:40 -040017884 .byte 15,92,211 // subps %xmm3,%xmm2
17885 .byte 15,89,215 // mulps %xmm7,%xmm2
17886 .byte 15,88,218 // addps %xmm2,%xmm3
17887 .byte 72,173 // lods %ds:(%rsi),%rax
17888 .byte 65,15,40,208 // movaps %xmm8,%xmm2
17889 .byte 255,224 // jmpq *%rax
17890
17891HIDDEN _sk_exclusion_sse41
17892.globl _sk_exclusion_sse41
Mike Klein86714282017-04-13 17:37:38 -040017893FUNCTION(_sk_exclusion_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040017894_sk_exclusion_sse41:
Mike Kleinfe560a82017-05-01 12:56:35 -040017895 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Klein66b09ab2017-03-31 10:29:40 -040017896 .byte 15,88,196 // addps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040017897 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Klein66b09ab2017-03-31 10:29:40 -040017898 .byte 69,15,88,192 // addps %xmm8,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040017899 .byte 65,15,92,192 // subps %xmm8,%xmm0
17900 .byte 68,15,40,193 // movaps %xmm1,%xmm8
17901 .byte 68,15,88,197 // addps %xmm5,%xmm8
17902 .byte 15,89,205 // mulps %xmm5,%xmm1
17903 .byte 15,88,201 // addps %xmm1,%xmm1
17904 .byte 68,15,92,193 // subps %xmm1,%xmm8
17905 .byte 68,15,40,202 // movaps %xmm2,%xmm9
17906 .byte 68,15,88,206 // addps %xmm6,%xmm9
Mike Klein66b09ab2017-03-31 10:29:40 -040017907 .byte 15,89,214 // mulps %xmm6,%xmm2
17908 .byte 15,88,210 // addps %xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040017909 .byte 68,15,92,202 // subps %xmm2,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040017910 .byte 15,40,13,188,53,0,0 // movaps 0x35bc(%rip),%xmm1 # 3ae0 <_sk_callback_sse41+0x1b3>
Mike Kleinfe560a82017-05-01 12:56:35 -040017911 .byte 15,92,203 // subps %xmm3,%xmm1
17912 .byte 15,89,207 // mulps %xmm7,%xmm1
17913 .byte 15,88,217 // addps %xmm1,%xmm3
Mike Klein66b09ab2017-03-31 10:29:40 -040017914 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040017915 .byte 65,15,40,200 // movaps %xmm8,%xmm1
17916 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Klein66b09ab2017-03-31 10:29:40 -040017917 .byte 255,224 // jmpq *%rax
17918
Mike Klein61b84162017-03-31 11:48:14 -040017919HIDDEN _sk_colorburn_sse41
17920.globl _sk_colorburn_sse41
Mike Klein86714282017-04-13 17:37:38 -040017921FUNCTION(_sk_colorburn_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040017922_sk_colorburn_sse41:
Mike Kleinfe560a82017-05-01 12:56:35 -040017923 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040017924 .byte 68,15,40,21,171,53,0,0 // movaps 0x35ab(%rip),%xmm10 # 3af0 <_sk_callback_sse41+0x1c3>
Mike Klein61b84162017-03-31 11:48:14 -040017925 .byte 69,15,40,218 // movaps %xmm10,%xmm11
17926 .byte 68,15,92,223 // subps %xmm7,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040017927 .byte 69,15,40,203 // movaps %xmm11,%xmm9
17928 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Klein61b84162017-03-31 11:48:14 -040017929 .byte 15,40,199 // movaps %xmm7,%xmm0
17930 .byte 15,92,196 // subps %xmm4,%xmm0
17931 .byte 15,89,195 // mulps %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040017932 .byte 65,15,94,192 // divps %xmm8,%xmm0
17933 .byte 68,15,40,231 // movaps %xmm7,%xmm12
17934 .byte 68,15,93,224 // minps %xmm0,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040017935 .byte 68,15,40,239 // movaps %xmm7,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040017936 .byte 69,15,92,236 // subps %xmm12,%xmm13
17937 .byte 68,15,89,235 // mulps %xmm3,%xmm13
17938 .byte 69,15,88,233 // addps %xmm9,%xmm13
17939 .byte 69,15,40,225 // movaps %xmm9,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040017940 .byte 68,15,88,228 // addps %xmm4,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040017941 .byte 69,15,87,201 // xorps %xmm9,%xmm9
17942 .byte 65,15,40,192 // movaps %xmm8,%xmm0
17943 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
17944 .byte 68,15,92,211 // subps %xmm3,%xmm10
17945 .byte 102,69,15,56,20,232 // blendvps %xmm0,%xmm8,%xmm13
17946 .byte 69,15,40,194 // movaps %xmm10,%xmm8
17947 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040017948 .byte 15,40,196 // movaps %xmm4,%xmm0
17949 .byte 15,194,199,0 // cmpeqps %xmm7,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040017950 .byte 69,15,88,197 // addps %xmm13,%xmm8
17951 .byte 102,69,15,56,20,196 // blendvps %xmm0,%xmm12,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040017952 .byte 69,15,40,227 // movaps %xmm11,%xmm12
17953 .byte 68,15,89,225 // mulps %xmm1,%xmm12
17954 .byte 15,40,199 // movaps %xmm7,%xmm0
17955 .byte 15,92,197 // subps %xmm5,%xmm0
17956 .byte 15,89,195 // mulps %xmm3,%xmm0
17957 .byte 15,94,193 // divps %xmm1,%xmm0
17958 .byte 68,15,40,239 // movaps %xmm7,%xmm13
17959 .byte 68,15,93,232 // minps %xmm0,%xmm13
17960 .byte 68,15,40,247 // movaps %xmm7,%xmm14
17961 .byte 69,15,92,245 // subps %xmm13,%xmm14
17962 .byte 15,40,193 // movaps %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040017963 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040017964 .byte 68,15,89,243 // mulps %xmm3,%xmm14
17965 .byte 69,15,88,244 // addps %xmm12,%xmm14
17966 .byte 102,68,15,56,20,241 // blendvps %xmm0,%xmm1,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040017967 .byte 68,15,88,229 // addps %xmm5,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040017968 .byte 65,15,40,202 // movaps %xmm10,%xmm1
17969 .byte 15,89,205 // mulps %xmm5,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040017970 .byte 65,15,88,206 // addps %xmm14,%xmm1
17971 .byte 15,40,197 // movaps %xmm5,%xmm0
17972 .byte 15,194,199,0 // cmpeqps %xmm7,%xmm0
17973 .byte 102,65,15,56,20,204 // blendvps %xmm0,%xmm12,%xmm1
17974 .byte 15,40,199 // movaps %xmm7,%xmm0
17975 .byte 15,92,198 // subps %xmm6,%xmm0
17976 .byte 15,89,195 // mulps %xmm3,%xmm0
17977 .byte 15,94,194 // divps %xmm2,%xmm0
17978 .byte 68,15,40,231 // movaps %xmm7,%xmm12
17979 .byte 68,15,93,224 // minps %xmm0,%xmm12
17980 .byte 68,15,40,239 // movaps %xmm7,%xmm13
17981 .byte 69,15,92,236 // subps %xmm12,%xmm13
17982 .byte 68,15,89,218 // mulps %xmm2,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040017983 .byte 68,15,194,202,0 // cmpeqps %xmm2,%xmm9
Mike Klein61b84162017-03-31 11:48:14 -040017984 .byte 68,15,89,235 // mulps %xmm3,%xmm13
17985 .byte 69,15,88,235 // addps %xmm11,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040017986 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040017987 .byte 102,68,15,56,20,234 // blendvps %xmm0,%xmm2,%xmm13
17988 .byte 68,15,88,222 // addps %xmm6,%xmm11
17989 .byte 65,15,40,210 // movaps %xmm10,%xmm2
17990 .byte 15,89,214 // mulps %xmm6,%xmm2
17991 .byte 65,15,88,213 // addps %xmm13,%xmm2
17992 .byte 15,40,198 // movaps %xmm6,%xmm0
17993 .byte 15,194,199,0 // cmpeqps %xmm7,%xmm0
17994 .byte 102,65,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm2
17995 .byte 68,15,89,215 // mulps %xmm7,%xmm10
17996 .byte 65,15,88,218 // addps %xmm10,%xmm3
17997 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040017998 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040017999 .byte 255,224 // jmpq *%rax
18000
18001HIDDEN _sk_colordodge_sse41
18002.globl _sk_colordodge_sse41
Mike Klein86714282017-04-13 17:37:38 -040018003FUNCTION(_sk_colordodge_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040018004_sk_colordodge_sse41:
18005 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018006 .byte 68,15,40,21,137,52,0,0 // movaps 0x3489(%rip),%xmm10 # 3b00 <_sk_callback_sse41+0x1d3>
Mike Klein61b84162017-03-31 11:48:14 -040018007 .byte 69,15,40,218 // movaps %xmm10,%xmm11
18008 .byte 68,15,92,223 // subps %xmm7,%xmm11
18009 .byte 69,15,40,227 // movaps %xmm11,%xmm12
18010 .byte 69,15,89,224 // mulps %xmm8,%xmm12
18011 .byte 68,15,40,203 // movaps %xmm3,%xmm9
18012 .byte 68,15,89,204 // mulps %xmm4,%xmm9
18013 .byte 15,40,195 // movaps %xmm3,%xmm0
18014 .byte 65,15,92,192 // subps %xmm8,%xmm0
18015 .byte 68,15,94,200 // divps %xmm0,%xmm9
18016 .byte 68,15,40,239 // movaps %xmm7,%xmm13
18017 .byte 68,15,40,247 // movaps %xmm7,%xmm14
18018 .byte 69,15,93,241 // minps %xmm9,%xmm14
18019 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18020 .byte 15,194,195,0 // cmpeqps %xmm3,%xmm0
18021 .byte 68,15,89,243 // mulps %xmm3,%xmm14
18022 .byte 69,15,88,244 // addps %xmm12,%xmm14
18023 .byte 102,69,15,56,20,240 // blendvps %xmm0,%xmm8,%xmm14
18024 .byte 69,15,87,201 // xorps %xmm9,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040018025 .byte 68,15,88,228 // addps %xmm4,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040018026 .byte 68,15,92,211 // subps %xmm3,%xmm10
18027 .byte 69,15,40,194 // movaps %xmm10,%xmm8
18028 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040018029 .byte 69,15,88,198 // addps %xmm14,%xmm8
18030 .byte 15,40,196 // movaps %xmm4,%xmm0
18031 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
18032 .byte 102,69,15,56,20,196 // blendvps %xmm0,%xmm12,%xmm8
18033 .byte 68,15,40,227 // movaps %xmm3,%xmm12
18034 .byte 68,15,89,229 // mulps %xmm5,%xmm12
18035 .byte 15,40,195 // movaps %xmm3,%xmm0
18036 .byte 15,92,193 // subps %xmm1,%xmm0
18037 .byte 68,15,94,224 // divps %xmm0,%xmm12
18038 .byte 69,15,40,243 // movaps %xmm11,%xmm14
18039 .byte 68,15,89,241 // mulps %xmm1,%xmm14
18040 .byte 69,15,93,236 // minps %xmm12,%xmm13
18041 .byte 15,40,193 // movaps %xmm1,%xmm0
18042 .byte 15,194,195,0 // cmpeqps %xmm3,%xmm0
18043 .byte 68,15,89,235 // mulps %xmm3,%xmm13
18044 .byte 69,15,88,238 // addps %xmm14,%xmm13
18045 .byte 102,68,15,56,20,233 // blendvps %xmm0,%xmm1,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040018046 .byte 68,15,88,245 // addps %xmm5,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040018047 .byte 65,15,40,202 // movaps %xmm10,%xmm1
18048 .byte 15,89,205 // mulps %xmm5,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040018049 .byte 65,15,88,205 // addps %xmm13,%xmm1
18050 .byte 15,40,197 // movaps %xmm5,%xmm0
18051 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
18052 .byte 102,65,15,56,20,206 // blendvps %xmm0,%xmm14,%xmm1
18053 .byte 68,15,40,227 // movaps %xmm3,%xmm12
18054 .byte 68,15,89,230 // mulps %xmm6,%xmm12
18055 .byte 15,40,195 // movaps %xmm3,%xmm0
18056 .byte 15,92,194 // subps %xmm2,%xmm0
18057 .byte 68,15,94,224 // divps %xmm0,%xmm12
18058 .byte 68,15,40,239 // movaps %xmm7,%xmm13
18059 .byte 68,15,89,218 // mulps %xmm2,%xmm11
18060 .byte 69,15,93,236 // minps %xmm12,%xmm13
18061 .byte 15,40,194 // movaps %xmm2,%xmm0
18062 .byte 15,194,195,0 // cmpeqps %xmm3,%xmm0
18063 .byte 68,15,89,235 // mulps %xmm3,%xmm13
18064 .byte 69,15,88,235 // addps %xmm11,%xmm13
18065 .byte 102,68,15,56,20,234 // blendvps %xmm0,%xmm2,%xmm13
18066 .byte 65,15,40,210 // movaps %xmm10,%xmm2
18067 .byte 15,89,214 // mulps %xmm6,%xmm2
18068 .byte 65,15,88,213 // addps %xmm13,%xmm2
18069 .byte 68,15,194,206,0 // cmpeqps %xmm6,%xmm9
18070 .byte 68,15,88,222 // addps %xmm6,%xmm11
18071 .byte 65,15,40,193 // movaps %xmm9,%xmm0
18072 .byte 102,65,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm2
18073 .byte 68,15,89,215 // mulps %xmm7,%xmm10
18074 .byte 65,15,88,218 // addps %xmm10,%xmm3
18075 .byte 72,173 // lods %ds:(%rsi),%rax
18076 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18077 .byte 255,224 // jmpq *%rax
18078
18079HIDDEN _sk_hardlight_sse41
18080.globl _sk_hardlight_sse41
Mike Klein86714282017-04-13 17:37:38 -040018081FUNCTION(_sk_hardlight_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040018082_sk_hardlight_sse41:
Mike Klein15bf6782017-03-31 12:21:46 -040018083 .byte 15,41,116,36,232 // movaps %xmm6,-0x18(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040018084 .byte 68,15,40,229 // movaps %xmm5,%xmm12
18085 .byte 15,40,244 // movaps %xmm4,%xmm6
18086 .byte 15,40,227 // movaps %xmm3,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040018087 .byte 68,15,40,200 // movaps %xmm0,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040018088 .byte 68,15,40,21,98,51,0,0 // movaps 0x3362(%rip),%xmm10 # 3b10 <_sk_callback_sse41+0x1e3>
Mike Kleinfe560a82017-05-01 12:56:35 -040018089 .byte 65,15,40,234 // movaps %xmm10,%xmm5
18090 .byte 15,92,239 // subps %xmm7,%xmm5
18091 .byte 15,40,197 // movaps %xmm5,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040018092 .byte 65,15,89,193 // mulps %xmm9,%xmm0
18093 .byte 68,15,92,212 // subps %xmm4,%xmm10
18094 .byte 69,15,40,194 // movaps %xmm10,%xmm8
18095 .byte 68,15,89,198 // mulps %xmm6,%xmm8
18096 .byte 68,15,88,192 // addps %xmm0,%xmm8
18097 .byte 68,15,40,252 // movaps %xmm4,%xmm15
18098 .byte 69,15,92,249 // subps %xmm9,%xmm15
18099 .byte 15,89,223 // mulps %xmm7,%xmm3
18100 .byte 68,15,40,239 // movaps %xmm7,%xmm13
18101 .byte 68,15,40,247 // movaps %xmm7,%xmm14
18102 .byte 15,40,199 // movaps %xmm7,%xmm0
18103 .byte 15,92,198 // subps %xmm6,%xmm0
18104 .byte 65,15,89,199 // mulps %xmm15,%xmm0
18105 .byte 15,88,192 // addps %xmm0,%xmm0
18106 .byte 68,15,40,251 // movaps %xmm3,%xmm15
18107 .byte 68,15,92,248 // subps %xmm0,%xmm15
18108 .byte 65,15,40,193 // movaps %xmm9,%xmm0
18109 .byte 15,88,192 // addps %xmm0,%xmm0
18110 .byte 15,194,196,2 // cmpleps %xmm4,%xmm0
18111 .byte 68,15,89,206 // mulps %xmm6,%xmm9
18112 .byte 69,15,88,201 // addps %xmm9,%xmm9
18113 .byte 102,69,15,56,20,249 // blendvps %xmm0,%xmm9,%xmm15
Mike Kleinfe560a82017-05-01 12:56:35 -040018114 .byte 68,15,40,221 // movaps %xmm5,%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040018115 .byte 68,15,89,217 // mulps %xmm1,%xmm11
18116 .byte 15,40,196 // movaps %xmm4,%xmm0
18117 .byte 15,92,193 // subps %xmm1,%xmm0
18118 .byte 69,15,40,204 // movaps %xmm12,%xmm9
18119 .byte 69,15,92,233 // subps %xmm9,%xmm13
18120 .byte 68,15,89,232 // mulps %xmm0,%xmm13
18121 .byte 69,15,88,237 // addps %xmm13,%xmm13
18122 .byte 68,15,40,227 // movaps %xmm3,%xmm12
18123 .byte 69,15,92,229 // subps %xmm13,%xmm12
18124 .byte 15,40,193 // movaps %xmm1,%xmm0
18125 .byte 15,88,192 // addps %xmm0,%xmm0
18126 .byte 15,194,196,2 // cmpleps %xmm4,%xmm0
18127 .byte 65,15,89,201 // mulps %xmm9,%xmm1
18128 .byte 69,15,40,233 // movaps %xmm9,%xmm13
18129 .byte 15,88,201 // addps %xmm1,%xmm1
18130 .byte 102,68,15,56,20,225 // blendvps %xmm0,%xmm1,%xmm12
18131 .byte 65,15,40,202 // movaps %xmm10,%xmm1
18132 .byte 69,15,40,202 // movaps %xmm10,%xmm9
18133 .byte 68,15,89,215 // mulps %xmm7,%xmm10
18134 .byte 69,15,88,199 // addps %xmm15,%xmm8
18135 .byte 65,15,89,205 // mulps %xmm13,%xmm1
18136 .byte 65,15,88,203 // addps %xmm11,%xmm1
18137 .byte 65,15,88,204 // addps %xmm12,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040018138 .byte 15,89,234 // mulps %xmm2,%xmm5
Mike Klein15bf6782017-03-31 12:21:46 -040018139 .byte 68,15,40,92,36,232 // movaps -0x18(%rsp),%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040018140 .byte 69,15,89,203 // mulps %xmm11,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040018141 .byte 68,15,88,205 // addps %xmm5,%xmm9
18142 .byte 15,40,194 // movaps %xmm2,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040018143 .byte 15,88,192 // addps %xmm0,%xmm0
18144 .byte 15,194,196,2 // cmpleps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018145 .byte 15,40,236 // movaps %xmm4,%xmm5
18146 .byte 15,92,234 // subps %xmm2,%xmm5
18147 .byte 65,15,89,211 // mulps %xmm11,%xmm2
18148 .byte 15,88,210 // addps %xmm2,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040018149 .byte 69,15,92,243 // subps %xmm11,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040018150 .byte 68,15,89,245 // mulps %xmm5,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040018151 .byte 69,15,88,246 // addps %xmm14,%xmm14
18152 .byte 65,15,92,222 // subps %xmm14,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040018153 .byte 102,15,56,20,218 // blendvps %xmm0,%xmm2,%xmm3
Mike Klein61b84162017-03-31 11:48:14 -040018154 .byte 68,15,88,203 // addps %xmm3,%xmm9
18155 .byte 65,15,88,226 // addps %xmm10,%xmm4
18156 .byte 72,173 // lods %ds:(%rsi),%rax
18157 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18158 .byte 65,15,40,209 // movaps %xmm9,%xmm2
18159 .byte 15,40,220 // movaps %xmm4,%xmm3
18160 .byte 15,40,230 // movaps %xmm6,%xmm4
18161 .byte 65,15,40,237 // movaps %xmm13,%xmm5
18162 .byte 65,15,40,243 // movaps %xmm11,%xmm6
Mike Klein61b84162017-03-31 11:48:14 -040018163 .byte 255,224 // jmpq *%rax
18164
18165HIDDEN _sk_overlay_sse41
18166.globl _sk_overlay_sse41
Mike Klein86714282017-04-13 17:37:38 -040018167FUNCTION(_sk_overlay_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040018168_sk_overlay_sse41:
18169 .byte 68,15,40,201 // movaps %xmm1,%xmm9
18170 .byte 68,15,40,240 // movaps %xmm0,%xmm14
Mike Kleinb3665f02017-05-01 14:56:04 -040018171 .byte 68,15,40,21,71,50,0,0 // movaps 0x3247(%rip),%xmm10 # 3b20 <_sk_callback_sse41+0x1f3>
Mike Klein61b84162017-03-31 11:48:14 -040018172 .byte 69,15,40,218 // movaps %xmm10,%xmm11
18173 .byte 68,15,92,223 // subps %xmm7,%xmm11
18174 .byte 65,15,40,195 // movaps %xmm11,%xmm0
18175 .byte 65,15,89,198 // mulps %xmm14,%xmm0
18176 .byte 68,15,92,211 // subps %xmm3,%xmm10
18177 .byte 69,15,40,194 // movaps %xmm10,%xmm8
18178 .byte 68,15,89,196 // mulps %xmm4,%xmm8
18179 .byte 68,15,88,192 // addps %xmm0,%xmm8
18180 .byte 68,15,40,235 // movaps %xmm3,%xmm13
18181 .byte 69,15,92,238 // subps %xmm14,%xmm13
18182 .byte 68,15,89,244 // mulps %xmm4,%xmm14
18183 .byte 15,40,207 // movaps %xmm7,%xmm1
18184 .byte 15,92,204 // subps %xmm4,%xmm1
18185 .byte 15,40,196 // movaps %xmm4,%xmm0
18186 .byte 15,88,192 // addps %xmm0,%xmm0
18187 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
18188 .byte 69,15,88,246 // addps %xmm14,%xmm14
18189 .byte 68,15,40,227 // movaps %xmm3,%xmm12
18190 .byte 68,15,89,231 // mulps %xmm7,%xmm12
18191 .byte 65,15,89,205 // mulps %xmm13,%xmm1
18192 .byte 15,88,201 // addps %xmm1,%xmm1
18193 .byte 69,15,40,236 // movaps %xmm12,%xmm13
18194 .byte 68,15,92,233 // subps %xmm1,%xmm13
18195 .byte 102,69,15,56,20,238 // blendvps %xmm0,%xmm14,%xmm13
18196 .byte 69,15,88,197 // addps %xmm13,%xmm8
18197 .byte 65,15,40,195 // movaps %xmm11,%xmm0
18198 .byte 65,15,89,193 // mulps %xmm9,%xmm0
18199 .byte 65,15,40,202 // movaps %xmm10,%xmm1
18200 .byte 15,89,205 // mulps %xmm5,%xmm1
18201 .byte 15,88,200 // addps %xmm0,%xmm1
18202 .byte 68,15,40,235 // movaps %xmm3,%xmm13
18203 .byte 69,15,92,233 // subps %xmm9,%xmm13
18204 .byte 68,15,89,205 // mulps %xmm5,%xmm9
18205 .byte 68,15,40,247 // movaps %xmm7,%xmm14
18206 .byte 68,15,92,245 // subps %xmm5,%xmm14
18207 .byte 15,40,197 // movaps %xmm5,%xmm0
18208 .byte 15,88,192 // addps %xmm0,%xmm0
18209 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
18210 .byte 69,15,88,201 // addps %xmm9,%xmm9
18211 .byte 69,15,89,245 // mulps %xmm13,%xmm14
18212 .byte 69,15,88,246 // addps %xmm14,%xmm14
18213 .byte 69,15,40,236 // movaps %xmm12,%xmm13
18214 .byte 69,15,92,238 // subps %xmm14,%xmm13
18215 .byte 102,69,15,56,20,233 // blendvps %xmm0,%xmm9,%xmm13
18216 .byte 65,15,88,205 // addps %xmm13,%xmm1
18217 .byte 68,15,89,218 // mulps %xmm2,%xmm11
18218 .byte 69,15,40,202 // movaps %xmm10,%xmm9
18219 .byte 68,15,89,206 // mulps %xmm6,%xmm9
18220 .byte 69,15,88,203 // addps %xmm11,%xmm9
18221 .byte 68,15,40,219 // movaps %xmm3,%xmm11
18222 .byte 68,15,92,218 // subps %xmm2,%xmm11
18223 .byte 15,89,214 // mulps %xmm6,%xmm2
18224 .byte 68,15,40,239 // movaps %xmm7,%xmm13
18225 .byte 68,15,92,238 // subps %xmm6,%xmm13
18226 .byte 15,40,198 // movaps %xmm6,%xmm0
18227 .byte 15,88,192 // addps %xmm0,%xmm0
18228 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
18229 .byte 15,88,210 // addps %xmm2,%xmm2
18230 .byte 69,15,89,235 // mulps %xmm11,%xmm13
18231 .byte 69,15,88,237 // addps %xmm13,%xmm13
18232 .byte 69,15,92,229 // subps %xmm13,%xmm12
18233 .byte 102,68,15,56,20,226 // blendvps %xmm0,%xmm2,%xmm12
18234 .byte 69,15,88,204 // addps %xmm12,%xmm9
18235 .byte 68,15,89,215 // mulps %xmm7,%xmm10
18236 .byte 65,15,88,218 // addps %xmm10,%xmm3
18237 .byte 72,173 // lods %ds:(%rsi),%rax
18238 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18239 .byte 65,15,40,209 // movaps %xmm9,%xmm2
18240 .byte 255,224 // jmpq *%rax
18241
18242HIDDEN _sk_softlight_sse41
18243.globl _sk_softlight_sse41
Mike Klein86714282017-04-13 17:37:38 -040018244FUNCTION(_sk_softlight_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040018245_sk_softlight_sse41:
Mike Klein15bf6782017-03-31 12:21:46 -040018246 .byte 15,41,116,36,216 // movaps %xmm6,-0x28(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040018247 .byte 15,40,244 // movaps %xmm4,%xmm6
Mike Klein15bf6782017-03-31 12:21:46 -040018248 .byte 15,41,84,36,232 // movaps %xmm2,-0x18(%rsp)
Mike Kleinfe560a82017-05-01 12:56:35 -040018249 .byte 15,41,76,36,200 // movaps %xmm1,-0x38(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040018250 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040018251 .byte 69,15,87,201 // xorps %xmm9,%xmm9
18252 .byte 68,15,194,207,1 // cmpltps %xmm7,%xmm9
Mike Klein61b84162017-03-31 11:48:14 -040018253 .byte 15,40,198 // movaps %xmm6,%xmm0
18254 .byte 15,94,199 // divps %xmm7,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018255 .byte 65,15,84,193 // andps %xmm9,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040018256 .byte 15,40,13,30,49,0,0 // movaps 0x311e(%rip),%xmm1 # 3b30 <_sk_callback_sse41+0x203>
Mike Klein61b84162017-03-31 11:48:14 -040018257 .byte 68,15,40,209 // movaps %xmm1,%xmm10
18258 .byte 68,15,92,208 // subps %xmm0,%xmm10
18259 .byte 68,15,40,240 // movaps %xmm0,%xmm14
18260 .byte 68,15,40,248 // movaps %xmm0,%xmm15
18261 .byte 15,82,208 // rsqrtps %xmm0,%xmm2
18262 .byte 68,15,83,218 // rcpps %xmm2,%xmm11
18263 .byte 68,15,92,216 // subps %xmm0,%xmm11
18264 .byte 15,88,192 // addps %xmm0,%xmm0
18265 .byte 15,88,192 // addps %xmm0,%xmm0
18266 .byte 15,40,208 // movaps %xmm0,%xmm2
18267 .byte 15,89,210 // mulps %xmm2,%xmm2
18268 .byte 15,88,208 // addps %xmm0,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040018269 .byte 68,15,40,45,252,48,0,0 // movaps 0x30fc(%rip),%xmm13 # 3b40 <_sk_callback_sse41+0x213>
Mike Kleinfe560a82017-05-01 12:56:35 -040018270 .byte 69,15,88,245 // addps %xmm13,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040018271 .byte 68,15,89,242 // mulps %xmm2,%xmm14
Mike Kleinb3665f02017-05-01 14:56:04 -040018272 .byte 68,15,40,37,252,48,0,0 // movaps 0x30fc(%rip),%xmm12 # 3b50 <_sk_callback_sse41+0x223>
Mike Kleinfe560a82017-05-01 12:56:35 -040018273 .byte 69,15,89,252 // mulps %xmm12,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040018274 .byte 69,15,88,254 // addps %xmm14,%xmm15
18275 .byte 15,40,198 // movaps %xmm6,%xmm0
18276 .byte 15,88,192 // addps %xmm0,%xmm0
18277 .byte 15,88,192 // addps %xmm0,%xmm0
18278 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
18279 .byte 102,69,15,56,20,223 // blendvps %xmm0,%xmm15,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040018280 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040018281 .byte 15,88,192 // addps %xmm0,%xmm0
18282 .byte 15,40,208 // movaps %xmm0,%xmm2
18283 .byte 15,92,211 // subps %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018284 .byte 68,15,89,210 // mulps %xmm2,%xmm10
18285 .byte 68,15,88,211 // addps %xmm3,%xmm10
18286 .byte 68,15,89,214 // mulps %xmm6,%xmm10
Mike Klein61b84162017-03-31 11:48:14 -040018287 .byte 15,89,215 // mulps %xmm7,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018288 .byte 68,15,89,218 // mulps %xmm2,%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040018289 .byte 15,40,211 // movaps %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018290 .byte 15,89,214 // mulps %xmm6,%xmm2
18291 .byte 68,15,88,218 // addps %xmm2,%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040018292 .byte 15,194,195,2 // cmpleps %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018293 .byte 102,69,15,56,20,218 // blendvps %xmm0,%xmm10,%xmm11
18294 .byte 68,15,40,213 // movaps %xmm5,%xmm10
18295 .byte 68,15,94,215 // divps %xmm7,%xmm10
18296 .byte 69,15,84,209 // andps %xmm9,%xmm10
18297 .byte 65,15,40,194 // movaps %xmm10,%xmm0
18298 .byte 15,88,192 // addps %xmm0,%xmm0
18299 .byte 15,88,192 // addps %xmm0,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040018300 .byte 15,40,208 // movaps %xmm0,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018301 .byte 15,89,210 // mulps %xmm2,%xmm2
18302 .byte 15,88,208 // addps %xmm0,%xmm2
18303 .byte 65,15,40,194 // movaps %xmm10,%xmm0
18304 .byte 65,15,88,197 // addps %xmm13,%xmm0
18305 .byte 15,89,194 // mulps %xmm2,%xmm0
18306 .byte 65,15,40,210 // movaps %xmm10,%xmm2
18307 .byte 65,15,89,212 // mulps %xmm12,%xmm2
18308 .byte 15,88,208 // addps %xmm0,%xmm2
18309 .byte 65,15,82,194 // rsqrtps %xmm10,%xmm0
18310 .byte 68,15,83,240 // rcpps %xmm0,%xmm14
18311 .byte 69,15,92,242 // subps %xmm10,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040018312 .byte 15,40,197 // movaps %xmm5,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018313 .byte 15,40,229 // movaps %xmm5,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040018314 .byte 15,88,192 // addps %xmm0,%xmm0
18315 .byte 15,88,192 // addps %xmm0,%xmm0
18316 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018317 .byte 102,68,15,56,20,242 // blendvps %xmm0,%xmm2,%xmm14
18318 .byte 68,15,40,249 // movaps %xmm1,%xmm15
18319 .byte 69,15,92,250 // subps %xmm10,%xmm15
18320 .byte 15,40,108,36,200 // movaps -0x38(%rsp),%xmm5
18321 .byte 15,40,197 // movaps %xmm5,%xmm0
18322 .byte 15,88,192 // addps %xmm0,%xmm0
18323 .byte 15,40,208 // movaps %xmm0,%xmm2
18324 .byte 15,92,211 // subps %xmm3,%xmm2
18325 .byte 68,15,89,250 // mulps %xmm2,%xmm15
18326 .byte 15,89,215 // mulps %xmm7,%xmm2
18327 .byte 68,15,89,242 // mulps %xmm2,%xmm14
18328 .byte 15,40,211 // movaps %xmm3,%xmm2
18329 .byte 15,41,100,36,184 // movaps %xmm4,-0x48(%rsp)
18330 .byte 15,89,212 // mulps %xmm4,%xmm2
18331 .byte 68,15,88,242 // addps %xmm2,%xmm14
18332 .byte 68,15,88,251 // addps %xmm3,%xmm15
18333 .byte 68,15,89,252 // mulps %xmm4,%xmm15
18334 .byte 15,194,195,2 // cmpleps %xmm3,%xmm0
18335 .byte 102,69,15,56,20,247 // blendvps %xmm0,%xmm15,%xmm14
18336 .byte 68,15,40,249 // movaps %xmm1,%xmm15
18337 .byte 15,40,100,36,216 // movaps -0x28(%rsp),%xmm4
18338 .byte 15,40,196 // movaps %xmm4,%xmm0
18339 .byte 15,94,199 // divps %xmm7,%xmm0
18340 .byte 65,15,84,193 // andps %xmm9,%xmm0
18341 .byte 68,15,40,209 // movaps %xmm1,%xmm10
18342 .byte 15,92,200 // subps %xmm0,%xmm1
18343 .byte 68,15,88,232 // addps %xmm0,%xmm13
18344 .byte 68,15,89,224 // mulps %xmm0,%xmm12
18345 .byte 15,82,208 // rsqrtps %xmm0,%xmm2
18346 .byte 68,15,83,202 // rcpps %xmm2,%xmm9
18347 .byte 68,15,92,200 // subps %xmm0,%xmm9
18348 .byte 15,88,192 // addps %xmm0,%xmm0
18349 .byte 15,88,192 // addps %xmm0,%xmm0
18350 .byte 15,40,208 // movaps %xmm0,%xmm2
18351 .byte 15,89,210 // mulps %xmm2,%xmm2
18352 .byte 15,88,208 // addps %xmm0,%xmm2
18353 .byte 68,15,89,234 // mulps %xmm2,%xmm13
18354 .byte 69,15,88,229 // addps %xmm13,%xmm12
18355 .byte 15,40,196 // movaps %xmm4,%xmm0
18356 .byte 15,88,192 // addps %xmm0,%xmm0
18357 .byte 15,88,192 // addps %xmm0,%xmm0
18358 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
18359 .byte 102,69,15,56,20,204 // blendvps %xmm0,%xmm12,%xmm9
18360 .byte 68,15,40,100,36,232 // movaps -0x18(%rsp),%xmm12
18361 .byte 65,15,40,196 // movaps %xmm12,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040018362 .byte 15,88,192 // addps %xmm0,%xmm0
18363 .byte 15,40,208 // movaps %xmm0,%xmm2
18364 .byte 15,92,211 // subps %xmm3,%xmm2
18365 .byte 15,89,202 // mulps %xmm2,%xmm1
18366 .byte 15,89,215 // mulps %xmm7,%xmm2
18367 .byte 68,15,89,202 // mulps %xmm2,%xmm9
18368 .byte 15,40,211 // movaps %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018369 .byte 15,89,212 // mulps %xmm4,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040018370 .byte 68,15,88,202 // addps %xmm2,%xmm9
18371 .byte 15,88,203 // addps %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040018372 .byte 15,89,204 // mulps %xmm4,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040018373 .byte 15,194,195,2 // cmpleps %xmm3,%xmm0
18374 .byte 102,68,15,56,20,201 // blendvps %xmm0,%xmm1,%xmm9
18375 .byte 68,15,92,255 // subps %xmm7,%xmm15
18376 .byte 69,15,89,199 // mulps %xmm15,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040018377 .byte 15,40,205 // movaps %xmm5,%xmm1
18378 .byte 65,15,89,207 // mulps %xmm15,%xmm1
18379 .byte 69,15,89,252 // mulps %xmm12,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040018380 .byte 68,15,92,211 // subps %xmm3,%xmm10
18381 .byte 65,15,40,194 // movaps %xmm10,%xmm0
18382 .byte 15,89,198 // mulps %xmm6,%xmm0
18383 .byte 68,15,88,192 // addps %xmm0,%xmm8
18384 .byte 69,15,88,195 // addps %xmm11,%xmm8
18385 .byte 65,15,40,194 // movaps %xmm10,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018386 .byte 15,40,108,36,184 // movaps -0x48(%rsp),%xmm5
Mike Klein61b84162017-03-31 11:48:14 -040018387 .byte 15,89,197 // mulps %xmm5,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018388 .byte 15,88,200 // addps %xmm0,%xmm1
18389 .byte 65,15,88,206 // addps %xmm14,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040018390 .byte 65,15,40,194 // movaps %xmm10,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018391 .byte 15,89,196 // mulps %xmm4,%xmm0
18392 .byte 15,40,212 // movaps %xmm4,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040018393 .byte 65,15,88,199 // addps %xmm15,%xmm0
18394 .byte 68,15,88,200 // addps %xmm0,%xmm9
18395 .byte 68,15,89,215 // mulps %xmm7,%xmm10
18396 .byte 65,15,88,218 // addps %xmm10,%xmm3
18397 .byte 72,173 // lods %ds:(%rsi),%rax
18398 .byte 15,40,230 // movaps %xmm6,%xmm4
18399 .byte 15,40,242 // movaps %xmm2,%xmm6
18400 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040018401 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040018402 .byte 255,224 // jmpq *%rax
18403
Mike Klein7c4af542017-03-29 18:21:14 -040018404HIDDEN _sk_clamp_0_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018405.globl _sk_clamp_0_sse41
Mike Klein86714282017-04-13 17:37:38 -040018406FUNCTION(_sk_clamp_0_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018407_sk_clamp_0_sse41:
18408 .byte 69,15,87,192 // xorps %xmm8,%xmm8
18409 .byte 65,15,95,192 // maxps %xmm8,%xmm0
18410 .byte 65,15,95,200 // maxps %xmm8,%xmm1
18411 .byte 65,15,95,208 // maxps %xmm8,%xmm2
18412 .byte 65,15,95,216 // maxps %xmm8,%xmm3
18413 .byte 72,173 // lods %ds:(%rsi),%rax
18414 .byte 255,224 // jmpq *%rax
18415
Mike Klein7c4af542017-03-29 18:21:14 -040018416HIDDEN _sk_clamp_1_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018417.globl _sk_clamp_1_sse41
Mike Klein86714282017-04-13 17:37:38 -040018418FUNCTION(_sk_clamp_1_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018419_sk_clamp_1_sse41:
Mike Kleinb3665f02017-05-01 14:56:04 -040018420 .byte 68,15,40,5,14,47,0,0 // movaps 0x2f0e(%rip),%xmm8 # 3b60 <_sk_callback_sse41+0x233>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018421 .byte 65,15,93,192 // minps %xmm8,%xmm0
18422 .byte 65,15,93,200 // minps %xmm8,%xmm1
18423 .byte 65,15,93,208 // minps %xmm8,%xmm2
18424 .byte 65,15,93,216 // minps %xmm8,%xmm3
18425 .byte 72,173 // lods %ds:(%rsi),%rax
18426 .byte 255,224 // jmpq *%rax
18427
Mike Klein7c4af542017-03-29 18:21:14 -040018428HIDDEN _sk_clamp_a_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018429.globl _sk_clamp_a_sse41
Mike Klein86714282017-04-13 17:37:38 -040018430FUNCTION(_sk_clamp_a_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018431_sk_clamp_a_sse41:
Mike Kleinb3665f02017-05-01 14:56:04 -040018432 .byte 15,93,29,3,47,0,0 // minps 0x2f03(%rip),%xmm3 # 3b70 <_sk_callback_sse41+0x243>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018433 .byte 15,93,195 // minps %xmm3,%xmm0
18434 .byte 15,93,203 // minps %xmm3,%xmm1
18435 .byte 15,93,211 // minps %xmm3,%xmm2
18436 .byte 72,173 // lods %ds:(%rsi),%rax
18437 .byte 255,224 // jmpq *%rax
18438
Mike Klein7c4af542017-03-29 18:21:14 -040018439HIDDEN _sk_set_rgb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018440.globl _sk_set_rgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040018441FUNCTION(_sk_set_rgb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018442_sk_set_rgb_sse41:
18443 .byte 72,173 // lods %ds:(%rsi),%rax
18444 .byte 243,15,16,0 // movss (%rax),%xmm0
18445 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
18446 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
18447 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
18448 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
18449 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
18450 .byte 72,173 // lods %ds:(%rsi),%rax
18451 .byte 255,224 // jmpq *%rax
18452
Mike Klein7c4af542017-03-29 18:21:14 -040018453HIDDEN _sk_swap_rb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018454.globl _sk_swap_rb_sse41
Mike Klein86714282017-04-13 17:37:38 -040018455FUNCTION(_sk_swap_rb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018456_sk_swap_rb_sse41:
18457 .byte 68,15,40,192 // movaps %xmm0,%xmm8
18458 .byte 72,173 // lods %ds:(%rsi),%rax
18459 .byte 15,40,194 // movaps %xmm2,%xmm0
18460 .byte 65,15,40,208 // movaps %xmm8,%xmm2
18461 .byte 255,224 // jmpq *%rax
18462
Mike Klein7c4af542017-03-29 18:21:14 -040018463HIDDEN _sk_swap_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018464.globl _sk_swap_sse41
Mike Klein86714282017-04-13 17:37:38 -040018465FUNCTION(_sk_swap_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018466_sk_swap_sse41:
18467 .byte 68,15,40,195 // movaps %xmm3,%xmm8
18468 .byte 68,15,40,202 // movaps %xmm2,%xmm9
18469 .byte 68,15,40,209 // movaps %xmm1,%xmm10
18470 .byte 68,15,40,216 // movaps %xmm0,%xmm11
18471 .byte 72,173 // lods %ds:(%rsi),%rax
18472 .byte 15,40,196 // movaps %xmm4,%xmm0
18473 .byte 15,40,205 // movaps %xmm5,%xmm1
18474 .byte 15,40,214 // movaps %xmm6,%xmm2
18475 .byte 15,40,223 // movaps %xmm7,%xmm3
18476 .byte 65,15,40,227 // movaps %xmm11,%xmm4
18477 .byte 65,15,40,234 // movaps %xmm10,%xmm5
18478 .byte 65,15,40,241 // movaps %xmm9,%xmm6
18479 .byte 65,15,40,248 // movaps %xmm8,%xmm7
18480 .byte 255,224 // jmpq *%rax
18481
Mike Klein7c4af542017-03-29 18:21:14 -040018482HIDDEN _sk_move_src_dst_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018483.globl _sk_move_src_dst_sse41
Mike Klein86714282017-04-13 17:37:38 -040018484FUNCTION(_sk_move_src_dst_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018485_sk_move_src_dst_sse41:
18486 .byte 72,173 // lods %ds:(%rsi),%rax
18487 .byte 15,40,224 // movaps %xmm0,%xmm4
18488 .byte 15,40,233 // movaps %xmm1,%xmm5
18489 .byte 15,40,242 // movaps %xmm2,%xmm6
18490 .byte 15,40,251 // movaps %xmm3,%xmm7
18491 .byte 255,224 // jmpq *%rax
18492
Mike Klein7c4af542017-03-29 18:21:14 -040018493HIDDEN _sk_move_dst_src_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018494.globl _sk_move_dst_src_sse41
Mike Klein86714282017-04-13 17:37:38 -040018495FUNCTION(_sk_move_dst_src_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018496_sk_move_dst_src_sse41:
18497 .byte 72,173 // lods %ds:(%rsi),%rax
18498 .byte 15,40,196 // movaps %xmm4,%xmm0
18499 .byte 15,40,205 // movaps %xmm5,%xmm1
18500 .byte 15,40,214 // movaps %xmm6,%xmm2
18501 .byte 15,40,223 // movaps %xmm7,%xmm3
18502 .byte 255,224 // jmpq *%rax
18503
Mike Klein7c4af542017-03-29 18:21:14 -040018504HIDDEN _sk_premul_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018505.globl _sk_premul_sse41
Mike Klein86714282017-04-13 17:37:38 -040018506FUNCTION(_sk_premul_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018507_sk_premul_sse41:
18508 .byte 15,89,195 // mulps %xmm3,%xmm0
18509 .byte 15,89,203 // mulps %xmm3,%xmm1
18510 .byte 15,89,211 // mulps %xmm3,%xmm2
18511 .byte 72,173 // lods %ds:(%rsi),%rax
18512 .byte 255,224 // jmpq *%rax
18513
Mike Klein7c4af542017-03-29 18:21:14 -040018514HIDDEN _sk_unpremul_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018515.globl _sk_unpremul_sse41
Mike Klein86714282017-04-13 17:37:38 -040018516FUNCTION(_sk_unpremul_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018517_sk_unpremul_sse41:
18518 .byte 69,15,87,192 // xorps %xmm8,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018519 .byte 68,15,40,13,110,46,0,0 // movaps 0x2e6e(%rip),%xmm9 # 3b80 <_sk_callback_sse41+0x253>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018520 .byte 68,15,94,203 // divps %xmm3,%xmm9
18521 .byte 68,15,194,195,4 // cmpneqps %xmm3,%xmm8
18522 .byte 69,15,84,193 // andps %xmm9,%xmm8
18523 .byte 65,15,89,192 // mulps %xmm8,%xmm0
18524 .byte 65,15,89,200 // mulps %xmm8,%xmm1
18525 .byte 65,15,89,208 // mulps %xmm8,%xmm2
18526 .byte 72,173 // lods %ds:(%rsi),%rax
18527 .byte 255,224 // jmpq *%rax
18528
Mike Klein7c4af542017-03-29 18:21:14 -040018529HIDDEN _sk_from_srgb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018530.globl _sk_from_srgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040018531FUNCTION(_sk_from_srgb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018532_sk_from_srgb_sse41:
Mike Kleinb3665f02017-05-01 14:56:04 -040018533 .byte 68,15,40,29,89,46,0,0 // movaps 0x2e59(%rip),%xmm11 # 3b90 <_sk_callback_sse41+0x263>
Mike Kleinfe560a82017-05-01 12:56:35 -040018534 .byte 68,15,40,200 // movaps %xmm0,%xmm9
18535 .byte 69,15,89,203 // mulps %xmm11,%xmm9
18536 .byte 68,15,40,208 // movaps %xmm0,%xmm10
18537 .byte 69,15,89,210 // mulps %xmm10,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040018538 .byte 68,15,40,37,81,46,0,0 // movaps 0x2e51(%rip),%xmm12 # 3ba0 <_sk_callback_sse41+0x273>
Mike Kleinfe560a82017-05-01 12:56:35 -040018539 .byte 68,15,40,192 // movaps %xmm0,%xmm8
18540 .byte 69,15,89,196 // mulps %xmm12,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018541 .byte 68,15,40,45,81,46,0,0 // movaps 0x2e51(%rip),%xmm13 # 3bb0 <_sk_callback_sse41+0x283>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018542 .byte 69,15,88,197 // addps %xmm13,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040018543 .byte 69,15,89,194 // mulps %xmm10,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018544 .byte 68,15,40,53,81,46,0,0 // movaps 0x2e51(%rip),%xmm14 # 3bc0 <_sk_callback_sse41+0x293>
Mike Kleinfe560a82017-05-01 12:56:35 -040018545 .byte 69,15,88,198 // addps %xmm14,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018546 .byte 68,15,40,61,85,46,0,0 // movaps 0x2e55(%rip),%xmm15 # 3bd0 <_sk_callback_sse41+0x2a3>
Mike Kleinfe560a82017-05-01 12:56:35 -040018547 .byte 65,15,194,199,1 // cmpltps %xmm15,%xmm0
18548 .byte 102,69,15,56,20,193 // blendvps %xmm0,%xmm9,%xmm8
18549 .byte 68,15,40,209 // movaps %xmm1,%xmm10
18550 .byte 69,15,89,211 // mulps %xmm11,%xmm10
18551 .byte 15,40,193 // movaps %xmm1,%xmm0
18552 .byte 15,89,192 // mulps %xmm0,%xmm0
18553 .byte 68,15,40,201 // movaps %xmm1,%xmm9
18554 .byte 69,15,89,204 // mulps %xmm12,%xmm9
18555 .byte 69,15,88,205 // addps %xmm13,%xmm9
18556 .byte 68,15,89,200 // mulps %xmm0,%xmm9
18557 .byte 69,15,88,206 // addps %xmm14,%xmm9
18558 .byte 65,15,194,207,1 // cmpltps %xmm15,%xmm1
18559 .byte 15,40,193 // movaps %xmm1,%xmm0
18560 .byte 102,69,15,56,20,202 // blendvps %xmm0,%xmm10,%xmm9
18561 .byte 68,15,89,218 // mulps %xmm2,%xmm11
18562 .byte 68,15,40,210 // movaps %xmm2,%xmm10
18563 .byte 69,15,89,210 // mulps %xmm10,%xmm10
18564 .byte 68,15,89,226 // mulps %xmm2,%xmm12
18565 .byte 69,15,88,229 // addps %xmm13,%xmm12
18566 .byte 69,15,89,212 // mulps %xmm12,%xmm10
18567 .byte 69,15,88,214 // addps %xmm14,%xmm10
18568 .byte 65,15,194,215,1 // cmpltps %xmm15,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040018569 .byte 15,40,194 // movaps %xmm2,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018570 .byte 102,69,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040018571 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040018572 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18573 .byte 65,15,40,201 // movaps %xmm9,%xmm1
18574 .byte 65,15,40,210 // movaps %xmm10,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040018575 .byte 255,224 // jmpq *%rax
18576
Mike Klein7c4af542017-03-29 18:21:14 -040018577HIDDEN _sk_to_srgb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018578.globl _sk_to_srgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040018579FUNCTION(_sk_to_srgb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018580_sk_to_srgb_sse41:
Mike Klein15bf6782017-03-31 12:21:46 -040018581 .byte 15,41,124,36,232 // movaps %xmm7,-0x18(%rsp)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018582 .byte 15,40,254 // movaps %xmm6,%xmm7
18583 .byte 15,40,245 // movaps %xmm5,%xmm6
18584 .byte 15,40,236 // movaps %xmm4,%xmm5
18585 .byte 15,40,227 // movaps %xmm3,%xmm4
18586 .byte 15,40,218 // movaps %xmm2,%xmm3
18587 .byte 15,40,209 // movaps %xmm1,%xmm2
18588 .byte 68,15,82,192 // rsqrtps %xmm0,%xmm8
18589 .byte 69,15,83,200 // rcpps %xmm8,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040018590 .byte 69,15,82,208 // rsqrtps %xmm8,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040018591 .byte 68,15,40,29,197,45,0,0 // movaps 0x2dc5(%rip),%xmm11 # 3be0 <_sk_callback_sse41+0x2b3>
Mike Kleinfe560a82017-05-01 12:56:35 -040018592 .byte 15,40,200 // movaps %xmm0,%xmm1
18593 .byte 65,15,89,203 // mulps %xmm11,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040018594 .byte 68,15,40,37,198,45,0,0 // movaps 0x2dc6(%rip),%xmm12 # 3bf0 <_sk_callback_sse41+0x2c3>
Mike Kleinfe560a82017-05-01 12:56:35 -040018595 .byte 69,15,89,204 // mulps %xmm12,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040018596 .byte 68,15,40,45,202,45,0,0 // movaps 0x2dca(%rip),%xmm13 # 3c00 <_sk_callback_sse41+0x2d3>
Mike Kleinfe560a82017-05-01 12:56:35 -040018597 .byte 69,15,88,205 // addps %xmm13,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040018598 .byte 68,15,40,53,206,45,0,0 // movaps 0x2dce(%rip),%xmm14 # 3c10 <_sk_callback_sse41+0x2e3>
Mike Kleinfe560a82017-05-01 12:56:35 -040018599 .byte 69,15,89,214 // mulps %xmm14,%xmm10
18600 .byte 69,15,88,209 // addps %xmm9,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040018601 .byte 68,15,40,5,206,45,0,0 // movaps 0x2dce(%rip),%xmm8 # 3c20 <_sk_callback_sse41+0x2f3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018602 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040018603 .byte 69,15,93,202 // minps %xmm10,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040018604 .byte 68,15,40,61,206,45,0,0 // movaps 0x2dce(%rip),%xmm15 # 3c30 <_sk_callback_sse41+0x303>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018605 .byte 65,15,194,199,1 // cmpltps %xmm15,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018606 .byte 102,68,15,56,20,201 // blendvps %xmm0,%xmm1,%xmm9
18607 .byte 15,82,194 // rsqrtps %xmm2,%xmm0
18608 .byte 15,83,200 // rcpps %xmm0,%xmm1
18609 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
18610 .byte 65,15,89,204 // mulps %xmm12,%xmm1
18611 .byte 65,15,88,205 // addps %xmm13,%xmm1
18612 .byte 65,15,89,198 // mulps %xmm14,%xmm0
18613 .byte 15,88,193 // addps %xmm1,%xmm0
18614 .byte 69,15,40,208 // movaps %xmm8,%xmm10
18615 .byte 68,15,93,208 // minps %xmm0,%xmm10
18616 .byte 15,40,202 // movaps %xmm2,%xmm1
18617 .byte 65,15,89,203 // mulps %xmm11,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040018618 .byte 65,15,194,215,1 // cmpltps %xmm15,%xmm2
18619 .byte 15,40,194 // movaps %xmm2,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018620 .byte 102,68,15,56,20,209 // blendvps %xmm0,%xmm1,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040018621 .byte 15,82,195 // rsqrtps %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018622 .byte 15,83,200 // rcpps %xmm0,%xmm1
18623 .byte 65,15,89,204 // mulps %xmm12,%xmm1
18624 .byte 65,15,88,205 // addps %xmm13,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040018625 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018626 .byte 65,15,89,198 // mulps %xmm14,%xmm0
18627 .byte 15,88,193 // addps %xmm1,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040018628 .byte 68,15,93,192 // minps %xmm0,%xmm8
18629 .byte 68,15,89,219 // mulps %xmm3,%xmm11
18630 .byte 65,15,194,223,1 // cmpltps %xmm15,%xmm3
18631 .byte 15,40,195 // movaps %xmm3,%xmm0
18632 .byte 102,69,15,56,20,195 // blendvps %xmm0,%xmm11,%xmm8
18633 .byte 72,173 // lods %ds:(%rsi),%rax
18634 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018635 .byte 65,15,40,202 // movaps %xmm10,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040018636 .byte 65,15,40,208 // movaps %xmm8,%xmm2
18637 .byte 15,40,220 // movaps %xmm4,%xmm3
18638 .byte 15,40,229 // movaps %xmm5,%xmm4
18639 .byte 15,40,238 // movaps %xmm6,%xmm5
18640 .byte 15,40,247 // movaps %xmm7,%xmm6
Mike Klein15bf6782017-03-31 12:21:46 -040018641 .byte 15,40,124,36,232 // movaps -0x18(%rsp),%xmm7
Mike Kleind7e06ae2017-03-29 16:33:06 -040018642 .byte 255,224 // jmpq *%rax
18643
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018644HIDDEN _sk_rgb_to_hsl_sse41
18645.globl _sk_rgb_to_hsl_sse41
Mike Klein86714282017-04-13 17:37:38 -040018646FUNCTION(_sk_rgb_to_hsl_sse41)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018647_sk_rgb_to_hsl_sse41:
Mike Kleinfe560a82017-05-01 12:56:35 -040018648 .byte 68,15,40,201 // movaps %xmm1,%xmm9
18649 .byte 68,15,40,192 // movaps %xmm0,%xmm8
18650 .byte 69,15,40,216 // movaps %xmm8,%xmm11
18651 .byte 69,15,95,217 // maxps %xmm9,%xmm11
18652 .byte 68,15,95,218 // maxps %xmm2,%xmm11
18653 .byte 69,15,40,224 // movaps %xmm8,%xmm12
18654 .byte 69,15,93,225 // minps %xmm9,%xmm12
18655 .byte 68,15,93,226 // minps %xmm2,%xmm12
18656 .byte 65,15,40,203 // movaps %xmm11,%xmm1
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018657 .byte 65,15,92,204 // subps %xmm12,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040018658 .byte 68,15,40,53,31,45,0,0 // movaps 0x2d1f(%rip),%xmm14 # 3c40 <_sk_callback_sse41+0x313>
Mike Kleinfe560a82017-05-01 12:56:35 -040018659 .byte 68,15,94,241 // divps %xmm1,%xmm14
18660 .byte 69,15,40,211 // movaps %xmm11,%xmm10
18661 .byte 69,15,194,208,0 // cmpeqps %xmm8,%xmm10
18662 .byte 65,15,40,193 // movaps %xmm9,%xmm0
18663 .byte 15,92,194 // subps %xmm2,%xmm0
18664 .byte 65,15,89,198 // mulps %xmm14,%xmm0
18665 .byte 69,15,40,249 // movaps %xmm9,%xmm15
18666 .byte 68,15,194,250,1 // cmpltps %xmm2,%xmm15
Mike Kleinb3665f02017-05-01 14:56:04 -040018667 .byte 68,15,84,61,6,45,0,0 // andps 0x2d06(%rip),%xmm15 # 3c50 <_sk_callback_sse41+0x323>
Mike Kleinfe560a82017-05-01 12:56:35 -040018668 .byte 68,15,88,248 // addps %xmm0,%xmm15
18669 .byte 65,15,40,195 // movaps %xmm11,%xmm0
18670 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
18671 .byte 65,15,92,208 // subps %xmm8,%xmm2
18672 .byte 65,15,89,214 // mulps %xmm14,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040018673 .byte 68,15,40,45,249,44,0,0 // movaps 0x2cf9(%rip),%xmm13 # 3c60 <_sk_callback_sse41+0x333>
Mike Kleinfe560a82017-05-01 12:56:35 -040018674 .byte 65,15,88,213 // addps %xmm13,%xmm2
18675 .byte 69,15,92,193 // subps %xmm9,%xmm8
18676 .byte 69,15,89,198 // mulps %xmm14,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018677 .byte 68,15,88,5,245,44,0,0 // addps 0x2cf5(%rip),%xmm8 # 3c70 <_sk_callback_sse41+0x343>
Mike Kleinfe560a82017-05-01 12:56:35 -040018678 .byte 102,68,15,56,20,194 // blendvps %xmm0,%xmm2,%xmm8
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018679 .byte 65,15,40,194 // movaps %xmm10,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018680 .byte 102,69,15,56,20,199 // blendvps %xmm0,%xmm15,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018681 .byte 68,15,89,5,237,44,0,0 // mulps 0x2ced(%rip),%xmm8 # 3c80 <_sk_callback_sse41+0x353>
Mike Kleinfe560a82017-05-01 12:56:35 -040018682 .byte 69,15,40,203 // movaps %xmm11,%xmm9
18683 .byte 69,15,194,204,4 // cmpneqps %xmm12,%xmm9
18684 .byte 69,15,84,193 // andps %xmm9,%xmm8
18685 .byte 69,15,92,235 // subps %xmm11,%xmm13
18686 .byte 69,15,88,220 // addps %xmm12,%xmm11
Mike Kleinb3665f02017-05-01 14:56:04 -040018687 .byte 15,40,5,225,44,0,0 // movaps 0x2ce1(%rip),%xmm0 # 3c90 <_sk_callback_sse41+0x363>
Mike Kleinfe560a82017-05-01 12:56:35 -040018688 .byte 65,15,40,211 // movaps %xmm11,%xmm2
18689 .byte 15,89,208 // mulps %xmm0,%xmm2
18690 .byte 15,194,194,1 // cmpltps %xmm2,%xmm0
18691 .byte 69,15,92,236 // subps %xmm12,%xmm13
18692 .byte 102,69,15,56,20,221 // blendvps %xmm0,%xmm13,%xmm11
18693 .byte 65,15,94,203 // divps %xmm11,%xmm1
18694 .byte 65,15,84,201 // andps %xmm9,%xmm1
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018695 .byte 72,173 // lods %ds:(%rsi),%rax
18696 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018697 .byte 255,224 // jmpq *%rax
18698
18699HIDDEN _sk_hsl_to_rgb_sse41
18700.globl _sk_hsl_to_rgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040018701FUNCTION(_sk_hsl_to_rgb_sse41)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018702_sk_hsl_to_rgb_sse41:
18703 .byte 72,131,236,24 // sub $0x18,%rsp
18704 .byte 15,41,60,36 // movaps %xmm7,(%rsp)
18705 .byte 15,41,116,36,240 // movaps %xmm6,-0x10(%rsp)
18706 .byte 15,41,108,36,224 // movaps %xmm5,-0x20(%rsp)
18707 .byte 15,41,100,36,208 // movaps %xmm4,-0x30(%rsp)
18708 .byte 15,41,92,36,192 // movaps %xmm3,-0x40(%rsp)
Mike Kleinfb11acd2017-05-01 14:22:10 -040018709 .byte 68,15,40,216 // movaps %xmm0,%xmm11
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018710 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
18711 .byte 102,15,110,216 // movd %eax,%xmm3
18712 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
18713 .byte 15,41,92,36,128 // movaps %xmm3,-0x80(%rsp)
18714 .byte 15,40,194 // movaps %xmm2,%xmm0
18715 .byte 15,194,195,1 // cmpltps %xmm3,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040018716 .byte 15,40,45,140,44,0,0 // movaps 0x2c8c(%rip),%xmm5 # 3ca0 <_sk_callback_sse41+0x373>
18717 .byte 15,40,249 // movaps %xmm1,%xmm7
Mike Kleinfb11acd2017-05-01 14:22:10 -040018718 .byte 15,40,225 // movaps %xmm1,%xmm4
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018719 .byte 15,40,217 // movaps %xmm1,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040018720 .byte 15,88,221 // addps %xmm5,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040018721 .byte 15,40,245 // movaps %xmm5,%xmm6
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018722 .byte 15,89,218 // mulps %xmm2,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040018723 .byte 15,88,250 // addps %xmm2,%xmm7
Mike Kleinfb11acd2017-05-01 14:22:10 -040018724 .byte 15,89,226 // mulps %xmm2,%xmm4
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018725 .byte 15,40,234 // movaps %xmm2,%xmm5
Mike Kleinb3665f02017-05-01 14:56:04 -040018726 .byte 15,92,252 // subps %xmm4,%xmm7
18727 .byte 102,15,56,20,251 // blendvps %xmm0,%xmm3,%xmm7
18728 .byte 68,15,40,37,113,44,0,0 // movaps 0x2c71(%rip),%xmm12 # 3cb0 <_sk_callback_sse41+0x383>
18729 .byte 69,15,88,227 // addps %xmm11,%xmm12
Mike Kleinfb11acd2017-05-01 14:22:10 -040018730 .byte 184,0,0,0,0 // mov $0x0,%eax
18731 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
18732 .byte 102,68,15,110,201 // movd %ecx,%xmm9
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018733 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040018734 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040018735 .byte 65,15,194,196,1 // cmpltps %xmm12,%xmm0
18736 .byte 65,15,40,212 // movaps %xmm12,%xmm2
18737 .byte 15,88,21,85,44,0,0 // addps 0x2c55(%rip),%xmm2 # 3cc0 <_sk_callback_sse41+0x393>
18738 .byte 69,15,40,196 // movaps %xmm12,%xmm8
18739 .byte 65,15,40,220 // movaps %xmm12,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040018740 .byte 102,68,15,56,20,226 // blendvps %xmm0,%xmm2,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040018741 .byte 102,15,110,192 // movd %eax,%xmm0
18742 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
18743 .byte 15,41,68,36,160 // movaps %xmm0,-0x60(%rsp)
18744 .byte 68,15,194,192,1 // cmpltps %xmm0,%xmm8
18745 .byte 15,88,222 // addps %xmm6,%xmm3
18746 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18747 .byte 102,68,15,56,20,227 // blendvps %xmm0,%xmm3,%xmm12
18748 .byte 15,40,213 // movaps %xmm5,%xmm2
18749 .byte 15,41,84,36,176 // movaps %xmm2,-0x50(%rsp)
18750 .byte 68,15,40,194 // movaps %xmm2,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040018751 .byte 69,15,88,192 // addps %xmm8,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018752 .byte 68,15,92,199 // subps %xmm7,%xmm8
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018753 .byte 184,171,170,42,62 // mov $0x3e2aaaab,%eax
Mike Kleinb3665f02017-05-01 14:56:04 -040018754 .byte 15,40,247 // movaps %xmm7,%xmm6
18755 .byte 65,15,92,240 // subps %xmm8,%xmm6
18756 .byte 15,89,53,17,44,0,0 // mulps 0x2c11(%rip),%xmm6 # 3cd0 <_sk_callback_sse41+0x3a3>
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018757 .byte 185,171,170,42,63 // mov $0x3f2aaaab,%ecx
Mike Kleinfb11acd2017-05-01 14:22:10 -040018758 .byte 102,15,110,193 // movd %ecx,%xmm0
18759 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
18760 .byte 15,41,68,36,144 // movaps %xmm0,-0x70(%rsp)
Mike Kleinb3665f02017-05-01 14:56:04 -040018761 .byte 15,40,37,8,44,0,0 // movaps 0x2c08(%rip),%xmm4 # 3ce0 <_sk_callback_sse41+0x3b3>
Mike Kleinfb11acd2017-05-01 14:22:10 -040018762 .byte 15,40,236 // movaps %xmm4,%xmm5
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018763 .byte 65,15,92,236 // subps %xmm12,%xmm5
18764 .byte 69,15,40,236 // movaps %xmm12,%xmm13
Mike Kleinb3665f02017-05-01 14:56:04 -040018765 .byte 69,15,40,252 // movaps %xmm12,%xmm15
Mike Kleinfb11acd2017-05-01 14:22:10 -040018766 .byte 69,15,40,244 // movaps %xmm12,%xmm14
18767 .byte 68,15,194,224,1 // cmpltps %xmm0,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040018768 .byte 15,89,238 // mulps %xmm6,%xmm5
Mike Kleinfb11acd2017-05-01 14:22:10 -040018769 .byte 65,15,88,232 // addps %xmm8,%xmm5
18770 .byte 69,15,40,208 // movaps %xmm8,%xmm10
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018771 .byte 65,15,40,196 // movaps %xmm12,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040018772 .byte 102,68,15,56,20,213 // blendvps %xmm0,%xmm5,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040018773 .byte 68,15,194,116,36,128,1 // cmpltps -0x80(%rsp),%xmm14
Mike Kleinfb11acd2017-05-01 14:22:10 -040018774 .byte 65,15,40,198 // movaps %xmm14,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040018775 .byte 102,68,15,56,20,215 // blendvps %xmm0,%xmm7,%xmm10
18776 .byte 102,15,110,232 // movd %eax,%xmm5
18777 .byte 15,198,237,0 // shufps $0x0,%xmm5,%xmm5
18778 .byte 68,15,194,237,1 // cmpltps %xmm5,%xmm13
18779 .byte 68,15,89,254 // mulps %xmm6,%xmm15
Mike Kleinfb11acd2017-05-01 14:22:10 -040018780 .byte 69,15,88,248 // addps %xmm8,%xmm15
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018781 .byte 65,15,40,197 // movaps %xmm13,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040018782 .byte 102,69,15,56,20,215 // blendvps %xmm0,%xmm15,%xmm10
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018783 .byte 69,15,87,228 // xorps %xmm12,%xmm12
18784 .byte 68,15,194,225,0 // cmpeqps %xmm1,%xmm12
18785 .byte 65,15,40,196 // movaps %xmm12,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040018786 .byte 102,68,15,56,20,210 // blendvps %xmm0,%xmm2,%xmm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040018787 .byte 65,15,40,193 // movaps %xmm9,%xmm0
18788 .byte 65,15,194,195,1 // cmpltps %xmm11,%xmm0
18789 .byte 65,15,40,203 // movaps %xmm11,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040018790 .byte 15,88,13,100,43,0,0 // addps 0x2b64(%rip),%xmm1 # 3cc0 <_sk_callback_sse41+0x393>
Mike Kleinfb11acd2017-05-01 14:22:10 -040018791 .byte 69,15,40,235 // movaps %xmm11,%xmm13
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018792 .byte 102,68,15,56,20,233 // blendvps %xmm0,%xmm1,%xmm13
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018793 .byte 65,15,40,195 // movaps %xmm11,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040018794 .byte 15,194,68,36,160,1 // cmpltps -0x60(%rsp),%xmm0
18795 .byte 65,15,40,203 // movaps %xmm11,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040018796 .byte 15,88,13,37,43,0,0 // addps 0x2b25(%rip),%xmm1 # 3ca0 <_sk_callback_sse41+0x373>
Mike Kleinfb11acd2017-05-01 14:22:10 -040018797 .byte 102,68,15,56,20,233 // blendvps %xmm0,%xmm1,%xmm13
18798 .byte 15,40,220 // movaps %xmm4,%xmm3
18799 .byte 65,15,92,221 // subps %xmm13,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040018800 .byte 65,15,40,213 // movaps %xmm13,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040018801 .byte 69,15,40,245 // movaps %xmm13,%xmm14
18802 .byte 69,15,40,253 // movaps %xmm13,%xmm15
18803 .byte 68,15,194,108,36,144,1 // cmpltps -0x70(%rsp),%xmm13
Mike Kleinb3665f02017-05-01 14:56:04 -040018804 .byte 15,89,222 // mulps %xmm6,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040018805 .byte 65,15,88,216 // addps %xmm8,%xmm3
18806 .byte 65,15,40,200 // movaps %xmm8,%xmm1
18807 .byte 65,15,40,197 // movaps %xmm13,%xmm0
18808 .byte 102,15,56,20,203 // blendvps %xmm0,%xmm3,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040018809 .byte 68,15,194,124,36,128,1 // cmpltps -0x80(%rsp),%xmm15
Mike Kleinfb11acd2017-05-01 14:22:10 -040018810 .byte 65,15,40,199 // movaps %xmm15,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040018811 .byte 102,15,56,20,207 // blendvps %xmm0,%xmm7,%xmm1
18812 .byte 15,194,213,1 // cmpltps %xmm5,%xmm2
18813 .byte 68,15,89,246 // mulps %xmm6,%xmm14
18814 .byte 69,15,88,240 // addps %xmm8,%xmm14
18815 .byte 15,40,194 // movaps %xmm2,%xmm0
18816 .byte 102,65,15,56,20,206 // blendvps %xmm0,%xmm14,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040018817 .byte 65,15,40,196 // movaps %xmm12,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040018818 .byte 68,15,40,116,36,176 // movaps -0x50(%rsp),%xmm14
18819 .byte 102,65,15,56,20,206 // blendvps %xmm0,%xmm14,%xmm1
18820 .byte 68,15,88,29,4,43,0,0 // addps 0x2b04(%rip),%xmm11 # 3cf0 <_sk_callback_sse41+0x3c3>
18821 .byte 15,40,21,173,42,0,0 // movaps 0x2aad(%rip),%xmm2 # 3ca0 <_sk_callback_sse41+0x373>
18822 .byte 65,15,88,211 // addps %xmm11,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040018823 .byte 69,15,194,203,1 // cmpltps %xmm11,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040018824 .byte 15,40,29,189,42,0,0 // movaps 0x2abd(%rip),%xmm3 # 3cc0 <_sk_callback_sse41+0x393>
Mike Kleinfb11acd2017-05-01 14:22:10 -040018825 .byte 65,15,88,219 // addps %xmm11,%xmm3
18826 .byte 69,15,40,235 // movaps %xmm11,%xmm13
18827 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040018828 .byte 102,68,15,56,20,219 // blendvps %xmm0,%xmm3,%xmm11
18829 .byte 68,15,194,108,36,160,1 // cmpltps -0x60(%rsp),%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040018830 .byte 65,15,40,197 // movaps %xmm13,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040018831 .byte 102,68,15,56,20,218 // blendvps %xmm0,%xmm2,%xmm11
18832 .byte 65,15,92,227 // subps %xmm11,%xmm4
18833 .byte 69,15,40,203 // movaps %xmm11,%xmm9
18834 .byte 65,15,40,211 // movaps %xmm11,%xmm2
18835 .byte 69,15,40,235 // movaps %xmm11,%xmm13
18836 .byte 68,15,194,92,36,144,1 // cmpltps -0x70(%rsp),%xmm11
18837 .byte 15,89,214 // mulps %xmm6,%xmm2
18838 .byte 15,89,230 // mulps %xmm6,%xmm4
18839 .byte 65,15,88,208 // addps %xmm8,%xmm2
18840 .byte 65,15,88,224 // addps %xmm8,%xmm4
18841 .byte 65,15,40,195 // movaps %xmm11,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040018842 .byte 102,68,15,56,20,196 // blendvps %xmm0,%xmm4,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018843 .byte 68,15,194,108,36,128,1 // cmpltps -0x80(%rsp),%xmm13
18844 .byte 65,15,40,197 // movaps %xmm13,%xmm0
18845 .byte 102,68,15,56,20,199 // blendvps %xmm0,%xmm7,%xmm8
18846 .byte 68,15,194,205,1 // cmpltps %xmm5,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040018847 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040018848 .byte 102,68,15,56,20,194 // blendvps %xmm0,%xmm2,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040018849 .byte 65,15,40,196 // movaps %xmm12,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040018850 .byte 102,69,15,56,20,198 // blendvps %xmm0,%xmm14,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040018851 .byte 72,173 // lods %ds:(%rsi),%rax
18852 .byte 65,15,40,194 // movaps %xmm10,%xmm0
18853 .byte 65,15,40,208 // movaps %xmm8,%xmm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -040018854 .byte 15,40,92,36,192 // movaps -0x40(%rsp),%xmm3
18855 .byte 15,40,100,36,208 // movaps -0x30(%rsp),%xmm4
18856 .byte 15,40,108,36,224 // movaps -0x20(%rsp),%xmm5
18857 .byte 15,40,116,36,240 // movaps -0x10(%rsp),%xmm6
18858 .byte 15,40,60,36 // movaps (%rsp),%xmm7
18859 .byte 72,131,196,24 // add $0x18,%rsp
18860 .byte 255,224 // jmpq *%rax
18861
Mike Klein7c4af542017-03-29 18:21:14 -040018862HIDDEN _sk_scale_1_float_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018863.globl _sk_scale_1_float_sse41
Mike Klein86714282017-04-13 17:37:38 -040018864FUNCTION(_sk_scale_1_float_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018865_sk_scale_1_float_sse41:
18866 .byte 72,173 // lods %ds:(%rsi),%rax
18867 .byte 243,68,15,16,0 // movss (%rax),%xmm8
18868 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
18869 .byte 65,15,89,192 // mulps %xmm8,%xmm0
18870 .byte 65,15,89,200 // mulps %xmm8,%xmm1
18871 .byte 65,15,89,208 // mulps %xmm8,%xmm2
18872 .byte 65,15,89,216 // mulps %xmm8,%xmm3
18873 .byte 72,173 // lods %ds:(%rsi),%rax
18874 .byte 255,224 // jmpq *%rax
18875
Mike Klein7c4af542017-03-29 18:21:14 -040018876HIDDEN _sk_scale_u8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018877.globl _sk_scale_u8_sse41
Mike Klein86714282017-04-13 17:37:38 -040018878FUNCTION(_sk_scale_u8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018879_sk_scale_u8_sse41:
18880 .byte 72,173 // lods %ds:(%rsi),%rax
18881 .byte 72,139,0 // mov (%rax),%rax
18882 .byte 102,68,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm8
18883 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018884 .byte 68,15,89,5,33,42,0,0 // mulps 0x2a21(%rip),%xmm8 # 3d00 <_sk_callback_sse41+0x3d3>
Mike Kleinfe560a82017-05-01 12:56:35 -040018885 .byte 65,15,89,192 // mulps %xmm8,%xmm0
18886 .byte 65,15,89,200 // mulps %xmm8,%xmm1
18887 .byte 65,15,89,208 // mulps %xmm8,%xmm2
18888 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040018889 .byte 72,173 // lods %ds:(%rsi),%rax
18890 .byte 255,224 // jmpq *%rax
18891
Mike Klein7c4af542017-03-29 18:21:14 -040018892HIDDEN _sk_lerp_1_float_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018893.globl _sk_lerp_1_float_sse41
Mike Klein86714282017-04-13 17:37:38 -040018894FUNCTION(_sk_lerp_1_float_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018895_sk_lerp_1_float_sse41:
18896 .byte 72,173 // lods %ds:(%rsi),%rax
18897 .byte 243,68,15,16,0 // movss (%rax),%xmm8
18898 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
18899 .byte 15,92,196 // subps %xmm4,%xmm0
18900 .byte 65,15,89,192 // mulps %xmm8,%xmm0
18901 .byte 15,88,196 // addps %xmm4,%xmm0
18902 .byte 15,92,205 // subps %xmm5,%xmm1
18903 .byte 65,15,89,200 // mulps %xmm8,%xmm1
18904 .byte 15,88,205 // addps %xmm5,%xmm1
18905 .byte 15,92,214 // subps %xmm6,%xmm2
18906 .byte 65,15,89,208 // mulps %xmm8,%xmm2
18907 .byte 15,88,214 // addps %xmm6,%xmm2
18908 .byte 15,92,223 // subps %xmm7,%xmm3
18909 .byte 65,15,89,216 // mulps %xmm8,%xmm3
18910 .byte 15,88,223 // addps %xmm7,%xmm3
18911 .byte 72,173 // lods %ds:(%rsi),%rax
18912 .byte 255,224 // jmpq *%rax
18913
Mike Klein7c4af542017-03-29 18:21:14 -040018914HIDDEN _sk_lerp_u8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018915.globl _sk_lerp_u8_sse41
Mike Klein86714282017-04-13 17:37:38 -040018916FUNCTION(_sk_lerp_u8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018917_sk_lerp_u8_sse41:
18918 .byte 72,173 // lods %ds:(%rsi),%rax
18919 .byte 72,139,0 // mov (%rax),%rax
18920 .byte 102,68,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm8
18921 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018922 .byte 68,15,89,5,205,41,0,0 // mulps 0x29cd(%rip),%xmm8 # 3d10 <_sk_callback_sse41+0x3e3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018923 .byte 15,92,196 // subps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018924 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040018925 .byte 15,88,196 // addps %xmm4,%xmm0
18926 .byte 15,92,205 // subps %xmm5,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040018927 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040018928 .byte 15,88,205 // addps %xmm5,%xmm1
18929 .byte 15,92,214 // subps %xmm6,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018930 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040018931 .byte 15,88,214 // addps %xmm6,%xmm2
18932 .byte 15,92,223 // subps %xmm7,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040018933 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040018934 .byte 15,88,223 // addps %xmm7,%xmm3
18935 .byte 72,173 // lods %ds:(%rsi),%rax
18936 .byte 255,224 // jmpq *%rax
18937
Mike Klein7c4af542017-03-29 18:21:14 -040018938HIDDEN _sk_lerp_565_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018939.globl _sk_lerp_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040018940FUNCTION(_sk_lerp_565_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018941_sk_lerp_565_sse41:
18942 .byte 72,173 // lods %ds:(%rsi),%rax
18943 .byte 72,139,0 // mov (%rax),%rax
18944 .byte 102,68,15,56,51,4,120 // pmovzxwd (%rax,%rdi,2),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018945 .byte 102,15,111,29,157,41,0,0 // movdqa 0x299d(%rip),%xmm3 # 3d20 <_sk_callback_sse41+0x3f3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018946 .byte 102,65,15,219,216 // pand %xmm8,%xmm3
18947 .byte 68,15,91,203 // cvtdq2ps %xmm3,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040018948 .byte 68,15,89,13,156,41,0,0 // mulps 0x299c(%rip),%xmm9 # 3d30 <_sk_callback_sse41+0x403>
18949 .byte 102,15,111,29,164,41,0,0 // movdqa 0x29a4(%rip),%xmm3 # 3d40 <_sk_callback_sse41+0x413>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018950 .byte 102,65,15,219,216 // pand %xmm8,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040018951 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040018952 .byte 15,89,29,165,41,0,0 // mulps 0x29a5(%rip),%xmm3 # 3d50 <_sk_callback_sse41+0x423>
18953 .byte 102,68,15,219,5,172,41,0,0 // pand 0x29ac(%rip),%xmm8 # 3d60 <_sk_callback_sse41+0x433>
Mike Klein308e6242017-04-27 13:56:33 -040018954 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018955 .byte 68,15,89,5,176,41,0,0 // mulps 0x29b0(%rip),%xmm8 # 3d70 <_sk_callback_sse41+0x443>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018956 .byte 15,92,196 // subps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018957 .byte 65,15,89,193 // mulps %xmm9,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040018958 .byte 15,88,196 // addps %xmm4,%xmm0
18959 .byte 15,92,205 // subps %xmm5,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040018960 .byte 15,89,203 // mulps %xmm3,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040018961 .byte 15,88,205 // addps %xmm5,%xmm1
18962 .byte 15,92,214 // subps %xmm6,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018963 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040018964 .byte 15,88,214 // addps %xmm6,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040018965 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040018966 .byte 15,40,29,154,41,0,0 // movaps 0x299a(%rip),%xmm3 # 3d80 <_sk_callback_sse41+0x453>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018967 .byte 255,224 // jmpq *%rax
18968
Mike Klein7c4af542017-03-29 18:21:14 -040018969HIDDEN _sk_load_tables_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018970.globl _sk_load_tables_sse41
Mike Klein86714282017-04-13 17:37:38 -040018971FUNCTION(_sk_load_tables_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018972_sk_load_tables_sse41:
18973 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040018974 .byte 76,139,0 // mov (%rax),%r8
18975 .byte 76,139,72,8 // mov 0x8(%rax),%r9
18976 .byte 243,69,15,111,4,184 // movdqu (%r8,%rdi,4),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040018977 .byte 102,15,111,5,145,41,0,0 // movdqa 0x2991(%rip),%xmm0 # 3d90 <_sk_callback_sse41+0x463>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018978 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040018979 .byte 102,73,15,58,22,192,1 // pextrq $0x1,%xmm0,%r8
18980 .byte 102,72,15,126,193 // movq %xmm0,%rcx
18981 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleind7e06ae2017-03-29 16:33:06 -040018982 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040018983 .byte 69,15,182,216 // movzbl %r8b,%r11d
18984 .byte 73,193,232,30 // shr $0x1e,%r8
18985 .byte 243,67,15,16,4,145 // movss (%r9,%r10,4),%xmm0
18986 .byte 102,65,15,58,33,4,9,16 // insertps $0x10,(%r9,%rcx,1),%xmm0
18987 .byte 102,67,15,58,33,4,153,32 // insertps $0x20,(%r9,%r11,4),%xmm0
18988 .byte 243,67,15,16,12,1 // movss (%r9,%r8,1),%xmm1
18989 .byte 102,15,58,33,193,48 // insertps $0x30,%xmm1,%xmm0
18990 .byte 76,139,64,16 // mov 0x10(%rax),%r8
18991 .byte 102,65,15,111,200 // movdqa %xmm8,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040018992 .byte 102,15,56,0,13,76,41,0,0 // pshufb 0x294c(%rip),%xmm1 # 3da0 <_sk_callback_sse41+0x473>
Mike Klein0aa742f2017-04-27 13:36:57 -040018993 .byte 102,73,15,58,22,201,1 // pextrq $0x1,%xmm1,%r9
18994 .byte 102,72,15,126,201 // movq %xmm1,%rcx
18995 .byte 68,15,182,209 // movzbl %cl,%r10d
18996 .byte 72,193,233,30 // shr $0x1e,%rcx
18997 .byte 69,15,182,217 // movzbl %r9b,%r11d
18998 .byte 73,193,233,30 // shr $0x1e,%r9
18999 .byte 243,67,15,16,12,144 // movss (%r8,%r10,4),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040019000 .byte 102,65,15,58,33,12,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040019001 .byte 243,67,15,16,20,152 // movss (%r8,%r11,4),%xmm2
19002 .byte 102,15,58,33,202,32 // insertps $0x20,%xmm2,%xmm1
19003 .byte 243,67,15,16,20,8 // movss (%r8,%r9,1),%xmm2
19004 .byte 102,15,58,33,202,48 // insertps $0x30,%xmm2,%xmm1
19005 .byte 76,139,64,24 // mov 0x18(%rax),%r8
19006 .byte 102,65,15,111,208 // movdqa %xmm8,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040019007 .byte 102,15,56,0,21,8,41,0,0 // pshufb 0x2908(%rip),%xmm2 # 3db0 <_sk_callback_sse41+0x483>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019008 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019009 .byte 102,72,15,126,208 // movq %xmm2,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040019010 .byte 68,15,182,200 // movzbl %al,%r9d
Mike Kleind7e06ae2017-03-29 16:33:06 -040019011 .byte 72,193,232,30 // shr $0x1e,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040019012 .byte 68,15,182,209 // movzbl %cl,%r10d
19013 .byte 72,193,233,30 // shr $0x1e,%rcx
19014 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
19015 .byte 102,65,15,58,33,20,0,16 // insertps $0x10,(%r8,%rax,1),%xmm2
19016 .byte 243,67,15,16,28,144 // movss (%r8,%r10,4),%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040019017 .byte 102,15,58,33,211,32 // insertps $0x20,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040019018 .byte 243,65,15,16,28,8 // movss (%r8,%rcx,1),%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040019019 .byte 102,15,58,33,211,48 // insertps $0x30,%xmm3,%xmm2
19020 .byte 102,65,15,114,208,24 // psrld $0x18,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040019021 .byte 65,15,91,216 // cvtdq2ps %xmm8,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040019022 .byte 15,89,29,197,40,0,0 // mulps 0x28c5(%rip),%xmm3 # 3dc0 <_sk_callback_sse41+0x493>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019023 .byte 72,173 // lods %ds:(%rsi),%rax
19024 .byte 255,224 // jmpq *%rax
19025
Mike Kleina3735cd2017-04-17 13:19:05 -040019026HIDDEN _sk_load_tables_u16_be_sse41
19027.globl _sk_load_tables_u16_be_sse41
19028FUNCTION(_sk_load_tables_u16_be_sse41)
19029_sk_load_tables_u16_be_sse41:
19030 .byte 72,173 // lods %ds:(%rsi),%rax
19031 .byte 72,139,8 // mov (%rax),%rcx
19032 .byte 76,139,64,8 // mov 0x8(%rax),%r8
19033 .byte 243,15,111,4,249 // movdqu (%rcx,%rdi,8),%xmm0
19034 .byte 243,15,111,76,249,16 // movdqu 0x10(%rcx,%rdi,8),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040019035 .byte 102,68,15,111,200 // movdqa %xmm0,%xmm9
19036 .byte 102,68,15,97,201 // punpcklwd %xmm1,%xmm9
Mike Kleina3735cd2017-04-17 13:19:05 -040019037 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040019038 .byte 102,65,15,111,201 // movdqa %xmm9,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040019039 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040019040 .byte 102,68,15,105,200 // punpckhwd %xmm0,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040019041 .byte 102,68,15,111,5,152,40,0,0 // movdqa 0x2898(%rip),%xmm8 # 3dd0 <_sk_callback_sse41+0x4a3>
Mike Klein0aa742f2017-04-27 13:36:57 -040019042 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040019043 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040019044 .byte 102,15,56,51,192 // pmovzxwd %xmm0,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040019045 .byte 102,73,15,58,22,193,1 // pextrq $0x1,%xmm0,%r9
19046 .byte 102,72,15,126,193 // movq %xmm0,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040019047 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040019048 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040019049 .byte 69,15,182,217 // movzbl %r9b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040019050 .byte 73,193,233,30 // shr $0x1e,%r9
19051 .byte 243,67,15,16,4,144 // movss (%r8,%r10,4),%xmm0
19052 .byte 102,65,15,58,33,4,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040019053 .byte 243,67,15,16,20,152 // movss (%r8,%r11,4),%xmm2
19054 .byte 102,15,58,33,194,32 // insertps $0x20,%xmm2,%xmm0
19055 .byte 243,67,15,16,20,8 // movss (%r8,%r9,1),%xmm2
19056 .byte 102,15,58,33,194,48 // insertps $0x30,%xmm2,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040019057 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Kleinb3665f02017-05-01 14:56:04 -040019058 .byte 102,15,56,0,13,75,40,0,0 // pshufb 0x284b(%rip),%xmm1 # 3de0 <_sk_callback_sse41+0x4b3>
Mike Kleina3735cd2017-04-17 13:19:05 -040019059 .byte 102,15,56,51,201 // pmovzxwd %xmm1,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040019060 .byte 102,73,15,58,22,201,1 // pextrq $0x1,%xmm1,%r9
19061 .byte 102,72,15,126,201 // movq %xmm1,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040019062 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040019063 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040019064 .byte 69,15,182,217 // movzbl %r9b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040019065 .byte 73,193,233,30 // shr $0x1e,%r9
19066 .byte 243,67,15,16,12,144 // movss (%r8,%r10,4),%xmm1
19067 .byte 102,65,15,58,33,12,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm1
19068 .byte 243,67,15,16,20,152 // movss (%r8,%r11,4),%xmm2
19069 .byte 102,15,58,33,202,32 // insertps $0x20,%xmm2,%xmm1
19070 .byte 243,67,15,16,20,8 // movss (%r8,%r9,1),%xmm2
19071 .byte 102,15,58,33,202,48 // insertps $0x30,%xmm2,%xmm1
19072 .byte 76,139,64,24 // mov 0x18(%rax),%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040019073 .byte 102,69,15,219,193 // pand %xmm9,%xmm8
19074 .byte 102,65,15,56,51,208 // pmovzxwd %xmm8,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040019075 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
19076 .byte 102,72,15,126,208 // movq %xmm2,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040019077 .byte 68,15,182,200 // movzbl %al,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040019078 .byte 72,193,232,30 // shr $0x1e,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040019079 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040019080 .byte 72,193,233,30 // shr $0x1e,%rcx
19081 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
19082 .byte 102,65,15,58,33,20,0,16 // insertps $0x10,(%r8,%rax,1),%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040019083 .byte 243,67,15,16,28,144 // movss (%r8,%r10,4),%xmm3
19084 .byte 102,15,58,33,211,32 // insertps $0x20,%xmm3,%xmm2
19085 .byte 243,65,15,16,28,8 // movss (%r8,%rcx,1),%xmm3
19086 .byte 102,15,58,33,211,48 // insertps $0x30,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040019087 .byte 102,65,15,112,217,78 // pshufd $0x4e,%xmm9,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040019088 .byte 102,68,15,111,195 // movdqa %xmm3,%xmm8
19089 .byte 102,65,15,113,240,8 // psllw $0x8,%xmm8
Mike Kleina3735cd2017-04-17 13:19:05 -040019090 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040019091 .byte 102,65,15,235,216 // por %xmm8,%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040019092 .byte 102,15,56,51,219 // pmovzxwd %xmm3,%xmm3
19093 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040019094 .byte 15,89,29,153,39,0,0 // mulps 0x2799(%rip),%xmm3 # 3df0 <_sk_callback_sse41+0x4c3>
Mike Kleina3735cd2017-04-17 13:19:05 -040019095 .byte 72,173 // lods %ds:(%rsi),%rax
19096 .byte 255,224 // jmpq *%rax
19097
19098HIDDEN _sk_load_tables_rgb_u16_be_sse41
19099.globl _sk_load_tables_rgb_u16_be_sse41
19100FUNCTION(_sk_load_tables_rgb_u16_be_sse41)
19101_sk_load_tables_rgb_u16_be_sse41:
19102 .byte 72,173 // lods %ds:(%rsi),%rax
19103 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
19104 .byte 72,139,8 // mov (%rax),%rcx
19105 .byte 76,139,64,8 // mov 0x8(%rax),%r8
19106 .byte 243,66,15,111,20,73 // movdqu (%rcx,%r9,2),%xmm2
19107 .byte 243,66,15,111,68,73,8 // movdqu 0x8(%rcx,%r9,2),%xmm0
19108 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040019109 .byte 102,68,15,111,202 // movdqa %xmm2,%xmm9
19110 .byte 102,65,15,115,217,6 // psrldq $0x6,%xmm9
Mike Kleina3735cd2017-04-17 13:19:05 -040019111 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
19112 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040019113 .byte 102,68,15,97,200 // punpcklwd %xmm0,%xmm9
19114 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
19115 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040019116 .byte 102,68,15,111,5,91,39,0,0 // movdqa 0x275b(%rip),%xmm8 # 3e00 <_sk_callback_sse41+0x4d3>
Mike Klein0aa742f2017-04-27 13:36:57 -040019117 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
19118 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040019119 .byte 102,15,56,51,192 // pmovzxwd %xmm0,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040019120 .byte 102,73,15,58,22,193,1 // pextrq $0x1,%xmm0,%r9
19121 .byte 102,72,15,126,193 // movq %xmm0,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040019122 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040019123 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040019124 .byte 69,15,182,217 // movzbl %r9b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040019125 .byte 73,193,233,30 // shr $0x1e,%r9
19126 .byte 243,67,15,16,4,144 // movss (%r8,%r10,4),%xmm0
19127 .byte 102,65,15,58,33,4,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040019128 .byte 243,67,15,16,28,152 // movss (%r8,%r11,4),%xmm3
19129 .byte 102,15,58,33,195,32 // insertps $0x20,%xmm3,%xmm0
19130 .byte 243,67,15,16,28,8 // movss (%r8,%r9,1),%xmm3
19131 .byte 102,15,58,33,195,48 // insertps $0x30,%xmm3,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040019132 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Kleinb3665f02017-05-01 14:56:04 -040019133 .byte 102,15,56,0,13,14,39,0,0 // pshufb 0x270e(%rip),%xmm1 # 3e10 <_sk_callback_sse41+0x4e3>
Mike Klein0aa742f2017-04-27 13:36:57 -040019134 .byte 102,15,56,51,201 // pmovzxwd %xmm1,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040019135 .byte 102,73,15,58,22,201,1 // pextrq $0x1,%xmm1,%r9
19136 .byte 102,72,15,126,201 // movq %xmm1,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040019137 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040019138 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040019139 .byte 69,15,182,217 // movzbl %r9b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040019140 .byte 73,193,233,30 // shr $0x1e,%r9
19141 .byte 243,67,15,16,12,144 // movss (%r8,%r10,4),%xmm1
19142 .byte 102,65,15,58,33,12,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm1
19143 .byte 243,67,15,16,28,152 // movss (%r8,%r11,4),%xmm3
19144 .byte 102,15,58,33,203,32 // insertps $0x20,%xmm3,%xmm1
19145 .byte 243,67,15,16,28,8 // movss (%r8,%r9,1),%xmm3
19146 .byte 102,15,58,33,203,48 // insertps $0x30,%xmm3,%xmm1
19147 .byte 76,139,64,24 // mov 0x18(%rax),%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040019148 .byte 102,65,15,105,209 // punpckhwd %xmm9,%xmm2
19149 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040019150 .byte 102,15,56,51,210 // pmovzxwd %xmm2,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040019151 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
19152 .byte 102,72,15,126,208 // movq %xmm2,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040019153 .byte 68,15,182,200 // movzbl %al,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040019154 .byte 72,193,232,30 // shr $0x1e,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040019155 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040019156 .byte 72,193,233,30 // shr $0x1e,%rcx
19157 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
19158 .byte 102,65,15,58,33,20,0,16 // insertps $0x10,(%r8,%rax,1),%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040019159 .byte 243,67,15,16,28,144 // movss (%r8,%r10,4),%xmm3
19160 .byte 102,15,58,33,211,32 // insertps $0x20,%xmm3,%xmm2
19161 .byte 243,65,15,16,28,8 // movss (%r8,%rcx,1),%xmm3
19162 .byte 102,15,58,33,211,48 // insertps $0x30,%xmm3,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040019163 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040019164 .byte 15,40,29,121,38,0,0 // movaps 0x2679(%rip),%xmm3 # 3e20 <_sk_callback_sse41+0x4f3>
Mike Kleina3735cd2017-04-17 13:19:05 -040019165 .byte 255,224 // jmpq *%rax
19166
Mike Klein40de6da2017-04-07 13:09:29 -040019167HIDDEN _sk_byte_tables_sse41
19168.globl _sk_byte_tables_sse41
Mike Klein86714282017-04-13 17:37:38 -040019169FUNCTION(_sk_byte_tables_sse41)
Mike Klein40de6da2017-04-07 13:09:29 -040019170_sk_byte_tables_sse41:
19171 .byte 65,86 // push %r14
19172 .byte 83 // push %rbx
19173 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040019174 .byte 68,15,40,5,122,38,0,0 // movaps 0x267a(%rip),%xmm8 # 3e30 <_sk_callback_sse41+0x503>
Mike Klein40de6da2017-04-07 13:09:29 -040019175 .byte 65,15,89,192 // mulps %xmm8,%xmm0
19176 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
19177 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
19178 .byte 65,137,200 // mov %ecx,%r8d
19179 .byte 72,193,233,32 // shr $0x20,%rcx
19180 .byte 102,73,15,126,193 // movq %xmm0,%r9
19181 .byte 69,137,202 // mov %r9d,%r10d
Mike Kleinfe560a82017-05-01 12:56:35 -040019182 .byte 73,193,233,32 // shr $0x20,%r9
19183 .byte 76,139,24 // mov (%rax),%r11
19184 .byte 76,139,112,8 // mov 0x8(%rax),%r14
19185 .byte 102,67,15,58,32,4,19,0 // pinsrb $0x0,(%r11,%r10,1),%xmm0
19186 .byte 102,67,15,58,32,4,11,1 // pinsrb $0x1,(%r11,%r9,1),%xmm0
19187 .byte 67,15,182,28,3 // movzbl (%r11,%r8,1),%ebx
Mike Klein40de6da2017-04-07 13:09:29 -040019188 .byte 102,15,58,32,195,2 // pinsrb $0x2,%ebx,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040019189 .byte 65,15,182,12,11 // movzbl (%r11,%rcx,1),%ecx
Mike Klein40de6da2017-04-07 13:09:29 -040019190 .byte 102,15,58,32,193,3 // pinsrb $0x3,%ecx,%xmm0
19191 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
19192 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040019193 .byte 68,15,40,13,43,38,0,0 // movaps 0x262b(%rip),%xmm9 # 3e40 <_sk_callback_sse41+0x513>
Mike Klein40de6da2017-04-07 13:09:29 -040019194 .byte 65,15,89,193 // mulps %xmm9,%xmm0
19195 .byte 65,15,89,200 // mulps %xmm8,%xmm1
19196 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
19197 .byte 102,72,15,58,22,201,1 // pextrq $0x1,%xmm1,%rcx
19198 .byte 65,137,200 // mov %ecx,%r8d
19199 .byte 72,193,233,32 // shr $0x20,%rcx
19200 .byte 102,72,15,126,203 // movq %xmm1,%rbx
Mike Kleinfe560a82017-05-01 12:56:35 -040019201 .byte 65,137,217 // mov %ebx,%r9d
Mike Klein40de6da2017-04-07 13:09:29 -040019202 .byte 72,193,235,32 // shr $0x20,%rbx
Mike Kleinfe560a82017-05-01 12:56:35 -040019203 .byte 102,67,15,58,32,12,14,0 // pinsrb $0x0,(%r14,%r9,1),%xmm1
19204 .byte 102,65,15,58,32,12,30,1 // pinsrb $0x1,(%r14,%rbx,1),%xmm1
19205 .byte 67,15,182,28,6 // movzbl (%r14,%r8,1),%ebx
Mike Klein40de6da2017-04-07 13:09:29 -040019206 .byte 102,15,58,32,203,2 // pinsrb $0x2,%ebx,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040019207 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
Mike Klein40de6da2017-04-07 13:09:29 -040019208 .byte 102,15,58,32,201,3 // pinsrb $0x3,%ecx,%xmm1
19209 .byte 102,15,56,49,201 // pmovzxbd %xmm1,%xmm1
19210 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
19211 .byte 65,15,89,201 // mulps %xmm9,%xmm1
19212 .byte 76,139,72,16 // mov 0x10(%rax),%r9
19213 .byte 65,15,89,208 // mulps %xmm8,%xmm2
19214 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
19215 .byte 102,72,15,58,22,211,1 // pextrq $0x1,%xmm2,%rbx
19216 .byte 65,137,216 // mov %ebx,%r8d
19217 .byte 72,193,235,32 // shr $0x20,%rbx
19218 .byte 102,72,15,126,209 // movq %xmm2,%rcx
19219 .byte 65,137,202 // mov %ecx,%r10d
19220 .byte 72,193,233,32 // shr $0x20,%rcx
19221 .byte 102,67,15,58,32,20,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm2
19222 .byte 102,65,15,58,32,20,9,1 // pinsrb $0x1,(%r9,%rcx,1),%xmm2
19223 .byte 67,15,182,12,1 // movzbl (%r9,%r8,1),%ecx
19224 .byte 102,15,58,32,209,2 // pinsrb $0x2,%ecx,%xmm2
19225 .byte 65,15,182,12,25 // movzbl (%r9,%rbx,1),%ecx
19226 .byte 102,15,58,32,209,3 // pinsrb $0x3,%ecx,%xmm2
19227 .byte 102,15,56,49,210 // pmovzxbd %xmm2,%xmm2
19228 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
19229 .byte 65,15,89,209 // mulps %xmm9,%xmm2
19230 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040019231 .byte 65,15,89,216 // mulps %xmm8,%xmm3
19232 .byte 102,15,91,219 // cvtps2dq %xmm3,%xmm3
Mike Klein40de6da2017-04-07 13:09:29 -040019233 .byte 102,72,15,58,22,217,1 // pextrq $0x1,%xmm3,%rcx
19234 .byte 65,137,200 // mov %ecx,%r8d
19235 .byte 72,193,233,32 // shr $0x20,%rcx
19236 .byte 102,72,15,126,219 // movq %xmm3,%rbx
19237 .byte 65,137,217 // mov %ebx,%r9d
19238 .byte 72,193,235,32 // shr $0x20,%rbx
19239 .byte 102,66,15,58,32,28,8,0 // pinsrb $0x0,(%rax,%r9,1),%xmm3
19240 .byte 102,15,58,32,28,24,1 // pinsrb $0x1,(%rax,%rbx,1),%xmm3
19241 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
19242 .byte 102,15,58,32,219,2 // pinsrb $0x2,%ebx,%xmm3
19243 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
19244 .byte 102,15,58,32,216,3 // pinsrb $0x3,%eax,%xmm3
19245 .byte 102,15,56,49,219 // pmovzxbd %xmm3,%xmm3
19246 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
19247 .byte 65,15,89,217 // mulps %xmm9,%xmm3
19248 .byte 72,173 // lods %ds:(%rsi),%rax
19249 .byte 91 // pop %rbx
19250 .byte 65,94 // pop %r14
19251 .byte 255,224 // jmpq *%rax
19252
19253HIDDEN _sk_byte_tables_rgb_sse41
19254.globl _sk_byte_tables_rgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040019255FUNCTION(_sk_byte_tables_rgb_sse41)
Mike Klein40de6da2017-04-07 13:09:29 -040019256_sk_byte_tables_rgb_sse41:
19257 .byte 65,86 // push %r14
19258 .byte 83 // push %rbx
19259 .byte 72,173 // lods %ds:(%rsi),%rax
19260 .byte 139,72,24 // mov 0x18(%rax),%ecx
19261 .byte 255,201 // dec %ecx
19262 .byte 102,68,15,110,193 // movd %ecx,%xmm8
19263 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
19264 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
19265 .byte 65,15,89,192 // mulps %xmm8,%xmm0
19266 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
19267 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
19268 .byte 65,137,200 // mov %ecx,%r8d
19269 .byte 72,193,233,32 // shr $0x20,%rcx
19270 .byte 102,73,15,126,193 // movq %xmm0,%r9
19271 .byte 69,137,202 // mov %r9d,%r10d
19272 .byte 77,137,203 // mov %r9,%r11
19273 .byte 73,193,235,32 // shr $0x20,%r11
19274 .byte 76,139,48 // mov (%rax),%r14
19275 .byte 76,139,72,8 // mov 0x8(%rax),%r9
19276 .byte 102,67,15,58,32,4,22,0 // pinsrb $0x0,(%r14,%r10,1),%xmm0
19277 .byte 102,67,15,58,32,4,30,1 // pinsrb $0x1,(%r14,%r11,1),%xmm0
19278 .byte 67,15,182,28,6 // movzbl (%r14,%r8,1),%ebx
19279 .byte 102,15,58,32,195,2 // pinsrb $0x2,%ebx,%xmm0
19280 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
19281 .byte 102,15,58,32,193,3 // pinsrb $0x3,%ecx,%xmm0
19282 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
19283 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040019284 .byte 68,15,40,13,179,36,0,0 // movaps 0x24b3(%rip),%xmm9 # 3e50 <_sk_callback_sse41+0x523>
Mike Klein40de6da2017-04-07 13:09:29 -040019285 .byte 65,15,89,193 // mulps %xmm9,%xmm0
19286 .byte 65,15,89,200 // mulps %xmm8,%xmm1
19287 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
19288 .byte 102,72,15,58,22,201,1 // pextrq $0x1,%xmm1,%rcx
19289 .byte 65,137,200 // mov %ecx,%r8d
19290 .byte 72,193,233,32 // shr $0x20,%rcx
19291 .byte 102,72,15,126,203 // movq %xmm1,%rbx
19292 .byte 65,137,218 // mov %ebx,%r10d
19293 .byte 72,193,235,32 // shr $0x20,%rbx
19294 .byte 102,67,15,58,32,12,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm1
19295 .byte 102,65,15,58,32,12,25,1 // pinsrb $0x1,(%r9,%rbx,1),%xmm1
19296 .byte 67,15,182,28,1 // movzbl (%r9,%r8,1),%ebx
19297 .byte 102,15,58,32,203,2 // pinsrb $0x2,%ebx,%xmm1
19298 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
19299 .byte 102,15,58,32,201,3 // pinsrb $0x3,%ecx,%xmm1
19300 .byte 102,15,56,49,201 // pmovzxbd %xmm1,%xmm1
19301 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
19302 .byte 65,15,89,201 // mulps %xmm9,%xmm1
19303 .byte 72,139,64,16 // mov 0x10(%rax),%rax
19304 .byte 65,15,89,208 // mulps %xmm8,%xmm2
19305 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
19306 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
19307 .byte 65,137,200 // mov %ecx,%r8d
19308 .byte 72,193,233,32 // shr $0x20,%rcx
19309 .byte 102,72,15,126,211 // movq %xmm2,%rbx
19310 .byte 65,137,217 // mov %ebx,%r9d
19311 .byte 72,193,235,32 // shr $0x20,%rbx
19312 .byte 102,66,15,58,32,20,8,0 // pinsrb $0x0,(%rax,%r9,1),%xmm2
19313 .byte 102,15,58,32,20,24,1 // pinsrb $0x1,(%rax,%rbx,1),%xmm2
19314 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
19315 .byte 102,15,58,32,211,2 // pinsrb $0x2,%ebx,%xmm2
19316 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
19317 .byte 102,15,58,32,208,3 // pinsrb $0x3,%eax,%xmm2
19318 .byte 102,15,56,49,210 // pmovzxbd %xmm2,%xmm2
19319 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
19320 .byte 65,15,89,209 // mulps %xmm9,%xmm2
19321 .byte 72,173 // lods %ds:(%rsi),%rax
19322 .byte 91 // pop %rbx
19323 .byte 65,94 // pop %r14
19324 .byte 255,224 // jmpq *%rax
19325
Mike Kleinc7d9c0b2017-04-17 14:43:59 -040019326HIDDEN _sk_table_r_sse41
19327.globl _sk_table_r_sse41
19328FUNCTION(_sk_table_r_sse41)
19329_sk_table_r_sse41:
19330 .byte 72,173 // lods %ds:(%rsi),%rax
19331 .byte 76,139,8 // mov (%rax),%r9
19332 .byte 139,64,8 // mov 0x8(%rax),%eax
19333 .byte 255,200 // dec %eax
19334 .byte 102,68,15,110,192 // movd %eax,%xmm8
19335 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
19336 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
19337 .byte 68,15,89,192 // mulps %xmm0,%xmm8
19338 .byte 102,65,15,91,192 // cvtps2dq %xmm8,%xmm0
19339 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
19340 .byte 65,137,192 // mov %eax,%r8d
19341 .byte 72,193,232,32 // shr $0x20,%rax
19342 .byte 102,72,15,126,193 // movq %xmm0,%rcx
19343 .byte 65,137,202 // mov %ecx,%r10d
19344 .byte 72,193,233,32 // shr $0x20,%rcx
19345 .byte 243,67,15,16,4,145 // movss (%r9,%r10,4),%xmm0
19346 .byte 102,65,15,58,33,4,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm0
19347 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
19348 .byte 102,65,15,58,33,192,32 // insertps $0x20,%xmm8,%xmm0
19349 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
19350 .byte 102,65,15,58,33,192,48 // insertps $0x30,%xmm8,%xmm0
19351 .byte 72,173 // lods %ds:(%rsi),%rax
19352 .byte 255,224 // jmpq *%rax
19353
19354HIDDEN _sk_table_g_sse41
19355.globl _sk_table_g_sse41
19356FUNCTION(_sk_table_g_sse41)
19357_sk_table_g_sse41:
19358 .byte 72,173 // lods %ds:(%rsi),%rax
19359 .byte 76,139,8 // mov (%rax),%r9
19360 .byte 139,64,8 // mov 0x8(%rax),%eax
19361 .byte 255,200 // dec %eax
19362 .byte 102,68,15,110,192 // movd %eax,%xmm8
19363 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
19364 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
19365 .byte 68,15,89,193 // mulps %xmm1,%xmm8
19366 .byte 102,65,15,91,200 // cvtps2dq %xmm8,%xmm1
19367 .byte 102,72,15,58,22,200,1 // pextrq $0x1,%xmm1,%rax
19368 .byte 65,137,192 // mov %eax,%r8d
19369 .byte 72,193,232,32 // shr $0x20,%rax
19370 .byte 102,72,15,126,201 // movq %xmm1,%rcx
19371 .byte 65,137,202 // mov %ecx,%r10d
19372 .byte 72,193,233,32 // shr $0x20,%rcx
19373 .byte 243,67,15,16,12,145 // movss (%r9,%r10,4),%xmm1
19374 .byte 102,65,15,58,33,12,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm1
19375 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
19376 .byte 102,65,15,58,33,200,32 // insertps $0x20,%xmm8,%xmm1
19377 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
19378 .byte 102,65,15,58,33,200,48 // insertps $0x30,%xmm8,%xmm1
19379 .byte 72,173 // lods %ds:(%rsi),%rax
19380 .byte 255,224 // jmpq *%rax
19381
19382HIDDEN _sk_table_b_sse41
19383.globl _sk_table_b_sse41
19384FUNCTION(_sk_table_b_sse41)
19385_sk_table_b_sse41:
19386 .byte 72,173 // lods %ds:(%rsi),%rax
19387 .byte 76,139,8 // mov (%rax),%r9
19388 .byte 139,64,8 // mov 0x8(%rax),%eax
19389 .byte 255,200 // dec %eax
19390 .byte 102,68,15,110,192 // movd %eax,%xmm8
19391 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
19392 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
19393 .byte 68,15,89,194 // mulps %xmm2,%xmm8
19394 .byte 102,65,15,91,208 // cvtps2dq %xmm8,%xmm2
19395 .byte 102,72,15,58,22,208,1 // pextrq $0x1,%xmm2,%rax
19396 .byte 65,137,192 // mov %eax,%r8d
19397 .byte 72,193,232,32 // shr $0x20,%rax
19398 .byte 102,72,15,126,209 // movq %xmm2,%rcx
19399 .byte 65,137,202 // mov %ecx,%r10d
19400 .byte 72,193,233,32 // shr $0x20,%rcx
19401 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
19402 .byte 102,65,15,58,33,20,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm2
19403 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
19404 .byte 102,65,15,58,33,208,32 // insertps $0x20,%xmm8,%xmm2
19405 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
19406 .byte 102,65,15,58,33,208,48 // insertps $0x30,%xmm8,%xmm2
19407 .byte 72,173 // lods %ds:(%rsi),%rax
19408 .byte 255,224 // jmpq *%rax
19409
19410HIDDEN _sk_table_a_sse41
19411.globl _sk_table_a_sse41
19412FUNCTION(_sk_table_a_sse41)
19413_sk_table_a_sse41:
19414 .byte 72,173 // lods %ds:(%rsi),%rax
19415 .byte 76,139,8 // mov (%rax),%r9
19416 .byte 139,64,8 // mov 0x8(%rax),%eax
19417 .byte 255,200 // dec %eax
19418 .byte 102,68,15,110,192 // movd %eax,%xmm8
19419 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
19420 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
19421 .byte 68,15,89,195 // mulps %xmm3,%xmm8
19422 .byte 102,65,15,91,216 // cvtps2dq %xmm8,%xmm3
19423 .byte 102,72,15,58,22,216,1 // pextrq $0x1,%xmm3,%rax
19424 .byte 65,137,192 // mov %eax,%r8d
19425 .byte 72,193,232,32 // shr $0x20,%rax
19426 .byte 102,72,15,126,217 // movq %xmm3,%rcx
19427 .byte 65,137,202 // mov %ecx,%r10d
19428 .byte 72,193,233,32 // shr $0x20,%rcx
19429 .byte 243,67,15,16,28,145 // movss (%r9,%r10,4),%xmm3
19430 .byte 102,65,15,58,33,28,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm3
19431 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
19432 .byte 102,65,15,58,33,216,32 // insertps $0x20,%xmm8,%xmm3
19433 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
19434 .byte 102,65,15,58,33,216,48 // insertps $0x30,%xmm8,%xmm3
19435 .byte 72,173 // lods %ds:(%rsi),%rax
19436 .byte 255,224 // jmpq *%rax
19437
Mike Klein44375172017-04-17 19:32:05 -040019438HIDDEN _sk_parametric_r_sse41
19439.globl _sk_parametric_r_sse41
19440FUNCTION(_sk_parametric_r_sse41)
19441_sk_parametric_r_sse41:
19442 .byte 72,173 // lods %ds:(%rsi),%rax
19443 .byte 243,68,15,16,64,16 // movss 0x10(%rax),%xmm8
19444 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
19445 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
19446 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
19447 .byte 68,15,89,200 // mulps %xmm0,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040019448 .byte 243,68,15,16,80,4 // movss 0x4(%rax),%xmm10
19449 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
19450 .byte 68,15,89,208 // mulps %xmm0,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040019451 .byte 65,15,194,192,2 // cmpleps %xmm8,%xmm0
19452 .byte 243,68,15,16,64,24 // movss 0x18(%rax),%xmm8
19453 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
19454 .byte 69,15,88,200 // addps %xmm8,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040019455 .byte 243,68,15,16,24 // movss (%rax),%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040019456 .byte 243,68,15,16,64,8 // movss 0x8(%rax),%xmm8
19457 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040019458 .byte 69,15,88,208 // addps %xmm8,%xmm10
19459 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
19460 .byte 69,15,91,194 // cvtdq2ps %xmm10,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040019461 .byte 68,15,89,5,10,34,0,0 // mulps 0x220a(%rip),%xmm8 # 3e60 <_sk_callback_sse41+0x533>
19462 .byte 68,15,84,21,18,34,0,0 // andps 0x2212(%rip),%xmm10 # 3e70 <_sk_callback_sse41+0x543>
19463 .byte 68,15,86,21,26,34,0,0 // orps 0x221a(%rip),%xmm10 # 3e80 <_sk_callback_sse41+0x553>
19464 .byte 68,15,88,5,34,34,0,0 // addps 0x2222(%rip),%xmm8 # 3e90 <_sk_callback_sse41+0x563>
19465 .byte 68,15,40,37,42,34,0,0 // movaps 0x222a(%rip),%xmm12 # 3ea0 <_sk_callback_sse41+0x573>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019466 .byte 69,15,89,226 // mulps %xmm10,%xmm12
19467 .byte 69,15,92,196 // subps %xmm12,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040019468 .byte 68,15,88,21,42,34,0,0 // addps 0x222a(%rip),%xmm10 # 3eb0 <_sk_callback_sse41+0x583>
19469 .byte 68,15,40,37,50,34,0,0 // movaps 0x2232(%rip),%xmm12 # 3ec0 <_sk_callback_sse41+0x593>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019470 .byte 69,15,94,226 // divps %xmm10,%xmm12
19471 .byte 69,15,92,196 // subps %xmm12,%xmm8
19472 .byte 69,15,89,195 // mulps %xmm11,%xmm8
19473 .byte 102,69,15,58,8,208,1 // roundps $0x1,%xmm8,%xmm10
19474 .byte 69,15,40,216 // movaps %xmm8,%xmm11
19475 .byte 69,15,92,218 // subps %xmm10,%xmm11
Mike Kleinb3665f02017-05-01 14:56:04 -040019476 .byte 68,15,88,5,31,34,0,0 // addps 0x221f(%rip),%xmm8 # 3ed0 <_sk_callback_sse41+0x5a3>
19477 .byte 68,15,40,21,39,34,0,0 // movaps 0x2227(%rip),%xmm10 # 3ee0 <_sk_callback_sse41+0x5b3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019478 .byte 69,15,89,211 // mulps %xmm11,%xmm10
19479 .byte 69,15,92,194 // subps %xmm10,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040019480 .byte 68,15,40,21,39,34,0,0 // movaps 0x2227(%rip),%xmm10 # 3ef0 <_sk_callback_sse41+0x5c3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019481 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040019482 .byte 68,15,40,29,43,34,0,0 // movaps 0x222b(%rip),%xmm11 # 3f00 <_sk_callback_sse41+0x5d3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019483 .byte 69,15,94,218 // divps %xmm10,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040019484 .byte 69,15,88,216 // addps %xmm8,%xmm11
Mike Kleinb3665f02017-05-01 14:56:04 -040019485 .byte 68,15,89,29,43,34,0,0 // mulps 0x222b(%rip),%xmm11 # 3f10 <_sk_callback_sse41+0x5e3>
Mike Klein44375172017-04-17 19:32:05 -040019486 .byte 102,69,15,91,211 // cvtps2dq %xmm11,%xmm10
19487 .byte 243,68,15,16,64,20 // movss 0x14(%rax),%xmm8
19488 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
19489 .byte 69,15,88,194 // addps %xmm10,%xmm8
19490 .byte 102,69,15,56,20,193 // blendvps %xmm0,%xmm9,%xmm8
19491 .byte 15,87,192 // xorps %xmm0,%xmm0
19492 .byte 68,15,95,192 // maxps %xmm0,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040019493 .byte 68,15,93,5,18,34,0,0 // minps 0x2212(%rip),%xmm8 # 3f20 <_sk_callback_sse41+0x5f3>
Mike Klein44375172017-04-17 19:32:05 -040019494 .byte 72,173 // lods %ds:(%rsi),%rax
19495 .byte 65,15,40,192 // movaps %xmm8,%xmm0
19496 .byte 255,224 // jmpq *%rax
19497
19498HIDDEN _sk_parametric_g_sse41
19499.globl _sk_parametric_g_sse41
19500FUNCTION(_sk_parametric_g_sse41)
19501_sk_parametric_g_sse41:
19502 .byte 68,15,40,192 // movaps %xmm0,%xmm8
19503 .byte 72,173 // lods %ds:(%rsi),%rax
19504 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
19505 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
19506 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
19507 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
19508 .byte 68,15,89,201 // mulps %xmm1,%xmm9
19509 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
19510 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
19511 .byte 68,15,89,217 // mulps %xmm1,%xmm11
19512 .byte 15,40,193 // movaps %xmm1,%xmm0
19513 .byte 65,15,194,194,2 // cmpleps %xmm10,%xmm0
19514 .byte 243,15,16,72,24 // movss 0x18(%rax),%xmm1
19515 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
19516 .byte 68,15,88,201 // addps %xmm1,%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040019517 .byte 243,68,15,16,16 // movss (%rax),%xmm10
Mike Klein44375172017-04-17 19:32:05 -040019518 .byte 243,15,16,72,8 // movss 0x8(%rax),%xmm1
19519 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
19520 .byte 68,15,88,217 // addps %xmm1,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040019521 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
19522 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040019523 .byte 68,15,89,37,179,33,0,0 // mulps 0x21b3(%rip),%xmm12 # 3f30 <_sk_callback_sse41+0x603>
19524 .byte 68,15,84,29,187,33,0,0 // andps 0x21bb(%rip),%xmm11 # 3f40 <_sk_callback_sse41+0x613>
19525 .byte 68,15,86,29,195,33,0,0 // orps 0x21c3(%rip),%xmm11 # 3f50 <_sk_callback_sse41+0x623>
19526 .byte 68,15,88,37,203,33,0,0 // addps 0x21cb(%rip),%xmm12 # 3f60 <_sk_callback_sse41+0x633>
19527 .byte 15,40,13,212,33,0,0 // movaps 0x21d4(%rip),%xmm1 # 3f70 <_sk_callback_sse41+0x643>
Mike Klein44375172017-04-17 19:32:05 -040019528 .byte 65,15,89,203 // mulps %xmm11,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -040019529 .byte 68,15,92,225 // subps %xmm1,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040019530 .byte 68,15,88,29,212,33,0,0 // addps 0x21d4(%rip),%xmm11 # 3f80 <_sk_callback_sse41+0x653>
19531 .byte 15,40,13,221,33,0,0 // movaps 0x21dd(%rip),%xmm1 # 3f90 <_sk_callback_sse41+0x663>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019532 .byte 65,15,94,203 // divps %xmm11,%xmm1
19533 .byte 68,15,92,225 // subps %xmm1,%xmm12
19534 .byte 69,15,89,226 // mulps %xmm10,%xmm12
19535 .byte 102,69,15,58,8,212,1 // roundps $0x1,%xmm12,%xmm10
19536 .byte 69,15,40,220 // movaps %xmm12,%xmm11
19537 .byte 69,15,92,218 // subps %xmm10,%xmm11
Mike Kleinb3665f02017-05-01 14:56:04 -040019538 .byte 68,15,88,37,202,33,0,0 // addps 0x21ca(%rip),%xmm12 # 3fa0 <_sk_callback_sse41+0x673>
19539 .byte 15,40,13,211,33,0,0 // movaps 0x21d3(%rip),%xmm1 # 3fb0 <_sk_callback_sse41+0x683>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019540 .byte 65,15,89,203 // mulps %xmm11,%xmm1
19541 .byte 68,15,92,225 // subps %xmm1,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040019542 .byte 68,15,40,21,211,33,0,0 // movaps 0x21d3(%rip),%xmm10 # 3fc0 <_sk_callback_sse41+0x693>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019543 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040019544 .byte 15,40,13,216,33,0,0 // movaps 0x21d8(%rip),%xmm1 # 3fd0 <_sk_callback_sse41+0x6a3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019545 .byte 65,15,94,202 // divps %xmm10,%xmm1
19546 .byte 65,15,88,204 // addps %xmm12,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040019547 .byte 15,89,13,217,33,0,0 // mulps 0x21d9(%rip),%xmm1 # 3fe0 <_sk_callback_sse41+0x6b3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019548 .byte 102,68,15,91,209 // cvtps2dq %xmm1,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040019549 .byte 243,15,16,72,20 // movss 0x14(%rax),%xmm1
19550 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
19551 .byte 65,15,88,202 // addps %xmm10,%xmm1
19552 .byte 102,65,15,56,20,201 // blendvps %xmm0,%xmm9,%xmm1
19553 .byte 15,87,192 // xorps %xmm0,%xmm0
19554 .byte 15,95,200 // maxps %xmm0,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040019555 .byte 15,93,13,196,33,0,0 // minps 0x21c4(%rip),%xmm1 # 3ff0 <_sk_callback_sse41+0x6c3>
Mike Klein44375172017-04-17 19:32:05 -040019556 .byte 72,173 // lods %ds:(%rsi),%rax
19557 .byte 65,15,40,192 // movaps %xmm8,%xmm0
19558 .byte 255,224 // jmpq *%rax
19559
19560HIDDEN _sk_parametric_b_sse41
19561.globl _sk_parametric_b_sse41
19562FUNCTION(_sk_parametric_b_sse41)
19563_sk_parametric_b_sse41:
19564 .byte 68,15,40,192 // movaps %xmm0,%xmm8
19565 .byte 72,173 // lods %ds:(%rsi),%rax
19566 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
19567 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
19568 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
19569 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
19570 .byte 68,15,89,202 // mulps %xmm2,%xmm9
19571 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
19572 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
19573 .byte 68,15,89,218 // mulps %xmm2,%xmm11
19574 .byte 15,40,194 // movaps %xmm2,%xmm0
19575 .byte 65,15,194,194,2 // cmpleps %xmm10,%xmm0
19576 .byte 243,15,16,80,24 // movss 0x18(%rax),%xmm2
19577 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
19578 .byte 68,15,88,202 // addps %xmm2,%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040019579 .byte 243,68,15,16,16 // movss (%rax),%xmm10
Mike Klein44375172017-04-17 19:32:05 -040019580 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
19581 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
19582 .byte 68,15,88,218 // addps %xmm2,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040019583 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
19584 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040019585 .byte 68,15,89,37,101,33,0,0 // mulps 0x2165(%rip),%xmm12 # 4000 <_sk_callback_sse41+0x6d3>
19586 .byte 68,15,84,29,109,33,0,0 // andps 0x216d(%rip),%xmm11 # 4010 <_sk_callback_sse41+0x6e3>
19587 .byte 68,15,86,29,117,33,0,0 // orps 0x2175(%rip),%xmm11 # 4020 <_sk_callback_sse41+0x6f3>
19588 .byte 68,15,88,37,125,33,0,0 // addps 0x217d(%rip),%xmm12 # 4030 <_sk_callback_sse41+0x703>
19589 .byte 15,40,21,134,33,0,0 // movaps 0x2186(%rip),%xmm2 # 4040 <_sk_callback_sse41+0x713>
Mike Klein44375172017-04-17 19:32:05 -040019590 .byte 65,15,89,211 // mulps %xmm11,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -040019591 .byte 68,15,92,226 // subps %xmm2,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040019592 .byte 68,15,88,29,134,33,0,0 // addps 0x2186(%rip),%xmm11 # 4050 <_sk_callback_sse41+0x723>
19593 .byte 15,40,21,143,33,0,0 // movaps 0x218f(%rip),%xmm2 # 4060 <_sk_callback_sse41+0x733>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019594 .byte 65,15,94,211 // divps %xmm11,%xmm2
19595 .byte 68,15,92,226 // subps %xmm2,%xmm12
19596 .byte 69,15,89,226 // mulps %xmm10,%xmm12
19597 .byte 102,69,15,58,8,212,1 // roundps $0x1,%xmm12,%xmm10
19598 .byte 69,15,40,220 // movaps %xmm12,%xmm11
19599 .byte 69,15,92,218 // subps %xmm10,%xmm11
Mike Kleinb3665f02017-05-01 14:56:04 -040019600 .byte 68,15,88,37,124,33,0,0 // addps 0x217c(%rip),%xmm12 # 4070 <_sk_callback_sse41+0x743>
19601 .byte 15,40,21,133,33,0,0 // movaps 0x2185(%rip),%xmm2 # 4080 <_sk_callback_sse41+0x753>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019602 .byte 65,15,89,211 // mulps %xmm11,%xmm2
19603 .byte 68,15,92,226 // subps %xmm2,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040019604 .byte 68,15,40,21,133,33,0,0 // movaps 0x2185(%rip),%xmm10 # 4090 <_sk_callback_sse41+0x763>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019605 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040019606 .byte 15,40,21,138,33,0,0 // movaps 0x218a(%rip),%xmm2 # 40a0 <_sk_callback_sse41+0x773>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019607 .byte 65,15,94,210 // divps %xmm10,%xmm2
19608 .byte 65,15,88,212 // addps %xmm12,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040019609 .byte 15,89,21,139,33,0,0 // mulps 0x218b(%rip),%xmm2 # 40b0 <_sk_callback_sse41+0x783>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019610 .byte 102,68,15,91,210 // cvtps2dq %xmm2,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040019611 .byte 243,15,16,80,20 // movss 0x14(%rax),%xmm2
19612 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
19613 .byte 65,15,88,210 // addps %xmm10,%xmm2
19614 .byte 102,65,15,56,20,209 // blendvps %xmm0,%xmm9,%xmm2
19615 .byte 15,87,192 // xorps %xmm0,%xmm0
19616 .byte 15,95,208 // maxps %xmm0,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040019617 .byte 15,93,21,118,33,0,0 // minps 0x2176(%rip),%xmm2 # 40c0 <_sk_callback_sse41+0x793>
Mike Klein44375172017-04-17 19:32:05 -040019618 .byte 72,173 // lods %ds:(%rsi),%rax
19619 .byte 65,15,40,192 // movaps %xmm8,%xmm0
19620 .byte 255,224 // jmpq *%rax
19621
19622HIDDEN _sk_parametric_a_sse41
19623.globl _sk_parametric_a_sse41
19624FUNCTION(_sk_parametric_a_sse41)
19625_sk_parametric_a_sse41:
19626 .byte 68,15,40,192 // movaps %xmm0,%xmm8
19627 .byte 72,173 // lods %ds:(%rsi),%rax
19628 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
19629 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
19630 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
19631 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
19632 .byte 68,15,89,203 // mulps %xmm3,%xmm9
19633 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
19634 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
19635 .byte 68,15,89,219 // mulps %xmm3,%xmm11
19636 .byte 15,40,195 // movaps %xmm3,%xmm0
19637 .byte 65,15,194,194,2 // cmpleps %xmm10,%xmm0
19638 .byte 243,15,16,88,24 // movss 0x18(%rax),%xmm3
19639 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
19640 .byte 68,15,88,203 // addps %xmm3,%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040019641 .byte 243,68,15,16,16 // movss (%rax),%xmm10
Mike Klein44375172017-04-17 19:32:05 -040019642 .byte 243,15,16,88,8 // movss 0x8(%rax),%xmm3
19643 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
19644 .byte 68,15,88,219 // addps %xmm3,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040019645 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
19646 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040019647 .byte 68,15,89,37,23,33,0,0 // mulps 0x2117(%rip),%xmm12 # 40d0 <_sk_callback_sse41+0x7a3>
19648 .byte 68,15,84,29,31,33,0,0 // andps 0x211f(%rip),%xmm11 # 40e0 <_sk_callback_sse41+0x7b3>
19649 .byte 68,15,86,29,39,33,0,0 // orps 0x2127(%rip),%xmm11 # 40f0 <_sk_callback_sse41+0x7c3>
19650 .byte 68,15,88,37,47,33,0,0 // addps 0x212f(%rip),%xmm12 # 4100 <_sk_callback_sse41+0x7d3>
19651 .byte 15,40,29,56,33,0,0 // movaps 0x2138(%rip),%xmm3 # 4110 <_sk_callback_sse41+0x7e3>
Mike Klein44375172017-04-17 19:32:05 -040019652 .byte 65,15,89,219 // mulps %xmm11,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040019653 .byte 68,15,92,227 // subps %xmm3,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040019654 .byte 68,15,88,29,56,33,0,0 // addps 0x2138(%rip),%xmm11 # 4120 <_sk_callback_sse41+0x7f3>
19655 .byte 15,40,29,65,33,0,0 // movaps 0x2141(%rip),%xmm3 # 4130 <_sk_callback_sse41+0x803>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019656 .byte 65,15,94,219 // divps %xmm11,%xmm3
19657 .byte 68,15,92,227 // subps %xmm3,%xmm12
19658 .byte 69,15,89,226 // mulps %xmm10,%xmm12
19659 .byte 102,69,15,58,8,212,1 // roundps $0x1,%xmm12,%xmm10
19660 .byte 69,15,40,220 // movaps %xmm12,%xmm11
19661 .byte 69,15,92,218 // subps %xmm10,%xmm11
Mike Kleinb3665f02017-05-01 14:56:04 -040019662 .byte 68,15,88,37,46,33,0,0 // addps 0x212e(%rip),%xmm12 # 4140 <_sk_callback_sse41+0x813>
19663 .byte 15,40,29,55,33,0,0 // movaps 0x2137(%rip),%xmm3 # 4150 <_sk_callback_sse41+0x823>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019664 .byte 65,15,89,219 // mulps %xmm11,%xmm3
19665 .byte 68,15,92,227 // subps %xmm3,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040019666 .byte 68,15,40,21,55,33,0,0 // movaps 0x2137(%rip),%xmm10 # 4160 <_sk_callback_sse41+0x833>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019667 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040019668 .byte 15,40,29,60,33,0,0 // movaps 0x213c(%rip),%xmm3 # 4170 <_sk_callback_sse41+0x843>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019669 .byte 65,15,94,218 // divps %xmm10,%xmm3
19670 .byte 65,15,88,220 // addps %xmm12,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040019671 .byte 15,89,29,61,33,0,0 // mulps 0x213d(%rip),%xmm3 # 4180 <_sk_callback_sse41+0x853>
Mike Kleinb4bbc642017-04-27 08:59:55 -040019672 .byte 102,68,15,91,211 // cvtps2dq %xmm3,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040019673 .byte 243,15,16,88,20 // movss 0x14(%rax),%xmm3
19674 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
19675 .byte 65,15,88,218 // addps %xmm10,%xmm3
19676 .byte 102,65,15,56,20,217 // blendvps %xmm0,%xmm9,%xmm3
19677 .byte 15,87,192 // xorps %xmm0,%xmm0
19678 .byte 15,95,216 // maxps %xmm0,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040019679 .byte 15,93,29,40,33,0,0 // minps 0x2128(%rip),%xmm3 # 4190 <_sk_callback_sse41+0x863>
Mike Klein44375172017-04-17 19:32:05 -040019680 .byte 72,173 // lods %ds:(%rsi),%rax
19681 .byte 65,15,40,192 // movaps %xmm8,%xmm0
19682 .byte 255,224 // jmpq *%rax
19683
Mike Klein4e3e9f82017-04-20 11:04:29 -040019684HIDDEN _sk_lab_to_xyz_sse41
19685.globl _sk_lab_to_xyz_sse41
19686FUNCTION(_sk_lab_to_xyz_sse41)
19687_sk_lab_to_xyz_sse41:
Mike Kleinfe560a82017-05-01 12:56:35 -040019688 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040019689 .byte 68,15,89,5,36,33,0,0 // mulps 0x2124(%rip),%xmm8 # 41a0 <_sk_callback_sse41+0x873>
19690 .byte 68,15,40,13,44,33,0,0 // movaps 0x212c(%rip),%xmm9 # 41b0 <_sk_callback_sse41+0x883>
Mike Kleinfe560a82017-05-01 12:56:35 -040019691 .byte 65,15,89,201 // mulps %xmm9,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040019692 .byte 15,40,5,49,33,0,0 // movaps 0x2131(%rip),%xmm0 # 41c0 <_sk_callback_sse41+0x893>
Mike Kleinfe560a82017-05-01 12:56:35 -040019693 .byte 15,88,200 // addps %xmm0,%xmm1
19694 .byte 65,15,89,209 // mulps %xmm9,%xmm2
19695 .byte 15,88,208 // addps %xmm0,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040019696 .byte 68,15,88,5,47,33,0,0 // addps 0x212f(%rip),%xmm8 # 41d0 <_sk_callback_sse41+0x8a3>
19697 .byte 68,15,89,5,55,33,0,0 // mulps 0x2137(%rip),%xmm8 # 41e0 <_sk_callback_sse41+0x8b3>
19698 .byte 15,89,13,64,33,0,0 // mulps 0x2140(%rip),%xmm1 # 41f0 <_sk_callback_sse41+0x8c3>
Mike Kleinfe560a82017-05-01 12:56:35 -040019699 .byte 65,15,88,200 // addps %xmm8,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040019700 .byte 15,89,21,69,33,0,0 // mulps 0x2145(%rip),%xmm2 # 4200 <_sk_callback_sse41+0x8d3>
Mike Kleinfe560a82017-05-01 12:56:35 -040019701 .byte 69,15,40,208 // movaps %xmm8,%xmm10
19702 .byte 68,15,92,210 // subps %xmm2,%xmm10
19703 .byte 68,15,40,217 // movaps %xmm1,%xmm11
Mike Klein4e3e9f82017-04-20 11:04:29 -040019704 .byte 69,15,89,219 // mulps %xmm11,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040019705 .byte 68,15,89,217 // mulps %xmm1,%xmm11
Mike Kleinb3665f02017-05-01 14:56:04 -040019706 .byte 68,15,40,13,57,33,0,0 // movaps 0x2139(%rip),%xmm9 # 4210 <_sk_callback_sse41+0x8e3>
Mike Kleinfe560a82017-05-01 12:56:35 -040019707 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Klein4e3e9f82017-04-20 11:04:29 -040019708 .byte 65,15,194,195,1 // cmpltps %xmm11,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040019709 .byte 15,40,21,57,33,0,0 // movaps 0x2139(%rip),%xmm2 # 4220 <_sk_callback_sse41+0x8f3>
Mike Kleinfe560a82017-05-01 12:56:35 -040019710 .byte 15,88,202 // addps %xmm2,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040019711 .byte 68,15,40,37,62,33,0,0 // movaps 0x213e(%rip),%xmm12 # 4230 <_sk_callback_sse41+0x903>
Mike Klein4e3e9f82017-04-20 11:04:29 -040019712 .byte 65,15,89,204 // mulps %xmm12,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040019713 .byte 102,65,15,56,20,203 // blendvps %xmm0,%xmm11,%xmm1
19714 .byte 69,15,40,216 // movaps %xmm8,%xmm11
19715 .byte 69,15,89,219 // mulps %xmm11,%xmm11
19716 .byte 69,15,89,216 // mulps %xmm8,%xmm11
19717 .byte 65,15,40,193 // movaps %xmm9,%xmm0
19718 .byte 65,15,194,195,1 // cmpltps %xmm11,%xmm0
19719 .byte 68,15,88,194 // addps %xmm2,%xmm8
19720 .byte 69,15,89,196 // mulps %xmm12,%xmm8
19721 .byte 102,69,15,56,20,195 // blendvps %xmm0,%xmm11,%xmm8
19722 .byte 69,15,40,218 // movaps %xmm10,%xmm11
19723 .byte 69,15,89,219 // mulps %xmm11,%xmm11
19724 .byte 69,15,89,218 // mulps %xmm10,%xmm11
19725 .byte 69,15,194,203,1 // cmpltps %xmm11,%xmm9
19726 .byte 65,15,88,210 // addps %xmm10,%xmm2
19727 .byte 65,15,89,212 // mulps %xmm12,%xmm2
19728 .byte 65,15,40,193 // movaps %xmm9,%xmm0
19729 .byte 102,65,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040019730 .byte 15,89,13,247,32,0,0 // mulps 0x20f7(%rip),%xmm1 # 4240 <_sk_callback_sse41+0x913>
19731 .byte 15,89,21,0,33,0,0 // mulps 0x2100(%rip),%xmm2 # 4250 <_sk_callback_sse41+0x923>
Mike Klein4e3e9f82017-04-20 11:04:29 -040019732 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040019733 .byte 15,40,193 // movaps %xmm1,%xmm0
19734 .byte 65,15,40,200 // movaps %xmm8,%xmm1
Mike Klein4e3e9f82017-04-20 11:04:29 -040019735 .byte 255,224 // jmpq *%rax
19736
Mike Klein7c4af542017-03-29 18:21:14 -040019737HIDDEN _sk_load_a8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040019738.globl _sk_load_a8_sse41
Mike Klein86714282017-04-13 17:37:38 -040019739FUNCTION(_sk_load_a8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019740_sk_load_a8_sse41:
19741 .byte 72,173 // lods %ds:(%rsi),%rax
19742 .byte 72,139,0 // mov (%rax),%rax
19743 .byte 102,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040019744 .byte 15,91,216 // cvtdq2ps %xmm0,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040019745 .byte 15,89,29,240,32,0,0 // mulps 0x20f0(%rip),%xmm3 # 4260 <_sk_callback_sse41+0x933>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019746 .byte 72,173 // lods %ds:(%rsi),%rax
19747 .byte 15,87,192 // xorps %xmm0,%xmm0
19748 .byte 15,87,201 // xorps %xmm1,%xmm1
19749 .byte 15,87,210 // xorps %xmm2,%xmm2
19750 .byte 255,224 // jmpq *%rax
19751
Mike Klein21bd3e42017-04-06 16:32:29 -040019752HIDDEN _sk_gather_a8_sse41
19753.globl _sk_gather_a8_sse41
Mike Klein86714282017-04-13 17:37:38 -040019754FUNCTION(_sk_gather_a8_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040019755_sk_gather_a8_sse41:
19756 .byte 72,173 // lods %ds:(%rsi),%rax
19757 .byte 76,139,8 // mov (%rax),%r9
19758 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
19759 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
19760 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
19761 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
19762 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
19763 .byte 102,15,254,194 // paddd %xmm2,%xmm0
19764 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
19765 .byte 65,137,192 // mov %eax,%r8d
19766 .byte 72,193,232,32 // shr $0x20,%rax
19767 .byte 102,72,15,126,193 // movq %xmm0,%rcx
19768 .byte 65,137,202 // mov %ecx,%r10d
19769 .byte 72,193,233,32 // shr $0x20,%rcx
19770 .byte 102,67,15,58,32,4,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm0
19771 .byte 102,65,15,58,32,4,9,1 // pinsrb $0x1,(%r9,%rcx,1),%xmm0
19772 .byte 67,15,182,12,1 // movzbl (%r9,%r8,1),%ecx
19773 .byte 102,15,58,32,193,2 // pinsrb $0x2,%ecx,%xmm0
19774 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
19775 .byte 102,15,58,32,192,3 // pinsrb $0x3,%eax,%xmm0
19776 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040019777 .byte 15,91,216 // cvtdq2ps %xmm0,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040019778 .byte 15,89,29,132,32,0,0 // mulps 0x2084(%rip),%xmm3 # 4270 <_sk_callback_sse41+0x943>
Mike Klein21bd3e42017-04-06 16:32:29 -040019779 .byte 72,173 // lods %ds:(%rsi),%rax
19780 .byte 15,87,192 // xorps %xmm0,%xmm0
19781 .byte 102,15,239,201 // pxor %xmm1,%xmm1
19782 .byte 102,15,239,210 // pxor %xmm2,%xmm2
19783 .byte 255,224 // jmpq *%rax
19784
Mike Klein7c4af542017-03-29 18:21:14 -040019785HIDDEN _sk_store_a8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040019786.globl _sk_store_a8_sse41
Mike Klein86714282017-04-13 17:37:38 -040019787FUNCTION(_sk_store_a8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019788_sk_store_a8_sse41:
19789 .byte 72,173 // lods %ds:(%rsi),%rax
19790 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040019791 .byte 68,15,40,5,120,32,0,0 // movaps 0x2078(%rip),%xmm8 # 4280 <_sk_callback_sse41+0x953>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019792 .byte 68,15,89,195 // mulps %xmm3,%xmm8
19793 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
19794 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
19795 .byte 102,69,15,103,192 // packuswb %xmm8,%xmm8
19796 .byte 102,68,15,126,4,56 // movd %xmm8,(%rax,%rdi,1)
19797 .byte 72,173 // lods %ds:(%rsi),%rax
19798 .byte 255,224 // jmpq *%rax
19799
Mike Kleinf809fef2017-03-31 13:52:45 -040019800HIDDEN _sk_load_g8_sse41
19801.globl _sk_load_g8_sse41
Mike Klein86714282017-04-13 17:37:38 -040019802FUNCTION(_sk_load_g8_sse41)
Mike Kleinf809fef2017-03-31 13:52:45 -040019803_sk_load_g8_sse41:
19804 .byte 72,173 // lods %ds:(%rsi),%rax
19805 .byte 72,139,0 // mov (%rax),%rax
19806 .byte 102,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040019807 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040019808 .byte 15,89,5,85,32,0,0 // mulps 0x2055(%rip),%xmm0 # 4290 <_sk_callback_sse41+0x963>
Mike Kleinf809fef2017-03-31 13:52:45 -040019809 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040019810 .byte 15,40,29,92,32,0,0 // movaps 0x205c(%rip),%xmm3 # 42a0 <_sk_callback_sse41+0x973>
Mike Kleinf809fef2017-03-31 13:52:45 -040019811 .byte 15,40,200 // movaps %xmm0,%xmm1
19812 .byte 15,40,208 // movaps %xmm0,%xmm2
19813 .byte 255,224 // jmpq *%rax
19814
Mike Klein21bd3e42017-04-06 16:32:29 -040019815HIDDEN _sk_gather_g8_sse41
19816.globl _sk_gather_g8_sse41
Mike Klein86714282017-04-13 17:37:38 -040019817FUNCTION(_sk_gather_g8_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040019818_sk_gather_g8_sse41:
19819 .byte 72,173 // lods %ds:(%rsi),%rax
19820 .byte 76,139,8 // mov (%rax),%r9
19821 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
19822 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
19823 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
19824 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
19825 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
19826 .byte 102,15,254,194 // paddd %xmm2,%xmm0
19827 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
19828 .byte 65,137,192 // mov %eax,%r8d
19829 .byte 72,193,232,32 // shr $0x20,%rax
19830 .byte 102,72,15,126,193 // movq %xmm0,%rcx
19831 .byte 65,137,202 // mov %ecx,%r10d
19832 .byte 72,193,233,32 // shr $0x20,%rcx
19833 .byte 102,67,15,58,32,4,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm0
19834 .byte 102,65,15,58,32,4,9,1 // pinsrb $0x1,(%r9,%rcx,1),%xmm0
19835 .byte 67,15,182,12,1 // movzbl (%r9,%r8,1),%ecx
19836 .byte 102,15,58,32,193,2 // pinsrb $0x2,%ecx,%xmm0
19837 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
19838 .byte 102,15,58,32,192,3 // pinsrb $0x3,%eax,%xmm0
19839 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040019840 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040019841 .byte 15,89,5,245,31,0,0 // mulps 0x1ff5(%rip),%xmm0 # 42b0 <_sk_callback_sse41+0x983>
Mike Klein21bd3e42017-04-06 16:32:29 -040019842 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040019843 .byte 15,40,29,252,31,0,0 // movaps 0x1ffc(%rip),%xmm3 # 42c0 <_sk_callback_sse41+0x993>
Mike Klein21bd3e42017-04-06 16:32:29 -040019844 .byte 15,40,200 // movaps %xmm0,%xmm1
19845 .byte 15,40,208 // movaps %xmm0,%xmm2
19846 .byte 255,224 // jmpq *%rax
19847
Mike Klein7d3d8722017-04-06 17:53:18 -040019848HIDDEN _sk_gather_i8_sse41
19849.globl _sk_gather_i8_sse41
Mike Klein86714282017-04-13 17:37:38 -040019850FUNCTION(_sk_gather_i8_sse41)
Mike Klein7d3d8722017-04-06 17:53:18 -040019851_sk_gather_i8_sse41:
19852 .byte 72,173 // lods %ds:(%rsi),%rax
19853 .byte 73,137,192 // mov %rax,%r8
19854 .byte 77,133,192 // test %r8,%r8
Mike Kleinb3665f02017-05-01 14:56:04 -040019855 .byte 116,5 // je 22db <_sk_gather_i8_sse41+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -040019856 .byte 76,137,192 // mov %r8,%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040019857 .byte 235,2 // jmp 22dd <_sk_gather_i8_sse41+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -040019858 .byte 72,173 // lods %ds:(%rsi),%rax
19859 .byte 76,139,16 // mov (%rax),%r10
19860 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
19861 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
19862 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
19863 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
19864 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
19865 .byte 102,15,254,194 // paddd %xmm2,%xmm0
19866 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
19867 .byte 65,137,193 // mov %eax,%r9d
19868 .byte 72,193,232,32 // shr $0x20,%rax
19869 .byte 102,72,15,126,193 // movq %xmm0,%rcx
19870 .byte 65,137,203 // mov %ecx,%r11d
19871 .byte 72,193,233,32 // shr $0x20,%rcx
19872 .byte 102,67,15,58,32,4,26,0 // pinsrb $0x0,(%r10,%r11,1),%xmm0
19873 .byte 102,65,15,58,32,4,10,1 // pinsrb $0x1,(%r10,%rcx,1),%xmm0
19874 .byte 102,67,15,58,32,4,10,2 // pinsrb $0x2,(%r10,%r9,1),%xmm0
19875 .byte 102,65,15,58,32,4,2,3 // pinsrb $0x3,(%r10,%rax,1),%xmm0
19876 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
19877 .byte 102,73,15,58,22,193,1 // pextrq $0x1,%xmm0,%r9
19878 .byte 102,72,15,126,193 // movq %xmm0,%rcx
19879 .byte 73,139,64,8 // mov 0x8(%r8),%rax
19880 .byte 65,137,200 // mov %ecx,%r8d
19881 .byte 72,193,233,30 // shr $0x1e,%rcx
19882 .byte 69,137,202 // mov %r9d,%r10d
19883 .byte 73,193,233,30 // shr $0x1e,%r9
19884 .byte 102,66,15,110,28,128 // movd (%rax,%r8,4),%xmm3
19885 .byte 102,15,58,34,28,8,1 // pinsrd $0x1,(%rax,%rcx,1),%xmm3
19886 .byte 102,66,15,58,34,28,144,2 // pinsrd $0x2,(%rax,%r10,4),%xmm3
19887 .byte 102,66,15,58,34,28,8,3 // pinsrd $0x3,(%rax,%r9,1),%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040019888 .byte 102,15,111,5,83,31,0,0 // movdqa 0x1f53(%rip),%xmm0 # 42d0 <_sk_callback_sse41+0x9a3>
Mike Klein7d3d8722017-04-06 17:53:18 -040019889 .byte 102,15,219,195 // pand %xmm3,%xmm0
19890 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040019891 .byte 68,15,40,5,84,31,0,0 // movaps 0x1f54(%rip),%xmm8 # 42e0 <_sk_callback_sse41+0x9b3>
Mike Klein7d3d8722017-04-06 17:53:18 -040019892 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040019893 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040019894 .byte 102,15,56,0,13,83,31,0,0 // pshufb 0x1f53(%rip),%xmm1 # 42f0 <_sk_callback_sse41+0x9c3>
Mike Klein7d3d8722017-04-06 17:53:18 -040019895 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
19896 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040019897 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040019898 .byte 102,15,56,0,21,79,31,0,0 // pshufb 0x1f4f(%rip),%xmm2 # 4300 <_sk_callback_sse41+0x9d3>
Mike Klein7d3d8722017-04-06 17:53:18 -040019899 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
19900 .byte 65,15,89,208 // mulps %xmm8,%xmm2
19901 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
19902 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
19903 .byte 65,15,89,216 // mulps %xmm8,%xmm3
19904 .byte 72,173 // lods %ds:(%rsi),%rax
19905 .byte 255,224 // jmpq *%rax
19906
Mike Klein7c4af542017-03-29 18:21:14 -040019907HIDDEN _sk_load_565_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040019908.globl _sk_load_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040019909FUNCTION(_sk_load_565_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019910_sk_load_565_sse41:
19911 .byte 72,173 // lods %ds:(%rsi),%rax
19912 .byte 72,139,0 // mov (%rax),%rax
19913 .byte 102,15,56,51,20,120 // pmovzxwd (%rax,%rdi,2),%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040019914 .byte 102,15,111,5,53,31,0,0 // movdqa 0x1f35(%rip),%xmm0 # 4310 <_sk_callback_sse41+0x9e3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019915 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040019916 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040019917 .byte 15,89,5,55,31,0,0 // mulps 0x1f37(%rip),%xmm0 # 4320 <_sk_callback_sse41+0x9f3>
19918 .byte 102,15,111,13,63,31,0,0 // movdqa 0x1f3f(%rip),%xmm1 # 4330 <_sk_callback_sse41+0xa03>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019919 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040019920 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040019921 .byte 15,89,13,65,31,0,0 // mulps 0x1f41(%rip),%xmm1 # 4340 <_sk_callback_sse41+0xa13>
19922 .byte 102,15,219,21,73,31,0,0 // pand 0x1f49(%rip),%xmm2 # 4350 <_sk_callback_sse41+0xa23>
Mike Kleinfe560a82017-05-01 12:56:35 -040019923 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040019924 .byte 15,89,21,79,31,0,0 // mulps 0x1f4f(%rip),%xmm2 # 4360 <_sk_callback_sse41+0xa33>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019925 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040019926 .byte 15,40,29,86,31,0,0 // movaps 0x1f56(%rip),%xmm3 # 4370 <_sk_callback_sse41+0xa43>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019927 .byte 255,224 // jmpq *%rax
19928
Mike Klein21bd3e42017-04-06 16:32:29 -040019929HIDDEN _sk_gather_565_sse41
19930.globl _sk_gather_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040019931FUNCTION(_sk_gather_565_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040019932_sk_gather_565_sse41:
19933 .byte 72,173 // lods %ds:(%rsi),%rax
19934 .byte 76,139,8 // mov (%rax),%r9
19935 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
19936 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
19937 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
19938 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
19939 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
19940 .byte 102,15,254,194 // paddd %xmm2,%xmm0
19941 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
19942 .byte 65,137,192 // mov %eax,%r8d
19943 .byte 72,193,232,32 // shr $0x20,%rax
19944 .byte 102,72,15,126,193 // movq %xmm0,%rcx
19945 .byte 65,137,202 // mov %ecx,%r10d
19946 .byte 72,193,233,32 // shr $0x20,%rcx
19947 .byte 102,67,15,196,4,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm0
19948 .byte 102,65,15,196,4,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm0
19949 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
19950 .byte 102,15,196,193,2 // pinsrw $0x2,%ecx,%xmm0
19951 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
19952 .byte 102,15,196,192,3 // pinsrw $0x3,%eax,%xmm0
19953 .byte 102,15,56,51,208 // pmovzxwd %xmm0,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040019954 .byte 102,15,111,5,251,30,0,0 // movdqa 0x1efb(%rip),%xmm0 # 4380 <_sk_callback_sse41+0xa53>
Mike Klein21bd3e42017-04-06 16:32:29 -040019955 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040019956 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040019957 .byte 15,89,5,253,30,0,0 // mulps 0x1efd(%rip),%xmm0 # 4390 <_sk_callback_sse41+0xa63>
19958 .byte 102,15,111,13,5,31,0,0 // movdqa 0x1f05(%rip),%xmm1 # 43a0 <_sk_callback_sse41+0xa73>
Mike Klein21bd3e42017-04-06 16:32:29 -040019959 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040019960 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040019961 .byte 15,89,13,7,31,0,0 // mulps 0x1f07(%rip),%xmm1 # 43b0 <_sk_callback_sse41+0xa83>
19962 .byte 102,15,219,21,15,31,0,0 // pand 0x1f0f(%rip),%xmm2 # 43c0 <_sk_callback_sse41+0xa93>
Mike Kleinfe560a82017-05-01 12:56:35 -040019963 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040019964 .byte 15,89,21,21,31,0,0 // mulps 0x1f15(%rip),%xmm2 # 43d0 <_sk_callback_sse41+0xaa3>
Mike Klein21bd3e42017-04-06 16:32:29 -040019965 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040019966 .byte 15,40,29,28,31,0,0 // movaps 0x1f1c(%rip),%xmm3 # 43e0 <_sk_callback_sse41+0xab3>
Mike Klein21bd3e42017-04-06 16:32:29 -040019967 .byte 255,224 // jmpq *%rax
19968
Mike Klein7c4af542017-03-29 18:21:14 -040019969HIDDEN _sk_store_565_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040019970.globl _sk_store_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040019971FUNCTION(_sk_store_565_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019972_sk_store_565_sse41:
19973 .byte 72,173 // lods %ds:(%rsi),%rax
19974 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040019975 .byte 68,15,40,5,29,31,0,0 // movaps 0x1f1d(%rip),%xmm8 # 43f0 <_sk_callback_sse41+0xac3>
Mike Kleinfe560a82017-05-01 12:56:35 -040019976 .byte 68,15,40,200 // movaps %xmm0,%xmm9
19977 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040019978 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
19979 .byte 102,65,15,114,241,11 // pslld $0xb,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040019980 .byte 68,15,40,21,18,31,0,0 // movaps 0x1f12(%rip),%xmm10 # 4400 <_sk_callback_sse41+0xad3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019981 .byte 68,15,89,209 // mulps %xmm1,%xmm10
19982 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
19983 .byte 102,65,15,114,242,5 // pslld $0x5,%xmm10
19984 .byte 102,69,15,235,209 // por %xmm9,%xmm10
19985 .byte 68,15,89,194 // mulps %xmm2,%xmm8
19986 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
19987 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
19988 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
19989 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
19990 .byte 72,173 // lods %ds:(%rsi),%rax
19991 .byte 255,224 // jmpq *%rax
19992
Mike Kleinf809fef2017-03-31 13:52:45 -040019993HIDDEN _sk_load_4444_sse41
19994.globl _sk_load_4444_sse41
Mike Klein86714282017-04-13 17:37:38 -040019995FUNCTION(_sk_load_4444_sse41)
Mike Kleinf809fef2017-03-31 13:52:45 -040019996_sk_load_4444_sse41:
19997 .byte 72,173 // lods %ds:(%rsi),%rax
19998 .byte 72,139,0 // mov (%rax),%rax
Mike Klein308e6242017-04-27 13:56:33 -040019999 .byte 102,15,56,51,28,120 // pmovzxwd (%rax,%rdi,2),%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040020000 .byte 102,15,111,5,221,30,0,0 // movdqa 0x1edd(%rip),%xmm0 # 4410 <_sk_callback_sse41+0xae3>
Mike Klein308e6242017-04-27 13:56:33 -040020001 .byte 102,15,219,195 // pand %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040020002 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040020003 .byte 15,89,5,223,30,0,0 // mulps 0x1edf(%rip),%xmm0 # 4420 <_sk_callback_sse41+0xaf3>
20004 .byte 102,15,111,13,231,30,0,0 // movdqa 0x1ee7(%rip),%xmm1 # 4430 <_sk_callback_sse41+0xb03>
Mike Klein308e6242017-04-27 13:56:33 -040020005 .byte 102,15,219,203 // pand %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040020006 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040020007 .byte 15,89,13,233,30,0,0 // mulps 0x1ee9(%rip),%xmm1 # 4440 <_sk_callback_sse41+0xb13>
20008 .byte 102,15,111,21,241,30,0,0 // movdqa 0x1ef1(%rip),%xmm2 # 4450 <_sk_callback_sse41+0xb23>
Mike Klein308e6242017-04-27 13:56:33 -040020009 .byte 102,15,219,211 // pand %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040020010 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040020011 .byte 15,89,21,243,30,0,0 // mulps 0x1ef3(%rip),%xmm2 # 4460 <_sk_callback_sse41+0xb33>
20012 .byte 102,15,219,29,251,30,0,0 // pand 0x1efb(%rip),%xmm3 # 4470 <_sk_callback_sse41+0xb43>
Mike Kleinfe560a82017-05-01 12:56:35 -040020013 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040020014 .byte 15,89,29,1,31,0,0 // mulps 0x1f01(%rip),%xmm3 # 4480 <_sk_callback_sse41+0xb53>
Mike Kleinf809fef2017-03-31 13:52:45 -040020015 .byte 72,173 // lods %ds:(%rsi),%rax
20016 .byte 255,224 // jmpq *%rax
20017
Mike Klein21bd3e42017-04-06 16:32:29 -040020018HIDDEN _sk_gather_4444_sse41
20019.globl _sk_gather_4444_sse41
Mike Klein86714282017-04-13 17:37:38 -040020020FUNCTION(_sk_gather_4444_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040020021_sk_gather_4444_sse41:
20022 .byte 72,173 // lods %ds:(%rsi),%rax
20023 .byte 76,139,8 // mov (%rax),%r9
20024 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
20025 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
20026 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
20027 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
20028 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
20029 .byte 102,15,254,194 // paddd %xmm2,%xmm0
20030 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
20031 .byte 65,137,192 // mov %eax,%r8d
20032 .byte 72,193,232,32 // shr $0x20,%rax
20033 .byte 102,72,15,126,193 // movq %xmm0,%rcx
20034 .byte 65,137,202 // mov %ecx,%r10d
20035 .byte 72,193,233,32 // shr $0x20,%rcx
20036 .byte 102,67,15,196,4,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm0
20037 .byte 102,65,15,196,4,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm0
20038 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
20039 .byte 102,15,196,193,2 // pinsrw $0x2,%ecx,%xmm0
20040 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
20041 .byte 102,15,196,192,3 // pinsrw $0x3,%eax,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -040020042 .byte 102,15,56,51,216 // pmovzxwd %xmm0,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040020043 .byte 102,15,111,5,164,30,0,0 // movdqa 0x1ea4(%rip),%xmm0 # 4490 <_sk_callback_sse41+0xb63>
Mike Klein308e6242017-04-27 13:56:33 -040020044 .byte 102,15,219,195 // pand %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040020045 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040020046 .byte 15,89,5,166,30,0,0 // mulps 0x1ea6(%rip),%xmm0 # 44a0 <_sk_callback_sse41+0xb73>
20047 .byte 102,15,111,13,174,30,0,0 // movdqa 0x1eae(%rip),%xmm1 # 44b0 <_sk_callback_sse41+0xb83>
Mike Klein308e6242017-04-27 13:56:33 -040020048 .byte 102,15,219,203 // pand %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040020049 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040020050 .byte 15,89,13,176,30,0,0 // mulps 0x1eb0(%rip),%xmm1 # 44c0 <_sk_callback_sse41+0xb93>
20051 .byte 102,15,111,21,184,30,0,0 // movdqa 0x1eb8(%rip),%xmm2 # 44d0 <_sk_callback_sse41+0xba3>
Mike Klein308e6242017-04-27 13:56:33 -040020052 .byte 102,15,219,211 // pand %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040020053 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040020054 .byte 15,89,21,186,30,0,0 // mulps 0x1eba(%rip),%xmm2 # 44e0 <_sk_callback_sse41+0xbb3>
20055 .byte 102,15,219,29,194,30,0,0 // pand 0x1ec2(%rip),%xmm3 # 44f0 <_sk_callback_sse41+0xbc3>
Mike Kleinfe560a82017-05-01 12:56:35 -040020056 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040020057 .byte 15,89,29,200,30,0,0 // mulps 0x1ec8(%rip),%xmm3 # 4500 <_sk_callback_sse41+0xbd3>
Mike Klein21bd3e42017-04-06 16:32:29 -040020058 .byte 72,173 // lods %ds:(%rsi),%rax
20059 .byte 255,224 // jmpq *%rax
20060
Mike Kleinf809fef2017-03-31 13:52:45 -040020061HIDDEN _sk_store_4444_sse41
20062.globl _sk_store_4444_sse41
Mike Klein86714282017-04-13 17:37:38 -040020063FUNCTION(_sk_store_4444_sse41)
Mike Kleinf809fef2017-03-31 13:52:45 -040020064_sk_store_4444_sse41:
20065 .byte 72,173 // lods %ds:(%rsi),%rax
20066 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040020067 .byte 68,15,40,5,199,30,0,0 // movaps 0x1ec7(%rip),%xmm8 # 4510 <_sk_callback_sse41+0xbe3>
Mike Kleinfe560a82017-05-01 12:56:35 -040020068 .byte 68,15,40,200 // movaps %xmm0,%xmm9
20069 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleinf809fef2017-03-31 13:52:45 -040020070 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
20071 .byte 102,65,15,114,241,12 // pslld $0xc,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040020072 .byte 68,15,40,209 // movaps %xmm1,%xmm10
20073 .byte 69,15,89,208 // mulps %xmm8,%xmm10
Mike Kleinf809fef2017-03-31 13:52:45 -040020074 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
20075 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
20076 .byte 102,69,15,235,209 // por %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040020077 .byte 68,15,40,202 // movaps %xmm2,%xmm9
20078 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleinf809fef2017-03-31 13:52:45 -040020079 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
20080 .byte 102,65,15,114,241,4 // pslld $0x4,%xmm9
20081 .byte 68,15,89,195 // mulps %xmm3,%xmm8
20082 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
20083 .byte 102,69,15,86,193 // orpd %xmm9,%xmm8
20084 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
20085 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
20086 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
20087 .byte 72,173 // lods %ds:(%rsi),%rax
20088 .byte 255,224 // jmpq *%rax
20089
Mike Klein7c4af542017-03-29 18:21:14 -040020090HIDDEN _sk_load_8888_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020091.globl _sk_load_8888_sse41
Mike Klein86714282017-04-13 17:37:38 -040020092FUNCTION(_sk_load_8888_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020093_sk_load_8888_sse41:
20094 .byte 72,173 // lods %ds:(%rsi),%rax
20095 .byte 72,139,0 // mov (%rax),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040020096 .byte 15,16,28,184 // movups (%rax,%rdi,4),%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040020097 .byte 15,40,5,102,30,0,0 // movaps 0x1e66(%rip),%xmm0 # 4520 <_sk_callback_sse41+0xbf3>
Mike Klein0aa742f2017-04-27 13:36:57 -040020098 .byte 15,84,195 // andps %xmm3,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040020099 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040020100 .byte 68,15,40,5,104,30,0,0 // movaps 0x1e68(%rip),%xmm8 # 4530 <_sk_callback_sse41+0xc03>
Mike Kleind7e06ae2017-03-29 16:33:06 -040020101 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040020102 .byte 15,40,203 // movaps %xmm3,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040020103 .byte 102,15,56,0,13,104,30,0,0 // pshufb 0x1e68(%rip),%xmm1 # 4540 <_sk_callback_sse41+0xc13>
Mike Kleind7e06ae2017-03-29 16:33:06 -040020104 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
20105 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040020106 .byte 15,40,211 // movaps %xmm3,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040020107 .byte 102,15,56,0,21,101,30,0,0 // pshufb 0x1e65(%rip),%xmm2 # 4550 <_sk_callback_sse41+0xc23>
Mike Kleind7e06ae2017-03-29 16:33:06 -040020108 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
20109 .byte 65,15,89,208 // mulps %xmm8,%xmm2
20110 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
20111 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
20112 .byte 65,15,89,216 // mulps %xmm8,%xmm3
20113 .byte 72,173 // lods %ds:(%rsi),%rax
20114 .byte 255,224 // jmpq *%rax
20115
Mike Kleindec4ea82017-04-06 15:04:05 -040020116HIDDEN _sk_gather_8888_sse41
20117.globl _sk_gather_8888_sse41
Mike Klein86714282017-04-13 17:37:38 -040020118FUNCTION(_sk_gather_8888_sse41)
Mike Kleindec4ea82017-04-06 15:04:05 -040020119_sk_gather_8888_sse41:
20120 .byte 72,173 // lods %ds:(%rsi),%rax
20121 .byte 76,139,8 // mov (%rax),%r9
20122 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
20123 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
20124 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
20125 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
20126 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
20127 .byte 102,15,254,194 // paddd %xmm2,%xmm0
20128 .byte 102,72,15,126,192 // movq %xmm0,%rax
20129 .byte 65,137,192 // mov %eax,%r8d
20130 .byte 72,193,232,32 // shr $0x20,%rax
20131 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
20132 .byte 65,137,202 // mov %ecx,%r10d
20133 .byte 72,193,233,32 // shr $0x20,%rcx
20134 .byte 102,67,15,110,28,129 // movd (%r9,%r8,4),%xmm3
20135 .byte 102,65,15,58,34,28,129,1 // pinsrd $0x1,(%r9,%rax,4),%xmm3
20136 .byte 102,67,15,58,34,28,145,2 // pinsrd $0x2,(%r9,%r10,4),%xmm3
20137 .byte 102,65,15,58,34,28,137,3 // pinsrd $0x3,(%r9,%rcx,4),%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040020138 .byte 102,15,111,5,254,29,0,0 // movdqa 0x1dfe(%rip),%xmm0 # 4560 <_sk_callback_sse41+0xc33>
Mike Kleindec4ea82017-04-06 15:04:05 -040020139 .byte 102,15,219,195 // pand %xmm3,%xmm0
20140 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040020141 .byte 68,15,40,5,255,29,0,0 // movaps 0x1dff(%rip),%xmm8 # 4570 <_sk_callback_sse41+0xc43>
Mike Kleindec4ea82017-04-06 15:04:05 -040020142 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040020143 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040020144 .byte 102,15,56,0,13,254,29,0,0 // pshufb 0x1dfe(%rip),%xmm1 # 4580 <_sk_callback_sse41+0xc53>
Mike Kleindec4ea82017-04-06 15:04:05 -040020145 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
20146 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040020147 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040020148 .byte 102,15,56,0,21,250,29,0,0 // pshufb 0x1dfa(%rip),%xmm2 # 4590 <_sk_callback_sse41+0xc63>
Mike Kleindec4ea82017-04-06 15:04:05 -040020149 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
20150 .byte 65,15,89,208 // mulps %xmm8,%xmm2
20151 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
20152 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
20153 .byte 65,15,89,216 // mulps %xmm8,%xmm3
20154 .byte 72,173 // lods %ds:(%rsi),%rax
20155 .byte 255,224 // jmpq *%rax
20156
Mike Klein7c4af542017-03-29 18:21:14 -040020157HIDDEN _sk_store_8888_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020158.globl _sk_store_8888_sse41
Mike Klein86714282017-04-13 17:37:38 -040020159FUNCTION(_sk_store_8888_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020160_sk_store_8888_sse41:
20161 .byte 72,173 // lods %ds:(%rsi),%rax
20162 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040020163 .byte 68,15,40,5,230,29,0,0 // movaps 0x1de6(%rip),%xmm8 # 45a0 <_sk_callback_sse41+0xc73>
Mike Kleinfe560a82017-05-01 12:56:35 -040020164 .byte 68,15,40,200 // movaps %xmm0,%xmm9
20165 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040020166 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040020167 .byte 68,15,40,209 // movaps %xmm1,%xmm10
20168 .byte 69,15,89,208 // mulps %xmm8,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040020169 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
20170 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
20171 .byte 102,69,15,235,209 // por %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040020172 .byte 68,15,40,202 // movaps %xmm2,%xmm9
20173 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040020174 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
20175 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
20176 .byte 68,15,89,195 // mulps %xmm3,%xmm8
20177 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
20178 .byte 102,65,15,114,240,24 // pslld $0x18,%xmm8
20179 .byte 102,69,15,235,193 // por %xmm9,%xmm8
20180 .byte 102,69,15,235,194 // por %xmm10,%xmm8
20181 .byte 243,68,15,127,4,184 // movdqu %xmm8,(%rax,%rdi,4)
20182 .byte 72,173 // lods %ds:(%rsi),%rax
20183 .byte 255,224 // jmpq *%rax
20184
Mike Klein7c4af542017-03-29 18:21:14 -040020185HIDDEN _sk_load_f16_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020186.globl _sk_load_f16_sse41
Mike Klein86714282017-04-13 17:37:38 -040020187FUNCTION(_sk_load_f16_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020188_sk_load_f16_sse41:
20189 .byte 72,173 // lods %ds:(%rsi),%rax
20190 .byte 72,139,0 // mov (%rax),%rax
20191 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
20192 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040020193 .byte 102,68,15,111,200 // movdqa %xmm0,%xmm9
20194 .byte 102,68,15,97,201 // punpcklwd %xmm1,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040020195 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040020196 .byte 102,69,15,111,217 // movdqa %xmm9,%xmm11
20197 .byte 102,68,15,97,216 // punpcklwd %xmm0,%xmm11
Mike Kleind0ce1482017-04-19 17:19:30 -040020198 .byte 102,68,15,105,200 // punpckhwd %xmm0,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040020199 .byte 102,65,15,56,51,203 // pmovzxwd %xmm11,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040020200 .byte 102,68,15,111,5,95,29,0,0 // movdqa 0x1d5f(%rip),%xmm8 # 45b0 <_sk_callback_sse41+0xc83>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020201 .byte 102,15,111,209 // movdqa %xmm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040020202 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040020203 .byte 102,15,239,202 // pxor %xmm2,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040020204 .byte 102,15,111,29,90,29,0,0 // movdqa 0x1d5a(%rip),%xmm3 # 45c0 <_sk_callback_sse41+0xc93>
Mike Kleind0ce1482017-04-19 17:19:30 -040020205 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040020206 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
20207 .byte 102,15,56,63,195 // pmaxud %xmm3,%xmm0
20208 .byte 102,15,118,193 // pcmpeqd %xmm1,%xmm0
20209 .byte 102,15,114,241,13 // pslld $0xd,%xmm1
20210 .byte 102,15,235,202 // por %xmm2,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040020211 .byte 102,68,15,111,21,70,29,0,0 // movdqa 0x1d46(%rip),%xmm10 # 45d0 <_sk_callback_sse41+0xca3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020212 .byte 102,65,15,254,202 // paddd %xmm10,%xmm1
20213 .byte 102,15,219,193 // pand %xmm1,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040020214 .byte 102,65,15,115,219,8 // psrldq $0x8,%xmm11
20215 .byte 102,69,15,56,51,219 // pmovzxwd %xmm11,%xmm11
20216 .byte 102,65,15,111,211 // movdqa %xmm11,%xmm2
20217 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
20218 .byte 102,68,15,239,218 // pxor %xmm2,%xmm11
20219 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040020220 .byte 102,65,15,111,203 // movdqa %xmm11,%xmm1
20221 .byte 102,15,56,63,203 // pmaxud %xmm3,%xmm1
20222 .byte 102,65,15,118,203 // pcmpeqd %xmm11,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040020223 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040020224 .byte 102,68,15,235,218 // por %xmm2,%xmm11
20225 .byte 102,69,15,254,218 // paddd %xmm10,%xmm11
20226 .byte 102,65,15,219,203 // pand %xmm11,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040020227 .byte 102,69,15,56,51,217 // pmovzxwd %xmm9,%xmm11
20228 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
20229 .byte 102,69,15,219,224 // pand %xmm8,%xmm12
20230 .byte 102,69,15,239,220 // pxor %xmm12,%xmm11
20231 .byte 102,65,15,114,244,16 // pslld $0x10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040020232 .byte 102,65,15,111,211 // movdqa %xmm11,%xmm2
20233 .byte 102,15,56,63,211 // pmaxud %xmm3,%xmm2
20234 .byte 102,65,15,118,211 // pcmpeqd %xmm11,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040020235 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040020236 .byte 102,69,15,235,220 // por %xmm12,%xmm11
20237 .byte 102,69,15,254,218 // paddd %xmm10,%xmm11
20238 .byte 102,65,15,219,211 // pand %xmm11,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040020239 .byte 102,65,15,115,217,8 // psrldq $0x8,%xmm9
20240 .byte 102,69,15,56,51,201 // pmovzxwd %xmm9,%xmm9
20241 .byte 102,69,15,219,193 // pand %xmm9,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040020242 .byte 102,69,15,239,200 // pxor %xmm8,%xmm9
20243 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040020244 .byte 102,65,15,56,63,217 // pmaxud %xmm9,%xmm3
20245 .byte 102,65,15,118,217 // pcmpeqd %xmm9,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040020246 .byte 102,65,15,114,241,13 // pslld $0xd,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040020247 .byte 102,69,15,235,200 // por %xmm8,%xmm9
20248 .byte 102,69,15,254,202 // paddd %xmm10,%xmm9
20249 .byte 102,65,15,219,217 // pand %xmm9,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040020250 .byte 72,173 // lods %ds:(%rsi),%rax
20251 .byte 255,224 // jmpq *%rax
20252
Mike Klein5f055f02017-04-06 20:02:11 -040020253HIDDEN _sk_gather_f16_sse41
20254.globl _sk_gather_f16_sse41
Mike Klein86714282017-04-13 17:37:38 -040020255FUNCTION(_sk_gather_f16_sse41)
Mike Klein5f055f02017-04-06 20:02:11 -040020256_sk_gather_f16_sse41:
20257 .byte 72,173 // lods %ds:(%rsi),%rax
20258 .byte 76,139,8 // mov (%rax),%r9
20259 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
20260 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
20261 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
20262 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
20263 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
20264 .byte 102,15,254,194 // paddd %xmm2,%xmm0
20265 .byte 102,72,15,126,192 // movq %xmm0,%rax
20266 .byte 65,137,192 // mov %eax,%r8d
20267 .byte 72,193,232,32 // shr $0x20,%rax
20268 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
20269 .byte 65,137,202 // mov %ecx,%r10d
20270 .byte 72,193,233,32 // shr $0x20,%rcx
20271 .byte 243,65,15,126,4,201 // movq (%r9,%rcx,8),%xmm0
20272 .byte 243,67,15,126,12,209 // movq (%r9,%r10,8),%xmm1
20273 .byte 102,15,108,200 // punpcklqdq %xmm0,%xmm1
20274 .byte 243,65,15,126,4,193 // movq (%r9,%rax,8),%xmm0
20275 .byte 243,67,15,126,20,193 // movq (%r9,%r8,8),%xmm2
20276 .byte 102,15,108,208 // punpcklqdq %xmm0,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040020277 .byte 102,68,15,111,202 // movdqa %xmm2,%xmm9
20278 .byte 102,68,15,97,201 // punpcklwd %xmm1,%xmm9
Mike Klein5f055f02017-04-06 20:02:11 -040020279 .byte 102,15,105,209 // punpckhwd %xmm1,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040020280 .byte 102,69,15,111,217 // movdqa %xmm9,%xmm11
20281 .byte 102,68,15,97,218 // punpcklwd %xmm2,%xmm11
Mike Kleind0ce1482017-04-19 17:19:30 -040020282 .byte 102,68,15,105,202 // punpckhwd %xmm2,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040020283 .byte 102,65,15,56,51,203 // pmovzxwd %xmm11,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040020284 .byte 102,68,15,111,5,4,28,0,0 // movdqa 0x1c04(%rip),%xmm8 # 45e0 <_sk_callback_sse41+0xcb3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020285 .byte 102,15,111,209 // movdqa %xmm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040020286 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040020287 .byte 102,15,239,202 // pxor %xmm2,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040020288 .byte 102,15,111,29,255,27,0,0 // movdqa 0x1bff(%rip),%xmm3 # 45f0 <_sk_callback_sse41+0xcc3>
Mike Kleind0ce1482017-04-19 17:19:30 -040020289 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040020290 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
20291 .byte 102,15,56,63,195 // pmaxud %xmm3,%xmm0
20292 .byte 102,15,118,193 // pcmpeqd %xmm1,%xmm0
20293 .byte 102,15,114,241,13 // pslld $0xd,%xmm1
20294 .byte 102,15,235,202 // por %xmm2,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040020295 .byte 102,68,15,111,21,235,27,0,0 // movdqa 0x1beb(%rip),%xmm10 # 4600 <_sk_callback_sse41+0xcd3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020296 .byte 102,65,15,254,202 // paddd %xmm10,%xmm1
20297 .byte 102,15,219,193 // pand %xmm1,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040020298 .byte 102,65,15,115,219,8 // psrldq $0x8,%xmm11
20299 .byte 102,69,15,56,51,219 // pmovzxwd %xmm11,%xmm11
20300 .byte 102,65,15,111,211 // movdqa %xmm11,%xmm2
20301 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
20302 .byte 102,68,15,239,218 // pxor %xmm2,%xmm11
20303 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040020304 .byte 102,65,15,111,203 // movdqa %xmm11,%xmm1
20305 .byte 102,15,56,63,203 // pmaxud %xmm3,%xmm1
20306 .byte 102,65,15,118,203 // pcmpeqd %xmm11,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040020307 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040020308 .byte 102,68,15,235,218 // por %xmm2,%xmm11
20309 .byte 102,69,15,254,218 // paddd %xmm10,%xmm11
20310 .byte 102,65,15,219,203 // pand %xmm11,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040020311 .byte 102,69,15,56,51,217 // pmovzxwd %xmm9,%xmm11
20312 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
20313 .byte 102,69,15,219,224 // pand %xmm8,%xmm12
20314 .byte 102,69,15,239,220 // pxor %xmm12,%xmm11
20315 .byte 102,65,15,114,244,16 // pslld $0x10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040020316 .byte 102,65,15,111,211 // movdqa %xmm11,%xmm2
20317 .byte 102,15,56,63,211 // pmaxud %xmm3,%xmm2
20318 .byte 102,65,15,118,211 // pcmpeqd %xmm11,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040020319 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040020320 .byte 102,69,15,235,220 // por %xmm12,%xmm11
20321 .byte 102,69,15,254,218 // paddd %xmm10,%xmm11
20322 .byte 102,65,15,219,211 // pand %xmm11,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040020323 .byte 102,65,15,115,217,8 // psrldq $0x8,%xmm9
20324 .byte 102,69,15,56,51,201 // pmovzxwd %xmm9,%xmm9
20325 .byte 102,69,15,219,193 // pand %xmm9,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040020326 .byte 102,69,15,239,200 // pxor %xmm8,%xmm9
20327 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040020328 .byte 102,65,15,56,63,217 // pmaxud %xmm9,%xmm3
20329 .byte 102,65,15,118,217 // pcmpeqd %xmm9,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040020330 .byte 102,65,15,114,241,13 // pslld $0xd,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040020331 .byte 102,69,15,235,200 // por %xmm8,%xmm9
20332 .byte 102,69,15,254,202 // paddd %xmm10,%xmm9
20333 .byte 102,65,15,219,217 // pand %xmm9,%xmm3
Mike Klein5f055f02017-04-06 20:02:11 -040020334 .byte 72,173 // lods %ds:(%rsi),%rax
20335 .byte 255,224 // jmpq *%rax
20336
Mike Klein7c4af542017-03-29 18:21:14 -040020337HIDDEN _sk_store_f16_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020338.globl _sk_store_f16_sse41
Mike Klein86714282017-04-13 17:37:38 -040020339FUNCTION(_sk_store_f16_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020340_sk_store_f16_sse41:
20341 .byte 72,173 // lods %ds:(%rsi),%rax
20342 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040020343 .byte 102,68,15,111,21,33,27,0,0 // movdqa 0x1b21(%rip),%xmm10 # 4610 <_sk_callback_sse41+0xce3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020344 .byte 102,68,15,111,224 // movdqa %xmm0,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040020345 .byte 102,68,15,111,232 // movdqa %xmm0,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040020346 .byte 102,69,15,219,234 // pand %xmm10,%xmm13
20347 .byte 102,69,15,239,229 // pxor %xmm13,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040020348 .byte 102,68,15,111,13,20,27,0,0 // movdqa 0x1b14(%rip),%xmm9 # 4620 <_sk_callback_sse41+0xcf3>
Mike Kleind0ce1482017-04-19 17:19:30 -040020349 .byte 102,65,15,114,213,16 // psrld $0x10,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040020350 .byte 102,69,15,111,193 // movdqa %xmm9,%xmm8
20351 .byte 102,69,15,102,196 // pcmpgtd %xmm12,%xmm8
20352 .byte 102,65,15,114,212,13 // psrld $0xd,%xmm12
Mike Kleinb3665f02017-05-01 14:56:04 -040020353 .byte 102,68,15,111,29,5,27,0,0 // movdqa 0x1b05(%rip),%xmm11 # 4630 <_sk_callback_sse41+0xd03>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020354 .byte 102,69,15,235,235 // por %xmm11,%xmm13
20355 .byte 102,69,15,254,236 // paddd %xmm12,%xmm13
20356 .byte 102,69,15,223,197 // pandn %xmm13,%xmm8
20357 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
20358 .byte 102,68,15,111,233 // movdqa %xmm1,%xmm13
20359 .byte 102,68,15,111,241 // movdqa %xmm1,%xmm14
20360 .byte 102,69,15,219,242 // pand %xmm10,%xmm14
20361 .byte 102,69,15,239,238 // pxor %xmm14,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040020362 .byte 102,65,15,114,214,16 // psrld $0x10,%xmm14
Mike Kleinb4bbc642017-04-27 08:59:55 -040020363 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
20364 .byte 102,69,15,102,229 // pcmpgtd %xmm13,%xmm12
20365 .byte 102,65,15,114,213,13 // psrld $0xd,%xmm13
20366 .byte 102,69,15,235,243 // por %xmm11,%xmm14
20367 .byte 102,69,15,254,245 // paddd %xmm13,%xmm14
20368 .byte 102,69,15,223,230 // pandn %xmm14,%xmm12
20369 .byte 102,69,15,56,43,228 // packusdw %xmm12,%xmm12
20370 .byte 102,68,15,111,242 // movdqa %xmm2,%xmm14
20371 .byte 102,68,15,111,250 // movdqa %xmm2,%xmm15
20372 .byte 102,69,15,219,250 // pand %xmm10,%xmm15
20373 .byte 102,69,15,239,247 // pxor %xmm15,%xmm14
20374 .byte 102,65,15,114,215,16 // psrld $0x10,%xmm15
20375 .byte 102,69,15,111,233 // movdqa %xmm9,%xmm13
20376 .byte 102,69,15,102,238 // pcmpgtd %xmm14,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040020377 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
Mike Kleinb4bbc642017-04-27 08:59:55 -040020378 .byte 102,69,15,235,251 // por %xmm11,%xmm15
20379 .byte 102,69,15,254,254 // paddd %xmm14,%xmm15
20380 .byte 102,69,15,223,239 // pandn %xmm15,%xmm13
20381 .byte 102,69,15,56,43,237 // packusdw %xmm13,%xmm13
20382 .byte 102,68,15,219,211 // pand %xmm3,%xmm10
20383 .byte 102,68,15,111,243 // movdqa %xmm3,%xmm14
20384 .byte 102,69,15,239,242 // pxor %xmm10,%xmm14
20385 .byte 102,65,15,114,210,16 // psrld $0x10,%xmm10
20386 .byte 102,69,15,102,206 // pcmpgtd %xmm14,%xmm9
20387 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
20388 .byte 102,69,15,235,211 // por %xmm11,%xmm10
20389 .byte 102,69,15,254,214 // paddd %xmm14,%xmm10
20390 .byte 102,69,15,223,202 // pandn %xmm10,%xmm9
20391 .byte 102,69,15,56,43,201 // packusdw %xmm9,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040020392 .byte 102,69,15,97,196 // punpcklwd %xmm12,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040020393 .byte 102,69,15,97,233 // punpcklwd %xmm9,%xmm13
Mike Klein95f53be2017-04-04 10:24:56 -040020394 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040020395 .byte 102,69,15,98,205 // punpckldq %xmm13,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040020396 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
Mike Kleind0ce1482017-04-19 17:19:30 -040020397 .byte 102,69,15,106,197 // punpckhdq %xmm13,%xmm8
Mike Klein95f53be2017-04-04 10:24:56 -040020398 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020399 .byte 72,173 // lods %ds:(%rsi),%rax
20400 .byte 255,224 // jmpq *%rax
20401
Mike Klein3146bb92017-04-05 14:45:02 -040020402HIDDEN _sk_load_u16_be_sse41
20403.globl _sk_load_u16_be_sse41
Mike Klein86714282017-04-13 17:37:38 -040020404FUNCTION(_sk_load_u16_be_sse41)
Mike Klein3146bb92017-04-05 14:45:02 -040020405_sk_load_u16_be_sse41:
20406 .byte 72,173 // lods %ds:(%rsi),%rax
20407 .byte 72,139,0 // mov (%rax),%rax
20408 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
20409 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
20410 .byte 102,15,111,208 // movdqa %xmm0,%xmm2
20411 .byte 102,15,97,209 // punpcklwd %xmm1,%xmm2
20412 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
20413 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
20414 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
20415 .byte 102,15,105,208 // punpckhwd %xmm0,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040020416 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
20417 .byte 102,15,113,240,8 // psllw $0x8,%xmm0
20418 .byte 102,15,112,217,78 // pshufd $0x4e,%xmm1,%xmm3
20419 .byte 102,15,113,209,8 // psrlw $0x8,%xmm1
20420 .byte 102,15,235,200 // por %xmm0,%xmm1
20421 .byte 102,15,56,51,193 // pmovzxwd %xmm1,%xmm0
20422 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040020423 .byte 68,15,40,5,212,25,0,0 // movaps 0x19d4(%rip),%xmm8 # 4640 <_sk_callback_sse41+0xd13>
Mike Klein3146bb92017-04-05 14:45:02 -040020424 .byte 65,15,89,192 // mulps %xmm8,%xmm0
20425 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
20426 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
20427 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
20428 .byte 102,15,235,217 // por %xmm1,%xmm3
20429 .byte 102,15,56,51,203 // pmovzxwd %xmm3,%xmm1
20430 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
20431 .byte 65,15,89,200 // mulps %xmm8,%xmm1
20432 .byte 102,68,15,111,202 // movdqa %xmm2,%xmm9
20433 .byte 102,65,15,113,241,8 // psllw $0x8,%xmm9
20434 .byte 102,15,112,218,78 // pshufd $0x4e,%xmm2,%xmm3
20435 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
20436 .byte 102,65,15,235,209 // por %xmm9,%xmm2
20437 .byte 102,15,56,51,210 // pmovzxwd %xmm2,%xmm2
20438 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
20439 .byte 65,15,89,208 // mulps %xmm8,%xmm2
20440 .byte 102,68,15,111,203 // movdqa %xmm3,%xmm9
20441 .byte 102,65,15,113,241,8 // psllw $0x8,%xmm9
20442 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
20443 .byte 102,65,15,235,217 // por %xmm9,%xmm3
20444 .byte 102,15,56,51,219 // pmovzxwd %xmm3,%xmm3
20445 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
20446 .byte 65,15,89,216 // mulps %xmm8,%xmm3
20447 .byte 72,173 // lods %ds:(%rsi),%rax
20448 .byte 255,224 // jmpq *%rax
20449
Mike Kleinb3821732017-04-17 10:58:05 -040020450HIDDEN _sk_load_rgb_u16_be_sse41
20451.globl _sk_load_rgb_u16_be_sse41
20452FUNCTION(_sk_load_rgb_u16_be_sse41)
20453_sk_load_rgb_u16_be_sse41:
20454 .byte 72,173 // lods %ds:(%rsi),%rax
20455 .byte 72,139,0 // mov (%rax),%rax
20456 .byte 72,141,12,127 // lea (%rdi,%rdi,2),%rcx
20457 .byte 243,15,111,20,72 // movdqu (%rax,%rcx,2),%xmm2
20458 .byte 243,15,111,68,72,8 // movdqu 0x8(%rax,%rcx,2),%xmm0
20459 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
20460 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
20461 .byte 102,15,115,217,6 // psrldq $0x6,%xmm1
20462 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
20463 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
20464 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
20465 .byte 102,15,111,194 // movdqa %xmm2,%xmm0
20466 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
20467 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
20468 .byte 102,15,105,209 // punpckhwd %xmm1,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040020469 .byte 102,15,111,200 // movdqa %xmm0,%xmm1
20470 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
20471 .byte 102,15,113,208,8 // psrlw $0x8,%xmm0
20472 .byte 102,15,235,193 // por %xmm1,%xmm0
20473 .byte 102,15,56,51,192 // pmovzxwd %xmm0,%xmm0
20474 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040020475 .byte 68,15,40,5,21,25,0,0 // movaps 0x1915(%rip),%xmm8 # 4650 <_sk_callback_sse41+0xd23>
Mike Kleinb3821732017-04-17 10:58:05 -040020476 .byte 65,15,89,192 // mulps %xmm8,%xmm0
20477 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
20478 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
20479 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
20480 .byte 102,15,235,217 // por %xmm1,%xmm3
20481 .byte 102,15,56,51,203 // pmovzxwd %xmm3,%xmm1
20482 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
20483 .byte 65,15,89,200 // mulps %xmm8,%xmm1
20484 .byte 102,15,111,218 // movdqa %xmm2,%xmm3
20485 .byte 102,15,113,243,8 // psllw $0x8,%xmm3
20486 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
20487 .byte 102,15,235,211 // por %xmm3,%xmm2
20488 .byte 102,15,56,51,210 // pmovzxwd %xmm2,%xmm2
20489 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
20490 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040020491 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040020492 .byte 15,40,29,220,24,0,0 // movaps 0x18dc(%rip),%xmm3 # 4660 <_sk_callback_sse41+0xd33>
Mike Kleinb3821732017-04-17 10:58:05 -040020493 .byte 255,224 // jmpq *%rax
20494
Mike Klein3146bb92017-04-05 14:45:02 -040020495HIDDEN _sk_store_u16_be_sse41
20496.globl _sk_store_u16_be_sse41
Mike Klein86714282017-04-13 17:37:38 -040020497FUNCTION(_sk_store_u16_be_sse41)
Mike Klein3146bb92017-04-05 14:45:02 -040020498_sk_store_u16_be_sse41:
20499 .byte 72,173 // lods %ds:(%rsi),%rax
20500 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040020501 .byte 68,15,40,13,221,24,0,0 // movaps 0x18dd(%rip),%xmm9 # 4670 <_sk_callback_sse41+0xd43>
Mike Kleinfe560a82017-05-01 12:56:35 -040020502 .byte 68,15,40,192 // movaps %xmm0,%xmm8
20503 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040020504 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
20505 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
20506 .byte 102,69,15,111,208 // movdqa %xmm8,%xmm10
20507 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
20508 .byte 102,65,15,113,208,8 // psrlw $0x8,%xmm8
20509 .byte 102,69,15,235,194 // por %xmm10,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040020510 .byte 68,15,40,209 // movaps %xmm1,%xmm10
20511 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein3146bb92017-04-05 14:45:02 -040020512 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
20513 .byte 102,69,15,56,43,210 // packusdw %xmm10,%xmm10
20514 .byte 102,69,15,111,218 // movdqa %xmm10,%xmm11
20515 .byte 102,65,15,113,243,8 // psllw $0x8,%xmm11
20516 .byte 102,65,15,113,210,8 // psrlw $0x8,%xmm10
20517 .byte 102,69,15,235,211 // por %xmm11,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040020518 .byte 68,15,40,218 // movaps %xmm2,%xmm11
20519 .byte 69,15,89,217 // mulps %xmm9,%xmm11
Mike Klein3146bb92017-04-05 14:45:02 -040020520 .byte 102,69,15,91,219 // cvtps2dq %xmm11,%xmm11
20521 .byte 102,69,15,56,43,219 // packusdw %xmm11,%xmm11
20522 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
20523 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
20524 .byte 102,65,15,113,211,8 // psrlw $0x8,%xmm11
20525 .byte 102,69,15,235,220 // por %xmm12,%xmm11
20526 .byte 68,15,89,203 // mulps %xmm3,%xmm9
20527 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
20528 .byte 102,69,15,56,43,201 // packusdw %xmm9,%xmm9
20529 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
20530 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
20531 .byte 102,65,15,113,209,8 // psrlw $0x8,%xmm9
20532 .byte 102,69,15,235,204 // por %xmm12,%xmm9
20533 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
20534 .byte 102,69,15,97,217 // punpcklwd %xmm9,%xmm11
20535 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
20536 .byte 102,69,15,98,203 // punpckldq %xmm11,%xmm9
20537 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
20538 .byte 102,69,15,106,195 // punpckhdq %xmm11,%xmm8
20539 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
20540 .byte 72,173 // lods %ds:(%rsi),%rax
20541 .byte 255,224 // jmpq *%rax
20542
Mike Klein14987eb2017-04-06 10:22:26 -040020543HIDDEN _sk_load_f32_sse41
20544.globl _sk_load_f32_sse41
Mike Klein86714282017-04-13 17:37:38 -040020545FUNCTION(_sk_load_f32_sse41)
Mike Klein14987eb2017-04-06 10:22:26 -040020546_sk_load_f32_sse41:
20547 .byte 72,173 // lods %ds:(%rsi),%rax
20548 .byte 72,139,0 // mov (%rax),%rax
20549 .byte 72,137,249 // mov %rdi,%rcx
20550 .byte 72,193,225,4 // shl $0x4,%rcx
20551 .byte 68,15,16,4,8 // movups (%rax,%rcx,1),%xmm8
20552 .byte 15,16,68,8,16 // movups 0x10(%rax,%rcx,1),%xmm0
20553 .byte 15,16,92,8,32 // movups 0x20(%rax,%rcx,1),%xmm3
20554 .byte 68,15,16,76,8,48 // movups 0x30(%rax,%rcx,1),%xmm9
20555 .byte 65,15,40,208 // movaps %xmm8,%xmm2
20556 .byte 15,20,208 // unpcklps %xmm0,%xmm2
20557 .byte 15,40,203 // movaps %xmm3,%xmm1
20558 .byte 65,15,20,201 // unpcklps %xmm9,%xmm1
20559 .byte 68,15,21,192 // unpckhps %xmm0,%xmm8
20560 .byte 65,15,21,217 // unpckhps %xmm9,%xmm3
20561 .byte 15,40,194 // movaps %xmm2,%xmm0
20562 .byte 102,15,20,193 // unpcklpd %xmm1,%xmm0
20563 .byte 15,18,202 // movhlps %xmm2,%xmm1
20564 .byte 65,15,40,208 // movaps %xmm8,%xmm2
20565 .byte 102,15,20,211 // unpcklpd %xmm3,%xmm2
20566 .byte 65,15,18,216 // movhlps %xmm8,%xmm3
20567 .byte 72,173 // lods %ds:(%rsi),%rax
20568 .byte 255,224 // jmpq *%rax
20569
Mike Klein7c4af542017-03-29 18:21:14 -040020570HIDDEN _sk_store_f32_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020571.globl _sk_store_f32_sse41
Mike Klein86714282017-04-13 17:37:38 -040020572FUNCTION(_sk_store_f32_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020573_sk_store_f32_sse41:
20574 .byte 72,173 // lods %ds:(%rsi),%rax
20575 .byte 72,139,0 // mov (%rax),%rax
20576 .byte 72,137,249 // mov %rdi,%rcx
20577 .byte 72,193,225,4 // shl $0x4,%rcx
20578 .byte 68,15,40,192 // movaps %xmm0,%xmm8
20579 .byte 68,15,40,200 // movaps %xmm0,%xmm9
20580 .byte 68,15,20,201 // unpcklps %xmm1,%xmm9
20581 .byte 68,15,40,210 // movaps %xmm2,%xmm10
20582 .byte 68,15,40,218 // movaps %xmm2,%xmm11
20583 .byte 68,15,20,219 // unpcklps %xmm3,%xmm11
20584 .byte 68,15,21,193 // unpckhps %xmm1,%xmm8
20585 .byte 68,15,21,211 // unpckhps %xmm3,%xmm10
20586 .byte 69,15,40,225 // movaps %xmm9,%xmm12
20587 .byte 102,69,15,20,227 // unpcklpd %xmm11,%xmm12
20588 .byte 69,15,18,217 // movhlps %xmm9,%xmm11
20589 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20590 .byte 102,69,15,20,202 // unpcklpd %xmm10,%xmm9
20591 .byte 69,15,18,208 // movhlps %xmm8,%xmm10
20592 .byte 102,68,15,17,36,8 // movupd %xmm12,(%rax,%rcx,1)
20593 .byte 68,15,17,92,8,16 // movups %xmm11,0x10(%rax,%rcx,1)
20594 .byte 102,68,15,17,76,8,32 // movupd %xmm9,0x20(%rax,%rcx,1)
20595 .byte 68,15,17,84,8,48 // movups %xmm10,0x30(%rax,%rcx,1)
20596 .byte 72,173 // lods %ds:(%rsi),%rax
20597 .byte 255,224 // jmpq *%rax
20598
Mike Klein7c4af542017-03-29 18:21:14 -040020599HIDDEN _sk_clamp_x_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020600.globl _sk_clamp_x_sse41
Mike Klein86714282017-04-13 17:37:38 -040020601FUNCTION(_sk_clamp_x_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020602_sk_clamp_x_sse41:
20603 .byte 72,173 // lods %ds:(%rsi),%rax
20604 .byte 69,15,87,192 // xorps %xmm8,%xmm8
20605 .byte 68,15,95,192 // maxps %xmm0,%xmm8
20606 .byte 243,68,15,16,8 // movss (%rax),%xmm9
20607 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
20608 .byte 102,15,118,192 // pcmpeqd %xmm0,%xmm0
20609 .byte 102,65,15,254,193 // paddd %xmm9,%xmm0
20610 .byte 68,15,93,192 // minps %xmm0,%xmm8
20611 .byte 72,173 // lods %ds:(%rsi),%rax
20612 .byte 65,15,40,192 // movaps %xmm8,%xmm0
20613 .byte 255,224 // jmpq *%rax
20614
Mike Klein7c4af542017-03-29 18:21:14 -040020615HIDDEN _sk_clamp_y_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020616.globl _sk_clamp_y_sse41
Mike Klein86714282017-04-13 17:37:38 -040020617FUNCTION(_sk_clamp_y_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020618_sk_clamp_y_sse41:
20619 .byte 72,173 // lods %ds:(%rsi),%rax
20620 .byte 69,15,87,192 // xorps %xmm8,%xmm8
20621 .byte 68,15,95,193 // maxps %xmm1,%xmm8
20622 .byte 243,68,15,16,8 // movss (%rax),%xmm9
20623 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
20624 .byte 102,15,118,201 // pcmpeqd %xmm1,%xmm1
20625 .byte 102,65,15,254,201 // paddd %xmm9,%xmm1
20626 .byte 68,15,93,193 // minps %xmm1,%xmm8
20627 .byte 72,173 // lods %ds:(%rsi),%rax
20628 .byte 65,15,40,200 // movaps %xmm8,%xmm1
20629 .byte 255,224 // jmpq *%rax
20630
Mike Klein7c4af542017-03-29 18:21:14 -040020631HIDDEN _sk_repeat_x_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020632.globl _sk_repeat_x_sse41
Mike Klein86714282017-04-13 17:37:38 -040020633FUNCTION(_sk_repeat_x_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020634_sk_repeat_x_sse41:
20635 .byte 72,173 // lods %ds:(%rsi),%rax
20636 .byte 243,68,15,16,0 // movss (%rax),%xmm8
20637 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20638 .byte 68,15,40,200 // movaps %xmm0,%xmm9
20639 .byte 69,15,94,200 // divps %xmm8,%xmm9
20640 .byte 102,69,15,58,8,201,1 // roundps $0x1,%xmm9,%xmm9
20641 .byte 69,15,89,200 // mulps %xmm8,%xmm9
20642 .byte 65,15,92,193 // subps %xmm9,%xmm0
20643 .byte 102,69,15,118,201 // pcmpeqd %xmm9,%xmm9
20644 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
20645 .byte 65,15,93,193 // minps %xmm9,%xmm0
20646 .byte 72,173 // lods %ds:(%rsi),%rax
20647 .byte 255,224 // jmpq *%rax
20648
Mike Klein7c4af542017-03-29 18:21:14 -040020649HIDDEN _sk_repeat_y_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020650.globl _sk_repeat_y_sse41
Mike Klein86714282017-04-13 17:37:38 -040020651FUNCTION(_sk_repeat_y_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020652_sk_repeat_y_sse41:
20653 .byte 72,173 // lods %ds:(%rsi),%rax
20654 .byte 243,68,15,16,0 // movss (%rax),%xmm8
20655 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20656 .byte 68,15,40,201 // movaps %xmm1,%xmm9
20657 .byte 69,15,94,200 // divps %xmm8,%xmm9
20658 .byte 102,69,15,58,8,201,1 // roundps $0x1,%xmm9,%xmm9
20659 .byte 69,15,89,200 // mulps %xmm8,%xmm9
20660 .byte 65,15,92,201 // subps %xmm9,%xmm1
20661 .byte 102,69,15,118,201 // pcmpeqd %xmm9,%xmm9
20662 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
20663 .byte 65,15,93,201 // minps %xmm9,%xmm1
20664 .byte 72,173 // lods %ds:(%rsi),%rax
20665 .byte 255,224 // jmpq *%rax
20666
Mike Klein7c4af542017-03-29 18:21:14 -040020667HIDDEN _sk_mirror_x_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020668.globl _sk_mirror_x_sse41
Mike Klein86714282017-04-13 17:37:38 -040020669FUNCTION(_sk_mirror_x_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020670_sk_mirror_x_sse41:
20671 .byte 72,173 // lods %ds:(%rsi),%rax
20672 .byte 243,68,15,16,0 // movss (%rax),%xmm8
20673 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20674 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
20675 .byte 65,15,92,193 // subps %xmm9,%xmm0
20676 .byte 243,69,15,88,192 // addss %xmm8,%xmm8
20677 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20678 .byte 68,15,40,208 // movaps %xmm0,%xmm10
20679 .byte 69,15,94,208 // divps %xmm8,%xmm10
20680 .byte 102,69,15,58,8,210,1 // roundps $0x1,%xmm10,%xmm10
20681 .byte 69,15,89,208 // mulps %xmm8,%xmm10
20682 .byte 65,15,92,194 // subps %xmm10,%xmm0
20683 .byte 65,15,92,193 // subps %xmm9,%xmm0
20684 .byte 69,15,87,192 // xorps %xmm8,%xmm8
20685 .byte 68,15,92,192 // subps %xmm0,%xmm8
20686 .byte 65,15,84,192 // andps %xmm8,%xmm0
20687 .byte 102,69,15,118,192 // pcmpeqd %xmm8,%xmm8
20688 .byte 102,69,15,254,193 // paddd %xmm9,%xmm8
20689 .byte 65,15,93,192 // minps %xmm8,%xmm0
20690 .byte 72,173 // lods %ds:(%rsi),%rax
20691 .byte 255,224 // jmpq *%rax
20692
Mike Klein7c4af542017-03-29 18:21:14 -040020693HIDDEN _sk_mirror_y_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020694.globl _sk_mirror_y_sse41
Mike Klein86714282017-04-13 17:37:38 -040020695FUNCTION(_sk_mirror_y_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020696_sk_mirror_y_sse41:
20697 .byte 72,173 // lods %ds:(%rsi),%rax
20698 .byte 243,68,15,16,0 // movss (%rax),%xmm8
20699 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20700 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
20701 .byte 65,15,92,201 // subps %xmm9,%xmm1
20702 .byte 243,69,15,88,192 // addss %xmm8,%xmm8
20703 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20704 .byte 68,15,40,209 // movaps %xmm1,%xmm10
20705 .byte 69,15,94,208 // divps %xmm8,%xmm10
20706 .byte 102,69,15,58,8,210,1 // roundps $0x1,%xmm10,%xmm10
20707 .byte 69,15,89,208 // mulps %xmm8,%xmm10
20708 .byte 65,15,92,202 // subps %xmm10,%xmm1
20709 .byte 65,15,92,201 // subps %xmm9,%xmm1
20710 .byte 69,15,87,192 // xorps %xmm8,%xmm8
20711 .byte 68,15,92,193 // subps %xmm1,%xmm8
20712 .byte 65,15,84,200 // andps %xmm8,%xmm1
20713 .byte 102,69,15,118,192 // pcmpeqd %xmm8,%xmm8
20714 .byte 102,69,15,254,193 // paddd %xmm9,%xmm8
20715 .byte 65,15,93,200 // minps %xmm8,%xmm1
20716 .byte 72,173 // lods %ds:(%rsi),%rax
20717 .byte 255,224 // jmpq *%rax
20718
Mike Klein7c4af542017-03-29 18:21:14 -040020719HIDDEN _sk_luminance_to_alpha_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020720.globl _sk_luminance_to_alpha_sse41
Mike Klein86714282017-04-13 17:37:38 -040020721FUNCTION(_sk_luminance_to_alpha_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020722_sk_luminance_to_alpha_sse41:
Mike Kleinfe560a82017-05-01 12:56:35 -040020723 .byte 15,40,218 // movaps %xmm2,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040020724 .byte 15,89,5,251,21,0,0 // mulps 0x15fb(%rip),%xmm0 # 4680 <_sk_callback_sse41+0xd53>
20725 .byte 15,89,13,4,22,0,0 // mulps 0x1604(%rip),%xmm1 # 4690 <_sk_callback_sse41+0xd63>
Mike Kleinfe560a82017-05-01 12:56:35 -040020726 .byte 15,88,200 // addps %xmm0,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040020727 .byte 15,89,29,10,22,0,0 // mulps 0x160a(%rip),%xmm3 # 46a0 <_sk_callback_sse41+0xd73>
Mike Kleinfe560a82017-05-01 12:56:35 -040020728 .byte 15,88,217 // addps %xmm1,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040020729 .byte 72,173 // lods %ds:(%rsi),%rax
20730 .byte 15,87,192 // xorps %xmm0,%xmm0
20731 .byte 15,87,201 // xorps %xmm1,%xmm1
20732 .byte 15,87,210 // xorps %xmm2,%xmm2
20733 .byte 255,224 // jmpq *%rax
20734
Mike Klein7c4af542017-03-29 18:21:14 -040020735HIDDEN _sk_matrix_2x3_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020736.globl _sk_matrix_2x3_sse41
Mike Klein86714282017-04-13 17:37:38 -040020737FUNCTION(_sk_matrix_2x3_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020738_sk_matrix_2x3_sse41:
20739 .byte 68,15,40,201 // movaps %xmm1,%xmm9
20740 .byte 68,15,40,192 // movaps %xmm0,%xmm8
20741 .byte 72,173 // lods %ds:(%rsi),%rax
20742 .byte 243,15,16,0 // movss (%rax),%xmm0
20743 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
20744 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20745 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
20746 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20747 .byte 243,68,15,16,88,16 // movss 0x10(%rax),%xmm11
20748 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20749 .byte 69,15,89,209 // mulps %xmm9,%xmm10
20750 .byte 69,15,88,211 // addps %xmm11,%xmm10
20751 .byte 65,15,89,192 // mulps %xmm8,%xmm0
20752 .byte 65,15,88,194 // addps %xmm10,%xmm0
20753 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20754 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
20755 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20756 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
20757 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20758 .byte 69,15,89,209 // mulps %xmm9,%xmm10
20759 .byte 69,15,88,211 // addps %xmm11,%xmm10
20760 .byte 65,15,89,200 // mulps %xmm8,%xmm1
20761 .byte 65,15,88,202 // addps %xmm10,%xmm1
20762 .byte 72,173 // lods %ds:(%rsi),%rax
20763 .byte 255,224 // jmpq *%rax
20764
Mike Klein7c4af542017-03-29 18:21:14 -040020765HIDDEN _sk_matrix_3x4_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020766.globl _sk_matrix_3x4_sse41
Mike Klein86714282017-04-13 17:37:38 -040020767FUNCTION(_sk_matrix_3x4_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020768_sk_matrix_3x4_sse41:
20769 .byte 68,15,40,201 // movaps %xmm1,%xmm9
20770 .byte 68,15,40,192 // movaps %xmm0,%xmm8
20771 .byte 72,173 // lods %ds:(%rsi),%rax
20772 .byte 243,15,16,0 // movss (%rax),%xmm0
20773 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
20774 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20775 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
20776 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20777 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
20778 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20779 .byte 243,68,15,16,96,36 // movss 0x24(%rax),%xmm12
20780 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20781 .byte 68,15,89,218 // mulps %xmm2,%xmm11
20782 .byte 69,15,88,220 // addps %xmm12,%xmm11
20783 .byte 69,15,89,209 // mulps %xmm9,%xmm10
20784 .byte 69,15,88,211 // addps %xmm11,%xmm10
20785 .byte 65,15,89,192 // mulps %xmm8,%xmm0
20786 .byte 65,15,88,194 // addps %xmm10,%xmm0
20787 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20788 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
20789 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20790 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
20791 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20792 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
20793 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20794 .byte 68,15,89,218 // mulps %xmm2,%xmm11
20795 .byte 69,15,88,220 // addps %xmm12,%xmm11
20796 .byte 69,15,89,209 // mulps %xmm9,%xmm10
20797 .byte 69,15,88,211 // addps %xmm11,%xmm10
20798 .byte 65,15,89,200 // mulps %xmm8,%xmm1
20799 .byte 65,15,88,202 // addps %xmm10,%xmm1
20800 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
20801 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20802 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
20803 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20804 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
20805 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20806 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
20807 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
20808 .byte 68,15,89,226 // mulps %xmm2,%xmm12
20809 .byte 69,15,88,229 // addps %xmm13,%xmm12
20810 .byte 69,15,89,217 // mulps %xmm9,%xmm11
20811 .byte 69,15,88,220 // addps %xmm12,%xmm11
20812 .byte 69,15,89,208 // mulps %xmm8,%xmm10
20813 .byte 69,15,88,211 // addps %xmm11,%xmm10
20814 .byte 72,173 // lods %ds:(%rsi),%rax
20815 .byte 65,15,40,210 // movaps %xmm10,%xmm2
20816 .byte 255,224 // jmpq *%rax
20817
Mike Klein7c4af542017-03-29 18:21:14 -040020818HIDDEN _sk_matrix_4x5_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020819.globl _sk_matrix_4x5_sse41
Mike Klein86714282017-04-13 17:37:38 -040020820FUNCTION(_sk_matrix_4x5_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020821_sk_matrix_4x5_sse41:
20822 .byte 68,15,40,201 // movaps %xmm1,%xmm9
20823 .byte 68,15,40,192 // movaps %xmm0,%xmm8
20824 .byte 72,173 // lods %ds:(%rsi),%rax
20825 .byte 243,15,16,0 // movss (%rax),%xmm0
20826 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
20827 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20828 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
20829 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20830 .byte 243,68,15,16,88,32 // movss 0x20(%rax),%xmm11
20831 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20832 .byte 243,68,15,16,96,48 // movss 0x30(%rax),%xmm12
20833 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20834 .byte 243,68,15,16,104,64 // movss 0x40(%rax),%xmm13
20835 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
20836 .byte 68,15,89,227 // mulps %xmm3,%xmm12
20837 .byte 69,15,88,229 // addps %xmm13,%xmm12
20838 .byte 68,15,89,218 // mulps %xmm2,%xmm11
20839 .byte 69,15,88,220 // addps %xmm12,%xmm11
20840 .byte 69,15,89,209 // mulps %xmm9,%xmm10
20841 .byte 69,15,88,211 // addps %xmm11,%xmm10
20842 .byte 65,15,89,192 // mulps %xmm8,%xmm0
20843 .byte 65,15,88,194 // addps %xmm10,%xmm0
20844 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20845 .byte 243,68,15,16,80,20 // movss 0x14(%rax),%xmm10
20846 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20847 .byte 243,68,15,16,88,36 // movss 0x24(%rax),%xmm11
20848 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20849 .byte 243,68,15,16,96,52 // movss 0x34(%rax),%xmm12
20850 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20851 .byte 243,68,15,16,104,68 // movss 0x44(%rax),%xmm13
20852 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
20853 .byte 68,15,89,227 // mulps %xmm3,%xmm12
20854 .byte 69,15,88,229 // addps %xmm13,%xmm12
20855 .byte 68,15,89,218 // mulps %xmm2,%xmm11
20856 .byte 69,15,88,220 // addps %xmm12,%xmm11
20857 .byte 69,15,89,209 // mulps %xmm9,%xmm10
20858 .byte 69,15,88,211 // addps %xmm11,%xmm10
20859 .byte 65,15,89,200 // mulps %xmm8,%xmm1
20860 .byte 65,15,88,202 // addps %xmm10,%xmm1
20861 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
20862 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20863 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
20864 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20865 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
20866 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20867 .byte 243,68,15,16,104,56 // movss 0x38(%rax),%xmm13
20868 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
20869 .byte 243,68,15,16,112,72 // movss 0x48(%rax),%xmm14
20870 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
20871 .byte 68,15,89,235 // mulps %xmm3,%xmm13
20872 .byte 69,15,88,238 // addps %xmm14,%xmm13
20873 .byte 68,15,89,226 // mulps %xmm2,%xmm12
20874 .byte 69,15,88,229 // addps %xmm13,%xmm12
20875 .byte 69,15,89,217 // mulps %xmm9,%xmm11
20876 .byte 69,15,88,220 // addps %xmm12,%xmm11
20877 .byte 69,15,89,208 // mulps %xmm8,%xmm10
20878 .byte 69,15,88,211 // addps %xmm11,%xmm10
20879 .byte 243,68,15,16,88,12 // movss 0xc(%rax),%xmm11
20880 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20881 .byte 243,68,15,16,96,28 // movss 0x1c(%rax),%xmm12
20882 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20883 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
20884 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
20885 .byte 243,68,15,16,112,60 // movss 0x3c(%rax),%xmm14
20886 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
20887 .byte 243,68,15,16,120,76 // movss 0x4c(%rax),%xmm15
20888 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
20889 .byte 68,15,89,243 // mulps %xmm3,%xmm14
20890 .byte 69,15,88,247 // addps %xmm15,%xmm14
20891 .byte 68,15,89,234 // mulps %xmm2,%xmm13
20892 .byte 69,15,88,238 // addps %xmm14,%xmm13
20893 .byte 69,15,89,225 // mulps %xmm9,%xmm12
20894 .byte 69,15,88,229 // addps %xmm13,%xmm12
20895 .byte 69,15,89,216 // mulps %xmm8,%xmm11
20896 .byte 69,15,88,220 // addps %xmm12,%xmm11
20897 .byte 72,173 // lods %ds:(%rsi),%rax
20898 .byte 65,15,40,210 // movaps %xmm10,%xmm2
20899 .byte 65,15,40,219 // movaps %xmm11,%xmm3
20900 .byte 255,224 // jmpq *%rax
20901
Mike Klein7c4af542017-03-29 18:21:14 -040020902HIDDEN _sk_matrix_perspective_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020903.globl _sk_matrix_perspective_sse41
Mike Klein86714282017-04-13 17:37:38 -040020904FUNCTION(_sk_matrix_perspective_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020905_sk_matrix_perspective_sse41:
20906 .byte 68,15,40,192 // movaps %xmm0,%xmm8
20907 .byte 72,173 // lods %ds:(%rsi),%rax
20908 .byte 243,15,16,0 // movss (%rax),%xmm0
20909 .byte 243,68,15,16,72,4 // movss 0x4(%rax),%xmm9
20910 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20911 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
20912 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
20913 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20914 .byte 68,15,89,201 // mulps %xmm1,%xmm9
20915 .byte 69,15,88,202 // addps %xmm10,%xmm9
20916 .byte 65,15,89,192 // mulps %xmm8,%xmm0
20917 .byte 65,15,88,193 // addps %xmm9,%xmm0
20918 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
20919 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
20920 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
20921 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20922 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
20923 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20924 .byte 68,15,89,209 // mulps %xmm1,%xmm10
20925 .byte 69,15,88,211 // addps %xmm11,%xmm10
20926 .byte 69,15,89,200 // mulps %xmm8,%xmm9
20927 .byte 69,15,88,202 // addps %xmm10,%xmm9
20928 .byte 243,68,15,16,80,24 // movss 0x18(%rax),%xmm10
20929 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20930 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
20931 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20932 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
20933 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20934 .byte 68,15,89,217 // mulps %xmm1,%xmm11
20935 .byte 69,15,88,220 // addps %xmm12,%xmm11
20936 .byte 69,15,89,208 // mulps %xmm8,%xmm10
20937 .byte 69,15,88,211 // addps %xmm11,%xmm10
20938 .byte 65,15,83,202 // rcpps %xmm10,%xmm1
20939 .byte 15,89,193 // mulps %xmm1,%xmm0
20940 .byte 68,15,89,201 // mulps %xmm1,%xmm9
20941 .byte 72,173 // lods %ds:(%rsi),%rax
20942 .byte 65,15,40,201 // movaps %xmm9,%xmm1
20943 .byte 255,224 // jmpq *%rax
20944
Herb Derby7b4202d2017-04-10 10:52:34 -040020945HIDDEN _sk_linear_gradient_sse41
20946.globl _sk_linear_gradient_sse41
Mike Klein86714282017-04-13 17:37:38 -040020947FUNCTION(_sk_linear_gradient_sse41)
Herb Derby7b4202d2017-04-10 10:52:34 -040020948_sk_linear_gradient_sse41:
20949 .byte 72,173 // lods %ds:(%rsi),%rax
20950 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
20951 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20952 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
20953 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20954 .byte 243,68,15,16,96,24 // movss 0x18(%rax),%xmm12
20955 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20956 .byte 243,68,15,16,104,28 // movss 0x1c(%rax),%xmm13
20957 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
20958 .byte 72,139,8 // mov (%rax),%rcx
20959 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040020960 .byte 15,132,254,0,0,0 // je 3538 <_sk_linear_gradient_sse41+0x138>
Herb Derby7b4202d2017-04-10 10:52:34 -040020961 .byte 15,41,100,36,168 // movaps %xmm4,-0x58(%rsp)
20962 .byte 15,41,108,36,184 // movaps %xmm5,-0x48(%rsp)
20963 .byte 15,41,116,36,200 // movaps %xmm6,-0x38(%rsp)
20964 .byte 15,41,124,36,216 // movaps %xmm7,-0x28(%rsp)
20965 .byte 72,139,64,8 // mov 0x8(%rax),%rax
20966 .byte 72,131,192,32 // add $0x20,%rax
20967 .byte 69,15,87,201 // xorps %xmm9,%xmm9
20968 .byte 15,87,219 // xorps %xmm3,%xmm3
20969 .byte 15,87,210 // xorps %xmm2,%xmm2
20970 .byte 15,87,201 // xorps %xmm1,%xmm1
20971 .byte 15,40,233 // movaps %xmm1,%xmm5
20972 .byte 15,40,242 // movaps %xmm2,%xmm6
20973 .byte 15,40,251 // movaps %xmm3,%xmm7
20974 .byte 69,15,40,194 // movaps %xmm10,%xmm8
20975 .byte 69,15,40,243 // movaps %xmm11,%xmm14
20976 .byte 69,15,40,252 // movaps %xmm12,%xmm15
20977 .byte 68,15,41,108,36,232 // movaps %xmm13,-0x18(%rsp)
20978 .byte 65,15,40,201 // movaps %xmm9,%xmm1
20979 .byte 243,15,16,80,224 // movss -0x20(%rax),%xmm2
20980 .byte 243,68,15,16,72,228 // movss -0x1c(%rax),%xmm9
20981 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20982 .byte 15,40,224 // movaps %xmm0,%xmm4
20983 .byte 15,194,194,1 // cmpltps %xmm2,%xmm0
20984 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
20985 .byte 102,68,15,56,20,201 // blendvps %xmm0,%xmm1,%xmm9
20986 .byte 243,15,16,72,232 // movss -0x18(%rax),%xmm1
20987 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20988 .byte 102,15,56,20,205 // blendvps %xmm0,%xmm5,%xmm1
20989 .byte 243,15,16,80,236 // movss -0x14(%rax),%xmm2
20990 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20991 .byte 102,15,56,20,214 // blendvps %xmm0,%xmm6,%xmm2
20992 .byte 243,15,16,88,240 // movss -0x10(%rax),%xmm3
20993 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20994 .byte 102,15,56,20,223 // blendvps %xmm0,%xmm7,%xmm3
20995 .byte 243,68,15,16,80,244 // movss -0xc(%rax),%xmm10
20996 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20997 .byte 102,69,15,56,20,208 // blendvps %xmm0,%xmm8,%xmm10
20998 .byte 243,68,15,16,88,248 // movss -0x8(%rax),%xmm11
20999 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21000 .byte 102,69,15,56,20,222 // blendvps %xmm0,%xmm14,%xmm11
21001 .byte 243,68,15,16,96,252 // movss -0x4(%rax),%xmm12
21002 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
21003 .byte 102,69,15,56,20,231 // blendvps %xmm0,%xmm15,%xmm12
21004 .byte 243,68,15,16,40 // movss (%rax),%xmm13
21005 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
21006 .byte 102,68,15,56,20,108,36,232 // blendvps %xmm0,-0x18(%rsp),%xmm13
21007 .byte 15,40,196 // movaps %xmm4,%xmm0
21008 .byte 72,131,192,36 // add $0x24,%rax
21009 .byte 72,255,201 // dec %rcx
Mike Kleinb3665f02017-05-01 14:56:04 -040021010 .byte 15,133,65,255,255,255 // jne 3463 <_sk_linear_gradient_sse41+0x63>
Herb Derby7b4202d2017-04-10 10:52:34 -040021011 .byte 15,40,124,36,216 // movaps -0x28(%rsp),%xmm7
21012 .byte 15,40,116,36,200 // movaps -0x38(%rsp),%xmm6
21013 .byte 15,40,108,36,184 // movaps -0x48(%rsp),%xmm5
21014 .byte 15,40,100,36,168 // movaps -0x58(%rsp),%xmm4
Mike Kleinb3665f02017-05-01 14:56:04 -040021015 .byte 235,13 // jmp 3545 <_sk_linear_gradient_sse41+0x145>
Herb Derby7b4202d2017-04-10 10:52:34 -040021016 .byte 15,87,201 // xorps %xmm1,%xmm1
21017 .byte 15,87,210 // xorps %xmm2,%xmm2
21018 .byte 15,87,219 // xorps %xmm3,%xmm3
21019 .byte 69,15,87,201 // xorps %xmm9,%xmm9
21020 .byte 68,15,89,200 // mulps %xmm0,%xmm9
21021 .byte 69,15,88,202 // addps %xmm10,%xmm9
21022 .byte 15,89,200 // mulps %xmm0,%xmm1
21023 .byte 65,15,88,203 // addps %xmm11,%xmm1
21024 .byte 15,89,208 // mulps %xmm0,%xmm2
21025 .byte 65,15,88,212 // addps %xmm12,%xmm2
21026 .byte 15,89,216 // mulps %xmm0,%xmm3
21027 .byte 65,15,88,221 // addps %xmm13,%xmm3
21028 .byte 72,173 // lods %ds:(%rsi),%rax
21029 .byte 65,15,40,193 // movaps %xmm9,%xmm0
21030 .byte 255,224 // jmpq *%rax
21031
Mike Klein7c4af542017-03-29 18:21:14 -040021032HIDDEN _sk_linear_gradient_2stops_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021033.globl _sk_linear_gradient_2stops_sse41
Mike Klein86714282017-04-13 17:37:38 -040021034FUNCTION(_sk_linear_gradient_2stops_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021035_sk_linear_gradient_2stops_sse41:
Mike Klein8a823fa2017-04-05 17:29:26 -040021036 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040021037 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040021038 .byte 243,15,16,0 // movss (%rax),%xmm0
21039 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Klein8a823fa2017-04-05 17:29:26 -040021040 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040021041 .byte 243,15,16,80,16 // movss 0x10(%rax),%xmm2
21042 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040021043 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040021044 .byte 15,88,194 // addps %xmm2,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040021045 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040021046 .byte 243,15,16,80,20 // movss 0x14(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040021047 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
21048 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040021049 .byte 15,88,202 // addps %xmm2,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040021050 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040021051 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040021052 .byte 243,15,16,88,24 // movss 0x18(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040021053 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
21054 .byte 65,15,89,208 // mulps %xmm8,%xmm2
21055 .byte 15,88,211 // addps %xmm3,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040021056 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040021057 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Herb Derby7b4202d2017-04-10 10:52:34 -040021058 .byte 243,68,15,16,72,28 // movss 0x1c(%rax),%xmm9
Mike Klein8a823fa2017-04-05 17:29:26 -040021059 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
21060 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040021061 .byte 65,15,88,217 // addps %xmm9,%xmm3
21062 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040021063 .byte 255,224 // jmpq *%rax
21064
Mike Klein0a904492017-04-12 12:52:48 -040021065HIDDEN _sk_save_xy_sse41
21066.globl _sk_save_xy_sse41
Mike Klein86714282017-04-13 17:37:38 -040021067FUNCTION(_sk_save_xy_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021068_sk_save_xy_sse41:
21069 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040021070 .byte 68,15,40,5,204,16,0,0 // movaps 0x10cc(%rip),%xmm8 # 46b0 <_sk_callback_sse41+0xd83>
Mike Kleinfe560a82017-05-01 12:56:35 -040021071 .byte 15,17,0 // movups %xmm0,(%rax)
21072 .byte 68,15,40,200 // movaps %xmm0,%xmm9
21073 .byte 69,15,88,200 // addps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040021074 .byte 102,69,15,58,8,209,1 // roundps $0x1,%xmm9,%xmm10
21075 .byte 69,15,92,202 // subps %xmm10,%xmm9
21076 .byte 68,15,88,193 // addps %xmm1,%xmm8
21077 .byte 102,69,15,58,8,208,1 // roundps $0x1,%xmm8,%xmm10
21078 .byte 69,15,92,194 // subps %xmm10,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040021079 .byte 15,17,72,32 // movups %xmm1,0x20(%rax)
21080 .byte 68,15,17,72,64 // movups %xmm9,0x40(%rax)
21081 .byte 68,15,17,64,96 // movups %xmm8,0x60(%rax)
21082 .byte 72,173 // lods %ds:(%rsi),%rax
21083 .byte 255,224 // jmpq *%rax
21084
21085HIDDEN _sk_accumulate_sse41
21086.globl _sk_accumulate_sse41
Mike Klein86714282017-04-13 17:37:38 -040021087FUNCTION(_sk_accumulate_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021088_sk_accumulate_sse41:
21089 .byte 72,173 // lods %ds:(%rsi),%rax
21090 .byte 68,15,16,128,128,0,0,0 // movups 0x80(%rax),%xmm8
21091 .byte 68,15,16,136,160,0,0,0 // movups 0xa0(%rax),%xmm9
21092 .byte 69,15,89,200 // mulps %xmm8,%xmm9
21093 .byte 69,15,40,193 // movaps %xmm9,%xmm8
21094 .byte 68,15,89,192 // mulps %xmm0,%xmm8
21095 .byte 65,15,88,224 // addps %xmm8,%xmm4
21096 .byte 69,15,40,193 // movaps %xmm9,%xmm8
21097 .byte 68,15,89,193 // mulps %xmm1,%xmm8
21098 .byte 65,15,88,232 // addps %xmm8,%xmm5
21099 .byte 69,15,40,193 // movaps %xmm9,%xmm8
21100 .byte 68,15,89,194 // mulps %xmm2,%xmm8
21101 .byte 65,15,88,240 // addps %xmm8,%xmm6
21102 .byte 68,15,89,203 // mulps %xmm3,%xmm9
21103 .byte 65,15,88,249 // addps %xmm9,%xmm7
21104 .byte 72,173 // lods %ds:(%rsi),%rax
21105 .byte 255,224 // jmpq *%rax
21106
21107HIDDEN _sk_bilinear_nx_sse41
21108.globl _sk_bilinear_nx_sse41
Mike Klein86714282017-04-13 17:37:38 -040021109FUNCTION(_sk_bilinear_nx_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021110_sk_bilinear_nx_sse41:
21111 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040021112 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021113 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021114 .byte 15,88,5,78,16,0,0 // addps 0x104e(%rip),%xmm0 # 46c0 <_sk_callback_sse41+0xd93>
21115 .byte 68,15,40,13,86,16,0,0 // movaps 0x1056(%rip),%xmm9 # 46d0 <_sk_callback_sse41+0xda3>
Mike Kleinfe560a82017-05-01 12:56:35 -040021116 .byte 69,15,92,200 // subps %xmm8,%xmm9
21117 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040021118 .byte 72,173 // lods %ds:(%rsi),%rax
21119 .byte 255,224 // jmpq *%rax
21120
21121HIDDEN _sk_bilinear_px_sse41
21122.globl _sk_bilinear_px_sse41
Mike Klein86714282017-04-13 17:37:38 -040021123FUNCTION(_sk_bilinear_px_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021124_sk_bilinear_px_sse41:
21125 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040021126 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021127 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021128 .byte 15,88,5,69,16,0,0 // addps 0x1045(%rip),%xmm0 # 46e0 <_sk_callback_sse41+0xdb3>
Mike Kleinfe560a82017-05-01 12:56:35 -040021129 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040021130 .byte 72,173 // lods %ds:(%rsi),%rax
21131 .byte 255,224 // jmpq *%rax
21132
21133HIDDEN _sk_bilinear_ny_sse41
21134.globl _sk_bilinear_ny_sse41
Mike Klein86714282017-04-13 17:37:38 -040021135FUNCTION(_sk_bilinear_ny_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021136_sk_bilinear_ny_sse41:
21137 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040021138 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040021139 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021140 .byte 15,88,13,55,16,0,0 // addps 0x1037(%rip),%xmm1 # 46f0 <_sk_callback_sse41+0xdc3>
21141 .byte 68,15,40,13,63,16,0,0 // movaps 0x103f(%rip),%xmm9 # 4700 <_sk_callback_sse41+0xdd3>
Mike Kleinfe560a82017-05-01 12:56:35 -040021142 .byte 69,15,92,200 // subps %xmm8,%xmm9
21143 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040021144 .byte 72,173 // lods %ds:(%rsi),%rax
21145 .byte 255,224 // jmpq *%rax
21146
21147HIDDEN _sk_bilinear_py_sse41
21148.globl _sk_bilinear_py_sse41
Mike Klein86714282017-04-13 17:37:38 -040021149FUNCTION(_sk_bilinear_py_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021150_sk_bilinear_py_sse41:
21151 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040021152 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040021153 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021154 .byte 15,88,13,45,16,0,0 // addps 0x102d(%rip),%xmm1 # 4710 <_sk_callback_sse41+0xde3>
Mike Kleinfe560a82017-05-01 12:56:35 -040021155 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040021156 .byte 72,173 // lods %ds:(%rsi),%rax
21157 .byte 255,224 // jmpq *%rax
21158
21159HIDDEN _sk_bicubic_n3x_sse41
21160.globl _sk_bicubic_n3x_sse41
Mike Klein86714282017-04-13 17:37:38 -040021161FUNCTION(_sk_bicubic_n3x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021162_sk_bicubic_n3x_sse41:
21163 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040021164 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021165 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021166 .byte 15,88,5,32,16,0,0 // addps 0x1020(%rip),%xmm0 # 4720 <_sk_callback_sse41+0xdf3>
21167 .byte 68,15,40,13,40,16,0,0 // movaps 0x1028(%rip),%xmm9 # 4730 <_sk_callback_sse41+0xe03>
Mike Kleinfe560a82017-05-01 12:56:35 -040021168 .byte 69,15,92,200 // subps %xmm8,%xmm9
21169 .byte 69,15,40,193 // movaps %xmm9,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040021170 .byte 69,15,89,192 // mulps %xmm8,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021171 .byte 68,15,89,13,36,16,0,0 // mulps 0x1024(%rip),%xmm9 # 4740 <_sk_callback_sse41+0xe13>
21172 .byte 68,15,88,13,44,16,0,0 // addps 0x102c(%rip),%xmm9 # 4750 <_sk_callback_sse41+0xe23>
Mike Klein0a904492017-04-12 12:52:48 -040021173 .byte 69,15,89,200 // mulps %xmm8,%xmm9
21174 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
21175 .byte 72,173 // lods %ds:(%rsi),%rax
21176 .byte 255,224 // jmpq *%rax
21177
21178HIDDEN _sk_bicubic_n1x_sse41
21179.globl _sk_bicubic_n1x_sse41
Mike Klein86714282017-04-13 17:37:38 -040021180FUNCTION(_sk_bicubic_n1x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021181_sk_bicubic_n1x_sse41:
21182 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040021183 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021184 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021185 .byte 15,88,5,27,16,0,0 // addps 0x101b(%rip),%xmm0 # 4760 <_sk_callback_sse41+0xe33>
21186 .byte 68,15,40,13,35,16,0,0 // movaps 0x1023(%rip),%xmm9 # 4770 <_sk_callback_sse41+0xe43>
Mike Kleinfe560a82017-05-01 12:56:35 -040021187 .byte 69,15,92,200 // subps %xmm8,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040021188 .byte 68,15,40,5,39,16,0,0 // movaps 0x1027(%rip),%xmm8 # 4780 <_sk_callback_sse41+0xe53>
Mike Kleinfe560a82017-05-01 12:56:35 -040021189 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021190 .byte 68,15,88,5,43,16,0,0 // addps 0x102b(%rip),%xmm8 # 4790 <_sk_callback_sse41+0xe63>
Mike Kleinfe560a82017-05-01 12:56:35 -040021191 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021192 .byte 68,15,88,5,47,16,0,0 // addps 0x102f(%rip),%xmm8 # 47a0 <_sk_callback_sse41+0xe73>
Mike Kleinfe560a82017-05-01 12:56:35 -040021193 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021194 .byte 68,15,88,5,51,16,0,0 // addps 0x1033(%rip),%xmm8 # 47b0 <_sk_callback_sse41+0xe83>
Mike Kleinfe560a82017-05-01 12:56:35 -040021195 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040021196 .byte 72,173 // lods %ds:(%rsi),%rax
21197 .byte 255,224 // jmpq *%rax
21198
21199HIDDEN _sk_bicubic_p1x_sse41
21200.globl _sk_bicubic_p1x_sse41
Mike Klein86714282017-04-13 17:37:38 -040021201FUNCTION(_sk_bicubic_p1x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021202_sk_bicubic_p1x_sse41:
21203 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040021204 .byte 68,15,40,5,45,16,0,0 // movaps 0x102d(%rip),%xmm8 # 47c0 <_sk_callback_sse41+0xe93>
Mike Klein0a904492017-04-12 12:52:48 -040021205 .byte 15,16,0 // movups (%rax),%xmm0
21206 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
21207 .byte 65,15,88,192 // addps %xmm8,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040021208 .byte 68,15,40,21,41,16,0,0 // movaps 0x1029(%rip),%xmm10 # 47d0 <_sk_callback_sse41+0xea3>
Mike Klein0a904492017-04-12 12:52:48 -040021209 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040021210 .byte 68,15,88,21,45,16,0,0 // addps 0x102d(%rip),%xmm10 # 47e0 <_sk_callback_sse41+0xeb3>
Mike Klein0a904492017-04-12 12:52:48 -040021211 .byte 69,15,89,209 // mulps %xmm9,%xmm10
21212 .byte 69,15,88,208 // addps %xmm8,%xmm10
Mike Klein0a904492017-04-12 12:52:48 -040021213 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040021214 .byte 68,15,88,21,41,16,0,0 // addps 0x1029(%rip),%xmm10 # 47f0 <_sk_callback_sse41+0xec3>
Mike Klein0a904492017-04-12 12:52:48 -040021215 .byte 68,15,17,144,128,0,0,0 // movups %xmm10,0x80(%rax)
21216 .byte 72,173 // lods %ds:(%rsi),%rax
21217 .byte 255,224 // jmpq *%rax
21218
21219HIDDEN _sk_bicubic_p3x_sse41
21220.globl _sk_bicubic_p3x_sse41
Mike Klein86714282017-04-13 17:37:38 -040021221FUNCTION(_sk_bicubic_p3x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021222_sk_bicubic_p3x_sse41:
21223 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040021224 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021225 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021226 .byte 15,88,5,28,16,0,0 // addps 0x101c(%rip),%xmm0 # 4800 <_sk_callback_sse41+0xed3>
Mike Kleinfe560a82017-05-01 12:56:35 -040021227 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040021228 .byte 69,15,89,201 // mulps %xmm9,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040021229 .byte 68,15,89,5,28,16,0,0 // mulps 0x101c(%rip),%xmm8 # 4810 <_sk_callback_sse41+0xee3>
21230 .byte 68,15,88,5,36,16,0,0 // addps 0x1024(%rip),%xmm8 # 4820 <_sk_callback_sse41+0xef3>
Mike Klein0a904492017-04-12 12:52:48 -040021231 .byte 69,15,89,193 // mulps %xmm9,%xmm8
21232 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
21233 .byte 72,173 // lods %ds:(%rsi),%rax
21234 .byte 255,224 // jmpq *%rax
21235
21236HIDDEN _sk_bicubic_n3y_sse41
21237.globl _sk_bicubic_n3y_sse41
Mike Klein86714282017-04-13 17:37:38 -040021238FUNCTION(_sk_bicubic_n3y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021239_sk_bicubic_n3y_sse41:
21240 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040021241 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040021242 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021243 .byte 15,88,13,18,16,0,0 // addps 0x1012(%rip),%xmm1 # 4830 <_sk_callback_sse41+0xf03>
21244 .byte 68,15,40,13,26,16,0,0 // movaps 0x101a(%rip),%xmm9 # 4840 <_sk_callback_sse41+0xf13>
Mike Kleinfe560a82017-05-01 12:56:35 -040021245 .byte 69,15,92,200 // subps %xmm8,%xmm9
21246 .byte 69,15,40,193 // movaps %xmm9,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040021247 .byte 69,15,89,192 // mulps %xmm8,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021248 .byte 68,15,89,13,22,16,0,0 // mulps 0x1016(%rip),%xmm9 # 4850 <_sk_callback_sse41+0xf23>
21249 .byte 68,15,88,13,30,16,0,0 // addps 0x101e(%rip),%xmm9 # 4860 <_sk_callback_sse41+0xf33>
Mike Klein0a904492017-04-12 12:52:48 -040021250 .byte 69,15,89,200 // mulps %xmm8,%xmm9
21251 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
21252 .byte 72,173 // lods %ds:(%rsi),%rax
21253 .byte 255,224 // jmpq *%rax
21254
21255HIDDEN _sk_bicubic_n1y_sse41
21256.globl _sk_bicubic_n1y_sse41
Mike Klein86714282017-04-13 17:37:38 -040021257FUNCTION(_sk_bicubic_n1y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021258_sk_bicubic_n1y_sse41:
21259 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040021260 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040021261 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021262 .byte 15,88,13,12,16,0,0 // addps 0x100c(%rip),%xmm1 # 4870 <_sk_callback_sse41+0xf43>
21263 .byte 68,15,40,13,20,16,0,0 // movaps 0x1014(%rip),%xmm9 # 4880 <_sk_callback_sse41+0xf53>
Mike Kleinfe560a82017-05-01 12:56:35 -040021264 .byte 69,15,92,200 // subps %xmm8,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040021265 .byte 68,15,40,5,24,16,0,0 // movaps 0x1018(%rip),%xmm8 # 4890 <_sk_callback_sse41+0xf63>
Mike Kleinfe560a82017-05-01 12:56:35 -040021266 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021267 .byte 68,15,88,5,28,16,0,0 // addps 0x101c(%rip),%xmm8 # 48a0 <_sk_callback_sse41+0xf73>
Mike Kleinfe560a82017-05-01 12:56:35 -040021268 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021269 .byte 68,15,88,5,32,16,0,0 // addps 0x1020(%rip),%xmm8 # 48b0 <_sk_callback_sse41+0xf83>
Mike Kleinfe560a82017-05-01 12:56:35 -040021270 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021271 .byte 68,15,88,5,36,16,0,0 // addps 0x1024(%rip),%xmm8 # 48c0 <_sk_callback_sse41+0xf93>
Mike Kleinfe560a82017-05-01 12:56:35 -040021272 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040021273 .byte 72,173 // lods %ds:(%rsi),%rax
21274 .byte 255,224 // jmpq *%rax
21275
21276HIDDEN _sk_bicubic_p1y_sse41
21277.globl _sk_bicubic_p1y_sse41
Mike Klein86714282017-04-13 17:37:38 -040021278FUNCTION(_sk_bicubic_p1y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021279_sk_bicubic_p1y_sse41:
21280 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040021281 .byte 68,15,40,5,30,16,0,0 // movaps 0x101e(%rip),%xmm8 # 48d0 <_sk_callback_sse41+0xfa3>
Mike Klein0a904492017-04-12 12:52:48 -040021282 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
21283 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
21284 .byte 65,15,88,200 // addps %xmm8,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040021285 .byte 68,15,40,21,25,16,0,0 // movaps 0x1019(%rip),%xmm10 # 48e0 <_sk_callback_sse41+0xfb3>
Mike Klein0a904492017-04-12 12:52:48 -040021286 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040021287 .byte 68,15,88,21,29,16,0,0 // addps 0x101d(%rip),%xmm10 # 48f0 <_sk_callback_sse41+0xfc3>
Mike Klein0a904492017-04-12 12:52:48 -040021288 .byte 69,15,89,209 // mulps %xmm9,%xmm10
21289 .byte 69,15,88,208 // addps %xmm8,%xmm10
Mike Klein0a904492017-04-12 12:52:48 -040021290 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Kleinb3665f02017-05-01 14:56:04 -040021291 .byte 68,15,88,21,25,16,0,0 // addps 0x1019(%rip),%xmm10 # 4900 <_sk_callback_sse41+0xfd3>
Mike Klein0a904492017-04-12 12:52:48 -040021292 .byte 68,15,17,144,160,0,0,0 // movups %xmm10,0xa0(%rax)
21293 .byte 72,173 // lods %ds:(%rsi),%rax
21294 .byte 255,224 // jmpq *%rax
21295
21296HIDDEN _sk_bicubic_p3y_sse41
21297.globl _sk_bicubic_p3y_sse41
Mike Klein86714282017-04-13 17:37:38 -040021298FUNCTION(_sk_bicubic_p3y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021299_sk_bicubic_p3y_sse41:
21300 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040021301 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040021302 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040021303 .byte 15,88,13,11,16,0,0 // addps 0x100b(%rip),%xmm1 # 4910 <_sk_callback_sse41+0xfe3>
Mike Kleinfe560a82017-05-01 12:56:35 -040021304 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040021305 .byte 69,15,89,201 // mulps %xmm9,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040021306 .byte 68,15,89,5,11,16,0,0 // mulps 0x100b(%rip),%xmm8 # 4920 <_sk_callback_sse41+0xff3>
21307 .byte 68,15,88,5,19,16,0,0 // addps 0x1013(%rip),%xmm8 # 4930 <_sk_callback_sse41+0x1003>
Mike Klein0a904492017-04-12 12:52:48 -040021308 .byte 69,15,89,193 // mulps %xmm9,%xmm8
21309 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
21310 .byte 72,173 // lods %ds:(%rsi),%rax
21311 .byte 255,224 // jmpq *%rax
21312
Mike Klein7fee90c2017-04-07 16:55:09 -040021313HIDDEN _sk_callback_sse41
21314.globl _sk_callback_sse41
21315FUNCTION(_sk_callback_sse41)
21316_sk_callback_sse41:
21317 .byte 65,87 // push %r15
21318 .byte 65,86 // push %r14
Mike Kleinc17dc242017-04-20 16:21:57 -040021319 .byte 65,84 // push %r12
Mike Klein7fee90c2017-04-07 16:55:09 -040021320 .byte 83 // push %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040021321 .byte 72,131,236,72 // sub $0x48,%rsp
21322 .byte 15,41,124,36,48 // movaps %xmm7,0x30(%rsp)
21323 .byte 15,41,116,36,32 // movaps %xmm6,0x20(%rsp)
21324 .byte 15,41,108,36,16 // movaps %xmm5,0x10(%rsp)
21325 .byte 15,41,36,36 // movaps %xmm4,(%rsp)
Mike Klein7fee90c2017-04-07 16:55:09 -040021326 .byte 73,137,214 // mov %rdx,%r14
21327 .byte 73,137,255 // mov %rdi,%r15
21328 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinc17dc242017-04-20 16:21:57 -040021329 .byte 72,137,195 // mov %rax,%rbx
21330 .byte 73,137,244 // mov %rsi,%r12
21331 .byte 15,40,224 // movaps %xmm0,%xmm4
21332 .byte 15,20,225 // unpcklps %xmm1,%xmm4
21333 .byte 15,40,234 // movaps %xmm2,%xmm5
21334 .byte 15,20,235 // unpcklps %xmm3,%xmm5
21335 .byte 15,21,193 // unpckhps %xmm1,%xmm0
21336 .byte 15,21,211 // unpckhps %xmm3,%xmm2
21337 .byte 15,40,204 // movaps %xmm4,%xmm1
21338 .byte 102,15,20,205 // unpcklpd %xmm5,%xmm1
21339 .byte 15,18,236 // movhlps %xmm4,%xmm5
21340 .byte 15,40,216 // movaps %xmm0,%xmm3
21341 .byte 102,15,20,218 // unpcklpd %xmm2,%xmm3
21342 .byte 15,18,208 // movhlps %xmm0,%xmm2
21343 .byte 102,15,17,75,8 // movupd %xmm1,0x8(%rbx)
21344 .byte 15,17,107,24 // movups %xmm5,0x18(%rbx)
21345 .byte 102,15,17,91,40 // movupd %xmm3,0x28(%rbx)
21346 .byte 15,17,83,56 // movups %xmm2,0x38(%rbx)
Mike Klein7fee90c2017-04-07 16:55:09 -040021347 .byte 190,4,0,0,0 // mov $0x4,%esi
Mike Kleinc17dc242017-04-20 16:21:57 -040021348 .byte 72,137,223 // mov %rbx,%rdi
21349 .byte 255,19 // callq *(%rbx)
21350 .byte 72,139,131,136,0,0,0 // mov 0x88(%rbx),%rax
21351 .byte 15,16,32 // movups (%rax),%xmm4
21352 .byte 15,16,64,16 // movups 0x10(%rax),%xmm0
21353 .byte 15,16,88,32 // movups 0x20(%rax),%xmm3
21354 .byte 15,16,80,48 // movups 0x30(%rax),%xmm2
21355 .byte 15,40,236 // movaps %xmm4,%xmm5
21356 .byte 15,20,232 // unpcklps %xmm0,%xmm5
21357 .byte 15,40,203 // movaps %xmm3,%xmm1
21358 .byte 15,20,202 // unpcklps %xmm2,%xmm1
21359 .byte 15,21,224 // unpckhps %xmm0,%xmm4
21360 .byte 15,21,218 // unpckhps %xmm2,%xmm3
21361 .byte 15,40,197 // movaps %xmm5,%xmm0
21362 .byte 102,15,20,193 // unpcklpd %xmm1,%xmm0
21363 .byte 15,18,205 // movhlps %xmm5,%xmm1
21364 .byte 15,40,212 // movaps %xmm4,%xmm2
21365 .byte 102,15,20,211 // unpcklpd %xmm3,%xmm2
21366 .byte 15,18,220 // movhlps %xmm4,%xmm3
21367 .byte 76,137,230 // mov %r12,%rsi
Mike Klein7fee90c2017-04-07 16:55:09 -040021368 .byte 72,173 // lods %ds:(%rsi),%rax
21369 .byte 76,137,255 // mov %r15,%rdi
21370 .byte 76,137,242 // mov %r14,%rdx
Mike Kleinc17dc242017-04-20 16:21:57 -040021371 .byte 15,40,36,36 // movaps (%rsp),%xmm4
21372 .byte 15,40,108,36,16 // movaps 0x10(%rsp),%xmm5
21373 .byte 15,40,116,36,32 // movaps 0x20(%rsp),%xmm6
21374 .byte 15,40,124,36,48 // movaps 0x30(%rsp),%xmm7
21375 .byte 72,131,196,72 // add $0x48,%rsp
Mike Klein7fee90c2017-04-07 16:55:09 -040021376 .byte 91 // pop %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040021377 .byte 65,92 // pop %r12
Mike Klein7fee90c2017-04-07 16:55:09 -040021378 .byte 65,94 // pop %r14
21379 .byte 65,95 // pop %r15
21380 .byte 255,224 // jmpq *%rax
21381
Mike Klein2229b572017-04-21 10:30:29 -040021382BALIGN16
21383 .byte 0,0 // add %al,(%rax)
21384 .byte 0,63 // add %bh,(%rdi)
21385 .byte 0,0 // add %al,(%rax)
21386 .byte 0,63 // add %bh,(%rdi)
21387 .byte 0,0 // add %al,(%rax)
21388 .byte 0,63 // add %bh,(%rdi)
21389 .byte 0,0 // add %al,(%rax)
21390 .byte 0,63 // add %bh,(%rdi)
21391 .byte 0,0 // add %al,(%rax)
21392 .byte 128,63,0 // cmpb $0x0,(%rdi)
21393 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21394 .byte 63 // (bad)
21395 .byte 0,0 // add %al,(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040021396 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040021397 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21398 .byte 63 // (bad)
21399 .byte 0,0 // add %al,(%rax)
21400 .byte 128,63,0 // cmpb $0x0,(%rdi)
21401 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21402 .byte 63 // (bad)
21403 .byte 0,0 // add %al,(%rax)
21404 .byte 128,63,0 // cmpb $0x0,(%rdi)
21405 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21406 .byte 63 // (bad)
21407 .byte 0,0 // add %al,(%rax)
21408 .byte 128,63,0 // cmpb $0x0,(%rdi)
21409 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21410 .byte 63 // (bad)
21411 .byte 0,0 // add %al,(%rax)
21412 .byte 128,63,0 // cmpb $0x0,(%rdi)
21413 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21414 .byte 63 // (bad)
21415 .byte 0,0 // add %al,(%rax)
21416 .byte 128,63,0 // cmpb $0x0,(%rdi)
21417 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21418 .byte 63 // (bad)
21419 .byte 0,0 // add %al,(%rax)
21420 .byte 128,63,0 // cmpb $0x0,(%rdi)
21421 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21422 .byte 63 // (bad)
21423 .byte 0,0 // add %al,(%rax)
21424 .byte 128,63,0 // cmpb $0x0,(%rdi)
21425 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21426 .byte 63 // (bad)
21427 .byte 0,0 // add %al,(%rax)
21428 .byte 128,63,0 // cmpb $0x0,(%rdi)
21429 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21430 .byte 63 // (bad)
21431 .byte 0,0 // add %al,(%rax)
21432 .byte 128,63,0 // cmpb $0x0,(%rdi)
21433 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21434 .byte 63 // (bad)
21435 .byte 0,0 // add %al,(%rax)
21436 .byte 128,63,0 // cmpb $0x0,(%rdi)
21437 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21438 .byte 63 // (bad)
21439 .byte 0,0 // add %al,(%rax)
21440 .byte 128,63,0 // cmpb $0x0,(%rdi)
21441 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21442 .byte 63 // (bad)
21443 .byte 0,0 // add %al,(%rax)
21444 .byte 128,63,0 // cmpb $0x0,(%rdi)
21445 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21446 .byte 63 // (bad)
21447 .byte 0,0 // add %al,(%rax)
21448 .byte 128,63,0 // cmpb $0x0,(%rdi)
21449 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21450 .byte 63 // (bad)
21451 .byte 0,0 // add %al,(%rax)
21452 .byte 128,63,0 // cmpb $0x0,(%rdi)
21453 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21454 .byte 63 // (bad)
21455 .byte 0,0 // add %al,(%rax)
21456 .byte 128,63,0 // cmpb $0x0,(%rdi)
21457 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21458 .byte 63 // (bad)
21459 .byte 0,0 // add %al,(%rax)
21460 .byte 128,63,0 // cmpb $0x0,(%rdi)
21461 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21462 .byte 63 // (bad)
21463 .byte 0,0 // add %al,(%rax)
21464 .byte 128,63,0 // cmpb $0x0,(%rdi)
21465 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21466 .byte 63 // (bad)
21467 .byte 0,0 // add %al,(%rax)
21468 .byte 128,63,0 // cmpb $0x0,(%rdi)
21469 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21470 .byte 63 // (bad)
21471 .byte 0,0 // add %al,(%rax)
21472 .byte 128,63,0 // cmpb $0x0,(%rdi)
21473 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21474 .byte 63 // (bad)
21475 .byte 0,0 // add %al,(%rax)
21476 .byte 128,63,0 // cmpb $0x0,(%rdi)
21477 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21478 .byte 63 // (bad)
21479 .byte 0,0 // add %al,(%rax)
21480 .byte 128,63,0 // cmpb $0x0,(%rdi)
21481 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21482 .byte 63 // (bad)
21483 .byte 0,0 // add %al,(%rax)
21484 .byte 128,63,0 // cmpb $0x0,(%rdi)
21485 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21486 .byte 63 // (bad)
21487 .byte 0,0 // add %al,(%rax)
21488 .byte 128,191,0,0,128,191,0 // cmpb $0x0,-0x40800000(%rdi)
21489 .byte 0,128,191,0,0,128 // add %al,-0x7fffff41(%rax)
21490 .byte 191,0,0,224,64 // mov $0x40e00000,%edi
21491 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040021492 .byte 224,64 // loopne 3b98 <.literal16+0x188>
Mike Kleinfe560a82017-05-01 12:56:35 -040021493 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040021494 .byte 224,64 // loopne 3b9c <.literal16+0x18c>
Mike Kleinfe560a82017-05-01 12:56:35 -040021495 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040021496 .byte 224,64 // loopne 3ba0 <.literal16+0x190>
Mike Kleinfe560a82017-05-01 12:56:35 -040021497 .byte 0,0 // add %al,(%rax)
21498 .byte 128,63,0 // cmpb $0x0,(%rdi)
21499 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21500 .byte 63 // (bad)
21501 .byte 0,0 // add %al,(%rax)
21502 .byte 128,63,0 // cmpb $0x0,(%rdi)
21503 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21504 .byte 63 // (bad)
21505 .byte 0,0 // add %al,(%rax)
21506 .byte 128,63,0 // cmpb $0x0,(%rdi)
21507 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21508 .byte 63 // (bad)
21509 .byte 0,0 // add %al,(%rax)
21510 .byte 128,63,0 // cmpb $0x0,(%rdi)
21511 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21512 .byte 63 // (bad)
21513 .byte 145 // xchg %eax,%ecx
21514 .byte 131,158,61,145,131,158,61 // sbbl $0x3d,-0x617c6ec3(%rsi)
21515 .byte 145 // xchg %eax,%ecx
21516 .byte 131,158,61,145,131,158,61 // sbbl $0x3d,-0x617c6ec3(%rsi)
21517 .byte 154 // (bad)
21518 .byte 153 // cltd
21519 .byte 153 // cltd
21520 .byte 62,154 // ds (bad)
21521 .byte 153 // cltd
21522 .byte 153 // cltd
21523 .byte 62,154 // ds (bad)
21524 .byte 153 // cltd
21525 .byte 153 // cltd
21526 .byte 62,154 // ds (bad)
21527 .byte 153 // cltd
21528 .byte 153 // cltd
21529 .byte 62,92 // ds pop %rsp
21530 .byte 143 // (bad)
21531 .byte 50,63 // xor (%rdi),%bh
21532 .byte 92 // pop %rsp
21533 .byte 143 // (bad)
21534 .byte 50,63 // xor (%rdi),%bh
21535 .byte 92 // pop %rsp
21536 .byte 143 // (bad)
21537 .byte 50,63 // xor (%rdi),%bh
21538 .byte 92 // pop %rsp
21539 .byte 143 // (bad)
21540 .byte 50,63 // xor (%rdi),%bh
21541 .byte 10,215 // or %bh,%dl
21542 .byte 35,59 // and (%rbx),%edi
21543 .byte 10,215 // or %bh,%dl
21544 .byte 35,59 // and (%rbx),%edi
21545 .byte 10,215 // or %bh,%dl
21546 .byte 35,59 // and (%rbx),%edi
21547 .byte 10,215 // or %bh,%dl
21548 .byte 35,59 // and (%rbx),%edi
21549 .byte 174 // scas %es:(%rdi),%al
21550 .byte 71,97 // rex.RXB (bad)
21551 .byte 61,174,71,97,61 // cmp $0x3d6147ae,%eax
21552 .byte 174 // scas %es:(%rdi),%al
21553 .byte 71,97 // rex.RXB (bad)
21554 .byte 61,174,71,97,61 // cmp $0x3d6147ae,%eax
21555 .byte 41,92,71,65 // sub %ebx,0x41(%rdi,%rax,2)
21556 .byte 41,92,71,65 // sub %ebx,0x41(%rdi,%rax,2)
21557 .byte 41,92,71,65 // sub %ebx,0x41(%rdi,%rax,2)
21558 .byte 41,92,71,65 // sub %ebx,0x41(%rdi,%rax,2)
21559 .byte 206 // (bad)
21560 .byte 111 // outsl %ds:(%rsi),(%dx)
21561 .byte 48,63 // xor %bh,(%rdi)
21562 .byte 206 // (bad)
21563 .byte 111 // outsl %ds:(%rsi),(%dx)
21564 .byte 48,63 // xor %bh,(%rdi)
21565 .byte 206 // (bad)
21566 .byte 111 // outsl %ds:(%rsi),(%dx)
21567 .byte 48,63 // xor %bh,(%rdi)
21568 .byte 206 // (bad)
21569 .byte 111 // outsl %ds:(%rsi),(%dx)
21570 .byte 48,63 // xor %bh,(%rdi)
21571 .byte 168,87 // test $0x57,%al
21572 .byte 202,189,168 // lret $0xa8bd
21573 .byte 87 // push %rdi
21574 .byte 202,189,168 // lret $0xa8bd
21575 .byte 87 // push %rdi
21576 .byte 202,189,168 // lret $0xa8bd
21577 .byte 87 // push %rdi
21578 .byte 202,189,194 // lret $0xc2bd
21579 .byte 135,210 // xchg %edx,%edx
21580 .byte 62,194,135,210 // ds retq $0xd287
21581 .byte 62,194,135,210 // ds retq $0xd287
21582 .byte 62,194,135,210 // ds retq $0xd287
21583 .byte 62,0,0 // add %al,%ds:(%rax)
21584 .byte 128,63,0 // cmpb $0x0,(%rdi)
21585 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21586 .byte 63 // (bad)
21587 .byte 0,0 // add %al,(%rax)
21588 .byte 128,63,4 // cmpb $0x4,(%rdi)
21589 .byte 231,140 // out %eax,$0x8c
21590 .byte 59,4,231 // cmp (%rdi,%riz,8),%eax
21591 .byte 140,59 // mov %?,(%rbx)
21592 .byte 4,231 // add $0xe7,%al
21593 .byte 140,59 // mov %?,(%rbx)
21594 .byte 4,231 // add $0xe7,%al
21595 .byte 140,59 // mov %?,(%rbx)
21596 .byte 0,0 // add %al,(%rax)
21597 .byte 128,63,0 // cmpb $0x0,(%rdi)
21598 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21599 .byte 63 // (bad)
21600 .byte 0,0 // add %al,(%rax)
21601 .byte 128,63,0 // cmpb $0x0,(%rdi)
21602 .byte 0,192 // add %al,%al
21603 .byte 64,0,0 // add %al,(%rax)
21604 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
21605 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
21606 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
21607 .byte 0,64,0 // add %al,0x0(%rax)
21608 .byte 0,0 // add %al,(%rax)
21609 .byte 64,0,0 // add %al,(%rax)
21610 .byte 0,64,0 // add %al,0x0(%rax)
21611 .byte 0,0 // add %al,(%rax)
21612 .byte 64,0,0 // add %al,(%rax)
21613 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
21614 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
21615 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
21616 .byte 128,64,171,170 // addb $0xaa,-0x55(%rax)
21617 .byte 42,62 // sub (%rsi),%bh
21618 .byte 171 // stos %eax,%es:(%rdi)
21619 .byte 170 // stos %al,%es:(%rdi)
21620 .byte 42,62 // sub (%rsi),%bh
21621 .byte 171 // stos %eax,%es:(%rdi)
21622 .byte 170 // stos %al,%es:(%rdi)
21623 .byte 42,62 // sub (%rsi),%bh
21624 .byte 171 // stos %eax,%es:(%rdi)
21625 .byte 170 // stos %al,%es:(%rdi)
21626 .byte 42,62 // sub (%rsi),%bh
21627 .byte 0,0 // add %al,(%rax)
21628 .byte 0,63 // add %bh,(%rdi)
21629 .byte 0,0 // add %al,(%rax)
21630 .byte 0,63 // add %bh,(%rdi)
21631 .byte 0,0 // add %al,(%rax)
21632 .byte 0,63 // add %bh,(%rdi)
21633 .byte 0,0 // add %al,(%rax)
21634 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040021635 .byte 0,0 // add %al,(%rax)
21636 .byte 128,63,0 // cmpb $0x0,(%rdi)
21637 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21638 .byte 63 // (bad)
21639 .byte 0,0 // add %al,(%rax)
21640 .byte 128,63,171 // cmpb $0xab,(%rdi)
21641 .byte 170 // stos %al,%es:(%rdi)
21642 .byte 170 // stos %al,%es:(%rdi)
21643 .byte 62,171 // ds stos %eax,%es:(%rdi)
21644 .byte 170 // stos %al,%es:(%rdi)
21645 .byte 170 // stos %al,%es:(%rdi)
21646 .byte 62,171 // ds stos %eax,%es:(%rdi)
21647 .byte 170 // stos %al,%es:(%rdi)
21648 .byte 170 // stos %al,%es:(%rdi)
21649 .byte 62,171 // ds stos %eax,%es:(%rdi)
21650 .byte 170 // stos %al,%es:(%rdi)
21651 .byte 170 // stos %al,%es:(%rdi)
21652 .byte 62,0,0 // add %al,%ds:(%rax)
21653 .byte 128,191,0,0,128,191,0 // cmpb $0x0,-0x40800000(%rdi)
21654 .byte 0,128,191,0,0,128 // add %al,-0x7fffff41(%rax)
21655 .byte 191,0,0,192,64 // mov $0x40c00000,%edi
21656 .byte 0,0 // add %al,(%rax)
21657 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
21658 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
21659 .byte 192,64,171,170 // rolb $0xaa,-0x55(%rax)
21660 .byte 42,63 // sub (%rdi),%bh
21661 .byte 171 // stos %eax,%es:(%rdi)
21662 .byte 170 // stos %al,%es:(%rdi)
21663 .byte 42,63 // sub (%rdi),%bh
21664 .byte 171 // stos %eax,%es:(%rdi)
21665 .byte 170 // stos %al,%es:(%rdi)
21666 .byte 42,63 // sub (%rdi),%bh
21667 .byte 171 // stos %eax,%es:(%rdi)
21668 .byte 170 // stos %al,%es:(%rdi)
21669 .byte 42,63 // sub (%rdi),%bh
21670 .byte 171 // stos %eax,%es:(%rdi)
21671 .byte 170 // stos %al,%es:(%rdi)
21672 .byte 170 // stos %al,%es:(%rdi)
21673 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
21674 .byte 171 // stos %eax,%es:(%rdi)
21675 .byte 170 // stos %al,%es:(%rdi)
21676 .byte 170 // stos %al,%es:(%rdi)
21677 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
Mike Kleinfe560a82017-05-01 12:56:35 -040021678 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
21679 .byte 128,59,129 // cmpb $0x81,(%rbx)
21680 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
21681 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
21682 .byte 128,59,0 // cmpb $0x0,(%rbx)
Mike Klein308e6242017-04-27 13:56:33 -040021683 .byte 248 // clc
21684 .byte 0,0 // add %al,(%rax)
21685 .byte 0,248 // add %bh,%al
21686 .byte 0,0 // add %al,(%rax)
21687 .byte 0,248 // add %bh,%al
21688 .byte 0,0 // add %al,(%rax)
21689 .byte 0,248 // add %bh,%al
21690 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040021691 .byte 8,33 // or %ah,(%rcx)
21692 .byte 132,55 // test %dh,(%rdi)
21693 .byte 8,33 // or %ah,(%rcx)
21694 .byte 132,55 // test %dh,(%rdi)
21695 .byte 8,33 // or %ah,(%rcx)
21696 .byte 132,55 // test %dh,(%rdi)
21697 .byte 8,33 // or %ah,(%rcx)
21698 .byte 132,55 // test %dh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040021699 .byte 224,7 // loopne 3d49 <.literal16+0x339>
Mike Klein308e6242017-04-27 13:56:33 -040021700 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040021701 .byte 224,7 // loopne 3d4d <.literal16+0x33d>
Mike Klein308e6242017-04-27 13:56:33 -040021702 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040021703 .byte 224,7 // loopne 3d51 <.literal16+0x341>
Mike Klein308e6242017-04-27 13:56:33 -040021704 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040021705 .byte 224,7 // loopne 3d55 <.literal16+0x345>
Mike Klein308e6242017-04-27 13:56:33 -040021706 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040021707 .byte 33,8 // and %ecx,(%rax)
21708 .byte 2,58 // add (%rdx),%bh
21709 .byte 33,8 // and %ecx,(%rax)
21710 .byte 2,58 // add (%rdx),%bh
21711 .byte 33,8 // and %ecx,(%rax)
21712 .byte 2,58 // add (%rdx),%bh
21713 .byte 33,8 // and %ecx,(%rax)
21714 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040021715 .byte 31 // (bad)
21716 .byte 0,0 // add %al,(%rax)
21717 .byte 0,31 // add %bl,(%rdi)
21718 .byte 0,0 // add %al,(%rax)
21719 .byte 0,31 // add %bl,(%rdi)
21720 .byte 0,0 // add %al,(%rax)
21721 .byte 0,31 // add %bl,(%rdi)
21722 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040021723 .byte 0,8 // add %cl,(%rax)
21724 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
21725 .byte 8,33 // or %ah,(%rcx)
21726 .byte 4,61 // add $0x3d,%al
21727 .byte 8,33 // or %ah,(%rcx)
21728 .byte 4,61 // add $0x3d,%al
21729 .byte 0,0 // add %al,(%rax)
21730 .byte 128,63,0 // cmpb $0x0,(%rdi)
21731 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21732 .byte 63 // (bad)
21733 .byte 0,0 // add %al,(%rax)
21734 .byte 128,63,255 // cmpb $0xff,(%rdi)
Mike Kleinb4bbc642017-04-27 08:59:55 -040021735 .byte 0,0 // add %al,(%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040021736 .byte 0,255 // add %bh,%bh
21737 .byte 0,0 // add %al,(%rax)
21738 .byte 0,255 // add %bh,%bh
21739 .byte 0,0 // add %al,(%rax)
21740 .byte 0,255 // add %bh,%bh
21741 .byte 0,0 // add %al,(%rax)
21742 .byte 0,1 // add %al,(%rcx)
21743 .byte 255 // (bad)
21744 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021745 .byte 255,5,255,255,255,9 // incl 0x9ffffff(%rip) # a003da8 <_sk_callback_sse41+0xa00047b>
Mike Klein0aa742f2017-04-27 13:36:57 -040021746 .byte 255 // (bad)
21747 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021748 .byte 255,13,255,255,255,2 // decl 0x2ffffff(%rip) # 3003db0 <_sk_callback_sse41+0x3000483>
Mike Klein0aa742f2017-04-27 13:36:57 -040021749 .byte 255 // (bad)
21750 .byte 255 // (bad)
21751 .byte 255,6 // incl (%rsi)
21752 .byte 255 // (bad)
21753 .byte 255 // (bad)
21754 .byte 255,10 // decl (%rdx)
21755 .byte 255 // (bad)
21756 .byte 255 // (bad)
21757 .byte 255,14 // decl (%rsi)
21758 .byte 255 // (bad)
21759 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040021760 .byte 255,129,128,128,59,129 // incl -0x7ec47f80(%rcx)
21761 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
21762 .byte 129,128,128,59,255,0,255,0,255,0 // addl $0xff00ff,0xff3b80(%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040021763 .byte 255,0 // incl (%rax)
21764 .byte 0,0 // add %al,(%rax)
21765 .byte 0,0 // add %al,(%rax)
21766 .byte 0,0 // add %al,(%rax)
21767 .byte 0,0 // add %al,(%rax)
21768 .byte 8,255 // or %bh,%bh
21769 .byte 10,255 // or %bh,%bh
21770 .byte 12,255 // or $0xff,%al
21771 .byte 14 // (bad)
21772 .byte 255,0 // incl (%rax)
21773 .byte 0,0 // add %al,(%rax)
21774 .byte 0,0 // add %al,(%rax)
21775 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040021776 .byte 0,128,0,128,55,128 // add %al,-0x7fc88000(%rax)
21777 .byte 0,128,55,128,0,128 // add %al,-0x7fff7fc9(%rax)
21778 .byte 55 // (bad)
21779 .byte 128,0,128 // addb $0x80,(%rax)
21780 .byte 55 // (bad)
21781 .byte 255,0 // incl (%rax)
21782 .byte 255,0 // incl (%rax)
21783 .byte 255,0 // incl (%rax)
21784 .byte 255,0 // incl (%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040021785 .byte 0,0 // add %al,(%rax)
21786 .byte 0,0 // add %al,(%rax)
21787 .byte 0,0 // add %al,(%rax)
21788 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040021789 .byte 8,128,10,128,12,128 // or %al,-0x7ff37ff6(%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040021790 .byte 14 // (bad)
21791 .byte 128,0,0 // addb $0x0,(%rax)
21792 .byte 0,0 // add %al,(%rax)
21793 .byte 0,0 // add %al,(%rax)
21794 .byte 0,0 // add %al,(%rax)
21795 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040021796 .byte 128,63,0 // cmpb $0x0,(%rdi)
21797 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21798 .byte 63 // (bad)
21799 .byte 0,0 // add %al,(%rax)
21800 .byte 128,63,0 // cmpb $0x0,(%rdi)
21801 .byte 0,127,67 // add %bh,0x43(%rdi)
21802 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040021803 .byte 127,67 // jg 3e7b <.literal16+0x46b>
Mike Kleinfe560a82017-05-01 12:56:35 -040021804 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040021805 .byte 127,67 // jg 3e7f <.literal16+0x46f>
Mike Kleinfe560a82017-05-01 12:56:35 -040021806 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040021807 .byte 127,67 // jg 3e83 <.literal16+0x473>
Mike Kleinfe560a82017-05-01 12:56:35 -040021808 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
21809 .byte 128,59,129 // cmpb $0x81,(%rbx)
21810 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
21811 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
21812 .byte 128,59,0 // cmpb $0x0,(%rbx)
21813 .byte 0,0 // add %al,(%rax)
21814 .byte 52,0 // xor $0x0,%al
Mike Kleinb4bbc642017-04-27 08:59:55 -040021815 .byte 0,0 // add %al,(%rax)
21816 .byte 52,0 // xor $0x0,%al
21817 .byte 0,0 // add %al,(%rax)
21818 .byte 52,0 // xor $0x0,%al
21819 .byte 0,0 // add %al,(%rax)
21820 .byte 52,255 // xor $0xff,%al
21821 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021822 .byte 127,0 // jg 3e74 <.literal16+0x464>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021823 .byte 255 // (bad)
21824 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021825 .byte 127,0 // jg 3e78 <.literal16+0x468>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021826 .byte 255 // (bad)
21827 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021828 .byte 127,0 // jg 3e7c <.literal16+0x46c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021829 .byte 255 // (bad)
21830 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021831 .byte 127,0 // jg 3e80 <.literal16+0x470>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021832 .byte 0,0 // add %al,(%rax)
21833 .byte 0,63 // add %bh,(%rdi)
21834 .byte 0,0 // add %al,(%rax)
21835 .byte 0,63 // add %bh,(%rdi)
21836 .byte 0,0 // add %al,(%rax)
21837 .byte 0,63 // add %bh,(%rdi)
21838 .byte 0,0 // add %al,(%rax)
21839 .byte 0,63 // add %bh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040021840 .byte 119,115 // ja 3f05 <.literal16+0x4f5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021841 .byte 248 // clc
21842 .byte 194,119,115 // retq $0x7377
21843 .byte 248 // clc
21844 .byte 194,119,115 // retq $0x7377
21845 .byte 248 // clc
21846 .byte 194,119,115 // retq $0x7377
21847 .byte 248 // clc
21848 .byte 194,117,191 // retq $0xbf75
21849 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
Mike Klein2229b572017-04-21 10:30:29 -040021850 .byte 63 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021851 .byte 117,191 // jne 3e69 <.literal16+0x459>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021852 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
21853 .byte 63 // (bad)
21854 .byte 249 // stc
21855 .byte 68,180,62 // rex.R mov $0x3e,%spl
21856 .byte 249 // stc
21857 .byte 68,180,62 // rex.R mov $0x3e,%spl
21858 .byte 249 // stc
21859 .byte 68,180,62 // rex.R mov $0x3e,%spl
21860 .byte 249 // stc
21861 .byte 68,180,62 // rex.R mov $0x3e,%spl
21862 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Kleinb3665f02017-05-01 14:56:04 -040021863 .byte 233,220,63,163,233 // jmpq ffffffffe9a37eaa <_sk_callback_sse41+0xffffffffe9a3457d>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021864 .byte 220,63 // fdivrl (%rdi)
21865 .byte 81 // push %rcx
21866 .byte 140,242 // mov %?,%edx
21867 .byte 66,81 // rex.X push %rcx
21868 .byte 140,242 // mov %?,%edx
21869 .byte 66,81 // rex.X push %rcx
21870 .byte 140,242 // mov %?,%edx
21871 .byte 66,81 // rex.X push %rcx
21872 .byte 140,242 // mov %?,%edx
21873 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
21874 .byte 63 // (bad)
21875 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
21876 .byte 63 // (bad)
21877 .byte 248 // clc
21878 .byte 245 // cmc
21879 .byte 154 // (bad)
21880 .byte 64,248 // rex clc
21881 .byte 245 // cmc
21882 .byte 154 // (bad)
21883 .byte 64,248 // rex clc
21884 .byte 245 // cmc
21885 .byte 154 // (bad)
21886 .byte 64,248 // rex clc
21887 .byte 245 // cmc
21888 .byte 154 // (bad)
21889 .byte 64,254 // rex (bad)
21890 .byte 210,221 // rcr %cl,%ch
21891 .byte 65,254 // rex.B (bad)
21892 .byte 210,221 // rcr %cl,%ch
21893 .byte 65,254 // rex.B (bad)
21894 .byte 210,221 // rcr %cl,%ch
21895 .byte 65,254 // rex.B (bad)
21896 .byte 210,221 // rcr %cl,%ch
21897 .byte 65,0,0 // add %al,(%r8)
21898 .byte 0,75,0 // add %cl,0x0(%rbx)
21899 .byte 0,0 // add %al,(%rax)
21900 .byte 75,0,0 // rex.WXB add %al,(%r8)
21901 .byte 0,75,0 // add %cl,0x0(%rbx)
21902 .byte 0,0 // add %al,(%rax)
21903 .byte 75,0,0 // rex.WXB add %al,(%r8)
Mike Kleinfe560a82017-05-01 12:56:35 -040021904 .byte 128,63,0 // cmpb $0x0,(%rdi)
21905 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
21906 .byte 63 // (bad)
21907 .byte 0,0 // add %al,(%rax)
21908 .byte 128,63,0 // cmpb $0x0,(%rdi)
21909 .byte 0,0 // add %al,(%rax)
21910 .byte 52,0 // xor $0x0,%al
Mike Kleinb4bbc642017-04-27 08:59:55 -040021911 .byte 0,0 // add %al,(%rax)
21912 .byte 52,0 // xor $0x0,%al
21913 .byte 0,0 // add %al,(%rax)
21914 .byte 52,0 // xor $0x0,%al
21915 .byte 0,0 // add %al,(%rax)
21916 .byte 52,255 // xor $0xff,%al
21917 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021918 .byte 127,0 // jg 3f44 <.literal16+0x534>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021919 .byte 255 // (bad)
21920 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021921 .byte 127,0 // jg 3f48 <.literal16+0x538>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021922 .byte 255 // (bad)
21923 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021924 .byte 127,0 // jg 3f4c <.literal16+0x53c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021925 .byte 255 // (bad)
21926 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021927 .byte 127,0 // jg 3f50 <.literal16+0x540>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021928 .byte 0,0 // add %al,(%rax)
21929 .byte 0,63 // add %bh,(%rdi)
21930 .byte 0,0 // add %al,(%rax)
21931 .byte 0,63 // add %bh,(%rdi)
21932 .byte 0,0 // add %al,(%rax)
21933 .byte 0,63 // add %bh,(%rdi)
21934 .byte 0,0 // add %al,(%rax)
21935 .byte 0,63 // add %bh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040021936 .byte 119,115 // ja 3fd5 <.literal16+0x5c5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021937 .byte 248 // clc
21938 .byte 194,119,115 // retq $0x7377
21939 .byte 248 // clc
21940 .byte 194,119,115 // retq $0x7377
21941 .byte 248 // clc
21942 .byte 194,119,115 // retq $0x7377
21943 .byte 248 // clc
21944 .byte 194,117,191 // retq $0xbf75
21945 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
21946 .byte 63 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040021947 .byte 117,191 // jne 3f39 <.literal16+0x529>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021948 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
21949 .byte 63 // (bad)
21950 .byte 249 // stc
21951 .byte 68,180,62 // rex.R mov $0x3e,%spl
21952 .byte 249 // stc
21953 .byte 68,180,62 // rex.R mov $0x3e,%spl
21954 .byte 249 // stc
21955 .byte 68,180,62 // rex.R mov $0x3e,%spl
21956 .byte 249 // stc
21957 .byte 68,180,62 // rex.R mov $0x3e,%spl
21958 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Kleinb3665f02017-05-01 14:56:04 -040021959 .byte 233,220,63,163,233 // jmpq ffffffffe9a37f7a <_sk_callback_sse41+0xffffffffe9a3464d>
Mike Kleinb4bbc642017-04-27 08:59:55 -040021960 .byte 220,63 // fdivrl (%rdi)
21961 .byte 81 // push %rcx
21962 .byte 140,242 // mov %?,%edx
21963 .byte 66,81 // rex.X push %rcx
21964 .byte 140,242 // mov %?,%edx
21965 .byte 66,81 // rex.X push %rcx
21966 .byte 140,242 // mov %?,%edx
21967 .byte 66,81 // rex.X push %rcx
21968 .byte 140,242 // mov %?,%edx
21969 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
21970 .byte 63 // (bad)
21971 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
21972 .byte 63 // (bad)
21973 .byte 248 // clc
21974 .byte 245 // cmc
21975 .byte 154 // (bad)
21976 .byte 64,248 // rex clc
21977 .byte 245 // cmc
21978 .byte 154 // (bad)
21979 .byte 64,248 // rex clc
21980 .byte 245 // cmc
21981 .byte 154 // (bad)
21982 .byte 64,248 // rex clc
21983 .byte 245 // cmc
21984 .byte 154 // (bad)
21985 .byte 64,254 // rex (bad)
21986 .byte 210,221 // rcr %cl,%ch
21987 .byte 65,254 // rex.B (bad)
21988 .byte 210,221 // rcr %cl,%ch
21989 .byte 65,254 // rex.B (bad)
21990 .byte 210,221 // rcr %cl,%ch
21991 .byte 65,254 // rex.B (bad)
21992 .byte 210,221 // rcr %cl,%ch
21993 .byte 65,0,0 // add %al,(%r8)
21994 .byte 0,75,0 // add %cl,0x0(%rbx)
21995 .byte 0,0 // add %al,(%rax)
21996 .byte 75,0,0 // rex.WXB add %al,(%r8)
21997 .byte 0,75,0 // add %cl,0x0(%rbx)
21998 .byte 0,0 // add %al,(%rax)
21999 .byte 75,0,0 // rex.WXB add %al,(%r8)
Mike Kleinfe560a82017-05-01 12:56:35 -040022000 .byte 128,63,0 // cmpb $0x0,(%rdi)
22001 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22002 .byte 63 // (bad)
22003 .byte 0,0 // add %al,(%rax)
22004 .byte 128,63,0 // cmpb $0x0,(%rdi)
22005 .byte 0,0 // add %al,(%rax)
22006 .byte 52,0 // xor $0x0,%al
Mike Kleinb4bbc642017-04-27 08:59:55 -040022007 .byte 0,0 // add %al,(%rax)
22008 .byte 52,0 // xor $0x0,%al
22009 .byte 0,0 // add %al,(%rax)
22010 .byte 52,0 // xor $0x0,%al
22011 .byte 0,0 // add %al,(%rax)
22012 .byte 52,255 // xor $0xff,%al
22013 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022014 .byte 127,0 // jg 4014 <.literal16+0x604>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022015 .byte 255 // (bad)
22016 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022017 .byte 127,0 // jg 4018 <.literal16+0x608>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022018 .byte 255 // (bad)
22019 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022020 .byte 127,0 // jg 401c <.literal16+0x60c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022021 .byte 255 // (bad)
22022 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022023 .byte 127,0 // jg 4020 <.literal16+0x610>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022024 .byte 0,0 // add %al,(%rax)
22025 .byte 0,63 // add %bh,(%rdi)
22026 .byte 0,0 // add %al,(%rax)
22027 .byte 0,63 // add %bh,(%rdi)
22028 .byte 0,0 // add %al,(%rax)
22029 .byte 0,63 // add %bh,(%rdi)
22030 .byte 0,0 // add %al,(%rax)
22031 .byte 0,63 // add %bh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040022032 .byte 119,115 // ja 40a5 <.literal16+0x695>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022033 .byte 248 // clc
22034 .byte 194,119,115 // retq $0x7377
22035 .byte 248 // clc
22036 .byte 194,119,115 // retq $0x7377
22037 .byte 248 // clc
22038 .byte 194,119,115 // retq $0x7377
22039 .byte 248 // clc
22040 .byte 194,117,191 // retq $0xbf75
22041 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
22042 .byte 63 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022043 .byte 117,191 // jne 4009 <.literal16+0x5f9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022044 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
22045 .byte 63 // (bad)
22046 .byte 249 // stc
22047 .byte 68,180,62 // rex.R mov $0x3e,%spl
22048 .byte 249 // stc
22049 .byte 68,180,62 // rex.R mov $0x3e,%spl
22050 .byte 249 // stc
22051 .byte 68,180,62 // rex.R mov $0x3e,%spl
22052 .byte 249 // stc
22053 .byte 68,180,62 // rex.R mov $0x3e,%spl
22054 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Kleinb3665f02017-05-01 14:56:04 -040022055 .byte 233,220,63,163,233 // jmpq ffffffffe9a3804a <_sk_callback_sse41+0xffffffffe9a3471d>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022056 .byte 220,63 // fdivrl (%rdi)
22057 .byte 81 // push %rcx
22058 .byte 140,242 // mov %?,%edx
22059 .byte 66,81 // rex.X push %rcx
22060 .byte 140,242 // mov %?,%edx
22061 .byte 66,81 // rex.X push %rcx
22062 .byte 140,242 // mov %?,%edx
22063 .byte 66,81 // rex.X push %rcx
22064 .byte 140,242 // mov %?,%edx
22065 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
22066 .byte 63 // (bad)
22067 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
22068 .byte 63 // (bad)
22069 .byte 248 // clc
22070 .byte 245 // cmc
22071 .byte 154 // (bad)
22072 .byte 64,248 // rex clc
22073 .byte 245 // cmc
22074 .byte 154 // (bad)
22075 .byte 64,248 // rex clc
22076 .byte 245 // cmc
22077 .byte 154 // (bad)
22078 .byte 64,248 // rex clc
22079 .byte 245 // cmc
22080 .byte 154 // (bad)
22081 .byte 64,254 // rex (bad)
22082 .byte 210,221 // rcr %cl,%ch
22083 .byte 65,254 // rex.B (bad)
22084 .byte 210,221 // rcr %cl,%ch
22085 .byte 65,254 // rex.B (bad)
22086 .byte 210,221 // rcr %cl,%ch
22087 .byte 65,254 // rex.B (bad)
22088 .byte 210,221 // rcr %cl,%ch
22089 .byte 65,0,0 // add %al,(%r8)
22090 .byte 0,75,0 // add %cl,0x0(%rbx)
22091 .byte 0,0 // add %al,(%rax)
22092 .byte 75,0,0 // rex.WXB add %al,(%r8)
22093 .byte 0,75,0 // add %cl,0x0(%rbx)
22094 .byte 0,0 // add %al,(%rax)
22095 .byte 75,0,0 // rex.WXB add %al,(%r8)
Mike Kleinfe560a82017-05-01 12:56:35 -040022096 .byte 128,63,0 // cmpb $0x0,(%rdi)
22097 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22098 .byte 63 // (bad)
22099 .byte 0,0 // add %al,(%rax)
22100 .byte 128,63,0 // cmpb $0x0,(%rdi)
22101 .byte 0,0 // add %al,(%rax)
22102 .byte 52,0 // xor $0x0,%al
Mike Kleinb4bbc642017-04-27 08:59:55 -040022103 .byte 0,0 // add %al,(%rax)
22104 .byte 52,0 // xor $0x0,%al
22105 .byte 0,0 // add %al,(%rax)
22106 .byte 52,0 // xor $0x0,%al
22107 .byte 0,0 // add %al,(%rax)
22108 .byte 52,255 // xor $0xff,%al
22109 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022110 .byte 127,0 // jg 40e4 <.literal16+0x6d4>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022111 .byte 255 // (bad)
22112 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022113 .byte 127,0 // jg 40e8 <.literal16+0x6d8>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022114 .byte 255 // (bad)
22115 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022116 .byte 127,0 // jg 40ec <.literal16+0x6dc>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022117 .byte 255 // (bad)
22118 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022119 .byte 127,0 // jg 40f0 <.literal16+0x6e0>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022120 .byte 0,0 // add %al,(%rax)
22121 .byte 0,63 // add %bh,(%rdi)
22122 .byte 0,0 // add %al,(%rax)
22123 .byte 0,63 // add %bh,(%rdi)
22124 .byte 0,0 // add %al,(%rax)
22125 .byte 0,63 // add %bh,(%rdi)
22126 .byte 0,0 // add %al,(%rax)
22127 .byte 0,63 // add %bh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040022128 .byte 119,115 // ja 4175 <.literal16+0x765>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022129 .byte 248 // clc
22130 .byte 194,119,115 // retq $0x7377
22131 .byte 248 // clc
22132 .byte 194,119,115 // retq $0x7377
22133 .byte 248 // clc
22134 .byte 194,119,115 // retq $0x7377
22135 .byte 248 // clc
22136 .byte 194,117,191 // retq $0xbf75
22137 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
22138 .byte 63 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022139 .byte 117,191 // jne 40d9 <.literal16+0x6c9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022140 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
22141 .byte 63 // (bad)
22142 .byte 249 // stc
22143 .byte 68,180,62 // rex.R mov $0x3e,%spl
22144 .byte 249 // stc
22145 .byte 68,180,62 // rex.R mov $0x3e,%spl
22146 .byte 249 // stc
22147 .byte 68,180,62 // rex.R mov $0x3e,%spl
22148 .byte 249 // stc
22149 .byte 68,180,62 // rex.R mov $0x3e,%spl
22150 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Kleinb3665f02017-05-01 14:56:04 -040022151 .byte 233,220,63,163,233 // jmpq ffffffffe9a3811a <_sk_callback_sse41+0xffffffffe9a347ed>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022152 .byte 220,63 // fdivrl (%rdi)
22153 .byte 81 // push %rcx
22154 .byte 140,242 // mov %?,%edx
22155 .byte 66,81 // rex.X push %rcx
22156 .byte 140,242 // mov %?,%edx
22157 .byte 66,81 // rex.X push %rcx
22158 .byte 140,242 // mov %?,%edx
22159 .byte 66,81 // rex.X push %rcx
22160 .byte 140,242 // mov %?,%edx
22161 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
22162 .byte 63 // (bad)
22163 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
22164 .byte 63 // (bad)
22165 .byte 248 // clc
22166 .byte 245 // cmc
22167 .byte 154 // (bad)
22168 .byte 64,248 // rex clc
22169 .byte 245 // cmc
22170 .byte 154 // (bad)
22171 .byte 64,248 // rex clc
22172 .byte 245 // cmc
22173 .byte 154 // (bad)
22174 .byte 64,248 // rex clc
22175 .byte 245 // cmc
22176 .byte 154 // (bad)
22177 .byte 64,254 // rex (bad)
22178 .byte 210,221 // rcr %cl,%ch
22179 .byte 65,254 // rex.B (bad)
22180 .byte 210,221 // rcr %cl,%ch
22181 .byte 65,254 // rex.B (bad)
22182 .byte 210,221 // rcr %cl,%ch
22183 .byte 65,254 // rex.B (bad)
22184 .byte 210,221 // rcr %cl,%ch
22185 .byte 65,0,0 // add %al,(%r8)
22186 .byte 0,75,0 // add %cl,0x0(%rbx)
22187 .byte 0,0 // add %al,(%rax)
22188 .byte 75,0,0 // rex.WXB add %al,(%r8)
22189 .byte 0,75,0 // add %cl,0x0(%rbx)
22190 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022191 .byte 75,0,0 // rex.WXB add %al,(%r8)
22192 .byte 128,63,0 // cmpb $0x0,(%rdi)
22193 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22194 .byte 63 // (bad)
22195 .byte 0,0 // add %al,(%rax)
22196 .byte 128,63,0 // cmpb $0x0,(%rdi)
22197 .byte 0,200 // add %cl,%al
22198 .byte 66,0,0 // rex.X add %al,(%rax)
22199 .byte 200,66,0,0 // enterq $0x42,$0x0
22200 .byte 200,66,0,0 // enterq $0x42,$0x0
22201 .byte 200,66,0,0 // enterq $0x42,$0x0
Mike Kleinb3665f02017-05-01 14:56:04 -040022202 .byte 127,67 // jg 41f7 <.literal16+0x7e7>
Mike Kleinfe560a82017-05-01 12:56:35 -040022203 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022204 .byte 127,67 // jg 41fb <.literal16+0x7eb>
Mike Kleinfe560a82017-05-01 12:56:35 -040022205 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022206 .byte 127,67 // jg 41ff <.literal16+0x7ef>
Mike Kleinfe560a82017-05-01 12:56:35 -040022207 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022208 .byte 127,67 // jg 4203 <.literal16+0x7f3>
Mike Kleinfe560a82017-05-01 12:56:35 -040022209 .byte 0,0 // add %al,(%rax)
22210 .byte 0,195 // add %al,%bl
22211 .byte 0,0 // add %al,(%rax)
22212 .byte 0,195 // add %al,%bl
22213 .byte 0,0 // add %al,(%rax)
22214 .byte 0,195 // add %al,%bl
22215 .byte 0,0 // add %al,(%rax)
22216 .byte 0,195 // add %al,%bl
22217 .byte 0,0 // add %al,(%rax)
22218 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
22219 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
22220 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
22221 .byte 128,65,203,61 // addb $0x3d,-0x35(%rcx)
22222 .byte 13,60,203,61,13 // or $0xd3dcb3c,%eax
22223 .byte 60,203 // cmp $0xcb,%al
22224 .byte 61,13,60,203,61 // cmp $0x3dcb3c0d,%eax
22225 .byte 13,60,111,18,3 // or $0x3126f3c,%eax
22226 .byte 59,111,18 // cmp 0x12(%rdi),%ebp
22227 .byte 3,59 // add (%rbx),%edi
22228 .byte 111 // outsl %ds:(%rsi),(%dx)
22229 .byte 18,3 // adc (%rbx),%al
22230 .byte 59,111,18 // cmp 0x12(%rdi),%ebp
22231 .byte 3,59 // add (%rbx),%edi
22232 .byte 10,215 // or %bh,%dl
22233 .byte 163,59,10,215,163,59,10,215,163 // movabs %eax,0xa3d70a3ba3d70a3b
22234 .byte 59,10 // cmp (%rdx),%ecx
22235 .byte 215 // xlat %ds:(%rbx)
22236 .byte 163,59,194,24,17,60,194,24,17 // movabs %eax,0x1118c23c1118c23b
22237 .byte 60,194 // cmp $0xc2,%al
22238 .byte 24,17 // sbb %dl,(%rcx)
22239 .byte 60,194 // cmp $0xc2,%al
22240 .byte 24,17 // sbb %dl,(%rcx)
22241 .byte 60,203 // cmp $0xcb,%al
22242 .byte 61,13,190,203,61 // cmp $0x3dcbbe0d,%eax
22243 .byte 13,190,203,61,13 // or $0xd3dcbbe,%eax
22244 .byte 190,203,61,13,190 // mov $0xbe0d3dcb,%esi
22245 .byte 80 // push %rax
22246 .byte 128,3,62 // addb $0x3e,(%rbx)
22247 .byte 80 // push %rax
22248 .byte 128,3,62 // addb $0x3e,(%rbx)
22249 .byte 80 // push %rax
22250 .byte 128,3,62 // addb $0x3e,(%rbx)
22251 .byte 80 // push %rax
22252 .byte 128,3,62 // addb $0x3e,(%rbx)
22253 .byte 31 // (bad)
22254 .byte 215 // xlat %ds:(%rbx)
Mike Kleinb3665f02017-05-01 14:56:04 -040022255 .byte 118,63 // jbe 4283 <.literal16+0x873>
Mike Kleinfe560a82017-05-01 12:56:35 -040022256 .byte 31 // (bad)
22257 .byte 215 // xlat %ds:(%rbx)
Mike Kleinb3665f02017-05-01 14:56:04 -040022258 .byte 118,63 // jbe 4287 <.literal16+0x877>
Mike Kleinfe560a82017-05-01 12:56:35 -040022259 .byte 31 // (bad)
22260 .byte 215 // xlat %ds:(%rbx)
Mike Kleinb3665f02017-05-01 14:56:04 -040022261 .byte 118,63 // jbe 428b <.literal16+0x87b>
Mike Kleinfe560a82017-05-01 12:56:35 -040022262 .byte 31 // (bad)
22263 .byte 215 // xlat %ds:(%rbx)
Mike Kleinb3665f02017-05-01 14:56:04 -040022264 .byte 118,63 // jbe 428f <.literal16+0x87f>
Mike Kleinfe560a82017-05-01 12:56:35 -040022265 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
22266 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
22267 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
22268 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
22269 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
22270 .byte 128,59,129 // cmpb $0x81,(%rbx)
22271 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
22272 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
22273 .byte 128,59,0 // cmpb $0x0,(%rbx)
22274 .byte 0,127,67 // add %bh,0x43(%rdi)
22275 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022276 .byte 127,67 // jg 42cb <.literal16+0x8bb>
Mike Kleinfe560a82017-05-01 12:56:35 -040022277 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022278 .byte 127,67 // jg 42cf <.literal16+0x8bf>
Mike Kleinfe560a82017-05-01 12:56:35 -040022279 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022280 .byte 127,67 // jg 42d3 <.literal16+0x8c3>
Mike Kleinfe560a82017-05-01 12:56:35 -040022281 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
22282 .byte 128,59,129 // cmpb $0x81,(%rbx)
22283 .byte 128,128,59,0,0,128,63 // addb $0x3f,-0x7fffffc5(%rax)
22284 .byte 0,0 // add %al,(%rax)
22285 .byte 128,63,0 // cmpb $0x0,(%rdi)
22286 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22287 .byte 63 // (bad)
22288 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
22289 .byte 128,59,129 // cmpb $0x81,(%rbx)
22290 .byte 128,128,59,0,0,128,63 // addb $0x3f,-0x7fffffc5(%rax)
22291 .byte 0,0 // add %al,(%rax)
22292 .byte 128,63,0 // cmpb $0x0,(%rdi)
22293 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22294 .byte 63 // (bad)
22295 .byte 255,0 // incl (%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040022296 .byte 0,0 // add %al,(%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040022297 .byte 255,0 // incl (%rax)
22298 .byte 0,0 // add %al,(%rax)
22299 .byte 255,0 // incl (%rax)
22300 .byte 0,0 // add %al,(%rax)
22301 .byte 255,0 // incl (%rax)
22302 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022303 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
22304 .byte 128,59,129 // cmpb $0x81,(%rbx)
22305 .byte 128,128,59,1,255,255,255 // addb $0xff,-0xfec5(%rax)
22306 .byte 5,255,255,255,9 // add $0x9ffffff,%eax
Mike Klein0aa742f2017-04-27 13:36:57 -040022307 .byte 255 // (bad)
22308 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022309 .byte 255,13,255,255,255,2 // decl 0x2ffffff(%rip) # 3004300 <_sk_callback_sse41+0x30009d3>
Mike Klein308e6242017-04-27 13:56:33 -040022310 .byte 255 // (bad)
22311 .byte 255 // (bad)
22312 .byte 255,6 // incl (%rsi)
22313 .byte 255 // (bad)
22314 .byte 255 // (bad)
22315 .byte 255,10 // decl (%rdx)
22316 .byte 255 // (bad)
22317 .byte 255 // (bad)
22318 .byte 255,14 // decl (%rsi)
22319 .byte 255 // (bad)
22320 .byte 255 // (bad)
22321 .byte 255,0 // incl (%rax)
22322 .byte 248 // clc
22323 .byte 0,0 // add %al,(%rax)
22324 .byte 0,248 // add %bh,%al
22325 .byte 0,0 // add %al,(%rax)
22326 .byte 0,248 // add %bh,%al
22327 .byte 0,0 // add %al,(%rax)
22328 .byte 0,248 // add %bh,%al
22329 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022330 .byte 8,33 // or %ah,(%rcx)
22331 .byte 132,55 // test %dh,(%rdi)
22332 .byte 8,33 // or %ah,(%rcx)
22333 .byte 132,55 // test %dh,(%rdi)
22334 .byte 8,33 // or %ah,(%rcx)
22335 .byte 132,55 // test %dh,(%rdi)
22336 .byte 8,33 // or %ah,(%rcx)
22337 .byte 132,55 // test %dh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040022338 .byte 224,7 // loopne 4339 <.literal16+0x929>
Mike Klein308e6242017-04-27 13:56:33 -040022339 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022340 .byte 224,7 // loopne 433d <.literal16+0x92d>
Mike Klein308e6242017-04-27 13:56:33 -040022341 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022342 .byte 224,7 // loopne 4341 <.literal16+0x931>
Mike Klein308e6242017-04-27 13:56:33 -040022343 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022344 .byte 224,7 // loopne 4345 <.literal16+0x935>
Mike Klein308e6242017-04-27 13:56:33 -040022345 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022346 .byte 33,8 // and %ecx,(%rax)
22347 .byte 2,58 // add (%rdx),%bh
22348 .byte 33,8 // and %ecx,(%rax)
22349 .byte 2,58 // add (%rdx),%bh
22350 .byte 33,8 // and %ecx,(%rax)
22351 .byte 2,58 // add (%rdx),%bh
22352 .byte 33,8 // and %ecx,(%rax)
22353 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040022354 .byte 31 // (bad)
22355 .byte 0,0 // add %al,(%rax)
22356 .byte 0,31 // add %bl,(%rdi)
22357 .byte 0,0 // add %al,(%rax)
22358 .byte 0,31 // add %bl,(%rdi)
22359 .byte 0,0 // add %al,(%rax)
22360 .byte 0,31 // add %bl,(%rdi)
22361 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022362 .byte 0,8 // add %cl,(%rax)
22363 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
22364 .byte 8,33 // or %ah,(%rcx)
22365 .byte 4,61 // add $0x3d,%al
22366 .byte 8,33 // or %ah,(%rcx)
22367 .byte 4,61 // add $0x3d,%al
Mike Klein308e6242017-04-27 13:56:33 -040022368 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022369 .byte 128,63,0 // cmpb $0x0,(%rdi)
22370 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22371 .byte 63 // (bad)
22372 .byte 0,0 // add %al,(%rax)
22373 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Klein308e6242017-04-27 13:56:33 -040022374 .byte 248 // clc
22375 .byte 0,0 // add %al,(%rax)
22376 .byte 0,248 // add %bh,%al
22377 .byte 0,0 // add %al,(%rax)
22378 .byte 0,248 // add %bh,%al
22379 .byte 0,0 // add %al,(%rax)
22380 .byte 0,248 // add %bh,%al
22381 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022382 .byte 8,33 // or %ah,(%rcx)
22383 .byte 132,55 // test %dh,(%rdi)
22384 .byte 8,33 // or %ah,(%rcx)
22385 .byte 132,55 // test %dh,(%rdi)
22386 .byte 8,33 // or %ah,(%rcx)
22387 .byte 132,55 // test %dh,(%rdi)
22388 .byte 8,33 // or %ah,(%rcx)
22389 .byte 132,55 // test %dh,(%rdi)
Mike Kleinb3665f02017-05-01 14:56:04 -040022390 .byte 224,7 // loopne 43a9 <.literal16+0x999>
Mike Klein308e6242017-04-27 13:56:33 -040022391 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022392 .byte 224,7 // loopne 43ad <.literal16+0x99d>
Mike Klein308e6242017-04-27 13:56:33 -040022393 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022394 .byte 224,7 // loopne 43b1 <.literal16+0x9a1>
Mike Klein308e6242017-04-27 13:56:33 -040022395 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022396 .byte 224,7 // loopne 43b5 <.literal16+0x9a5>
Mike Klein308e6242017-04-27 13:56:33 -040022397 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022398 .byte 33,8 // and %ecx,(%rax)
22399 .byte 2,58 // add (%rdx),%bh
22400 .byte 33,8 // and %ecx,(%rax)
22401 .byte 2,58 // add (%rdx),%bh
22402 .byte 33,8 // and %ecx,(%rax)
22403 .byte 2,58 // add (%rdx),%bh
22404 .byte 33,8 // and %ecx,(%rax)
22405 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040022406 .byte 31 // (bad)
22407 .byte 0,0 // add %al,(%rax)
22408 .byte 0,31 // add %bl,(%rdi)
22409 .byte 0,0 // add %al,(%rax)
22410 .byte 0,31 // add %bl,(%rdi)
22411 .byte 0,0 // add %al,(%rax)
22412 .byte 0,31 // add %bl,(%rdi)
22413 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022414 .byte 0,8 // add %cl,(%rax)
22415 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
22416 .byte 8,33 // or %ah,(%rcx)
22417 .byte 4,61 // add $0x3d,%al
22418 .byte 8,33 // or %ah,(%rcx)
22419 .byte 4,61 // add $0x3d,%al
Mike Klein308e6242017-04-27 13:56:33 -040022420 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022421 .byte 128,63,0 // cmpb $0x0,(%rdi)
22422 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22423 .byte 63 // (bad)
22424 .byte 0,0 // add %al,(%rax)
22425 .byte 128,63,0 // cmpb $0x0,(%rdi)
22426 .byte 0,248 // add %bh,%al
22427 .byte 65,0,0 // add %al,(%r8)
22428 .byte 248 // clc
22429 .byte 65,0,0 // add %al,(%r8)
22430 .byte 248 // clc
22431 .byte 65,0,0 // add %al,(%r8)
22432 .byte 248 // clc
22433 .byte 65,0,0 // add %al,(%r8)
Mike Kleinb3665f02017-05-01 14:56:04 -040022434 .byte 124,66 // jl 4446 <.literal16+0xa36>
Mike Kleinfe560a82017-05-01 12:56:35 -040022435 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022436 .byte 124,66 // jl 444a <.literal16+0xa3a>
Mike Kleinfe560a82017-05-01 12:56:35 -040022437 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022438 .byte 124,66 // jl 444e <.literal16+0xa3e>
Mike Kleinfe560a82017-05-01 12:56:35 -040022439 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022440 .byte 124,66 // jl 4452 <.literal16+0xa42>
Mike Kleinfe560a82017-05-01 12:56:35 -040022441 .byte 0,240 // add %dh,%al
22442 .byte 0,0 // add %al,(%rax)
22443 .byte 0,240 // add %dh,%al
22444 .byte 0,0 // add %al,(%rax)
22445 .byte 0,240 // add %dh,%al
22446 .byte 0,0 // add %al,(%rax)
22447 .byte 0,240 // add %dh,%al
22448 .byte 0,0 // add %al,(%rax)
22449 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
22450 .byte 136,55 // mov %dh,(%rdi)
22451 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
22452 .byte 136,55 // mov %dh,(%rdi)
22453 .byte 0,15 // add %cl,(%rdi)
22454 .byte 0,0 // add %al,(%rax)
22455 .byte 0,15 // add %cl,(%rdi)
22456 .byte 0,0 // add %al,(%rax)
22457 .byte 0,15 // add %cl,(%rdi)
22458 .byte 0,0 // add %al,(%rax)
22459 .byte 0,15 // add %cl,(%rdi)
22460 .byte 0,0 // add %al,(%rax)
22461 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
22462 .byte 136,57 // mov %bh,(%rcx)
22463 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
22464 .byte 136,57 // mov %bh,(%rcx)
Mike Klein308e6242017-04-27 13:56:33 -040022465 .byte 240,0,0 // lock add %al,(%rax)
22466 .byte 0,240 // add %dh,%al
22467 .byte 0,0 // add %al,(%rax)
22468 .byte 0,240 // add %dh,%al
22469 .byte 0,0 // add %al,(%rax)
22470 .byte 0,240 // add %dh,%al
22471 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022472 .byte 0,137,136,136,59,137 // add %cl,-0x76c47778(%rcx)
22473 .byte 136,136,59,137,136,136 // mov %cl,-0x777776c5(%rax)
22474 .byte 59,137,136,136,59,15 // cmp 0xf3b8888(%rcx),%ecx
22475 .byte 0,0 // add %al,(%rax)
22476 .byte 0,15 // add %cl,(%rdi)
22477 .byte 0,0 // add %al,(%rax)
22478 .byte 0,15 // add %cl,(%rdi)
22479 .byte 0,0 // add %al,(%rax)
22480 .byte 0,15 // add %cl,(%rdi)
22481 .byte 0,0 // add %al,(%rax)
22482 .byte 0,137,136,136,61,137 // add %cl,-0x76c27778(%rcx)
22483 .byte 136,136,61,137,136,136 // mov %cl,-0x777776c3(%rax)
22484 .byte 61,137,136,136,61 // cmp $0x3d888889,%eax
22485 .byte 0,240 // add %dh,%al
22486 .byte 0,0 // add %al,(%rax)
22487 .byte 0,240 // add %dh,%al
22488 .byte 0,0 // add %al,(%rax)
22489 .byte 0,240 // add %dh,%al
22490 .byte 0,0 // add %al,(%rax)
22491 .byte 0,240 // add %dh,%al
22492 .byte 0,0 // add %al,(%rax)
22493 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
22494 .byte 136,55 // mov %dh,(%rdi)
22495 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
22496 .byte 136,55 // mov %dh,(%rdi)
Mike Klein308e6242017-04-27 13:56:33 -040022497 .byte 0,15 // add %cl,(%rdi)
22498 .byte 0,0 // add %al,(%rax)
22499 .byte 0,15 // add %cl,(%rdi)
22500 .byte 0,0 // add %al,(%rax)
22501 .byte 0,15 // add %cl,(%rdi)
22502 .byte 0,0 // add %al,(%rax)
22503 .byte 0,15 // add %cl,(%rdi)
22504 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022505 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
22506 .byte 136,57 // mov %bh,(%rcx)
22507 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
22508 .byte 136,57 // mov %bh,(%rcx)
Mike Klein308e6242017-04-27 13:56:33 -040022509 .byte 240,0,0 // lock add %al,(%rax)
22510 .byte 0,240 // add %dh,%al
22511 .byte 0,0 // add %al,(%rax)
22512 .byte 0,240 // add %dh,%al
22513 .byte 0,0 // add %al,(%rax)
22514 .byte 0,240 // add %dh,%al
22515 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022516 .byte 0,137,136,136,59,137 // add %cl,-0x76c47778(%rcx)
22517 .byte 136,136,59,137,136,136 // mov %cl,-0x777776c5(%rax)
22518 .byte 59,137,136,136,59,15 // cmp 0xf3b8888(%rcx),%ecx
Mike Klein308e6242017-04-27 13:56:33 -040022519 .byte 0,0 // add %al,(%rax)
22520 .byte 0,15 // add %cl,(%rdi)
22521 .byte 0,0 // add %al,(%rax)
22522 .byte 0,15 // add %cl,(%rdi)
22523 .byte 0,0 // add %al,(%rax)
22524 .byte 0,15 // add %cl,(%rdi)
22525 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022526 .byte 0,137,136,136,61,137 // add %cl,-0x76c27778(%rcx)
22527 .byte 136,136,61,137,136,136 // mov %cl,-0x777776c3(%rax)
22528 .byte 61,137,136,136,61 // cmp $0x3d888889,%eax
Mike Klein308e6242017-04-27 13:56:33 -040022529 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022530 .byte 112,65 // jo 4555 <.literal16+0xb45>
Mike Klein308e6242017-04-27 13:56:33 -040022531 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022532 .byte 112,65 // jo 4559 <.literal16+0xb49>
Mike Klein308e6242017-04-27 13:56:33 -040022533 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022534 .byte 112,65 // jo 455d <.literal16+0xb4d>
Mike Klein308e6242017-04-27 13:56:33 -040022535 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022536 .byte 112,65 // jo 4561 <.literal16+0xb51>
Mike Kleinfe560a82017-05-01 12:56:35 -040022537 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040022538 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022539 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040022540 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022541 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040022542 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022543 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040022544 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022545 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
22546 .byte 128,59,129 // cmpb $0x81,(%rbx)
22547 .byte 128,128,59,1,255,255,255 // addb $0xff,-0xfec5(%rax)
22548 .byte 5,255,255,255,9 // add $0x9ffffff,%eax
Mike Klein308e6242017-04-27 13:56:33 -040022549 .byte 255 // (bad)
22550 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022551 .byte 255,13,255,255,255,2 // decl 0x2ffffff(%rip) # 3004550 <_sk_callback_sse41+0x3000c23>
Mike Klein0aa742f2017-04-27 13:36:57 -040022552 .byte 255 // (bad)
22553 .byte 255 // (bad)
22554 .byte 255,6 // incl (%rsi)
22555 .byte 255 // (bad)
22556 .byte 255 // (bad)
22557 .byte 255,10 // decl (%rdx)
22558 .byte 255 // (bad)
22559 .byte 255 // (bad)
22560 .byte 255,14 // decl (%rsi)
22561 .byte 255 // (bad)
22562 .byte 255 // (bad)
22563 .byte 255 // (bad)
22564 .byte 255,0 // incl (%rax)
22565 .byte 0,0 // add %al,(%rax)
22566 .byte 255,0 // incl (%rax)
22567 .byte 0,0 // add %al,(%rax)
22568 .byte 255,0 // incl (%rax)
22569 .byte 0,0 // add %al,(%rax)
22570 .byte 255,0 // incl (%rax)
22571 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022572 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
22573 .byte 128,59,129 // cmpb $0x81,(%rbx)
22574 .byte 128,128,59,1,255,255,255 // addb $0xff,-0xfec5(%rax)
22575 .byte 5,255,255,255,9 // add $0x9ffffff,%eax
Mike Klein0aa742f2017-04-27 13:36:57 -040022576 .byte 255 // (bad)
22577 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022578 .byte 255,13,255,255,255,2 // decl 0x2ffffff(%rip) # 3004590 <_sk_callback_sse41+0x3000c63>
Mike Klein0aa742f2017-04-27 13:36:57 -040022579 .byte 255 // (bad)
22580 .byte 255 // (bad)
22581 .byte 255,6 // incl (%rsi)
22582 .byte 255 // (bad)
22583 .byte 255 // (bad)
22584 .byte 255,10 // decl (%rdx)
22585 .byte 255 // (bad)
22586 .byte 255 // (bad)
22587 .byte 255,14 // decl (%rsi)
22588 .byte 255 // (bad)
22589 .byte 255 // (bad)
22590 .byte 255,0 // incl (%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022591 .byte 0,127,67 // add %bh,0x43(%rdi)
22592 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022593 .byte 127,67 // jg 45eb <.literal16+0xbdb>
Mike Kleinfe560a82017-05-01 12:56:35 -040022594 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022595 .byte 127,67 // jg 45ef <.literal16+0xbdf>
Mike Kleinfe560a82017-05-01 12:56:35 -040022596 .byte 0,0 // add %al,(%rax)
Mike Kleinb3665f02017-05-01 14:56:04 -040022597 .byte 127,67 // jg 45f3 <.literal16+0xbe3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040022598 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
22599 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022600 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040022601 .byte 0,0 // add %al,(%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040022602 .byte 0,4,0 // add %al,(%rax,%rax,1)
Mike Kleinb4bbc642017-04-27 08:59:55 -040022603 .byte 0,0 // add %al,(%rax)
22604 .byte 4,0 // add $0x0,%al
22605 .byte 0,0 // add %al,(%rax)
22606 .byte 4,0 // add $0x0,%al
22607 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040022608 .byte 4,0 // add $0x0,%al
22609 .byte 0,0 // add %al,(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040022610 .byte 0,0 // add %al,(%rax)
22611 .byte 56,0 // cmp %al,(%rax)
22612 .byte 0,0 // add %al,(%rax)
22613 .byte 56,0 // cmp %al,(%rax)
22614 .byte 0,0 // add %al,(%rax)
22615 .byte 56,0 // cmp %al,(%rax)
22616 .byte 0,0 // add %al,(%rax)
22617 .byte 56,0 // cmp %al,(%rax)
22618 .byte 128,0,0 // addb $0x0,(%rax)
22619 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
22620 .byte 0,0 // add %al,(%rax)
22621 .byte 0,128,0,0,0,4 // add %al,0x4000000(%rax)
22622 .byte 0,0 // add %al,(%rax)
22623 .byte 0,4,0 // add %al,(%rax,%rax,1)
22624 .byte 0,0 // add %al,(%rax)
22625 .byte 4,0 // add $0x0,%al
22626 .byte 0,0 // add %al,(%rax)
22627 .byte 4,0 // add $0x0,%al
22628 .byte 0,0 // add %al,(%rax)
22629 .byte 0,0 // add %al,(%rax)
22630 .byte 56,0 // cmp %al,(%rax)
22631 .byte 0,0 // add %al,(%rax)
22632 .byte 56,0 // cmp %al,(%rax)
22633 .byte 0,0 // add %al,(%rax)
22634 .byte 56,0 // cmp %al,(%rax)
22635 .byte 0,0 // add %al,(%rax)
22636 .byte 56,0 // cmp %al,(%rax)
22637 .byte 0,0 // add %al,(%rax)
22638 .byte 128,0,0 // addb $0x0,(%rax)
22639 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
22640 .byte 0,0 // add %al,(%rax)
22641 .byte 0,128,0,0,128,56 // add %al,0x38800000(%rax)
22642 .byte 0,0 // add %al,(%rax)
22643 .byte 128,56,0 // cmpb $0x0,(%rax)
22644 .byte 0,128,56,0,0,128 // add %al,-0x7fffffc8(%rax)
22645 .byte 56,0 // cmp %al,(%rax)
22646 .byte 64,254 // rex (bad)
22647 .byte 255,0 // incl (%rax)
22648 .byte 64,254 // rex (bad)
22649 .byte 255,0 // incl (%rax)
22650 .byte 64,254 // rex (bad)
22651 .byte 255,0 // incl (%rax)
22652 .byte 64,254 // rex (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040022653 .byte 255,128,0,128,55,128 // incl -0x7fc88000(%rax)
22654 .byte 0,128,55,128,0,128 // add %al,-0x7fff7fc9(%rax)
22655 .byte 55 // (bad)
22656 .byte 128,0,128 // addb $0x80,(%rax)
22657 .byte 55 // (bad)
22658 .byte 128,0,128 // addb $0x80,(%rax)
22659 .byte 55 // (bad)
22660 .byte 128,0,128 // addb $0x80,(%rax)
22661 .byte 55 // (bad)
22662 .byte 128,0,128 // addb $0x80,(%rax)
22663 .byte 55 // (bad)
22664 .byte 128,0,128 // addb $0x80,(%rax)
22665 .byte 55 // (bad)
22666 .byte 0,0 // add %al,(%rax)
22667 .byte 128,63,0 // cmpb $0x0,(%rdi)
22668 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22669 .byte 63 // (bad)
22670 .byte 0,0 // add %al,(%rax)
22671 .byte 128,63,0 // cmpb $0x0,(%rdi)
22672 .byte 255 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022673 .byte 127,71 // jg 46bb <.literal16+0xcab>
Mike Kleinfe560a82017-05-01 12:56:35 -040022674 .byte 0,255 // add %bh,%bh
Mike Kleinb3665f02017-05-01 14:56:04 -040022675 .byte 127,71 // jg 46bf <.literal16+0xcaf>
Mike Kleinfe560a82017-05-01 12:56:35 -040022676 .byte 0,255 // add %bh,%bh
Mike Kleinb3665f02017-05-01 14:56:04 -040022677 .byte 127,71 // jg 46c3 <.literal16+0xcb3>
Mike Kleinfe560a82017-05-01 12:56:35 -040022678 .byte 0,255 // add %bh,%bh
Mike Kleinb3665f02017-05-01 14:56:04 -040022679 .byte 127,71 // jg 46c7 <.literal16+0xcb7>
Mike Kleinfe560a82017-05-01 12:56:35 -040022680 .byte 208 // (bad)
22681 .byte 179,89 // mov $0x59,%bl
22682 .byte 62,208 // ds (bad)
22683 .byte 179,89 // mov $0x59,%bl
22684 .byte 62,208 // ds (bad)
22685 .byte 179,89 // mov $0x59,%bl
22686 .byte 62,208 // ds (bad)
22687 .byte 179,89 // mov $0x59,%bl
22688 .byte 62,89 // ds pop %rcx
22689 .byte 23 // (bad)
22690 .byte 55 // (bad)
22691 .byte 63 // (bad)
22692 .byte 89 // pop %rcx
22693 .byte 23 // (bad)
22694 .byte 55 // (bad)
22695 .byte 63 // (bad)
22696 .byte 89 // pop %rcx
22697 .byte 23 // (bad)
22698 .byte 55 // (bad)
22699 .byte 63 // (bad)
22700 .byte 89 // pop %rcx
22701 .byte 23 // (bad)
22702 .byte 55 // (bad)
22703 .byte 63 // (bad)
22704 .byte 152 // cwtl
22705 .byte 221,147,61,152,221,147 // fstl -0x6c2267c3(%rbx)
22706 .byte 61,152,221,147,61 // cmp $0x3d93dd98,%eax
22707 .byte 152 // cwtl
22708 .byte 221,147,61,0,0,0 // fstl 0x3d(%rbx)
22709 .byte 63 // (bad)
22710 .byte 0,0 // add %al,(%rax)
22711 .byte 0,63 // add %bh,(%rdi)
22712 .byte 0,0 // add %al,(%rax)
22713 .byte 0,63 // add %bh,(%rdi)
22714 .byte 0,0 // add %al,(%rax)
22715 .byte 0,63 // add %bh,(%rdi)
22716 .byte 0,0 // add %al,(%rax)
22717 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
22718 .byte 0,0 // add %al,(%rax)
22719 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
22720 .byte 0,0 // add %al,(%rax)
22721 .byte 128,63,0 // cmpb $0x0,(%rdi)
22722 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22723 .byte 63 // (bad)
22724 .byte 0,0 // add %al,(%rax)
22725 .byte 128,63,0 // cmpb $0x0,(%rdi)
22726 .byte 0,0 // add %al,(%rax)
22727 .byte 63 // (bad)
22728 .byte 0,0 // add %al,(%rax)
22729 .byte 0,63 // add %bh,(%rdi)
22730 .byte 0,0 // add %al,(%rax)
22731 .byte 0,63 // add %bh,(%rdi)
22732 .byte 0,0 // add %al,(%rax)
22733 .byte 0,63 // add %bh,(%rdi)
22734 .byte 0,0 // add %al,(%rax)
22735 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
22736 .byte 0,0 // add %al,(%rax)
22737 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
22738 .byte 0,0 // add %al,(%rax)
22739 .byte 128,63,0 // cmpb $0x0,(%rdi)
22740 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22741 .byte 63 // (bad)
22742 .byte 0,0 // add %al,(%rax)
22743 .byte 128,63,0 // cmpb $0x0,(%rdi)
22744 .byte 0,0 // add %al,(%rax)
22745 .byte 63 // (bad)
22746 .byte 0,0 // add %al,(%rax)
22747 .byte 0,63 // add %bh,(%rdi)
22748 .byte 0,0 // add %al,(%rax)
22749 .byte 0,63 // add %bh,(%rdi)
22750 .byte 0,0 // add %al,(%rax)
22751 .byte 0,63 // add %bh,(%rdi)
22752 .byte 0,0 // add %al,(%rax)
22753 .byte 192,191,0,0,192,191,0 // sarb $0x0,-0x40400000(%rdi)
22754 .byte 0,192 // add %al,%al
22755 .byte 191,0,0,192,191 // mov $0xbfc00000,%edi
22756 .byte 0,0 // add %al,(%rax)
22757 .byte 128,63,0 // cmpb $0x0,(%rdi)
22758 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22759 .byte 63 // (bad)
22760 .byte 0,0 // add %al,(%rax)
22761 .byte 128,63,114 // cmpb $0x72,(%rdi)
22762 .byte 28,199 // sbb $0xc7,%al
Mike Kleinb3665f02017-05-01 14:56:04 -040022763 .byte 62,114,28 // jb,pt 4762 <.literal16+0xd52>
Mike Kleinfe560a82017-05-01 12:56:35 -040022764 .byte 199 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022765 .byte 62,114,28 // jb,pt 4766 <.literal16+0xd56>
Mike Kleinfe560a82017-05-01 12:56:35 -040022766 .byte 199 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022767 .byte 62,114,28 // jb,pt 476a <.literal16+0xd5a>
Mike Kleinfe560a82017-05-01 12:56:35 -040022768 .byte 199 // (bad)
22769 .byte 62,171 // ds stos %eax,%es:(%rdi)
22770 .byte 170 // stos %al,%es:(%rdi)
22771 .byte 170 // stos %al,%es:(%rdi)
22772 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
22773 .byte 171 // stos %eax,%es:(%rdi)
22774 .byte 170 // stos %al,%es:(%rdi)
22775 .byte 170 // stos %al,%es:(%rdi)
22776 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
22777 .byte 0,0 // add %al,(%rax)
22778 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
22779 .byte 0,0 // add %al,(%rax)
22780 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
22781 .byte 0,0 // add %al,(%rax)
22782 .byte 128,63,0 // cmpb $0x0,(%rdi)
22783 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22784 .byte 63 // (bad)
22785 .byte 0,0 // add %al,(%rax)
22786 .byte 128,63,85 // cmpb $0x55,(%rdi)
22787 .byte 85 // push %rbp
22788 .byte 149 // xchg %eax,%ebp
22789 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
22790 .byte 85 // push %rbp
22791 .byte 85 // push %rbp
22792 .byte 149 // xchg %eax,%ebp
22793 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
22794 .byte 0,0 // add %al,(%rax)
22795 .byte 192,63,0 // sarb $0x0,(%rdi)
22796 .byte 0,192 // add %al,%al
22797 .byte 63 // (bad)
22798 .byte 0,0 // add %al,(%rax)
22799 .byte 192,63,0 // sarb $0x0,(%rdi)
22800 .byte 0,192 // add %al,%al
22801 .byte 63 // (bad)
22802 .byte 0,0 // add %al,(%rax)
22803 .byte 0,63 // add %bh,(%rdi)
22804 .byte 0,0 // add %al,(%rax)
22805 .byte 0,63 // add %bh,(%rdi)
22806 .byte 0,0 // add %al,(%rax)
22807 .byte 0,63 // add %bh,(%rdi)
22808 .byte 0,0 // add %al,(%rax)
22809 .byte 0,63 // add %bh,(%rdi)
22810 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Kleinb3665f02017-05-01 14:56:04 -040022811 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63d5f5 <_sk_callback_sse41+0x3d639cc8>
Mike Kleinfe560a82017-05-01 12:56:35 -040022812 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
22813 .byte 0,63 // add %bh,(%rdi)
22814 .byte 0,0 // add %al,(%rax)
22815 .byte 0,63 // add %bh,(%rdi)
22816 .byte 0,0 // add %al,(%rax)
22817 .byte 0,63 // add %bh,(%rdi)
22818 .byte 0,0 // add %al,(%rax)
22819 .byte 0,63 // add %bh,(%rdi)
22820 .byte 85 // push %rbp
22821 .byte 85 // push %rbp
22822 .byte 149 // xchg %eax,%ebp
22823 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
22824 .byte 85 // push %rbp
22825 .byte 85 // push %rbp
22826 .byte 149 // xchg %eax,%ebp
22827 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
22828 .byte 0,0 // add %al,(%rax)
22829 .byte 192,63,0 // sarb $0x0,(%rdi)
22830 .byte 0,192 // add %al,%al
22831 .byte 63 // (bad)
22832 .byte 0,0 // add %al,(%rax)
22833 .byte 192,63,0 // sarb $0x0,(%rdi)
22834 .byte 0,192 // add %al,%al
22835 .byte 63 // (bad)
22836 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Kleinb3665f02017-05-01 14:56:04 -040022837 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63d635 <_sk_callback_sse41+0x3d639d08>
Mike Kleinfe560a82017-05-01 12:56:35 -040022838 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
22839 .byte 192,63,0 // sarb $0x0,(%rdi)
22840 .byte 0,192 // add %al,%al
22841 .byte 63 // (bad)
22842 .byte 0,0 // add %al,(%rax)
22843 .byte 192,63,0 // sarb $0x0,(%rdi)
22844 .byte 0,192 // add %al,%al
22845 .byte 63 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022846 .byte 114,28 // jb 482e <.literal16+0xe1e>
Mike Kleinfe560a82017-05-01 12:56:35 -040022847 .byte 199 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022848 .byte 62,114,28 // jb,pt 4832 <.literal16+0xe22>
Mike Kleinfe560a82017-05-01 12:56:35 -040022849 .byte 199 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022850 .byte 62,114,28 // jb,pt 4836 <.literal16+0xe26>
Mike Kleinfe560a82017-05-01 12:56:35 -040022851 .byte 199 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022852 .byte 62,114,28 // jb,pt 483a <.literal16+0xe2a>
Mike Kleinfe560a82017-05-01 12:56:35 -040022853 .byte 199 // (bad)
22854 .byte 62,171 // ds stos %eax,%es:(%rdi)
22855 .byte 170 // stos %al,%es:(%rdi)
22856 .byte 170 // stos %al,%es:(%rdi)
22857 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
22858 .byte 171 // stos %eax,%es:(%rdi)
22859 .byte 170 // stos %al,%es:(%rdi)
22860 .byte 170 // stos %al,%es:(%rdi)
22861 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
22862 .byte 0,0 // add %al,(%rax)
22863 .byte 192,191,0,0,192,191,0 // sarb $0x0,-0x40400000(%rdi)
22864 .byte 0,192 // add %al,%al
22865 .byte 191,0,0,192,191 // mov $0xbfc00000,%edi
22866 .byte 0,0 // add %al,(%rax)
22867 .byte 128,63,0 // cmpb $0x0,(%rdi)
22868 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22869 .byte 63 // (bad)
22870 .byte 0,0 // add %al,(%rax)
22871 .byte 128,63,114 // cmpb $0x72,(%rdi)
22872 .byte 28,199 // sbb $0xc7,%al
Mike Kleinb3665f02017-05-01 14:56:04 -040022873 .byte 62,114,28 // jb,pt 4872 <.literal16+0xe62>
Mike Kleinfe560a82017-05-01 12:56:35 -040022874 .byte 199 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022875 .byte 62,114,28 // jb,pt 4876 <.literal16+0xe66>
Mike Kleinfe560a82017-05-01 12:56:35 -040022876 .byte 199 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022877 .byte 62,114,28 // jb,pt 487a <.literal16+0xe6a>
Mike Kleinfe560a82017-05-01 12:56:35 -040022878 .byte 199 // (bad)
22879 .byte 62,171 // ds stos %eax,%es:(%rdi)
22880 .byte 170 // stos %al,%es:(%rdi)
22881 .byte 170 // stos %al,%es:(%rdi)
22882 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
22883 .byte 171 // stos %eax,%es:(%rdi)
22884 .byte 170 // stos %al,%es:(%rdi)
22885 .byte 170 // stos %al,%es:(%rdi)
22886 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
22887 .byte 0,0 // add %al,(%rax)
22888 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
22889 .byte 0,0 // add %al,(%rax)
22890 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
22891 .byte 0,0 // add %al,(%rax)
22892 .byte 128,63,0 // cmpb $0x0,(%rdi)
22893 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
22894 .byte 63 // (bad)
22895 .byte 0,0 // add %al,(%rax)
22896 .byte 128,63,85 // cmpb $0x55,(%rdi)
22897 .byte 85 // push %rbp
22898 .byte 149 // xchg %eax,%ebp
22899 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
22900 .byte 85 // push %rbp
22901 .byte 85 // push %rbp
22902 .byte 149 // xchg %eax,%ebp
22903 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
22904 .byte 0,0 // add %al,(%rax)
22905 .byte 192,63,0 // sarb $0x0,(%rdi)
22906 .byte 0,192 // add %al,%al
22907 .byte 63 // (bad)
22908 .byte 0,0 // add %al,(%rax)
22909 .byte 192,63,0 // sarb $0x0,(%rdi)
22910 .byte 0,192 // add %al,%al
22911 .byte 63 // (bad)
22912 .byte 0,0 // add %al,(%rax)
22913 .byte 0,63 // add %bh,(%rdi)
22914 .byte 0,0 // add %al,(%rax)
22915 .byte 0,63 // add %bh,(%rdi)
22916 .byte 0,0 // add %al,(%rax)
22917 .byte 0,63 // add %bh,(%rdi)
22918 .byte 0,0 // add %al,(%rax)
22919 .byte 0,63 // add %bh,(%rdi)
22920 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Kleinb3665f02017-05-01 14:56:04 -040022921 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63d705 <_sk_callback_sse41+0x3d639dd8>
Mike Kleinfe560a82017-05-01 12:56:35 -040022922 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
22923 .byte 0,63 // add %bh,(%rdi)
22924 .byte 0,0 // add %al,(%rax)
22925 .byte 0,63 // add %bh,(%rdi)
22926 .byte 0,0 // add %al,(%rax)
22927 .byte 0,63 // add %bh,(%rdi)
22928 .byte 0,0 // add %al,(%rax)
22929 .byte 0,63 // add %bh,(%rdi)
22930 .byte 85 // push %rbp
22931 .byte 85 // push %rbp
22932 .byte 149 // xchg %eax,%ebp
22933 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
22934 .byte 85 // push %rbp
22935 .byte 85 // push %rbp
22936 .byte 149 // xchg %eax,%ebp
22937 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
22938 .byte 0,0 // add %al,(%rax)
22939 .byte 192,63,0 // sarb $0x0,(%rdi)
22940 .byte 0,192 // add %al,%al
22941 .byte 63 // (bad)
22942 .byte 0,0 // add %al,(%rax)
22943 .byte 192,63,0 // sarb $0x0,(%rdi)
22944 .byte 0,192 // add %al,%al
22945 .byte 63 // (bad)
22946 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Kleinb3665f02017-05-01 14:56:04 -040022947 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63d745 <_sk_callback_sse41+0x3d639e18>
Mike Kleinfe560a82017-05-01 12:56:35 -040022948 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
22949 .byte 192,63,0 // sarb $0x0,(%rdi)
22950 .byte 0,192 // add %al,%al
22951 .byte 63 // (bad)
22952 .byte 0,0 // add %al,(%rax)
22953 .byte 192,63,0 // sarb $0x0,(%rdi)
22954 .byte 0,192 // add %al,%al
22955 .byte 63 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022956 .byte 114,28 // jb 493e <.literal16+0xf2e>
Mike Kleinfe560a82017-05-01 12:56:35 -040022957 .byte 199 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022958 .byte 62,114,28 // jb,pt 4942 <_sk_callback_sse41+0x1015>
Mike Kleinfe560a82017-05-01 12:56:35 -040022959 .byte 199 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022960 .byte 62,114,28 // jb,pt 4946 <_sk_callback_sse41+0x1019>
Mike Kleinfe560a82017-05-01 12:56:35 -040022961 .byte 199 // (bad)
Mike Kleinb3665f02017-05-01 14:56:04 -040022962 .byte 62,114,28 // jb,pt 494a <_sk_callback_sse41+0x101d>
Mike Kleinfe560a82017-05-01 12:56:35 -040022963 .byte 199 // (bad)
22964 .byte 62,171 // ds stos %eax,%es:(%rdi)
22965 .byte 170 // stos %al,%es:(%rdi)
22966 .byte 170 // stos %al,%es:(%rdi)
22967 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
22968 .byte 171 // stos %eax,%es:(%rdi)
22969 .byte 170 // stos %al,%es:(%rdi)
22970 .byte 170 // stos %al,%es:(%rdi)
22971 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
Mike Klein67e61712017-04-26 09:52:09 -040022972BALIGN32
Mike Klein2229b572017-04-21 10:30:29 -040022973
Mike Klein7c4af542017-03-29 18:21:14 -040022974HIDDEN _sk_start_pipeline_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022975.globl _sk_start_pipeline_sse2
Mike Klein86714282017-04-13 17:37:38 -040022976FUNCTION(_sk_start_pipeline_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022977_sk_start_pipeline_sse2:
22978 .byte 65,87 // push %r15
22979 .byte 65,86 // push %r14
22980 .byte 65,85 // push %r13
22981 .byte 65,84 // push %r12
22982 .byte 83 // push %rbx
22983 .byte 73,137,207 // mov %rcx,%r15
22984 .byte 73,137,214 // mov %rdx,%r14
22985 .byte 72,137,251 // mov %rdi,%rbx
22986 .byte 72,173 // lods %ds:(%rsi),%rax
22987 .byte 73,137,196 // mov %rax,%r12
22988 .byte 73,137,245 // mov %rsi,%r13
22989 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
22990 .byte 76,57,248 // cmp %r15,%rax
22991 .byte 118,5 // jbe 28 <_sk_start_pipeline_sse2+0x28>
22992 .byte 72,137,216 // mov %rbx,%rax
22993 .byte 235,52 // jmp 5c <_sk_start_pipeline_sse2+0x5c>
22994 .byte 15,87,192 // xorps %xmm0,%xmm0
22995 .byte 15,87,201 // xorps %xmm1,%xmm1
22996 .byte 15,87,210 // xorps %xmm2,%xmm2
22997 .byte 15,87,219 // xorps %xmm3,%xmm3
22998 .byte 15,87,228 // xorps %xmm4,%xmm4
22999 .byte 15,87,237 // xorps %xmm5,%xmm5
23000 .byte 15,87,246 // xorps %xmm6,%xmm6
23001 .byte 15,87,255 // xorps %xmm7,%xmm7
23002 .byte 72,137,223 // mov %rbx,%rdi
23003 .byte 76,137,238 // mov %r13,%rsi
23004 .byte 76,137,242 // mov %r14,%rdx
23005 .byte 65,255,212 // callq *%r12
23006 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
23007 .byte 72,131,195,8 // add $0x8,%rbx
23008 .byte 76,57,251 // cmp %r15,%rbx
23009 .byte 72,137,195 // mov %rax,%rbx
23010 .byte 118,204 // jbe 28 <_sk_start_pipeline_sse2+0x28>
23011 .byte 91 // pop %rbx
23012 .byte 65,92 // pop %r12
23013 .byte 65,93 // pop %r13
23014 .byte 65,94 // pop %r14
23015 .byte 65,95 // pop %r15
23016 .byte 195 // retq
23017
Mike Klein7c4af542017-03-29 18:21:14 -040023018HIDDEN _sk_just_return_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023019.globl _sk_just_return_sse2
Mike Klein86714282017-04-13 17:37:38 -040023020FUNCTION(_sk_just_return_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023021_sk_just_return_sse2:
23022 .byte 195 // retq
23023
Mike Klein7c4af542017-03-29 18:21:14 -040023024HIDDEN _sk_seed_shader_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023025.globl _sk_seed_shader_sse2
Mike Klein86714282017-04-13 17:37:38 -040023026FUNCTION(_sk_seed_shader_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023027_sk_seed_shader_sse2:
23028 .byte 72,173 // lods %ds:(%rsi),%rax
23029 .byte 102,15,110,199 // movd %edi,%xmm0
23030 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
23031 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040023032 .byte 15,40,21,132,61,0,0 // movaps 0x3d84(%rip),%xmm2 # 3e00 <_sk_callback_sse2+0xd9>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023033 .byte 15,88,202 // addps %xmm2,%xmm1
23034 .byte 15,16,2 // movups (%rdx),%xmm0
23035 .byte 15,88,193 // addps %xmm1,%xmm0
23036 .byte 102,15,110,8 // movd (%rax),%xmm1
23037 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
23038 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
23039 .byte 15,88,202 // addps %xmm2,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040023040 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040023041 .byte 15,40,21,115,61,0,0 // movaps 0x3d73(%rip),%xmm2 # 3e10 <_sk_callback_sse2+0xe9>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023042 .byte 15,87,219 // xorps %xmm3,%xmm3
23043 .byte 15,87,228 // xorps %xmm4,%xmm4
23044 .byte 15,87,237 // xorps %xmm5,%xmm5
23045 .byte 15,87,246 // xorps %xmm6,%xmm6
23046 .byte 15,87,255 // xorps %xmm7,%xmm7
23047 .byte 255,224 // jmpq *%rax
23048
Mike Klein7c4af542017-03-29 18:21:14 -040023049HIDDEN _sk_constant_color_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023050.globl _sk_constant_color_sse2
Mike Klein86714282017-04-13 17:37:38 -040023051FUNCTION(_sk_constant_color_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023052_sk_constant_color_sse2:
23053 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8a823fa2017-04-05 17:29:26 -040023054 .byte 243,15,16,0 // movss (%rax),%xmm0
23055 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040023056 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040023057 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
23058 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
23059 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
23060 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
23061 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040023062 .byte 72,173 // lods %ds:(%rsi),%rax
23063 .byte 255,224 // jmpq *%rax
23064
Mike Klein7c4af542017-03-29 18:21:14 -040023065HIDDEN _sk_clear_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023066.globl _sk_clear_sse2
Mike Klein86714282017-04-13 17:37:38 -040023067FUNCTION(_sk_clear_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023068_sk_clear_sse2:
23069 .byte 72,173 // lods %ds:(%rsi),%rax
23070 .byte 15,87,192 // xorps %xmm0,%xmm0
23071 .byte 15,87,201 // xorps %xmm1,%xmm1
23072 .byte 15,87,210 // xorps %xmm2,%xmm2
23073 .byte 15,87,219 // xorps %xmm3,%xmm3
23074 .byte 255,224 // jmpq *%rax
23075
Mike Kleinaaca1e42017-03-31 09:29:01 -040023076HIDDEN _sk_srcatop_sse2
23077.globl _sk_srcatop_sse2
Mike Klein86714282017-04-13 17:37:38 -040023078FUNCTION(_sk_srcatop_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040023079_sk_srcatop_sse2:
23080 .byte 15,89,199 // mulps %xmm7,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040023081 .byte 68,15,40,5,46,61,0,0 // movaps 0x3d2e(%rip),%xmm8 # 3e20 <_sk_callback_sse2+0xf9>
Mike Kleinaaca1e42017-03-31 09:29:01 -040023082 .byte 68,15,92,195 // subps %xmm3,%xmm8
23083 .byte 69,15,40,200 // movaps %xmm8,%xmm9
23084 .byte 68,15,89,204 // mulps %xmm4,%xmm9
23085 .byte 65,15,88,193 // addps %xmm9,%xmm0
23086 .byte 15,89,207 // mulps %xmm7,%xmm1
23087 .byte 69,15,40,200 // movaps %xmm8,%xmm9
23088 .byte 68,15,89,205 // mulps %xmm5,%xmm9
23089 .byte 65,15,88,201 // addps %xmm9,%xmm1
23090 .byte 15,89,215 // mulps %xmm7,%xmm2
23091 .byte 69,15,40,200 // movaps %xmm8,%xmm9
23092 .byte 68,15,89,206 // mulps %xmm6,%xmm9
23093 .byte 65,15,88,209 // addps %xmm9,%xmm2
23094 .byte 15,89,223 // mulps %xmm7,%xmm3
23095 .byte 68,15,89,199 // mulps %xmm7,%xmm8
23096 .byte 65,15,88,216 // addps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040023097 .byte 72,173 // lods %ds:(%rsi),%rax
23098 .byte 255,224 // jmpq *%rax
23099
Mike Kleinaaca1e42017-03-31 09:29:01 -040023100HIDDEN _sk_dstatop_sse2
23101.globl _sk_dstatop_sse2
Mike Klein86714282017-04-13 17:37:38 -040023102FUNCTION(_sk_dstatop_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040023103_sk_dstatop_sse2:
23104 .byte 68,15,40,195 // movaps %xmm3,%xmm8
23105 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040023106 .byte 68,15,40,13,241,60,0,0 // movaps 0x3cf1(%rip),%xmm9 # 3e30 <_sk_callback_sse2+0x109>
Mike Kleinaaca1e42017-03-31 09:29:01 -040023107 .byte 68,15,92,207 // subps %xmm7,%xmm9
23108 .byte 65,15,89,193 // mulps %xmm9,%xmm0
23109 .byte 65,15,88,192 // addps %xmm8,%xmm0
23110 .byte 68,15,40,195 // movaps %xmm3,%xmm8
23111 .byte 68,15,89,197 // mulps %xmm5,%xmm8
23112 .byte 65,15,89,201 // mulps %xmm9,%xmm1
23113 .byte 65,15,88,200 // addps %xmm8,%xmm1
23114 .byte 68,15,40,195 // movaps %xmm3,%xmm8
23115 .byte 68,15,89,198 // mulps %xmm6,%xmm8
23116 .byte 65,15,89,209 // mulps %xmm9,%xmm2
23117 .byte 65,15,88,208 // addps %xmm8,%xmm2
23118 .byte 68,15,89,203 // mulps %xmm3,%xmm9
23119 .byte 15,89,223 // mulps %xmm7,%xmm3
23120 .byte 65,15,88,217 // addps %xmm9,%xmm3
23121 .byte 72,173 // lods %ds:(%rsi),%rax
23122 .byte 255,224 // jmpq *%rax
23123
23124HIDDEN _sk_srcin_sse2
23125.globl _sk_srcin_sse2
Mike Klein86714282017-04-13 17:37:38 -040023126FUNCTION(_sk_srcin_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040023127_sk_srcin_sse2:
23128 .byte 15,89,199 // mulps %xmm7,%xmm0
23129 .byte 15,89,207 // mulps %xmm7,%xmm1
23130 .byte 15,89,215 // mulps %xmm7,%xmm2
23131 .byte 15,89,223 // mulps %xmm7,%xmm3
23132 .byte 72,173 // lods %ds:(%rsi),%rax
23133 .byte 255,224 // jmpq *%rax
23134
23135HIDDEN _sk_dstin_sse2
23136.globl _sk_dstin_sse2
Mike Klein86714282017-04-13 17:37:38 -040023137FUNCTION(_sk_dstin_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040023138_sk_dstin_sse2:
23139 .byte 15,40,195 // movaps %xmm3,%xmm0
23140 .byte 15,89,196 // mulps %xmm4,%xmm0
23141 .byte 15,40,203 // movaps %xmm3,%xmm1
23142 .byte 15,89,205 // mulps %xmm5,%xmm1
23143 .byte 15,40,211 // movaps %xmm3,%xmm2
23144 .byte 15,89,214 // mulps %xmm6,%xmm2
23145 .byte 15,89,223 // mulps %xmm7,%xmm3
23146 .byte 72,173 // lods %ds:(%rsi),%rax
23147 .byte 255,224 // jmpq *%rax
23148
23149HIDDEN _sk_srcout_sse2
23150.globl _sk_srcout_sse2
Mike Klein86714282017-04-13 17:37:38 -040023151FUNCTION(_sk_srcout_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040023152_sk_srcout_sse2:
Mike Kleinfb11acd2017-05-01 14:22:10 -040023153 .byte 68,15,40,5,149,60,0,0 // movaps 0x3c95(%rip),%xmm8 # 3e40 <_sk_callback_sse2+0x119>
Mike Kleinaaca1e42017-03-31 09:29:01 -040023154 .byte 68,15,92,199 // subps %xmm7,%xmm8
23155 .byte 65,15,89,192 // mulps %xmm8,%xmm0
23156 .byte 65,15,89,200 // mulps %xmm8,%xmm1
23157 .byte 65,15,89,208 // mulps %xmm8,%xmm2
23158 .byte 65,15,89,216 // mulps %xmm8,%xmm3
23159 .byte 72,173 // lods %ds:(%rsi),%rax
23160 .byte 255,224 // jmpq *%rax
23161
23162HIDDEN _sk_dstout_sse2
23163.globl _sk_dstout_sse2
Mike Klein86714282017-04-13 17:37:38 -040023164FUNCTION(_sk_dstout_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040023165_sk_dstout_sse2:
Mike Kleinfb11acd2017-05-01 14:22:10 -040023166 .byte 68,15,40,5,133,60,0,0 // movaps 0x3c85(%rip),%xmm8 # 3e50 <_sk_callback_sse2+0x129>
Mike Kleinaaca1e42017-03-31 09:29:01 -040023167 .byte 68,15,92,195 // subps %xmm3,%xmm8
23168 .byte 65,15,40,192 // movaps %xmm8,%xmm0
23169 .byte 15,89,196 // mulps %xmm4,%xmm0
23170 .byte 65,15,40,200 // movaps %xmm8,%xmm1
23171 .byte 15,89,205 // mulps %xmm5,%xmm1
23172 .byte 65,15,40,208 // movaps %xmm8,%xmm2
23173 .byte 15,89,214 // mulps %xmm6,%xmm2
23174 .byte 68,15,89,199 // mulps %xmm7,%xmm8
23175 .byte 72,173 // lods %ds:(%rsi),%rax
23176 .byte 65,15,40,216 // movaps %xmm8,%xmm3
23177 .byte 255,224 // jmpq *%rax
23178
Mike Klein7c4af542017-03-29 18:21:14 -040023179HIDDEN _sk_srcover_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023180.globl _sk_srcover_sse2
Mike Klein86714282017-04-13 17:37:38 -040023181FUNCTION(_sk_srcover_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023182_sk_srcover_sse2:
Mike Kleinfb11acd2017-05-01 14:22:10 -040023183 .byte 68,15,40,5,104,60,0,0 // movaps 0x3c68(%rip),%xmm8 # 3e60 <_sk_callback_sse2+0x139>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023184 .byte 68,15,92,195 // subps %xmm3,%xmm8
23185 .byte 69,15,40,200 // movaps %xmm8,%xmm9
23186 .byte 68,15,89,204 // mulps %xmm4,%xmm9
23187 .byte 65,15,88,193 // addps %xmm9,%xmm0
23188 .byte 69,15,40,200 // movaps %xmm8,%xmm9
23189 .byte 68,15,89,205 // mulps %xmm5,%xmm9
23190 .byte 65,15,88,201 // addps %xmm9,%xmm1
23191 .byte 69,15,40,200 // movaps %xmm8,%xmm9
23192 .byte 68,15,89,206 // mulps %xmm6,%xmm9
23193 .byte 65,15,88,209 // addps %xmm9,%xmm2
23194 .byte 68,15,89,199 // mulps %xmm7,%xmm8
23195 .byte 65,15,88,216 // addps %xmm8,%xmm3
23196 .byte 72,173 // lods %ds:(%rsi),%rax
23197 .byte 255,224 // jmpq *%rax
23198
Mike Klein7c4af542017-03-29 18:21:14 -040023199HIDDEN _sk_dstover_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023200.globl _sk_dstover_sse2
Mike Klein86714282017-04-13 17:37:38 -040023201FUNCTION(_sk_dstover_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023202_sk_dstover_sse2:
Mike Kleinfb11acd2017-05-01 14:22:10 -040023203 .byte 68,15,40,5,60,60,0,0 // movaps 0x3c3c(%rip),%xmm8 # 3e70 <_sk_callback_sse2+0x149>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023204 .byte 68,15,92,199 // subps %xmm7,%xmm8
23205 .byte 65,15,89,192 // mulps %xmm8,%xmm0
23206 .byte 15,88,196 // addps %xmm4,%xmm0
23207 .byte 65,15,89,200 // mulps %xmm8,%xmm1
23208 .byte 15,88,205 // addps %xmm5,%xmm1
23209 .byte 65,15,89,208 // mulps %xmm8,%xmm2
23210 .byte 15,88,214 // addps %xmm6,%xmm2
23211 .byte 65,15,89,216 // mulps %xmm8,%xmm3
23212 .byte 15,88,223 // addps %xmm7,%xmm3
23213 .byte 72,173 // lods %ds:(%rsi),%rax
23214 .byte 255,224 // jmpq *%rax
23215
Mike Kleinaaca1e42017-03-31 09:29:01 -040023216HIDDEN _sk_modulate_sse2
23217.globl _sk_modulate_sse2
Mike Klein86714282017-04-13 17:37:38 -040023218FUNCTION(_sk_modulate_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040023219_sk_modulate_sse2:
23220 .byte 15,89,196 // mulps %xmm4,%xmm0
23221 .byte 15,89,205 // mulps %xmm5,%xmm1
23222 .byte 15,89,214 // mulps %xmm6,%xmm2
23223 .byte 15,89,223 // mulps %xmm7,%xmm3
23224 .byte 72,173 // lods %ds:(%rsi),%rax
23225 .byte 255,224 // jmpq *%rax
23226
23227HIDDEN _sk_multiply_sse2
23228.globl _sk_multiply_sse2
Mike Klein86714282017-04-13 17:37:38 -040023229FUNCTION(_sk_multiply_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040023230_sk_multiply_sse2:
Mike Kleinfb11acd2017-05-01 14:22:10 -040023231 .byte 68,15,40,5,16,60,0,0 // movaps 0x3c10(%rip),%xmm8 # 3e80 <_sk_callback_sse2+0x159>
Mike Kleinaaca1e42017-03-31 09:29:01 -040023232 .byte 69,15,40,200 // movaps %xmm8,%xmm9
23233 .byte 68,15,92,207 // subps %xmm7,%xmm9
23234 .byte 69,15,40,209 // movaps %xmm9,%xmm10
23235 .byte 68,15,89,208 // mulps %xmm0,%xmm10
23236 .byte 68,15,92,195 // subps %xmm3,%xmm8
23237 .byte 69,15,40,216 // movaps %xmm8,%xmm11
23238 .byte 68,15,89,220 // mulps %xmm4,%xmm11
23239 .byte 69,15,88,218 // addps %xmm10,%xmm11
23240 .byte 15,89,196 // mulps %xmm4,%xmm0
23241 .byte 65,15,88,195 // addps %xmm11,%xmm0
23242 .byte 69,15,40,209 // movaps %xmm9,%xmm10
23243 .byte 68,15,89,209 // mulps %xmm1,%xmm10
23244 .byte 69,15,40,216 // movaps %xmm8,%xmm11
23245 .byte 68,15,89,221 // mulps %xmm5,%xmm11
23246 .byte 69,15,88,218 // addps %xmm10,%xmm11
23247 .byte 15,89,205 // mulps %xmm5,%xmm1
23248 .byte 65,15,88,203 // addps %xmm11,%xmm1
23249 .byte 69,15,40,209 // movaps %xmm9,%xmm10
23250 .byte 68,15,89,210 // mulps %xmm2,%xmm10
23251 .byte 69,15,40,216 // movaps %xmm8,%xmm11
23252 .byte 68,15,89,222 // mulps %xmm6,%xmm11
23253 .byte 69,15,88,218 // addps %xmm10,%xmm11
23254 .byte 15,89,214 // mulps %xmm6,%xmm2
23255 .byte 65,15,88,211 // addps %xmm11,%xmm2
23256 .byte 68,15,89,203 // mulps %xmm3,%xmm9
23257 .byte 68,15,89,199 // mulps %xmm7,%xmm8
23258 .byte 69,15,88,193 // addps %xmm9,%xmm8
23259 .byte 15,89,223 // mulps %xmm7,%xmm3
23260 .byte 65,15,88,216 // addps %xmm8,%xmm3
23261 .byte 72,173 // lods %ds:(%rsi),%rax
23262 .byte 255,224 // jmpq *%rax
23263
23264HIDDEN _sk_plus__sse2
23265.globl _sk_plus__sse2
Mike Klein86714282017-04-13 17:37:38 -040023266FUNCTION(_sk_plus__sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040023267_sk_plus__sse2:
23268 .byte 15,88,196 // addps %xmm4,%xmm0
23269 .byte 15,88,205 // addps %xmm5,%xmm1
23270 .byte 15,88,214 // addps %xmm6,%xmm2
23271 .byte 15,88,223 // addps %xmm7,%xmm3
23272 .byte 72,173 // lods %ds:(%rsi),%rax
23273 .byte 255,224 // jmpq *%rax
23274
23275HIDDEN _sk_screen_sse2
23276.globl _sk_screen_sse2
Mike Klein86714282017-04-13 17:37:38 -040023277FUNCTION(_sk_screen_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040023278_sk_screen_sse2:
23279 .byte 68,15,40,192 // movaps %xmm0,%xmm8
23280 .byte 68,15,88,196 // addps %xmm4,%xmm8
23281 .byte 15,89,196 // mulps %xmm4,%xmm0
23282 .byte 68,15,92,192 // subps %xmm0,%xmm8
23283 .byte 68,15,40,201 // movaps %xmm1,%xmm9
23284 .byte 68,15,88,205 // addps %xmm5,%xmm9
23285 .byte 15,89,205 // mulps %xmm5,%xmm1
23286 .byte 68,15,92,201 // subps %xmm1,%xmm9
23287 .byte 68,15,40,210 // movaps %xmm2,%xmm10
23288 .byte 68,15,88,214 // addps %xmm6,%xmm10
23289 .byte 15,89,214 // mulps %xmm6,%xmm2
23290 .byte 68,15,92,210 // subps %xmm2,%xmm10
23291 .byte 68,15,40,219 // movaps %xmm3,%xmm11
23292 .byte 68,15,88,223 // addps %xmm7,%xmm11
23293 .byte 15,89,223 // mulps %xmm7,%xmm3
23294 .byte 68,15,92,219 // subps %xmm3,%xmm11
23295 .byte 72,173 // lods %ds:(%rsi),%rax
23296 .byte 65,15,40,192 // movaps %xmm8,%xmm0
23297 .byte 65,15,40,201 // movaps %xmm9,%xmm1
23298 .byte 65,15,40,210 // movaps %xmm10,%xmm2
23299 .byte 65,15,40,219 // movaps %xmm11,%xmm3
23300 .byte 255,224 // jmpq *%rax
23301
23302HIDDEN _sk_xor__sse2
23303.globl _sk_xor__sse2
Mike Klein86714282017-04-13 17:37:38 -040023304FUNCTION(_sk_xor__sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040023305_sk_xor__sse2:
23306 .byte 68,15,40,195 // movaps %xmm3,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040023307 .byte 15,40,29,65,59,0,0 // movaps 0x3b41(%rip),%xmm3 # 3e90 <_sk_callback_sse2+0x169>
Mike Kleinaaca1e42017-03-31 09:29:01 -040023308 .byte 68,15,40,203 // movaps %xmm3,%xmm9
23309 .byte 68,15,92,207 // subps %xmm7,%xmm9
23310 .byte 65,15,89,193 // mulps %xmm9,%xmm0
23311 .byte 65,15,92,216 // subps %xmm8,%xmm3
23312 .byte 68,15,40,211 // movaps %xmm3,%xmm10
23313 .byte 68,15,89,212 // mulps %xmm4,%xmm10
23314 .byte 65,15,88,194 // addps %xmm10,%xmm0
23315 .byte 65,15,89,201 // mulps %xmm9,%xmm1
23316 .byte 68,15,40,211 // movaps %xmm3,%xmm10
23317 .byte 68,15,89,213 // mulps %xmm5,%xmm10
23318 .byte 65,15,88,202 // addps %xmm10,%xmm1
23319 .byte 65,15,89,209 // mulps %xmm9,%xmm2
23320 .byte 68,15,40,211 // movaps %xmm3,%xmm10
23321 .byte 68,15,89,214 // mulps %xmm6,%xmm10
23322 .byte 65,15,88,210 // addps %xmm10,%xmm2
23323 .byte 69,15,89,200 // mulps %xmm8,%xmm9
23324 .byte 15,89,223 // mulps %xmm7,%xmm3
23325 .byte 65,15,88,217 // addps %xmm9,%xmm3
23326 .byte 72,173 // lods %ds:(%rsi),%rax
23327 .byte 255,224 // jmpq *%rax
23328
Mike Klein66b09ab2017-03-31 10:29:40 -040023329HIDDEN _sk_darken_sse2
23330.globl _sk_darken_sse2
Mike Klein86714282017-04-13 17:37:38 -040023331FUNCTION(_sk_darken_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040023332_sk_darken_sse2:
23333 .byte 68,15,40,193 // movaps %xmm1,%xmm8
23334 .byte 68,15,40,200 // movaps %xmm0,%xmm9
23335 .byte 15,88,196 // addps %xmm4,%xmm0
23336 .byte 68,15,89,207 // mulps %xmm7,%xmm9
23337 .byte 15,40,203 // movaps %xmm3,%xmm1
23338 .byte 15,89,204 // mulps %xmm4,%xmm1
23339 .byte 68,15,95,201 // maxps %xmm1,%xmm9
23340 .byte 65,15,92,193 // subps %xmm9,%xmm0
23341 .byte 65,15,40,200 // movaps %xmm8,%xmm1
23342 .byte 15,88,205 // addps %xmm5,%xmm1
23343 .byte 68,15,89,199 // mulps %xmm7,%xmm8
23344 .byte 68,15,40,203 // movaps %xmm3,%xmm9
23345 .byte 68,15,89,205 // mulps %xmm5,%xmm9
23346 .byte 69,15,95,193 // maxps %xmm9,%xmm8
23347 .byte 65,15,92,200 // subps %xmm8,%xmm1
23348 .byte 68,15,40,194 // movaps %xmm2,%xmm8
23349 .byte 68,15,88,198 // addps %xmm6,%xmm8
23350 .byte 15,89,215 // mulps %xmm7,%xmm2
23351 .byte 68,15,40,203 // movaps %xmm3,%xmm9
23352 .byte 68,15,89,206 // mulps %xmm6,%xmm9
23353 .byte 65,15,95,209 // maxps %xmm9,%xmm2
23354 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040023355 .byte 15,40,21,172,58,0,0 // movaps 0x3aac(%rip),%xmm2 # 3ea0 <_sk_callback_sse2+0x179>
Mike Klein66b09ab2017-03-31 10:29:40 -040023356 .byte 15,92,211 // subps %xmm3,%xmm2
23357 .byte 15,89,215 // mulps %xmm7,%xmm2
23358 .byte 15,88,218 // addps %xmm2,%xmm3
23359 .byte 72,173 // lods %ds:(%rsi),%rax
23360 .byte 65,15,40,208 // movaps %xmm8,%xmm2
23361 .byte 255,224 // jmpq *%rax
23362
23363HIDDEN _sk_lighten_sse2
23364.globl _sk_lighten_sse2
Mike Klein86714282017-04-13 17:37:38 -040023365FUNCTION(_sk_lighten_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040023366_sk_lighten_sse2:
23367 .byte 68,15,40,193 // movaps %xmm1,%xmm8
23368 .byte 68,15,40,200 // movaps %xmm0,%xmm9
23369 .byte 15,88,196 // addps %xmm4,%xmm0
23370 .byte 68,15,89,207 // mulps %xmm7,%xmm9
23371 .byte 15,40,203 // movaps %xmm3,%xmm1
23372 .byte 15,89,204 // mulps %xmm4,%xmm1
23373 .byte 68,15,93,201 // minps %xmm1,%xmm9
23374 .byte 65,15,92,193 // subps %xmm9,%xmm0
23375 .byte 65,15,40,200 // movaps %xmm8,%xmm1
23376 .byte 15,88,205 // addps %xmm5,%xmm1
23377 .byte 68,15,89,199 // mulps %xmm7,%xmm8
23378 .byte 68,15,40,203 // movaps %xmm3,%xmm9
23379 .byte 68,15,89,205 // mulps %xmm5,%xmm9
23380 .byte 69,15,93,193 // minps %xmm9,%xmm8
23381 .byte 65,15,92,200 // subps %xmm8,%xmm1
23382 .byte 68,15,40,194 // movaps %xmm2,%xmm8
23383 .byte 68,15,88,198 // addps %xmm6,%xmm8
23384 .byte 15,89,215 // mulps %xmm7,%xmm2
23385 .byte 68,15,40,203 // movaps %xmm3,%xmm9
23386 .byte 68,15,89,206 // mulps %xmm6,%xmm9
23387 .byte 65,15,93,209 // minps %xmm9,%xmm2
23388 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040023389 .byte 15,40,21,81,58,0,0 // movaps 0x3a51(%rip),%xmm2 # 3eb0 <_sk_callback_sse2+0x189>
Mike Klein66b09ab2017-03-31 10:29:40 -040023390 .byte 15,92,211 // subps %xmm3,%xmm2
23391 .byte 15,89,215 // mulps %xmm7,%xmm2
23392 .byte 15,88,218 // addps %xmm2,%xmm3
23393 .byte 72,173 // lods %ds:(%rsi),%rax
23394 .byte 65,15,40,208 // movaps %xmm8,%xmm2
23395 .byte 255,224 // jmpq *%rax
23396
23397HIDDEN _sk_difference_sse2
23398.globl _sk_difference_sse2
Mike Klein86714282017-04-13 17:37:38 -040023399FUNCTION(_sk_difference_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040023400_sk_difference_sse2:
23401 .byte 68,15,40,193 // movaps %xmm1,%xmm8
23402 .byte 68,15,40,200 // movaps %xmm0,%xmm9
23403 .byte 15,88,196 // addps %xmm4,%xmm0
23404 .byte 68,15,89,207 // mulps %xmm7,%xmm9
23405 .byte 15,40,203 // movaps %xmm3,%xmm1
23406 .byte 15,89,204 // mulps %xmm4,%xmm1
23407 .byte 68,15,93,201 // minps %xmm1,%xmm9
23408 .byte 69,15,88,201 // addps %xmm9,%xmm9
23409 .byte 65,15,92,193 // subps %xmm9,%xmm0
23410 .byte 65,15,40,200 // movaps %xmm8,%xmm1
23411 .byte 15,88,205 // addps %xmm5,%xmm1
23412 .byte 68,15,89,199 // mulps %xmm7,%xmm8
23413 .byte 68,15,40,203 // movaps %xmm3,%xmm9
23414 .byte 68,15,89,205 // mulps %xmm5,%xmm9
23415 .byte 69,15,93,193 // minps %xmm9,%xmm8
23416 .byte 69,15,88,192 // addps %xmm8,%xmm8
23417 .byte 65,15,92,200 // subps %xmm8,%xmm1
23418 .byte 68,15,40,194 // movaps %xmm2,%xmm8
23419 .byte 68,15,88,198 // addps %xmm6,%xmm8
23420 .byte 15,89,215 // mulps %xmm7,%xmm2
23421 .byte 68,15,40,203 // movaps %xmm3,%xmm9
23422 .byte 68,15,89,206 // mulps %xmm6,%xmm9
23423 .byte 65,15,93,209 // minps %xmm9,%xmm2
23424 .byte 15,88,210 // addps %xmm2,%xmm2
23425 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040023426 .byte 15,40,21,235,57,0,0 // movaps 0x39eb(%rip),%xmm2 # 3ec0 <_sk_callback_sse2+0x199>
Mike Klein66b09ab2017-03-31 10:29:40 -040023427 .byte 15,92,211 // subps %xmm3,%xmm2
23428 .byte 15,89,215 // mulps %xmm7,%xmm2
23429 .byte 15,88,218 // addps %xmm2,%xmm3
23430 .byte 72,173 // lods %ds:(%rsi),%rax
23431 .byte 65,15,40,208 // movaps %xmm8,%xmm2
23432 .byte 255,224 // jmpq *%rax
23433
23434HIDDEN _sk_exclusion_sse2
23435.globl _sk_exclusion_sse2
Mike Klein86714282017-04-13 17:37:38 -040023436FUNCTION(_sk_exclusion_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040023437_sk_exclusion_sse2:
Mike Kleinfe560a82017-05-01 12:56:35 -040023438 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Klein66b09ab2017-03-31 10:29:40 -040023439 .byte 15,88,196 // addps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023440 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Klein66b09ab2017-03-31 10:29:40 -040023441 .byte 69,15,88,192 // addps %xmm8,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040023442 .byte 65,15,92,192 // subps %xmm8,%xmm0
23443 .byte 68,15,40,193 // movaps %xmm1,%xmm8
23444 .byte 68,15,88,197 // addps %xmm5,%xmm8
23445 .byte 15,89,205 // mulps %xmm5,%xmm1
23446 .byte 15,88,201 // addps %xmm1,%xmm1
23447 .byte 68,15,92,193 // subps %xmm1,%xmm8
23448 .byte 68,15,40,202 // movaps %xmm2,%xmm9
23449 .byte 68,15,88,206 // addps %xmm6,%xmm9
Mike Klein66b09ab2017-03-31 10:29:40 -040023450 .byte 15,89,214 // mulps %xmm6,%xmm2
23451 .byte 15,88,210 // addps %xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040023452 .byte 68,15,92,202 // subps %xmm2,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040023453 .byte 15,40,13,172,57,0,0 // movaps 0x39ac(%rip),%xmm1 # 3ed0 <_sk_callback_sse2+0x1a9>
Mike Kleinfe560a82017-05-01 12:56:35 -040023454 .byte 15,92,203 // subps %xmm3,%xmm1
23455 .byte 15,89,207 // mulps %xmm7,%xmm1
23456 .byte 15,88,217 // addps %xmm1,%xmm3
Mike Klein66b09ab2017-03-31 10:29:40 -040023457 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040023458 .byte 65,15,40,200 // movaps %xmm8,%xmm1
23459 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Klein66b09ab2017-03-31 10:29:40 -040023460 .byte 255,224 // jmpq *%rax
23461
Mike Klein61b84162017-03-31 11:48:14 -040023462HIDDEN _sk_colorburn_sse2
23463.globl _sk_colorburn_sse2
Mike Klein86714282017-04-13 17:37:38 -040023464FUNCTION(_sk_colorburn_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040023465_sk_colorburn_sse2:
Mike Kleinfe560a82017-05-01 12:56:35 -040023466 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040023467 .byte 68,15,40,21,155,57,0,0 // movaps 0x399b(%rip),%xmm10 # 3ee0 <_sk_callback_sse2+0x1b9>
Mike Kleinfe560a82017-05-01 12:56:35 -040023468 .byte 69,15,40,202 // movaps %xmm10,%xmm9
23469 .byte 68,15,92,207 // subps %xmm7,%xmm9
Mike Klein61b84162017-03-31 11:48:14 -040023470 .byte 69,15,40,217 // movaps %xmm9,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040023471 .byte 69,15,89,216 // mulps %xmm8,%xmm11
23472 .byte 15,40,199 // movaps %xmm7,%xmm0
23473 .byte 15,92,196 // subps %xmm4,%xmm0
23474 .byte 15,89,195 // mulps %xmm3,%xmm0
23475 .byte 65,15,94,192 // divps %xmm8,%xmm0
23476 .byte 68,15,40,231 // movaps %xmm7,%xmm12
23477 .byte 68,15,93,224 // minps %xmm0,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040023478 .byte 68,15,40,239 // movaps %xmm7,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040023479 .byte 69,15,92,236 // subps %xmm12,%xmm13
23480 .byte 68,15,89,235 // mulps %xmm3,%xmm13
23481 .byte 69,15,88,235 // addps %xmm11,%xmm13
23482 .byte 65,15,40,195 // movaps %xmm11,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040023483 .byte 15,88,196 // addps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023484 .byte 69,15,87,219 // xorps %xmm11,%xmm11
23485 .byte 69,15,40,224 // movaps %xmm8,%xmm12
23486 .byte 69,15,194,227,0 // cmpeqps %xmm11,%xmm12
23487 .byte 68,15,92,211 // subps %xmm3,%xmm10
23488 .byte 69,15,84,196 // andps %xmm12,%xmm8
23489 .byte 69,15,85,229 // andnps %xmm13,%xmm12
23490 .byte 69,15,40,234 // movaps %xmm10,%xmm13
23491 .byte 68,15,89,236 // mulps %xmm4,%xmm13
23492 .byte 69,15,86,224 // orps %xmm8,%xmm12
23493 .byte 68,15,40,196 // movaps %xmm4,%xmm8
23494 .byte 68,15,194,199,0 // cmpeqps %xmm7,%xmm8
23495 .byte 69,15,88,229 // addps %xmm13,%xmm12
23496 .byte 65,15,84,192 // andps %xmm8,%xmm0
23497 .byte 69,15,85,196 // andnps %xmm12,%xmm8
23498 .byte 65,15,86,192 // orps %xmm8,%xmm0
23499 .byte 69,15,40,193 // movaps %xmm9,%xmm8
23500 .byte 68,15,89,193 // mulps %xmm1,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040023501 .byte 68,15,40,231 // movaps %xmm7,%xmm12
23502 .byte 68,15,92,229 // subps %xmm5,%xmm12
23503 .byte 68,15,89,227 // mulps %xmm3,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040023504 .byte 68,15,94,225 // divps %xmm1,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040023505 .byte 68,15,40,239 // movaps %xmm7,%xmm13
23506 .byte 69,15,93,236 // minps %xmm12,%xmm13
23507 .byte 68,15,40,231 // movaps %xmm7,%xmm12
23508 .byte 69,15,92,229 // subps %xmm13,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040023509 .byte 68,15,40,233 // movaps %xmm1,%xmm13
23510 .byte 69,15,194,235,0 // cmpeqps %xmm11,%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040023511 .byte 68,15,89,227 // mulps %xmm3,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040023512 .byte 69,15,88,224 // addps %xmm8,%xmm12
23513 .byte 65,15,84,205 // andps %xmm13,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023514 .byte 69,15,85,236 // andnps %xmm12,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040023515 .byte 68,15,88,197 // addps %xmm5,%xmm8
23516 .byte 68,15,86,233 // orps %xmm1,%xmm13
23517 .byte 65,15,40,202 // movaps %xmm10,%xmm1
23518 .byte 15,89,205 // mulps %xmm5,%xmm1
23519 .byte 68,15,88,233 // addps %xmm1,%xmm13
23520 .byte 15,40,205 // movaps %xmm5,%xmm1
23521 .byte 15,194,207,0 // cmpeqps %xmm7,%xmm1
23522 .byte 68,15,84,193 // andps %xmm1,%xmm8
23523 .byte 65,15,85,205 // andnps %xmm13,%xmm1
23524 .byte 68,15,86,193 // orps %xmm1,%xmm8
23525 .byte 15,40,207 // movaps %xmm7,%xmm1
23526 .byte 15,92,206 // subps %xmm6,%xmm1
23527 .byte 15,89,203 // mulps %xmm3,%xmm1
23528 .byte 15,94,202 // divps %xmm2,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023529 .byte 68,15,40,231 // movaps %xmm7,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040023530 .byte 68,15,93,225 // minps %xmm1,%xmm12
23531 .byte 15,40,207 // movaps %xmm7,%xmm1
23532 .byte 65,15,92,204 // subps %xmm12,%xmm1
23533 .byte 68,15,89,202 // mulps %xmm2,%xmm9
23534 .byte 68,15,194,218,0 // cmpeqps %xmm2,%xmm11
23535 .byte 15,89,203 // mulps %xmm3,%xmm1
23536 .byte 65,15,88,201 // addps %xmm9,%xmm1
23537 .byte 65,15,84,211 // andps %xmm11,%xmm2
23538 .byte 68,15,85,217 // andnps %xmm1,%xmm11
23539 .byte 68,15,88,206 // addps %xmm6,%xmm9
23540 .byte 68,15,86,218 // orps %xmm2,%xmm11
23541 .byte 65,15,40,202 // movaps %xmm10,%xmm1
23542 .byte 15,89,206 // mulps %xmm6,%xmm1
23543 .byte 68,15,88,217 // addps %xmm1,%xmm11
23544 .byte 15,40,206 // movaps %xmm6,%xmm1
23545 .byte 15,194,207,0 // cmpeqps %xmm7,%xmm1
23546 .byte 68,15,84,201 // andps %xmm1,%xmm9
23547 .byte 65,15,85,203 // andnps %xmm11,%xmm1
23548 .byte 68,15,86,201 // orps %xmm1,%xmm9
23549 .byte 68,15,89,215 // mulps %xmm7,%xmm10
23550 .byte 65,15,88,218 // addps %xmm10,%xmm3
Mike Klein61b84162017-03-31 11:48:14 -040023551 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040023552 .byte 65,15,40,200 // movaps %xmm8,%xmm1
23553 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040023554 .byte 255,224 // jmpq *%rax
23555
23556HIDDEN _sk_colordodge_sse2
23557.globl _sk_colordodge_sse2
Mike Klein86714282017-04-13 17:37:38 -040023558FUNCTION(_sk_colordodge_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040023559_sk_colordodge_sse2:
23560 .byte 68,15,40,200 // movaps %xmm0,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040023561 .byte 68,15,40,21,81,56,0,0 // movaps 0x3851(%rip),%xmm10 # 3ef0 <_sk_callback_sse2+0x1c9>
Mike Klein61b84162017-03-31 11:48:14 -040023562 .byte 69,15,40,218 // movaps %xmm10,%xmm11
23563 .byte 68,15,92,223 // subps %xmm7,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040023564 .byte 69,15,40,227 // movaps %xmm11,%xmm12
23565 .byte 69,15,89,225 // mulps %xmm9,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040023566 .byte 68,15,40,195 // movaps %xmm3,%xmm8
23567 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040023568 .byte 15,40,195 // movaps %xmm3,%xmm0
23569 .byte 65,15,92,193 // subps %xmm9,%xmm0
23570 .byte 68,15,94,192 // divps %xmm0,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040023571 .byte 68,15,40,239 // movaps %xmm7,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040023572 .byte 15,40,199 // movaps %xmm7,%xmm0
23573 .byte 65,15,93,192 // minps %xmm8,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040023574 .byte 69,15,40,241 // movaps %xmm9,%xmm14
23575 .byte 68,15,194,243,0 // cmpeqps %xmm3,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040023576 .byte 15,89,195 // mulps %xmm3,%xmm0
23577 .byte 65,15,88,196 // addps %xmm12,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040023578 .byte 69,15,84,206 // andps %xmm14,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040023579 .byte 68,15,85,240 // andnps %xmm0,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040023580 .byte 69,15,87,192 // xorps %xmm8,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040023581 .byte 65,15,40,196 // movaps %xmm12,%xmm0
23582 .byte 15,88,196 // addps %xmm4,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040023583 .byte 68,15,92,211 // subps %xmm3,%xmm10
23584 .byte 69,15,86,241 // orps %xmm9,%xmm14
23585 .byte 69,15,40,202 // movaps %xmm10,%xmm9
23586 .byte 68,15,89,204 // mulps %xmm4,%xmm9
Mike Klein61b84162017-03-31 11:48:14 -040023587 .byte 69,15,88,241 // addps %xmm9,%xmm14
23588 .byte 68,15,40,204 // movaps %xmm4,%xmm9
23589 .byte 69,15,194,200,0 // cmpeqps %xmm8,%xmm9
23590 .byte 65,15,84,193 // andps %xmm9,%xmm0
23591 .byte 69,15,85,206 // andnps %xmm14,%xmm9
23592 .byte 65,15,86,193 // orps %xmm9,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040023593 .byte 68,15,40,203 // movaps %xmm3,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040023594 .byte 68,15,89,205 // mulps %xmm5,%xmm9
23595 .byte 68,15,40,227 // movaps %xmm3,%xmm12
23596 .byte 68,15,92,225 // subps %xmm1,%xmm12
23597 .byte 69,15,94,204 // divps %xmm12,%xmm9
23598 .byte 69,15,40,227 // movaps %xmm11,%xmm12
23599 .byte 68,15,89,225 // mulps %xmm1,%xmm12
23600 .byte 69,15,93,233 // minps %xmm9,%xmm13
23601 .byte 68,15,40,241 // movaps %xmm1,%xmm14
23602 .byte 68,15,194,243,0 // cmpeqps %xmm3,%xmm14
23603 .byte 68,15,89,235 // mulps %xmm3,%xmm13
23604 .byte 69,15,88,236 // addps %xmm12,%xmm13
23605 .byte 65,15,84,206 // andps %xmm14,%xmm1
23606 .byte 69,15,85,245 // andnps %xmm13,%xmm14
23607 .byte 69,15,40,204 // movaps %xmm12,%xmm9
23608 .byte 68,15,88,205 // addps %xmm5,%xmm9
23609 .byte 68,15,86,241 // orps %xmm1,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040023610 .byte 65,15,40,202 // movaps %xmm10,%xmm1
23611 .byte 15,89,205 // mulps %xmm5,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040023612 .byte 68,15,88,241 // addps %xmm1,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040023613 .byte 15,40,205 // movaps %xmm5,%xmm1
23614 .byte 65,15,194,200,0 // cmpeqps %xmm8,%xmm1
23615 .byte 68,15,84,201 // andps %xmm1,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040023616 .byte 65,15,85,206 // andnps %xmm14,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023617 .byte 68,15,86,201 // orps %xmm1,%xmm9
23618 .byte 68,15,40,227 // movaps %xmm3,%xmm12
23619 .byte 68,15,89,230 // mulps %xmm6,%xmm12
23620 .byte 15,40,203 // movaps %xmm3,%xmm1
23621 .byte 15,92,202 // subps %xmm2,%xmm1
23622 .byte 68,15,94,225 // divps %xmm1,%xmm12
23623 .byte 68,15,40,239 // movaps %xmm7,%xmm13
23624 .byte 68,15,89,218 // mulps %xmm2,%xmm11
23625 .byte 69,15,93,236 // minps %xmm12,%xmm13
23626 .byte 15,40,202 // movaps %xmm2,%xmm1
23627 .byte 15,194,203,0 // cmpeqps %xmm3,%xmm1
23628 .byte 68,15,89,235 // mulps %xmm3,%xmm13
23629 .byte 69,15,88,235 // addps %xmm11,%xmm13
23630 .byte 15,84,209 // andps %xmm1,%xmm2
23631 .byte 65,15,85,205 // andnps %xmm13,%xmm1
23632 .byte 15,86,202 // orps %xmm2,%xmm1
23633 .byte 65,15,40,210 // movaps %xmm10,%xmm2
23634 .byte 15,89,214 // mulps %xmm6,%xmm2
23635 .byte 15,88,202 // addps %xmm2,%xmm1
23636 .byte 68,15,194,198,0 // cmpeqps %xmm6,%xmm8
23637 .byte 68,15,88,222 // addps %xmm6,%xmm11
23638 .byte 69,15,84,216 // andps %xmm8,%xmm11
23639 .byte 68,15,85,193 // andnps %xmm1,%xmm8
23640 .byte 69,15,86,195 // orps %xmm11,%xmm8
23641 .byte 68,15,89,215 // mulps %xmm7,%xmm10
23642 .byte 65,15,88,218 // addps %xmm10,%xmm3
23643 .byte 72,173 // lods %ds:(%rsi),%rax
23644 .byte 65,15,40,201 // movaps %xmm9,%xmm1
23645 .byte 65,15,40,208 // movaps %xmm8,%xmm2
23646 .byte 255,224 // jmpq *%rax
23647
23648HIDDEN _sk_hardlight_sse2
23649.globl _sk_hardlight_sse2
Mike Klein86714282017-04-13 17:37:38 -040023650FUNCTION(_sk_hardlight_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040023651_sk_hardlight_sse2:
Mike Klein15bf6782017-03-31 12:21:46 -040023652 .byte 15,41,116,36,232 // movaps %xmm6,-0x18(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040023653 .byte 15,40,245 // movaps %xmm5,%xmm6
23654 .byte 15,40,236 // movaps %xmm4,%xmm5
Mike Kleinfb11acd2017-05-01 14:22:10 -040023655 .byte 68,15,40,29,6,55,0,0 // movaps 0x3706(%rip),%xmm11 # 3f00 <_sk_callback_sse2+0x1d9>
Mike Klein61b84162017-03-31 11:48:14 -040023656 .byte 69,15,40,211 // movaps %xmm11,%xmm10
23657 .byte 68,15,92,215 // subps %xmm7,%xmm10
23658 .byte 69,15,40,194 // movaps %xmm10,%xmm8
23659 .byte 68,15,89,192 // mulps %xmm0,%xmm8
23660 .byte 68,15,92,219 // subps %xmm3,%xmm11
23661 .byte 69,15,40,203 // movaps %xmm11,%xmm9
23662 .byte 68,15,89,205 // mulps %xmm5,%xmm9
23663 .byte 69,15,88,200 // addps %xmm8,%xmm9
23664 .byte 68,15,40,195 // movaps %xmm3,%xmm8
23665 .byte 68,15,92,192 // subps %xmm0,%xmm8
23666 .byte 15,40,227 // movaps %xmm3,%xmm4
23667 .byte 15,89,231 // mulps %xmm7,%xmm4
23668 .byte 68,15,40,239 // movaps %xmm7,%xmm13
23669 .byte 68,15,40,247 // movaps %xmm7,%xmm14
23670 .byte 68,15,40,255 // movaps %xmm7,%xmm15
23671 .byte 68,15,92,253 // subps %xmm5,%xmm15
23672 .byte 69,15,89,248 // mulps %xmm8,%xmm15
23673 .byte 69,15,88,255 // addps %xmm15,%xmm15
23674 .byte 68,15,40,228 // movaps %xmm4,%xmm12
23675 .byte 69,15,92,231 // subps %xmm15,%xmm12
23676 .byte 68,15,40,192 // movaps %xmm0,%xmm8
23677 .byte 69,15,88,192 // addps %xmm8,%xmm8
23678 .byte 68,15,194,195,2 // cmpleps %xmm3,%xmm8
23679 .byte 15,89,197 // mulps %xmm5,%xmm0
23680 .byte 15,88,192 // addps %xmm0,%xmm0
23681 .byte 65,15,84,192 // andps %xmm8,%xmm0
23682 .byte 69,15,85,196 // andnps %xmm12,%xmm8
23683 .byte 68,15,86,192 // orps %xmm0,%xmm8
23684 .byte 69,15,40,251 // movaps %xmm11,%xmm15
23685 .byte 69,15,40,227 // movaps %xmm11,%xmm12
23686 .byte 68,15,89,223 // mulps %xmm7,%xmm11
23687 .byte 69,15,88,193 // addps %xmm9,%xmm8
23688 .byte 65,15,40,194 // movaps %xmm10,%xmm0
23689 .byte 15,89,193 // mulps %xmm1,%xmm0
23690 .byte 68,15,89,254 // mulps %xmm6,%xmm15
23691 .byte 68,15,88,248 // addps %xmm0,%xmm15
23692 .byte 15,40,195 // movaps %xmm3,%xmm0
23693 .byte 15,92,193 // subps %xmm1,%xmm0
23694 .byte 68,15,92,238 // subps %xmm6,%xmm13
23695 .byte 68,15,89,232 // mulps %xmm0,%xmm13
23696 .byte 69,15,88,237 // addps %xmm13,%xmm13
23697 .byte 15,40,196 // movaps %xmm4,%xmm0
23698 .byte 65,15,92,197 // subps %xmm13,%xmm0
23699 .byte 68,15,40,201 // movaps %xmm1,%xmm9
23700 .byte 69,15,88,201 // addps %xmm9,%xmm9
23701 .byte 68,15,194,203,2 // cmpleps %xmm3,%xmm9
23702 .byte 15,89,206 // mulps %xmm6,%xmm1
23703 .byte 15,88,201 // addps %xmm1,%xmm1
23704 .byte 65,15,84,201 // andps %xmm9,%xmm1
23705 .byte 68,15,85,200 // andnps %xmm0,%xmm9
23706 .byte 68,15,86,201 // orps %xmm1,%xmm9
23707 .byte 69,15,88,207 // addps %xmm15,%xmm9
23708 .byte 68,15,89,210 // mulps %xmm2,%xmm10
Mike Klein15bf6782017-03-31 12:21:46 -040023709 .byte 68,15,40,108,36,232 // movaps -0x18(%rsp),%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040023710 .byte 69,15,89,229 // mulps %xmm13,%xmm12
23711 .byte 69,15,88,226 // addps %xmm10,%xmm12
23712 .byte 68,15,40,210 // movaps %xmm2,%xmm10
23713 .byte 69,15,88,210 // addps %xmm10,%xmm10
23714 .byte 68,15,194,211,2 // cmpleps %xmm3,%xmm10
23715 .byte 15,40,195 // movaps %xmm3,%xmm0
23716 .byte 15,92,194 // subps %xmm2,%xmm0
23717 .byte 65,15,89,213 // mulps %xmm13,%xmm2
23718 .byte 15,88,210 // addps %xmm2,%xmm2
23719 .byte 69,15,92,245 // subps %xmm13,%xmm14
23720 .byte 68,15,89,240 // mulps %xmm0,%xmm14
23721 .byte 69,15,88,246 // addps %xmm14,%xmm14
23722 .byte 65,15,92,230 // subps %xmm14,%xmm4
23723 .byte 65,15,84,210 // andps %xmm10,%xmm2
23724 .byte 68,15,85,212 // andnps %xmm4,%xmm10
23725 .byte 68,15,86,210 // orps %xmm2,%xmm10
23726 .byte 69,15,88,212 // addps %xmm12,%xmm10
23727 .byte 65,15,88,219 // addps %xmm11,%xmm3
23728 .byte 72,173 // lods %ds:(%rsi),%rax
23729 .byte 65,15,40,192 // movaps %xmm8,%xmm0
23730 .byte 65,15,40,201 // movaps %xmm9,%xmm1
23731 .byte 65,15,40,210 // movaps %xmm10,%xmm2
23732 .byte 15,40,229 // movaps %xmm5,%xmm4
23733 .byte 15,40,238 // movaps %xmm6,%xmm5
23734 .byte 65,15,40,245 // movaps %xmm13,%xmm6
Mike Klein61b84162017-03-31 11:48:14 -040023735 .byte 255,224 // jmpq *%rax
23736
23737HIDDEN _sk_overlay_sse2
23738.globl _sk_overlay_sse2
Mike Klein86714282017-04-13 17:37:38 -040023739FUNCTION(_sk_overlay_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040023740_sk_overlay_sse2:
Mike Kleinfe560a82017-05-01 12:56:35 -040023741 .byte 68,15,40,193 // movaps %xmm1,%xmm8
23742 .byte 68,15,40,232 // movaps %xmm0,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040023743 .byte 68,15,40,13,212,53,0,0 // movaps 0x35d4(%rip),%xmm9 # 3f10 <_sk_callback_sse2+0x1e9>
Mike Klein61b84162017-03-31 11:48:14 -040023744 .byte 69,15,40,209 // movaps %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040023745 .byte 68,15,92,215 // subps %xmm7,%xmm10
23746 .byte 69,15,40,218 // movaps %xmm10,%xmm11
23747 .byte 69,15,89,221 // mulps %xmm13,%xmm11
23748 .byte 68,15,92,203 // subps %xmm3,%xmm9
23749 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040023750 .byte 15,89,196 // mulps %xmm4,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040023751 .byte 65,15,88,195 // addps %xmm11,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023752 .byte 68,15,40,227 // movaps %xmm3,%xmm12
23753 .byte 69,15,92,229 // subps %xmm13,%xmm12
23754 .byte 68,15,89,236 // mulps %xmm4,%xmm13
23755 .byte 68,15,40,247 // movaps %xmm7,%xmm14
23756 .byte 68,15,92,244 // subps %xmm4,%xmm14
23757 .byte 15,40,204 // movaps %xmm4,%xmm1
23758 .byte 15,88,201 // addps %xmm1,%xmm1
23759 .byte 15,194,207,2 // cmpleps %xmm7,%xmm1
23760 .byte 69,15,88,237 // addps %xmm13,%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040023761 .byte 68,15,40,219 // movaps %xmm3,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040023762 .byte 68,15,89,223 // mulps %xmm7,%xmm11
23763 .byte 69,15,89,244 // mulps %xmm12,%xmm14
23764 .byte 69,15,88,246 // addps %xmm14,%xmm14
23765 .byte 69,15,40,227 // movaps %xmm11,%xmm12
23766 .byte 69,15,92,230 // subps %xmm14,%xmm12
23767 .byte 68,15,84,233 // andps %xmm1,%xmm13
23768 .byte 65,15,85,204 // andnps %xmm12,%xmm1
23769 .byte 65,15,86,205 // orps %xmm13,%xmm1
23770 .byte 15,88,193 // addps %xmm1,%xmm0
23771 .byte 69,15,40,226 // movaps %xmm10,%xmm12
23772 .byte 69,15,89,224 // mulps %xmm8,%xmm12
23773 .byte 65,15,40,201 // movaps %xmm9,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023774 .byte 15,89,205 // mulps %xmm5,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040023775 .byte 65,15,88,204 // addps %xmm12,%xmm1
23776 .byte 68,15,40,227 // movaps %xmm3,%xmm12
23777 .byte 69,15,92,224 // subps %xmm8,%xmm12
23778 .byte 68,15,89,197 // mulps %xmm5,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040023779 .byte 68,15,40,239 // movaps %xmm7,%xmm13
23780 .byte 68,15,92,237 // subps %xmm5,%xmm13
23781 .byte 68,15,40,245 // movaps %xmm5,%xmm14
23782 .byte 69,15,88,246 // addps %xmm14,%xmm14
23783 .byte 68,15,194,247,2 // cmpleps %xmm7,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040023784 .byte 69,15,88,192 // addps %xmm8,%xmm8
23785 .byte 69,15,89,236 // mulps %xmm12,%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040023786 .byte 69,15,88,237 // addps %xmm13,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040023787 .byte 69,15,40,227 // movaps %xmm11,%xmm12
23788 .byte 69,15,92,229 // subps %xmm13,%xmm12
23789 .byte 69,15,84,198 // andps %xmm14,%xmm8
23790 .byte 69,15,85,244 // andnps %xmm12,%xmm14
23791 .byte 69,15,86,240 // orps %xmm8,%xmm14
23792 .byte 65,15,88,206 // addps %xmm14,%xmm1
23793 .byte 68,15,89,210 // mulps %xmm2,%xmm10
23794 .byte 69,15,40,193 // movaps %xmm9,%xmm8
23795 .byte 68,15,89,198 // mulps %xmm6,%xmm8
23796 .byte 69,15,88,194 // addps %xmm10,%xmm8
23797 .byte 68,15,40,211 // movaps %xmm3,%xmm10
23798 .byte 68,15,92,210 // subps %xmm2,%xmm10
Mike Klein61b84162017-03-31 11:48:14 -040023799 .byte 15,89,214 // mulps %xmm6,%xmm2
23800 .byte 68,15,40,231 // movaps %xmm7,%xmm12
23801 .byte 68,15,92,230 // subps %xmm6,%xmm12
23802 .byte 68,15,40,238 // movaps %xmm6,%xmm13
23803 .byte 69,15,88,237 // addps %xmm13,%xmm13
23804 .byte 68,15,194,239,2 // cmpleps %xmm7,%xmm13
23805 .byte 15,88,210 // addps %xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040023806 .byte 69,15,89,226 // mulps %xmm10,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040023807 .byte 69,15,88,228 // addps %xmm12,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040023808 .byte 69,15,92,220 // subps %xmm12,%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040023809 .byte 65,15,84,213 // andps %xmm13,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040023810 .byte 69,15,85,235 // andnps %xmm11,%xmm13
23811 .byte 68,15,86,234 // orps %xmm2,%xmm13
23812 .byte 69,15,88,197 // addps %xmm13,%xmm8
23813 .byte 68,15,89,207 // mulps %xmm7,%xmm9
23814 .byte 65,15,88,217 // addps %xmm9,%xmm3
Mike Klein61b84162017-03-31 11:48:14 -040023815 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040023816 .byte 65,15,40,208 // movaps %xmm8,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040023817 .byte 255,224 // jmpq *%rax
23818
23819HIDDEN _sk_softlight_sse2
23820.globl _sk_softlight_sse2
Mike Klein86714282017-04-13 17:37:38 -040023821FUNCTION(_sk_softlight_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040023822_sk_softlight_sse2:
Mike Kleinfe560a82017-05-01 12:56:35 -040023823 .byte 15,41,116,36,216 // movaps %xmm6,-0x28(%rsp)
23824 .byte 15,40,245 // movaps %xmm5,%xmm6
23825 .byte 15,40,236 // movaps %xmm4,%xmm5
Mike Klein15bf6782017-03-31 12:21:46 -040023826 .byte 15,41,84,36,232 // movaps %xmm2,-0x18(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040023827 .byte 15,40,209 // movaps %xmm1,%xmm2
23828 .byte 68,15,40,192 // movaps %xmm0,%xmm8
23829 .byte 69,15,87,228 // xorps %xmm12,%xmm12
23830 .byte 68,15,194,231,1 // cmpltps %xmm7,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040023831 .byte 68,15,40,213 // movaps %xmm5,%xmm10
Mike Klein61b84162017-03-31 11:48:14 -040023832 .byte 68,15,94,215 // divps %xmm7,%xmm10
23833 .byte 69,15,84,212 // andps %xmm12,%xmm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040023834 .byte 68,15,40,13,145,52,0,0 // movaps 0x3491(%rip),%xmm9 # 3f20 <_sk_callback_sse2+0x1f9>
Mike Kleinfe560a82017-05-01 12:56:35 -040023835 .byte 69,15,40,249 // movaps %xmm9,%xmm15
23836 .byte 69,15,92,250 // subps %xmm10,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040023837 .byte 69,15,40,218 // movaps %xmm10,%xmm11
23838 .byte 69,15,40,234 // movaps %xmm10,%xmm13
23839 .byte 65,15,82,194 // rsqrtps %xmm10,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023840 .byte 15,83,200 // rcpps %xmm0,%xmm1
23841 .byte 65,15,92,202 // subps %xmm10,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023842 .byte 69,15,88,210 // addps %xmm10,%xmm10
23843 .byte 69,15,88,210 // addps %xmm10,%xmm10
23844 .byte 65,15,40,194 // movaps %xmm10,%xmm0
23845 .byte 15,89,192 // mulps %xmm0,%xmm0
23846 .byte 65,15,88,194 // addps %xmm10,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040023847 .byte 68,15,40,53,107,52,0,0 // movaps 0x346b(%rip),%xmm14 # 3f30 <_sk_callback_sse2+0x209>
Mike Kleinfe560a82017-05-01 12:56:35 -040023848 .byte 69,15,88,222 // addps %xmm14,%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040023849 .byte 68,15,89,216 // mulps %xmm0,%xmm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040023850 .byte 68,15,40,21,107,52,0,0 // movaps 0x346b(%rip),%xmm10 # 3f40 <_sk_callback_sse2+0x219>
Mike Klein61b84162017-03-31 11:48:14 -040023851 .byte 69,15,89,234 // mulps %xmm10,%xmm13
23852 .byte 69,15,88,235 // addps %xmm11,%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040023853 .byte 15,88,228 // addps %xmm4,%xmm4
23854 .byte 15,88,228 // addps %xmm4,%xmm4
23855 .byte 15,194,231,2 // cmpleps %xmm7,%xmm4
23856 .byte 68,15,84,236 // andps %xmm4,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040023857 .byte 15,85,225 // andnps %xmm1,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040023858 .byte 65,15,40,192 // movaps %xmm8,%xmm0
23859 .byte 15,88,192 // addps %xmm0,%xmm0
23860 .byte 65,15,86,229 // orps %xmm13,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040023861 .byte 15,40,200 // movaps %xmm0,%xmm1
23862 .byte 15,92,203 // subps %xmm3,%xmm1
23863 .byte 68,15,89,249 // mulps %xmm1,%xmm15
23864 .byte 15,89,207 // mulps %xmm7,%xmm1
23865 .byte 15,89,225 // mulps %xmm1,%xmm4
23866 .byte 15,40,203 // movaps %xmm3,%xmm1
23867 .byte 15,89,205 // mulps %xmm5,%xmm1
23868 .byte 15,88,225 // addps %xmm1,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040023869 .byte 69,15,40,217 // movaps %xmm9,%xmm11
23870 .byte 68,15,92,219 // subps %xmm3,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040023871 .byte 65,15,40,203 // movaps %xmm11,%xmm1
23872 .byte 15,89,205 // mulps %xmm5,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023873 .byte 69,15,40,233 // movaps %xmm9,%xmm13
23874 .byte 68,15,92,239 // subps %xmm7,%xmm13
23875 .byte 69,15,89,197 // mulps %xmm13,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040023876 .byte 68,15,88,193 // addps %xmm1,%xmm8
23877 .byte 68,15,88,251 // addps %xmm3,%xmm15
23878 .byte 68,15,89,253 // mulps %xmm5,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040023879 .byte 15,194,195,2 // cmpleps %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023880 .byte 68,15,84,248 // andps %xmm0,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040023881 .byte 15,85,196 // andnps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023882 .byte 65,15,86,199 // orps %xmm15,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040023883 .byte 65,15,88,192 // addps %xmm8,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023884 .byte 68,15,40,198 // movaps %xmm6,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040023885 .byte 68,15,94,199 // divps %xmm7,%xmm8
23886 .byte 69,15,84,196 // andps %xmm12,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040023887 .byte 65,15,40,200 // movaps %xmm8,%xmm1
23888 .byte 15,88,201 // addps %xmm1,%xmm1
23889 .byte 15,88,201 // addps %xmm1,%xmm1
23890 .byte 15,40,225 // movaps %xmm1,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040023891 .byte 15,89,228 // mulps %xmm4,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040023892 .byte 15,88,225 // addps %xmm1,%xmm4
23893 .byte 65,15,40,200 // movaps %xmm8,%xmm1
23894 .byte 65,15,88,206 // addps %xmm14,%xmm1
23895 .byte 15,89,204 // mulps %xmm4,%xmm1
23896 .byte 69,15,40,249 // movaps %xmm9,%xmm15
23897 .byte 69,15,92,248 // subps %xmm8,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040023898 .byte 65,15,82,224 // rsqrtps %xmm8,%xmm4
23899 .byte 15,83,228 // rcpps %xmm4,%xmm4
23900 .byte 65,15,92,224 // subps %xmm8,%xmm4
23901 .byte 69,15,89,194 // mulps %xmm10,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040023902 .byte 68,15,88,193 // addps %xmm1,%xmm8
23903 .byte 15,40,206 // movaps %xmm6,%xmm1
23904 .byte 15,88,201 // addps %xmm1,%xmm1
23905 .byte 15,88,201 // addps %xmm1,%xmm1
23906 .byte 15,194,207,2 // cmpleps %xmm7,%xmm1
23907 .byte 68,15,84,193 // andps %xmm1,%xmm8
23908 .byte 15,85,204 // andnps %xmm4,%xmm1
23909 .byte 65,15,86,200 // orps %xmm8,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023910 .byte 68,15,40,194 // movaps %xmm2,%xmm8
23911 .byte 69,15,88,192 // addps %xmm8,%xmm8
23912 .byte 65,15,40,224 // movaps %xmm8,%xmm4
23913 .byte 15,92,227 // subps %xmm3,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040023914 .byte 68,15,89,252 // mulps %xmm4,%xmm15
Mike Kleinfe560a82017-05-01 12:56:35 -040023915 .byte 15,89,231 // mulps %xmm7,%xmm4
23916 .byte 15,89,204 // mulps %xmm4,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023917 .byte 15,40,227 // movaps %xmm3,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040023918 .byte 15,89,230 // mulps %xmm6,%xmm4
23919 .byte 15,88,204 // addps %xmm4,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023920 .byte 65,15,40,227 // movaps %xmm11,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040023921 .byte 15,89,230 // mulps %xmm6,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040023922 .byte 65,15,89,213 // mulps %xmm13,%xmm2
23923 .byte 15,88,212 // addps %xmm4,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040023924 .byte 68,15,88,251 // addps %xmm3,%xmm15
23925 .byte 68,15,89,254 // mulps %xmm6,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040023926 .byte 68,15,194,195,2 // cmpleps %xmm3,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040023927 .byte 69,15,84,248 // andps %xmm8,%xmm15
23928 .byte 68,15,85,193 // andnps %xmm1,%xmm8
23929 .byte 69,15,86,199 // orps %xmm15,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040023930 .byte 68,15,88,194 // addps %xmm2,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040023931 .byte 68,15,40,124,36,216 // movaps -0x28(%rsp),%xmm15
23932 .byte 65,15,40,207 // movaps %xmm15,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023933 .byte 15,94,207 // divps %xmm7,%xmm1
23934 .byte 65,15,84,204 // andps %xmm12,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023935 .byte 68,15,92,201 // subps %xmm1,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040023936 .byte 68,15,88,241 // addps %xmm1,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040023937 .byte 68,15,89,209 // mulps %xmm1,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040023938 .byte 15,82,209 // rsqrtps %xmm1,%xmm2
23939 .byte 15,83,210 // rcpps %xmm2,%xmm2
23940 .byte 15,92,209 // subps %xmm1,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040023941 .byte 15,88,201 // addps %xmm1,%xmm1
23942 .byte 15,88,201 // addps %xmm1,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040023943 .byte 15,40,225 // movaps %xmm1,%xmm4
23944 .byte 15,89,228 // mulps %xmm4,%xmm4
23945 .byte 15,88,225 // addps %xmm1,%xmm4
23946 .byte 68,15,89,244 // mulps %xmm4,%xmm14
23947 .byte 69,15,88,214 // addps %xmm14,%xmm10
23948 .byte 65,15,40,207 // movaps %xmm15,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023949 .byte 15,88,201 // addps %xmm1,%xmm1
23950 .byte 15,88,201 // addps %xmm1,%xmm1
23951 .byte 15,194,207,2 // cmpleps %xmm7,%xmm1
23952 .byte 68,15,84,209 // andps %xmm1,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040023953 .byte 15,85,202 // andnps %xmm2,%xmm1
Mike Klein15bf6782017-03-31 12:21:46 -040023954 .byte 15,40,84,36,232 // movaps -0x18(%rsp),%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040023955 .byte 68,15,89,234 // mulps %xmm2,%xmm13
23956 .byte 15,88,210 // addps %xmm2,%xmm2
23957 .byte 65,15,86,202 // orps %xmm10,%xmm1
23958 .byte 15,40,226 // movaps %xmm2,%xmm4
23959 .byte 15,92,227 // subps %xmm3,%xmm4
23960 .byte 68,15,89,204 // mulps %xmm4,%xmm9
23961 .byte 15,89,231 // mulps %xmm7,%xmm4
23962 .byte 15,89,204 // mulps %xmm4,%xmm1
23963 .byte 15,40,227 // movaps %xmm3,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040023964 .byte 65,15,89,231 // mulps %xmm15,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040023965 .byte 15,88,204 // addps %xmm4,%xmm1
23966 .byte 65,15,40,227 // movaps %xmm11,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040023967 .byte 65,15,89,231 // mulps %xmm15,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040023968 .byte 65,15,88,229 // addps %xmm13,%xmm4
23969 .byte 68,15,88,203 // addps %xmm3,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040023970 .byte 69,15,89,207 // mulps %xmm15,%xmm9
23971 .byte 69,15,40,215 // movaps %xmm15,%xmm10
Mike Klein61b84162017-03-31 11:48:14 -040023972 .byte 15,194,211,2 // cmpleps %xmm3,%xmm2
23973 .byte 68,15,84,202 // andps %xmm2,%xmm9
23974 .byte 15,85,209 // andnps %xmm1,%xmm2
23975 .byte 65,15,86,209 // orps %xmm9,%xmm2
23976 .byte 15,88,212 // addps %xmm4,%xmm2
23977 .byte 68,15,89,223 // mulps %xmm7,%xmm11
23978 .byte 65,15,88,219 // addps %xmm11,%xmm3
23979 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040023980 .byte 15,40,229 // movaps %xmm5,%xmm4
23981 .byte 15,40,238 // movaps %xmm6,%xmm5
23982 .byte 65,15,40,242 // movaps %xmm10,%xmm6
Mike Klein61b84162017-03-31 11:48:14 -040023983 .byte 65,15,40,200 // movaps %xmm8,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023984 .byte 255,224 // jmpq *%rax
23985
Mike Klein7c4af542017-03-29 18:21:14 -040023986HIDDEN _sk_clamp_0_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023987.globl _sk_clamp_0_sse2
Mike Klein86714282017-04-13 17:37:38 -040023988FUNCTION(_sk_clamp_0_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023989_sk_clamp_0_sse2:
23990 .byte 69,15,87,192 // xorps %xmm8,%xmm8
23991 .byte 65,15,95,192 // maxps %xmm8,%xmm0
23992 .byte 65,15,95,200 // maxps %xmm8,%xmm1
23993 .byte 65,15,95,208 // maxps %xmm8,%xmm2
23994 .byte 65,15,95,216 // maxps %xmm8,%xmm3
23995 .byte 72,173 // lods %ds:(%rsi),%rax
23996 .byte 255,224 // jmpq *%rax
23997
Mike Klein7c4af542017-03-29 18:21:14 -040023998HIDDEN _sk_clamp_1_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023999.globl _sk_clamp_1_sse2
Mike Klein86714282017-04-13 17:37:38 -040024000FUNCTION(_sk_clamp_1_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024001_sk_clamp_1_sse2:
Mike Kleinfb11acd2017-05-01 14:22:10 -040024002 .byte 68,15,40,5,122,50,0,0 // movaps 0x327a(%rip),%xmm8 # 3f50 <_sk_callback_sse2+0x229>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024003 .byte 65,15,93,192 // minps %xmm8,%xmm0
24004 .byte 65,15,93,200 // minps %xmm8,%xmm1
24005 .byte 65,15,93,208 // minps %xmm8,%xmm2
24006 .byte 65,15,93,216 // minps %xmm8,%xmm3
24007 .byte 72,173 // lods %ds:(%rsi),%rax
24008 .byte 255,224 // jmpq *%rax
24009
Mike Klein7c4af542017-03-29 18:21:14 -040024010HIDDEN _sk_clamp_a_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024011.globl _sk_clamp_a_sse2
Mike Klein86714282017-04-13 17:37:38 -040024012FUNCTION(_sk_clamp_a_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024013_sk_clamp_a_sse2:
Mike Kleinfb11acd2017-05-01 14:22:10 -040024014 .byte 15,93,29,111,50,0,0 // minps 0x326f(%rip),%xmm3 # 3f60 <_sk_callback_sse2+0x239>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024015 .byte 15,93,195 // minps %xmm3,%xmm0
24016 .byte 15,93,203 // minps %xmm3,%xmm1
24017 .byte 15,93,211 // minps %xmm3,%xmm2
24018 .byte 72,173 // lods %ds:(%rsi),%rax
24019 .byte 255,224 // jmpq *%rax
24020
Mike Klein7c4af542017-03-29 18:21:14 -040024021HIDDEN _sk_set_rgb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024022.globl _sk_set_rgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040024023FUNCTION(_sk_set_rgb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024024_sk_set_rgb_sse2:
24025 .byte 72,173 // lods %ds:(%rsi),%rax
24026 .byte 243,15,16,0 // movss (%rax),%xmm0
24027 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
24028 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
24029 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
24030 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
24031 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
24032 .byte 72,173 // lods %ds:(%rsi),%rax
24033 .byte 255,224 // jmpq *%rax
24034
Mike Klein7c4af542017-03-29 18:21:14 -040024035HIDDEN _sk_swap_rb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024036.globl _sk_swap_rb_sse2
Mike Klein86714282017-04-13 17:37:38 -040024037FUNCTION(_sk_swap_rb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024038_sk_swap_rb_sse2:
24039 .byte 68,15,40,192 // movaps %xmm0,%xmm8
24040 .byte 72,173 // lods %ds:(%rsi),%rax
24041 .byte 15,40,194 // movaps %xmm2,%xmm0
24042 .byte 65,15,40,208 // movaps %xmm8,%xmm2
24043 .byte 255,224 // jmpq *%rax
24044
Mike Klein7c4af542017-03-29 18:21:14 -040024045HIDDEN _sk_swap_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024046.globl _sk_swap_sse2
Mike Klein86714282017-04-13 17:37:38 -040024047FUNCTION(_sk_swap_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024048_sk_swap_sse2:
24049 .byte 68,15,40,195 // movaps %xmm3,%xmm8
24050 .byte 68,15,40,202 // movaps %xmm2,%xmm9
24051 .byte 68,15,40,209 // movaps %xmm1,%xmm10
24052 .byte 68,15,40,216 // movaps %xmm0,%xmm11
24053 .byte 72,173 // lods %ds:(%rsi),%rax
24054 .byte 15,40,196 // movaps %xmm4,%xmm0
24055 .byte 15,40,205 // movaps %xmm5,%xmm1
24056 .byte 15,40,214 // movaps %xmm6,%xmm2
24057 .byte 15,40,223 // movaps %xmm7,%xmm3
24058 .byte 65,15,40,227 // movaps %xmm11,%xmm4
24059 .byte 65,15,40,234 // movaps %xmm10,%xmm5
24060 .byte 65,15,40,241 // movaps %xmm9,%xmm6
24061 .byte 65,15,40,248 // movaps %xmm8,%xmm7
24062 .byte 255,224 // jmpq *%rax
24063
Mike Klein7c4af542017-03-29 18:21:14 -040024064HIDDEN _sk_move_src_dst_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024065.globl _sk_move_src_dst_sse2
Mike Klein86714282017-04-13 17:37:38 -040024066FUNCTION(_sk_move_src_dst_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024067_sk_move_src_dst_sse2:
24068 .byte 72,173 // lods %ds:(%rsi),%rax
24069 .byte 15,40,224 // movaps %xmm0,%xmm4
24070 .byte 15,40,233 // movaps %xmm1,%xmm5
24071 .byte 15,40,242 // movaps %xmm2,%xmm6
24072 .byte 15,40,251 // movaps %xmm3,%xmm7
24073 .byte 255,224 // jmpq *%rax
24074
Mike Klein7c4af542017-03-29 18:21:14 -040024075HIDDEN _sk_move_dst_src_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024076.globl _sk_move_dst_src_sse2
Mike Klein86714282017-04-13 17:37:38 -040024077FUNCTION(_sk_move_dst_src_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024078_sk_move_dst_src_sse2:
24079 .byte 72,173 // lods %ds:(%rsi),%rax
24080 .byte 15,40,196 // movaps %xmm4,%xmm0
24081 .byte 15,40,205 // movaps %xmm5,%xmm1
24082 .byte 15,40,214 // movaps %xmm6,%xmm2
24083 .byte 15,40,223 // movaps %xmm7,%xmm3
24084 .byte 255,224 // jmpq *%rax
24085
Mike Klein7c4af542017-03-29 18:21:14 -040024086HIDDEN _sk_premul_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024087.globl _sk_premul_sse2
Mike Klein86714282017-04-13 17:37:38 -040024088FUNCTION(_sk_premul_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024089_sk_premul_sse2:
24090 .byte 15,89,195 // mulps %xmm3,%xmm0
24091 .byte 15,89,203 // mulps %xmm3,%xmm1
24092 .byte 15,89,211 // mulps %xmm3,%xmm2
24093 .byte 72,173 // lods %ds:(%rsi),%rax
24094 .byte 255,224 // jmpq *%rax
24095
Mike Klein7c4af542017-03-29 18:21:14 -040024096HIDDEN _sk_unpremul_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024097.globl _sk_unpremul_sse2
Mike Klein86714282017-04-13 17:37:38 -040024098FUNCTION(_sk_unpremul_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024099_sk_unpremul_sse2:
24100 .byte 69,15,87,192 // xorps %xmm8,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040024101 .byte 68,15,40,13,218,49,0,0 // movaps 0x31da(%rip),%xmm9 # 3f70 <_sk_callback_sse2+0x249>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024102 .byte 68,15,94,203 // divps %xmm3,%xmm9
24103 .byte 68,15,194,195,4 // cmpneqps %xmm3,%xmm8
24104 .byte 69,15,84,193 // andps %xmm9,%xmm8
24105 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24106 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24107 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24108 .byte 72,173 // lods %ds:(%rsi),%rax
24109 .byte 255,224 // jmpq *%rax
24110
Mike Klein7c4af542017-03-29 18:21:14 -040024111HIDDEN _sk_from_srgb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024112.globl _sk_from_srgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040024113FUNCTION(_sk_from_srgb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024114_sk_from_srgb_sse2:
Mike Kleinfb11acd2017-05-01 14:22:10 -040024115 .byte 68,15,40,5,197,49,0,0 // movaps 0x31c5(%rip),%xmm8 # 3f80 <_sk_callback_sse2+0x259>
Mike Kleinfe560a82017-05-01 12:56:35 -040024116 .byte 68,15,40,232 // movaps %xmm0,%xmm13
24117 .byte 69,15,89,232 // mulps %xmm8,%xmm13
24118 .byte 68,15,40,216 // movaps %xmm0,%xmm11
24119 .byte 69,15,89,219 // mulps %xmm11,%xmm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040024120 .byte 68,15,40,13,189,49,0,0 // movaps 0x31bd(%rip),%xmm9 # 3f90 <_sk_callback_sse2+0x269>
Mike Kleinfe560a82017-05-01 12:56:35 -040024121 .byte 68,15,40,240 // movaps %xmm0,%xmm14
24122 .byte 69,15,89,241 // mulps %xmm9,%xmm14
Mike Kleinfb11acd2017-05-01 14:22:10 -040024123 .byte 68,15,40,21,189,49,0,0 // movaps 0x31bd(%rip),%xmm10 # 3fa0 <_sk_callback_sse2+0x279>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024124 .byte 69,15,88,242 // addps %xmm10,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040024125 .byte 69,15,89,243 // mulps %xmm11,%xmm14
Mike Kleinfb11acd2017-05-01 14:22:10 -040024126 .byte 68,15,40,29,189,49,0,0 // movaps 0x31bd(%rip),%xmm11 # 3fb0 <_sk_callback_sse2+0x289>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024127 .byte 69,15,88,243 // addps %xmm11,%xmm14
Mike Kleinfb11acd2017-05-01 14:22:10 -040024128 .byte 68,15,40,37,193,49,0,0 // movaps 0x31c1(%rip),%xmm12 # 3fc0 <_sk_callback_sse2+0x299>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024129 .byte 65,15,194,196,1 // cmpltps %xmm12,%xmm0
24130 .byte 68,15,84,232 // andps %xmm0,%xmm13
24131 .byte 65,15,85,198 // andnps %xmm14,%xmm0
24132 .byte 65,15,86,197 // orps %xmm13,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040024133 .byte 68,15,40,233 // movaps %xmm1,%xmm13
24134 .byte 69,15,89,232 // mulps %xmm8,%xmm13
Mike Kleind7e06ae2017-03-29 16:33:06 -040024135 .byte 68,15,40,241 // movaps %xmm1,%xmm14
24136 .byte 69,15,89,246 // mulps %xmm14,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040024137 .byte 68,15,40,249 // movaps %xmm1,%xmm15
24138 .byte 69,15,89,249 // mulps %xmm9,%xmm15
Mike Kleind7e06ae2017-03-29 16:33:06 -040024139 .byte 69,15,88,250 // addps %xmm10,%xmm15
24140 .byte 69,15,89,254 // mulps %xmm14,%xmm15
24141 .byte 69,15,88,251 // addps %xmm11,%xmm15
24142 .byte 65,15,194,204,1 // cmpltps %xmm12,%xmm1
24143 .byte 68,15,84,233 // andps %xmm1,%xmm13
24144 .byte 65,15,85,207 // andnps %xmm15,%xmm1
24145 .byte 65,15,86,205 // orps %xmm13,%xmm1
24146 .byte 68,15,89,194 // mulps %xmm2,%xmm8
24147 .byte 68,15,40,234 // movaps %xmm2,%xmm13
24148 .byte 69,15,89,237 // mulps %xmm13,%xmm13
24149 .byte 68,15,89,202 // mulps %xmm2,%xmm9
24150 .byte 69,15,88,202 // addps %xmm10,%xmm9
24151 .byte 69,15,89,205 // mulps %xmm13,%xmm9
24152 .byte 69,15,88,203 // addps %xmm11,%xmm9
24153 .byte 65,15,194,212,1 // cmpltps %xmm12,%xmm2
24154 .byte 68,15,84,194 // andps %xmm2,%xmm8
24155 .byte 65,15,85,209 // andnps %xmm9,%xmm2
24156 .byte 65,15,86,208 // orps %xmm8,%xmm2
24157 .byte 72,173 // lods %ds:(%rsi),%rax
24158 .byte 255,224 // jmpq *%rax
24159
Mike Klein7c4af542017-03-29 18:21:14 -040024160HIDDEN _sk_to_srgb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024161.globl _sk_to_srgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040024162FUNCTION(_sk_to_srgb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024163_sk_to_srgb_sse2:
24164 .byte 68,15,82,192 // rsqrtps %xmm0,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040024165 .byte 69,15,83,200 // rcpps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040024166 .byte 69,15,82,232 // rsqrtps %xmm8,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040024167 .byte 68,15,40,5,70,49,0,0 // movaps 0x3146(%rip),%xmm8 # 3fd0 <_sk_callback_sse2+0x2a9>
Mike Kleinfe560a82017-05-01 12:56:35 -040024168 .byte 68,15,40,240 // movaps %xmm0,%xmm14
24169 .byte 69,15,89,240 // mulps %xmm8,%xmm14
Mike Kleinfb11acd2017-05-01 14:22:10 -040024170 .byte 68,15,40,21,70,49,0,0 // movaps 0x3146(%rip),%xmm10 # 3fe0 <_sk_callback_sse2+0x2b9>
Mike Kleinfe560a82017-05-01 12:56:35 -040024171 .byte 69,15,89,202 // mulps %xmm10,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040024172 .byte 68,15,40,29,74,49,0,0 // movaps 0x314a(%rip),%xmm11 # 3ff0 <_sk_callback_sse2+0x2c9>
Mike Kleinfe560a82017-05-01 12:56:35 -040024173 .byte 69,15,88,203 // addps %xmm11,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040024174 .byte 68,15,40,37,78,49,0,0 // movaps 0x314e(%rip),%xmm12 # 4000 <_sk_callback_sse2+0x2d9>
Mike Kleinfe560a82017-05-01 12:56:35 -040024175 .byte 69,15,89,236 // mulps %xmm12,%xmm13
24176 .byte 69,15,88,233 // addps %xmm9,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040024177 .byte 68,15,40,13,78,49,0,0 // movaps 0x314e(%rip),%xmm9 # 4010 <_sk_callback_sse2+0x2e9>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024178 .byte 69,15,40,249 // movaps %xmm9,%xmm15
24179 .byte 69,15,93,253 // minps %xmm13,%xmm15
Mike Kleinfb11acd2017-05-01 14:22:10 -040024180 .byte 68,15,40,45,78,49,0,0 // movaps 0x314e(%rip),%xmm13 # 4020 <_sk_callback_sse2+0x2f9>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024181 .byte 65,15,194,197,1 // cmpltps %xmm13,%xmm0
24182 .byte 68,15,84,240 // andps %xmm0,%xmm14
24183 .byte 65,15,85,199 // andnps %xmm15,%xmm0
24184 .byte 65,15,86,198 // orps %xmm14,%xmm0
24185 .byte 68,15,82,241 // rsqrtps %xmm1,%xmm14
24186 .byte 69,15,83,254 // rcpps %xmm14,%xmm15
24187 .byte 69,15,82,246 // rsqrtps %xmm14,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040024188 .byte 69,15,89,250 // mulps %xmm10,%xmm15
24189 .byte 69,15,88,251 // addps %xmm11,%xmm15
24190 .byte 69,15,89,244 // mulps %xmm12,%xmm14
Mike Kleind7e06ae2017-03-29 16:33:06 -040024191 .byte 69,15,88,247 // addps %xmm15,%xmm14
24192 .byte 69,15,40,249 // movaps %xmm9,%xmm15
24193 .byte 69,15,93,254 // minps %xmm14,%xmm15
Mike Kleinfe560a82017-05-01 12:56:35 -040024194 .byte 68,15,40,241 // movaps %xmm1,%xmm14
24195 .byte 69,15,89,240 // mulps %xmm8,%xmm14
Mike Kleind7e06ae2017-03-29 16:33:06 -040024196 .byte 65,15,194,205,1 // cmpltps %xmm13,%xmm1
24197 .byte 68,15,84,241 // andps %xmm1,%xmm14
24198 .byte 65,15,85,207 // andnps %xmm15,%xmm1
24199 .byte 65,15,86,206 // orps %xmm14,%xmm1
24200 .byte 68,15,82,242 // rsqrtps %xmm2,%xmm14
24201 .byte 69,15,83,254 // rcpps %xmm14,%xmm15
Mike Kleinfe560a82017-05-01 12:56:35 -040024202 .byte 69,15,89,250 // mulps %xmm10,%xmm15
24203 .byte 69,15,88,251 // addps %xmm11,%xmm15
24204 .byte 69,15,82,214 // rsqrtps %xmm14,%xmm10
24205 .byte 69,15,89,212 // mulps %xmm12,%xmm10
24206 .byte 69,15,88,215 // addps %xmm15,%xmm10
24207 .byte 69,15,93,202 // minps %xmm10,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040024208 .byte 68,15,89,194 // mulps %xmm2,%xmm8
24209 .byte 65,15,194,213,1 // cmpltps %xmm13,%xmm2
24210 .byte 68,15,84,194 // andps %xmm2,%xmm8
24211 .byte 65,15,85,209 // andnps %xmm9,%xmm2
24212 .byte 65,15,86,208 // orps %xmm8,%xmm2
24213 .byte 72,173 // lods %ds:(%rsi),%rax
24214 .byte 255,224 // jmpq *%rax
24215
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024216HIDDEN _sk_rgb_to_hsl_sse2
24217.globl _sk_rgb_to_hsl_sse2
Mike Klein86714282017-04-13 17:37:38 -040024218FUNCTION(_sk_rgb_to_hsl_sse2)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024219_sk_rgb_to_hsl_sse2:
24220 .byte 68,15,40,201 // movaps %xmm1,%xmm9
24221 .byte 68,15,40,192 // movaps %xmm0,%xmm8
24222 .byte 69,15,40,208 // movaps %xmm8,%xmm10
24223 .byte 69,15,95,209 // maxps %xmm9,%xmm10
24224 .byte 68,15,95,210 // maxps %xmm2,%xmm10
24225 .byte 69,15,40,216 // movaps %xmm8,%xmm11
24226 .byte 69,15,93,217 // minps %xmm9,%xmm11
24227 .byte 68,15,93,218 // minps %xmm2,%xmm11
24228 .byte 65,15,40,202 // movaps %xmm10,%xmm1
24229 .byte 65,15,92,203 // subps %xmm11,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040024230 .byte 68,15,40,45,167,48,0,0 // movaps 0x30a7(%rip),%xmm13 # 4030 <_sk_callback_sse2+0x309>
Mike Kleinfe560a82017-05-01 12:56:35 -040024231 .byte 68,15,94,233 // divps %xmm1,%xmm13
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024232 .byte 65,15,40,194 // movaps %xmm10,%xmm0
24233 .byte 65,15,194,192,0 // cmpeqps %xmm8,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040024234 .byte 69,15,40,225 // movaps %xmm9,%xmm12
24235 .byte 68,15,92,226 // subps %xmm2,%xmm12
24236 .byte 69,15,89,229 // mulps %xmm13,%xmm12
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024237 .byte 69,15,40,241 // movaps %xmm9,%xmm14
24238 .byte 68,15,194,242,1 // cmpltps %xmm2,%xmm14
Mike Kleinfb11acd2017-05-01 14:22:10 -040024239 .byte 68,15,84,53,141,48,0,0 // andps 0x308d(%rip),%xmm14 # 4040 <_sk_callback_sse2+0x319>
Mike Kleinfe560a82017-05-01 12:56:35 -040024240 .byte 69,15,88,244 // addps %xmm12,%xmm14
24241 .byte 69,15,40,250 // movaps %xmm10,%xmm15
24242 .byte 69,15,194,249,0 // cmpeqps %xmm9,%xmm15
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024243 .byte 65,15,92,208 // subps %xmm8,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040024244 .byte 65,15,89,213 // mulps %xmm13,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040024245 .byte 68,15,40,37,128,48,0,0 // movaps 0x3080(%rip),%xmm12 # 4050 <_sk_callback_sse2+0x329>
Mike Kleinfe560a82017-05-01 12:56:35 -040024246 .byte 65,15,88,212 // addps %xmm12,%xmm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024247 .byte 69,15,92,193 // subps %xmm9,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040024248 .byte 69,15,89,197 // mulps %xmm13,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040024249 .byte 68,15,88,5,124,48,0,0 // addps 0x307c(%rip),%xmm8 # 4060 <_sk_callback_sse2+0x339>
Mike Kleinfe560a82017-05-01 12:56:35 -040024250 .byte 65,15,84,215 // andps %xmm15,%xmm2
24251 .byte 69,15,85,248 // andnps %xmm8,%xmm15
24252 .byte 68,15,86,250 // orps %xmm2,%xmm15
24253 .byte 68,15,84,240 // andps %xmm0,%xmm14
24254 .byte 65,15,85,199 // andnps %xmm15,%xmm0
24255 .byte 65,15,86,198 // orps %xmm14,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040024256 .byte 15,89,5,109,48,0,0 // mulps 0x306d(%rip),%xmm0 # 4070 <_sk_callback_sse2+0x349>
Mike Kleinfe560a82017-05-01 12:56:35 -040024257 .byte 69,15,40,194 // movaps %xmm10,%xmm8
24258 .byte 69,15,194,195,4 // cmpneqps %xmm11,%xmm8
24259 .byte 65,15,84,192 // andps %xmm8,%xmm0
24260 .byte 69,15,92,226 // subps %xmm10,%xmm12
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024261 .byte 69,15,88,211 // addps %xmm11,%xmm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040024262 .byte 68,15,40,13,96,48,0,0 // movaps 0x3060(%rip),%xmm9 # 4080 <_sk_callback_sse2+0x359>
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024263 .byte 65,15,40,210 // movaps %xmm10,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040024264 .byte 65,15,89,209 // mulps %xmm9,%xmm2
24265 .byte 68,15,194,202,1 // cmpltps %xmm2,%xmm9
24266 .byte 69,15,92,227 // subps %xmm11,%xmm12
24267 .byte 69,15,84,225 // andps %xmm9,%xmm12
24268 .byte 69,15,85,202 // andnps %xmm10,%xmm9
24269 .byte 69,15,86,204 // orps %xmm12,%xmm9
24270 .byte 65,15,94,201 // divps %xmm9,%xmm1
24271 .byte 65,15,84,200 // andps %xmm8,%xmm1
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024272 .byte 72,173 // lods %ds:(%rsi),%rax
24273 .byte 255,224 // jmpq *%rax
24274
24275HIDDEN _sk_hsl_to_rgb_sse2
24276.globl _sk_hsl_to_rgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040024277FUNCTION(_sk_hsl_to_rgb_sse2)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024278_sk_hsl_to_rgb_sse2:
Mike Kleinfb11acd2017-05-01 14:22:10 -040024279 .byte 72,131,236,40 // sub $0x28,%rsp
24280 .byte 15,41,124,36,16 // movaps %xmm7,0x10(%rsp)
24281 .byte 15,41,52,36 // movaps %xmm6,(%rsp)
24282 .byte 15,41,108,36,240 // movaps %xmm5,-0x10(%rsp)
24283 .byte 15,41,100,36,224 // movaps %xmm4,-0x20(%rsp)
24284 .byte 15,41,92,36,208 // movaps %xmm3,-0x30(%rsp)
Mike Kleinb3665f02017-05-01 14:56:04 -040024285 .byte 68,15,40,226 // movaps %xmm2,%xmm12
24286 .byte 15,40,240 // movaps %xmm0,%xmm6
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024287 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
Mike Kleinfb11acd2017-05-01 14:22:10 -040024288 .byte 102,15,110,192 // movd %eax,%xmm0
24289 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040024290 .byte 69,15,40,196 // movaps %xmm12,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040024291 .byte 68,15,194,192,1 // cmpltps %xmm0,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040024292 .byte 68,15,40,208 // movaps %xmm0,%xmm10
24293 .byte 68,15,41,84,36,176 // movaps %xmm10,-0x50(%rsp)
24294 .byte 15,40,61,253,47,0,0 // movaps 0x2ffd(%rip),%xmm7 # 4090 <_sk_callback_sse2+0x369>
24295 .byte 15,40,193 // movaps %xmm1,%xmm0
24296 .byte 15,40,225 // movaps %xmm1,%xmm4
24297 .byte 15,87,210 // xorps %xmm2,%xmm2
24298 .byte 15,194,209,0 // cmpeqps %xmm1,%xmm2
24299 .byte 15,41,84,36,160 // movaps %xmm2,-0x60(%rsp)
24300 .byte 15,88,207 // addps %xmm7,%xmm1
24301 .byte 65,15,89,204 // mulps %xmm12,%xmm1
24302 .byte 65,15,88,196 // addps %xmm12,%xmm0
24303 .byte 65,15,89,228 // mulps %xmm12,%xmm4
24304 .byte 15,92,196 // subps %xmm4,%xmm0
24305 .byte 65,15,84,200 // andps %xmm8,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040024306 .byte 68,15,85,192 // andnps %xmm0,%xmm8
Mike Kleinb3665f02017-05-01 14:56:04 -040024307 .byte 68,15,86,193 // orps %xmm1,%xmm8
24308 .byte 15,40,13,214,47,0,0 // movaps 0x2fd6(%rip),%xmm1 # 40a0 <_sk_callback_sse2+0x379>
24309 .byte 15,88,206 // addps %xmm6,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040024310 .byte 184,0,0,0,0 // mov $0x0,%eax
24311 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
24312 .byte 102,68,15,110,241 // movd %ecx,%xmm14
24313 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
Mike Kleinb3665f02017-05-01 14:56:04 -040024314 .byte 65,15,40,198 // movaps %xmm14,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040024315 .byte 15,194,193,1 // cmpltps %xmm1,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040024316 .byte 68,15,40,61,191,47,0,0 // movaps 0x2fbf(%rip),%xmm15 # 40b0 <_sk_callback_sse2+0x389>
24317 .byte 15,40,225 // movaps %xmm1,%xmm4
24318 .byte 65,15,88,231 // addps %xmm15,%xmm4
Mike Kleinfb11acd2017-05-01 14:22:10 -040024319 .byte 15,84,224 // andps %xmm0,%xmm4
Mike Kleinb3665f02017-05-01 14:56:04 -040024320 .byte 15,85,193 // andnps %xmm1,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040024321 .byte 15,86,196 // orps %xmm4,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040024322 .byte 102,15,110,208 // movd %eax,%xmm2
24323 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
24324 .byte 15,41,84,36,144 // movaps %xmm2,-0x70(%rsp)
24325 .byte 15,40,225 // movaps %xmm1,%xmm4
24326 .byte 15,194,202,1 // cmpltps %xmm2,%xmm1
24327 .byte 15,88,231 // addps %xmm7,%xmm4
24328 .byte 15,84,225 // andps %xmm1,%xmm4
24329 .byte 15,85,200 // andnps %xmm0,%xmm1
24330 .byte 15,86,204 // orps %xmm4,%xmm1
24331 .byte 69,15,40,236 // movaps %xmm12,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040024332 .byte 69,15,88,237 // addps %xmm13,%xmm13
24333 .byte 69,15,92,232 // subps %xmm8,%xmm13
24334 .byte 184,171,170,42,62 // mov $0x3e2aaaab,%eax
24335 .byte 69,15,40,200 // movaps %xmm8,%xmm9
24336 .byte 69,15,92,205 // subps %xmm13,%xmm9
Mike Kleinb3665f02017-05-01 14:56:04 -040024337 .byte 68,15,89,13,126,47,0,0 // mulps 0x2f7e(%rip),%xmm9 # 40c0 <_sk_callback_sse2+0x399>
Mike Kleinfb11acd2017-05-01 14:22:10 -040024338 .byte 185,171,170,42,63 // mov $0x3f2aaaab,%ecx
Mike Kleinb3665f02017-05-01 14:56:04 -040024339 .byte 102,15,110,217 // movd %ecx,%xmm3
24340 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
24341 .byte 15,41,92,36,128 // movaps %xmm3,-0x80(%rsp)
24342 .byte 15,40,45,117,47,0,0 // movaps 0x2f75(%rip),%xmm5 # 40d0 <_sk_callback_sse2+0x3a9>
24343 .byte 15,40,229 // movaps %xmm5,%xmm4
24344 .byte 15,92,225 // subps %xmm1,%xmm4
24345 .byte 15,40,209 // movaps %xmm1,%xmm2
24346 .byte 68,15,40,217 // movaps %xmm1,%xmm11
24347 .byte 15,40,193 // movaps %xmm1,%xmm0
24348 .byte 15,194,203,1 // cmpltps %xmm3,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040024349 .byte 65,15,89,225 // mulps %xmm9,%xmm4
24350 .byte 65,15,88,229 // addps %xmm13,%xmm4
Mike Kleinfb11acd2017-05-01 14:22:10 -040024351 .byte 15,84,225 // andps %xmm1,%xmm4
Mike Kleinb3665f02017-05-01 14:56:04 -040024352 .byte 65,15,85,205 // andnps %xmm13,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040024353 .byte 15,86,204 // orps %xmm4,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040024354 .byte 65,15,194,194,1 // cmpltps %xmm10,%xmm0
24355 .byte 65,15,40,224 // movaps %xmm8,%xmm4
24356 .byte 15,84,224 // andps %xmm0,%xmm4
24357 .byte 15,85,193 // andnps %xmm1,%xmm0
24358 .byte 15,86,196 // orps %xmm4,%xmm0
24359 .byte 102,68,15,110,208 // movd %eax,%xmm10
24360 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24361 .byte 65,15,194,210,1 // cmpltps %xmm10,%xmm2
24362 .byte 69,15,89,217 // mulps %xmm9,%xmm11
24363 .byte 69,15,88,221 // addps %xmm13,%xmm11
24364 .byte 68,15,84,218 // andps %xmm2,%xmm11
24365 .byte 15,85,208 // andnps %xmm0,%xmm2
24366 .byte 65,15,86,211 // orps %xmm11,%xmm2
24367 .byte 15,40,68,36,160 // movaps -0x60(%rsp),%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040024368 .byte 15,85,194 // andnps %xmm2,%xmm0
24369 .byte 15,41,68,36,192 // movaps %xmm0,-0x40(%rsp)
24370 .byte 65,15,40,198 // movaps %xmm14,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040024371 .byte 15,194,198,1 // cmpltps %xmm6,%xmm0
24372 .byte 15,40,206 // movaps %xmm6,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040024373 .byte 65,15,88,207 // addps %xmm15,%xmm1
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024374 .byte 15,84,200 // andps %xmm0,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040024375 .byte 15,85,198 // andnps %xmm6,%xmm0
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024376 .byte 15,86,193 // orps %xmm1,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040024377 .byte 15,40,206 // movaps %xmm6,%xmm1
24378 .byte 15,194,76,36,144,1 // cmpltps -0x70(%rsp),%xmm1
24379 .byte 15,40,214 // movaps %xmm6,%xmm2
24380 .byte 15,88,215 // addps %xmm7,%xmm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024381 .byte 15,84,209 // andps %xmm1,%xmm2
24382 .byte 15,85,200 // andnps %xmm0,%xmm1
24383 .byte 15,86,202 // orps %xmm2,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040024384 .byte 15,40,197 // movaps %xmm5,%xmm0
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024385 .byte 15,92,193 // subps %xmm1,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040024386 .byte 15,40,217 // movaps %xmm1,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040024387 .byte 15,40,225 // movaps %xmm1,%xmm4
24388 .byte 15,40,209 // movaps %xmm1,%xmm2
24389 .byte 15,194,76,36,128,1 // cmpltps -0x80(%rsp),%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040024390 .byte 65,15,89,193 // mulps %xmm9,%xmm0
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024391 .byte 65,15,88,197 // addps %xmm13,%xmm0
24392 .byte 15,84,193 // andps %xmm1,%xmm0
24393 .byte 65,15,85,205 // andnps %xmm13,%xmm1
24394 .byte 15,86,200 // orps %xmm0,%xmm1
Mike Kleinb3665f02017-05-01 14:56:04 -040024395 .byte 68,15,40,92,36,176 // movaps -0x50(%rsp),%xmm11
24396 .byte 65,15,194,211,1 // cmpltps %xmm11,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040024397 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040024398 .byte 15,84,194 // andps %xmm2,%xmm0
Mike Kleinb3665f02017-05-01 14:56:04 -040024399 .byte 15,85,209 // andnps %xmm1,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040024400 .byte 15,86,208 // orps %xmm0,%xmm2
Mike Kleinb3665f02017-05-01 14:56:04 -040024401 .byte 65,15,194,218,1 // cmpltps %xmm10,%xmm3
24402 .byte 65,15,89,225 // mulps %xmm9,%xmm4
24403 .byte 65,15,88,229 // addps %xmm13,%xmm4
24404 .byte 15,84,227 // andps %xmm3,%xmm4
Mike Kleinfb11acd2017-05-01 14:22:10 -040024405 .byte 15,85,218 // andnps %xmm2,%xmm3
Mike Kleinb3665f02017-05-01 14:56:04 -040024406 .byte 15,86,220 // orps %xmm4,%xmm3
24407 .byte 15,40,100,36,160 // movaps -0x60(%rsp),%xmm4
24408 .byte 15,40,204 // movaps %xmm4,%xmm1
24409 .byte 15,85,203 // andnps %xmm3,%xmm1
24410 .byte 15,88,53,135,46,0,0 // addps 0x2e87(%rip),%xmm6 # 40e0 <_sk_callback_sse2+0x3b9>
24411 .byte 15,88,254 // addps %xmm6,%xmm7
24412 .byte 68,15,194,246,1 // cmpltps %xmm6,%xmm14
24413 .byte 68,15,88,254 // addps %xmm6,%xmm15
Mike Kleinfb11acd2017-05-01 14:22:10 -040024414 .byte 69,15,84,254 // andps %xmm14,%xmm15
Mike Kleinb3665f02017-05-01 14:56:04 -040024415 .byte 68,15,85,246 // andnps %xmm6,%xmm14
24416 .byte 15,194,116,36,144,1 // cmpltps -0x70(%rsp),%xmm6
Mike Kleinfb11acd2017-05-01 14:22:10 -040024417 .byte 69,15,86,247 // orps %xmm15,%xmm14
Mike Kleinb3665f02017-05-01 14:56:04 -040024418 .byte 15,84,254 // andps %xmm6,%xmm7
24419 .byte 65,15,85,246 // andnps %xmm14,%xmm6
24420 .byte 15,86,247 // orps %xmm7,%xmm6
24421 .byte 15,40,254 // movaps %xmm6,%xmm7
24422 .byte 65,15,194,250,1 // cmpltps %xmm10,%xmm7
24423 .byte 15,40,198 // movaps %xmm6,%xmm0
24424 .byte 65,15,194,195,1 // cmpltps %xmm11,%xmm0
24425 .byte 15,92,238 // subps %xmm6,%xmm5
24426 .byte 15,40,222 // movaps %xmm6,%xmm3
24427 .byte 15,194,116,36,128,1 // cmpltps -0x80(%rsp),%xmm6
24428 .byte 65,15,89,217 // mulps %xmm9,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040024429 .byte 65,15,89,233 // mulps %xmm9,%xmm5
Mike Kleinb3665f02017-05-01 14:56:04 -040024430 .byte 65,15,88,221 // addps %xmm13,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040024431 .byte 65,15,88,237 // addps %xmm13,%xmm5
Mike Kleinb3665f02017-05-01 14:56:04 -040024432 .byte 15,84,238 // andps %xmm6,%xmm5
24433 .byte 65,15,85,245 // andnps %xmm13,%xmm6
24434 .byte 15,86,245 // orps %xmm5,%xmm6
24435 .byte 68,15,84,192 // andps %xmm0,%xmm8
24436 .byte 15,85,198 // andnps %xmm6,%xmm0
24437 .byte 65,15,86,192 // orps %xmm8,%xmm0
24438 .byte 15,84,223 // andps %xmm7,%xmm3
24439 .byte 15,85,248 // andnps %xmm0,%xmm7
24440 .byte 15,86,251 // orps %xmm3,%xmm7
24441 .byte 15,40,196 // movaps %xmm4,%xmm0
24442 .byte 68,15,84,224 // andps %xmm0,%xmm12
24443 .byte 15,85,199 // andnps %xmm7,%xmm0
24444 .byte 15,40,84,36,192 // movaps -0x40(%rsp),%xmm2
24445 .byte 65,15,86,212 // orps %xmm12,%xmm2
24446 .byte 65,15,86,204 // orps %xmm12,%xmm1
24447 .byte 68,15,86,224 // orps %xmm0,%xmm12
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024448 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3665f02017-05-01 14:56:04 -040024449 .byte 15,40,194 // movaps %xmm2,%xmm0
24450 .byte 65,15,40,212 // movaps %xmm12,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040024451 .byte 15,40,92,36,208 // movaps -0x30(%rsp),%xmm3
24452 .byte 15,40,100,36,224 // movaps -0x20(%rsp),%xmm4
24453 .byte 15,40,108,36,240 // movaps -0x10(%rsp),%xmm5
24454 .byte 15,40,52,36 // movaps (%rsp),%xmm6
24455 .byte 15,40,124,36,16 // movaps 0x10(%rsp),%xmm7
24456 .byte 72,131,196,40 // add $0x28,%rsp
Mike Kleindb1cbcb2017-04-12 08:35:41 -040024457 .byte 255,224 // jmpq *%rax
24458
Mike Klein7c4af542017-03-29 18:21:14 -040024459HIDDEN _sk_scale_1_float_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024460.globl _sk_scale_1_float_sse2
Mike Klein86714282017-04-13 17:37:38 -040024461FUNCTION(_sk_scale_1_float_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024462_sk_scale_1_float_sse2:
24463 .byte 72,173 // lods %ds:(%rsi),%rax
24464 .byte 243,68,15,16,0 // movss (%rax),%xmm8
24465 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24466 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24467 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24468 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24469 .byte 65,15,89,216 // mulps %xmm8,%xmm3
24470 .byte 72,173 // lods %ds:(%rsi),%rax
24471 .byte 255,224 // jmpq *%rax
24472
Mike Klein7c4af542017-03-29 18:21:14 -040024473HIDDEN _sk_scale_u8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024474.globl _sk_scale_u8_sse2
Mike Klein86714282017-04-13 17:37:38 -040024475FUNCTION(_sk_scale_u8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024476_sk_scale_u8_sse2:
24477 .byte 72,173 // lods %ds:(%rsi),%rax
24478 .byte 72,139,0 // mov (%rax),%rax
24479 .byte 102,68,15,110,4,56 // movd (%rax,%rdi,1),%xmm8
24480 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
24481 .byte 102,69,15,96,193 // punpcklbw %xmm9,%xmm8
24482 .byte 102,69,15,97,193 // punpcklwd %xmm9,%xmm8
24483 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040024484 .byte 68,15,89,5,157,45,0,0 // mulps 0x2d9d(%rip),%xmm8 # 40f0 <_sk_callback_sse2+0x3c9>
Mike Kleinfe560a82017-05-01 12:56:35 -040024485 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24486 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24487 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24488 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040024489 .byte 72,173 // lods %ds:(%rsi),%rax
24490 .byte 255,224 // jmpq *%rax
24491
Mike Klein7c4af542017-03-29 18:21:14 -040024492HIDDEN _sk_lerp_1_float_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024493.globl _sk_lerp_1_float_sse2
Mike Klein86714282017-04-13 17:37:38 -040024494FUNCTION(_sk_lerp_1_float_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024495_sk_lerp_1_float_sse2:
24496 .byte 72,173 // lods %ds:(%rsi),%rax
24497 .byte 243,68,15,16,0 // movss (%rax),%xmm8
24498 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24499 .byte 15,92,196 // subps %xmm4,%xmm0
24500 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24501 .byte 15,88,196 // addps %xmm4,%xmm0
24502 .byte 15,92,205 // subps %xmm5,%xmm1
24503 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24504 .byte 15,88,205 // addps %xmm5,%xmm1
24505 .byte 15,92,214 // subps %xmm6,%xmm2
24506 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24507 .byte 15,88,214 // addps %xmm6,%xmm2
24508 .byte 15,92,223 // subps %xmm7,%xmm3
24509 .byte 65,15,89,216 // mulps %xmm8,%xmm3
24510 .byte 15,88,223 // addps %xmm7,%xmm3
24511 .byte 72,173 // lods %ds:(%rsi),%rax
24512 .byte 255,224 // jmpq *%rax
24513
Mike Klein7c4af542017-03-29 18:21:14 -040024514HIDDEN _sk_lerp_u8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024515.globl _sk_lerp_u8_sse2
Mike Klein86714282017-04-13 17:37:38 -040024516FUNCTION(_sk_lerp_u8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024517_sk_lerp_u8_sse2:
24518 .byte 72,173 // lods %ds:(%rsi),%rax
24519 .byte 72,139,0 // mov (%rax),%rax
24520 .byte 102,68,15,110,4,56 // movd (%rax,%rdi,1),%xmm8
24521 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
24522 .byte 102,69,15,96,193 // punpcklbw %xmm9,%xmm8
24523 .byte 102,69,15,97,193 // punpcklwd %xmm9,%xmm8
24524 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040024525 .byte 68,15,89,5,59,45,0,0 // mulps 0x2d3b(%rip),%xmm8 # 4100 <_sk_callback_sse2+0x3d9>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024526 .byte 15,92,196 // subps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040024527 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040024528 .byte 15,88,196 // addps %xmm4,%xmm0
24529 .byte 15,92,205 // subps %xmm5,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040024530 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040024531 .byte 15,88,205 // addps %xmm5,%xmm1
24532 .byte 15,92,214 // subps %xmm6,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040024533 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024534 .byte 15,88,214 // addps %xmm6,%xmm2
24535 .byte 15,92,223 // subps %xmm7,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040024536 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040024537 .byte 15,88,223 // addps %xmm7,%xmm3
24538 .byte 72,173 // lods %ds:(%rsi),%rax
24539 .byte 255,224 // jmpq *%rax
24540
Mike Klein7c4af542017-03-29 18:21:14 -040024541HIDDEN _sk_lerp_565_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024542.globl _sk_lerp_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040024543FUNCTION(_sk_lerp_565_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024544_sk_lerp_565_sse2:
24545 .byte 72,173 // lods %ds:(%rsi),%rax
24546 .byte 72,139,0 // mov (%rax),%rax
24547 .byte 243,68,15,126,4,120 // movq (%rax,%rdi,2),%xmm8
24548 .byte 102,15,239,219 // pxor %xmm3,%xmm3
24549 .byte 102,68,15,97,195 // punpcklwd %xmm3,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040024550 .byte 102,15,111,29,3,45,0,0 // movdqa 0x2d03(%rip),%xmm3 # 4110 <_sk_callback_sse2+0x3e9>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024551 .byte 102,65,15,219,216 // pand %xmm8,%xmm3
24552 .byte 68,15,91,203 // cvtdq2ps %xmm3,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040024553 .byte 68,15,89,13,2,45,0,0 // mulps 0x2d02(%rip),%xmm9 # 4120 <_sk_callback_sse2+0x3f9>
24554 .byte 102,15,111,29,10,45,0,0 // movdqa 0x2d0a(%rip),%xmm3 # 4130 <_sk_callback_sse2+0x409>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024555 .byte 102,65,15,219,216 // pand %xmm8,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040024556 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040024557 .byte 15,89,29,11,45,0,0 // mulps 0x2d0b(%rip),%xmm3 # 4140 <_sk_callback_sse2+0x419>
24558 .byte 102,68,15,219,5,18,45,0,0 // pand 0x2d12(%rip),%xmm8 # 4150 <_sk_callback_sse2+0x429>
Mike Klein308e6242017-04-27 13:56:33 -040024559 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040024560 .byte 68,15,89,5,22,45,0,0 // mulps 0x2d16(%rip),%xmm8 # 4160 <_sk_callback_sse2+0x439>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024561 .byte 15,92,196 // subps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040024562 .byte 65,15,89,193 // mulps %xmm9,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040024563 .byte 15,88,196 // addps %xmm4,%xmm0
24564 .byte 15,92,205 // subps %xmm5,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040024565 .byte 15,89,203 // mulps %xmm3,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040024566 .byte 15,88,205 // addps %xmm5,%xmm1
24567 .byte 15,92,214 // subps %xmm6,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040024568 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024569 .byte 15,88,214 // addps %xmm6,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024570 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040024571 .byte 15,40,29,0,45,0,0 // movaps 0x2d00(%rip),%xmm3 # 4170 <_sk_callback_sse2+0x449>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024572 .byte 255,224 // jmpq *%rax
24573
Mike Klein7c4af542017-03-29 18:21:14 -040024574HIDDEN _sk_load_tables_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024575.globl _sk_load_tables_sse2
Mike Klein86714282017-04-13 17:37:38 -040024576FUNCTION(_sk_load_tables_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024577_sk_load_tables_sse2:
24578 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040024579 .byte 76,139,0 // mov (%rax),%r8
24580 .byte 76,139,72,8 // mov 0x8(%rax),%r9
24581 .byte 243,69,15,111,12,184 // movdqu (%r8,%rdi,4),%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040024582 .byte 102,68,15,111,5,246,44,0,0 // movdqa 0x2cf6(%rip),%xmm8 # 4180 <_sk_callback_sse2+0x459>
Mike Klein0aa742f2017-04-27 13:36:57 -040024583 .byte 102,65,15,111,193 // movdqa %xmm9,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040024584 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040024585 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
24586 .byte 102,73,15,126,200 // movq %xmm1,%r8
24587 .byte 102,72,15,126,193 // movq %xmm0,%rcx
24588 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleind7e06ae2017-03-29 16:33:06 -040024589 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040024590 .byte 69,15,182,216 // movzbl %r8b,%r11d
24591 .byte 73,193,232,30 // shr $0x1e,%r8
24592 .byte 243,65,15,16,12,9 // movss (%r9,%rcx,1),%xmm1
24593 .byte 243,67,15,16,4,1 // movss (%r9,%r8,1),%xmm0
24594 .byte 15,20,200 // unpcklps %xmm0,%xmm1
24595 .byte 243,67,15,16,4,145 // movss (%r9,%r10,4),%xmm0
24596 .byte 243,67,15,16,20,153 // movss (%r9,%r11,4),%xmm2
24597 .byte 15,20,194 // unpcklps %xmm2,%xmm0
24598 .byte 15,20,193 // unpcklps %xmm1,%xmm0
24599 .byte 76,139,64,16 // mov 0x10(%rax),%r8
24600 .byte 102,65,15,111,201 // movdqa %xmm9,%xmm1
24601 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
24602 .byte 102,65,15,219,200 // pand %xmm8,%xmm1
24603 .byte 102,15,112,209,78 // pshufd $0x4e,%xmm1,%xmm2
24604 .byte 102,73,15,126,209 // movq %xmm2,%r9
24605 .byte 102,72,15,126,201 // movq %xmm1,%rcx
24606 .byte 68,15,182,209 // movzbl %cl,%r10d
24607 .byte 72,193,233,30 // shr $0x1e,%rcx
24608 .byte 69,15,182,217 // movzbl %r9b,%r11d
24609 .byte 73,193,233,30 // shr $0x1e,%r9
24610 .byte 243,65,15,16,20,8 // movss (%r8,%rcx,1),%xmm2
24611 .byte 243,67,15,16,12,8 // movss (%r8,%r9,1),%xmm1
24612 .byte 15,20,209 // unpcklps %xmm1,%xmm2
24613 .byte 243,67,15,16,12,144 // movss (%r8,%r10,4),%xmm1
24614 .byte 243,67,15,16,28,152 // movss (%r8,%r11,4),%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040024615 .byte 15,20,203 // unpcklps %xmm3,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040024616 .byte 15,20,202 // unpcklps %xmm2,%xmm1
24617 .byte 76,139,64,24 // mov 0x18(%rax),%r8
24618 .byte 102,65,15,111,209 // movdqa %xmm9,%xmm2
24619 .byte 102,15,114,210,16 // psrld $0x10,%xmm2
24620 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
24621 .byte 102,15,112,218,78 // pshufd $0x4e,%xmm2,%xmm3
24622 .byte 102,72,15,126,217 // movq %xmm3,%rcx
24623 .byte 102,72,15,126,208 // movq %xmm2,%rax
24624 .byte 68,15,182,200 // movzbl %al,%r9d
Mike Kleind7e06ae2017-03-29 16:33:06 -040024625 .byte 72,193,232,30 // shr $0x1e,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040024626 .byte 68,15,182,209 // movzbl %cl,%r10d
24627 .byte 72,193,233,30 // shr $0x1e,%rcx
24628 .byte 243,69,15,16,4,0 // movss (%r8,%rax,1),%xmm8
24629 .byte 243,65,15,16,20,8 // movss (%r8,%rcx,1),%xmm2
24630 .byte 68,15,20,194 // unpcklps %xmm2,%xmm8
24631 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
24632 .byte 243,67,15,16,28,144 // movss (%r8,%r10,4),%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040024633 .byte 15,20,211 // unpcklps %xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040024634 .byte 65,15,20,208 // unpcklps %xmm8,%xmm2
24635 .byte 102,65,15,114,209,24 // psrld $0x18,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040024636 .byte 65,15,91,217 // cvtdq2ps %xmm9,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040024637 .byte 15,89,29,3,44,0,0 // mulps 0x2c03(%rip),%xmm3 # 4190 <_sk_callback_sse2+0x469>
Mike Kleind7e06ae2017-03-29 16:33:06 -040024638 .byte 72,173 // lods %ds:(%rsi),%rax
24639 .byte 255,224 // jmpq *%rax
24640
Mike Kleina3735cd2017-04-17 13:19:05 -040024641HIDDEN _sk_load_tables_u16_be_sse2
24642.globl _sk_load_tables_u16_be_sse2
24643FUNCTION(_sk_load_tables_u16_be_sse2)
24644_sk_load_tables_u16_be_sse2:
24645 .byte 72,173 // lods %ds:(%rsi),%rax
24646 .byte 72,139,8 // mov (%rax),%rcx
24647 .byte 76,139,64,8 // mov 0x8(%rax),%r8
24648 .byte 243,15,111,4,249 // movdqu (%rcx,%rdi,8),%xmm0
24649 .byte 243,15,111,76,249,16 // movdqu 0x10(%rcx,%rdi,8),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040024650 .byte 102,68,15,111,200 // movdqa %xmm0,%xmm9
24651 .byte 102,68,15,97,201 // punpcklwd %xmm1,%xmm9
Mike Kleina3735cd2017-04-17 13:19:05 -040024652 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040024653 .byte 102,65,15,111,201 // movdqa %xmm9,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040024654 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040024655 .byte 102,68,15,105,200 // punpckhwd %xmm0,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040024656 .byte 102,68,15,111,21,214,43,0,0 // movdqa 0x2bd6(%rip),%xmm10 # 41a0 <_sk_callback_sse2+0x479>
Mike Kleina3735cd2017-04-17 13:19:05 -040024657 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040024658 .byte 102,65,15,219,194 // pand %xmm10,%xmm0
24659 .byte 102,69,15,239,192 // pxor %xmm8,%xmm8
Mike Kleina3735cd2017-04-17 13:19:05 -040024660 .byte 102,65,15,97,192 // punpcklwd %xmm8,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040024661 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
24662 .byte 102,72,15,126,217 // movq %xmm3,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040024663 .byte 68,15,182,201 // movzbl %cl,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040024664 .byte 72,193,233,32 // shr $0x20,%rcx
24665 .byte 102,73,15,126,194 // movq %xmm0,%r10
Mike Klein0aa742f2017-04-27 13:36:57 -040024666 .byte 69,15,182,218 // movzbl %r10b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040024667 .byte 73,193,234,30 // shr $0x1e,%r10
24668 .byte 243,67,15,16,28,16 // movss (%r8,%r10,1),%xmm3
24669 .byte 243,65,15,16,4,136 // movss (%r8,%rcx,4),%xmm0
24670 .byte 15,20,216 // unpcklps %xmm0,%xmm3
24671 .byte 243,67,15,16,4,152 // movss (%r8,%r11,4),%xmm0
24672 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
24673 .byte 15,20,194 // unpcklps %xmm2,%xmm0
24674 .byte 15,20,195 // unpcklps %xmm3,%xmm0
24675 .byte 76,139,80,16 // mov 0x10(%rax),%r10
24676 .byte 102,15,115,217,8 // psrldq $0x8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040024677 .byte 102,65,15,219,202 // pand %xmm10,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040024678 .byte 102,65,15,97,200 // punpcklwd %xmm8,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040024679 .byte 102,15,112,209,78 // pshufd $0x4e,%xmm1,%xmm2
24680 .byte 102,73,15,126,208 // movq %xmm2,%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040024681 .byte 69,15,182,200 // movzbl %r8b,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040024682 .byte 73,193,232,32 // shr $0x20,%r8
24683 .byte 102,72,15,126,201 // movq %xmm1,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040024684 .byte 68,15,182,217 // movzbl %cl,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040024685 .byte 72,193,233,30 // shr $0x1e,%rcx
24686 .byte 243,65,15,16,20,10 // movss (%r10,%rcx,1),%xmm2
24687 .byte 243,67,15,16,12,130 // movss (%r10,%r8,4),%xmm1
24688 .byte 15,20,209 // unpcklps %xmm1,%xmm2
24689 .byte 243,67,15,16,12,154 // movss (%r10,%r11,4),%xmm1
24690 .byte 243,67,15,16,28,138 // movss (%r10,%r9,4),%xmm3
24691 .byte 15,20,203 // unpcklps %xmm3,%xmm1
24692 .byte 15,20,202 // unpcklps %xmm2,%xmm1
24693 .byte 76,139,72,24 // mov 0x18(%rax),%r9
Mike Kleina3735cd2017-04-17 13:19:05 -040024694 .byte 102,69,15,219,209 // pand %xmm9,%xmm10
Mike Klein0aa742f2017-04-27 13:36:57 -040024695 .byte 102,69,15,97,208 // punpcklwd %xmm8,%xmm10
Mike Kleina3735cd2017-04-17 13:19:05 -040024696 .byte 102,65,15,112,210,78 // pshufd $0x4e,%xmm10,%xmm2
24697 .byte 102,72,15,126,209 // movq %xmm2,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040024698 .byte 68,15,182,193 // movzbl %cl,%r8d
Mike Kleina3735cd2017-04-17 13:19:05 -040024699 .byte 72,193,233,32 // shr $0x20,%rcx
24700 .byte 102,76,15,126,208 // movq %xmm10,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040024701 .byte 68,15,182,208 // movzbl %al,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040024702 .byte 72,193,232,30 // shr $0x1e,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040024703 .byte 243,69,15,16,20,1 // movss (%r9,%rax,1),%xmm10
Mike Kleina3735cd2017-04-17 13:19:05 -040024704 .byte 243,65,15,16,20,137 // movss (%r9,%rcx,4),%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040024705 .byte 68,15,20,210 // unpcklps %xmm2,%xmm10
Mike Kleina3735cd2017-04-17 13:19:05 -040024706 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
24707 .byte 243,67,15,16,28,129 // movss (%r9,%r8,4),%xmm3
24708 .byte 15,20,211 // unpcklps %xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040024709 .byte 65,15,20,210 // unpcklps %xmm10,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040024710 .byte 102,65,15,112,217,78 // pshufd $0x4e,%xmm9,%xmm3
24711 .byte 102,68,15,111,203 // movdqa %xmm3,%xmm9
24712 .byte 102,65,15,113,241,8 // psllw $0x8,%xmm9
24713 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
24714 .byte 102,65,15,235,217 // por %xmm9,%xmm3
24715 .byte 102,65,15,97,216 // punpcklwd %xmm8,%xmm3
24716 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040024717 .byte 15,89,29,197,42,0,0 // mulps 0x2ac5(%rip),%xmm3 # 41b0 <_sk_callback_sse2+0x489>
Mike Kleina3735cd2017-04-17 13:19:05 -040024718 .byte 72,173 // lods %ds:(%rsi),%rax
24719 .byte 255,224 // jmpq *%rax
24720
24721HIDDEN _sk_load_tables_rgb_u16_be_sse2
24722.globl _sk_load_tables_rgb_u16_be_sse2
24723FUNCTION(_sk_load_tables_rgb_u16_be_sse2)
24724_sk_load_tables_rgb_u16_be_sse2:
24725 .byte 72,173 // lods %ds:(%rsi),%rax
24726 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
24727 .byte 72,139,8 // mov (%rax),%rcx
24728 .byte 76,139,64,8 // mov 0x8(%rax),%r8
24729 .byte 243,70,15,111,28,73 // movdqu (%rcx,%r9,2),%xmm11
24730 .byte 243,66,15,111,68,73,8 // movdqu 0x8(%rcx,%r9,2),%xmm0
24731 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040024732 .byte 102,69,15,111,211 // movdqa %xmm11,%xmm10
24733 .byte 102,65,15,115,218,6 // psrldq $0x6,%xmm10
Mike Kleina3735cd2017-04-17 13:19:05 -040024734 .byte 102,68,15,97,216 // punpcklwd %xmm0,%xmm11
24735 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040024736 .byte 102,68,15,97,208 // punpcklwd %xmm0,%xmm10
Mike Kleina3735cd2017-04-17 13:19:05 -040024737 .byte 102,65,15,111,195 // movdqa %xmm11,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040024738 .byte 102,65,15,97,194 // punpcklwd %xmm10,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040024739 .byte 102,68,15,111,5,133,42,0,0 // movdqa 0x2a85(%rip),%xmm8 # 41c0 <_sk_callback_sse2+0x499>
Mike Klein0aa742f2017-04-27 13:36:57 -040024740 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
24741 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
24742 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
24743 .byte 102,65,15,97,193 // punpcklwd %xmm9,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040024744 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
24745 .byte 102,72,15,126,217 // movq %xmm3,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040024746 .byte 68,15,182,201 // movzbl %cl,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040024747 .byte 72,193,233,32 // shr $0x20,%rcx
24748 .byte 102,73,15,126,194 // movq %xmm0,%r10
Mike Klein0aa742f2017-04-27 13:36:57 -040024749 .byte 69,15,182,218 // movzbl %r10b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040024750 .byte 73,193,234,30 // shr $0x1e,%r10
24751 .byte 243,67,15,16,28,16 // movss (%r8,%r10,1),%xmm3
24752 .byte 243,65,15,16,4,136 // movss (%r8,%rcx,4),%xmm0
24753 .byte 15,20,216 // unpcklps %xmm0,%xmm3
24754 .byte 243,67,15,16,4,152 // movss (%r8,%r11,4),%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040024755 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
24756 .byte 15,20,194 // unpcklps %xmm2,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040024757 .byte 15,20,195 // unpcklps %xmm3,%xmm0
24758 .byte 76,139,80,16 // mov 0x10(%rax),%r10
Mike Klein0aa742f2017-04-27 13:36:57 -040024759 .byte 102,65,15,219,200 // pand %xmm8,%xmm1
24760 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
24761 .byte 102,15,112,209,78 // pshufd $0x4e,%xmm1,%xmm2
24762 .byte 102,73,15,126,208 // movq %xmm2,%r8
24763 .byte 69,15,182,200 // movzbl %r8b,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040024764 .byte 73,193,232,32 // shr $0x20,%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040024765 .byte 102,72,15,126,201 // movq %xmm1,%rcx
24766 .byte 68,15,182,217 // movzbl %cl,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040024767 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040024768 .byte 243,65,15,16,20,10 // movss (%r10,%rcx,1),%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040024769 .byte 243,67,15,16,12,130 // movss (%r10,%r8,4),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040024770 .byte 15,20,209 // unpcklps %xmm1,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040024771 .byte 243,67,15,16,12,154 // movss (%r10,%r11,4),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040024772 .byte 243,67,15,16,28,138 // movss (%r10,%r9,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040024773 .byte 15,20,203 // unpcklps %xmm3,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040024774 .byte 15,20,202 // unpcklps %xmm2,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040024775 .byte 76,139,72,24 // mov 0x18(%rax),%r9
Mike Klein0aa742f2017-04-27 13:36:57 -040024776 .byte 102,69,15,105,218 // punpckhwd %xmm10,%xmm11
24777 .byte 102,69,15,219,216 // pand %xmm8,%xmm11
24778 .byte 102,69,15,97,217 // punpcklwd %xmm9,%xmm11
Mike Kleina3735cd2017-04-17 13:19:05 -040024779 .byte 102,65,15,112,211,78 // pshufd $0x4e,%xmm11,%xmm2
24780 .byte 102,72,15,126,209 // movq %xmm2,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040024781 .byte 68,15,182,193 // movzbl %cl,%r8d
Mike Kleina3735cd2017-04-17 13:19:05 -040024782 .byte 72,193,233,32 // shr $0x20,%rcx
24783 .byte 102,76,15,126,216 // movq %xmm11,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040024784 .byte 68,15,182,208 // movzbl %al,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040024785 .byte 72,193,232,30 // shr $0x1e,%rax
24786 .byte 243,69,15,16,4,1 // movss (%r9,%rax,1),%xmm8
24787 .byte 243,65,15,16,20,137 // movss (%r9,%rcx,4),%xmm2
24788 .byte 68,15,20,194 // unpcklps %xmm2,%xmm8
24789 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
24790 .byte 243,67,15,16,28,129 // movss (%r9,%r8,4),%xmm3
24791 .byte 15,20,211 // unpcklps %xmm3,%xmm2
24792 .byte 65,15,20,208 // unpcklps %xmm8,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040024793 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040024794 .byte 15,40,29,148,41,0,0 // movaps 0x2994(%rip),%xmm3 # 41d0 <_sk_callback_sse2+0x4a9>
Mike Kleina3735cd2017-04-17 13:19:05 -040024795 .byte 255,224 // jmpq *%rax
24796
Mike Klein40de6da2017-04-07 13:09:29 -040024797HIDDEN _sk_byte_tables_sse2
24798.globl _sk_byte_tables_sse2
Mike Klein86714282017-04-13 17:37:38 -040024799FUNCTION(_sk_byte_tables_sse2)
Mike Klein40de6da2017-04-07 13:09:29 -040024800_sk_byte_tables_sse2:
24801 .byte 65,86 // push %r14
24802 .byte 83 // push %rbx
24803 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040024804 .byte 68,15,40,5,149,41,0,0 // movaps 0x2995(%rip),%xmm8 # 41e0 <_sk_callback_sse2+0x4b9>
Mike Klein40de6da2017-04-07 13:09:29 -040024805 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24806 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
24807 .byte 102,72,15,126,193 // movq %xmm0,%rcx
24808 .byte 65,137,200 // mov %ecx,%r8d
24809 .byte 72,193,233,32 // shr $0x20,%rcx
24810 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
24811 .byte 102,73,15,126,193 // movq %xmm0,%r9
24812 .byte 69,137,202 // mov %r9d,%r10d
24813 .byte 77,137,203 // mov %r9,%r11
24814 .byte 73,193,235,32 // shr $0x20,%r11
24815 .byte 76,139,48 // mov (%rax),%r14
24816 .byte 76,139,72,8 // mov 0x8(%rax),%r9
24817 .byte 71,15,182,20,22 // movzbl (%r14,%r10,1),%r10d
24818 .byte 67,15,182,28,30 // movzbl (%r14,%r11,1),%ebx
24819 .byte 193,227,8 // shl $0x8,%ebx
24820 .byte 68,9,211 // or %r10d,%ebx
24821 .byte 71,15,182,4,6 // movzbl (%r14,%r8,1),%r8d
24822 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
24823 .byte 193,225,8 // shl $0x8,%ecx
24824 .byte 68,9,193 // or %r8d,%ecx
24825 .byte 102,15,196,193,0 // pinsrw $0x0,%ecx,%xmm0
24826 .byte 102,15,196,195,1 // pinsrw $0x1,%ebx,%xmm0
24827 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
24828 .byte 102,65,15,96,193 // punpcklbw %xmm9,%xmm0
24829 .byte 102,65,15,97,193 // punpcklwd %xmm9,%xmm0
24830 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040024831 .byte 68,15,40,21,50,41,0,0 // movaps 0x2932(%rip),%xmm10 # 41f0 <_sk_callback_sse2+0x4c9>
Mike Klein40de6da2017-04-07 13:09:29 -040024832 .byte 65,15,89,194 // mulps %xmm10,%xmm0
24833 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24834 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
24835 .byte 102,72,15,126,201 // movq %xmm1,%rcx
24836 .byte 65,137,200 // mov %ecx,%r8d
24837 .byte 72,193,233,32 // shr $0x20,%rcx
24838 .byte 102,15,112,201,78 // pshufd $0x4e,%xmm1,%xmm1
24839 .byte 102,72,15,126,203 // movq %xmm1,%rbx
24840 .byte 65,137,218 // mov %ebx,%r10d
24841 .byte 72,193,235,32 // shr $0x20,%rbx
24842 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
24843 .byte 65,15,182,28,25 // movzbl (%r9,%rbx,1),%ebx
24844 .byte 193,227,8 // shl $0x8,%ebx
24845 .byte 68,9,211 // or %r10d,%ebx
24846 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
24847 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
24848 .byte 193,225,8 // shl $0x8,%ecx
24849 .byte 68,9,193 // or %r8d,%ecx
24850 .byte 102,15,196,201,0 // pinsrw $0x0,%ecx,%xmm1
24851 .byte 102,15,196,203,1 // pinsrw $0x1,%ebx,%xmm1
24852 .byte 102,65,15,96,201 // punpcklbw %xmm9,%xmm1
24853 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
24854 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
24855 .byte 65,15,89,202 // mulps %xmm10,%xmm1
24856 .byte 76,139,72,16 // mov 0x10(%rax),%r9
24857 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24858 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
24859 .byte 102,72,15,126,211 // movq %xmm2,%rbx
24860 .byte 65,137,216 // mov %ebx,%r8d
24861 .byte 72,193,235,32 // shr $0x20,%rbx
24862 .byte 102,15,112,210,78 // pshufd $0x4e,%xmm2,%xmm2
24863 .byte 102,72,15,126,209 // movq %xmm2,%rcx
24864 .byte 65,137,202 // mov %ecx,%r10d
24865 .byte 72,193,233,32 // shr $0x20,%rcx
24866 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
24867 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
24868 .byte 193,225,8 // shl $0x8,%ecx
24869 .byte 68,9,209 // or %r10d,%ecx
24870 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
24871 .byte 65,15,182,28,25 // movzbl (%r9,%rbx,1),%ebx
24872 .byte 193,227,8 // shl $0x8,%ebx
24873 .byte 68,9,195 // or %r8d,%ebx
24874 .byte 102,15,196,211,0 // pinsrw $0x0,%ebx,%xmm2
24875 .byte 102,15,196,209,1 // pinsrw $0x1,%ecx,%xmm2
24876 .byte 102,65,15,96,209 // punpcklbw %xmm9,%xmm2
24877 .byte 102,65,15,97,209 // punpcklwd %xmm9,%xmm2
24878 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
24879 .byte 65,15,89,210 // mulps %xmm10,%xmm2
24880 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040024881 .byte 65,15,89,216 // mulps %xmm8,%xmm3
24882 .byte 102,15,91,219 // cvtps2dq %xmm3,%xmm3
Mike Klein40de6da2017-04-07 13:09:29 -040024883 .byte 102,72,15,126,217 // movq %xmm3,%rcx
24884 .byte 65,137,200 // mov %ecx,%r8d
24885 .byte 72,193,233,32 // shr $0x20,%rcx
24886 .byte 102,15,112,219,78 // pshufd $0x4e,%xmm3,%xmm3
24887 .byte 102,72,15,126,219 // movq %xmm3,%rbx
24888 .byte 65,137,217 // mov %ebx,%r9d
24889 .byte 72,193,235,32 // shr $0x20,%rbx
24890 .byte 70,15,182,12,8 // movzbl (%rax,%r9,1),%r9d
24891 .byte 15,182,28,24 // movzbl (%rax,%rbx,1),%ebx
24892 .byte 193,227,8 // shl $0x8,%ebx
24893 .byte 68,9,203 // or %r9d,%ebx
24894 .byte 70,15,182,4,0 // movzbl (%rax,%r8,1),%r8d
24895 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
24896 .byte 193,224,8 // shl $0x8,%eax
24897 .byte 68,9,192 // or %r8d,%eax
24898 .byte 102,15,196,216,0 // pinsrw $0x0,%eax,%xmm3
24899 .byte 102,15,196,219,1 // pinsrw $0x1,%ebx,%xmm3
24900 .byte 102,65,15,96,217 // punpcklbw %xmm9,%xmm3
24901 .byte 102,65,15,97,217 // punpcklwd %xmm9,%xmm3
24902 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
24903 .byte 65,15,89,218 // mulps %xmm10,%xmm3
24904 .byte 72,173 // lods %ds:(%rsi),%rax
24905 .byte 91 // pop %rbx
24906 .byte 65,94 // pop %r14
24907 .byte 255,224 // jmpq *%rax
24908
24909HIDDEN _sk_byte_tables_rgb_sse2
24910.globl _sk_byte_tables_rgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040024911FUNCTION(_sk_byte_tables_rgb_sse2)
Mike Klein40de6da2017-04-07 13:09:29 -040024912_sk_byte_tables_rgb_sse2:
24913 .byte 65,86 // push %r14
24914 .byte 83 // push %rbx
24915 .byte 72,173 // lods %ds:(%rsi),%rax
24916 .byte 139,72,24 // mov 0x18(%rax),%ecx
24917 .byte 255,201 // dec %ecx
24918 .byte 102,68,15,110,193 // movd %ecx,%xmm8
24919 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
24920 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
24921 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24922 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
24923 .byte 102,72,15,126,193 // movq %xmm0,%rcx
24924 .byte 65,137,200 // mov %ecx,%r8d
24925 .byte 72,193,233,32 // shr $0x20,%rcx
24926 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
24927 .byte 102,73,15,126,193 // movq %xmm0,%r9
24928 .byte 69,137,202 // mov %r9d,%r10d
24929 .byte 77,137,203 // mov %r9,%r11
24930 .byte 73,193,235,32 // shr $0x20,%r11
24931 .byte 76,139,48 // mov (%rax),%r14
24932 .byte 76,139,72,8 // mov 0x8(%rax),%r9
24933 .byte 71,15,182,20,22 // movzbl (%r14,%r10,1),%r10d
24934 .byte 67,15,182,28,30 // movzbl (%r14,%r11,1),%ebx
24935 .byte 193,227,8 // shl $0x8,%ebx
24936 .byte 68,9,211 // or %r10d,%ebx
24937 .byte 71,15,182,4,6 // movzbl (%r14,%r8,1),%r8d
24938 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
24939 .byte 193,225,8 // shl $0x8,%ecx
24940 .byte 68,9,193 // or %r8d,%ecx
24941 .byte 102,15,196,193,0 // pinsrw $0x0,%ecx,%xmm0
24942 .byte 102,15,196,195,1 // pinsrw $0x1,%ebx,%xmm0
24943 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
24944 .byte 102,65,15,96,193 // punpcklbw %xmm9,%xmm0
24945 .byte 102,65,15,97,193 // punpcklwd %xmm9,%xmm0
24946 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040024947 .byte 68,15,40,21,133,39,0,0 // movaps 0x2785(%rip),%xmm10 # 4200 <_sk_callback_sse2+0x4d9>
Mike Klein40de6da2017-04-07 13:09:29 -040024948 .byte 65,15,89,194 // mulps %xmm10,%xmm0
24949 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24950 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
24951 .byte 102,72,15,126,201 // movq %xmm1,%rcx
24952 .byte 65,137,200 // mov %ecx,%r8d
24953 .byte 72,193,233,32 // shr $0x20,%rcx
24954 .byte 102,15,112,201,78 // pshufd $0x4e,%xmm1,%xmm1
24955 .byte 102,72,15,126,203 // movq %xmm1,%rbx
24956 .byte 65,137,218 // mov %ebx,%r10d
24957 .byte 72,193,235,32 // shr $0x20,%rbx
24958 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
24959 .byte 65,15,182,28,25 // movzbl (%r9,%rbx,1),%ebx
24960 .byte 193,227,8 // shl $0x8,%ebx
24961 .byte 68,9,211 // or %r10d,%ebx
24962 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
24963 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
24964 .byte 193,225,8 // shl $0x8,%ecx
24965 .byte 68,9,193 // or %r8d,%ecx
24966 .byte 102,15,196,201,0 // pinsrw $0x0,%ecx,%xmm1
24967 .byte 102,15,196,203,1 // pinsrw $0x1,%ebx,%xmm1
24968 .byte 102,65,15,96,201 // punpcklbw %xmm9,%xmm1
24969 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
24970 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
24971 .byte 65,15,89,202 // mulps %xmm10,%xmm1
24972 .byte 72,139,64,16 // mov 0x10(%rax),%rax
24973 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24974 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
24975 .byte 102,72,15,126,209 // movq %xmm2,%rcx
24976 .byte 65,137,200 // mov %ecx,%r8d
24977 .byte 72,193,233,32 // shr $0x20,%rcx
24978 .byte 102,15,112,210,78 // pshufd $0x4e,%xmm2,%xmm2
24979 .byte 102,72,15,126,211 // movq %xmm2,%rbx
24980 .byte 65,137,217 // mov %ebx,%r9d
24981 .byte 72,193,235,32 // shr $0x20,%rbx
24982 .byte 70,15,182,12,8 // movzbl (%rax,%r9,1),%r9d
24983 .byte 15,182,28,24 // movzbl (%rax,%rbx,1),%ebx
24984 .byte 193,227,8 // shl $0x8,%ebx
24985 .byte 68,9,203 // or %r9d,%ebx
24986 .byte 70,15,182,4,0 // movzbl (%rax,%r8,1),%r8d
24987 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
24988 .byte 193,224,8 // shl $0x8,%eax
24989 .byte 68,9,192 // or %r8d,%eax
24990 .byte 102,15,196,208,0 // pinsrw $0x0,%eax,%xmm2
24991 .byte 102,15,196,211,1 // pinsrw $0x1,%ebx,%xmm2
24992 .byte 102,65,15,96,209 // punpcklbw %xmm9,%xmm2
24993 .byte 102,65,15,97,209 // punpcklwd %xmm9,%xmm2
24994 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
24995 .byte 65,15,89,210 // mulps %xmm10,%xmm2
24996 .byte 72,173 // lods %ds:(%rsi),%rax
24997 .byte 91 // pop %rbx
24998 .byte 65,94 // pop %r14
24999 .byte 255,224 // jmpq *%rax
25000
Mike Kleinc7d9c0b2017-04-17 14:43:59 -040025001HIDDEN _sk_table_r_sse2
25002.globl _sk_table_r_sse2
25003FUNCTION(_sk_table_r_sse2)
25004_sk_table_r_sse2:
25005 .byte 72,173 // lods %ds:(%rsi),%rax
25006 .byte 76,139,8 // mov (%rax),%r9
25007 .byte 139,64,8 // mov 0x8(%rax),%eax
25008 .byte 255,200 // dec %eax
25009 .byte 102,68,15,110,192 // movd %eax,%xmm8
25010 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
25011 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
25012 .byte 68,15,89,192 // mulps %xmm0,%xmm8
25013 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25014 .byte 102,65,15,112,192,78 // pshufd $0x4e,%xmm8,%xmm0
25015 .byte 102,72,15,126,192 // movq %xmm0,%rax
25016 .byte 65,137,192 // mov %eax,%r8d
25017 .byte 72,193,232,32 // shr $0x20,%rax
25018 .byte 102,76,15,126,193 // movq %xmm8,%rcx
25019 .byte 65,137,202 // mov %ecx,%r10d
25020 .byte 72,193,233,32 // shr $0x20,%rcx
25021 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
25022 .byte 243,65,15,16,4,129 // movss (%r9,%rax,4),%xmm0
25023 .byte 68,15,20,192 // unpcklps %xmm0,%xmm8
25024 .byte 243,67,15,16,4,145 // movss (%r9,%r10,4),%xmm0
25025 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
25026 .byte 65,15,20,193 // unpcklps %xmm9,%xmm0
25027 .byte 65,15,20,192 // unpcklps %xmm8,%xmm0
25028 .byte 72,173 // lods %ds:(%rsi),%rax
25029 .byte 255,224 // jmpq *%rax
25030
25031HIDDEN _sk_table_g_sse2
25032.globl _sk_table_g_sse2
25033FUNCTION(_sk_table_g_sse2)
25034_sk_table_g_sse2:
25035 .byte 72,173 // lods %ds:(%rsi),%rax
25036 .byte 76,139,8 // mov (%rax),%r9
25037 .byte 139,64,8 // mov 0x8(%rax),%eax
25038 .byte 255,200 // dec %eax
25039 .byte 102,68,15,110,192 // movd %eax,%xmm8
25040 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
25041 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
25042 .byte 68,15,89,193 // mulps %xmm1,%xmm8
25043 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25044 .byte 102,65,15,112,200,78 // pshufd $0x4e,%xmm8,%xmm1
25045 .byte 102,72,15,126,200 // movq %xmm1,%rax
25046 .byte 65,137,192 // mov %eax,%r8d
25047 .byte 72,193,232,32 // shr $0x20,%rax
25048 .byte 102,76,15,126,193 // movq %xmm8,%rcx
25049 .byte 65,137,202 // mov %ecx,%r10d
25050 .byte 72,193,233,32 // shr $0x20,%rcx
25051 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
25052 .byte 243,65,15,16,12,129 // movss (%r9,%rax,4),%xmm1
25053 .byte 68,15,20,193 // unpcklps %xmm1,%xmm8
25054 .byte 243,67,15,16,12,145 // movss (%r9,%r10,4),%xmm1
25055 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
25056 .byte 65,15,20,201 // unpcklps %xmm9,%xmm1
25057 .byte 65,15,20,200 // unpcklps %xmm8,%xmm1
25058 .byte 72,173 // lods %ds:(%rsi),%rax
25059 .byte 255,224 // jmpq *%rax
25060
25061HIDDEN _sk_table_b_sse2
25062.globl _sk_table_b_sse2
25063FUNCTION(_sk_table_b_sse2)
25064_sk_table_b_sse2:
25065 .byte 72,173 // lods %ds:(%rsi),%rax
25066 .byte 76,139,8 // mov (%rax),%r9
25067 .byte 139,64,8 // mov 0x8(%rax),%eax
25068 .byte 255,200 // dec %eax
25069 .byte 102,68,15,110,192 // movd %eax,%xmm8
25070 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
25071 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
25072 .byte 68,15,89,194 // mulps %xmm2,%xmm8
25073 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25074 .byte 102,65,15,112,208,78 // pshufd $0x4e,%xmm8,%xmm2
25075 .byte 102,72,15,126,208 // movq %xmm2,%rax
25076 .byte 65,137,192 // mov %eax,%r8d
25077 .byte 72,193,232,32 // shr $0x20,%rax
25078 .byte 102,76,15,126,193 // movq %xmm8,%rcx
25079 .byte 65,137,202 // mov %ecx,%r10d
25080 .byte 72,193,233,32 // shr $0x20,%rcx
25081 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
25082 .byte 243,65,15,16,20,129 // movss (%r9,%rax,4),%xmm2
25083 .byte 68,15,20,194 // unpcklps %xmm2,%xmm8
25084 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
25085 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
25086 .byte 65,15,20,209 // unpcklps %xmm9,%xmm2
25087 .byte 65,15,20,208 // unpcklps %xmm8,%xmm2
25088 .byte 72,173 // lods %ds:(%rsi),%rax
25089 .byte 255,224 // jmpq *%rax
25090
25091HIDDEN _sk_table_a_sse2
25092.globl _sk_table_a_sse2
25093FUNCTION(_sk_table_a_sse2)
25094_sk_table_a_sse2:
25095 .byte 72,173 // lods %ds:(%rsi),%rax
25096 .byte 76,139,8 // mov (%rax),%r9
25097 .byte 139,64,8 // mov 0x8(%rax),%eax
25098 .byte 255,200 // dec %eax
25099 .byte 102,68,15,110,192 // movd %eax,%xmm8
25100 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
25101 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
25102 .byte 68,15,89,195 // mulps %xmm3,%xmm8
25103 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25104 .byte 102,65,15,112,216,78 // pshufd $0x4e,%xmm8,%xmm3
25105 .byte 102,72,15,126,216 // movq %xmm3,%rax
25106 .byte 65,137,192 // mov %eax,%r8d
25107 .byte 72,193,232,32 // shr $0x20,%rax
25108 .byte 102,76,15,126,193 // movq %xmm8,%rcx
25109 .byte 65,137,202 // mov %ecx,%r10d
25110 .byte 72,193,233,32 // shr $0x20,%rcx
25111 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
25112 .byte 243,65,15,16,28,129 // movss (%r9,%rax,4),%xmm3
25113 .byte 68,15,20,195 // unpcklps %xmm3,%xmm8
25114 .byte 243,67,15,16,28,145 // movss (%r9,%r10,4),%xmm3
25115 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
25116 .byte 65,15,20,217 // unpcklps %xmm9,%xmm3
25117 .byte 65,15,20,216 // unpcklps %xmm8,%xmm3
25118 .byte 72,173 // lods %ds:(%rsi),%rax
25119 .byte 255,224 // jmpq *%rax
25120
Mike Klein44375172017-04-17 19:32:05 -040025121HIDDEN _sk_parametric_r_sse2
25122.globl _sk_parametric_r_sse2
25123FUNCTION(_sk_parametric_r_sse2)
25124_sk_parametric_r_sse2:
25125 .byte 72,173 // lods %ds:(%rsi),%rax
25126 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
25127 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
25128 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
25129 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25130 .byte 68,15,89,192 // mulps %xmm0,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040025131 .byte 243,68,15,16,80,4 // movss 0x4(%rax),%xmm10
25132 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
25133 .byte 68,15,89,208 // mulps %xmm0,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025134 .byte 65,15,194,193,2 // cmpleps %xmm9,%xmm0
25135 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
25136 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
25137 .byte 69,15,88,193 // addps %xmm9,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040025138 .byte 243,68,15,16,24 // movss (%rax),%xmm11
25139 .byte 243,68,15,16,72,8 // movss 0x8(%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040025140 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040025141 .byte 69,15,88,209 // addps %xmm9,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025142 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040025143 .byte 69,15,91,202 // cvtdq2ps %xmm10,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025144 .byte 68,15,89,13,196,36,0,0 // mulps 0x24c4(%rip),%xmm9 # 4210 <_sk_callback_sse2+0x4e9>
25145 .byte 68,15,84,21,204,36,0,0 // andps 0x24cc(%rip),%xmm10 # 4220 <_sk_callback_sse2+0x4f9>
25146 .byte 68,15,86,21,212,36,0,0 // orps 0x24d4(%rip),%xmm10 # 4230 <_sk_callback_sse2+0x509>
25147 .byte 68,15,88,13,220,36,0,0 // addps 0x24dc(%rip),%xmm9 # 4240 <_sk_callback_sse2+0x519>
25148 .byte 68,15,40,37,228,36,0,0 // movaps 0x24e4(%rip),%xmm12 # 4250 <_sk_callback_sse2+0x529>
Mike Kleinda164342017-04-19 14:33:58 -040025149 .byte 69,15,89,226 // mulps %xmm10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040025150 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025151 .byte 68,15,88,21,228,36,0,0 // addps 0x24e4(%rip),%xmm10 # 4260 <_sk_callback_sse2+0x539>
25152 .byte 68,15,40,37,236,36,0,0 // movaps 0x24ec(%rip),%xmm12 # 4270 <_sk_callback_sse2+0x549>
Mike Kleinb4bbc642017-04-27 08:59:55 -040025153 .byte 69,15,94,226 // divps %xmm10,%xmm12
25154 .byte 69,15,92,204 // subps %xmm12,%xmm9
25155 .byte 69,15,89,203 // mulps %xmm11,%xmm9
25156 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040025157 .byte 69,15,91,226 // cvtdq2ps %xmm10,%xmm12
25158 .byte 69,15,40,233 // movaps %xmm9,%xmm13
25159 .byte 69,15,194,236,1 // cmpltps %xmm12,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025160 .byte 68,15,40,21,214,36,0,0 // movaps 0x24d6(%rip),%xmm10 # 4280 <_sk_callback_sse2+0x559>
Mike Kleinfe560a82017-05-01 12:56:35 -040025161 .byte 69,15,84,234 // andps %xmm10,%xmm13
25162 .byte 69,15,87,219 // xorps %xmm11,%xmm11
25163 .byte 69,15,92,229 // subps %xmm13,%xmm12
25164 .byte 69,15,40,233 // movaps %xmm9,%xmm13
25165 .byte 69,15,92,236 // subps %xmm12,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025166 .byte 68,15,88,13,202,36,0,0 // addps 0x24ca(%rip),%xmm9 # 4290 <_sk_callback_sse2+0x569>
25167 .byte 68,15,40,37,210,36,0,0 // movaps 0x24d2(%rip),%xmm12 # 42a0 <_sk_callback_sse2+0x579>
Mike Kleinfe560a82017-05-01 12:56:35 -040025168 .byte 69,15,89,229 // mulps %xmm13,%xmm12
25169 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025170 .byte 68,15,40,37,210,36,0,0 // movaps 0x24d2(%rip),%xmm12 # 42b0 <_sk_callback_sse2+0x589>
Mike Kleinfe560a82017-05-01 12:56:35 -040025171 .byte 69,15,92,229 // subps %xmm13,%xmm12
Mike Kleinfb11acd2017-05-01 14:22:10 -040025172 .byte 68,15,40,45,214,36,0,0 // movaps 0x24d6(%rip),%xmm13 # 42c0 <_sk_callback_sse2+0x599>
Mike Kleinfe560a82017-05-01 12:56:35 -040025173 .byte 69,15,94,236 // divps %xmm12,%xmm13
25174 .byte 69,15,88,233 // addps %xmm9,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025175 .byte 68,15,89,45,214,36,0,0 // mulps 0x24d6(%rip),%xmm13 # 42d0 <_sk_callback_sse2+0x5a9>
Mike Kleinfe560a82017-05-01 12:56:35 -040025176 .byte 102,69,15,91,205 // cvtps2dq %xmm13,%xmm9
25177 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
25178 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040025179 .byte 69,15,88,225 // addps %xmm9,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040025180 .byte 68,15,84,192 // andps %xmm0,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040025181 .byte 65,15,85,196 // andnps %xmm12,%xmm0
Mike Klein44375172017-04-17 19:32:05 -040025182 .byte 65,15,86,192 // orps %xmm8,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025183 .byte 65,15,95,195 // maxps %xmm11,%xmm0
25184 .byte 65,15,93,194 // minps %xmm10,%xmm0
Mike Klein44375172017-04-17 19:32:05 -040025185 .byte 72,173 // lods %ds:(%rsi),%rax
25186 .byte 255,224 // jmpq *%rax
25187
25188HIDDEN _sk_parametric_g_sse2
25189.globl _sk_parametric_g_sse2
25190FUNCTION(_sk_parametric_g_sse2)
25191_sk_parametric_g_sse2:
25192 .byte 72,173 // lods %ds:(%rsi),%rax
25193 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
25194 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
25195 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
25196 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25197 .byte 68,15,89,193 // mulps %xmm1,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040025198 .byte 243,68,15,16,80,4 // movss 0x4(%rax),%xmm10
25199 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
25200 .byte 68,15,89,209 // mulps %xmm1,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025201 .byte 65,15,194,201,2 // cmpleps %xmm9,%xmm1
25202 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
25203 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
25204 .byte 69,15,88,193 // addps %xmm9,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040025205 .byte 243,68,15,16,24 // movss (%rax),%xmm11
25206 .byte 243,68,15,16,72,8 // movss 0x8(%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040025207 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040025208 .byte 69,15,88,209 // addps %xmm9,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025209 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040025210 .byte 69,15,91,202 // cvtdq2ps %xmm10,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025211 .byte 68,15,89,13,86,36,0,0 // mulps 0x2456(%rip),%xmm9 # 42e0 <_sk_callback_sse2+0x5b9>
25212 .byte 68,15,84,21,94,36,0,0 // andps 0x245e(%rip),%xmm10 # 42f0 <_sk_callback_sse2+0x5c9>
25213 .byte 68,15,86,21,102,36,0,0 // orps 0x2466(%rip),%xmm10 # 4300 <_sk_callback_sse2+0x5d9>
25214 .byte 68,15,88,13,110,36,0,0 // addps 0x246e(%rip),%xmm9 # 4310 <_sk_callback_sse2+0x5e9>
25215 .byte 68,15,40,37,118,36,0,0 // movaps 0x2476(%rip),%xmm12 # 4320 <_sk_callback_sse2+0x5f9>
Mike Kleinda164342017-04-19 14:33:58 -040025216 .byte 69,15,89,226 // mulps %xmm10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040025217 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025218 .byte 68,15,88,21,118,36,0,0 // addps 0x2476(%rip),%xmm10 # 4330 <_sk_callback_sse2+0x609>
25219 .byte 68,15,40,37,126,36,0,0 // movaps 0x247e(%rip),%xmm12 # 4340 <_sk_callback_sse2+0x619>
Mike Kleinb4bbc642017-04-27 08:59:55 -040025220 .byte 69,15,94,226 // divps %xmm10,%xmm12
25221 .byte 69,15,92,204 // subps %xmm12,%xmm9
25222 .byte 69,15,89,203 // mulps %xmm11,%xmm9
25223 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040025224 .byte 69,15,91,226 // cvtdq2ps %xmm10,%xmm12
25225 .byte 69,15,40,233 // movaps %xmm9,%xmm13
25226 .byte 69,15,194,236,1 // cmpltps %xmm12,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025227 .byte 68,15,40,21,104,36,0,0 // movaps 0x2468(%rip),%xmm10 # 4350 <_sk_callback_sse2+0x629>
Mike Kleinfe560a82017-05-01 12:56:35 -040025228 .byte 69,15,84,234 // andps %xmm10,%xmm13
25229 .byte 69,15,87,219 // xorps %xmm11,%xmm11
25230 .byte 69,15,92,229 // subps %xmm13,%xmm12
25231 .byte 69,15,40,233 // movaps %xmm9,%xmm13
25232 .byte 69,15,92,236 // subps %xmm12,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025233 .byte 68,15,88,13,92,36,0,0 // addps 0x245c(%rip),%xmm9 # 4360 <_sk_callback_sse2+0x639>
25234 .byte 68,15,40,37,100,36,0,0 // movaps 0x2464(%rip),%xmm12 # 4370 <_sk_callback_sse2+0x649>
Mike Kleinfe560a82017-05-01 12:56:35 -040025235 .byte 69,15,89,229 // mulps %xmm13,%xmm12
25236 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025237 .byte 68,15,40,37,100,36,0,0 // movaps 0x2464(%rip),%xmm12 # 4380 <_sk_callback_sse2+0x659>
Mike Kleinfe560a82017-05-01 12:56:35 -040025238 .byte 69,15,92,229 // subps %xmm13,%xmm12
Mike Kleinfb11acd2017-05-01 14:22:10 -040025239 .byte 68,15,40,45,104,36,0,0 // movaps 0x2468(%rip),%xmm13 # 4390 <_sk_callback_sse2+0x669>
Mike Kleinfe560a82017-05-01 12:56:35 -040025240 .byte 69,15,94,236 // divps %xmm12,%xmm13
25241 .byte 69,15,88,233 // addps %xmm9,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025242 .byte 68,15,89,45,104,36,0,0 // mulps 0x2468(%rip),%xmm13 # 43a0 <_sk_callback_sse2+0x679>
Mike Kleinfe560a82017-05-01 12:56:35 -040025243 .byte 102,69,15,91,205 // cvtps2dq %xmm13,%xmm9
25244 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
25245 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040025246 .byte 69,15,88,225 // addps %xmm9,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040025247 .byte 68,15,84,193 // andps %xmm1,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040025248 .byte 65,15,85,204 // andnps %xmm12,%xmm1
Mike Klein44375172017-04-17 19:32:05 -040025249 .byte 65,15,86,200 // orps %xmm8,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040025250 .byte 65,15,95,203 // maxps %xmm11,%xmm1
25251 .byte 65,15,93,202 // minps %xmm10,%xmm1
Mike Klein44375172017-04-17 19:32:05 -040025252 .byte 72,173 // lods %ds:(%rsi),%rax
25253 .byte 255,224 // jmpq *%rax
25254
25255HIDDEN _sk_parametric_b_sse2
25256.globl _sk_parametric_b_sse2
25257FUNCTION(_sk_parametric_b_sse2)
25258_sk_parametric_b_sse2:
25259 .byte 72,173 // lods %ds:(%rsi),%rax
25260 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
25261 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
25262 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
25263 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25264 .byte 68,15,89,194 // mulps %xmm2,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040025265 .byte 243,68,15,16,80,4 // movss 0x4(%rax),%xmm10
25266 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
25267 .byte 68,15,89,210 // mulps %xmm2,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025268 .byte 65,15,194,209,2 // cmpleps %xmm9,%xmm2
25269 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
25270 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
25271 .byte 69,15,88,193 // addps %xmm9,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040025272 .byte 243,68,15,16,24 // movss (%rax),%xmm11
25273 .byte 243,68,15,16,72,8 // movss 0x8(%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040025274 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040025275 .byte 69,15,88,209 // addps %xmm9,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025276 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040025277 .byte 69,15,91,202 // cvtdq2ps %xmm10,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025278 .byte 68,15,89,13,232,35,0,0 // mulps 0x23e8(%rip),%xmm9 # 43b0 <_sk_callback_sse2+0x689>
25279 .byte 68,15,84,21,240,35,0,0 // andps 0x23f0(%rip),%xmm10 # 43c0 <_sk_callback_sse2+0x699>
25280 .byte 68,15,86,21,248,35,0,0 // orps 0x23f8(%rip),%xmm10 # 43d0 <_sk_callback_sse2+0x6a9>
25281 .byte 68,15,88,13,0,36,0,0 // addps 0x2400(%rip),%xmm9 # 43e0 <_sk_callback_sse2+0x6b9>
25282 .byte 68,15,40,37,8,36,0,0 // movaps 0x2408(%rip),%xmm12 # 43f0 <_sk_callback_sse2+0x6c9>
Mike Kleinda164342017-04-19 14:33:58 -040025283 .byte 69,15,89,226 // mulps %xmm10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040025284 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025285 .byte 68,15,88,21,8,36,0,0 // addps 0x2408(%rip),%xmm10 # 4400 <_sk_callback_sse2+0x6d9>
25286 .byte 68,15,40,37,16,36,0,0 // movaps 0x2410(%rip),%xmm12 # 4410 <_sk_callback_sse2+0x6e9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040025287 .byte 69,15,94,226 // divps %xmm10,%xmm12
25288 .byte 69,15,92,204 // subps %xmm12,%xmm9
25289 .byte 69,15,89,203 // mulps %xmm11,%xmm9
25290 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040025291 .byte 69,15,91,226 // cvtdq2ps %xmm10,%xmm12
25292 .byte 69,15,40,233 // movaps %xmm9,%xmm13
25293 .byte 69,15,194,236,1 // cmpltps %xmm12,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025294 .byte 68,15,40,21,250,35,0,0 // movaps 0x23fa(%rip),%xmm10 # 4420 <_sk_callback_sse2+0x6f9>
Mike Kleinfe560a82017-05-01 12:56:35 -040025295 .byte 69,15,84,234 // andps %xmm10,%xmm13
25296 .byte 69,15,87,219 // xorps %xmm11,%xmm11
25297 .byte 69,15,92,229 // subps %xmm13,%xmm12
25298 .byte 69,15,40,233 // movaps %xmm9,%xmm13
25299 .byte 69,15,92,236 // subps %xmm12,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025300 .byte 68,15,88,13,238,35,0,0 // addps 0x23ee(%rip),%xmm9 # 4430 <_sk_callback_sse2+0x709>
25301 .byte 68,15,40,37,246,35,0,0 // movaps 0x23f6(%rip),%xmm12 # 4440 <_sk_callback_sse2+0x719>
Mike Kleinfe560a82017-05-01 12:56:35 -040025302 .byte 69,15,89,229 // mulps %xmm13,%xmm12
25303 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025304 .byte 68,15,40,37,246,35,0,0 // movaps 0x23f6(%rip),%xmm12 # 4450 <_sk_callback_sse2+0x729>
Mike Kleinfe560a82017-05-01 12:56:35 -040025305 .byte 69,15,92,229 // subps %xmm13,%xmm12
Mike Kleinfb11acd2017-05-01 14:22:10 -040025306 .byte 68,15,40,45,250,35,0,0 // movaps 0x23fa(%rip),%xmm13 # 4460 <_sk_callback_sse2+0x739>
Mike Kleinfe560a82017-05-01 12:56:35 -040025307 .byte 69,15,94,236 // divps %xmm12,%xmm13
25308 .byte 69,15,88,233 // addps %xmm9,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025309 .byte 68,15,89,45,250,35,0,0 // mulps 0x23fa(%rip),%xmm13 # 4470 <_sk_callback_sse2+0x749>
Mike Kleinfe560a82017-05-01 12:56:35 -040025310 .byte 102,69,15,91,205 // cvtps2dq %xmm13,%xmm9
25311 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
25312 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040025313 .byte 69,15,88,225 // addps %xmm9,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040025314 .byte 68,15,84,194 // andps %xmm2,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040025315 .byte 65,15,85,212 // andnps %xmm12,%xmm2
Mike Klein44375172017-04-17 19:32:05 -040025316 .byte 65,15,86,208 // orps %xmm8,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040025317 .byte 65,15,95,211 // maxps %xmm11,%xmm2
25318 .byte 65,15,93,210 // minps %xmm10,%xmm2
Mike Klein44375172017-04-17 19:32:05 -040025319 .byte 72,173 // lods %ds:(%rsi),%rax
25320 .byte 255,224 // jmpq *%rax
25321
25322HIDDEN _sk_parametric_a_sse2
25323.globl _sk_parametric_a_sse2
25324FUNCTION(_sk_parametric_a_sse2)
25325_sk_parametric_a_sse2:
25326 .byte 72,173 // lods %ds:(%rsi),%rax
25327 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
25328 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
25329 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
25330 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25331 .byte 68,15,89,195 // mulps %xmm3,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040025332 .byte 243,68,15,16,80,4 // movss 0x4(%rax),%xmm10
25333 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
25334 .byte 68,15,89,211 // mulps %xmm3,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025335 .byte 65,15,194,217,2 // cmpleps %xmm9,%xmm3
25336 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
25337 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
25338 .byte 69,15,88,193 // addps %xmm9,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040025339 .byte 243,68,15,16,24 // movss (%rax),%xmm11
25340 .byte 243,68,15,16,72,8 // movss 0x8(%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040025341 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040025342 .byte 69,15,88,209 // addps %xmm9,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025343 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040025344 .byte 69,15,91,202 // cvtdq2ps %xmm10,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025345 .byte 68,15,89,13,122,35,0,0 // mulps 0x237a(%rip),%xmm9 # 4480 <_sk_callback_sse2+0x759>
25346 .byte 68,15,84,21,130,35,0,0 // andps 0x2382(%rip),%xmm10 # 4490 <_sk_callback_sse2+0x769>
25347 .byte 68,15,86,21,138,35,0,0 // orps 0x238a(%rip),%xmm10 # 44a0 <_sk_callback_sse2+0x779>
25348 .byte 68,15,88,13,146,35,0,0 // addps 0x2392(%rip),%xmm9 # 44b0 <_sk_callback_sse2+0x789>
25349 .byte 68,15,40,37,154,35,0,0 // movaps 0x239a(%rip),%xmm12 # 44c0 <_sk_callback_sse2+0x799>
Mike Kleinda164342017-04-19 14:33:58 -040025350 .byte 69,15,89,226 // mulps %xmm10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040025351 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025352 .byte 68,15,88,21,154,35,0,0 // addps 0x239a(%rip),%xmm10 # 44d0 <_sk_callback_sse2+0x7a9>
25353 .byte 68,15,40,37,162,35,0,0 // movaps 0x23a2(%rip),%xmm12 # 44e0 <_sk_callback_sse2+0x7b9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040025354 .byte 69,15,94,226 // divps %xmm10,%xmm12
25355 .byte 69,15,92,204 // subps %xmm12,%xmm9
25356 .byte 69,15,89,203 // mulps %xmm11,%xmm9
25357 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040025358 .byte 69,15,91,226 // cvtdq2ps %xmm10,%xmm12
25359 .byte 69,15,40,233 // movaps %xmm9,%xmm13
25360 .byte 69,15,194,236,1 // cmpltps %xmm12,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025361 .byte 68,15,40,21,140,35,0,0 // movaps 0x238c(%rip),%xmm10 # 44f0 <_sk_callback_sse2+0x7c9>
Mike Kleinfe560a82017-05-01 12:56:35 -040025362 .byte 69,15,84,234 // andps %xmm10,%xmm13
25363 .byte 69,15,87,219 // xorps %xmm11,%xmm11
25364 .byte 69,15,92,229 // subps %xmm13,%xmm12
25365 .byte 69,15,40,233 // movaps %xmm9,%xmm13
25366 .byte 69,15,92,236 // subps %xmm12,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025367 .byte 68,15,88,13,128,35,0,0 // addps 0x2380(%rip),%xmm9 # 4500 <_sk_callback_sse2+0x7d9>
25368 .byte 68,15,40,37,136,35,0,0 // movaps 0x2388(%rip),%xmm12 # 4510 <_sk_callback_sse2+0x7e9>
Mike Kleinfe560a82017-05-01 12:56:35 -040025369 .byte 69,15,89,229 // mulps %xmm13,%xmm12
25370 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025371 .byte 68,15,40,37,136,35,0,0 // movaps 0x2388(%rip),%xmm12 # 4520 <_sk_callback_sse2+0x7f9>
Mike Kleinfe560a82017-05-01 12:56:35 -040025372 .byte 69,15,92,229 // subps %xmm13,%xmm12
Mike Kleinfb11acd2017-05-01 14:22:10 -040025373 .byte 68,15,40,45,140,35,0,0 // movaps 0x238c(%rip),%xmm13 # 4530 <_sk_callback_sse2+0x809>
Mike Kleinfe560a82017-05-01 12:56:35 -040025374 .byte 69,15,94,236 // divps %xmm12,%xmm13
25375 .byte 69,15,88,233 // addps %xmm9,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040025376 .byte 68,15,89,45,140,35,0,0 // mulps 0x238c(%rip),%xmm13 # 4540 <_sk_callback_sse2+0x819>
Mike Kleinfe560a82017-05-01 12:56:35 -040025377 .byte 102,69,15,91,205 // cvtps2dq %xmm13,%xmm9
25378 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
25379 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040025380 .byte 69,15,88,225 // addps %xmm9,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040025381 .byte 68,15,84,195 // andps %xmm3,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040025382 .byte 65,15,85,220 // andnps %xmm12,%xmm3
Mike Klein44375172017-04-17 19:32:05 -040025383 .byte 65,15,86,216 // orps %xmm8,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040025384 .byte 65,15,95,219 // maxps %xmm11,%xmm3
25385 .byte 65,15,93,218 // minps %xmm10,%xmm3
Mike Klein44375172017-04-17 19:32:05 -040025386 .byte 72,173 // lods %ds:(%rsi),%rax
25387 .byte 255,224 // jmpq *%rax
25388
Mike Klein4e3e9f82017-04-20 11:04:29 -040025389HIDDEN _sk_lab_to_xyz_sse2
25390.globl _sk_lab_to_xyz_sse2
25391FUNCTION(_sk_lab_to_xyz_sse2)
25392_sk_lab_to_xyz_sse2:
Mike Kleinfb11acd2017-05-01 14:22:10 -040025393 .byte 15,89,5,105,35,0,0 // mulps 0x2369(%rip),%xmm0 # 4550 <_sk_callback_sse2+0x829>
25394 .byte 68,15,40,5,113,35,0,0 // movaps 0x2371(%rip),%xmm8 # 4560 <_sk_callback_sse2+0x839>
Mike Klein4e3e9f82017-04-20 11:04:29 -040025395 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040025396 .byte 68,15,40,13,117,35,0,0 // movaps 0x2375(%rip),%xmm9 # 4570 <_sk_callback_sse2+0x849>
Mike Kleinfe560a82017-05-01 12:56:35 -040025397 .byte 65,15,88,201 // addps %xmm9,%xmm1
Mike Klein4e3e9f82017-04-20 11:04:29 -040025398 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040025399 .byte 65,15,88,209 // addps %xmm9,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040025400 .byte 15,88,5,114,35,0,0 // addps 0x2372(%rip),%xmm0 # 4580 <_sk_callback_sse2+0x859>
25401 .byte 15,89,5,123,35,0,0 // mulps 0x237b(%rip),%xmm0 # 4590 <_sk_callback_sse2+0x869>
25402 .byte 15,89,13,132,35,0,0 // mulps 0x2384(%rip),%xmm1 # 45a0 <_sk_callback_sse2+0x879>
Mike Kleinfe560a82017-05-01 12:56:35 -040025403 .byte 15,88,200 // addps %xmm0,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040025404 .byte 15,89,21,138,35,0,0 // mulps 0x238a(%rip),%xmm2 # 45b0 <_sk_callback_sse2+0x889>
Mike Kleinfe560a82017-05-01 12:56:35 -040025405 .byte 68,15,40,200 // movaps %xmm0,%xmm9
25406 .byte 68,15,92,202 // subps %xmm2,%xmm9
25407 .byte 68,15,40,225 // movaps %xmm1,%xmm12
25408 .byte 69,15,89,228 // mulps %xmm12,%xmm12
25409 .byte 68,15,89,225 // mulps %xmm1,%xmm12
Mike Kleinfb11acd2017-05-01 14:22:10 -040025410 .byte 15,40,21,127,35,0,0 // movaps 0x237f(%rip),%xmm2 # 45c0 <_sk_callback_sse2+0x899>
Mike Kleinfe560a82017-05-01 12:56:35 -040025411 .byte 68,15,40,194 // movaps %xmm2,%xmm8
25412 .byte 69,15,194,196,1 // cmpltps %xmm12,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040025413 .byte 68,15,40,21,126,35,0,0 // movaps 0x237e(%rip),%xmm10 # 45d0 <_sk_callback_sse2+0x8a9>
Mike Kleinfe560a82017-05-01 12:56:35 -040025414 .byte 65,15,88,202 // addps %xmm10,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040025415 .byte 68,15,40,29,130,35,0,0 // movaps 0x2382(%rip),%xmm11 # 45e0 <_sk_callback_sse2+0x8b9>
Mike Kleinfe560a82017-05-01 12:56:35 -040025416 .byte 65,15,89,203 // mulps %xmm11,%xmm1
25417 .byte 69,15,84,224 // andps %xmm8,%xmm12
25418 .byte 68,15,85,193 // andnps %xmm1,%xmm8
25419 .byte 69,15,86,196 // orps %xmm12,%xmm8
25420 .byte 68,15,40,224 // movaps %xmm0,%xmm12
25421 .byte 69,15,89,228 // mulps %xmm12,%xmm12
25422 .byte 68,15,89,224 // mulps %xmm0,%xmm12
25423 .byte 15,40,202 // movaps %xmm2,%xmm1
25424 .byte 65,15,194,204,1 // cmpltps %xmm12,%xmm1
25425 .byte 65,15,88,194 // addps %xmm10,%xmm0
25426 .byte 65,15,89,195 // mulps %xmm11,%xmm0
25427 .byte 68,15,84,225 // andps %xmm1,%xmm12
25428 .byte 15,85,200 // andnps %xmm0,%xmm1
25429 .byte 65,15,86,204 // orps %xmm12,%xmm1
25430 .byte 65,15,40,193 // movaps %xmm9,%xmm0
25431 .byte 15,89,192 // mulps %xmm0,%xmm0
25432 .byte 65,15,89,193 // mulps %xmm9,%xmm0
25433 .byte 15,194,208,1 // cmpltps %xmm0,%xmm2
25434 .byte 69,15,88,202 // addps %xmm10,%xmm9
25435 .byte 69,15,89,203 // mulps %xmm11,%xmm9
25436 .byte 15,84,194 // andps %xmm2,%xmm0
25437 .byte 65,15,85,209 // andnps %xmm9,%xmm2
25438 .byte 15,86,208 // orps %xmm0,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040025439 .byte 68,15,89,5,50,35,0,0 // mulps 0x2332(%rip),%xmm8 # 45f0 <_sk_callback_sse2+0x8c9>
25440 .byte 15,89,21,59,35,0,0 // mulps 0x233b(%rip),%xmm2 # 4600 <_sk_callback_sse2+0x8d9>
Mike Klein4e3e9f82017-04-20 11:04:29 -040025441 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040025442 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Klein4e3e9f82017-04-20 11:04:29 -040025443 .byte 255,224 // jmpq *%rax
25444
Mike Klein7c4af542017-03-29 18:21:14 -040025445HIDDEN _sk_load_a8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025446.globl _sk_load_a8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025447FUNCTION(_sk_load_a8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025448_sk_load_a8_sse2:
25449 .byte 72,173 // lods %ds:(%rsi),%rax
25450 .byte 72,139,0 // mov (%rax),%rax
25451 .byte 102,15,110,4,56 // movd (%rax,%rdi,1),%xmm0
25452 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25453 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
25454 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025455 .byte 15,91,216 // cvtdq2ps %xmm0,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040025456 .byte 15,89,29,35,35,0,0 // mulps 0x2323(%rip),%xmm3 # 4610 <_sk_callback_sse2+0x8e9>
Mike Kleind7e06ae2017-03-29 16:33:06 -040025457 .byte 72,173 // lods %ds:(%rsi),%rax
25458 .byte 15,87,192 // xorps %xmm0,%xmm0
25459 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25460 .byte 15,87,210 // xorps %xmm2,%xmm2
25461 .byte 255,224 // jmpq *%rax
25462
Mike Klein21bd3e42017-04-06 16:32:29 -040025463HIDDEN _sk_gather_a8_sse2
25464.globl _sk_gather_a8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025465FUNCTION(_sk_gather_a8_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040025466_sk_gather_a8_sse2:
25467 .byte 72,173 // lods %ds:(%rsi),%rax
25468 .byte 76,139,8 // mov (%rax),%r9
25469 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25470 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25471 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25472 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25473 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25474 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25475 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25476 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25477 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25478 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25479 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25480 .byte 102,72,15,126,192 // movq %xmm0,%rax
25481 .byte 65,137,192 // mov %eax,%r8d
25482 .byte 72,193,232,32 // shr $0x20,%rax
25483 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
25484 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25485 .byte 65,137,202 // mov %ecx,%r10d
25486 .byte 72,193,233,32 // shr $0x20,%rcx
25487 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
25488 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
25489 .byte 193,225,8 // shl $0x8,%ecx
25490 .byte 68,9,209 // or %r10d,%ecx
25491 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
25492 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
25493 .byte 193,224,8 // shl $0x8,%eax
25494 .byte 68,9,192 // or %r8d,%eax
25495 .byte 102,15,196,192,0 // pinsrw $0x0,%eax,%xmm0
25496 .byte 102,15,196,193,1 // pinsrw $0x1,%ecx,%xmm0
25497 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25498 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
25499 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025500 .byte 15,91,216 // cvtdq2ps %xmm0,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040025501 .byte 15,89,29,146,34,0,0 // mulps 0x2292(%rip),%xmm3 # 4620 <_sk_callback_sse2+0x8f9>
Mike Klein21bd3e42017-04-06 16:32:29 -040025502 .byte 72,173 // lods %ds:(%rsi),%rax
25503 .byte 15,87,192 // xorps %xmm0,%xmm0
25504 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25505 .byte 102,15,239,210 // pxor %xmm2,%xmm2
25506 .byte 255,224 // jmpq *%rax
25507
Mike Klein7c4af542017-03-29 18:21:14 -040025508HIDDEN _sk_store_a8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025509.globl _sk_store_a8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025510FUNCTION(_sk_store_a8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025511_sk_store_a8_sse2:
25512 .byte 72,173 // lods %ds:(%rsi),%rax
25513 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040025514 .byte 68,15,40,5,134,34,0,0 // movaps 0x2286(%rip),%xmm8 # 4630 <_sk_callback_sse2+0x909>
Mike Kleind7e06ae2017-03-29 16:33:06 -040025515 .byte 68,15,89,195 // mulps %xmm3,%xmm8
25516 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25517 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
25518 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
25519 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
25520 .byte 102,69,15,103,192 // packuswb %xmm8,%xmm8
25521 .byte 102,68,15,126,4,56 // movd %xmm8,(%rax,%rdi,1)
25522 .byte 72,173 // lods %ds:(%rsi),%rax
25523 .byte 255,224 // jmpq *%rax
25524
Mike Kleinf809fef2017-03-31 13:52:45 -040025525HIDDEN _sk_load_g8_sse2
25526.globl _sk_load_g8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025527FUNCTION(_sk_load_g8_sse2)
Mike Kleinf809fef2017-03-31 13:52:45 -040025528_sk_load_g8_sse2:
25529 .byte 72,173 // lods %ds:(%rsi),%rax
25530 .byte 72,139,0 // mov (%rax),%rax
25531 .byte 102,15,110,4,56 // movd (%rax,%rdi,1),%xmm0
25532 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25533 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
25534 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025535 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040025536 .byte 15,89,5,77,34,0,0 // mulps 0x224d(%rip),%xmm0 # 4640 <_sk_callback_sse2+0x919>
Mike Kleinf809fef2017-03-31 13:52:45 -040025537 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040025538 .byte 15,40,29,84,34,0,0 // movaps 0x2254(%rip),%xmm3 # 4650 <_sk_callback_sse2+0x929>
Mike Kleinf809fef2017-03-31 13:52:45 -040025539 .byte 15,40,200 // movaps %xmm0,%xmm1
25540 .byte 15,40,208 // movaps %xmm0,%xmm2
25541 .byte 255,224 // jmpq *%rax
25542
Mike Klein21bd3e42017-04-06 16:32:29 -040025543HIDDEN _sk_gather_g8_sse2
25544.globl _sk_gather_g8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025545FUNCTION(_sk_gather_g8_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040025546_sk_gather_g8_sse2:
25547 .byte 72,173 // lods %ds:(%rsi),%rax
25548 .byte 76,139,8 // mov (%rax),%r9
25549 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25550 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25551 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25552 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25553 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25554 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25555 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25556 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25557 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25558 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25559 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25560 .byte 102,72,15,126,192 // movq %xmm0,%rax
25561 .byte 65,137,192 // mov %eax,%r8d
25562 .byte 72,193,232,32 // shr $0x20,%rax
25563 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
25564 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25565 .byte 65,137,202 // mov %ecx,%r10d
25566 .byte 72,193,233,32 // shr $0x20,%rcx
25567 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
25568 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
25569 .byte 193,225,8 // shl $0x8,%ecx
25570 .byte 68,9,209 // or %r10d,%ecx
25571 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
25572 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
25573 .byte 193,224,8 // shl $0x8,%eax
25574 .byte 68,9,192 // or %r8d,%eax
25575 .byte 102,15,196,192,0 // pinsrw $0x0,%eax,%xmm0
25576 .byte 102,15,196,193,1 // pinsrw $0x1,%ecx,%xmm0
25577 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25578 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
25579 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025580 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040025581 .byte 15,89,5,201,33,0,0 // mulps 0x21c9(%rip),%xmm0 # 4660 <_sk_callback_sse2+0x939>
Mike Klein21bd3e42017-04-06 16:32:29 -040025582 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040025583 .byte 15,40,29,208,33,0,0 // movaps 0x21d0(%rip),%xmm3 # 4670 <_sk_callback_sse2+0x949>
Mike Klein21bd3e42017-04-06 16:32:29 -040025584 .byte 15,40,200 // movaps %xmm0,%xmm1
25585 .byte 15,40,208 // movaps %xmm0,%xmm2
25586 .byte 255,224 // jmpq *%rax
25587
Mike Klein7d3d8722017-04-06 17:53:18 -040025588HIDDEN _sk_gather_i8_sse2
25589.globl _sk_gather_i8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025590FUNCTION(_sk_gather_i8_sse2)
Mike Klein7d3d8722017-04-06 17:53:18 -040025591_sk_gather_i8_sse2:
25592 .byte 72,173 // lods %ds:(%rsi),%rax
25593 .byte 73,137,192 // mov %rax,%r8
25594 .byte 77,133,192 // test %r8,%r8
Mike Kleinfb11acd2017-05-01 14:22:10 -040025595 .byte 116,5 // je 24b7 <_sk_gather_i8_sse2+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -040025596 .byte 76,137,192 // mov %r8,%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040025597 .byte 235,2 // jmp 24b9 <_sk_gather_i8_sse2+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -040025598 .byte 72,173 // lods %ds:(%rsi),%rax
25599 .byte 76,139,16 // mov (%rax),%r10
25600 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25601 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25602 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25603 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25604 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25605 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25606 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25607 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25608 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25609 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25610 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25611 .byte 102,72,15,126,192 // movq %xmm0,%rax
25612 .byte 65,137,193 // mov %eax,%r9d
25613 .byte 72,193,232,32 // shr $0x20,%rax
25614 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
25615 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25616 .byte 65,137,203 // mov %ecx,%r11d
25617 .byte 72,193,233,32 // shr $0x20,%rcx
25618 .byte 71,15,182,28,26 // movzbl (%r10,%r11,1),%r11d
25619 .byte 65,15,182,12,10 // movzbl (%r10,%rcx,1),%ecx
25620 .byte 193,225,8 // shl $0x8,%ecx
25621 .byte 68,9,217 // or %r11d,%ecx
25622 .byte 71,15,182,12,10 // movzbl (%r10,%r9,1),%r9d
25623 .byte 65,15,182,4,2 // movzbl (%r10,%rax,1),%eax
25624 .byte 193,224,8 // shl $0x8,%eax
25625 .byte 68,9,200 // or %r9d,%eax
25626 .byte 102,15,196,192,0 // pinsrw $0x0,%eax,%xmm0
25627 .byte 102,15,196,193,1 // pinsrw $0x1,%ecx,%xmm0
25628 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25629 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
25630 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
25631 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
25632 .byte 102,72,15,126,200 // movq %xmm1,%rax
25633 .byte 68,15,182,200 // movzbl %al,%r9d
25634 .byte 72,193,232,32 // shr $0x20,%rax
25635 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25636 .byte 77,139,64,8 // mov 0x8(%r8),%r8
25637 .byte 68,15,182,209 // movzbl %cl,%r10d
25638 .byte 72,193,233,30 // shr $0x1e,%rcx
25639 .byte 102,65,15,110,4,8 // movd (%r8,%rcx,1),%xmm0
25640 .byte 102,65,15,110,12,128 // movd (%r8,%rax,4),%xmm1
25641 .byte 102,15,98,193 // punpckldq %xmm1,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040025642 .byte 102,71,15,110,12,144 // movd (%r8,%r10,4),%xmm9
Mike Klein7d3d8722017-04-06 17:53:18 -040025643 .byte 102,67,15,110,12,136 // movd (%r8,%r9,4),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040025644 .byte 102,68,15,98,201 // punpckldq %xmm1,%xmm9
25645 .byte 102,68,15,98,200 // punpckldq %xmm0,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025646 .byte 102,15,111,21,239,32,0,0 // movdqa 0x20ef(%rip),%xmm2 # 4680 <_sk_callback_sse2+0x959>
Mike Klein0aa742f2017-04-27 13:36:57 -040025647 .byte 102,65,15,111,193 // movdqa %xmm9,%xmm0
25648 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Klein7d3d8722017-04-06 17:53:18 -040025649 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040025650 .byte 68,15,40,5,235,32,0,0 // movaps 0x20eb(%rip),%xmm8 # 4690 <_sk_callback_sse2+0x969>
Mike Klein7d3d8722017-04-06 17:53:18 -040025651 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040025652 .byte 102,65,15,111,201 // movdqa %xmm9,%xmm1
25653 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
25654 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Klein7d3d8722017-04-06 17:53:18 -040025655 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
25656 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040025657 .byte 102,65,15,111,217 // movdqa %xmm9,%xmm3
25658 .byte 102,15,114,211,16 // psrld $0x10,%xmm3
25659 .byte 102,15,219,218 // pand %xmm2,%xmm3
25660 .byte 15,91,211 // cvtdq2ps %xmm3,%xmm2
Mike Klein7d3d8722017-04-06 17:53:18 -040025661 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040025662 .byte 102,65,15,114,209,24 // psrld $0x18,%xmm9
25663 .byte 65,15,91,217 // cvtdq2ps %xmm9,%xmm3
Mike Klein7d3d8722017-04-06 17:53:18 -040025664 .byte 65,15,89,216 // mulps %xmm8,%xmm3
25665 .byte 72,173 // lods %ds:(%rsi),%rax
25666 .byte 255,224 // jmpq *%rax
25667
Mike Klein7c4af542017-03-29 18:21:14 -040025668HIDDEN _sk_load_565_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025669.globl _sk_load_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040025670FUNCTION(_sk_load_565_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025671_sk_load_565_sse2:
25672 .byte 72,173 // lods %ds:(%rsi),%rax
25673 .byte 72,139,0 // mov (%rax),%rax
25674 .byte 243,15,126,20,120 // movq (%rax,%rdi,2),%xmm2
25675 .byte 102,15,239,192 // pxor %xmm0,%xmm0
25676 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040025677 .byte 102,15,111,5,161,32,0,0 // movdqa 0x20a1(%rip),%xmm0 # 46a0 <_sk_callback_sse2+0x979>
Mike Kleind7e06ae2017-03-29 16:33:06 -040025678 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025679 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040025680 .byte 15,89,5,163,32,0,0 // mulps 0x20a3(%rip),%xmm0 # 46b0 <_sk_callback_sse2+0x989>
25681 .byte 102,15,111,13,171,32,0,0 // movdqa 0x20ab(%rip),%xmm1 # 46c0 <_sk_callback_sse2+0x999>
Mike Kleind7e06ae2017-03-29 16:33:06 -040025682 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040025683 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040025684 .byte 15,89,13,173,32,0,0 // mulps 0x20ad(%rip),%xmm1 # 46d0 <_sk_callback_sse2+0x9a9>
25685 .byte 102,15,219,21,181,32,0,0 // pand 0x20b5(%rip),%xmm2 # 46e0 <_sk_callback_sse2+0x9b9>
Mike Kleinfe560a82017-05-01 12:56:35 -040025686 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040025687 .byte 15,89,21,187,32,0,0 // mulps 0x20bb(%rip),%xmm2 # 46f0 <_sk_callback_sse2+0x9c9>
Mike Kleind7e06ae2017-03-29 16:33:06 -040025688 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040025689 .byte 15,40,29,194,32,0,0 // movaps 0x20c2(%rip),%xmm3 # 4700 <_sk_callback_sse2+0x9d9>
Mike Kleind7e06ae2017-03-29 16:33:06 -040025690 .byte 255,224 // jmpq *%rax
25691
Mike Klein21bd3e42017-04-06 16:32:29 -040025692HIDDEN _sk_gather_565_sse2
25693.globl _sk_gather_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040025694FUNCTION(_sk_gather_565_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040025695_sk_gather_565_sse2:
25696 .byte 72,173 // lods %ds:(%rsi),%rax
25697 .byte 76,139,8 // mov (%rax),%r9
25698 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25699 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25700 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25701 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25702 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25703 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25704 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25705 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25706 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25707 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25708 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25709 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
25710 .byte 102,72,15,126,200 // movq %xmm1,%rax
25711 .byte 65,137,192 // mov %eax,%r8d
25712 .byte 72,193,232,32 // shr $0x20,%rax
25713 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25714 .byte 65,137,202 // mov %ecx,%r10d
25715 .byte 72,193,233,32 // shr $0x20,%rcx
25716 .byte 102,67,15,196,20,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm2
25717 .byte 102,65,15,196,20,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm2
25718 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
25719 .byte 102,15,196,209,2 // pinsrw $0x2,%ecx,%xmm2
25720 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
25721 .byte 102,15,196,208,3 // pinsrw $0x3,%eax,%xmm2
25722 .byte 102,15,239,192 // pxor %xmm0,%xmm0
25723 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040025724 .byte 102,15,111,5,75,32,0,0 // movdqa 0x204b(%rip),%xmm0 # 4710 <_sk_callback_sse2+0x9e9>
Mike Klein21bd3e42017-04-06 16:32:29 -040025725 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025726 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040025727 .byte 15,89,5,77,32,0,0 // mulps 0x204d(%rip),%xmm0 # 4720 <_sk_callback_sse2+0x9f9>
25728 .byte 102,15,111,13,85,32,0,0 // movdqa 0x2055(%rip),%xmm1 # 4730 <_sk_callback_sse2+0xa09>
Mike Klein21bd3e42017-04-06 16:32:29 -040025729 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040025730 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040025731 .byte 15,89,13,87,32,0,0 // mulps 0x2057(%rip),%xmm1 # 4740 <_sk_callback_sse2+0xa19>
25732 .byte 102,15,219,21,95,32,0,0 // pand 0x205f(%rip),%xmm2 # 4750 <_sk_callback_sse2+0xa29>
Mike Kleinfe560a82017-05-01 12:56:35 -040025733 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040025734 .byte 15,89,21,101,32,0,0 // mulps 0x2065(%rip),%xmm2 # 4760 <_sk_callback_sse2+0xa39>
Mike Klein21bd3e42017-04-06 16:32:29 -040025735 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040025736 .byte 15,40,29,108,32,0,0 // movaps 0x206c(%rip),%xmm3 # 4770 <_sk_callback_sse2+0xa49>
Mike Klein21bd3e42017-04-06 16:32:29 -040025737 .byte 255,224 // jmpq *%rax
25738
Mike Klein7c4af542017-03-29 18:21:14 -040025739HIDDEN _sk_store_565_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025740.globl _sk_store_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040025741FUNCTION(_sk_store_565_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025742_sk_store_565_sse2:
25743 .byte 72,173 // lods %ds:(%rsi),%rax
25744 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040025745 .byte 68,15,40,5,109,32,0,0 // movaps 0x206d(%rip),%xmm8 # 4780 <_sk_callback_sse2+0xa59>
Mike Kleinfe560a82017-05-01 12:56:35 -040025746 .byte 68,15,40,200 // movaps %xmm0,%xmm9
25747 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040025748 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
25749 .byte 102,65,15,114,241,11 // pslld $0xb,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025750 .byte 68,15,40,21,98,32,0,0 // movaps 0x2062(%rip),%xmm10 # 4790 <_sk_callback_sse2+0xa69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040025751 .byte 68,15,89,209 // mulps %xmm1,%xmm10
25752 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
25753 .byte 102,65,15,114,242,5 // pslld $0x5,%xmm10
25754 .byte 102,69,15,235,209 // por %xmm9,%xmm10
25755 .byte 68,15,89,194 // mulps %xmm2,%xmm8
25756 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25757 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
25758 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
25759 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
25760 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
25761 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
25762 .byte 72,173 // lods %ds:(%rsi),%rax
25763 .byte 255,224 // jmpq *%rax
25764
Mike Kleinf809fef2017-03-31 13:52:45 -040025765HIDDEN _sk_load_4444_sse2
25766.globl _sk_load_4444_sse2
Mike Klein86714282017-04-13 17:37:38 -040025767FUNCTION(_sk_load_4444_sse2)
Mike Kleinf809fef2017-03-31 13:52:45 -040025768_sk_load_4444_sse2:
25769 .byte 72,173 // lods %ds:(%rsi),%rax
25770 .byte 72,139,0 // mov (%rax),%rax
Mike Klein308e6242017-04-27 13:56:33 -040025771 .byte 243,15,126,28,120 // movq (%rax,%rdi,2),%xmm3
Mike Kleinf809fef2017-03-31 13:52:45 -040025772 .byte 102,15,239,192 // pxor %xmm0,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -040025773 .byte 102,15,97,216 // punpcklwd %xmm0,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040025774 .byte 102,15,111,5,27,32,0,0 // movdqa 0x201b(%rip),%xmm0 # 47a0 <_sk_callback_sse2+0xa79>
Mike Klein308e6242017-04-27 13:56:33 -040025775 .byte 102,15,219,195 // pand %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025776 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040025777 .byte 15,89,5,29,32,0,0 // mulps 0x201d(%rip),%xmm0 # 47b0 <_sk_callback_sse2+0xa89>
25778 .byte 102,15,111,13,37,32,0,0 // movdqa 0x2025(%rip),%xmm1 # 47c0 <_sk_callback_sse2+0xa99>
Mike Klein308e6242017-04-27 13:56:33 -040025779 .byte 102,15,219,203 // pand %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040025780 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040025781 .byte 15,89,13,39,32,0,0 // mulps 0x2027(%rip),%xmm1 # 47d0 <_sk_callback_sse2+0xaa9>
25782 .byte 102,15,111,21,47,32,0,0 // movdqa 0x202f(%rip),%xmm2 # 47e0 <_sk_callback_sse2+0xab9>
Mike Klein308e6242017-04-27 13:56:33 -040025783 .byte 102,15,219,211 // pand %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040025784 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040025785 .byte 15,89,21,49,32,0,0 // mulps 0x2031(%rip),%xmm2 # 47f0 <_sk_callback_sse2+0xac9>
25786 .byte 102,15,219,29,57,32,0,0 // pand 0x2039(%rip),%xmm3 # 4800 <_sk_callback_sse2+0xad9>
Mike Kleinfe560a82017-05-01 12:56:35 -040025787 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040025788 .byte 15,89,29,63,32,0,0 // mulps 0x203f(%rip),%xmm3 # 4810 <_sk_callback_sse2+0xae9>
Mike Kleinf809fef2017-03-31 13:52:45 -040025789 .byte 72,173 // lods %ds:(%rsi),%rax
25790 .byte 255,224 // jmpq *%rax
25791
Mike Klein21bd3e42017-04-06 16:32:29 -040025792HIDDEN _sk_gather_4444_sse2
25793.globl _sk_gather_4444_sse2
Mike Klein86714282017-04-13 17:37:38 -040025794FUNCTION(_sk_gather_4444_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040025795_sk_gather_4444_sse2:
25796 .byte 72,173 // lods %ds:(%rsi),%rax
25797 .byte 76,139,8 // mov (%rax),%r9
25798 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25799 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25800 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25801 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25802 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25803 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25804 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25805 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25806 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25807 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25808 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25809 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
25810 .byte 102,72,15,126,200 // movq %xmm1,%rax
25811 .byte 65,137,192 // mov %eax,%r8d
25812 .byte 72,193,232,32 // shr $0x20,%rax
25813 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25814 .byte 65,137,202 // mov %ecx,%r10d
25815 .byte 72,193,233,32 // shr $0x20,%rcx
Mike Klein308e6242017-04-27 13:56:33 -040025816 .byte 102,67,15,196,28,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm3
25817 .byte 102,65,15,196,28,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm3
Mike Klein21bd3e42017-04-06 16:32:29 -040025818 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
Mike Klein308e6242017-04-27 13:56:33 -040025819 .byte 102,15,196,217,2 // pinsrw $0x2,%ecx,%xmm3
Mike Klein21bd3e42017-04-06 16:32:29 -040025820 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
Mike Klein308e6242017-04-27 13:56:33 -040025821 .byte 102,15,196,216,3 // pinsrw $0x3,%eax,%xmm3
Mike Klein21bd3e42017-04-06 16:32:29 -040025822 .byte 102,15,239,192 // pxor %xmm0,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -040025823 .byte 102,15,97,216 // punpcklwd %xmm0,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040025824 .byte 102,15,111,5,198,31,0,0 // movdqa 0x1fc6(%rip),%xmm0 # 4820 <_sk_callback_sse2+0xaf9>
Mike Klein308e6242017-04-27 13:56:33 -040025825 .byte 102,15,219,195 // pand %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025826 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040025827 .byte 15,89,5,200,31,0,0 // mulps 0x1fc8(%rip),%xmm0 # 4830 <_sk_callback_sse2+0xb09>
25828 .byte 102,15,111,13,208,31,0,0 // movdqa 0x1fd0(%rip),%xmm1 # 4840 <_sk_callback_sse2+0xb19>
Mike Klein308e6242017-04-27 13:56:33 -040025829 .byte 102,15,219,203 // pand %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040025830 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040025831 .byte 15,89,13,210,31,0,0 // mulps 0x1fd2(%rip),%xmm1 # 4850 <_sk_callback_sse2+0xb29>
25832 .byte 102,15,111,21,218,31,0,0 // movdqa 0x1fda(%rip),%xmm2 # 4860 <_sk_callback_sse2+0xb39>
Mike Klein308e6242017-04-27 13:56:33 -040025833 .byte 102,15,219,211 // pand %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040025834 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Kleinfb11acd2017-05-01 14:22:10 -040025835 .byte 15,89,21,220,31,0,0 // mulps 0x1fdc(%rip),%xmm2 # 4870 <_sk_callback_sse2+0xb49>
25836 .byte 102,15,219,29,228,31,0,0 // pand 0x1fe4(%rip),%xmm3 # 4880 <_sk_callback_sse2+0xb59>
Mike Kleinfe560a82017-05-01 12:56:35 -040025837 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040025838 .byte 15,89,29,234,31,0,0 // mulps 0x1fea(%rip),%xmm3 # 4890 <_sk_callback_sse2+0xb69>
Mike Klein21bd3e42017-04-06 16:32:29 -040025839 .byte 72,173 // lods %ds:(%rsi),%rax
25840 .byte 255,224 // jmpq *%rax
25841
Mike Kleinf809fef2017-03-31 13:52:45 -040025842HIDDEN _sk_store_4444_sse2
25843.globl _sk_store_4444_sse2
Mike Klein86714282017-04-13 17:37:38 -040025844FUNCTION(_sk_store_4444_sse2)
Mike Kleinf809fef2017-03-31 13:52:45 -040025845_sk_store_4444_sse2:
25846 .byte 72,173 // lods %ds:(%rsi),%rax
25847 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040025848 .byte 68,15,40,5,233,31,0,0 // movaps 0x1fe9(%rip),%xmm8 # 48a0 <_sk_callback_sse2+0xb79>
Mike Kleinfe560a82017-05-01 12:56:35 -040025849 .byte 68,15,40,200 // movaps %xmm0,%xmm9
25850 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleinf809fef2017-03-31 13:52:45 -040025851 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
25852 .byte 102,65,15,114,241,12 // pslld $0xc,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040025853 .byte 68,15,40,209 // movaps %xmm1,%xmm10
25854 .byte 69,15,89,208 // mulps %xmm8,%xmm10
Mike Kleinf809fef2017-03-31 13:52:45 -040025855 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
25856 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
25857 .byte 102,69,15,235,209 // por %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040025858 .byte 68,15,40,202 // movaps %xmm2,%xmm9
25859 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleinf809fef2017-03-31 13:52:45 -040025860 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
25861 .byte 102,65,15,114,241,4 // pslld $0x4,%xmm9
25862 .byte 68,15,89,195 // mulps %xmm3,%xmm8
25863 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25864 .byte 102,69,15,86,193 // orpd %xmm9,%xmm8
25865 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
25866 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
25867 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
25868 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
25869 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
25870 .byte 72,173 // lods %ds:(%rsi),%rax
25871 .byte 255,224 // jmpq *%rax
25872
Mike Klein7c4af542017-03-29 18:21:14 -040025873HIDDEN _sk_load_8888_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025874.globl _sk_load_8888_sse2
Mike Klein86714282017-04-13 17:37:38 -040025875FUNCTION(_sk_load_8888_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025876_sk_load_8888_sse2:
25877 .byte 72,173 // lods %ds:(%rsi),%rax
25878 .byte 72,139,0 // mov (%rax),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040025879 .byte 68,15,16,12,184 // movups (%rax,%rdi,4),%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025880 .byte 15,40,21,124,31,0,0 // movaps 0x1f7c(%rip),%xmm2 # 48b0 <_sk_callback_sse2+0xb89>
Mike Klein0aa742f2017-04-27 13:36:57 -040025881 .byte 65,15,40,193 // movaps %xmm9,%xmm0
25882 .byte 15,84,194 // andps %xmm2,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040025883 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040025884 .byte 68,15,40,5,122,31,0,0 // movaps 0x1f7a(%rip),%xmm8 # 48c0 <_sk_callback_sse2+0xb99>
Mike Kleind7e06ae2017-03-29 16:33:06 -040025885 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040025886 .byte 65,15,40,201 // movaps %xmm9,%xmm1
25887 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
25888 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040025889 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
25890 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040025891 .byte 65,15,40,217 // movaps %xmm9,%xmm3
25892 .byte 102,15,114,211,16 // psrld $0x10,%xmm3
25893 .byte 102,15,219,218 // pand %xmm2,%xmm3
25894 .byte 15,91,211 // cvtdq2ps %xmm3,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025895 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040025896 .byte 102,65,15,114,209,24 // psrld $0x18,%xmm9
25897 .byte 65,15,91,217 // cvtdq2ps %xmm9,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040025898 .byte 65,15,89,216 // mulps %xmm8,%xmm3
25899 .byte 72,173 // lods %ds:(%rsi),%rax
25900 .byte 255,224 // jmpq *%rax
25901
Mike Kleindec4ea82017-04-06 15:04:05 -040025902HIDDEN _sk_gather_8888_sse2
25903.globl _sk_gather_8888_sse2
Mike Klein86714282017-04-13 17:37:38 -040025904FUNCTION(_sk_gather_8888_sse2)
Mike Kleindec4ea82017-04-06 15:04:05 -040025905_sk_gather_8888_sse2:
25906 .byte 72,173 // lods %ds:(%rsi),%rax
25907 .byte 76,139,8 // mov (%rax),%r9
25908 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25909 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25910 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25911 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25912 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25913 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25914 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25915 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25916 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25917 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25918 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25919 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
25920 .byte 102,72,15,126,200 // movq %xmm1,%rax
25921 .byte 65,137,192 // mov %eax,%r8d
25922 .byte 72,193,232,32 // shr $0x20,%rax
25923 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25924 .byte 65,137,202 // mov %ecx,%r10d
25925 .byte 72,193,233,32 // shr $0x20,%rcx
25926 .byte 102,65,15,110,4,137 // movd (%r9,%rcx,4),%xmm0
25927 .byte 102,65,15,110,12,129 // movd (%r9,%rax,4),%xmm1
25928 .byte 102,15,98,193 // punpckldq %xmm1,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040025929 .byte 102,71,15,110,12,145 // movd (%r9,%r10,4),%xmm9
Mike Kleindec4ea82017-04-06 15:04:05 -040025930 .byte 102,67,15,110,12,129 // movd (%r9,%r8,4),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040025931 .byte 102,68,15,98,201 // punpckldq %xmm1,%xmm9
25932 .byte 102,68,15,98,200 // punpckldq %xmm0,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040025933 .byte 102,15,111,21,203,30,0,0 // movdqa 0x1ecb(%rip),%xmm2 # 48d0 <_sk_callback_sse2+0xba9>
Mike Klein0aa742f2017-04-27 13:36:57 -040025934 .byte 102,65,15,111,193 // movdqa %xmm9,%xmm0
25935 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Kleindec4ea82017-04-06 15:04:05 -040025936 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040025937 .byte 68,15,40,5,199,30,0,0 // movaps 0x1ec7(%rip),%xmm8 # 48e0 <_sk_callback_sse2+0xbb9>
Mike Kleindec4ea82017-04-06 15:04:05 -040025938 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040025939 .byte 102,65,15,111,201 // movdqa %xmm9,%xmm1
25940 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
25941 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleindec4ea82017-04-06 15:04:05 -040025942 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
25943 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040025944 .byte 102,65,15,111,217 // movdqa %xmm9,%xmm3
25945 .byte 102,15,114,211,16 // psrld $0x10,%xmm3
25946 .byte 102,15,219,218 // pand %xmm2,%xmm3
25947 .byte 15,91,211 // cvtdq2ps %xmm3,%xmm2
Mike Kleindec4ea82017-04-06 15:04:05 -040025948 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040025949 .byte 102,65,15,114,209,24 // psrld $0x18,%xmm9
25950 .byte 65,15,91,217 // cvtdq2ps %xmm9,%xmm3
Mike Kleindec4ea82017-04-06 15:04:05 -040025951 .byte 65,15,89,216 // mulps %xmm8,%xmm3
25952 .byte 72,173 // lods %ds:(%rsi),%rax
25953 .byte 255,224 // jmpq *%rax
25954
Mike Klein7c4af542017-03-29 18:21:14 -040025955HIDDEN _sk_store_8888_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025956.globl _sk_store_8888_sse2
Mike Klein86714282017-04-13 17:37:38 -040025957FUNCTION(_sk_store_8888_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025958_sk_store_8888_sse2:
25959 .byte 72,173 // lods %ds:(%rsi),%rax
25960 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040025961 .byte 68,15,40,5,138,30,0,0 // movaps 0x1e8a(%rip),%xmm8 # 48f0 <_sk_callback_sse2+0xbc9>
Mike Kleinfe560a82017-05-01 12:56:35 -040025962 .byte 68,15,40,200 // movaps %xmm0,%xmm9
25963 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040025964 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040025965 .byte 68,15,40,209 // movaps %xmm1,%xmm10
25966 .byte 69,15,89,208 // mulps %xmm8,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040025967 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
25968 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
25969 .byte 102,69,15,235,209 // por %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040025970 .byte 68,15,40,202 // movaps %xmm2,%xmm9
25971 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040025972 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
25973 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
25974 .byte 68,15,89,195 // mulps %xmm3,%xmm8
25975 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25976 .byte 102,65,15,114,240,24 // pslld $0x18,%xmm8
25977 .byte 102,69,15,235,193 // por %xmm9,%xmm8
25978 .byte 102,69,15,235,194 // por %xmm10,%xmm8
25979 .byte 243,68,15,127,4,184 // movdqu %xmm8,(%rax,%rdi,4)
25980 .byte 72,173 // lods %ds:(%rsi),%rax
25981 .byte 255,224 // jmpq *%rax
25982
Mike Klein7c4af542017-03-29 18:21:14 -040025983HIDDEN _sk_load_f16_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025984.globl _sk_load_f16_sse2
Mike Klein86714282017-04-13 17:37:38 -040025985FUNCTION(_sk_load_f16_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025986_sk_load_f16_sse2:
25987 .byte 72,173 // lods %ds:(%rsi),%rax
25988 .byte 72,139,0 // mov (%rax),%rax
25989 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
25990 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
Mike Klein114e6b32017-04-03 22:21:15 -040025991 .byte 102,68,15,111,192 // movdqa %xmm0,%xmm8
25992 .byte 102,68,15,97,193 // punpcklwd %xmm1,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040025993 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040025994 .byte 102,69,15,111,240 // movdqa %xmm8,%xmm14
25995 .byte 102,68,15,97,240 // punpcklwd %xmm0,%xmm14
Mike Klein114e6b32017-04-03 22:21:15 -040025996 .byte 102,68,15,105,192 // punpckhwd %xmm0,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040025997 .byte 102,69,15,239,210 // pxor %xmm10,%xmm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040025998 .byte 102,65,15,111,206 // movdqa %xmm14,%xmm1
25999 .byte 102,65,15,97,202 // punpcklwd %xmm10,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040026000 .byte 102,68,15,111,13,250,29,0,0 // movdqa 0x1dfa(%rip),%xmm9 # 4900 <_sk_callback_sse2+0xbd9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026001 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
26002 .byte 102,65,15,219,193 // pand %xmm9,%xmm0
26003 .byte 102,15,239,200 // pxor %xmm0,%xmm1
26004 .byte 102,15,114,240,16 // pslld $0x10,%xmm0
26005 .byte 102,68,15,111,233 // movdqa %xmm1,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040026006 .byte 102,65,15,114,245,13 // pslld $0xd,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040026007 .byte 102,68,15,235,232 // por %xmm0,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040026008 .byte 102,68,15,111,29,223,29,0,0 // movdqa 0x1ddf(%rip),%xmm11 # 4910 <_sk_callback_sse2+0xbe9>
Mike Kleind0ce1482017-04-19 17:19:30 -040026009 .byte 102,69,15,254,235 // paddd %xmm11,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040026010 .byte 102,68,15,111,37,225,29,0,0 // movdqa 0x1de1(%rip),%xmm12 # 4920 <_sk_callback_sse2+0xbf9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026011 .byte 102,65,15,239,204 // pxor %xmm12,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040026012 .byte 102,15,111,29,228,29,0,0 // movdqa 0x1de4(%rip),%xmm3 # 4930 <_sk_callback_sse2+0xc09>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026013 .byte 102,15,111,195 // movdqa %xmm3,%xmm0
26014 .byte 102,15,102,193 // pcmpgtd %xmm1,%xmm0
26015 .byte 102,65,15,223,197 // pandn %xmm13,%xmm0
26016 .byte 102,65,15,115,222,8 // psrldq $0x8,%xmm14
26017 .byte 102,69,15,97,242 // punpcklwd %xmm10,%xmm14
26018 .byte 102,65,15,111,206 // movdqa %xmm14,%xmm1
26019 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
26020 .byte 102,68,15,239,241 // pxor %xmm1,%xmm14
26021 .byte 102,15,114,241,16 // pslld $0x10,%xmm1
26022 .byte 102,65,15,111,214 // movdqa %xmm14,%xmm2
26023 .byte 102,15,114,242,13 // pslld $0xd,%xmm2
26024 .byte 102,15,235,209 // por %xmm1,%xmm2
26025 .byte 102,65,15,254,211 // paddd %xmm11,%xmm2
26026 .byte 102,69,15,239,244 // pxor %xmm12,%xmm14
26027 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
26028 .byte 102,65,15,102,206 // pcmpgtd %xmm14,%xmm1
26029 .byte 102,15,223,202 // pandn %xmm2,%xmm1
26030 .byte 102,69,15,111,232 // movdqa %xmm8,%xmm13
26031 .byte 102,69,15,97,234 // punpcklwd %xmm10,%xmm13
26032 .byte 102,65,15,111,213 // movdqa %xmm13,%xmm2
26033 .byte 102,65,15,219,209 // pand %xmm9,%xmm2
26034 .byte 102,68,15,239,234 // pxor %xmm2,%xmm13
26035 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
26036 .byte 102,69,15,111,245 // movdqa %xmm13,%xmm14
26037 .byte 102,65,15,114,246,13 // pslld $0xd,%xmm14
26038 .byte 102,68,15,235,242 // por %xmm2,%xmm14
26039 .byte 102,69,15,254,243 // paddd %xmm11,%xmm14
26040 .byte 102,69,15,239,236 // pxor %xmm12,%xmm13
26041 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
26042 .byte 102,65,15,102,213 // pcmpgtd %xmm13,%xmm2
26043 .byte 102,65,15,223,214 // pandn %xmm14,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040026044 .byte 102,65,15,115,216,8 // psrldq $0x8,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040026045 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
26046 .byte 102,69,15,219,200 // pand %xmm8,%xmm9
26047 .byte 102,69,15,239,193 // pxor %xmm9,%xmm8
26048 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040026049 .byte 102,69,15,111,208 // movdqa %xmm8,%xmm10
26050 .byte 102,65,15,114,242,13 // pslld $0xd,%xmm10
26051 .byte 102,69,15,235,209 // por %xmm9,%xmm10
26052 .byte 102,69,15,254,211 // paddd %xmm11,%xmm10
26053 .byte 102,69,15,239,196 // pxor %xmm12,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040026054 .byte 102,65,15,102,216 // pcmpgtd %xmm8,%xmm3
Mike Kleinb4bbc642017-04-27 08:59:55 -040026055 .byte 102,65,15,223,218 // pandn %xmm10,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040026056 .byte 72,173 // lods %ds:(%rsi),%rax
26057 .byte 255,224 // jmpq *%rax
26058
Mike Klein5f055f02017-04-06 20:02:11 -040026059HIDDEN _sk_gather_f16_sse2
26060.globl _sk_gather_f16_sse2
Mike Klein86714282017-04-13 17:37:38 -040026061FUNCTION(_sk_gather_f16_sse2)
Mike Klein5f055f02017-04-06 20:02:11 -040026062_sk_gather_f16_sse2:
26063 .byte 72,173 // lods %ds:(%rsi),%rax
26064 .byte 76,139,8 // mov (%rax),%r9
26065 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
26066 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
26067 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
26068 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
26069 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
26070 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
26071 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
26072 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
26073 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
26074 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
26075 .byte 102,15,254,193 // paddd %xmm1,%xmm0
26076 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
26077 .byte 102,72,15,126,200 // movq %xmm1,%rax
26078 .byte 65,137,192 // mov %eax,%r8d
26079 .byte 72,193,232,32 // shr $0x20,%rax
26080 .byte 102,72,15,126,193 // movq %xmm0,%rcx
26081 .byte 65,137,202 // mov %ecx,%r10d
26082 .byte 72,193,233,32 // shr $0x20,%rcx
26083 .byte 243,65,15,126,4,201 // movq (%r9,%rcx,8),%xmm0
26084 .byte 243,67,15,126,12,209 // movq (%r9,%r10,8),%xmm1
26085 .byte 102,15,108,200 // punpcklqdq %xmm0,%xmm1
26086 .byte 243,65,15,126,4,193 // movq (%r9,%rax,8),%xmm0
26087 .byte 243,67,15,126,20,193 // movq (%r9,%r8,8),%xmm2
26088 .byte 102,15,108,208 // punpcklqdq %xmm0,%xmm2
26089 .byte 102,68,15,111,193 // movdqa %xmm1,%xmm8
26090 .byte 102,68,15,97,194 // punpcklwd %xmm2,%xmm8
26091 .byte 102,15,105,202 // punpckhwd %xmm2,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040026092 .byte 102,69,15,111,240 // movdqa %xmm8,%xmm14
26093 .byte 102,68,15,97,241 // punpcklwd %xmm1,%xmm14
Mike Klein5f055f02017-04-06 20:02:11 -040026094 .byte 102,68,15,105,193 // punpckhwd %xmm1,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040026095 .byte 102,69,15,239,210 // pxor %xmm10,%xmm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040026096 .byte 102,65,15,111,206 // movdqa %xmm14,%xmm1
26097 .byte 102,65,15,97,202 // punpcklwd %xmm10,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040026098 .byte 102,68,15,111,13,114,28,0,0 // movdqa 0x1c72(%rip),%xmm9 # 4940 <_sk_callback_sse2+0xc19>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026099 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
26100 .byte 102,65,15,219,193 // pand %xmm9,%xmm0
26101 .byte 102,15,239,200 // pxor %xmm0,%xmm1
26102 .byte 102,15,114,240,16 // pslld $0x10,%xmm0
26103 .byte 102,68,15,111,233 // movdqa %xmm1,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040026104 .byte 102,65,15,114,245,13 // pslld $0xd,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040026105 .byte 102,68,15,235,232 // por %xmm0,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040026106 .byte 102,68,15,111,29,87,28,0,0 // movdqa 0x1c57(%rip),%xmm11 # 4950 <_sk_callback_sse2+0xc29>
Mike Kleind0ce1482017-04-19 17:19:30 -040026107 .byte 102,69,15,254,235 // paddd %xmm11,%xmm13
Mike Kleinfb11acd2017-05-01 14:22:10 -040026108 .byte 102,68,15,111,37,89,28,0,0 // movdqa 0x1c59(%rip),%xmm12 # 4960 <_sk_callback_sse2+0xc39>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026109 .byte 102,65,15,239,204 // pxor %xmm12,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040026110 .byte 102,15,111,29,92,28,0,0 // movdqa 0x1c5c(%rip),%xmm3 # 4970 <_sk_callback_sse2+0xc49>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026111 .byte 102,15,111,195 // movdqa %xmm3,%xmm0
26112 .byte 102,15,102,193 // pcmpgtd %xmm1,%xmm0
26113 .byte 102,65,15,223,197 // pandn %xmm13,%xmm0
26114 .byte 102,65,15,115,222,8 // psrldq $0x8,%xmm14
26115 .byte 102,69,15,97,242 // punpcklwd %xmm10,%xmm14
26116 .byte 102,65,15,111,206 // movdqa %xmm14,%xmm1
26117 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
26118 .byte 102,68,15,239,241 // pxor %xmm1,%xmm14
26119 .byte 102,15,114,241,16 // pslld $0x10,%xmm1
26120 .byte 102,65,15,111,214 // movdqa %xmm14,%xmm2
26121 .byte 102,15,114,242,13 // pslld $0xd,%xmm2
26122 .byte 102,15,235,209 // por %xmm1,%xmm2
26123 .byte 102,65,15,254,211 // paddd %xmm11,%xmm2
26124 .byte 102,69,15,239,244 // pxor %xmm12,%xmm14
26125 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
26126 .byte 102,65,15,102,206 // pcmpgtd %xmm14,%xmm1
26127 .byte 102,15,223,202 // pandn %xmm2,%xmm1
26128 .byte 102,69,15,111,232 // movdqa %xmm8,%xmm13
26129 .byte 102,69,15,97,234 // punpcklwd %xmm10,%xmm13
26130 .byte 102,65,15,111,213 // movdqa %xmm13,%xmm2
26131 .byte 102,65,15,219,209 // pand %xmm9,%xmm2
26132 .byte 102,68,15,239,234 // pxor %xmm2,%xmm13
26133 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
26134 .byte 102,69,15,111,245 // movdqa %xmm13,%xmm14
26135 .byte 102,65,15,114,246,13 // pslld $0xd,%xmm14
26136 .byte 102,68,15,235,242 // por %xmm2,%xmm14
26137 .byte 102,69,15,254,243 // paddd %xmm11,%xmm14
26138 .byte 102,69,15,239,236 // pxor %xmm12,%xmm13
26139 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
26140 .byte 102,65,15,102,213 // pcmpgtd %xmm13,%xmm2
26141 .byte 102,65,15,223,214 // pandn %xmm14,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040026142 .byte 102,65,15,115,216,8 // psrldq $0x8,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040026143 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
26144 .byte 102,69,15,219,200 // pand %xmm8,%xmm9
26145 .byte 102,69,15,239,193 // pxor %xmm9,%xmm8
26146 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040026147 .byte 102,69,15,111,208 // movdqa %xmm8,%xmm10
26148 .byte 102,65,15,114,242,13 // pslld $0xd,%xmm10
26149 .byte 102,69,15,235,209 // por %xmm9,%xmm10
26150 .byte 102,69,15,254,211 // paddd %xmm11,%xmm10
26151 .byte 102,69,15,239,196 // pxor %xmm12,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040026152 .byte 102,65,15,102,216 // pcmpgtd %xmm8,%xmm3
Mike Kleinb4bbc642017-04-27 08:59:55 -040026153 .byte 102,65,15,223,218 // pandn %xmm10,%xmm3
Mike Klein5f055f02017-04-06 20:02:11 -040026154 .byte 72,173 // lods %ds:(%rsi),%rax
26155 .byte 255,224 // jmpq *%rax
26156
Mike Klein7c4af542017-03-29 18:21:14 -040026157HIDDEN _sk_store_f16_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026158.globl _sk_store_f16_sse2
Mike Klein86714282017-04-13 17:37:38 -040026159FUNCTION(_sk_store_f16_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026160_sk_store_f16_sse2:
26161 .byte 72,173 // lods %ds:(%rsi),%rax
26162 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040026163 .byte 102,68,15,111,21,132,27,0,0 // movdqa 0x1b84(%rip),%xmm10 # 4980 <_sk_callback_sse2+0xc59>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026164 .byte 102,68,15,111,224 // movdqa %xmm0,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040026165 .byte 102,68,15,111,232 // movdqa %xmm0,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040026166 .byte 102,69,15,219,234 // pand %xmm10,%xmm13
26167 .byte 102,69,15,239,229 // pxor %xmm13,%xmm12
Mike Kleinfb11acd2017-05-01 14:22:10 -040026168 .byte 102,68,15,111,13,119,27,0,0 // movdqa 0x1b77(%rip),%xmm9 # 4990 <_sk_callback_sse2+0xc69>
Mike Kleind0ce1482017-04-19 17:19:30 -040026169 .byte 102,65,15,114,213,16 // psrld $0x10,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040026170 .byte 102,69,15,111,193 // movdqa %xmm9,%xmm8
26171 .byte 102,69,15,102,196 // pcmpgtd %xmm12,%xmm8
26172 .byte 102,65,15,114,212,13 // psrld $0xd,%xmm12
Mike Kleinfb11acd2017-05-01 14:22:10 -040026173 .byte 102,68,15,111,29,104,27,0,0 // movdqa 0x1b68(%rip),%xmm11 # 49a0 <_sk_callback_sse2+0xc79>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026174 .byte 102,69,15,235,235 // por %xmm11,%xmm13
26175 .byte 102,69,15,254,236 // paddd %xmm12,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040026176 .byte 102,65,15,114,245,16 // pslld $0x10,%xmm13
26177 .byte 102,65,15,114,229,16 // psrad $0x10,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040026178 .byte 102,69,15,223,197 // pandn %xmm13,%xmm8
26179 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
26180 .byte 102,68,15,111,233 // movdqa %xmm1,%xmm13
26181 .byte 102,68,15,111,241 // movdqa %xmm1,%xmm14
26182 .byte 102,69,15,219,242 // pand %xmm10,%xmm14
26183 .byte 102,69,15,239,238 // pxor %xmm14,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040026184 .byte 102,65,15,114,214,16 // psrld $0x10,%xmm14
Mike Kleinb4bbc642017-04-27 08:59:55 -040026185 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
26186 .byte 102,69,15,102,229 // pcmpgtd %xmm13,%xmm12
26187 .byte 102,65,15,114,213,13 // psrld $0xd,%xmm13
26188 .byte 102,69,15,235,243 // por %xmm11,%xmm14
26189 .byte 102,69,15,254,245 // paddd %xmm13,%xmm14
Mike Kleind0ce1482017-04-19 17:19:30 -040026190 .byte 102,65,15,114,246,16 // pslld $0x10,%xmm14
26191 .byte 102,65,15,114,230,16 // psrad $0x10,%xmm14
Mike Kleinb4bbc642017-04-27 08:59:55 -040026192 .byte 102,69,15,223,230 // pandn %xmm14,%xmm12
26193 .byte 102,69,15,107,228 // packssdw %xmm12,%xmm12
26194 .byte 102,68,15,111,242 // movdqa %xmm2,%xmm14
26195 .byte 102,68,15,111,250 // movdqa %xmm2,%xmm15
26196 .byte 102,69,15,219,250 // pand %xmm10,%xmm15
26197 .byte 102,69,15,239,247 // pxor %xmm15,%xmm14
26198 .byte 102,65,15,114,215,16 // psrld $0x10,%xmm15
26199 .byte 102,69,15,111,233 // movdqa %xmm9,%xmm13
26200 .byte 102,69,15,102,238 // pcmpgtd %xmm14,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040026201 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
Mike Kleinb4bbc642017-04-27 08:59:55 -040026202 .byte 102,69,15,235,251 // por %xmm11,%xmm15
26203 .byte 102,69,15,254,254 // paddd %xmm14,%xmm15
26204 .byte 102,65,15,114,247,16 // pslld $0x10,%xmm15
26205 .byte 102,65,15,114,231,16 // psrad $0x10,%xmm15
26206 .byte 102,69,15,223,239 // pandn %xmm15,%xmm13
26207 .byte 102,69,15,107,237 // packssdw %xmm13,%xmm13
26208 .byte 102,68,15,219,211 // pand %xmm3,%xmm10
26209 .byte 102,68,15,111,243 // movdqa %xmm3,%xmm14
26210 .byte 102,69,15,239,242 // pxor %xmm10,%xmm14
26211 .byte 102,65,15,114,210,16 // psrld $0x10,%xmm10
26212 .byte 102,69,15,102,206 // pcmpgtd %xmm14,%xmm9
26213 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
26214 .byte 102,69,15,235,211 // por %xmm11,%xmm10
26215 .byte 102,69,15,254,214 // paddd %xmm14,%xmm10
26216 .byte 102,65,15,114,242,16 // pslld $0x10,%xmm10
26217 .byte 102,65,15,114,226,16 // psrad $0x10,%xmm10
26218 .byte 102,69,15,223,202 // pandn %xmm10,%xmm9
26219 .byte 102,69,15,107,201 // packssdw %xmm9,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040026220 .byte 102,69,15,97,196 // punpcklwd %xmm12,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040026221 .byte 102,69,15,97,233 // punpcklwd %xmm9,%xmm13
Mike Klein95f53be2017-04-04 10:24:56 -040026222 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040026223 .byte 102,69,15,98,205 // punpckldq %xmm13,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040026224 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
Mike Kleind0ce1482017-04-19 17:19:30 -040026225 .byte 102,69,15,106,197 // punpckhdq %xmm13,%xmm8
Mike Klein95f53be2017-04-04 10:24:56 -040026226 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026227 .byte 72,173 // lods %ds:(%rsi),%rax
26228 .byte 255,224 // jmpq *%rax
26229
Mike Klein3146bb92017-04-05 14:45:02 -040026230HIDDEN _sk_load_u16_be_sse2
26231.globl _sk_load_u16_be_sse2
Mike Klein86714282017-04-13 17:37:38 -040026232FUNCTION(_sk_load_u16_be_sse2)
Mike Klein3146bb92017-04-05 14:45:02 -040026233_sk_load_u16_be_sse2:
26234 .byte 72,173 // lods %ds:(%rsi),%rax
26235 .byte 72,139,0 // mov (%rax),%rax
26236 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
26237 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
26238 .byte 102,15,111,208 // movdqa %xmm0,%xmm2
26239 .byte 102,15,97,209 // punpcklwd %xmm1,%xmm2
26240 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
26241 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
26242 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
26243 .byte 102,15,105,208 // punpckhwd %xmm0,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040026244 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
26245 .byte 102,15,113,240,8 // psllw $0x8,%xmm0
26246 .byte 102,15,112,217,78 // pshufd $0x4e,%xmm1,%xmm3
26247 .byte 102,15,113,209,8 // psrlw $0x8,%xmm1
26248 .byte 102,15,235,200 // por %xmm0,%xmm1
26249 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
26250 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
26251 .byte 15,91,193 // cvtdq2ps %xmm1,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040026252 .byte 68,15,40,5,6,26,0,0 // movaps 0x1a06(%rip),%xmm8 # 49b0 <_sk_callback_sse2+0xc89>
Mike Klein3146bb92017-04-05 14:45:02 -040026253 .byte 65,15,89,192 // mulps %xmm8,%xmm0
26254 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
26255 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
26256 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
26257 .byte 102,15,235,217 // por %xmm1,%xmm3
26258 .byte 102,65,15,97,217 // punpcklwd %xmm9,%xmm3
26259 .byte 15,91,203 // cvtdq2ps %xmm3,%xmm1
26260 .byte 65,15,89,200 // mulps %xmm8,%xmm1
26261 .byte 102,68,15,111,210 // movdqa %xmm2,%xmm10
26262 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
26263 .byte 102,15,112,218,78 // pshufd $0x4e,%xmm2,%xmm3
26264 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
26265 .byte 102,65,15,235,210 // por %xmm10,%xmm2
26266 .byte 102,65,15,97,209 // punpcklwd %xmm9,%xmm2
26267 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
26268 .byte 65,15,89,208 // mulps %xmm8,%xmm2
26269 .byte 102,68,15,111,211 // movdqa %xmm3,%xmm10
26270 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
26271 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
26272 .byte 102,65,15,235,218 // por %xmm10,%xmm3
26273 .byte 102,65,15,97,217 // punpcklwd %xmm9,%xmm3
26274 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
26275 .byte 65,15,89,216 // mulps %xmm8,%xmm3
26276 .byte 72,173 // lods %ds:(%rsi),%rax
26277 .byte 255,224 // jmpq *%rax
26278
Mike Kleinb3821732017-04-17 10:58:05 -040026279HIDDEN _sk_load_rgb_u16_be_sse2
26280.globl _sk_load_rgb_u16_be_sse2
26281FUNCTION(_sk_load_rgb_u16_be_sse2)
26282_sk_load_rgb_u16_be_sse2:
26283 .byte 72,173 // lods %ds:(%rsi),%rax
26284 .byte 72,139,0 // mov (%rax),%rax
26285 .byte 72,141,12,127 // lea (%rdi,%rdi,2),%rcx
26286 .byte 243,15,111,20,72 // movdqu (%rax,%rcx,2),%xmm2
26287 .byte 243,15,111,68,72,8 // movdqu 0x8(%rax,%rcx,2),%xmm0
26288 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
26289 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
26290 .byte 102,15,115,217,6 // psrldq $0x6,%xmm1
26291 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
26292 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
26293 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
26294 .byte 102,15,111,194 // movdqa %xmm2,%xmm0
26295 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
26296 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
26297 .byte 102,15,105,209 // punpckhwd %xmm1,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040026298 .byte 102,15,111,200 // movdqa %xmm0,%xmm1
26299 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
26300 .byte 102,15,113,208,8 // psrlw $0x8,%xmm0
26301 .byte 102,15,235,193 // por %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040026302 .byte 102,69,15,239,192 // pxor %xmm8,%xmm8
26303 .byte 102,65,15,97,192 // punpcklwd %xmm8,%xmm0
Mike Kleinb3821732017-04-17 10:58:05 -040026304 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040026305 .byte 68,15,40,13,66,25,0,0 // movaps 0x1942(%rip),%xmm9 # 49c0 <_sk_callback_sse2+0xc99>
Mike Kleinfe560a82017-05-01 12:56:35 -040026306 .byte 65,15,89,193 // mulps %xmm9,%xmm0
Mike Kleinb3821732017-04-17 10:58:05 -040026307 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
26308 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
26309 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
26310 .byte 102,15,235,217 // por %xmm1,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040026311 .byte 102,65,15,97,216 // punpcklwd %xmm8,%xmm3
Mike Kleinb3821732017-04-17 10:58:05 -040026312 .byte 15,91,203 // cvtdq2ps %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040026313 .byte 65,15,89,201 // mulps %xmm9,%xmm1
Mike Kleinb3821732017-04-17 10:58:05 -040026314 .byte 102,15,111,218 // movdqa %xmm2,%xmm3
26315 .byte 102,15,113,243,8 // psllw $0x8,%xmm3
26316 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
26317 .byte 102,15,235,211 // por %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040026318 .byte 102,65,15,97,208 // punpcklwd %xmm8,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040026319 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040026320 .byte 65,15,89,209 // mulps %xmm9,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040026321 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040026322 .byte 15,40,29,9,25,0,0 // movaps 0x1909(%rip),%xmm3 # 49d0 <_sk_callback_sse2+0xca9>
Mike Kleinb3821732017-04-17 10:58:05 -040026323 .byte 255,224 // jmpq *%rax
26324
Mike Klein3146bb92017-04-05 14:45:02 -040026325HIDDEN _sk_store_u16_be_sse2
26326.globl _sk_store_u16_be_sse2
Mike Klein86714282017-04-13 17:37:38 -040026327FUNCTION(_sk_store_u16_be_sse2)
Mike Klein3146bb92017-04-05 14:45:02 -040026328_sk_store_u16_be_sse2:
26329 .byte 72,173 // lods %ds:(%rsi),%rax
26330 .byte 72,139,0 // mov (%rax),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040026331 .byte 68,15,40,13,10,25,0,0 // movaps 0x190a(%rip),%xmm9 # 49e0 <_sk_callback_sse2+0xcb9>
Mike Kleinfe560a82017-05-01 12:56:35 -040026332 .byte 68,15,40,192 // movaps %xmm0,%xmm8
26333 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040026334 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
26335 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
26336 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
26337 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
26338 .byte 102,69,15,111,208 // movdqa %xmm8,%xmm10
26339 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
26340 .byte 102,65,15,113,208,8 // psrlw $0x8,%xmm8
26341 .byte 102,69,15,235,194 // por %xmm10,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040026342 .byte 68,15,40,209 // movaps %xmm1,%xmm10
26343 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein3146bb92017-04-05 14:45:02 -040026344 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
26345 .byte 102,65,15,114,242,16 // pslld $0x10,%xmm10
26346 .byte 102,65,15,114,226,16 // psrad $0x10,%xmm10
26347 .byte 102,69,15,107,210 // packssdw %xmm10,%xmm10
26348 .byte 102,69,15,111,218 // movdqa %xmm10,%xmm11
26349 .byte 102,65,15,113,243,8 // psllw $0x8,%xmm11
26350 .byte 102,65,15,113,210,8 // psrlw $0x8,%xmm10
26351 .byte 102,69,15,235,211 // por %xmm11,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040026352 .byte 68,15,40,218 // movaps %xmm2,%xmm11
26353 .byte 69,15,89,217 // mulps %xmm9,%xmm11
Mike Klein3146bb92017-04-05 14:45:02 -040026354 .byte 102,69,15,91,219 // cvtps2dq %xmm11,%xmm11
26355 .byte 102,65,15,114,243,16 // pslld $0x10,%xmm11
26356 .byte 102,65,15,114,227,16 // psrad $0x10,%xmm11
26357 .byte 102,69,15,107,219 // packssdw %xmm11,%xmm11
26358 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
26359 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
26360 .byte 102,65,15,113,211,8 // psrlw $0x8,%xmm11
26361 .byte 102,69,15,235,220 // por %xmm12,%xmm11
26362 .byte 68,15,89,203 // mulps %xmm3,%xmm9
26363 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
26364 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
26365 .byte 102,65,15,114,225,16 // psrad $0x10,%xmm9
26366 .byte 102,69,15,107,201 // packssdw %xmm9,%xmm9
26367 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
26368 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
26369 .byte 102,65,15,113,209,8 // psrlw $0x8,%xmm9
26370 .byte 102,69,15,235,204 // por %xmm12,%xmm9
26371 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
26372 .byte 102,69,15,97,217 // punpcklwd %xmm9,%xmm11
26373 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
26374 .byte 102,69,15,98,203 // punpckldq %xmm11,%xmm9
26375 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
26376 .byte 102,69,15,106,195 // punpckhdq %xmm11,%xmm8
26377 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
26378 .byte 72,173 // lods %ds:(%rsi),%rax
26379 .byte 255,224 // jmpq *%rax
26380
Mike Klein14987eb2017-04-06 10:22:26 -040026381HIDDEN _sk_load_f32_sse2
26382.globl _sk_load_f32_sse2
Mike Klein86714282017-04-13 17:37:38 -040026383FUNCTION(_sk_load_f32_sse2)
Mike Klein14987eb2017-04-06 10:22:26 -040026384_sk_load_f32_sse2:
26385 .byte 72,173 // lods %ds:(%rsi),%rax
26386 .byte 72,139,0 // mov (%rax),%rax
26387 .byte 72,137,249 // mov %rdi,%rcx
26388 .byte 72,193,225,4 // shl $0x4,%rcx
26389 .byte 68,15,16,4,8 // movups (%rax,%rcx,1),%xmm8
26390 .byte 15,16,68,8,16 // movups 0x10(%rax,%rcx,1),%xmm0
26391 .byte 15,16,92,8,32 // movups 0x20(%rax,%rcx,1),%xmm3
26392 .byte 68,15,16,76,8,48 // movups 0x30(%rax,%rcx,1),%xmm9
26393 .byte 65,15,40,208 // movaps %xmm8,%xmm2
26394 .byte 15,20,208 // unpcklps %xmm0,%xmm2
26395 .byte 15,40,203 // movaps %xmm3,%xmm1
26396 .byte 65,15,20,201 // unpcklps %xmm9,%xmm1
26397 .byte 68,15,21,192 // unpckhps %xmm0,%xmm8
26398 .byte 65,15,21,217 // unpckhps %xmm9,%xmm3
26399 .byte 15,40,194 // movaps %xmm2,%xmm0
26400 .byte 102,15,20,193 // unpcklpd %xmm1,%xmm0
26401 .byte 15,18,202 // movhlps %xmm2,%xmm1
26402 .byte 65,15,40,208 // movaps %xmm8,%xmm2
26403 .byte 102,15,20,211 // unpcklpd %xmm3,%xmm2
26404 .byte 65,15,18,216 // movhlps %xmm8,%xmm3
26405 .byte 72,173 // lods %ds:(%rsi),%rax
26406 .byte 255,224 // jmpq *%rax
26407
Mike Klein7c4af542017-03-29 18:21:14 -040026408HIDDEN _sk_store_f32_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026409.globl _sk_store_f32_sse2
Mike Klein86714282017-04-13 17:37:38 -040026410FUNCTION(_sk_store_f32_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026411_sk_store_f32_sse2:
26412 .byte 72,173 // lods %ds:(%rsi),%rax
26413 .byte 72,139,0 // mov (%rax),%rax
26414 .byte 72,137,249 // mov %rdi,%rcx
26415 .byte 72,193,225,4 // shl $0x4,%rcx
26416 .byte 68,15,40,192 // movaps %xmm0,%xmm8
26417 .byte 68,15,40,200 // movaps %xmm0,%xmm9
26418 .byte 68,15,20,201 // unpcklps %xmm1,%xmm9
26419 .byte 68,15,40,210 // movaps %xmm2,%xmm10
26420 .byte 68,15,40,218 // movaps %xmm2,%xmm11
26421 .byte 68,15,20,219 // unpcklps %xmm3,%xmm11
26422 .byte 68,15,21,193 // unpckhps %xmm1,%xmm8
26423 .byte 68,15,21,211 // unpckhps %xmm3,%xmm10
26424 .byte 69,15,40,225 // movaps %xmm9,%xmm12
26425 .byte 102,69,15,20,227 // unpcklpd %xmm11,%xmm12
26426 .byte 69,15,18,217 // movhlps %xmm9,%xmm11
26427 .byte 69,15,40,200 // movaps %xmm8,%xmm9
26428 .byte 102,69,15,20,202 // unpcklpd %xmm10,%xmm9
26429 .byte 69,15,18,208 // movhlps %xmm8,%xmm10
26430 .byte 102,68,15,17,36,8 // movupd %xmm12,(%rax,%rcx,1)
26431 .byte 68,15,17,92,8,16 // movups %xmm11,0x10(%rax,%rcx,1)
26432 .byte 102,68,15,17,76,8,32 // movupd %xmm9,0x20(%rax,%rcx,1)
26433 .byte 68,15,17,84,8,48 // movups %xmm10,0x30(%rax,%rcx,1)
26434 .byte 72,173 // lods %ds:(%rsi),%rax
26435 .byte 255,224 // jmpq *%rax
26436
Mike Klein7c4af542017-03-29 18:21:14 -040026437HIDDEN _sk_clamp_x_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026438.globl _sk_clamp_x_sse2
Mike Klein86714282017-04-13 17:37:38 -040026439FUNCTION(_sk_clamp_x_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026440_sk_clamp_x_sse2:
26441 .byte 72,173 // lods %ds:(%rsi),%rax
26442 .byte 69,15,87,192 // xorps %xmm8,%xmm8
26443 .byte 68,15,95,192 // maxps %xmm0,%xmm8
26444 .byte 243,68,15,16,8 // movss (%rax),%xmm9
26445 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26446 .byte 102,15,118,192 // pcmpeqd %xmm0,%xmm0
26447 .byte 102,65,15,254,193 // paddd %xmm9,%xmm0
26448 .byte 68,15,93,192 // minps %xmm0,%xmm8
26449 .byte 72,173 // lods %ds:(%rsi),%rax
26450 .byte 65,15,40,192 // movaps %xmm8,%xmm0
26451 .byte 255,224 // jmpq *%rax
26452
Mike Klein7c4af542017-03-29 18:21:14 -040026453HIDDEN _sk_clamp_y_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026454.globl _sk_clamp_y_sse2
Mike Klein86714282017-04-13 17:37:38 -040026455FUNCTION(_sk_clamp_y_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026456_sk_clamp_y_sse2:
26457 .byte 72,173 // lods %ds:(%rsi),%rax
26458 .byte 69,15,87,192 // xorps %xmm8,%xmm8
26459 .byte 68,15,95,193 // maxps %xmm1,%xmm8
26460 .byte 243,68,15,16,8 // movss (%rax),%xmm9
26461 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26462 .byte 102,15,118,201 // pcmpeqd %xmm1,%xmm1
26463 .byte 102,65,15,254,201 // paddd %xmm9,%xmm1
26464 .byte 68,15,93,193 // minps %xmm1,%xmm8
26465 .byte 72,173 // lods %ds:(%rsi),%rax
26466 .byte 65,15,40,200 // movaps %xmm8,%xmm1
26467 .byte 255,224 // jmpq *%rax
26468
Mike Klein7c4af542017-03-29 18:21:14 -040026469HIDDEN _sk_repeat_x_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026470.globl _sk_repeat_x_sse2
Mike Klein86714282017-04-13 17:37:38 -040026471FUNCTION(_sk_repeat_x_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026472_sk_repeat_x_sse2:
26473 .byte 72,173 // lods %ds:(%rsi),%rax
26474 .byte 243,68,15,16,0 // movss (%rax),%xmm8
26475 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26476 .byte 68,15,40,200 // movaps %xmm0,%xmm9
26477 .byte 69,15,94,200 // divps %xmm8,%xmm9
26478 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
26479 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
26480 .byte 69,15,194,202,1 // cmpltps %xmm10,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040026481 .byte 68,15,84,13,244,22,0,0 // andps 0x16f4(%rip),%xmm9 # 49f0 <_sk_callback_sse2+0xcc9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026482 .byte 69,15,92,209 // subps %xmm9,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040026483 .byte 69,15,89,208 // mulps %xmm8,%xmm10
26484 .byte 65,15,92,194 // subps %xmm10,%xmm0
26485 .byte 102,69,15,118,201 // pcmpeqd %xmm9,%xmm9
26486 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
26487 .byte 65,15,93,193 // minps %xmm9,%xmm0
26488 .byte 72,173 // lods %ds:(%rsi),%rax
26489 .byte 255,224 // jmpq *%rax
26490
Mike Klein7c4af542017-03-29 18:21:14 -040026491HIDDEN _sk_repeat_y_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026492.globl _sk_repeat_y_sse2
Mike Klein86714282017-04-13 17:37:38 -040026493FUNCTION(_sk_repeat_y_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026494_sk_repeat_y_sse2:
26495 .byte 72,173 // lods %ds:(%rsi),%rax
26496 .byte 243,68,15,16,0 // movss (%rax),%xmm8
26497 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26498 .byte 68,15,40,201 // movaps %xmm1,%xmm9
26499 .byte 69,15,94,200 // divps %xmm8,%xmm9
26500 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
26501 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
26502 .byte 69,15,194,202,1 // cmpltps %xmm10,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040026503 .byte 68,15,84,13,188,22,0,0 // andps 0x16bc(%rip),%xmm9 # 4a00 <_sk_callback_sse2+0xcd9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026504 .byte 69,15,92,209 // subps %xmm9,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040026505 .byte 69,15,89,208 // mulps %xmm8,%xmm10
26506 .byte 65,15,92,202 // subps %xmm10,%xmm1
26507 .byte 102,69,15,118,201 // pcmpeqd %xmm9,%xmm9
26508 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
26509 .byte 65,15,93,201 // minps %xmm9,%xmm1
26510 .byte 72,173 // lods %ds:(%rsi),%rax
26511 .byte 255,224 // jmpq *%rax
26512
Mike Klein7c4af542017-03-29 18:21:14 -040026513HIDDEN _sk_mirror_x_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026514.globl _sk_mirror_x_sse2
Mike Klein86714282017-04-13 17:37:38 -040026515FUNCTION(_sk_mirror_x_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026516_sk_mirror_x_sse2:
26517 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb4bbc642017-04-27 08:59:55 -040026518 .byte 243,68,15,16,0 // movss (%rax),%xmm8
26519 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040026520 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040026521 .byte 65,15,92,193 // subps %xmm9,%xmm0
26522 .byte 243,69,15,88,192 // addss %xmm8,%xmm8
26523 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040026524 .byte 68,15,40,208 // movaps %xmm0,%xmm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040026525 .byte 69,15,94,208 // divps %xmm8,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040026526 .byte 243,69,15,91,218 // cvttps2dq %xmm10,%xmm11
26527 .byte 69,15,91,219 // cvtdq2ps %xmm11,%xmm11
26528 .byte 69,15,194,211,1 // cmpltps %xmm11,%xmm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040026529 .byte 68,15,84,21,114,22,0,0 // andps 0x1672(%rip),%xmm10 # 4a10 <_sk_callback_sse2+0xce9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026530 .byte 69,15,87,228 // xorps %xmm12,%xmm12
26531 .byte 69,15,92,218 // subps %xmm10,%xmm11
26532 .byte 69,15,89,216 // mulps %xmm8,%xmm11
Mike Kleind7e06ae2017-03-29 16:33:06 -040026533 .byte 65,15,92,195 // subps %xmm11,%xmm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040026534 .byte 65,15,92,193 // subps %xmm9,%xmm0
26535 .byte 68,15,92,224 // subps %xmm0,%xmm12
26536 .byte 65,15,84,196 // andps %xmm12,%xmm0
26537 .byte 102,69,15,118,192 // pcmpeqd %xmm8,%xmm8
26538 .byte 102,69,15,254,193 // paddd %xmm9,%xmm8
26539 .byte 65,15,93,192 // minps %xmm8,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040026540 .byte 72,173 // lods %ds:(%rsi),%rax
26541 .byte 255,224 // jmpq *%rax
26542
Mike Klein7c4af542017-03-29 18:21:14 -040026543HIDDEN _sk_mirror_y_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026544.globl _sk_mirror_y_sse2
Mike Klein86714282017-04-13 17:37:38 -040026545FUNCTION(_sk_mirror_y_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026546_sk_mirror_y_sse2:
26547 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb4bbc642017-04-27 08:59:55 -040026548 .byte 243,68,15,16,0 // movss (%rax),%xmm8
26549 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040026550 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040026551 .byte 65,15,92,201 // subps %xmm9,%xmm1
26552 .byte 243,69,15,88,192 // addss %xmm8,%xmm8
26553 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040026554 .byte 68,15,40,209 // movaps %xmm1,%xmm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040026555 .byte 69,15,94,208 // divps %xmm8,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040026556 .byte 243,69,15,91,218 // cvttps2dq %xmm10,%xmm11
26557 .byte 69,15,91,219 // cvtdq2ps %xmm11,%xmm11
26558 .byte 69,15,194,211,1 // cmpltps %xmm11,%xmm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040026559 .byte 68,15,84,21,24,22,0,0 // andps 0x1618(%rip),%xmm10 # 4a20 <_sk_callback_sse2+0xcf9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026560 .byte 69,15,87,228 // xorps %xmm12,%xmm12
26561 .byte 69,15,92,218 // subps %xmm10,%xmm11
26562 .byte 69,15,89,216 // mulps %xmm8,%xmm11
Mike Kleind7e06ae2017-03-29 16:33:06 -040026563 .byte 65,15,92,203 // subps %xmm11,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040026564 .byte 65,15,92,201 // subps %xmm9,%xmm1
26565 .byte 68,15,92,225 // subps %xmm1,%xmm12
26566 .byte 65,15,84,204 // andps %xmm12,%xmm1
26567 .byte 102,69,15,118,192 // pcmpeqd %xmm8,%xmm8
26568 .byte 102,69,15,254,193 // paddd %xmm9,%xmm8
26569 .byte 65,15,93,200 // minps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040026570 .byte 72,173 // lods %ds:(%rsi),%rax
26571 .byte 255,224 // jmpq *%rax
26572
Mike Klein7c4af542017-03-29 18:21:14 -040026573HIDDEN _sk_luminance_to_alpha_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026574.globl _sk_luminance_to_alpha_sse2
Mike Klein86714282017-04-13 17:37:38 -040026575FUNCTION(_sk_luminance_to_alpha_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026576_sk_luminance_to_alpha_sse2:
Mike Kleinfe560a82017-05-01 12:56:35 -040026577 .byte 15,40,218 // movaps %xmm2,%xmm3
Mike Kleinfb11acd2017-05-01 14:22:10 -040026578 .byte 15,89,5,240,21,0,0 // mulps 0x15f0(%rip),%xmm0 # 4a30 <_sk_callback_sse2+0xd09>
26579 .byte 15,89,13,249,21,0,0 // mulps 0x15f9(%rip),%xmm1 # 4a40 <_sk_callback_sse2+0xd19>
Mike Kleinfe560a82017-05-01 12:56:35 -040026580 .byte 15,88,200 // addps %xmm0,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040026581 .byte 15,89,29,255,21,0,0 // mulps 0x15ff(%rip),%xmm3 # 4a50 <_sk_callback_sse2+0xd29>
Mike Kleinfe560a82017-05-01 12:56:35 -040026582 .byte 15,88,217 // addps %xmm1,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040026583 .byte 72,173 // lods %ds:(%rsi),%rax
26584 .byte 15,87,192 // xorps %xmm0,%xmm0
26585 .byte 15,87,201 // xorps %xmm1,%xmm1
26586 .byte 15,87,210 // xorps %xmm2,%xmm2
26587 .byte 255,224 // jmpq *%rax
26588
Mike Klein7c4af542017-03-29 18:21:14 -040026589HIDDEN _sk_matrix_2x3_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026590.globl _sk_matrix_2x3_sse2
Mike Klein86714282017-04-13 17:37:38 -040026591FUNCTION(_sk_matrix_2x3_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026592_sk_matrix_2x3_sse2:
26593 .byte 68,15,40,201 // movaps %xmm1,%xmm9
26594 .byte 68,15,40,192 // movaps %xmm0,%xmm8
26595 .byte 72,173 // lods %ds:(%rsi),%rax
26596 .byte 243,15,16,0 // movss (%rax),%xmm0
26597 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
26598 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
26599 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
26600 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26601 .byte 243,68,15,16,88,16 // movss 0x10(%rax),%xmm11
26602 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26603 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26604 .byte 69,15,88,211 // addps %xmm11,%xmm10
26605 .byte 65,15,89,192 // mulps %xmm8,%xmm0
26606 .byte 65,15,88,194 // addps %xmm10,%xmm0
26607 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
26608 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
26609 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26610 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
26611 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26612 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26613 .byte 69,15,88,211 // addps %xmm11,%xmm10
26614 .byte 65,15,89,200 // mulps %xmm8,%xmm1
26615 .byte 65,15,88,202 // addps %xmm10,%xmm1
26616 .byte 72,173 // lods %ds:(%rsi),%rax
26617 .byte 255,224 // jmpq *%rax
26618
Mike Klein7c4af542017-03-29 18:21:14 -040026619HIDDEN _sk_matrix_3x4_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026620.globl _sk_matrix_3x4_sse2
Mike Klein86714282017-04-13 17:37:38 -040026621FUNCTION(_sk_matrix_3x4_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026622_sk_matrix_3x4_sse2:
26623 .byte 68,15,40,201 // movaps %xmm1,%xmm9
26624 .byte 68,15,40,192 // movaps %xmm0,%xmm8
26625 .byte 72,173 // lods %ds:(%rsi),%rax
26626 .byte 243,15,16,0 // movss (%rax),%xmm0
26627 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
26628 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
26629 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
26630 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26631 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
26632 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26633 .byte 243,68,15,16,96,36 // movss 0x24(%rax),%xmm12
26634 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26635 .byte 68,15,89,218 // mulps %xmm2,%xmm11
26636 .byte 69,15,88,220 // addps %xmm12,%xmm11
26637 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26638 .byte 69,15,88,211 // addps %xmm11,%xmm10
26639 .byte 65,15,89,192 // mulps %xmm8,%xmm0
26640 .byte 65,15,88,194 // addps %xmm10,%xmm0
26641 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
26642 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
26643 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26644 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
26645 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26646 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
26647 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26648 .byte 68,15,89,218 // mulps %xmm2,%xmm11
26649 .byte 69,15,88,220 // addps %xmm12,%xmm11
26650 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26651 .byte 69,15,88,211 // addps %xmm11,%xmm10
26652 .byte 65,15,89,200 // mulps %xmm8,%xmm1
26653 .byte 65,15,88,202 // addps %xmm10,%xmm1
26654 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
26655 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26656 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
26657 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26658 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
26659 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26660 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
26661 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26662 .byte 68,15,89,226 // mulps %xmm2,%xmm12
26663 .byte 69,15,88,229 // addps %xmm13,%xmm12
26664 .byte 69,15,89,217 // mulps %xmm9,%xmm11
26665 .byte 69,15,88,220 // addps %xmm12,%xmm11
26666 .byte 69,15,89,208 // mulps %xmm8,%xmm10
26667 .byte 69,15,88,211 // addps %xmm11,%xmm10
26668 .byte 72,173 // lods %ds:(%rsi),%rax
26669 .byte 65,15,40,210 // movaps %xmm10,%xmm2
26670 .byte 255,224 // jmpq *%rax
26671
Mike Klein7c4af542017-03-29 18:21:14 -040026672HIDDEN _sk_matrix_4x5_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026673.globl _sk_matrix_4x5_sse2
Mike Klein86714282017-04-13 17:37:38 -040026674FUNCTION(_sk_matrix_4x5_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026675_sk_matrix_4x5_sse2:
26676 .byte 68,15,40,201 // movaps %xmm1,%xmm9
26677 .byte 68,15,40,192 // movaps %xmm0,%xmm8
26678 .byte 72,173 // lods %ds:(%rsi),%rax
26679 .byte 243,15,16,0 // movss (%rax),%xmm0
26680 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
26681 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
26682 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
26683 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26684 .byte 243,68,15,16,88,32 // movss 0x20(%rax),%xmm11
26685 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26686 .byte 243,68,15,16,96,48 // movss 0x30(%rax),%xmm12
26687 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26688 .byte 243,68,15,16,104,64 // movss 0x40(%rax),%xmm13
26689 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26690 .byte 68,15,89,227 // mulps %xmm3,%xmm12
26691 .byte 69,15,88,229 // addps %xmm13,%xmm12
26692 .byte 68,15,89,218 // mulps %xmm2,%xmm11
26693 .byte 69,15,88,220 // addps %xmm12,%xmm11
26694 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26695 .byte 69,15,88,211 // addps %xmm11,%xmm10
26696 .byte 65,15,89,192 // mulps %xmm8,%xmm0
26697 .byte 65,15,88,194 // addps %xmm10,%xmm0
26698 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
26699 .byte 243,68,15,16,80,20 // movss 0x14(%rax),%xmm10
26700 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26701 .byte 243,68,15,16,88,36 // movss 0x24(%rax),%xmm11
26702 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26703 .byte 243,68,15,16,96,52 // movss 0x34(%rax),%xmm12
26704 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26705 .byte 243,68,15,16,104,68 // movss 0x44(%rax),%xmm13
26706 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26707 .byte 68,15,89,227 // mulps %xmm3,%xmm12
26708 .byte 69,15,88,229 // addps %xmm13,%xmm12
26709 .byte 68,15,89,218 // mulps %xmm2,%xmm11
26710 .byte 69,15,88,220 // addps %xmm12,%xmm11
26711 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26712 .byte 69,15,88,211 // addps %xmm11,%xmm10
26713 .byte 65,15,89,200 // mulps %xmm8,%xmm1
26714 .byte 65,15,88,202 // addps %xmm10,%xmm1
26715 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
26716 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26717 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
26718 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26719 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
26720 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26721 .byte 243,68,15,16,104,56 // movss 0x38(%rax),%xmm13
26722 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26723 .byte 243,68,15,16,112,72 // movss 0x48(%rax),%xmm14
26724 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
26725 .byte 68,15,89,235 // mulps %xmm3,%xmm13
26726 .byte 69,15,88,238 // addps %xmm14,%xmm13
26727 .byte 68,15,89,226 // mulps %xmm2,%xmm12
26728 .byte 69,15,88,229 // addps %xmm13,%xmm12
26729 .byte 69,15,89,217 // mulps %xmm9,%xmm11
26730 .byte 69,15,88,220 // addps %xmm12,%xmm11
26731 .byte 69,15,89,208 // mulps %xmm8,%xmm10
26732 .byte 69,15,88,211 // addps %xmm11,%xmm10
26733 .byte 243,68,15,16,88,12 // movss 0xc(%rax),%xmm11
26734 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26735 .byte 243,68,15,16,96,28 // movss 0x1c(%rax),%xmm12
26736 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26737 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
26738 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26739 .byte 243,68,15,16,112,60 // movss 0x3c(%rax),%xmm14
26740 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
26741 .byte 243,68,15,16,120,76 // movss 0x4c(%rax),%xmm15
26742 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
26743 .byte 68,15,89,243 // mulps %xmm3,%xmm14
26744 .byte 69,15,88,247 // addps %xmm15,%xmm14
26745 .byte 68,15,89,234 // mulps %xmm2,%xmm13
26746 .byte 69,15,88,238 // addps %xmm14,%xmm13
26747 .byte 69,15,89,225 // mulps %xmm9,%xmm12
26748 .byte 69,15,88,229 // addps %xmm13,%xmm12
26749 .byte 69,15,89,216 // mulps %xmm8,%xmm11
26750 .byte 69,15,88,220 // addps %xmm12,%xmm11
26751 .byte 72,173 // lods %ds:(%rsi),%rax
26752 .byte 65,15,40,210 // movaps %xmm10,%xmm2
26753 .byte 65,15,40,219 // movaps %xmm11,%xmm3
26754 .byte 255,224 // jmpq *%rax
26755
Mike Klein7c4af542017-03-29 18:21:14 -040026756HIDDEN _sk_matrix_perspective_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026757.globl _sk_matrix_perspective_sse2
Mike Klein86714282017-04-13 17:37:38 -040026758FUNCTION(_sk_matrix_perspective_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026759_sk_matrix_perspective_sse2:
26760 .byte 68,15,40,192 // movaps %xmm0,%xmm8
26761 .byte 72,173 // lods %ds:(%rsi),%rax
26762 .byte 243,15,16,0 // movss (%rax),%xmm0
26763 .byte 243,68,15,16,72,4 // movss 0x4(%rax),%xmm9
26764 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
26765 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26766 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
26767 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26768 .byte 68,15,89,201 // mulps %xmm1,%xmm9
26769 .byte 69,15,88,202 // addps %xmm10,%xmm9
26770 .byte 65,15,89,192 // mulps %xmm8,%xmm0
26771 .byte 65,15,88,193 // addps %xmm9,%xmm0
26772 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
26773 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26774 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
26775 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26776 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
26777 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26778 .byte 68,15,89,209 // mulps %xmm1,%xmm10
26779 .byte 69,15,88,211 // addps %xmm11,%xmm10
26780 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26781 .byte 69,15,88,202 // addps %xmm10,%xmm9
26782 .byte 243,68,15,16,80,24 // movss 0x18(%rax),%xmm10
26783 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26784 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
26785 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26786 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
26787 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26788 .byte 68,15,89,217 // mulps %xmm1,%xmm11
26789 .byte 69,15,88,220 // addps %xmm12,%xmm11
26790 .byte 69,15,89,208 // mulps %xmm8,%xmm10
26791 .byte 69,15,88,211 // addps %xmm11,%xmm10
26792 .byte 65,15,83,202 // rcpps %xmm10,%xmm1
26793 .byte 15,89,193 // mulps %xmm1,%xmm0
26794 .byte 68,15,89,201 // mulps %xmm1,%xmm9
26795 .byte 72,173 // lods %ds:(%rsi),%rax
26796 .byte 65,15,40,201 // movaps %xmm9,%xmm1
26797 .byte 255,224 // jmpq *%rax
26798
Herb Derby7b4202d2017-04-10 10:52:34 -040026799HIDDEN _sk_linear_gradient_sse2
26800.globl _sk_linear_gradient_sse2
Mike Klein86714282017-04-13 17:37:38 -040026801FUNCTION(_sk_linear_gradient_sse2)
Herb Derby7b4202d2017-04-10 10:52:34 -040026802_sk_linear_gradient_sse2:
26803 .byte 72,173 // lods %ds:(%rsi),%rax
26804 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
26805 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26806 .byte 243,68,15,16,80,20 // movss 0x14(%rax),%xmm10
26807 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26808 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
26809 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26810 .byte 243,68,15,16,96,28 // movss 0x1c(%rax),%xmm12
26811 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26812 .byte 72,139,8 // mov (%rax),%rcx
26813 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040026814 .byte 15,132,15,1,0,0 // je 3904 <_sk_linear_gradient_sse2+0x149>
Herb Derby7b4202d2017-04-10 10:52:34 -040026815 .byte 72,139,64,8 // mov 0x8(%rax),%rax
26816 .byte 72,131,192,32 // add $0x20,%rax
26817 .byte 69,15,87,192 // xorps %xmm8,%xmm8
26818 .byte 15,87,219 // xorps %xmm3,%xmm3
26819 .byte 15,87,210 // xorps %xmm2,%xmm2
26820 .byte 15,87,201 // xorps %xmm1,%xmm1
26821 .byte 243,68,15,16,112,224 // movss -0x20(%rax),%xmm14
26822 .byte 243,68,15,16,104,228 // movss -0x1c(%rax),%xmm13
26823 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
26824 .byte 69,15,40,252 // movaps %xmm12,%xmm15
26825 .byte 68,15,40,224 // movaps %xmm0,%xmm12
26826 .byte 69,15,194,230,1 // cmpltps %xmm14,%xmm12
26827 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26828 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26829 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26830 .byte 69,15,84,196 // andps %xmm12,%xmm8
26831 .byte 69,15,86,198 // orps %xmm14,%xmm8
26832 .byte 243,68,15,16,104,232 // movss -0x18(%rax),%xmm13
26833 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26834 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26835 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26836 .byte 65,15,84,204 // andps %xmm12,%xmm1
26837 .byte 65,15,86,206 // orps %xmm14,%xmm1
26838 .byte 243,68,15,16,104,236 // movss -0x14(%rax),%xmm13
26839 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26840 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26841 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26842 .byte 65,15,84,212 // andps %xmm12,%xmm2
26843 .byte 65,15,86,214 // orps %xmm14,%xmm2
26844 .byte 243,68,15,16,104,240 // movss -0x10(%rax),%xmm13
26845 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26846 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26847 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26848 .byte 65,15,84,220 // andps %xmm12,%xmm3
26849 .byte 65,15,86,222 // orps %xmm14,%xmm3
26850 .byte 243,68,15,16,104,244 // movss -0xc(%rax),%xmm13
26851 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26852 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26853 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26854 .byte 69,15,84,204 // andps %xmm12,%xmm9
26855 .byte 69,15,86,206 // orps %xmm14,%xmm9
26856 .byte 243,68,15,16,104,248 // movss -0x8(%rax),%xmm13
26857 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26858 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26859 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26860 .byte 69,15,84,212 // andps %xmm12,%xmm10
26861 .byte 69,15,86,214 // orps %xmm14,%xmm10
26862 .byte 243,68,15,16,104,252 // movss -0x4(%rax),%xmm13
26863 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26864 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26865 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26866 .byte 69,15,84,220 // andps %xmm12,%xmm11
26867 .byte 69,15,86,222 // orps %xmm14,%xmm11
26868 .byte 243,68,15,16,40 // movss (%rax),%xmm13
26869 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26870 .byte 69,15,84,252 // andps %xmm12,%xmm15
26871 .byte 69,15,85,229 // andnps %xmm13,%xmm12
26872 .byte 69,15,86,231 // orps %xmm15,%xmm12
26873 .byte 72,131,192,36 // add $0x24,%rax
26874 .byte 72,255,201 // dec %rcx
Mike Kleinfb11acd2017-05-01 14:22:10 -040026875 .byte 15,133,8,255,255,255 // jne 380a <_sk_linear_gradient_sse2+0x4f>
26876 .byte 235,13 // jmp 3911 <_sk_linear_gradient_sse2+0x156>
Herb Derby7b4202d2017-04-10 10:52:34 -040026877 .byte 15,87,201 // xorps %xmm1,%xmm1
26878 .byte 15,87,210 // xorps %xmm2,%xmm2
26879 .byte 15,87,219 // xorps %xmm3,%xmm3
26880 .byte 69,15,87,192 // xorps %xmm8,%xmm8
26881 .byte 68,15,89,192 // mulps %xmm0,%xmm8
26882 .byte 69,15,88,193 // addps %xmm9,%xmm8
26883 .byte 15,89,200 // mulps %xmm0,%xmm1
26884 .byte 65,15,88,202 // addps %xmm10,%xmm1
26885 .byte 15,89,208 // mulps %xmm0,%xmm2
26886 .byte 65,15,88,211 // addps %xmm11,%xmm2
26887 .byte 15,89,216 // mulps %xmm0,%xmm3
26888 .byte 65,15,88,220 // addps %xmm12,%xmm3
26889 .byte 72,173 // lods %ds:(%rsi),%rax
26890 .byte 65,15,40,192 // movaps %xmm8,%xmm0
26891 .byte 255,224 // jmpq *%rax
26892
Mike Klein7c4af542017-03-29 18:21:14 -040026893HIDDEN _sk_linear_gradient_2stops_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026894.globl _sk_linear_gradient_2stops_sse2
Mike Klein86714282017-04-13 17:37:38 -040026895FUNCTION(_sk_linear_gradient_2stops_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026896_sk_linear_gradient_2stops_sse2:
Mike Klein8a823fa2017-04-05 17:29:26 -040026897 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040026898 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040026899 .byte 243,15,16,0 // movss (%rax),%xmm0
26900 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Klein8a823fa2017-04-05 17:29:26 -040026901 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040026902 .byte 243,15,16,80,16 // movss 0x10(%rax),%xmm2
26903 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040026904 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040026905 .byte 15,88,194 // addps %xmm2,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040026906 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040026907 .byte 243,15,16,80,20 // movss 0x14(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040026908 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
26909 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040026910 .byte 15,88,202 // addps %xmm2,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040026911 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040026912 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040026913 .byte 243,15,16,88,24 // movss 0x18(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040026914 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
26915 .byte 65,15,89,208 // mulps %xmm8,%xmm2
26916 .byte 15,88,211 // addps %xmm3,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040026917 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040026918 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Herb Derby7b4202d2017-04-10 10:52:34 -040026919 .byte 243,68,15,16,72,28 // movss 0x1c(%rax),%xmm9
Mike Klein8a823fa2017-04-05 17:29:26 -040026920 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26921 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040026922 .byte 65,15,88,217 // addps %xmm9,%xmm3
26923 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040026924 .byte 255,224 // jmpq *%rax
Mike Klein0a904492017-04-12 12:52:48 -040026925
26926HIDDEN _sk_save_xy_sse2
26927.globl _sk_save_xy_sse2
Mike Klein86714282017-04-13 17:37:38 -040026928FUNCTION(_sk_save_xy_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026929_sk_save_xy_sse2:
26930 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040026931 .byte 68,15,40,5,176,16,0,0 // movaps 0x10b0(%rip),%xmm8 # 4a60 <_sk_callback_sse2+0xd39>
Mike Kleinfe560a82017-05-01 12:56:35 -040026932 .byte 15,17,0 // movups %xmm0,(%rax)
26933 .byte 68,15,40,200 // movaps %xmm0,%xmm9
26934 .byte 69,15,88,200 // addps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040026935 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
26936 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
26937 .byte 69,15,40,217 // movaps %xmm9,%xmm11
26938 .byte 69,15,194,218,1 // cmpltps %xmm10,%xmm11
Mike Kleinfb11acd2017-05-01 14:22:10 -040026939 .byte 68,15,40,37,155,16,0,0 // movaps 0x109b(%rip),%xmm12 # 4a70 <_sk_callback_sse2+0xd49>
Mike Klein0a904492017-04-12 12:52:48 -040026940 .byte 69,15,84,220 // andps %xmm12,%xmm11
26941 .byte 69,15,92,211 // subps %xmm11,%xmm10
26942 .byte 69,15,92,202 // subps %xmm10,%xmm9
26943 .byte 68,15,88,193 // addps %xmm1,%xmm8
26944 .byte 243,69,15,91,208 // cvttps2dq %xmm8,%xmm10
26945 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
26946 .byte 69,15,40,216 // movaps %xmm8,%xmm11
26947 .byte 69,15,194,218,1 // cmpltps %xmm10,%xmm11
26948 .byte 69,15,84,220 // andps %xmm12,%xmm11
26949 .byte 69,15,92,211 // subps %xmm11,%xmm10
26950 .byte 69,15,92,194 // subps %xmm10,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040026951 .byte 15,17,72,32 // movups %xmm1,0x20(%rax)
26952 .byte 68,15,17,72,64 // movups %xmm9,0x40(%rax)
26953 .byte 68,15,17,64,96 // movups %xmm8,0x60(%rax)
26954 .byte 72,173 // lods %ds:(%rsi),%rax
26955 .byte 255,224 // jmpq *%rax
26956
26957HIDDEN _sk_accumulate_sse2
26958.globl _sk_accumulate_sse2
Mike Klein86714282017-04-13 17:37:38 -040026959FUNCTION(_sk_accumulate_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026960_sk_accumulate_sse2:
26961 .byte 72,173 // lods %ds:(%rsi),%rax
26962 .byte 68,15,16,128,128,0,0,0 // movups 0x80(%rax),%xmm8
26963 .byte 68,15,16,136,160,0,0,0 // movups 0xa0(%rax),%xmm9
26964 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26965 .byte 69,15,40,193 // movaps %xmm9,%xmm8
26966 .byte 68,15,89,192 // mulps %xmm0,%xmm8
26967 .byte 65,15,88,224 // addps %xmm8,%xmm4
26968 .byte 69,15,40,193 // movaps %xmm9,%xmm8
26969 .byte 68,15,89,193 // mulps %xmm1,%xmm8
26970 .byte 65,15,88,232 // addps %xmm8,%xmm5
26971 .byte 69,15,40,193 // movaps %xmm9,%xmm8
26972 .byte 68,15,89,194 // mulps %xmm2,%xmm8
26973 .byte 65,15,88,240 // addps %xmm8,%xmm6
26974 .byte 68,15,89,203 // mulps %xmm3,%xmm9
26975 .byte 65,15,88,249 // addps %xmm9,%xmm7
26976 .byte 72,173 // lods %ds:(%rsi),%rax
26977 .byte 255,224 // jmpq *%rax
26978
26979HIDDEN _sk_bilinear_nx_sse2
26980.globl _sk_bilinear_nx_sse2
Mike Klein86714282017-04-13 17:37:38 -040026981FUNCTION(_sk_bilinear_nx_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026982_sk_bilinear_nx_sse2:
26983 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040026984 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040026985 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040026986 .byte 15,88,5,20,16,0,0 // addps 0x1014(%rip),%xmm0 # 4a80 <_sk_callback_sse2+0xd59>
26987 .byte 68,15,40,13,28,16,0,0 // movaps 0x101c(%rip),%xmm9 # 4a90 <_sk_callback_sse2+0xd69>
Mike Kleinfe560a82017-05-01 12:56:35 -040026988 .byte 69,15,92,200 // subps %xmm8,%xmm9
26989 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040026990 .byte 72,173 // lods %ds:(%rsi),%rax
26991 .byte 255,224 // jmpq *%rax
26992
26993HIDDEN _sk_bilinear_px_sse2
26994.globl _sk_bilinear_px_sse2
Mike Klein86714282017-04-13 17:37:38 -040026995FUNCTION(_sk_bilinear_px_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026996_sk_bilinear_px_sse2:
26997 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040026998 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040026999 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027000 .byte 15,88,5,11,16,0,0 // addps 0x100b(%rip),%xmm0 # 4aa0 <_sk_callback_sse2+0xd79>
Mike Kleinfe560a82017-05-01 12:56:35 -040027001 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040027002 .byte 72,173 // lods %ds:(%rsi),%rax
27003 .byte 255,224 // jmpq *%rax
27004
27005HIDDEN _sk_bilinear_ny_sse2
27006.globl _sk_bilinear_ny_sse2
Mike Klein86714282017-04-13 17:37:38 -040027007FUNCTION(_sk_bilinear_ny_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040027008_sk_bilinear_ny_sse2:
27009 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040027010 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040027011 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027012 .byte 15,88,13,253,15,0,0 // addps 0xffd(%rip),%xmm1 # 4ab0 <_sk_callback_sse2+0xd89>
27013 .byte 68,15,40,13,5,16,0,0 // movaps 0x1005(%rip),%xmm9 # 4ac0 <_sk_callback_sse2+0xd99>
Mike Kleinfe560a82017-05-01 12:56:35 -040027014 .byte 69,15,92,200 // subps %xmm8,%xmm9
27015 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040027016 .byte 72,173 // lods %ds:(%rsi),%rax
27017 .byte 255,224 // jmpq *%rax
27018
27019HIDDEN _sk_bilinear_py_sse2
27020.globl _sk_bilinear_py_sse2
Mike Klein86714282017-04-13 17:37:38 -040027021FUNCTION(_sk_bilinear_py_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040027022_sk_bilinear_py_sse2:
27023 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040027024 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040027025 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027026 .byte 15,88,13,243,15,0,0 // addps 0xff3(%rip),%xmm1 # 4ad0 <_sk_callback_sse2+0xda9>
Mike Kleinfe560a82017-05-01 12:56:35 -040027027 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040027028 .byte 72,173 // lods %ds:(%rsi),%rax
27029 .byte 255,224 // jmpq *%rax
27030
27031HIDDEN _sk_bicubic_n3x_sse2
27032.globl _sk_bicubic_n3x_sse2
Mike Klein86714282017-04-13 17:37:38 -040027033FUNCTION(_sk_bicubic_n3x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040027034_sk_bicubic_n3x_sse2:
27035 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040027036 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040027037 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027038 .byte 15,88,5,230,15,0,0 // addps 0xfe6(%rip),%xmm0 # 4ae0 <_sk_callback_sse2+0xdb9>
27039 .byte 68,15,40,13,238,15,0,0 // movaps 0xfee(%rip),%xmm9 # 4af0 <_sk_callback_sse2+0xdc9>
Mike Kleinfe560a82017-05-01 12:56:35 -040027040 .byte 69,15,92,200 // subps %xmm8,%xmm9
27041 .byte 69,15,40,193 // movaps %xmm9,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040027042 .byte 69,15,89,192 // mulps %xmm8,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027043 .byte 68,15,89,13,234,15,0,0 // mulps 0xfea(%rip),%xmm9 # 4b00 <_sk_callback_sse2+0xdd9>
27044 .byte 68,15,88,13,242,15,0,0 // addps 0xff2(%rip),%xmm9 # 4b10 <_sk_callback_sse2+0xde9>
Mike Klein0a904492017-04-12 12:52:48 -040027045 .byte 69,15,89,200 // mulps %xmm8,%xmm9
27046 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
27047 .byte 72,173 // lods %ds:(%rsi),%rax
27048 .byte 255,224 // jmpq *%rax
27049
27050HIDDEN _sk_bicubic_n1x_sse2
27051.globl _sk_bicubic_n1x_sse2
Mike Klein86714282017-04-13 17:37:38 -040027052FUNCTION(_sk_bicubic_n1x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040027053_sk_bicubic_n1x_sse2:
27054 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040027055 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040027056 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027057 .byte 15,88,5,225,15,0,0 // addps 0xfe1(%rip),%xmm0 # 4b20 <_sk_callback_sse2+0xdf9>
27058 .byte 68,15,40,13,233,15,0,0 // movaps 0xfe9(%rip),%xmm9 # 4b30 <_sk_callback_sse2+0xe09>
Mike Kleinfe560a82017-05-01 12:56:35 -040027059 .byte 69,15,92,200 // subps %xmm8,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040027060 .byte 68,15,40,5,237,15,0,0 // movaps 0xfed(%rip),%xmm8 # 4b40 <_sk_callback_sse2+0xe19>
Mike Kleinfe560a82017-05-01 12:56:35 -040027061 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027062 .byte 68,15,88,5,241,15,0,0 // addps 0xff1(%rip),%xmm8 # 4b50 <_sk_callback_sse2+0xe29>
Mike Kleinfe560a82017-05-01 12:56:35 -040027063 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027064 .byte 68,15,88,5,245,15,0,0 // addps 0xff5(%rip),%xmm8 # 4b60 <_sk_callback_sse2+0xe39>
Mike Kleinfe560a82017-05-01 12:56:35 -040027065 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027066 .byte 68,15,88,5,249,15,0,0 // addps 0xff9(%rip),%xmm8 # 4b70 <_sk_callback_sse2+0xe49>
Mike Kleinfe560a82017-05-01 12:56:35 -040027067 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040027068 .byte 72,173 // lods %ds:(%rsi),%rax
27069 .byte 255,224 // jmpq *%rax
27070
27071HIDDEN _sk_bicubic_p1x_sse2
27072.globl _sk_bicubic_p1x_sse2
Mike Klein86714282017-04-13 17:37:38 -040027073FUNCTION(_sk_bicubic_p1x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040027074_sk_bicubic_p1x_sse2:
27075 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040027076 .byte 68,15,40,5,243,15,0,0 // movaps 0xff3(%rip),%xmm8 # 4b80 <_sk_callback_sse2+0xe59>
Mike Klein0a904492017-04-12 12:52:48 -040027077 .byte 15,16,0 // movups (%rax),%xmm0
27078 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
27079 .byte 65,15,88,192 // addps %xmm8,%xmm0
Mike Kleinfb11acd2017-05-01 14:22:10 -040027080 .byte 68,15,40,21,239,15,0,0 // movaps 0xfef(%rip),%xmm10 # 4b90 <_sk_callback_sse2+0xe69>
Mike Klein0a904492017-04-12 12:52:48 -040027081 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040027082 .byte 68,15,88,21,243,15,0,0 // addps 0xff3(%rip),%xmm10 # 4ba0 <_sk_callback_sse2+0xe79>
Mike Klein0a904492017-04-12 12:52:48 -040027083 .byte 69,15,89,209 // mulps %xmm9,%xmm10
27084 .byte 69,15,88,208 // addps %xmm8,%xmm10
Mike Klein0a904492017-04-12 12:52:48 -040027085 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040027086 .byte 68,15,88,21,239,15,0,0 // addps 0xfef(%rip),%xmm10 # 4bb0 <_sk_callback_sse2+0xe89>
Mike Klein0a904492017-04-12 12:52:48 -040027087 .byte 68,15,17,144,128,0,0,0 // movups %xmm10,0x80(%rax)
27088 .byte 72,173 // lods %ds:(%rsi),%rax
27089 .byte 255,224 // jmpq *%rax
27090
27091HIDDEN _sk_bicubic_p3x_sse2
27092.globl _sk_bicubic_p3x_sse2
Mike Klein86714282017-04-13 17:37:38 -040027093FUNCTION(_sk_bicubic_p3x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040027094_sk_bicubic_p3x_sse2:
27095 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040027096 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040027097 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027098 .byte 15,88,5,226,15,0,0 // addps 0xfe2(%rip),%xmm0 # 4bc0 <_sk_callback_sse2+0xe99>
Mike Kleinfe560a82017-05-01 12:56:35 -040027099 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040027100 .byte 69,15,89,201 // mulps %xmm9,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040027101 .byte 68,15,89,5,226,15,0,0 // mulps 0xfe2(%rip),%xmm8 # 4bd0 <_sk_callback_sse2+0xea9>
27102 .byte 68,15,88,5,234,15,0,0 // addps 0xfea(%rip),%xmm8 # 4be0 <_sk_callback_sse2+0xeb9>
Mike Klein0a904492017-04-12 12:52:48 -040027103 .byte 69,15,89,193 // mulps %xmm9,%xmm8
27104 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
27105 .byte 72,173 // lods %ds:(%rsi),%rax
27106 .byte 255,224 // jmpq *%rax
27107
27108HIDDEN _sk_bicubic_n3y_sse2
27109.globl _sk_bicubic_n3y_sse2
Mike Klein86714282017-04-13 17:37:38 -040027110FUNCTION(_sk_bicubic_n3y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040027111_sk_bicubic_n3y_sse2:
27112 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040027113 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040027114 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027115 .byte 15,88,13,216,15,0,0 // addps 0xfd8(%rip),%xmm1 # 4bf0 <_sk_callback_sse2+0xec9>
27116 .byte 68,15,40,13,224,15,0,0 // movaps 0xfe0(%rip),%xmm9 # 4c00 <_sk_callback_sse2+0xed9>
Mike Kleinfe560a82017-05-01 12:56:35 -040027117 .byte 69,15,92,200 // subps %xmm8,%xmm9
27118 .byte 69,15,40,193 // movaps %xmm9,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040027119 .byte 69,15,89,192 // mulps %xmm8,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027120 .byte 68,15,89,13,220,15,0,0 // mulps 0xfdc(%rip),%xmm9 # 4c10 <_sk_callback_sse2+0xee9>
27121 .byte 68,15,88,13,228,15,0,0 // addps 0xfe4(%rip),%xmm9 # 4c20 <_sk_callback_sse2+0xef9>
Mike Klein0a904492017-04-12 12:52:48 -040027122 .byte 69,15,89,200 // mulps %xmm8,%xmm9
27123 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
27124 .byte 72,173 // lods %ds:(%rsi),%rax
27125 .byte 255,224 // jmpq *%rax
27126
27127HIDDEN _sk_bicubic_n1y_sse2
27128.globl _sk_bicubic_n1y_sse2
Mike Klein86714282017-04-13 17:37:38 -040027129FUNCTION(_sk_bicubic_n1y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040027130_sk_bicubic_n1y_sse2:
27131 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040027132 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040027133 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027134 .byte 15,88,13,210,15,0,0 // addps 0xfd2(%rip),%xmm1 # 4c30 <_sk_callback_sse2+0xf09>
27135 .byte 68,15,40,13,218,15,0,0 // movaps 0xfda(%rip),%xmm9 # 4c40 <_sk_callback_sse2+0xf19>
Mike Kleinfe560a82017-05-01 12:56:35 -040027136 .byte 69,15,92,200 // subps %xmm8,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040027137 .byte 68,15,40,5,222,15,0,0 // movaps 0xfde(%rip),%xmm8 # 4c50 <_sk_callback_sse2+0xf29>
Mike Kleinfe560a82017-05-01 12:56:35 -040027138 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027139 .byte 68,15,88,5,226,15,0,0 // addps 0xfe2(%rip),%xmm8 # 4c60 <_sk_callback_sse2+0xf39>
Mike Kleinfe560a82017-05-01 12:56:35 -040027140 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027141 .byte 68,15,88,5,230,15,0,0 // addps 0xfe6(%rip),%xmm8 # 4c70 <_sk_callback_sse2+0xf49>
Mike Kleinfe560a82017-05-01 12:56:35 -040027142 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027143 .byte 68,15,88,5,234,15,0,0 // addps 0xfea(%rip),%xmm8 # 4c80 <_sk_callback_sse2+0xf59>
Mike Kleinfe560a82017-05-01 12:56:35 -040027144 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040027145 .byte 72,173 // lods %ds:(%rsi),%rax
27146 .byte 255,224 // jmpq *%rax
27147
27148HIDDEN _sk_bicubic_p1y_sse2
27149.globl _sk_bicubic_p1y_sse2
Mike Klein86714282017-04-13 17:37:38 -040027150FUNCTION(_sk_bicubic_p1y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040027151_sk_bicubic_p1y_sse2:
27152 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfb11acd2017-05-01 14:22:10 -040027153 .byte 68,15,40,5,228,15,0,0 // movaps 0xfe4(%rip),%xmm8 # 4c90 <_sk_callback_sse2+0xf69>
Mike Klein0a904492017-04-12 12:52:48 -040027154 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
27155 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
27156 .byte 65,15,88,200 // addps %xmm8,%xmm1
Mike Kleinfb11acd2017-05-01 14:22:10 -040027157 .byte 68,15,40,21,223,15,0,0 // movaps 0xfdf(%rip),%xmm10 # 4ca0 <_sk_callback_sse2+0xf79>
Mike Klein0a904492017-04-12 12:52:48 -040027158 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040027159 .byte 68,15,88,21,227,15,0,0 // addps 0xfe3(%rip),%xmm10 # 4cb0 <_sk_callback_sse2+0xf89>
Mike Klein0a904492017-04-12 12:52:48 -040027160 .byte 69,15,89,209 // mulps %xmm9,%xmm10
27161 .byte 69,15,88,208 // addps %xmm8,%xmm10
Mike Klein0a904492017-04-12 12:52:48 -040027162 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Kleinfb11acd2017-05-01 14:22:10 -040027163 .byte 68,15,88,21,223,15,0,0 // addps 0xfdf(%rip),%xmm10 # 4cc0 <_sk_callback_sse2+0xf99>
Mike Klein0a904492017-04-12 12:52:48 -040027164 .byte 68,15,17,144,160,0,0,0 // movups %xmm10,0xa0(%rax)
27165 .byte 72,173 // lods %ds:(%rsi),%rax
27166 .byte 255,224 // jmpq *%rax
27167
27168HIDDEN _sk_bicubic_p3y_sse2
27169.globl _sk_bicubic_p3y_sse2
Mike Klein86714282017-04-13 17:37:38 -040027170FUNCTION(_sk_bicubic_p3y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040027171_sk_bicubic_p3y_sse2:
27172 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040027173 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040027174 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Kleinfb11acd2017-05-01 14:22:10 -040027175 .byte 15,88,13,209,15,0,0 // addps 0xfd1(%rip),%xmm1 # 4cd0 <_sk_callback_sse2+0xfa9>
Mike Kleinfe560a82017-05-01 12:56:35 -040027176 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040027177 .byte 69,15,89,201 // mulps %xmm9,%xmm9
Mike Kleinfb11acd2017-05-01 14:22:10 -040027178 .byte 68,15,89,5,209,15,0,0 // mulps 0xfd1(%rip),%xmm8 # 4ce0 <_sk_callback_sse2+0xfb9>
27179 .byte 68,15,88,5,217,15,0,0 // addps 0xfd9(%rip),%xmm8 # 4cf0 <_sk_callback_sse2+0xfc9>
Mike Klein0a904492017-04-12 12:52:48 -040027180 .byte 69,15,89,193 // mulps %xmm9,%xmm8
27181 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
27182 .byte 72,173 // lods %ds:(%rsi),%rax
27183 .byte 255,224 // jmpq *%rax
Mike Klein7fee90c2017-04-07 16:55:09 -040027184
27185HIDDEN _sk_callback_sse2
27186.globl _sk_callback_sse2
27187FUNCTION(_sk_callback_sse2)
27188_sk_callback_sse2:
27189 .byte 65,87 // push %r15
27190 .byte 65,86 // push %r14
Mike Kleinc17dc242017-04-20 16:21:57 -040027191 .byte 65,84 // push %r12
Mike Klein7fee90c2017-04-07 16:55:09 -040027192 .byte 83 // push %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040027193 .byte 72,131,236,72 // sub $0x48,%rsp
27194 .byte 15,41,124,36,48 // movaps %xmm7,0x30(%rsp)
27195 .byte 15,41,116,36,32 // movaps %xmm6,0x20(%rsp)
27196 .byte 15,41,108,36,16 // movaps %xmm5,0x10(%rsp)
27197 .byte 15,41,36,36 // movaps %xmm4,(%rsp)
Mike Klein7fee90c2017-04-07 16:55:09 -040027198 .byte 73,137,214 // mov %rdx,%r14
27199 .byte 73,137,255 // mov %rdi,%r15
27200 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinc17dc242017-04-20 16:21:57 -040027201 .byte 72,137,195 // mov %rax,%rbx
27202 .byte 73,137,244 // mov %rsi,%r12
27203 .byte 15,40,224 // movaps %xmm0,%xmm4
27204 .byte 15,20,225 // unpcklps %xmm1,%xmm4
27205 .byte 15,40,234 // movaps %xmm2,%xmm5
27206 .byte 15,20,235 // unpcklps %xmm3,%xmm5
27207 .byte 15,21,193 // unpckhps %xmm1,%xmm0
27208 .byte 15,21,211 // unpckhps %xmm3,%xmm2
27209 .byte 15,40,204 // movaps %xmm4,%xmm1
27210 .byte 102,15,20,205 // unpcklpd %xmm5,%xmm1
27211 .byte 15,18,236 // movhlps %xmm4,%xmm5
27212 .byte 15,40,216 // movaps %xmm0,%xmm3
27213 .byte 102,15,20,218 // unpcklpd %xmm2,%xmm3
27214 .byte 15,18,208 // movhlps %xmm0,%xmm2
27215 .byte 102,15,17,75,8 // movupd %xmm1,0x8(%rbx)
27216 .byte 15,17,107,24 // movups %xmm5,0x18(%rbx)
27217 .byte 102,15,17,91,40 // movupd %xmm3,0x28(%rbx)
27218 .byte 15,17,83,56 // movups %xmm2,0x38(%rbx)
Mike Klein7fee90c2017-04-07 16:55:09 -040027219 .byte 190,4,0,0,0 // mov $0x4,%esi
Mike Kleinc17dc242017-04-20 16:21:57 -040027220 .byte 72,137,223 // mov %rbx,%rdi
27221 .byte 255,19 // callq *(%rbx)
27222 .byte 72,139,131,136,0,0,0 // mov 0x88(%rbx),%rax
27223 .byte 15,16,32 // movups (%rax),%xmm4
27224 .byte 15,16,64,16 // movups 0x10(%rax),%xmm0
27225 .byte 15,16,88,32 // movups 0x20(%rax),%xmm3
27226 .byte 15,16,80,48 // movups 0x30(%rax),%xmm2
27227 .byte 15,40,236 // movaps %xmm4,%xmm5
27228 .byte 15,20,232 // unpcklps %xmm0,%xmm5
27229 .byte 15,40,203 // movaps %xmm3,%xmm1
27230 .byte 15,20,202 // unpcklps %xmm2,%xmm1
27231 .byte 15,21,224 // unpckhps %xmm0,%xmm4
27232 .byte 15,21,218 // unpckhps %xmm2,%xmm3
27233 .byte 15,40,197 // movaps %xmm5,%xmm0
27234 .byte 102,15,20,193 // unpcklpd %xmm1,%xmm0
27235 .byte 15,18,205 // movhlps %xmm5,%xmm1
27236 .byte 15,40,212 // movaps %xmm4,%xmm2
27237 .byte 102,15,20,211 // unpcklpd %xmm3,%xmm2
27238 .byte 15,18,220 // movhlps %xmm4,%xmm3
27239 .byte 76,137,230 // mov %r12,%rsi
Mike Klein7fee90c2017-04-07 16:55:09 -040027240 .byte 72,173 // lods %ds:(%rsi),%rax
27241 .byte 76,137,255 // mov %r15,%rdi
27242 .byte 76,137,242 // mov %r14,%rdx
Mike Kleinc17dc242017-04-20 16:21:57 -040027243 .byte 15,40,36,36 // movaps (%rsp),%xmm4
27244 .byte 15,40,108,36,16 // movaps 0x10(%rsp),%xmm5
27245 .byte 15,40,116,36,32 // movaps 0x20(%rsp),%xmm6
27246 .byte 15,40,124,36,48 // movaps 0x30(%rsp),%xmm7
27247 .byte 72,131,196,72 // add $0x48,%rsp
Mike Klein7fee90c2017-04-07 16:55:09 -040027248 .byte 91 // pop %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040027249 .byte 65,92 // pop %r12
Mike Klein7fee90c2017-04-07 16:55:09 -040027250 .byte 65,94 // pop %r14
27251 .byte 65,95 // pop %r15
27252 .byte 255,224 // jmpq *%rax
Mike Klein2229b572017-04-21 10:30:29 -040027253
27254BALIGN16
27255 .byte 0,0 // add %al,(%rax)
27256 .byte 0,63 // add %bh,(%rdi)
27257 .byte 0,0 // add %al,(%rax)
27258 .byte 0,63 // add %bh,(%rdi)
27259 .byte 0,0 // add %al,(%rax)
27260 .byte 0,63 // add %bh,(%rdi)
27261 .byte 0,0 // add %al,(%rax)
27262 .byte 0,63 // add %bh,(%rdi)
27263 .byte 0,0 // add %al,(%rax)
27264 .byte 128,63,0 // cmpb $0x0,(%rdi)
27265 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27266 .byte 63 // (bad)
27267 .byte 0,0 // add %al,(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040027268 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040027269 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27270 .byte 63 // (bad)
27271 .byte 0,0 // add %al,(%rax)
27272 .byte 128,63,0 // cmpb $0x0,(%rdi)
27273 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27274 .byte 63 // (bad)
27275 .byte 0,0 // add %al,(%rax)
27276 .byte 128,63,0 // cmpb $0x0,(%rdi)
27277 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27278 .byte 63 // (bad)
27279 .byte 0,0 // add %al,(%rax)
27280 .byte 128,63,0 // cmpb $0x0,(%rdi)
27281 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27282 .byte 63 // (bad)
27283 .byte 0,0 // add %al,(%rax)
27284 .byte 128,63,0 // cmpb $0x0,(%rdi)
27285 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27286 .byte 63 // (bad)
27287 .byte 0,0 // add %al,(%rax)
27288 .byte 128,63,0 // cmpb $0x0,(%rdi)
27289 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27290 .byte 63 // (bad)
27291 .byte 0,0 // add %al,(%rax)
27292 .byte 128,63,0 // cmpb $0x0,(%rdi)
27293 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27294 .byte 63 // (bad)
27295 .byte 0,0 // add %al,(%rax)
27296 .byte 128,63,0 // cmpb $0x0,(%rdi)
27297 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27298 .byte 63 // (bad)
27299 .byte 0,0 // add %al,(%rax)
27300 .byte 128,63,0 // cmpb $0x0,(%rdi)
27301 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27302 .byte 63 // (bad)
27303 .byte 0,0 // add %al,(%rax)
27304 .byte 128,63,0 // cmpb $0x0,(%rdi)
27305 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27306 .byte 63 // (bad)
27307 .byte 0,0 // add %al,(%rax)
27308 .byte 128,63,0 // cmpb $0x0,(%rdi)
27309 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27310 .byte 63 // (bad)
27311 .byte 0,0 // add %al,(%rax)
27312 .byte 128,63,0 // cmpb $0x0,(%rdi)
27313 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27314 .byte 63 // (bad)
27315 .byte 0,0 // add %al,(%rax)
27316 .byte 128,63,0 // cmpb $0x0,(%rdi)
27317 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27318 .byte 63 // (bad)
27319 .byte 0,0 // add %al,(%rax)
27320 .byte 128,63,0 // cmpb $0x0,(%rdi)
27321 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27322 .byte 63 // (bad)
27323 .byte 0,0 // add %al,(%rax)
27324 .byte 128,63,0 // cmpb $0x0,(%rdi)
27325 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27326 .byte 63 // (bad)
27327 .byte 0,0 // add %al,(%rax)
27328 .byte 128,63,0 // cmpb $0x0,(%rdi)
27329 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27330 .byte 63 // (bad)
27331 .byte 0,0 // add %al,(%rax)
27332 .byte 128,63,0 // cmpb $0x0,(%rdi)
27333 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27334 .byte 63 // (bad)
27335 .byte 0,0 // add %al,(%rax)
27336 .byte 128,63,0 // cmpb $0x0,(%rdi)
27337 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27338 .byte 63 // (bad)
27339 .byte 0,0 // add %al,(%rax)
27340 .byte 128,63,0 // cmpb $0x0,(%rdi)
27341 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27342 .byte 63 // (bad)
27343 .byte 0,0 // add %al,(%rax)
27344 .byte 128,63,0 // cmpb $0x0,(%rdi)
27345 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27346 .byte 63 // (bad)
27347 .byte 0,0 // add %al,(%rax)
27348 .byte 128,63,0 // cmpb $0x0,(%rdi)
27349 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27350 .byte 63 // (bad)
27351 .byte 0,0 // add %al,(%rax)
27352 .byte 128,63,0 // cmpb $0x0,(%rdi)
27353 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27354 .byte 63 // (bad)
27355 .byte 0,0 // add %al,(%rax)
27356 .byte 128,63,0 // cmpb $0x0,(%rdi)
27357 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27358 .byte 63 // (bad)
27359 .byte 0,0 // add %al,(%rax)
27360 .byte 128,191,0,0,128,191,0 // cmpb $0x0,-0x40800000(%rdi)
27361 .byte 0,128,191,0,0,128 // add %al,-0x7fffff41(%rax)
27362 .byte 191,0,0,224,64 // mov $0x40e00000,%edi
27363 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027364 .byte 224,64 // loopne 3f88 <.literal16+0x188>
Mike Kleinfe560a82017-05-01 12:56:35 -040027365 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027366 .byte 224,64 // loopne 3f8c <.literal16+0x18c>
Mike Kleinfe560a82017-05-01 12:56:35 -040027367 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027368 .byte 224,64 // loopne 3f90 <.literal16+0x190>
Mike Kleinfe560a82017-05-01 12:56:35 -040027369 .byte 0,0 // add %al,(%rax)
27370 .byte 128,63,0 // cmpb $0x0,(%rdi)
27371 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27372 .byte 63 // (bad)
27373 .byte 0,0 // add %al,(%rax)
27374 .byte 128,63,0 // cmpb $0x0,(%rdi)
27375 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27376 .byte 63 // (bad)
27377 .byte 0,0 // add %al,(%rax)
27378 .byte 128,63,0 // cmpb $0x0,(%rdi)
27379 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27380 .byte 63 // (bad)
27381 .byte 0,0 // add %al,(%rax)
27382 .byte 128,63,0 // cmpb $0x0,(%rdi)
27383 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27384 .byte 63 // (bad)
27385 .byte 145 // xchg %eax,%ecx
27386 .byte 131,158,61,145,131,158,61 // sbbl $0x3d,-0x617c6ec3(%rsi)
27387 .byte 145 // xchg %eax,%ecx
27388 .byte 131,158,61,145,131,158,61 // sbbl $0x3d,-0x617c6ec3(%rsi)
27389 .byte 154 // (bad)
27390 .byte 153 // cltd
27391 .byte 153 // cltd
27392 .byte 62,154 // ds (bad)
27393 .byte 153 // cltd
27394 .byte 153 // cltd
27395 .byte 62,154 // ds (bad)
27396 .byte 153 // cltd
27397 .byte 153 // cltd
27398 .byte 62,154 // ds (bad)
27399 .byte 153 // cltd
27400 .byte 153 // cltd
27401 .byte 62,92 // ds pop %rsp
27402 .byte 143 // (bad)
27403 .byte 50,63 // xor (%rdi),%bh
27404 .byte 92 // pop %rsp
27405 .byte 143 // (bad)
27406 .byte 50,63 // xor (%rdi),%bh
27407 .byte 92 // pop %rsp
27408 .byte 143 // (bad)
27409 .byte 50,63 // xor (%rdi),%bh
27410 .byte 92 // pop %rsp
27411 .byte 143 // (bad)
27412 .byte 50,63 // xor (%rdi),%bh
27413 .byte 10,215 // or %bh,%dl
27414 .byte 35,59 // and (%rbx),%edi
27415 .byte 10,215 // or %bh,%dl
27416 .byte 35,59 // and (%rbx),%edi
27417 .byte 10,215 // or %bh,%dl
27418 .byte 35,59 // and (%rbx),%edi
27419 .byte 10,215 // or %bh,%dl
27420 .byte 35,59 // and (%rbx),%edi
27421 .byte 174 // scas %es:(%rdi),%al
27422 .byte 71,97 // rex.RXB (bad)
27423 .byte 61,174,71,97,61 // cmp $0x3d6147ae,%eax
27424 .byte 174 // scas %es:(%rdi),%al
27425 .byte 71,97 // rex.RXB (bad)
27426 .byte 61,174,71,97,61 // cmp $0x3d6147ae,%eax
27427 .byte 41,92,71,65 // sub %ebx,0x41(%rdi,%rax,2)
27428 .byte 41,92,71,65 // sub %ebx,0x41(%rdi,%rax,2)
27429 .byte 41,92,71,65 // sub %ebx,0x41(%rdi,%rax,2)
27430 .byte 41,92,71,65 // sub %ebx,0x41(%rdi,%rax,2)
27431 .byte 206 // (bad)
27432 .byte 111 // outsl %ds:(%rsi),(%dx)
27433 .byte 48,63 // xor %bh,(%rdi)
27434 .byte 206 // (bad)
27435 .byte 111 // outsl %ds:(%rsi),(%dx)
27436 .byte 48,63 // xor %bh,(%rdi)
27437 .byte 206 // (bad)
27438 .byte 111 // outsl %ds:(%rsi),(%dx)
27439 .byte 48,63 // xor %bh,(%rdi)
27440 .byte 206 // (bad)
27441 .byte 111 // outsl %ds:(%rsi),(%dx)
27442 .byte 48,63 // xor %bh,(%rdi)
27443 .byte 168,87 // test $0x57,%al
27444 .byte 202,189,168 // lret $0xa8bd
27445 .byte 87 // push %rdi
27446 .byte 202,189,168 // lret $0xa8bd
27447 .byte 87 // push %rdi
27448 .byte 202,189,168 // lret $0xa8bd
27449 .byte 87 // push %rdi
27450 .byte 202,189,194 // lret $0xc2bd
27451 .byte 135,210 // xchg %edx,%edx
27452 .byte 62,194,135,210 // ds retq $0xd287
27453 .byte 62,194,135,210 // ds retq $0xd287
27454 .byte 62,194,135,210 // ds retq $0xd287
27455 .byte 62,0,0 // add %al,%ds:(%rax)
27456 .byte 128,63,0 // cmpb $0x0,(%rdi)
27457 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27458 .byte 63 // (bad)
27459 .byte 0,0 // add %al,(%rax)
27460 .byte 128,63,4 // cmpb $0x4,(%rdi)
27461 .byte 231,140 // out %eax,$0x8c
27462 .byte 59,4,231 // cmp (%rdi,%riz,8),%eax
27463 .byte 140,59 // mov %?,(%rbx)
27464 .byte 4,231 // add $0xe7,%al
27465 .byte 140,59 // mov %?,(%rbx)
27466 .byte 4,231 // add $0xe7,%al
27467 .byte 140,59 // mov %?,(%rbx)
27468 .byte 0,0 // add %al,(%rax)
27469 .byte 128,63,0 // cmpb $0x0,(%rdi)
27470 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27471 .byte 63 // (bad)
27472 .byte 0,0 // add %al,(%rax)
27473 .byte 128,63,0 // cmpb $0x0,(%rdi)
27474 .byte 0,192 // add %al,%al
27475 .byte 64,0,0 // add %al,(%rax)
27476 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
27477 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
27478 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
27479 .byte 0,64,0 // add %al,0x0(%rax)
27480 .byte 0,0 // add %al,(%rax)
27481 .byte 64,0,0 // add %al,(%rax)
27482 .byte 0,64,0 // add %al,0x0(%rax)
27483 .byte 0,0 // add %al,(%rax)
27484 .byte 64,0,0 // add %al,(%rax)
27485 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
27486 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
27487 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
27488 .byte 128,64,171,170 // addb $0xaa,-0x55(%rax)
27489 .byte 42,62 // sub (%rsi),%bh
27490 .byte 171 // stos %eax,%es:(%rdi)
27491 .byte 170 // stos %al,%es:(%rdi)
27492 .byte 42,62 // sub (%rsi),%bh
27493 .byte 171 // stos %eax,%es:(%rdi)
27494 .byte 170 // stos %al,%es:(%rdi)
27495 .byte 42,62 // sub (%rsi),%bh
27496 .byte 171 // stos %eax,%es:(%rdi)
27497 .byte 170 // stos %al,%es:(%rdi)
27498 .byte 42,62 // sub (%rsi),%bh
27499 .byte 0,0 // add %al,(%rax)
27500 .byte 0,63 // add %bh,(%rdi)
27501 .byte 0,0 // add %al,(%rax)
27502 .byte 0,63 // add %bh,(%rdi)
27503 .byte 0,0 // add %al,(%rax)
27504 .byte 0,63 // add %bh,(%rdi)
27505 .byte 0,0 // add %al,(%rax)
27506 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027507 .byte 0,0 // add %al,(%rax)
27508 .byte 128,63,0 // cmpb $0x0,(%rdi)
27509 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27510 .byte 63 // (bad)
27511 .byte 0,0 // add %al,(%rax)
27512 .byte 128,63,171 // cmpb $0xab,(%rdi)
27513 .byte 170 // stos %al,%es:(%rdi)
27514 .byte 170 // stos %al,%es:(%rdi)
27515 .byte 62,171 // ds stos %eax,%es:(%rdi)
27516 .byte 170 // stos %al,%es:(%rdi)
27517 .byte 170 // stos %al,%es:(%rdi)
27518 .byte 62,171 // ds stos %eax,%es:(%rdi)
27519 .byte 170 // stos %al,%es:(%rdi)
27520 .byte 170 // stos %al,%es:(%rdi)
27521 .byte 62,171 // ds stos %eax,%es:(%rdi)
27522 .byte 170 // stos %al,%es:(%rdi)
27523 .byte 170 // stos %al,%es:(%rdi)
27524 .byte 62,0,0 // add %al,%ds:(%rax)
27525 .byte 128,191,0,0,128,191,0 // cmpb $0x0,-0x40800000(%rdi)
27526 .byte 0,128,191,0,0,128 // add %al,-0x7fffff41(%rax)
27527 .byte 191,0,0,192,64 // mov $0x40c00000,%edi
27528 .byte 0,0 // add %al,(%rax)
27529 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
27530 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
27531 .byte 192,64,171,170 // rolb $0xaa,-0x55(%rax)
27532 .byte 42,63 // sub (%rdi),%bh
27533 .byte 171 // stos %eax,%es:(%rdi)
27534 .byte 170 // stos %al,%es:(%rdi)
27535 .byte 42,63 // sub (%rdi),%bh
27536 .byte 171 // stos %eax,%es:(%rdi)
27537 .byte 170 // stos %al,%es:(%rdi)
27538 .byte 42,63 // sub (%rdi),%bh
27539 .byte 171 // stos %eax,%es:(%rdi)
27540 .byte 170 // stos %al,%es:(%rdi)
27541 .byte 42,63 // sub (%rdi),%bh
27542 .byte 171 // stos %eax,%es:(%rdi)
27543 .byte 170 // stos %al,%es:(%rdi)
27544 .byte 170 // stos %al,%es:(%rdi)
27545 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
27546 .byte 171 // stos %eax,%es:(%rdi)
27547 .byte 170 // stos %al,%es:(%rdi)
27548 .byte 170 // stos %al,%es:(%rdi)
27549 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
Mike Kleinfe560a82017-05-01 12:56:35 -040027550 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
27551 .byte 128,59,129 // cmpb $0x81,(%rbx)
27552 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
27553 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
27554 .byte 128,59,0 // cmpb $0x0,(%rbx)
Mike Klein308e6242017-04-27 13:56:33 -040027555 .byte 248 // clc
27556 .byte 0,0 // add %al,(%rax)
27557 .byte 0,248 // add %bh,%al
27558 .byte 0,0 // add %al,(%rax)
27559 .byte 0,248 // add %bh,%al
27560 .byte 0,0 // add %al,(%rax)
27561 .byte 0,248 // add %bh,%al
27562 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040027563 .byte 8,33 // or %ah,(%rcx)
27564 .byte 132,55 // test %dh,(%rdi)
27565 .byte 8,33 // or %ah,(%rcx)
27566 .byte 132,55 // test %dh,(%rdi)
27567 .byte 8,33 // or %ah,(%rcx)
27568 .byte 132,55 // test %dh,(%rdi)
27569 .byte 8,33 // or %ah,(%rcx)
27570 .byte 132,55 // test %dh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027571 .byte 224,7 // loopne 4139 <.literal16+0x339>
Mike Klein308e6242017-04-27 13:56:33 -040027572 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027573 .byte 224,7 // loopne 413d <.literal16+0x33d>
Mike Klein308e6242017-04-27 13:56:33 -040027574 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027575 .byte 224,7 // loopne 4141 <.literal16+0x341>
Mike Klein308e6242017-04-27 13:56:33 -040027576 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027577 .byte 224,7 // loopne 4145 <.literal16+0x345>
Mike Klein308e6242017-04-27 13:56:33 -040027578 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040027579 .byte 33,8 // and %ecx,(%rax)
27580 .byte 2,58 // add (%rdx),%bh
27581 .byte 33,8 // and %ecx,(%rax)
27582 .byte 2,58 // add (%rdx),%bh
27583 .byte 33,8 // and %ecx,(%rax)
27584 .byte 2,58 // add (%rdx),%bh
27585 .byte 33,8 // and %ecx,(%rax)
27586 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040027587 .byte 31 // (bad)
27588 .byte 0,0 // add %al,(%rax)
27589 .byte 0,31 // add %bl,(%rdi)
27590 .byte 0,0 // add %al,(%rax)
27591 .byte 0,31 // add %bl,(%rdi)
27592 .byte 0,0 // add %al,(%rax)
27593 .byte 0,31 // add %bl,(%rdi)
27594 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040027595 .byte 0,8 // add %cl,(%rax)
27596 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
27597 .byte 8,33 // or %ah,(%rcx)
27598 .byte 4,61 // add $0x3d,%al
27599 .byte 8,33 // or %ah,(%rcx)
27600 .byte 4,61 // add $0x3d,%al
27601 .byte 0,0 // add %al,(%rax)
27602 .byte 128,63,0 // cmpb $0x0,(%rdi)
27603 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27604 .byte 63 // (bad)
27605 .byte 0,0 // add %al,(%rax)
27606 .byte 128,63,255 // cmpb $0xff,(%rdi)
Mike Klein0aa742f2017-04-27 13:36:57 -040027607 .byte 0,0 // add %al,(%rax)
27608 .byte 0,255 // add %bh,%bh
27609 .byte 0,0 // add %al,(%rax)
27610 .byte 0,255 // add %bh,%bh
27611 .byte 0,0 // add %al,(%rax)
27612 .byte 0,255 // add %bh,%bh
27613 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040027614 .byte 0,129,128,128,59,129 // add %al,-0x7ec47f80(%rcx)
27615 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
27616 .byte 129,128,128,59,255,0,255,0,255,0 // addl $0xff00ff,0xff3b80(%rax)
27617 .byte 255,0 // incl (%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040027618 .byte 0,0 // add %al,(%rax)
27619 .byte 0,0 // add %al,(%rax)
27620 .byte 0,0 // add %al,(%rax)
27621 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040027622 .byte 128,0,128 // addb $0x80,(%rax)
27623 .byte 55 // (bad)
27624 .byte 128,0,128 // addb $0x80,(%rax)
27625 .byte 55 // (bad)
27626 .byte 128,0,128 // addb $0x80,(%rax)
27627 .byte 55 // (bad)
27628 .byte 128,0,128 // addb $0x80,(%rax)
27629 .byte 55 // (bad)
27630 .byte 255,0 // incl (%rax)
27631 .byte 255,0 // incl (%rax)
27632 .byte 255,0 // incl (%rax)
27633 .byte 255,0 // incl (%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040027634 .byte 0,0 // add %al,(%rax)
27635 .byte 0,0 // add %al,(%rax)
27636 .byte 0,0 // add %al,(%rax)
27637 .byte 0,0 // add %al,(%rax)
27638 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040027639 .byte 128,63,0 // cmpb $0x0,(%rdi)
27640 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27641 .byte 63 // (bad)
27642 .byte 0,0 // add %al,(%rax)
27643 .byte 128,63,0 // cmpb $0x0,(%rdi)
27644 .byte 0,127,67 // add %bh,0x43(%rdi)
27645 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027646 .byte 127,67 // jg 422b <.literal16+0x42b>
Mike Kleinfe560a82017-05-01 12:56:35 -040027647 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027648 .byte 127,67 // jg 422f <.literal16+0x42f>
Mike Kleinfe560a82017-05-01 12:56:35 -040027649 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027650 .byte 127,67 // jg 4233 <.literal16+0x433>
Mike Kleinfe560a82017-05-01 12:56:35 -040027651 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
27652 .byte 128,59,129 // cmpb $0x81,(%rbx)
27653 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
27654 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
27655 .byte 128,59,0 // cmpb $0x0,(%rbx)
Mike Kleinb4bbc642017-04-27 08:59:55 -040027656 .byte 0,0 // add %al,(%rax)
27657 .byte 52,0 // xor $0x0,%al
27658 .byte 0,0 // add %al,(%rax)
27659 .byte 52,0 // xor $0x0,%al
27660 .byte 0,0 // add %al,(%rax)
27661 .byte 52,0 // xor $0x0,%al
27662 .byte 0,0 // add %al,(%rax)
27663 .byte 52,255 // xor $0xff,%al
27664 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027665 .byte 127,0 // jg 4224 <.literal16+0x424>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027666 .byte 255 // (bad)
27667 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027668 .byte 127,0 // jg 4228 <.literal16+0x428>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027669 .byte 255 // (bad)
27670 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027671 .byte 127,0 // jg 422c <.literal16+0x42c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027672 .byte 255 // (bad)
27673 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027674 .byte 127,0 // jg 4230 <.literal16+0x430>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027675 .byte 0,0 // add %al,(%rax)
27676 .byte 0,63 // add %bh,(%rdi)
27677 .byte 0,0 // add %al,(%rax)
27678 .byte 0,63 // add %bh,(%rdi)
27679 .byte 0,0 // add %al,(%rax)
27680 .byte 0,63 // add %bh,(%rdi)
27681 .byte 0,0 // add %al,(%rax)
27682 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027683 .byte 119,115 // ja 42b5 <.literal16+0x4b5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027684 .byte 248 // clc
27685 .byte 194,119,115 // retq $0x7377
27686 .byte 248 // clc
27687 .byte 194,119,115 // retq $0x7377
27688 .byte 248 // clc
27689 .byte 194,119,115 // retq $0x7377
27690 .byte 248 // clc
27691 .byte 194,117,191 // retq $0xbf75
27692 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
27693 .byte 63 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027694 .byte 117,191 // jne 4219 <.literal16+0x419>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027695 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
27696 .byte 63 // (bad)
27697 .byte 249 // stc
27698 .byte 68,180,62 // rex.R mov $0x3e,%spl
27699 .byte 249 // stc
27700 .byte 68,180,62 // rex.R mov $0x3e,%spl
27701 .byte 249 // stc
27702 .byte 68,180,62 // rex.R mov $0x3e,%spl
27703 .byte 249 // stc
27704 .byte 68,180,62 // rex.R mov $0x3e,%spl
27705 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Kleinfb11acd2017-05-01 14:22:10 -040027706 .byte 233,220,63,163,233 // jmpq ffffffffe9a3825a <_sk_callback_sse2+0xffffffffe9a34533>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027707 .byte 220,63 // fdivrl (%rdi)
27708 .byte 0,0 // add %al,(%rax)
27709 .byte 128,63,0 // cmpb $0x0,(%rdi)
27710 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27711 .byte 63 // (bad)
27712 .byte 0,0 // add %al,(%rax)
27713 .byte 128,63,81 // cmpb $0x51,(%rdi)
27714 .byte 140,242 // mov %?,%edx
27715 .byte 66,81 // rex.X push %rcx
27716 .byte 140,242 // mov %?,%edx
27717 .byte 66,81 // rex.X push %rcx
27718 .byte 140,242 // mov %?,%edx
27719 .byte 66,81 // rex.X push %rcx
27720 .byte 140,242 // mov %?,%edx
27721 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
27722 .byte 63 // (bad)
27723 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
27724 .byte 63 // (bad)
27725 .byte 248 // clc
27726 .byte 245 // cmc
27727 .byte 154 // (bad)
27728 .byte 64,248 // rex clc
27729 .byte 245 // cmc
27730 .byte 154 // (bad)
27731 .byte 64,248 // rex clc
27732 .byte 245 // cmc
27733 .byte 154 // (bad)
27734 .byte 64,248 // rex clc
27735 .byte 245 // cmc
27736 .byte 154 // (bad)
27737 .byte 64,254 // rex (bad)
27738 .byte 210,221 // rcr %cl,%ch
27739 .byte 65,254 // rex.B (bad)
27740 .byte 210,221 // rcr %cl,%ch
27741 .byte 65,254 // rex.B (bad)
27742 .byte 210,221 // rcr %cl,%ch
27743 .byte 65,254 // rex.B (bad)
27744 .byte 210,221 // rcr %cl,%ch
27745 .byte 65,0,0 // add %al,(%r8)
27746 .byte 0,75,0 // add %cl,0x0(%rbx)
27747 .byte 0,0 // add %al,(%rax)
27748 .byte 75,0,0 // rex.WXB add %al,(%r8)
27749 .byte 0,75,0 // add %cl,0x0(%rbx)
27750 .byte 0,0 // add %al,(%rax)
27751 .byte 75,0,0 // rex.WXB add %al,(%r8)
27752 .byte 0,52,0 // add %dh,(%rax,%rax,1)
27753 .byte 0,0 // add %al,(%rax)
27754 .byte 52,0 // xor $0x0,%al
27755 .byte 0,0 // add %al,(%rax)
27756 .byte 52,0 // xor $0x0,%al
27757 .byte 0,0 // add %al,(%rax)
27758 .byte 52,255 // xor $0xff,%al
27759 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027760 .byte 127,0 // jg 42f4 <.literal16+0x4f4>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027761 .byte 255 // (bad)
27762 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027763 .byte 127,0 // jg 42f8 <.literal16+0x4f8>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027764 .byte 255 // (bad)
27765 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027766 .byte 127,0 // jg 42fc <.literal16+0x4fc>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027767 .byte 255 // (bad)
27768 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027769 .byte 127,0 // jg 4300 <.literal16+0x500>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027770 .byte 0,0 // add %al,(%rax)
27771 .byte 0,63 // add %bh,(%rdi)
27772 .byte 0,0 // add %al,(%rax)
27773 .byte 0,63 // add %bh,(%rdi)
27774 .byte 0,0 // add %al,(%rax)
27775 .byte 0,63 // add %bh,(%rdi)
27776 .byte 0,0 // add %al,(%rax)
27777 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027778 .byte 119,115 // ja 4385 <.literal16+0x585>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027779 .byte 248 // clc
27780 .byte 194,119,115 // retq $0x7377
27781 .byte 248 // clc
27782 .byte 194,119,115 // retq $0x7377
27783 .byte 248 // clc
27784 .byte 194,119,115 // retq $0x7377
27785 .byte 248 // clc
27786 .byte 194,117,191 // retq $0xbf75
27787 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
27788 .byte 63 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027789 .byte 117,191 // jne 42e9 <.literal16+0x4e9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027790 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
27791 .byte 63 // (bad)
27792 .byte 249 // stc
27793 .byte 68,180,62 // rex.R mov $0x3e,%spl
27794 .byte 249 // stc
27795 .byte 68,180,62 // rex.R mov $0x3e,%spl
27796 .byte 249 // stc
27797 .byte 68,180,62 // rex.R mov $0x3e,%spl
27798 .byte 249 // stc
27799 .byte 68,180,62 // rex.R mov $0x3e,%spl
27800 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Kleinfb11acd2017-05-01 14:22:10 -040027801 .byte 233,220,63,163,233 // jmpq ffffffffe9a3832a <_sk_callback_sse2+0xffffffffe9a34603>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027802 .byte 220,63 // fdivrl (%rdi)
27803 .byte 0,0 // add %al,(%rax)
27804 .byte 128,63,0 // cmpb $0x0,(%rdi)
27805 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27806 .byte 63 // (bad)
27807 .byte 0,0 // add %al,(%rax)
27808 .byte 128,63,81 // cmpb $0x51,(%rdi)
27809 .byte 140,242 // mov %?,%edx
27810 .byte 66,81 // rex.X push %rcx
27811 .byte 140,242 // mov %?,%edx
27812 .byte 66,81 // rex.X push %rcx
27813 .byte 140,242 // mov %?,%edx
27814 .byte 66,81 // rex.X push %rcx
27815 .byte 140,242 // mov %?,%edx
27816 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
27817 .byte 63 // (bad)
27818 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
27819 .byte 63 // (bad)
27820 .byte 248 // clc
27821 .byte 245 // cmc
27822 .byte 154 // (bad)
27823 .byte 64,248 // rex clc
27824 .byte 245 // cmc
27825 .byte 154 // (bad)
27826 .byte 64,248 // rex clc
27827 .byte 245 // cmc
27828 .byte 154 // (bad)
27829 .byte 64,248 // rex clc
27830 .byte 245 // cmc
27831 .byte 154 // (bad)
27832 .byte 64,254 // rex (bad)
27833 .byte 210,221 // rcr %cl,%ch
27834 .byte 65,254 // rex.B (bad)
27835 .byte 210,221 // rcr %cl,%ch
27836 .byte 65,254 // rex.B (bad)
27837 .byte 210,221 // rcr %cl,%ch
27838 .byte 65,254 // rex.B (bad)
27839 .byte 210,221 // rcr %cl,%ch
27840 .byte 65,0,0 // add %al,(%r8)
27841 .byte 0,75,0 // add %cl,0x0(%rbx)
27842 .byte 0,0 // add %al,(%rax)
27843 .byte 75,0,0 // rex.WXB add %al,(%r8)
27844 .byte 0,75,0 // add %cl,0x0(%rbx)
27845 .byte 0,0 // add %al,(%rax)
27846 .byte 75,0,0 // rex.WXB add %al,(%r8)
27847 .byte 0,52,0 // add %dh,(%rax,%rax,1)
27848 .byte 0,0 // add %al,(%rax)
27849 .byte 52,0 // xor $0x0,%al
27850 .byte 0,0 // add %al,(%rax)
27851 .byte 52,0 // xor $0x0,%al
27852 .byte 0,0 // add %al,(%rax)
27853 .byte 52,255 // xor $0xff,%al
27854 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027855 .byte 127,0 // jg 43c4 <.literal16+0x5c4>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027856 .byte 255 // (bad)
27857 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027858 .byte 127,0 // jg 43c8 <.literal16+0x5c8>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027859 .byte 255 // (bad)
27860 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027861 .byte 127,0 // jg 43cc <.literal16+0x5cc>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027862 .byte 255 // (bad)
27863 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027864 .byte 127,0 // jg 43d0 <.literal16+0x5d0>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027865 .byte 0,0 // add %al,(%rax)
27866 .byte 0,63 // add %bh,(%rdi)
27867 .byte 0,0 // add %al,(%rax)
27868 .byte 0,63 // add %bh,(%rdi)
27869 .byte 0,0 // add %al,(%rax)
27870 .byte 0,63 // add %bh,(%rdi)
27871 .byte 0,0 // add %al,(%rax)
27872 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027873 .byte 119,115 // ja 4455 <.literal16+0x655>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027874 .byte 248 // clc
27875 .byte 194,119,115 // retq $0x7377
27876 .byte 248 // clc
27877 .byte 194,119,115 // retq $0x7377
27878 .byte 248 // clc
27879 .byte 194,119,115 // retq $0x7377
27880 .byte 248 // clc
27881 .byte 194,117,191 // retq $0xbf75
27882 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
27883 .byte 63 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027884 .byte 117,191 // jne 43b9 <.literal16+0x5b9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027885 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
27886 .byte 63 // (bad)
27887 .byte 249 // stc
27888 .byte 68,180,62 // rex.R mov $0x3e,%spl
27889 .byte 249 // stc
27890 .byte 68,180,62 // rex.R mov $0x3e,%spl
27891 .byte 249 // stc
27892 .byte 68,180,62 // rex.R mov $0x3e,%spl
27893 .byte 249 // stc
27894 .byte 68,180,62 // rex.R mov $0x3e,%spl
27895 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Kleinfb11acd2017-05-01 14:22:10 -040027896 .byte 233,220,63,163,233 // jmpq ffffffffe9a383fa <_sk_callback_sse2+0xffffffffe9a346d3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027897 .byte 220,63 // fdivrl (%rdi)
27898 .byte 0,0 // add %al,(%rax)
27899 .byte 128,63,0 // cmpb $0x0,(%rdi)
27900 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27901 .byte 63 // (bad)
27902 .byte 0,0 // add %al,(%rax)
27903 .byte 128,63,81 // cmpb $0x51,(%rdi)
27904 .byte 140,242 // mov %?,%edx
27905 .byte 66,81 // rex.X push %rcx
27906 .byte 140,242 // mov %?,%edx
27907 .byte 66,81 // rex.X push %rcx
27908 .byte 140,242 // mov %?,%edx
27909 .byte 66,81 // rex.X push %rcx
27910 .byte 140,242 // mov %?,%edx
27911 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
27912 .byte 63 // (bad)
27913 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
27914 .byte 63 // (bad)
27915 .byte 248 // clc
27916 .byte 245 // cmc
27917 .byte 154 // (bad)
27918 .byte 64,248 // rex clc
27919 .byte 245 // cmc
27920 .byte 154 // (bad)
27921 .byte 64,248 // rex clc
27922 .byte 245 // cmc
27923 .byte 154 // (bad)
27924 .byte 64,248 // rex clc
27925 .byte 245 // cmc
27926 .byte 154 // (bad)
27927 .byte 64,254 // rex (bad)
27928 .byte 210,221 // rcr %cl,%ch
27929 .byte 65,254 // rex.B (bad)
27930 .byte 210,221 // rcr %cl,%ch
27931 .byte 65,254 // rex.B (bad)
27932 .byte 210,221 // rcr %cl,%ch
27933 .byte 65,254 // rex.B (bad)
27934 .byte 210,221 // rcr %cl,%ch
27935 .byte 65,0,0 // add %al,(%r8)
27936 .byte 0,75,0 // add %cl,0x0(%rbx)
27937 .byte 0,0 // add %al,(%rax)
27938 .byte 75,0,0 // rex.WXB add %al,(%r8)
27939 .byte 0,75,0 // add %cl,0x0(%rbx)
27940 .byte 0,0 // add %al,(%rax)
27941 .byte 75,0,0 // rex.WXB add %al,(%r8)
27942 .byte 0,52,0 // add %dh,(%rax,%rax,1)
27943 .byte 0,0 // add %al,(%rax)
27944 .byte 52,0 // xor $0x0,%al
27945 .byte 0,0 // add %al,(%rax)
27946 .byte 52,0 // xor $0x0,%al
27947 .byte 0,0 // add %al,(%rax)
27948 .byte 52,255 // xor $0xff,%al
27949 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027950 .byte 127,0 // jg 4494 <.literal16+0x694>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027951 .byte 255 // (bad)
27952 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027953 .byte 127,0 // jg 4498 <.literal16+0x698>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027954 .byte 255 // (bad)
27955 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027956 .byte 127,0 // jg 449c <.literal16+0x69c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027957 .byte 255 // (bad)
27958 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027959 .byte 127,0 // jg 44a0 <.literal16+0x6a0>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027960 .byte 0,0 // add %al,(%rax)
27961 .byte 0,63 // add %bh,(%rdi)
27962 .byte 0,0 // add %al,(%rax)
27963 .byte 0,63 // add %bh,(%rdi)
27964 .byte 0,0 // add %al,(%rax)
27965 .byte 0,63 // add %bh,(%rdi)
27966 .byte 0,0 // add %al,(%rax)
27967 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027968 .byte 119,115 // ja 4525 <.literal16+0x725>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027969 .byte 248 // clc
27970 .byte 194,119,115 // retq $0x7377
27971 .byte 248 // clc
27972 .byte 194,119,115 // retq $0x7377
27973 .byte 248 // clc
27974 .byte 194,119,115 // retq $0x7377
27975 .byte 248 // clc
27976 .byte 194,117,191 // retq $0xbf75
27977 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
27978 .byte 63 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040027979 .byte 117,191 // jne 4489 <.literal16+0x689>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027980 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
27981 .byte 63 // (bad)
27982 .byte 249 // stc
27983 .byte 68,180,62 // rex.R mov $0x3e,%spl
27984 .byte 249 // stc
27985 .byte 68,180,62 // rex.R mov $0x3e,%spl
27986 .byte 249 // stc
27987 .byte 68,180,62 // rex.R mov $0x3e,%spl
27988 .byte 249 // stc
27989 .byte 68,180,62 // rex.R mov $0x3e,%spl
27990 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Kleinfb11acd2017-05-01 14:22:10 -040027991 .byte 233,220,63,163,233 // jmpq ffffffffe9a384ca <_sk_callback_sse2+0xffffffffe9a347a3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040027992 .byte 220,63 // fdivrl (%rdi)
27993 .byte 0,0 // add %al,(%rax)
27994 .byte 128,63,0 // cmpb $0x0,(%rdi)
27995 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27996 .byte 63 // (bad)
27997 .byte 0,0 // add %al,(%rax)
27998 .byte 128,63,81 // cmpb $0x51,(%rdi)
27999 .byte 140,242 // mov %?,%edx
28000 .byte 66,81 // rex.X push %rcx
28001 .byte 140,242 // mov %?,%edx
28002 .byte 66,81 // rex.X push %rcx
28003 .byte 140,242 // mov %?,%edx
28004 .byte 66,81 // rex.X push %rcx
28005 .byte 140,242 // mov %?,%edx
28006 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
28007 .byte 63 // (bad)
28008 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
28009 .byte 63 // (bad)
28010 .byte 248 // clc
28011 .byte 245 // cmc
28012 .byte 154 // (bad)
28013 .byte 64,248 // rex clc
28014 .byte 245 // cmc
28015 .byte 154 // (bad)
28016 .byte 64,248 // rex clc
28017 .byte 245 // cmc
28018 .byte 154 // (bad)
28019 .byte 64,248 // rex clc
28020 .byte 245 // cmc
28021 .byte 154 // (bad)
28022 .byte 64,254 // rex (bad)
28023 .byte 210,221 // rcr %cl,%ch
28024 .byte 65,254 // rex.B (bad)
28025 .byte 210,221 // rcr %cl,%ch
28026 .byte 65,254 // rex.B (bad)
28027 .byte 210,221 // rcr %cl,%ch
28028 .byte 65,254 // rex.B (bad)
28029 .byte 210,221 // rcr %cl,%ch
28030 .byte 65,0,0 // add %al,(%r8)
28031 .byte 0,75,0 // add %cl,0x0(%rbx)
28032 .byte 0,0 // add %al,(%rax)
28033 .byte 75,0,0 // rex.WXB add %al,(%r8)
28034 .byte 0,75,0 // add %cl,0x0(%rbx)
28035 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028036 .byte 75,0,0 // rex.WXB add %al,(%r8)
28037 .byte 200,66,0,0 // enterq $0x42,$0x0
28038 .byte 200,66,0,0 // enterq $0x42,$0x0
28039 .byte 200,66,0,0 // enterq $0x42,$0x0
28040 .byte 200,66,0,0 // enterq $0x42,$0x0
Mike Kleinfb11acd2017-05-01 14:22:10 -040028041 .byte 127,67 // jg 45a7 <.literal16+0x7a7>
Mike Kleinfe560a82017-05-01 12:56:35 -040028042 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028043 .byte 127,67 // jg 45ab <.literal16+0x7ab>
Mike Kleinfe560a82017-05-01 12:56:35 -040028044 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028045 .byte 127,67 // jg 45af <.literal16+0x7af>
Mike Kleinfe560a82017-05-01 12:56:35 -040028046 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028047 .byte 127,67 // jg 45b3 <.literal16+0x7b3>
Mike Kleinfe560a82017-05-01 12:56:35 -040028048 .byte 0,0 // add %al,(%rax)
28049 .byte 0,195 // add %al,%bl
28050 .byte 0,0 // add %al,(%rax)
28051 .byte 0,195 // add %al,%bl
28052 .byte 0,0 // add %al,(%rax)
28053 .byte 0,195 // add %al,%bl
28054 .byte 0,0 // add %al,(%rax)
28055 .byte 0,195 // add %al,%bl
28056 .byte 0,0 // add %al,(%rax)
28057 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
28058 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
28059 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
28060 .byte 128,65,203,61 // addb $0x3d,-0x35(%rcx)
28061 .byte 13,60,203,61,13 // or $0xd3dcb3c,%eax
28062 .byte 60,203 // cmp $0xcb,%al
28063 .byte 61,13,60,203,61 // cmp $0x3dcb3c0d,%eax
28064 .byte 13,60,111,18,3 // or $0x3126f3c,%eax
28065 .byte 59,111,18 // cmp 0x12(%rdi),%ebp
28066 .byte 3,59 // add (%rbx),%edi
28067 .byte 111 // outsl %ds:(%rsi),(%dx)
28068 .byte 18,3 // adc (%rbx),%al
28069 .byte 59,111,18 // cmp 0x12(%rdi),%ebp
28070 .byte 3,59 // add (%rbx),%edi
28071 .byte 10,215 // or %bh,%dl
28072 .byte 163,59,10,215,163,59,10,215,163 // movabs %eax,0xa3d70a3ba3d70a3b
28073 .byte 59,10 // cmp (%rdx),%ecx
28074 .byte 215 // xlat %ds:(%rbx)
28075 .byte 163,59,194,24,17,60,194,24,17 // movabs %eax,0x1118c23c1118c23b
28076 .byte 60,194 // cmp $0xc2,%al
28077 .byte 24,17 // sbb %dl,(%rcx)
28078 .byte 60,194 // cmp $0xc2,%al
28079 .byte 24,17 // sbb %dl,(%rcx)
28080 .byte 60,203 // cmp $0xcb,%al
28081 .byte 61,13,190,203,61 // cmp $0x3dcbbe0d,%eax
28082 .byte 13,190,203,61,13 // or $0xd3dcbbe,%eax
28083 .byte 190,203,61,13,190 // mov $0xbe0d3dcb,%esi
28084 .byte 80 // push %rax
28085 .byte 128,3,62 // addb $0x3e,(%rbx)
28086 .byte 80 // push %rax
28087 .byte 128,3,62 // addb $0x3e,(%rbx)
28088 .byte 80 // push %rax
28089 .byte 128,3,62 // addb $0x3e,(%rbx)
28090 .byte 80 // push %rax
28091 .byte 128,3,62 // addb $0x3e,(%rbx)
28092 .byte 31 // (bad)
28093 .byte 215 // xlat %ds:(%rbx)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028094 .byte 118,63 // jbe 4633 <.literal16+0x833>
Mike Kleinfe560a82017-05-01 12:56:35 -040028095 .byte 31 // (bad)
28096 .byte 215 // xlat %ds:(%rbx)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028097 .byte 118,63 // jbe 4637 <.literal16+0x837>
Mike Kleinfe560a82017-05-01 12:56:35 -040028098 .byte 31 // (bad)
28099 .byte 215 // xlat %ds:(%rbx)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028100 .byte 118,63 // jbe 463b <.literal16+0x83b>
Mike Kleinfe560a82017-05-01 12:56:35 -040028101 .byte 31 // (bad)
28102 .byte 215 // xlat %ds:(%rbx)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028103 .byte 118,63 // jbe 463f <.literal16+0x83f>
Mike Kleinfe560a82017-05-01 12:56:35 -040028104 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
28105 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
28106 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
28107 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
28108 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
28109 .byte 128,59,129 // cmpb $0x81,(%rbx)
28110 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
28111 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
28112 .byte 128,59,0 // cmpb $0x0,(%rbx)
28113 .byte 0,127,67 // add %bh,0x43(%rdi)
28114 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028115 .byte 127,67 // jg 467b <.literal16+0x87b>
Mike Kleinfe560a82017-05-01 12:56:35 -040028116 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028117 .byte 127,67 // jg 467f <.literal16+0x87f>
Mike Kleinfe560a82017-05-01 12:56:35 -040028118 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028119 .byte 127,67 // jg 4683 <.literal16+0x883>
Mike Kleinfe560a82017-05-01 12:56:35 -040028120 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
28121 .byte 128,59,129 // cmpb $0x81,(%rbx)
28122 .byte 128,128,59,0,0,128,63 // addb $0x3f,-0x7fffffc5(%rax)
28123 .byte 0,0 // add %al,(%rax)
28124 .byte 128,63,0 // cmpb $0x0,(%rdi)
28125 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28126 .byte 63 // (bad)
28127 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
28128 .byte 128,59,129 // cmpb $0x81,(%rbx)
28129 .byte 128,128,59,0,0,128,63 // addb $0x3f,-0x7fffffc5(%rax)
28130 .byte 0,0 // add %al,(%rax)
28131 .byte 128,63,0 // cmpb $0x0,(%rdi)
28132 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28133 .byte 63 // (bad)
28134 .byte 255,0 // incl (%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040028135 .byte 0,0 // add %al,(%rax)
28136 .byte 255,0 // incl (%rax)
28137 .byte 0,0 // add %al,(%rax)
28138 .byte 255,0 // incl (%rax)
28139 .byte 0,0 // add %al,(%rax)
28140 .byte 255,0 // incl (%rax)
28141 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028142 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
28143 .byte 128,59,129 // cmpb $0x81,(%rbx)
28144 .byte 128,128,59,0,248,0,0 // addb $0x0,0xf8003b(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040028145 .byte 0,248 // add %bh,%al
Mike Klein0aa742f2017-04-27 13:36:57 -040028146 .byte 0,0 // add %al,(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040028147 .byte 0,248 // add %bh,%al
Mike Klein0aa742f2017-04-27 13:36:57 -040028148 .byte 0,0 // add %al,(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040028149 .byte 0,248 // add %bh,%al
Mike Klein0aa742f2017-04-27 13:36:57 -040028150 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028151 .byte 8,33 // or %ah,(%rcx)
28152 .byte 132,55 // test %dh,(%rdi)
28153 .byte 8,33 // or %ah,(%rcx)
28154 .byte 132,55 // test %dh,(%rdi)
28155 .byte 8,33 // or %ah,(%rcx)
28156 .byte 132,55 // test %dh,(%rdi)
28157 .byte 8,33 // or %ah,(%rcx)
28158 .byte 132,55 // test %dh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028159 .byte 224,7 // loopne 46c9 <.literal16+0x8c9>
Mike Klein0aa742f2017-04-27 13:36:57 -040028160 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028161 .byte 224,7 // loopne 46cd <.literal16+0x8cd>
Mike Klein0aa742f2017-04-27 13:36:57 -040028162 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028163 .byte 224,7 // loopne 46d1 <.literal16+0x8d1>
Mike Klein0aa742f2017-04-27 13:36:57 -040028164 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028165 .byte 224,7 // loopne 46d5 <.literal16+0x8d5>
Mike Klein0aa742f2017-04-27 13:36:57 -040028166 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028167 .byte 33,8 // and %ecx,(%rax)
28168 .byte 2,58 // add (%rdx),%bh
28169 .byte 33,8 // and %ecx,(%rax)
28170 .byte 2,58 // add (%rdx),%bh
28171 .byte 33,8 // and %ecx,(%rax)
28172 .byte 2,58 // add (%rdx),%bh
28173 .byte 33,8 // and %ecx,(%rax)
28174 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040028175 .byte 31 // (bad)
28176 .byte 0,0 // add %al,(%rax)
28177 .byte 0,31 // add %bl,(%rdi)
28178 .byte 0,0 // add %al,(%rax)
28179 .byte 0,31 // add %bl,(%rdi)
28180 .byte 0,0 // add %al,(%rax)
28181 .byte 0,31 // add %bl,(%rdi)
28182 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028183 .byte 0,8 // add %cl,(%rax)
28184 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
28185 .byte 8,33 // or %ah,(%rcx)
28186 .byte 4,61 // add $0x3d,%al
28187 .byte 8,33 // or %ah,(%rcx)
28188 .byte 4,61 // add $0x3d,%al
Mike Klein308e6242017-04-27 13:56:33 -040028189 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028190 .byte 128,63,0 // cmpb $0x0,(%rdi)
28191 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28192 .byte 63 // (bad)
28193 .byte 0,0 // add %al,(%rax)
28194 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Klein308e6242017-04-27 13:56:33 -040028195 .byte 248 // clc
28196 .byte 0,0 // add %al,(%rax)
28197 .byte 0,248 // add %bh,%al
28198 .byte 0,0 // add %al,(%rax)
28199 .byte 0,248 // add %bh,%al
28200 .byte 0,0 // add %al,(%rax)
28201 .byte 0,248 // add %bh,%al
28202 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028203 .byte 8,33 // or %ah,(%rcx)
28204 .byte 132,55 // test %dh,(%rdi)
28205 .byte 8,33 // or %ah,(%rcx)
28206 .byte 132,55 // test %dh,(%rdi)
28207 .byte 8,33 // or %ah,(%rcx)
28208 .byte 132,55 // test %dh,(%rdi)
28209 .byte 8,33 // or %ah,(%rcx)
28210 .byte 132,55 // test %dh,(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028211 .byte 224,7 // loopne 4739 <.literal16+0x939>
Mike Klein308e6242017-04-27 13:56:33 -040028212 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028213 .byte 224,7 // loopne 473d <.literal16+0x93d>
Mike Klein308e6242017-04-27 13:56:33 -040028214 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028215 .byte 224,7 // loopne 4741 <.literal16+0x941>
Mike Klein308e6242017-04-27 13:56:33 -040028216 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028217 .byte 224,7 // loopne 4745 <.literal16+0x945>
Mike Klein308e6242017-04-27 13:56:33 -040028218 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028219 .byte 33,8 // and %ecx,(%rax)
28220 .byte 2,58 // add (%rdx),%bh
28221 .byte 33,8 // and %ecx,(%rax)
28222 .byte 2,58 // add (%rdx),%bh
28223 .byte 33,8 // and %ecx,(%rax)
28224 .byte 2,58 // add (%rdx),%bh
28225 .byte 33,8 // and %ecx,(%rax)
28226 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040028227 .byte 31 // (bad)
28228 .byte 0,0 // add %al,(%rax)
28229 .byte 0,31 // add %bl,(%rdi)
28230 .byte 0,0 // add %al,(%rax)
28231 .byte 0,31 // add %bl,(%rdi)
28232 .byte 0,0 // add %al,(%rax)
28233 .byte 0,31 // add %bl,(%rdi)
28234 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028235 .byte 0,8 // add %cl,(%rax)
28236 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
28237 .byte 8,33 // or %ah,(%rcx)
28238 .byte 4,61 // add $0x3d,%al
28239 .byte 8,33 // or %ah,(%rcx)
28240 .byte 4,61 // add $0x3d,%al
Mike Klein308e6242017-04-27 13:56:33 -040028241 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028242 .byte 128,63,0 // cmpb $0x0,(%rdi)
28243 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28244 .byte 63 // (bad)
28245 .byte 0,0 // add %al,(%rax)
28246 .byte 128,63,0 // cmpb $0x0,(%rdi)
28247 .byte 0,248 // add %bh,%al
28248 .byte 65,0,0 // add %al,(%r8)
28249 .byte 248 // clc
28250 .byte 65,0,0 // add %al,(%r8)
28251 .byte 248 // clc
28252 .byte 65,0,0 // add %al,(%r8)
28253 .byte 248 // clc
28254 .byte 65,0,0 // add %al,(%r8)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028255 .byte 124,66 // jl 47d6 <.literal16+0x9d6>
Mike Kleinfe560a82017-05-01 12:56:35 -040028256 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028257 .byte 124,66 // jl 47da <.literal16+0x9da>
Mike Kleinfe560a82017-05-01 12:56:35 -040028258 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028259 .byte 124,66 // jl 47de <.literal16+0x9de>
Mike Kleinfe560a82017-05-01 12:56:35 -040028260 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028261 .byte 124,66 // jl 47e2 <.literal16+0x9e2>
Mike Kleinfe560a82017-05-01 12:56:35 -040028262 .byte 0,240 // add %dh,%al
28263 .byte 0,0 // add %al,(%rax)
28264 .byte 0,240 // add %dh,%al
28265 .byte 0,0 // add %al,(%rax)
28266 .byte 0,240 // add %dh,%al
28267 .byte 0,0 // add %al,(%rax)
28268 .byte 0,240 // add %dh,%al
28269 .byte 0,0 // add %al,(%rax)
28270 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
28271 .byte 136,55 // mov %dh,(%rdi)
28272 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
28273 .byte 136,55 // mov %dh,(%rdi)
28274 .byte 0,15 // add %cl,(%rdi)
28275 .byte 0,0 // add %al,(%rax)
28276 .byte 0,15 // add %cl,(%rdi)
28277 .byte 0,0 // add %al,(%rax)
28278 .byte 0,15 // add %cl,(%rdi)
28279 .byte 0,0 // add %al,(%rax)
28280 .byte 0,15 // add %cl,(%rdi)
28281 .byte 0,0 // add %al,(%rax)
28282 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
28283 .byte 136,57 // mov %bh,(%rcx)
28284 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
28285 .byte 136,57 // mov %bh,(%rcx)
Mike Klein308e6242017-04-27 13:56:33 -040028286 .byte 240,0,0 // lock add %al,(%rax)
28287 .byte 0,240 // add %dh,%al
28288 .byte 0,0 // add %al,(%rax)
28289 .byte 0,240 // add %dh,%al
28290 .byte 0,0 // add %al,(%rax)
28291 .byte 0,240 // add %dh,%al
28292 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028293 .byte 0,137,136,136,59,137 // add %cl,-0x76c47778(%rcx)
28294 .byte 136,136,59,137,136,136 // mov %cl,-0x777776c5(%rax)
28295 .byte 59,137,136,136,59,15 // cmp 0xf3b8888(%rcx),%ecx
28296 .byte 0,0 // add %al,(%rax)
28297 .byte 0,15 // add %cl,(%rdi)
28298 .byte 0,0 // add %al,(%rax)
28299 .byte 0,15 // add %cl,(%rdi)
28300 .byte 0,0 // add %al,(%rax)
28301 .byte 0,15 // add %cl,(%rdi)
28302 .byte 0,0 // add %al,(%rax)
28303 .byte 0,137,136,136,61,137 // add %cl,-0x76c27778(%rcx)
28304 .byte 136,136,61,137,136,136 // mov %cl,-0x777776c3(%rax)
28305 .byte 61,137,136,136,61 // cmp $0x3d888889,%eax
28306 .byte 0,240 // add %dh,%al
28307 .byte 0,0 // add %al,(%rax)
28308 .byte 0,240 // add %dh,%al
28309 .byte 0,0 // add %al,(%rax)
28310 .byte 0,240 // add %dh,%al
28311 .byte 0,0 // add %al,(%rax)
28312 .byte 0,240 // add %dh,%al
28313 .byte 0,0 // add %al,(%rax)
28314 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
28315 .byte 136,55 // mov %dh,(%rdi)
28316 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
28317 .byte 136,55 // mov %dh,(%rdi)
Mike Klein308e6242017-04-27 13:56:33 -040028318 .byte 0,15 // add %cl,(%rdi)
28319 .byte 0,0 // add %al,(%rax)
28320 .byte 0,15 // add %cl,(%rdi)
28321 .byte 0,0 // add %al,(%rax)
28322 .byte 0,15 // add %cl,(%rdi)
28323 .byte 0,0 // add %al,(%rax)
28324 .byte 0,15 // add %cl,(%rdi)
28325 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028326 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
28327 .byte 136,57 // mov %bh,(%rcx)
28328 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
28329 .byte 136,57 // mov %bh,(%rcx)
Mike Klein308e6242017-04-27 13:56:33 -040028330 .byte 240,0,0 // lock add %al,(%rax)
28331 .byte 0,240 // add %dh,%al
28332 .byte 0,0 // add %al,(%rax)
28333 .byte 0,240 // add %dh,%al
28334 .byte 0,0 // add %al,(%rax)
28335 .byte 0,240 // add %dh,%al
28336 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028337 .byte 0,137,136,136,59,137 // add %cl,-0x76c47778(%rcx)
28338 .byte 136,136,59,137,136,136 // mov %cl,-0x777776c5(%rax)
28339 .byte 59,137,136,136,59,15 // cmp 0xf3b8888(%rcx),%ecx
Mike Klein308e6242017-04-27 13:56:33 -040028340 .byte 0,0 // add %al,(%rax)
28341 .byte 0,15 // add %cl,(%rdi)
28342 .byte 0,0 // add %al,(%rax)
28343 .byte 0,15 // add %cl,(%rdi)
28344 .byte 0,0 // add %al,(%rax)
28345 .byte 0,15 // add %cl,(%rdi)
28346 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028347 .byte 0,137,136,136,61,137 // add %cl,-0x76c27778(%rcx)
28348 .byte 136,136,61,137,136,136 // mov %cl,-0x777776c3(%rax)
28349 .byte 61,137,136,136,61 // cmp $0x3d888889,%eax
Mike Klein308e6242017-04-27 13:56:33 -040028350 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028351 .byte 112,65 // jo 48e5 <.literal16+0xae5>
Mike Klein308e6242017-04-27 13:56:33 -040028352 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028353 .byte 112,65 // jo 48e9 <.literal16+0xae9>
Mike Klein308e6242017-04-27 13:56:33 -040028354 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028355 .byte 112,65 // jo 48ed <.literal16+0xaed>
Mike Klein308e6242017-04-27 13:56:33 -040028356 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028357 .byte 112,65 // jo 48f1 <.literal16+0xaf1>
Mike Kleinfe560a82017-05-01 12:56:35 -040028358 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040028359 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028360 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040028361 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028362 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040028363 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028364 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040028365 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028366 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
28367 .byte 128,59,129 // cmpb $0x81,(%rbx)
28368 .byte 128,128,59,255,0,0,0 // addb $0x0,0xff3b(%rax)
28369 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040028370 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028371 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040028372 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028373 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040028374 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028375 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
28376 .byte 128,59,129 // cmpb $0x81,(%rbx)
28377 .byte 128,128,59,0,0,127,67 // addb $0x43,0x7f00003b(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040028378 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028379 .byte 127,67 // jg 493b <.literal16+0xb3b>
Mike Klein308e6242017-04-27 13:56:33 -040028380 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028381 .byte 127,67 // jg 493f <.literal16+0xb3f>
Mike Klein308e6242017-04-27 13:56:33 -040028382 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028383 .byte 127,67 // jg 4943 <.literal16+0xb43>
Mike Klein0aa742f2017-04-27 13:36:57 -040028384 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040028385 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028386 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
28387 .byte 0,0 // add %al,(%rax)
28388 .byte 0,0 // add %al,(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040028389 .byte 0,56 // add %bh,(%rax)
28390 .byte 0,0 // add %al,(%rax)
28391 .byte 0,56 // add %bh,(%rax)
28392 .byte 0,0 // add %al,(%rax)
28393 .byte 0,56 // add %bh,(%rax)
28394 .byte 0,0 // add %al,(%rax)
28395 .byte 0,56 // add %bh,(%rax)
28396 .byte 0,0 // add %al,(%rax)
28397 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
28398 .byte 0,0 // add %al,(%rax)
28399 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
28400 .byte 0,4,0 // add %al,(%rax,%rax,1)
28401 .byte 128,0,4 // addb $0x4,(%rax)
28402 .byte 0,128,0,4,0,128 // add %al,-0x7ffffc00(%rax)
28403 .byte 0,4,0 // add %al,(%rax,%rax,1)
28404 .byte 128,0,128 // addb $0x80,(%rax)
28405 .byte 0,0 // add %al,(%rax)
28406 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
28407 .byte 0,0 // add %al,(%rax)
28408 .byte 0,128,0,0,0,0 // add %al,0x0(%rax)
28409 .byte 0,56 // add %bh,(%rax)
28410 .byte 0,0 // add %al,(%rax)
28411 .byte 0,56 // add %bh,(%rax)
28412 .byte 0,0 // add %al,(%rax)
28413 .byte 0,56 // add %bh,(%rax)
28414 .byte 0,0 // add %al,(%rax)
28415 .byte 0,56 // add %bh,(%rax)
28416 .byte 0,0 // add %al,(%rax)
28417 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
28418 .byte 0,0 // add %al,(%rax)
28419 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
28420 .byte 0,4,0 // add %al,(%rax,%rax,1)
28421 .byte 128,0,4 // addb $0x4,(%rax)
28422 .byte 0,128,0,4,0,128 // add %al,-0x7ffffc00(%rax)
28423 .byte 0,4,0 // add %al,(%rax,%rax,1)
28424 .byte 128,0,0 // addb $0x0,(%rax)
28425 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
28426 .byte 0,0 // add %al,(%rax)
28427 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
28428 .byte 0,0 // add %al,(%rax)
28429 .byte 128,56,0 // cmpb $0x0,(%rax)
28430 .byte 0,128,56,0,0,128 // add %al,-0x7fffffc8(%rax)
28431 .byte 56,0 // cmp %al,(%rax)
28432 .byte 0,128,56,0,64,254 // add %al,-0x1bfffc8(%rax)
28433 .byte 255,0 // incl (%rax)
28434 .byte 64,254 // rex (bad)
28435 .byte 255,0 // incl (%rax)
28436 .byte 64,254 // rex (bad)
28437 .byte 255,0 // incl (%rax)
28438 .byte 64,254 // rex (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040028439 .byte 255,128,0,128,55,128 // incl -0x7fc88000(%rax)
28440 .byte 0,128,55,128,0,128 // add %al,-0x7fff7fc9(%rax)
28441 .byte 55 // (bad)
28442 .byte 128,0,128 // addb $0x80,(%rax)
28443 .byte 55 // (bad)
28444 .byte 128,0,128 // addb $0x80,(%rax)
28445 .byte 55 // (bad)
28446 .byte 128,0,128 // addb $0x80,(%rax)
28447 .byte 55 // (bad)
28448 .byte 128,0,128 // addb $0x80,(%rax)
28449 .byte 55 // (bad)
28450 .byte 128,0,128 // addb $0x80,(%rax)
28451 .byte 55 // (bad)
28452 .byte 0,0 // add %al,(%rax)
28453 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinb4bbc642017-04-27 08:59:55 -040028454 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28455 .byte 63 // (bad)
28456 .byte 0,0 // add %al,(%rax)
28457 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040028458 .byte 255 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028459 .byte 127,71 // jg 4a2b <.literal16+0xc2b>
Mike Kleinfe560a82017-05-01 12:56:35 -040028460 .byte 0,255 // add %bh,%bh
Mike Kleinfb11acd2017-05-01 14:22:10 -040028461 .byte 127,71 // jg 4a2f <.literal16+0xc2f>
Mike Kleinfe560a82017-05-01 12:56:35 -040028462 .byte 0,255 // add %bh,%bh
Mike Kleinfb11acd2017-05-01 14:22:10 -040028463 .byte 127,71 // jg 4a33 <.literal16+0xc33>
Mike Kleinfe560a82017-05-01 12:56:35 -040028464 .byte 0,255 // add %bh,%bh
Mike Kleinfb11acd2017-05-01 14:22:10 -040028465 .byte 127,71 // jg 4a37 <.literal16+0xc37>
Mike Kleinfe560a82017-05-01 12:56:35 -040028466 .byte 0,0 // add %al,(%rax)
28467 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinb4bbc642017-04-27 08:59:55 -040028468 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28469 .byte 63 // (bad)
28470 .byte 0,0 // add %al,(%rax)
28471 .byte 128,63,0 // cmpb $0x0,(%rdi)
28472 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28473 .byte 63 // (bad)
28474 .byte 0,0 // add %al,(%rax)
28475 .byte 128,63,0 // cmpb $0x0,(%rdi)
28476 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28477 .byte 63 // (bad)
28478 .byte 0,0 // add %al,(%rax)
28479 .byte 128,63,0 // cmpb $0x0,(%rdi)
28480 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28481 .byte 63 // (bad)
28482 .byte 0,0 // add %al,(%rax)
28483 .byte 128,63,0 // cmpb $0x0,(%rdi)
28484 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28485 .byte 63 // (bad)
28486 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040028487 .byte 128,63,208 // cmpb $0xd0,(%rdi)
28488 .byte 179,89 // mov $0x59,%bl
28489 .byte 62,208 // ds (bad)
28490 .byte 179,89 // mov $0x59,%bl
28491 .byte 62,208 // ds (bad)
28492 .byte 179,89 // mov $0x59,%bl
28493 .byte 62,208 // ds (bad)
28494 .byte 179,89 // mov $0x59,%bl
28495 .byte 62,89 // ds pop %rcx
28496 .byte 23 // (bad)
28497 .byte 55 // (bad)
28498 .byte 63 // (bad)
28499 .byte 89 // pop %rcx
28500 .byte 23 // (bad)
28501 .byte 55 // (bad)
28502 .byte 63 // (bad)
28503 .byte 89 // pop %rcx
28504 .byte 23 // (bad)
28505 .byte 55 // (bad)
28506 .byte 63 // (bad)
28507 .byte 89 // pop %rcx
28508 .byte 23 // (bad)
28509 .byte 55 // (bad)
28510 .byte 63 // (bad)
28511 .byte 152 // cwtl
28512 .byte 221,147,61,152,221,147 // fstl -0x6c2267c3(%rbx)
28513 .byte 61,152,221,147,61 // cmp $0x3d93dd98,%eax
28514 .byte 152 // cwtl
28515 .byte 221,147,61,0,0,0 // fstl 0x3d(%rbx)
28516 .byte 63 // (bad)
28517 .byte 0,0 // add %al,(%rax)
28518 .byte 0,63 // add %bh,(%rdi)
28519 .byte 0,0 // add %al,(%rax)
28520 .byte 0,63 // add %bh,(%rdi)
28521 .byte 0,0 // add %al,(%rax)
28522 .byte 0,63 // add %bh,(%rdi)
28523 .byte 0,0 // add %al,(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040028524 .byte 128,63,0 // cmpb $0x0,(%rdi)
28525 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
Mike Klein2229b572017-04-21 10:30:29 -040028526 .byte 63 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040028527 .byte 0,0 // add %al,(%rax)
28528 .byte 128,63,0 // cmpb $0x0,(%rdi)
28529 .byte 0,0 // add %al,(%rax)
28530 .byte 191,0,0,0,191 // mov $0xbf000000,%edi
28531 .byte 0,0 // add %al,(%rax)
28532 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
28533 .byte 0,0 // add %al,(%rax)
28534 .byte 128,63,0 // cmpb $0x0,(%rdi)
28535 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28536 .byte 63 // (bad)
28537 .byte 0,0 // add %al,(%rax)
28538 .byte 128,63,0 // cmpb $0x0,(%rdi)
28539 .byte 0,0 // add %al,(%rax)
28540 .byte 63 // (bad)
28541 .byte 0,0 // add %al,(%rax)
28542 .byte 0,63 // add %bh,(%rdi)
28543 .byte 0,0 // add %al,(%rax)
28544 .byte 0,63 // add %bh,(%rdi)
28545 .byte 0,0 // add %al,(%rax)
28546 .byte 0,63 // add %bh,(%rdi)
28547 .byte 0,0 // add %al,(%rax)
28548 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
28549 .byte 0,0 // add %al,(%rax)
28550 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
28551 .byte 0,0 // add %al,(%rax)
28552 .byte 128,63,0 // cmpb $0x0,(%rdi)
28553 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28554 .byte 63 // (bad)
28555 .byte 0,0 // add %al,(%rax)
28556 .byte 128,63,0 // cmpb $0x0,(%rdi)
28557 .byte 0,0 // add %al,(%rax)
28558 .byte 63 // (bad)
28559 .byte 0,0 // add %al,(%rax)
28560 .byte 0,63 // add %bh,(%rdi)
28561 .byte 0,0 // add %al,(%rax)
28562 .byte 0,63 // add %bh,(%rdi)
28563 .byte 0,0 // add %al,(%rax)
28564 .byte 0,63 // add %bh,(%rdi)
28565 .byte 0,0 // add %al,(%rax)
28566 .byte 192,191,0,0,192,191,0 // sarb $0x0,-0x40400000(%rdi)
28567 .byte 0,192 // add %al,%al
28568 .byte 191,0,0,192,191 // mov $0xbfc00000,%edi
28569 .byte 0,0 // add %al,(%rax)
28570 .byte 128,63,0 // cmpb $0x0,(%rdi)
28571 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28572 .byte 63 // (bad)
28573 .byte 0,0 // add %al,(%rax)
28574 .byte 128,63,114 // cmpb $0x72,(%rdi)
28575 .byte 28,199 // sbb $0xc7,%al
Mike Kleinfb11acd2017-05-01 14:22:10 -040028576 .byte 62,114,28 // jb,pt 4b22 <.literal16+0xd22>
Mike Kleinfe560a82017-05-01 12:56:35 -040028577 .byte 199 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028578 .byte 62,114,28 // jb,pt 4b26 <.literal16+0xd26>
Mike Kleinfe560a82017-05-01 12:56:35 -040028579 .byte 199 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028580 .byte 62,114,28 // jb,pt 4b2a <.literal16+0xd2a>
Mike Kleinfe560a82017-05-01 12:56:35 -040028581 .byte 199 // (bad)
28582 .byte 62,171 // ds stos %eax,%es:(%rdi)
28583 .byte 170 // stos %al,%es:(%rdi)
28584 .byte 170 // stos %al,%es:(%rdi)
28585 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
28586 .byte 171 // stos %eax,%es:(%rdi)
28587 .byte 170 // stos %al,%es:(%rdi)
28588 .byte 170 // stos %al,%es:(%rdi)
28589 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
28590 .byte 0,0 // add %al,(%rax)
28591 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
28592 .byte 0,0 // add %al,(%rax)
28593 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
28594 .byte 0,0 // add %al,(%rax)
28595 .byte 128,63,0 // cmpb $0x0,(%rdi)
28596 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28597 .byte 63 // (bad)
28598 .byte 0,0 // add %al,(%rax)
28599 .byte 128,63,85 // cmpb $0x55,(%rdi)
28600 .byte 85 // push %rbp
28601 .byte 149 // xchg %eax,%ebp
28602 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
28603 .byte 85 // push %rbp
28604 .byte 85 // push %rbp
28605 .byte 149 // xchg %eax,%ebp
28606 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
28607 .byte 0,0 // add %al,(%rax)
28608 .byte 192,63,0 // sarb $0x0,(%rdi)
28609 .byte 0,192 // add %al,%al
28610 .byte 63 // (bad)
28611 .byte 0,0 // add %al,(%rax)
28612 .byte 192,63,0 // sarb $0x0,(%rdi)
28613 .byte 0,192 // add %al,%al
28614 .byte 63 // (bad)
28615 .byte 0,0 // add %al,(%rax)
28616 .byte 0,63 // add %bh,(%rdi)
28617 .byte 0,0 // add %al,(%rax)
28618 .byte 0,63 // add %bh,(%rdi)
28619 .byte 0,0 // add %al,(%rax)
28620 .byte 0,63 // add %bh,(%rdi)
28621 .byte 0,0 // add %al,(%rax)
28622 .byte 0,63 // add %bh,(%rdi)
28623 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028624 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63d9b5 <_sk_callback_sse2+0x3d639c8e>
Mike Kleinfe560a82017-05-01 12:56:35 -040028625 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
28626 .byte 0,63 // add %bh,(%rdi)
28627 .byte 0,0 // add %al,(%rax)
28628 .byte 0,63 // add %bh,(%rdi)
28629 .byte 0,0 // add %al,(%rax)
28630 .byte 0,63 // add %bh,(%rdi)
28631 .byte 0,0 // add %al,(%rax)
28632 .byte 0,63 // add %bh,(%rdi)
28633 .byte 85 // push %rbp
28634 .byte 85 // push %rbp
28635 .byte 149 // xchg %eax,%ebp
28636 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
28637 .byte 85 // push %rbp
28638 .byte 85 // push %rbp
28639 .byte 149 // xchg %eax,%ebp
28640 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
28641 .byte 0,0 // add %al,(%rax)
28642 .byte 192,63,0 // sarb $0x0,(%rdi)
28643 .byte 0,192 // add %al,%al
28644 .byte 63 // (bad)
28645 .byte 0,0 // add %al,(%rax)
28646 .byte 192,63,0 // sarb $0x0,(%rdi)
28647 .byte 0,192 // add %al,%al
28648 .byte 63 // (bad)
28649 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028650 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63d9f5 <_sk_callback_sse2+0x3d639cce>
Mike Kleinfe560a82017-05-01 12:56:35 -040028651 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
28652 .byte 192,63,0 // sarb $0x0,(%rdi)
28653 .byte 0,192 // add %al,%al
28654 .byte 63 // (bad)
28655 .byte 0,0 // add %al,(%rax)
28656 .byte 192,63,0 // sarb $0x0,(%rdi)
28657 .byte 0,192 // add %al,%al
28658 .byte 63 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028659 .byte 114,28 // jb 4bee <.literal16+0xdee>
Mike Kleinfe560a82017-05-01 12:56:35 -040028660 .byte 199 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028661 .byte 62,114,28 // jb,pt 4bf2 <.literal16+0xdf2>
Mike Kleinfe560a82017-05-01 12:56:35 -040028662 .byte 199 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028663 .byte 62,114,28 // jb,pt 4bf6 <.literal16+0xdf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040028664 .byte 199 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028665 .byte 62,114,28 // jb,pt 4bfa <.literal16+0xdfa>
Mike Kleinfe560a82017-05-01 12:56:35 -040028666 .byte 199 // (bad)
28667 .byte 62,171 // ds stos %eax,%es:(%rdi)
28668 .byte 170 // stos %al,%es:(%rdi)
28669 .byte 170 // stos %al,%es:(%rdi)
28670 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
28671 .byte 171 // stos %eax,%es:(%rdi)
28672 .byte 170 // stos %al,%es:(%rdi)
28673 .byte 170 // stos %al,%es:(%rdi)
28674 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
28675 .byte 0,0 // add %al,(%rax)
28676 .byte 192,191,0,0,192,191,0 // sarb $0x0,-0x40400000(%rdi)
28677 .byte 0,192 // add %al,%al
28678 .byte 191,0,0,192,191 // mov $0xbfc00000,%edi
28679 .byte 0,0 // add %al,(%rax)
28680 .byte 128,63,0 // cmpb $0x0,(%rdi)
28681 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28682 .byte 63 // (bad)
28683 .byte 0,0 // add %al,(%rax)
28684 .byte 128,63,114 // cmpb $0x72,(%rdi)
28685 .byte 28,199 // sbb $0xc7,%al
Mike Kleinfb11acd2017-05-01 14:22:10 -040028686 .byte 62,114,28 // jb,pt 4c32 <.literal16+0xe32>
Mike Kleinfe560a82017-05-01 12:56:35 -040028687 .byte 199 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028688 .byte 62,114,28 // jb,pt 4c36 <.literal16+0xe36>
Mike Kleinfe560a82017-05-01 12:56:35 -040028689 .byte 199 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028690 .byte 62,114,28 // jb,pt 4c3a <.literal16+0xe3a>
Mike Kleinfe560a82017-05-01 12:56:35 -040028691 .byte 199 // (bad)
28692 .byte 62,171 // ds stos %eax,%es:(%rdi)
28693 .byte 170 // stos %al,%es:(%rdi)
28694 .byte 170 // stos %al,%es:(%rdi)
28695 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
28696 .byte 171 // stos %eax,%es:(%rdi)
28697 .byte 170 // stos %al,%es:(%rdi)
28698 .byte 170 // stos %al,%es:(%rdi)
28699 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
28700 .byte 0,0 // add %al,(%rax)
28701 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
28702 .byte 0,0 // add %al,(%rax)
28703 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
28704 .byte 0,0 // add %al,(%rax)
28705 .byte 128,63,0 // cmpb $0x0,(%rdi)
28706 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
28707 .byte 63 // (bad)
28708 .byte 0,0 // add %al,(%rax)
28709 .byte 128,63,85 // cmpb $0x55,(%rdi)
28710 .byte 85 // push %rbp
28711 .byte 149 // xchg %eax,%ebp
28712 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
28713 .byte 85 // push %rbp
28714 .byte 85 // push %rbp
28715 .byte 149 // xchg %eax,%ebp
28716 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
28717 .byte 0,0 // add %al,(%rax)
28718 .byte 192,63,0 // sarb $0x0,(%rdi)
28719 .byte 0,192 // add %al,%al
28720 .byte 63 // (bad)
28721 .byte 0,0 // add %al,(%rax)
28722 .byte 192,63,0 // sarb $0x0,(%rdi)
28723 .byte 0,192 // add %al,%al
28724 .byte 63 // (bad)
28725 .byte 0,0 // add %al,(%rax)
28726 .byte 0,63 // add %bh,(%rdi)
28727 .byte 0,0 // add %al,(%rax)
28728 .byte 0,63 // add %bh,(%rdi)
28729 .byte 0,0 // add %al,(%rax)
28730 .byte 0,63 // add %bh,(%rdi)
28731 .byte 0,0 // add %al,(%rax)
28732 .byte 0,63 // add %bh,(%rdi)
28733 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028734 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63dac5 <_sk_callback_sse2+0x3d639d9e>
Mike Kleinfe560a82017-05-01 12:56:35 -040028735 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
28736 .byte 0,63 // add %bh,(%rdi)
28737 .byte 0,0 // add %al,(%rax)
28738 .byte 0,63 // add %bh,(%rdi)
28739 .byte 0,0 // add %al,(%rax)
28740 .byte 0,63 // add %bh,(%rdi)
28741 .byte 0,0 // add %al,(%rax)
28742 .byte 0,63 // add %bh,(%rdi)
28743 .byte 85 // push %rbp
28744 .byte 85 // push %rbp
28745 .byte 149 // xchg %eax,%ebp
28746 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
28747 .byte 85 // push %rbp
28748 .byte 85 // push %rbp
28749 .byte 149 // xchg %eax,%ebp
28750 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
28751 .byte 0,0 // add %al,(%rax)
28752 .byte 192,63,0 // sarb $0x0,(%rdi)
28753 .byte 0,192 // add %al,%al
28754 .byte 63 // (bad)
28755 .byte 0,0 // add %al,(%rax)
28756 .byte 192,63,0 // sarb $0x0,(%rdi)
28757 .byte 0,192 // add %al,%al
28758 .byte 63 // (bad)
28759 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028760 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63db05 <_sk_callback_sse2+0x3d639dde>
Mike Kleinfe560a82017-05-01 12:56:35 -040028761 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
28762 .byte 192,63,0 // sarb $0x0,(%rdi)
28763 .byte 0,192 // add %al,%al
28764 .byte 63 // (bad)
28765 .byte 0,0 // add %al,(%rax)
28766 .byte 192,63,0 // sarb $0x0,(%rdi)
28767 .byte 0,192 // add %al,%al
28768 .byte 63 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028769 .byte 114,28 // jb 4cfe <.literal16+0xefe>
Mike Kleinfe560a82017-05-01 12:56:35 -040028770 .byte 199 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028771 .byte 62,114,28 // jb,pt 4d02 <_sk_callback_sse2+0xfdb>
Mike Kleinfe560a82017-05-01 12:56:35 -040028772 .byte 199 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028773 .byte 62,114,28 // jb,pt 4d06 <_sk_callback_sse2+0xfdf>
Mike Kleinfe560a82017-05-01 12:56:35 -040028774 .byte 199 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040028775 .byte 62,114,28 // jb,pt 4d0a <_sk_callback_sse2+0xfe3>
Mike Kleinfe560a82017-05-01 12:56:35 -040028776 .byte 199 // (bad)
28777 .byte 62,171 // ds stos %eax,%es:(%rdi)
28778 .byte 170 // stos %al,%es:(%rdi)
28779 .byte 170 // stos %al,%es:(%rdi)
28780 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
28781 .byte 171 // stos %eax,%es:(%rdi)
28782 .byte 170 // stos %al,%es:(%rdi)
28783 .byte 170 // stos %al,%es:(%rdi)
28784 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
Mike Kleind7e06ae2017-03-29 16:33:06 -040028785#endif