blob: e117a5329a86dc637c95efdfcffee4a6f232d4b1 [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 Klein581e6982017-05-03 13:05:13 -040094HIDDEN _sk_dither_aarch64
95.globl _sk_dither_aarch64
96FUNCTION(_sk_dither_aarch64)
97_sk_dither_aarch64:
98 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
Mike Klein5d7f2b52017-05-20 13:21:59 -040099 .long 0x3dc00851 // ldr q17, [x2, #32]
Mike Klein581e6982017-05-03 13:05:13 -0400100 .long 0x4e040c10 // dup v16.4s, w0
Mike Klein581e6982017-05-03 13:05:13 -0400101 .long 0x4f000432 // movi v18.4s, #0x1
Mike Klein5d7f2b52017-05-20 13:21:59 -0400102 .long 0xf9400109 // ldr x9, [x8]
Mike Klein581e6982017-05-03 13:05:13 -0400103 .long 0x4f000454 // movi v20.4s, #0x2
Mike Klein5d7f2b52017-05-20 13:21:59 -0400104 .long 0x4eb08630 // add v16.4s, v17.4s, v16.4s
Mike Klein581e6982017-05-03 13:05:13 -0400105 .long 0x4e321e11 // and v17.16b, v16.16b, v18.16b
Mike Klein5d7f2b52017-05-20 13:21:59 -0400106 .long 0x4d40c935 // ld1r {v21.4s}, [x9]
Mike Klein581e6982017-05-03 13:05:13 -0400107 .long 0x4e341e16 // and v22.16b, v16.16b, v20.16b
108 .long 0x4f000493 // movi v19.4s, #0x4
109 .long 0x4f245631 // shl v17.4s, v17.4s, #4
110 .long 0x4f2156d6 // shl v22.4s, v22.4s, #1
111 .long 0x4eb11ed1 // orr v17.16b, v22.16b, v17.16b
112 .long 0x4e331e16 // and v22.16b, v16.16b, v19.16b
113 .long 0x6e351e10 // eor v16.16b, v16.16b, v21.16b
114 .long 0x6f3e06d6 // ushr v22.4s, v22.4s, #2
115 .long 0x4e321e12 // and v18.16b, v16.16b, v18.16b
116 .long 0x4eb61e31 // orr v17.16b, v17.16b, v22.16b
117 .long 0x4e341e14 // and v20.16b, v16.16b, v20.16b
118 .long 0x4f255652 // shl v18.4s, v18.4s, #5
119 .long 0x4e331e10 // and v16.16b, v16.16b, v19.16b
Mike Klein581e6982017-05-03 13:05:13 -0400120 .long 0x4eb21e31 // orr v17.16b, v17.16b, v18.16b
Mike Klein7e68bc92017-05-16 12:03:15 -0400121 .long 0x4f225694 // shl v20.4s, v20.4s, #2
Mike Kleindb711c92017-05-03 17:57:48 -0400122 .long 0x52a79009 // mov w9, #0x3c800000
Mike Klein7e68bc92017-05-16 12:03:15 -0400123 .long 0xbd400912 // ldr s18, [x8, #8]
Mike Klein581e6982017-05-03 13:05:13 -0400124 .long 0x6f3f0610 // ushr v16.4s, v16.4s, #1
125 .long 0x4eb41e31 // orr v17.16b, v17.16b, v20.16b
Mike Klein581e6982017-05-03 13:05:13 -0400126 .long 0x4e040d36 // dup v22.4s, w9
Mike Kleindb711c92017-05-03 17:57:48 -0400127 .long 0x52b7df89 // mov w9, #0xbefc0000
128 .long 0x4eb01e30 // orr v16.16b, v17.16b, v16.16b
129 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein581e6982017-05-03 13:05:13 -0400130 .long 0x4e21da10 // scvtf v16.4s, v16.4s
131 .long 0x4e30ced5 // fmla v21.4s, v22.4s, v16.4s
Mike Klein7e68bc92017-05-16 12:03:15 -0400132 .long 0x4f9292b0 // fmul v16.4s, v21.4s, v18.s[0]
Mike Klein581e6982017-05-03 13:05:13 -0400133 .long 0x4e20d600 // fadd v0.4s, v16.4s, v0.4s
134 .long 0x4e21d601 // fadd v1.4s, v16.4s, v1.4s
135 .long 0x4e22d602 // fadd v2.4s, v16.4s, v2.4s
Mike Klein7e68bc92017-05-16 12:03:15 -0400136 .long 0x6f00e413 // movi v19.2d, #0x0
137 .long 0x4ea3f400 // fmin v0.4s, v0.4s, v3.4s
138 .long 0x4ea3f421 // fmin v1.4s, v1.4s, v3.4s
139 .long 0x4ea3f442 // fmin v2.4s, v2.4s, v3.4s
140 .long 0x4e20f660 // fmax v0.4s, v19.4s, v0.4s
141 .long 0x4e21f661 // fmax v1.4s, v19.4s, v1.4s
142 .long 0x4e22f662 // fmax v2.4s, v19.4s, v2.4s
Mike Klein581e6982017-05-03 13:05:13 -0400143 .long 0xd61f0060 // br x3
144
Mike Klein7c4af542017-03-29 18:21:14 -0400145HIDDEN _sk_constant_color_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400146.globl _sk_constant_color_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400147FUNCTION(_sk_constant_color_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400148_sk_constant_color_aarch64:
149 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
Mike Klein8a823fa2017-04-05 17:29:26 -0400150 .long 0xaa0803ea // mov x10, x8
151 .long 0x4ddfc940 // ld1r {v0.4s}, [x10], #4
152 .long 0x91002109 // add x9, x8, #0x8
153 .long 0x91003108 // add x8, x8, #0xc
154 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
155 .long 0x4d40c903 // ld1r {v3.4s}, [x8]
156 .long 0x4d40c941 // ld1r {v1.4s}, [x10]
Mike Kleind7e06ae2017-03-29 16:33:06 -0400157 .long 0xd61f0060 // br x3
158
Mike Reed9959f722017-05-15 09:34:22 -0400159HIDDEN _sk_load_rgba_aarch64
160.globl _sk_load_rgba_aarch64
161FUNCTION(_sk_load_rgba_aarch64)
162_sk_load_rgba_aarch64:
163 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
164 .long 0xad400500 // ldp q0, q1, [x8]
165 .long 0xad410d02 // ldp q2, q3, [x8, #32]
166 .long 0xd61f0060 // br x3
167
168HIDDEN _sk_store_rgba_aarch64
169.globl _sk_store_rgba_aarch64
170FUNCTION(_sk_store_rgba_aarch64)
171_sk_store_rgba_aarch64:
172 .long 0xf9400028 // ldr x8, [x1]
173 .long 0xad000500 // stp q0, q1, [x8]
174 .long 0xad010d02 // stp q2, q3, [x8, #32]
175 .long 0xf9400423 // ldr x3, [x1, #8]
176 .long 0x91004021 // add x1, x1, #0x10
177 .long 0xd61f0060 // br x3
178
Mike Klein7c4af542017-03-29 18:21:14 -0400179HIDDEN _sk_clear_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400180.globl _sk_clear_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400181FUNCTION(_sk_clear_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400182_sk_clear_aarch64:
183 .long 0xf8408423 // ldr x3, [x1], #8
184 .long 0x6f00e400 // movi v0.2d, #0x0
185 .long 0x6f00e401 // movi v1.2d, #0x0
186 .long 0x6f00e402 // movi v2.2d, #0x0
187 .long 0x6f00e403 // movi v3.2d, #0x0
188 .long 0xd61f0060 // br x3
189
Mike Kleinaaca1e42017-03-31 09:29:01 -0400190HIDDEN _sk_srcatop_aarch64
191.globl _sk_srcatop_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400192FUNCTION(_sk_srcatop_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400193_sk_srcatop_aarch64:
194 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
195 .long 0x6e27dc00 // fmul v0.4s, v0.4s, v7.4s
196 .long 0x6e27dc21 // fmul v1.4s, v1.4s, v7.4s
197 .long 0x6e27dc42 // fmul v2.4s, v2.4s, v7.4s
198 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -0400199 .long 0xf8408423 // ldr x3, [x1], #8
Mike Kleinaaca1e42017-03-31 09:29:01 -0400200 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
201 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
202 .long 0x4e30ccc2 // fmla v2.4s, v6.4s, v16.4s
203 .long 0x6e27de10 // fmul v16.4s, v16.4s, v7.4s
204 .long 0x4e23ccf0 // fmla v16.4s, v7.4s, v3.4s
205 .long 0x4eb01e03 // mov v3.16b, v16.16b
206 .long 0xd61f0060 // br x3
207
208HIDDEN _sk_dstatop_aarch64
209.globl _sk_dstatop_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400210FUNCTION(_sk_dstatop_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400211_sk_dstatop_aarch64:
212 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
213 .long 0x4ea7d610 // fsub v16.4s, v16.4s, v7.4s
214 .long 0xf8408423 // ldr x3, [x1], #8
215 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
216 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
217 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
218 .long 0x6e23de10 // fmul v16.4s, v16.4s, v3.4s
219 .long 0x4e23ccf0 // fmla v16.4s, v7.4s, v3.4s
220 .long 0x4e23cc80 // fmla v0.4s, v4.4s, v3.4s
221 .long 0x4e23cca1 // fmla v1.4s, v5.4s, v3.4s
222 .long 0x4e23ccc2 // fmla v2.4s, v6.4s, v3.4s
223 .long 0x4eb01e03 // mov v3.16b, v16.16b
224 .long 0xd61f0060 // br x3
225
226HIDDEN _sk_srcin_aarch64
227.globl _sk_srcin_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400228FUNCTION(_sk_srcin_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400229_sk_srcin_aarch64:
230 .long 0xf8408423 // ldr x3, [x1], #8
231 .long 0x6e27dc00 // fmul v0.4s, v0.4s, v7.4s
232 .long 0x6e27dc21 // fmul v1.4s, v1.4s, v7.4s
233 .long 0x6e27dc42 // fmul v2.4s, v2.4s, v7.4s
234 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
235 .long 0xd61f0060 // br x3
236
237HIDDEN _sk_dstin_aarch64
238.globl _sk_dstin_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400239FUNCTION(_sk_dstin_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400240_sk_dstin_aarch64:
241 .long 0xf8408423 // ldr x3, [x1], #8
242 .long 0x6e24dc60 // fmul v0.4s, v3.4s, v4.4s
243 .long 0x6e25dc61 // fmul v1.4s, v3.4s, v5.4s
244 .long 0x6e26dc62 // fmul v2.4s, v3.4s, v6.4s
245 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
246 .long 0xd61f0060 // br x3
247
248HIDDEN _sk_srcout_aarch64
249.globl _sk_srcout_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400250FUNCTION(_sk_srcout_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400251_sk_srcout_aarch64:
252 .long 0xf8408423 // ldr x3, [x1], #8
253 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
254 .long 0x4ea7d610 // fsub v16.4s, v16.4s, v7.4s
255 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
256 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
257 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
258 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
259 .long 0xd61f0060 // br x3
260
261HIDDEN _sk_dstout_aarch64
262.globl _sk_dstout_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400263FUNCTION(_sk_dstout_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400264_sk_dstout_aarch64:
265 .long 0xf8408423 // ldr x3, [x1], #8
266 .long 0x4f03f600 // fmov v0.4s, #1.000000000000000000e+00
267 .long 0x4ea3d403 // fsub v3.4s, v0.4s, v3.4s
268 .long 0x6e24dc60 // fmul v0.4s, v3.4s, v4.4s
269 .long 0x6e25dc61 // fmul v1.4s, v3.4s, v5.4s
270 .long 0x6e26dc62 // fmul v2.4s, v3.4s, v6.4s
271 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -0400272 .long 0xd61f0060 // br x3
273
Mike Klein7c4af542017-03-29 18:21:14 -0400274HIDDEN _sk_srcover_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400275.globl _sk_srcover_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400276FUNCTION(_sk_srcover_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400277_sk_srcover_aarch64:
278 .long 0xf8408423 // ldr x3, [x1], #8
279 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
280 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
281 .long 0x4e24ce00 // fmla v0.4s, v16.4s, v4.4s
282 .long 0x4e25ce01 // fmla v1.4s, v16.4s, v5.4s
283 .long 0x4e26ce02 // fmla v2.4s, v16.4s, v6.4s
284 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
285 .long 0xd61f0060 // br x3
286
Mike Klein7c4af542017-03-29 18:21:14 -0400287HIDDEN _sk_dstover_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400288.globl _sk_dstover_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400289FUNCTION(_sk_dstover_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400290_sk_dstover_aarch64:
291 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
292 .long 0xf8408423 // ldr x3, [x1], #8
293 .long 0x4ea41c90 // mov v16.16b, v4.16b
294 .long 0x4ea7d634 // fsub v20.4s, v17.4s, v7.4s
295 .long 0x4ea51cb1 // mov v17.16b, v5.16b
296 .long 0x4ea61cd2 // mov v18.16b, v6.16b
297 .long 0x4ea71cf3 // mov v19.16b, v7.16b
298 .long 0x4e20ce90 // fmla v16.4s, v20.4s, v0.4s
299 .long 0x4e21ce91 // fmla v17.4s, v20.4s, v1.4s
300 .long 0x4e22ce92 // fmla v18.4s, v20.4s, v2.4s
301 .long 0x4e23ce93 // fmla v19.4s, v20.4s, v3.4s
302 .long 0x4eb01e00 // mov v0.16b, v16.16b
303 .long 0x4eb11e21 // mov v1.16b, v17.16b
304 .long 0x4eb21e42 // mov v2.16b, v18.16b
305 .long 0x4eb31e63 // mov v3.16b, v19.16b
306 .long 0xd61f0060 // br x3
307
Mike Kleinaaca1e42017-03-31 09:29:01 -0400308HIDDEN _sk_modulate_aarch64
309.globl _sk_modulate_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400310FUNCTION(_sk_modulate_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400311_sk_modulate_aarch64:
312 .long 0xf8408423 // ldr x3, [x1], #8
313 .long 0x6e24dc00 // fmul v0.4s, v0.4s, v4.4s
314 .long 0x6e25dc21 // fmul v1.4s, v1.4s, v5.4s
315 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
316 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
317 .long 0xd61f0060 // br x3
318
319HIDDEN _sk_multiply_aarch64
320.globl _sk_multiply_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400321FUNCTION(_sk_multiply_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400322_sk_multiply_aarch64:
323 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
324 .long 0x4ea7d613 // fsub v19.4s, v16.4s, v7.4s
325 .long 0x4ea3d614 // fsub v20.4s, v16.4s, v3.4s
326 .long 0x6e20de70 // fmul v16.4s, v19.4s, v0.4s
327 .long 0x6e21de71 // fmul v17.4s, v19.4s, v1.4s
328 .long 0x6e22de72 // fmul v18.4s, v19.4s, v2.4s
329 .long 0x6e23de73 // fmul v19.4s, v19.4s, v3.4s
330 .long 0xf8408423 // ldr x3, [x1], #8
331 .long 0x4e34cc90 // fmla v16.4s, v4.4s, v20.4s
332 .long 0x4e34ccb1 // fmla v17.4s, v5.4s, v20.4s
333 .long 0x4e34ccd2 // fmla v18.4s, v6.4s, v20.4s
334 .long 0x4e34ccf3 // fmla v19.4s, v7.4s, v20.4s
335 .long 0x4e20cc90 // fmla v16.4s, v4.4s, v0.4s
336 .long 0x4e21ccb1 // fmla v17.4s, v5.4s, v1.4s
337 .long 0x4e22ccd2 // fmla v18.4s, v6.4s, v2.4s
338 .long 0x4e23ccf3 // fmla v19.4s, v7.4s, v3.4s
339 .long 0x4eb01e00 // mov v0.16b, v16.16b
340 .long 0x4eb11e21 // mov v1.16b, v17.16b
341 .long 0x4eb21e42 // mov v2.16b, v18.16b
342 .long 0x4eb31e63 // mov v3.16b, v19.16b
343 .long 0xd61f0060 // br x3
344
345HIDDEN _sk_plus__aarch64
346.globl _sk_plus__aarch64
Mike Klein86714282017-04-13 17:37:38 -0400347FUNCTION(_sk_plus__aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400348_sk_plus__aarch64:
349 .long 0xf8408423 // ldr x3, [x1], #8
350 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
351 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
352 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
353 .long 0x4e27d463 // fadd v3.4s, v3.4s, v7.4s
354 .long 0xd61f0060 // br x3
355
356HIDDEN _sk_screen_aarch64
357.globl _sk_screen_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400358FUNCTION(_sk_screen_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400359_sk_screen_aarch64:
360 .long 0xf8408423 // ldr x3, [x1], #8
361 .long 0x4e24d410 // fadd v16.4s, v0.4s, v4.4s
362 .long 0x4e25d431 // fadd v17.4s, v1.4s, v5.4s
363 .long 0x4e26d452 // fadd v18.4s, v2.4s, v6.4s
364 .long 0x4e27d473 // fadd v19.4s, v3.4s, v7.4s
365 .long 0x4ea4cc10 // fmls v16.4s, v0.4s, v4.4s
366 .long 0x4ea5cc31 // fmls v17.4s, v1.4s, v5.4s
367 .long 0x4ea6cc52 // fmls v18.4s, v2.4s, v6.4s
368 .long 0x4ea7cc73 // fmls v19.4s, v3.4s, v7.4s
369 .long 0x4eb01e00 // mov v0.16b, v16.16b
370 .long 0x4eb11e21 // mov v1.16b, v17.16b
371 .long 0x4eb21e42 // mov v2.16b, v18.16b
372 .long 0x4eb31e63 // mov v3.16b, v19.16b
373 .long 0xd61f0060 // br x3
374
375HIDDEN _sk_xor__aarch64
376.globl _sk_xor__aarch64
Mike Klein86714282017-04-13 17:37:38 -0400377FUNCTION(_sk_xor__aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400378_sk_xor__aarch64:
379 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
380 .long 0xf8408423 // ldr x3, [x1], #8
381 .long 0x4ea7d611 // fsub v17.4s, v16.4s, v7.4s
382 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
383 .long 0x6e20de20 // fmul v0.4s, v17.4s, v0.4s
384 .long 0x6e21de21 // fmul v1.4s, v17.4s, v1.4s
385 .long 0x6e22de22 // fmul v2.4s, v17.4s, v2.4s
386 .long 0x6e23de23 // fmul v3.4s, v17.4s, v3.4s
387 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
388 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
389 .long 0x4e30ccc2 // fmla v2.4s, v6.4s, v16.4s
390 .long 0x4e30cce3 // fmla v3.4s, v7.4s, v16.4s
391 .long 0xd61f0060 // br x3
392
Mike Klein66b09ab2017-03-31 10:29:40 -0400393HIDDEN _sk_darken_aarch64
394.globl _sk_darken_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400395FUNCTION(_sk_darken_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400396_sk_darken_aarch64:
397 .long 0x6e27dc10 // fmul v16.4s, v0.4s, v7.4s
398 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
399 .long 0x6e27dc32 // fmul v18.4s, v1.4s, v7.4s
400 .long 0x6e25dc73 // fmul v19.4s, v3.4s, v5.4s
401 .long 0x4e31f610 // fmax v16.4s, v16.4s, v17.4s
402 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
403 .long 0xf8408423 // ldr x3, [x1], #8
404 .long 0x6e27dc51 // fmul v17.4s, v2.4s, v7.4s
405 .long 0x4e33f652 // fmax v18.4s, v18.4s, v19.4s
406 .long 0x6e26dc73 // fmul v19.4s, v3.4s, v6.4s
407 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
408 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
409 .long 0x4e33f631 // fmax v17.4s, v17.4s, v19.4s
410 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
411 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
412 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
413 .long 0x4eb2d421 // fsub v1.4s, v1.4s, v18.4s
414 .long 0x4eb1d442 // fsub v2.4s, v2.4s, v17.4s
415 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
416 .long 0xd61f0060 // br x3
417
418HIDDEN _sk_lighten_aarch64
419.globl _sk_lighten_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400420FUNCTION(_sk_lighten_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400421_sk_lighten_aarch64:
422 .long 0x6e27dc10 // fmul v16.4s, v0.4s, v7.4s
423 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
424 .long 0x6e27dc32 // fmul v18.4s, v1.4s, v7.4s
425 .long 0x6e25dc73 // fmul v19.4s, v3.4s, v5.4s
426 .long 0x4eb1f610 // fmin v16.4s, v16.4s, v17.4s
427 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
428 .long 0xf8408423 // ldr x3, [x1], #8
429 .long 0x6e27dc51 // fmul v17.4s, v2.4s, v7.4s
430 .long 0x4eb3f652 // fmin v18.4s, v18.4s, v19.4s
431 .long 0x6e26dc73 // fmul v19.4s, v3.4s, v6.4s
432 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
433 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
434 .long 0x4eb3f631 // fmin v17.4s, v17.4s, v19.4s
435 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
436 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
437 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
438 .long 0x4eb2d421 // fsub v1.4s, v1.4s, v18.4s
439 .long 0x4eb1d442 // fsub v2.4s, v2.4s, v17.4s
440 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
441 .long 0xd61f0060 // br x3
442
443HIDDEN _sk_difference_aarch64
444.globl _sk_difference_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400445FUNCTION(_sk_difference_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400446_sk_difference_aarch64:
447 .long 0x6e27dc10 // fmul v16.4s, v0.4s, v7.4s
448 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
449 .long 0x6e27dc32 // fmul v18.4s, v1.4s, v7.4s
450 .long 0x6e25dc73 // fmul v19.4s, v3.4s, v5.4s
451 .long 0x4eb1f610 // fmin v16.4s, v16.4s, v17.4s
452 .long 0x4eb3f652 // fmin v18.4s, v18.4s, v19.4s
453 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
454 .long 0x4e30d610 // fadd v16.4s, v16.4s, v16.4s
455 .long 0x6e27dc51 // fmul v17.4s, v2.4s, v7.4s
456 .long 0x6e26dc73 // fmul v19.4s, v3.4s, v6.4s
457 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
458 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
459 .long 0x4e32d650 // fadd v16.4s, v18.4s, v18.4s
460 .long 0xf8408423 // ldr x3, [x1], #8
461 .long 0x4eb3f631 // fmin v17.4s, v17.4s, v19.4s
462 .long 0x4eb0d421 // fsub v1.4s, v1.4s, v16.4s
463 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
464 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
465 .long 0x4e31d631 // fadd v17.4s, v17.4s, v17.4s
466 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
467 .long 0x4eb1d442 // fsub v2.4s, v2.4s, v17.4s
468 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
469 .long 0xd61f0060 // br x3
470
471HIDDEN _sk_exclusion_aarch64
472.globl _sk_exclusion_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400473FUNCTION(_sk_exclusion_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400474_sk_exclusion_aarch64:
475 .long 0x4e24d410 // fadd v16.4s, v0.4s, v4.4s
476 .long 0x6e24dc00 // fmul v0.4s, v0.4s, v4.4s
477 .long 0x4e20d400 // fadd v0.4s, v0.4s, v0.4s
478 .long 0x4ea0d600 // fsub v0.4s, v16.4s, v0.4s
479 .long 0x4e25d430 // fadd v16.4s, v1.4s, v5.4s
480 .long 0x6e25dc21 // fmul v1.4s, v1.4s, v5.4s
481 .long 0x4e21d421 // fadd v1.4s, v1.4s, v1.4s
482 .long 0x4ea1d601 // fsub v1.4s, v16.4s, v1.4s
483 .long 0x4e26d450 // fadd v16.4s, v2.4s, v6.4s
484 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
485 .long 0x4e22d442 // fadd v2.4s, v2.4s, v2.4s
486 .long 0xf8408423 // ldr x3, [x1], #8
487 .long 0x4ea2d602 // fsub v2.4s, v16.4s, v2.4s
488 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
489 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
490 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
491 .long 0xd61f0060 // br x3
492
Mike Klein61b84162017-03-31 11:48:14 -0400493HIDDEN _sk_colorburn_aarch64
494.globl _sk_colorburn_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400495FUNCTION(_sk_colorburn_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400496_sk_colorburn_aarch64:
497 .long 0x4ea4d4f3 // fsub v19.4s, v7.4s, v4.4s
498 .long 0x6e23de73 // fmul v19.4s, v19.4s, v3.4s
499 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
500 .long 0x6e20fe73 // fdiv v19.4s, v19.4s, v0.4s
501 .long 0x4ea7d634 // fsub v20.4s, v17.4s, v7.4s
502 .long 0x4eb3f4f3 // fmin v19.4s, v7.4s, v19.4s
503 .long 0x6e20de95 // fmul v21.4s, v20.4s, v0.4s
504 .long 0x4eb3d4f3 // fsub v19.4s, v7.4s, v19.4s
505 .long 0x4e24d6b6 // fadd v22.4s, v21.4s, v4.4s
506 .long 0x4e33cc75 // fmla v21.4s, v3.4s, v19.4s
507 .long 0x4ea5d4f3 // fsub v19.4s, v7.4s, v5.4s
508 .long 0x6e23de73 // fmul v19.4s, v19.4s, v3.4s
509 .long 0x6e21fe73 // fdiv v19.4s, v19.4s, v1.4s
510 .long 0x4ea0d812 // fcmeq v18.4s, v0.4s, #0.0
511 .long 0x4eb3f4f3 // fmin v19.4s, v7.4s, v19.4s
512 .long 0x6e751c12 // bsl v18.16b, v0.16b, v21.16b
513 .long 0x6e21de80 // fmul v0.4s, v20.4s, v1.4s
514 .long 0x4eb3d4f3 // fsub v19.4s, v7.4s, v19.4s
515 .long 0x4e25d415 // fadd v21.4s, v0.4s, v5.4s
516 .long 0x4e33cc60 // fmla v0.4s, v3.4s, v19.4s
517 .long 0x4ea0d833 // fcmeq v19.4s, v1.4s, #0.0
518 .long 0x6e601c33 // bsl v19.16b, v1.16b, v0.16b
519 .long 0x4ea6d4e0 // fsub v0.4s, v7.4s, v6.4s
520 .long 0x6e23dc00 // fmul v0.4s, v0.4s, v3.4s
521 .long 0x6e22fc00 // fdiv v0.4s, v0.4s, v2.4s
522 .long 0x4ea0f4e0 // fmin v0.4s, v7.4s, v0.4s
523 .long 0x6e22de81 // fmul v1.4s, v20.4s, v2.4s
524 .long 0x4ea0d4e0 // fsub v0.4s, v7.4s, v0.4s
525 .long 0x4e26d434 // fadd v20.4s, v1.4s, v6.4s
526 .long 0x4e20cc61 // fmla v1.4s, v3.4s, v0.4s
527 .long 0x4ea0d840 // fcmeq v0.4s, v2.4s, #0.0
528 .long 0x4ea3d631 // fsub v17.4s, v17.4s, v3.4s
529 .long 0xf8408423 // ldr x3, [x1], #8
530 .long 0x4e27e490 // fcmeq v16.4s, v4.4s, v7.4s
531 .long 0x6e611c40 // bsl v0.16b, v2.16b, v1.16b
532 .long 0x4e31cc92 // fmla v18.4s, v4.4s, v17.4s
533 .long 0x4e27e4a1 // fcmeq v1.4s, v5.4s, v7.4s
534 .long 0x4e27e4c2 // fcmeq v2.4s, v6.4s, v7.4s
535 .long 0x4e31ccb3 // fmla v19.4s, v5.4s, v17.4s
536 .long 0x4e31ccc0 // fmla v0.4s, v6.4s, v17.4s
537 .long 0x6e721ed0 // bsl v16.16b, v22.16b, v18.16b
538 .long 0x6e731ea1 // bsl v1.16b, v21.16b, v19.16b
539 .long 0x6e601e82 // bsl v2.16b, v20.16b, v0.16b
540 .long 0x4e27ce23 // fmla v3.4s, v17.4s, v7.4s
541 .long 0x4eb01e00 // mov v0.16b, v16.16b
542 .long 0xd61f0060 // br x3
543
544HIDDEN _sk_colordodge_aarch64
545.globl _sk_colordodge_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400546FUNCTION(_sk_colordodge_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400547_sk_colordodge_aarch64:
548 .long 0x4f03f612 // fmov v18.4s, #1.000000000000000000e+00
549 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
550 .long 0x4ea0d474 // fsub v20.4s, v3.4s, v0.4s
551 .long 0x6e25dc75 // fmul v21.4s, v3.4s, v5.4s
552 .long 0x4ea1d476 // fsub v22.4s, v3.4s, v1.4s
553 .long 0x4ea7d657 // fsub v23.4s, v18.4s, v7.4s
554 .long 0x6e34fe31 // fdiv v17.4s, v17.4s, v20.4s
555 .long 0x6e36feb4 // fdiv v20.4s, v21.4s, v22.4s
556 .long 0x6e20def5 // fmul v21.4s, v23.4s, v0.4s
557 .long 0x4eb1f4f1 // fmin v17.4s, v7.4s, v17.4s
558 .long 0x4e23e413 // fcmeq v19.4s, v0.4s, v3.4s
559 .long 0x4e24d6b6 // fadd v22.4s, v21.4s, v4.4s
560 .long 0x4e31cc75 // fmla v21.4s, v3.4s, v17.4s
561 .long 0x6e751c13 // bsl v19.16b, v0.16b, v21.16b
562 .long 0x6e21dee0 // fmul v0.4s, v23.4s, v1.4s
563 .long 0x4eb4f4f4 // fmin v20.4s, v7.4s, v20.4s
564 .long 0x4e25d415 // fadd v21.4s, v0.4s, v5.4s
565 .long 0x4e34cc60 // fmla v0.4s, v3.4s, v20.4s
566 .long 0x4e23e434 // fcmeq v20.4s, v1.4s, v3.4s
567 .long 0x6e601c34 // bsl v20.16b, v1.16b, v0.16b
568 .long 0x6e26dc60 // fmul v0.4s, v3.4s, v6.4s
569 .long 0x4ea2d461 // fsub v1.4s, v3.4s, v2.4s
570 .long 0x6e21fc00 // fdiv v0.4s, v0.4s, v1.4s
571 .long 0x6e22dee1 // fmul v1.4s, v23.4s, v2.4s
572 .long 0x4ea0f4e0 // fmin v0.4s, v7.4s, v0.4s
573 .long 0x4e26d437 // fadd v23.4s, v1.4s, v6.4s
574 .long 0x4e20cc61 // fmla v1.4s, v3.4s, v0.4s
575 .long 0x4e23e440 // fcmeq v0.4s, v2.4s, v3.4s
576 .long 0x6e611c40 // bsl v0.16b, v2.16b, v1.16b
577 .long 0x4ea3d641 // fsub v1.4s, v18.4s, v3.4s
578 .long 0xf8408423 // ldr x3, [x1], #8
579 .long 0x4ea0d890 // fcmeq v16.4s, v4.4s, #0.0
580 .long 0x4ea0d8b1 // fcmeq v17.4s, v5.4s, #0.0
581 .long 0x4e21cc93 // fmla v19.4s, v4.4s, v1.4s
582 .long 0x4e21ccb4 // fmla v20.4s, v5.4s, v1.4s
583 .long 0x4ea0d8c2 // fcmeq v2.4s, v6.4s, #0.0
584 .long 0x4e21ccc0 // fmla v0.4s, v6.4s, v1.4s
585 .long 0x6e731ed0 // bsl v16.16b, v22.16b, v19.16b
586 .long 0x6e741eb1 // bsl v17.16b, v21.16b, v20.16b
587 .long 0x6e601ee2 // bsl v2.16b, v23.16b, v0.16b
588 .long 0x4e27cc23 // fmla v3.4s, v1.4s, v7.4s
589 .long 0x4eb01e00 // mov v0.16b, v16.16b
590 .long 0x4eb11e21 // mov v1.16b, v17.16b
591 .long 0xd61f0060 // br x3
592
593HIDDEN _sk_hardlight_aarch64
594.globl _sk_hardlight_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400595FUNCTION(_sk_hardlight_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400596_sk_hardlight_aarch64:
597 .long 0x4ea4d4f4 // fsub v20.4s, v7.4s, v4.4s
598 .long 0x4ea0d475 // fsub v21.4s, v3.4s, v0.4s
599 .long 0x6e34deb4 // fmul v20.4s, v21.4s, v20.4s
600 .long 0x4e20d411 // fadd v17.4s, v0.4s, v0.4s
601 .long 0x6e24dc12 // fmul v18.4s, v0.4s, v4.4s
602 .long 0x6e27dc73 // fmul v19.4s, v3.4s, v7.4s
603 .long 0x4e34d694 // fadd v20.4s, v20.4s, v20.4s
604 .long 0x6e31e471 // fcmge v17.4s, v3.4s, v17.4s
605 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
606 .long 0x4eb4d674 // fsub v20.4s, v19.4s, v20.4s
607 .long 0x6e741e51 // bsl v17.16b, v18.16b, v20.16b
608 .long 0x4ea5d4f2 // fsub v18.4s, v7.4s, v5.4s
609 .long 0x4ea1d474 // fsub v20.4s, v3.4s, v1.4s
610 .long 0x6e32de92 // fmul v18.4s, v20.4s, v18.4s
611 .long 0x4e21d436 // fadd v22.4s, v1.4s, v1.4s
612 .long 0x6e25dc35 // fmul v21.4s, v1.4s, v5.4s
613 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
614 .long 0x6e36e476 // fcmge v22.4s, v3.4s, v22.4s
615 .long 0x4e35d6b5 // fadd v21.4s, v21.4s, v21.4s
616 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
617 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
618 .long 0x6e721eb6 // bsl v22.16b, v21.16b, v18.16b
619 .long 0x4ea6d4f2 // fsub v18.4s, v7.4s, v6.4s
620 .long 0x4ea2d475 // fsub v21.4s, v3.4s, v2.4s
621 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
622 .long 0x4ea7d615 // fsub v21.4s, v16.4s, v7.4s
623 .long 0x4e22d454 // fadd v20.4s, v2.4s, v2.4s
624 .long 0x6e20dea0 // fmul v0.4s, v21.4s, v0.4s
625 .long 0x6e21dea1 // fmul v1.4s, v21.4s, v1.4s
626 .long 0x6e22deb5 // fmul v21.4s, v21.4s, v2.4s
627 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
628 .long 0xf8408423 // ldr x3, [x1], #8
629 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
630 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
631 .long 0x6e34e474 // fcmge v20.4s, v3.4s, v20.4s
632 .long 0x4e22d442 // fadd v2.4s, v2.4s, v2.4s
633 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
634 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
635 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
636 .long 0x4e30ccd5 // fmla v21.4s, v6.4s, v16.4s
637 .long 0x6e721c54 // bsl v20.16b, v2.16b, v18.16b
638 .long 0x4e31d400 // fadd v0.4s, v0.4s, v17.4s
639 .long 0x4e36d421 // fadd v1.4s, v1.4s, v22.4s
640 .long 0x4e34d6a2 // fadd v2.4s, v21.4s, v20.4s
641 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
642 .long 0xd61f0060 // br x3
643
644HIDDEN _sk_overlay_aarch64
645.globl _sk_overlay_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400646FUNCTION(_sk_overlay_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400647_sk_overlay_aarch64:
648 .long 0x4ea4d4f4 // fsub v20.4s, v7.4s, v4.4s
649 .long 0x4ea0d475 // fsub v21.4s, v3.4s, v0.4s
650 .long 0x6e34deb4 // fmul v20.4s, v21.4s, v20.4s
651 .long 0x4e24d491 // fadd v17.4s, v4.4s, v4.4s
652 .long 0x6e24dc12 // fmul v18.4s, v0.4s, v4.4s
653 .long 0x6e27dc73 // fmul v19.4s, v3.4s, v7.4s
654 .long 0x4e34d694 // fadd v20.4s, v20.4s, v20.4s
655 .long 0x6e31e4f1 // fcmge v17.4s, v7.4s, v17.4s
656 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
657 .long 0x4eb4d674 // fsub v20.4s, v19.4s, v20.4s
658 .long 0x6e741e51 // bsl v17.16b, v18.16b, v20.16b
659 .long 0x4ea5d4f2 // fsub v18.4s, v7.4s, v5.4s
660 .long 0x4ea1d474 // fsub v20.4s, v3.4s, v1.4s
661 .long 0x6e32de92 // fmul v18.4s, v20.4s, v18.4s
662 .long 0x4e25d4b6 // fadd v22.4s, v5.4s, v5.4s
663 .long 0x6e25dc35 // fmul v21.4s, v1.4s, v5.4s
664 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
665 .long 0x6e36e4f6 // fcmge v22.4s, v7.4s, v22.4s
666 .long 0x4e35d6b5 // fadd v21.4s, v21.4s, v21.4s
667 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
668 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
669 .long 0x6e721eb6 // bsl v22.16b, v21.16b, v18.16b
670 .long 0x4ea6d4f2 // fsub v18.4s, v7.4s, v6.4s
671 .long 0x4ea2d475 // fsub v21.4s, v3.4s, v2.4s
672 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
673 .long 0x4ea7d615 // fsub v21.4s, v16.4s, v7.4s
674 .long 0x4e26d4d4 // fadd v20.4s, v6.4s, v6.4s
675 .long 0x6e20dea0 // fmul v0.4s, v21.4s, v0.4s
676 .long 0x6e21dea1 // fmul v1.4s, v21.4s, v1.4s
677 .long 0x6e22deb5 // fmul v21.4s, v21.4s, v2.4s
678 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
679 .long 0xf8408423 // ldr x3, [x1], #8
680 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
681 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
682 .long 0x6e34e4f4 // fcmge v20.4s, v7.4s, v20.4s
683 .long 0x4e22d442 // fadd v2.4s, v2.4s, v2.4s
684 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
685 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
686 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
687 .long 0x4e30ccd5 // fmla v21.4s, v6.4s, v16.4s
688 .long 0x6e721c54 // bsl v20.16b, v2.16b, v18.16b
689 .long 0x4e31d400 // fadd v0.4s, v0.4s, v17.4s
690 .long 0x4e36d421 // fadd v1.4s, v1.4s, v22.4s
691 .long 0x4e34d6a2 // fadd v2.4s, v21.4s, v20.4s
692 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
693 .long 0xd61f0060 // br x3
694
695HIDDEN _sk_softlight_aarch64
696.globl _sk_softlight_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400697FUNCTION(_sk_softlight_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400698_sk_softlight_aarch64:
699 .long 0x4ea0c8f5 // fcmgt v21.4s, v7.4s, #0.0
700 .long 0x6e27fc96 // fdiv v22.4s, v4.4s, v7.4s
701 .long 0x6e27fcb8 // fdiv v24.4s, v5.4s, v7.4s
702 .long 0x6e27fcd9 // fdiv v25.4s, v6.4s, v7.4s
703 .long 0x4e351ed6 // and v22.16b, v22.16b, v21.16b
704 .long 0x4e351f18 // and v24.16b, v24.16b, v21.16b
705 .long 0x4e351f35 // and v21.16b, v25.16b, v21.16b
706 .long 0x6ea1dad9 // frsqrte v25.4s, v22.4s
707 .long 0x6e39df3d // fmul v29.4s, v25.4s, v25.4s
708 .long 0x4ebdfedd // frsqrts v29.4s, v22.4s, v29.4s
709 .long 0x6e3ddf39 // fmul v25.4s, v25.4s, v29.4s
710 .long 0x4ea1db3d // frecpe v29.4s, v25.4s
711 .long 0x6ea0fada // fneg v26.4s, v22.4s
712 .long 0x6ea1db1b // frsqrte v27.4s, v24.4s
713 .long 0x4e3dff39 // frecps v25.4s, v25.4s, v29.4s
714 .long 0x4e3dcf3a // fmla v26.4s, v25.4s, v29.4s
715 .long 0x6e3bdf7d // fmul v29.4s, v27.4s, v27.4s
716 .long 0x4ebdff1d // frsqrts v29.4s, v24.4s, v29.4s
717 .long 0x6e3ddf7b // fmul v27.4s, v27.4s, v29.4s
718 .long 0x4ea1db7d // frecpe v29.4s, v27.4s
719 .long 0x6ea0fb1c // fneg v28.4s, v24.4s
720 .long 0x6ea1dab9 // frsqrte v25.4s, v21.4s
721 .long 0x4e3dff7b // frecps v27.4s, v27.4s, v29.4s
722 .long 0x4e3dcf7c // fmla v28.4s, v27.4s, v29.4s
723 .long 0x6e39df3d // fmul v29.4s, v25.4s, v25.4s
724 .long 0x4ebdfebd // frsqrts v29.4s, v21.4s, v29.4s
725 .long 0x6e3ddf39 // fmul v25.4s, v25.4s, v29.4s
726 .long 0x4ea1db3d // frecpe v29.4s, v25.4s
727 .long 0x6ea0fabb // fneg v27.4s, v21.4s
728 .long 0x4e3dff39 // frecps v25.4s, v25.4s, v29.4s
729 .long 0x4e3dcf3b // fmla v27.4s, v25.4s, v29.4s
730 .long 0x4e36d6d9 // fadd v25.4s, v22.4s, v22.4s
731 .long 0x4f07f613 // fmov v19.4s, #-1.000000000000000000e+00
732 .long 0x4e39d739 // fadd v25.4s, v25.4s, v25.4s
733 .long 0x4e24d497 // fadd v23.4s, v4.4s, v4.4s
734 .long 0x4e33d6dd // fadd v29.4s, v22.4s, v19.4s
735 .long 0x4e39cf39 // fmla v25.4s, v25.4s, v25.4s
736 .long 0x4f00f794 // fmov v20.4s, #7.000000000000000000e+00
737 .long 0x6e39dfb9 // fmul v25.4s, v29.4s, v25.4s
738 .long 0x4e37d6f7 // fadd v23.4s, v23.4s, v23.4s
739 .long 0x6e37e4f7 // fcmge v23.4s, v7.4s, v23.4s
740 .long 0x4e36ce99 // fmla v25.4s, v20.4s, v22.4s
741 .long 0x6e7a1f37 // bsl v23.16b, v25.16b, v26.16b
742 .long 0x4e38d719 // fadd v25.4s, v24.4s, v24.4s
743 .long 0x4e39d739 // fadd v25.4s, v25.4s, v25.4s
744 .long 0x4e33d71a // fadd v26.4s, v24.4s, v19.4s
745 .long 0x4e39cf39 // fmla v25.4s, v25.4s, v25.4s
746 .long 0x6e39df59 // fmul v25.4s, v26.4s, v25.4s
747 .long 0x4e25d4ba // fadd v26.4s, v5.4s, v5.4s
748 .long 0x4e3ad75a // fadd v26.4s, v26.4s, v26.4s
749 .long 0x6e3ae4fa // fcmge v26.4s, v7.4s, v26.4s
750 .long 0x4e38ce99 // fmla v25.4s, v20.4s, v24.4s
751 .long 0x6e7c1f3a // bsl v26.16b, v25.16b, v28.16b
752 .long 0x4e35d6bc // fadd v28.4s, v21.4s, v21.4s
753 .long 0x4e3cd79c // fadd v28.4s, v28.4s, v28.4s
754 .long 0x4e33d6b3 // fadd v19.4s, v21.4s, v19.4s
755 .long 0x4e3ccf9c // fmla v28.4s, v28.4s, v28.4s
756 .long 0x6e3cde73 // fmul v19.4s, v19.4s, v28.4s
757 .long 0x4e35ce93 // fmla v19.4s, v20.4s, v21.4s
758 .long 0x4e26d4d4 // fadd v20.4s, v6.4s, v6.4s
759 .long 0x4e34d694 // fadd v20.4s, v20.4s, v20.4s
760 .long 0x4f03f612 // fmov v18.4s, #1.000000000000000000e+00
761 .long 0x6e34e4f4 // fcmge v20.4s, v7.4s, v20.4s
762 .long 0x4e20d411 // fadd v17.4s, v0.4s, v0.4s
763 .long 0x6e7b1e74 // bsl v20.16b, v19.16b, v27.16b
764 .long 0x4ea7d65b // fsub v27.4s, v18.4s, v7.4s
765 .long 0x4ea31c70 // mov v16.16b, v3.16b
766 .long 0x4e21d43d // fadd v29.4s, v1.4s, v1.4s
767 .long 0x4e22d45c // fadd v28.4s, v2.4s, v2.4s
768 .long 0x6e20df60 // fmul v0.4s, v27.4s, v0.4s
769 .long 0x6e21df61 // fmul v1.4s, v27.4s, v1.4s
770 .long 0x6e22df62 // fmul v2.4s, v27.4s, v2.4s
771 .long 0x4ea3d63b // fsub v27.4s, v17.4s, v3.4s
772 .long 0x4eb6d656 // fsub v22.4s, v18.4s, v22.4s
773 .long 0x4ea31c79 // mov v25.16b, v3.16b
774 .long 0x4e3bced0 // fmla v16.4s, v22.4s, v27.4s
775 .long 0x4ea3d7b6 // fsub v22.4s, v29.4s, v3.4s
776 .long 0x4eb8d658 // fsub v24.4s, v18.4s, v24.4s
777 .long 0x4ea31c73 // mov v19.16b, v3.16b
778 .long 0x4e36cf19 // fmla v25.4s, v24.4s, v22.4s
779 .long 0x4ea3d798 // fsub v24.4s, v28.4s, v3.4s
780 .long 0x4eb5d655 // fsub v21.4s, v18.4s, v21.4s
781 .long 0x4e38ceb3 // fmla v19.4s, v21.4s, v24.4s
782 .long 0x6e27df7b // fmul v27.4s, v27.4s, v7.4s
783 .long 0x6e27ded6 // fmul v22.4s, v22.4s, v7.4s
784 .long 0x6e27df18 // fmul v24.4s, v24.4s, v7.4s
785 .long 0xf8408423 // ldr x3, [x1], #8
786 .long 0x6e37df77 // fmul v23.4s, v27.4s, v23.4s
787 .long 0x6e3aded6 // fmul v22.4s, v22.4s, v26.4s
788 .long 0x6e34df14 // fmul v20.4s, v24.4s, v20.4s
789 .long 0x4ea3d652 // fsub v18.4s, v18.4s, v3.4s
790 .long 0x6e31e471 // fcmge v17.4s, v3.4s, v17.4s
791 .long 0x6e3de475 // fcmge v21.4s, v3.4s, v29.4s
792 .long 0x6e3ce47c // fcmge v28.4s, v3.4s, v28.4s
793 .long 0x6e24de10 // fmul v16.4s, v16.4s, v4.4s
794 .long 0x6e25df39 // fmul v25.4s, v25.4s, v5.4s
795 .long 0x6e26de73 // fmul v19.4s, v19.4s, v6.4s
796 .long 0x4e23cc97 // fmla v23.4s, v4.4s, v3.4s
797 .long 0x4e23ccb6 // fmla v22.4s, v5.4s, v3.4s
798 .long 0x4e23ccd4 // fmla v20.4s, v6.4s, v3.4s
799 .long 0x4e32cc80 // fmla v0.4s, v4.4s, v18.4s
800 .long 0x4e32cca1 // fmla v1.4s, v5.4s, v18.4s
801 .long 0x4e32ccc2 // fmla v2.4s, v6.4s, v18.4s
802 .long 0x6e771e11 // bsl v17.16b, v16.16b, v23.16b
803 .long 0x6e761f35 // bsl v21.16b, v25.16b, v22.16b
804 .long 0x6e741e7c // bsl v28.16b, v19.16b, v20.16b
805 .long 0x4e31d400 // fadd v0.4s, v0.4s, v17.4s
806 .long 0x4e35d421 // fadd v1.4s, v1.4s, v21.4s
807 .long 0x4e3cd442 // fadd v2.4s, v2.4s, v28.4s
808 .long 0x4e27ce43 // fmla v3.4s, v18.4s, v7.4s
809 .long 0xd61f0060 // br x3
810
Mike Kleinbb338332017-05-04 12:42:52 -0400811HIDDEN _sk_hue_aarch64
812.globl _sk_hue_aarch64
813FUNCTION(_sk_hue_aarch64)
814_sk_hue_aarch64:
Mike Klein08aa88d2017-05-12 12:59:24 -0400815 .long 0x6e23dc32 // fmul v18.4s, v1.4s, v3.4s
816 .long 0x6e23dc53 // fmul v19.4s, v2.4s, v3.4s
Mike Kleinbb338332017-05-04 12:42:52 -0400817 .long 0x4e26f4b5 // fmax v21.4s, v5.4s, v6.4s
Mike Klein08aa88d2017-05-12 12:59:24 -0400818 .long 0x4ea6f4b7 // fmin v23.4s, v5.4s, v6.4s
819 .long 0x6e23dc11 // fmul v17.4s, v0.4s, v3.4s
Mike Kleinbb338332017-05-04 12:42:52 -0400820 .long 0x4e35f495 // fmax v21.4s, v4.4s, v21.4s
Mike Klein08aa88d2017-05-12 12:59:24 -0400821 .long 0x4eb7f497 // fmin v23.4s, v4.4s, v23.4s
822 .long 0x4eb3f65b // fmin v27.4s, v18.4s, v19.4s
823 .long 0x52a7d328 // mov w8, #0x3e990000
824 .long 0x4f03f619 // fmov v25.4s, #1.000000000000000000e+00
825 .long 0x4e33f65c // fmax v28.4s, v18.4s, v19.4s
826 .long 0x4eb7d6b5 // fsub v21.4s, v21.4s, v23.4s
827 .long 0x4ebbf63b // fmin v27.4s, v17.4s, v27.4s
Mike Kleinbb338332017-05-04 12:42:52 -0400828 .long 0x72933348 // movk w8, #0x999a
Mike Klein08aa88d2017-05-12 12:59:24 -0400829 .long 0x4ea7d737 // fsub v23.4s, v25.4s, v7.4s
830 .long 0x4e3cf63c // fmax v28.4s, v17.4s, v28.4s
831 .long 0x4ebbd652 // fsub v18.4s, v18.4s, v27.4s
832 .long 0x6e23deb5 // fmul v21.4s, v21.4s, v3.4s
833 .long 0x4e040d16 // dup v22.4s, w8
Mike Kleinbb338332017-05-04 12:42:52 -0400834 .long 0x52a7e2e8 // mov w8, #0x3f170000
Mike Klein08aa88d2017-05-12 12:59:24 -0400835 .long 0x6e20dee0 // fmul v0.4s, v23.4s, v0.4s
836 .long 0x6e21dee1 // fmul v1.4s, v23.4s, v1.4s
837 .long 0x6e22dee2 // fmul v2.4s, v23.4s, v2.4s
838 .long 0x4ea3d739 // fsub v25.4s, v25.4s, v3.4s
839 .long 0x4ebbd79c // fsub v28.4s, v28.4s, v27.4s
840 .long 0x4ebbd631 // fsub v17.4s, v17.4s, v27.4s
841 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
Mike Kleinbb338332017-05-04 12:42:52 -0400842 .long 0x728147a8 // movk w8, #0xa3d
Mike Klein08aa88d2017-05-12 12:59:24 -0400843 .long 0x4ebbd673 // fsub v19.4s, v19.4s, v27.4s
844 .long 0x4e39cc80 // fmla v0.4s, v4.4s, v25.4s
845 .long 0x4e39cca1 // fmla v1.4s, v5.4s, v25.4s
846 .long 0x4e39ccc2 // fmla v2.4s, v6.4s, v25.4s
847 .long 0x4ea0db99 // fcmeq v25.4s, v28.4s, #0.0
848 .long 0x6e31deb1 // fmul v17.4s, v21.4s, v17.4s
849 .long 0x6e3cfe52 // fdiv v18.4s, v18.4s, v28.4s
850 .long 0x4e040d18 // dup v24.4s, w8
Mike Kleinbb338332017-05-04 12:42:52 -0400851 .long 0x52a7bc28 // mov w8, #0x3de10000
Mike Klein08aa88d2017-05-12 12:59:24 -0400852 .long 0x6e33deb3 // fmul v19.4s, v21.4s, v19.4s
853 .long 0x6e3cfe31 // fdiv v17.4s, v17.4s, v28.4s
854 .long 0x4e791e52 // bic v18.16b, v18.16b, v25.16b
Mike Kleinbb338332017-05-04 12:42:52 -0400855 .long 0x7288f5c8 // movk w8, #0x47ae
Mike Klein08aa88d2017-05-12 12:59:24 -0400856 .long 0x6e3cfe73 // fdiv v19.4s, v19.4s, v28.4s
857 .long 0x4e791e31 // bic v17.16b, v17.16b, v25.16b
858 .long 0x6e38de55 // fmul v21.4s, v18.4s, v24.4s
859 .long 0x4e040d17 // dup v23.4s, w8
860 .long 0x6e38dcbb // fmul v27.4s, v5.4s, v24.4s
861 .long 0x4e791e73 // bic v19.16b, v19.16b, v25.16b
862 .long 0x4e31ced5 // fmla v21.4s, v22.4s, v17.4s
863 .long 0x4e24cedb // fmla v27.4s, v22.4s, v4.4s
864 .long 0x4e33cef5 // fmla v21.4s, v23.4s, v19.4s
865 .long 0x4e26cefb // fmla v27.4s, v23.4s, v6.4s
866 .long 0x6ea0fab5 // fneg v21.4s, v21.4s
867 .long 0x4e3bcc75 // fmla v21.4s, v3.4s, v27.4s
868 .long 0x6e27dc74 // fmul v20.4s, v3.4s, v7.4s
869 .long 0x4e27d47a // fadd v26.4s, v3.4s, v7.4s
870 .long 0x4e35d623 // fadd v3.4s, v17.4s, v21.4s
871 .long 0x4e35d651 // fadd v17.4s, v18.4s, v21.4s
872 .long 0x6e38de38 // fmul v24.4s, v17.4s, v24.4s
873 .long 0x4e35d672 // fadd v18.4s, v19.4s, v21.4s
874 .long 0x4e23ced8 // fmla v24.4s, v22.4s, v3.4s
875 .long 0x4eb2f633 // fmin v19.4s, v17.4s, v18.4s
876 .long 0x4e32cef8 // fmla v24.4s, v23.4s, v18.4s
877 .long 0x4eb3f473 // fmin v19.4s, v3.4s, v19.4s
878 .long 0x4eb8d479 // fsub v25.4s, v3.4s, v24.4s
879 .long 0x6ea0ca76 // fcmge v22.4s, v19.4s, #0.0
880 .long 0x4eb3d713 // fsub v19.4s, v24.4s, v19.4s
881 .long 0x6e39df19 // fmul v25.4s, v24.4s, v25.4s
882 .long 0x6e33ff39 // fdiv v25.4s, v25.4s, v19.4s
883 .long 0x4e32f635 // fmax v21.4s, v17.4s, v18.4s
884 .long 0x4eb61edb // mov v27.16b, v22.16b
885 .long 0x4e39d719 // fadd v25.4s, v24.4s, v25.4s
886 .long 0x4e35f475 // fmax v21.4s, v3.4s, v21.4s
887 .long 0x6e791c7b // bsl v27.16b, v3.16b, v25.16b
888 .long 0x4eb8d623 // fsub v3.4s, v17.4s, v24.4s
889 .long 0x6e23df03 // fmul v3.4s, v24.4s, v3.4s
890 .long 0x6e33fc63 // fdiv v3.4s, v3.4s, v19.4s
891 .long 0x4eb61ed9 // mov v25.16b, v22.16b
892 .long 0x4e23d703 // fadd v3.4s, v24.4s, v3.4s
893 .long 0x6e631e39 // bsl v25.16b, v17.16b, v3.16b
894 .long 0x4eb8d651 // fsub v17.4s, v18.4s, v24.4s
895 .long 0x6e31df11 // fmul v17.4s, v24.4s, v17.4s
896 .long 0x6e33fe31 // fdiv v17.4s, v17.4s, v19.4s
897 .long 0x4e31d711 // fadd v17.4s, v24.4s, v17.4s
898 .long 0x6e711e56 // bsl v22.16b, v18.16b, v17.16b
899 .long 0x4eb8d69c // fsub v28.4s, v20.4s, v24.4s
900 .long 0x4eb8d771 // fsub v17.4s, v27.4s, v24.4s
901 .long 0x4eb8d732 // fsub v18.4s, v25.4s, v24.4s
902 .long 0x4eb8d6d3 // fsub v19.4s, v22.4s, v24.4s
903 .long 0x6eb4e6b7 // fcmgt v23.4s, v21.4s, v20.4s
904 .long 0x4eb8d6b5 // fsub v21.4s, v21.4s, v24.4s
905 .long 0x6e31df91 // fmul v17.4s, v28.4s, v17.4s
906 .long 0x6e32df92 // fmul v18.4s, v28.4s, v18.4s
907 .long 0x6e33df93 // fmul v19.4s, v28.4s, v19.4s
908 .long 0x6e35fe31 // fdiv v17.4s, v17.4s, v21.4s
Mike Kleinbb338332017-05-04 12:42:52 -0400909 .long 0x6e35fe52 // fdiv v18.4s, v18.4s, v21.4s
Mike Klein08aa88d2017-05-12 12:59:24 -0400910 .long 0x6e35fe73 // fdiv v19.4s, v19.4s, v21.4s
Mike Kleinbb338332017-05-04 12:42:52 -0400911 .long 0xf8408423 // ldr x3, [x1], #8
Mike Klein08aa88d2017-05-12 12:59:24 -0400912 .long 0x4eb71ee3 // mov v3.16b, v23.16b
913 .long 0x4eb71efc // mov v28.16b, v23.16b
914 .long 0x4e31d711 // fadd v17.4s, v24.4s, v17.4s
915 .long 0x4e32d712 // fadd v18.4s, v24.4s, v18.4s
916 .long 0x4e33d713 // fadd v19.4s, v24.4s, v19.4s
917 .long 0x6f00e410 // movi v16.2d, #0x0
918 .long 0x6e7b1e23 // bsl v3.16b, v17.16b, v27.16b
919 .long 0x6e791e5c // bsl v28.16b, v18.16b, v25.16b
920 .long 0x6e761e77 // bsl v23.16b, v19.16b, v22.16b
921 .long 0x4e30f463 // fmax v3.4s, v3.4s, v16.4s
922 .long 0x4e30f791 // fmax v17.4s, v28.4s, v16.4s
923 .long 0x4e30f6f0 // fmax v16.4s, v23.4s, v16.4s
924 .long 0x4e23d400 // fadd v0.4s, v0.4s, v3.4s
925 .long 0x4e31d421 // fadd v1.4s, v1.4s, v17.4s
926 .long 0x4e30d442 // fadd v2.4s, v2.4s, v16.4s
927 .long 0x4eb4d743 // fsub v3.4s, v26.4s, v20.4s
Mike Kleinbb338332017-05-04 12:42:52 -0400928 .long 0xd61f0060 // br x3
929
930HIDDEN _sk_saturation_aarch64
931.globl _sk_saturation_aarch64
932FUNCTION(_sk_saturation_aarch64)
933_sk_saturation_aarch64:
Mike Klein08aa88d2017-05-12 12:59:24 -0400934 .long 0x6e25dc72 // fmul v18.4s, v3.4s, v5.4s
935 .long 0x6e26dc73 // fmul v19.4s, v3.4s, v6.4s
936 .long 0x4e22f435 // fmax v21.4s, v1.4s, v2.4s
937 .long 0x4ea2f437 // fmin v23.4s, v1.4s, v2.4s
938 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
939 .long 0x4e35f415 // fmax v21.4s, v0.4s, v21.4s
940 .long 0x4eb7f417 // fmin v23.4s, v0.4s, v23.4s
941 .long 0x4eb3f65b // fmin v27.4s, v18.4s, v19.4s
Mike Kleinbb338332017-05-04 12:42:52 -0400942 .long 0x52a7d328 // mov w8, #0x3e990000
Mike Klein08aa88d2017-05-12 12:59:24 -0400943 .long 0x4f03f619 // fmov v25.4s, #1.000000000000000000e+00
944 .long 0x4e33f65c // fmax v28.4s, v18.4s, v19.4s
945 .long 0x4eb7d6b5 // fsub v21.4s, v21.4s, v23.4s
946 .long 0x4ebbf63b // fmin v27.4s, v17.4s, v27.4s
Mike Kleinbb338332017-05-04 12:42:52 -0400947 .long 0x72933348 // movk w8, #0x999a
Mike Klein08aa88d2017-05-12 12:59:24 -0400948 .long 0x4ea7d737 // fsub v23.4s, v25.4s, v7.4s
949 .long 0x4e3cf63c // fmax v28.4s, v17.4s, v28.4s
950 .long 0x4ebbd652 // fsub v18.4s, v18.4s, v27.4s
951 .long 0x6e27deb5 // fmul v21.4s, v21.4s, v7.4s
952 .long 0x4e040d16 // dup v22.4s, w8
Mike Kleinbb338332017-05-04 12:42:52 -0400953 .long 0x52a7e2e8 // mov w8, #0x3f170000
Mike Klein08aa88d2017-05-12 12:59:24 -0400954 .long 0x6e20dee0 // fmul v0.4s, v23.4s, v0.4s
955 .long 0x6e21dee1 // fmul v1.4s, v23.4s, v1.4s
956 .long 0x6e22dee2 // fmul v2.4s, v23.4s, v2.4s
957 .long 0x4ea3d739 // fsub v25.4s, v25.4s, v3.4s
958 .long 0x4ebbd79c // fsub v28.4s, v28.4s, v27.4s
959 .long 0x4ebbd631 // fsub v17.4s, v17.4s, v27.4s
960 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
Mike Kleinbb338332017-05-04 12:42:52 -0400961 .long 0x728147a8 // movk w8, #0xa3d
Mike Klein08aa88d2017-05-12 12:59:24 -0400962 .long 0x4ebbd673 // fsub v19.4s, v19.4s, v27.4s
963 .long 0x4e39cc80 // fmla v0.4s, v4.4s, v25.4s
964 .long 0x4e39cca1 // fmla v1.4s, v5.4s, v25.4s
965 .long 0x4e39ccc2 // fmla v2.4s, v6.4s, v25.4s
966 .long 0x4ea0db99 // fcmeq v25.4s, v28.4s, #0.0
967 .long 0x6e31deb1 // fmul v17.4s, v21.4s, v17.4s
968 .long 0x6e3cfe52 // fdiv v18.4s, v18.4s, v28.4s
969 .long 0x4e040d18 // dup v24.4s, w8
Mike Kleinbb338332017-05-04 12:42:52 -0400970 .long 0x52a7bc28 // mov w8, #0x3de10000
Mike Klein08aa88d2017-05-12 12:59:24 -0400971 .long 0x6e33deb3 // fmul v19.4s, v21.4s, v19.4s
972 .long 0x6e3cfe31 // fdiv v17.4s, v17.4s, v28.4s
973 .long 0x4e791e52 // bic v18.16b, v18.16b, v25.16b
Mike Kleinbb338332017-05-04 12:42:52 -0400974 .long 0x7288f5c8 // movk w8, #0x47ae
Mike Klein08aa88d2017-05-12 12:59:24 -0400975 .long 0x6e3cfe73 // fdiv v19.4s, v19.4s, v28.4s
976 .long 0x4e791e31 // bic v17.16b, v17.16b, v25.16b
977 .long 0x6e38de55 // fmul v21.4s, v18.4s, v24.4s
978 .long 0x4e040d17 // dup v23.4s, w8
979 .long 0x6e38dcbb // fmul v27.4s, v5.4s, v24.4s
980 .long 0x4e791e73 // bic v19.16b, v19.16b, v25.16b
981 .long 0x4e31ced5 // fmla v21.4s, v22.4s, v17.4s
982 .long 0x4e24cedb // fmla v27.4s, v22.4s, v4.4s
983 .long 0x4e33cef5 // fmla v21.4s, v23.4s, v19.4s
984 .long 0x4e26cefb // fmla v27.4s, v23.4s, v6.4s
985 .long 0x6ea0fab5 // fneg v21.4s, v21.4s
986 .long 0x4e3bcc75 // fmla v21.4s, v3.4s, v27.4s
987 .long 0x6e27dc74 // fmul v20.4s, v3.4s, v7.4s
988 .long 0x4e27d47a // fadd v26.4s, v3.4s, v7.4s
989 .long 0x4e35d623 // fadd v3.4s, v17.4s, v21.4s
990 .long 0x4e35d651 // fadd v17.4s, v18.4s, v21.4s
991 .long 0x6e38de38 // fmul v24.4s, v17.4s, v24.4s
992 .long 0x4e35d672 // fadd v18.4s, v19.4s, v21.4s
993 .long 0x4e23ced8 // fmla v24.4s, v22.4s, v3.4s
994 .long 0x4eb2f633 // fmin v19.4s, v17.4s, v18.4s
995 .long 0x4e32cef8 // fmla v24.4s, v23.4s, v18.4s
Mike Kleinbb338332017-05-04 12:42:52 -0400996 .long 0x4eb3f473 // fmin v19.4s, v3.4s, v19.4s
Mike Klein08aa88d2017-05-12 12:59:24 -0400997 .long 0x4eb8d479 // fsub v25.4s, v3.4s, v24.4s
998 .long 0x6ea0ca76 // fcmge v22.4s, v19.4s, #0.0
999 .long 0x4eb3d713 // fsub v19.4s, v24.4s, v19.4s
1000 .long 0x6e39df19 // fmul v25.4s, v24.4s, v25.4s
1001 .long 0x6e33ff39 // fdiv v25.4s, v25.4s, v19.4s
1002 .long 0x4e32f635 // fmax v21.4s, v17.4s, v18.4s
1003 .long 0x4eb61edb // mov v27.16b, v22.16b
1004 .long 0x4e39d719 // fadd v25.4s, v24.4s, v25.4s
1005 .long 0x4e35f475 // fmax v21.4s, v3.4s, v21.4s
1006 .long 0x6e791c7b // bsl v27.16b, v3.16b, v25.16b
1007 .long 0x4eb8d623 // fsub v3.4s, v17.4s, v24.4s
1008 .long 0x6e23df03 // fmul v3.4s, v24.4s, v3.4s
Mike Kleinbb338332017-05-04 12:42:52 -04001009 .long 0x6e33fc63 // fdiv v3.4s, v3.4s, v19.4s
Mike Klein08aa88d2017-05-12 12:59:24 -04001010 .long 0x4eb61ed9 // mov v25.16b, v22.16b
1011 .long 0x4e23d703 // fadd v3.4s, v24.4s, v3.4s
1012 .long 0x6e631e39 // bsl v25.16b, v17.16b, v3.16b
1013 .long 0x4eb8d651 // fsub v17.4s, v18.4s, v24.4s
1014 .long 0x6e31df11 // fmul v17.4s, v24.4s, v17.4s
1015 .long 0x6e33fe31 // fdiv v17.4s, v17.4s, v19.4s
1016 .long 0x4e31d711 // fadd v17.4s, v24.4s, v17.4s
1017 .long 0x6e711e56 // bsl v22.16b, v18.16b, v17.16b
1018 .long 0x4eb8d69c // fsub v28.4s, v20.4s, v24.4s
1019 .long 0x4eb8d771 // fsub v17.4s, v27.4s, v24.4s
1020 .long 0x4eb8d732 // fsub v18.4s, v25.4s, v24.4s
1021 .long 0x4eb8d6d3 // fsub v19.4s, v22.4s, v24.4s
1022 .long 0x6eb4e6b7 // fcmgt v23.4s, v21.4s, v20.4s
1023 .long 0x4eb8d6b5 // fsub v21.4s, v21.4s, v24.4s
1024 .long 0x6e31df91 // fmul v17.4s, v28.4s, v17.4s
1025 .long 0x6e32df92 // fmul v18.4s, v28.4s, v18.4s
1026 .long 0x6e33df93 // fmul v19.4s, v28.4s, v19.4s
1027 .long 0x6e35fe31 // fdiv v17.4s, v17.4s, v21.4s
1028 .long 0x6e35fe52 // fdiv v18.4s, v18.4s, v21.4s
1029 .long 0x6e35fe73 // fdiv v19.4s, v19.4s, v21.4s
Mike Kleinbb338332017-05-04 12:42:52 -04001030 .long 0xf8408423 // ldr x3, [x1], #8
Mike Klein08aa88d2017-05-12 12:59:24 -04001031 .long 0x4eb71ee3 // mov v3.16b, v23.16b
1032 .long 0x4eb71efc // mov v28.16b, v23.16b
1033 .long 0x4e31d711 // fadd v17.4s, v24.4s, v17.4s
1034 .long 0x4e32d712 // fadd v18.4s, v24.4s, v18.4s
1035 .long 0x4e33d713 // fadd v19.4s, v24.4s, v19.4s
1036 .long 0x6f00e410 // movi v16.2d, #0x0
1037 .long 0x6e7b1e23 // bsl v3.16b, v17.16b, v27.16b
1038 .long 0x6e791e5c // bsl v28.16b, v18.16b, v25.16b
1039 .long 0x6e761e77 // bsl v23.16b, v19.16b, v22.16b
1040 .long 0x4e30f463 // fmax v3.4s, v3.4s, v16.4s
1041 .long 0x4e30f791 // fmax v17.4s, v28.4s, v16.4s
1042 .long 0x4e30f6f0 // fmax v16.4s, v23.4s, v16.4s
1043 .long 0x4e23d400 // fadd v0.4s, v0.4s, v3.4s
1044 .long 0x4e31d421 // fadd v1.4s, v1.4s, v17.4s
1045 .long 0x4e30d442 // fadd v2.4s, v2.4s, v16.4s
1046 .long 0x4eb4d743 // fsub v3.4s, v26.4s, v20.4s
Mike Kleinbb338332017-05-04 12:42:52 -04001047 .long 0xd61f0060 // br x3
1048
1049HIDDEN _sk_color_aarch64
1050.globl _sk_color_aarch64
1051FUNCTION(_sk_color_aarch64)
1052_sk_color_aarch64:
1053 .long 0x52a7d328 // mov w8, #0x3e990000
Mike Kleinbb338332017-05-04 12:42:52 -04001054 .long 0x72933348 // movk w8, #0x999a
Mike Klein08aa88d2017-05-12 12:59:24 -04001055 .long 0x4e040d12 // dup v18.4s, w8
Mike Kleinbb338332017-05-04 12:42:52 -04001056 .long 0x52a7e2e8 // mov w8, #0x3f170000
Mike Kleinbb338332017-05-04 12:42:52 -04001057 .long 0x728147a8 // movk w8, #0xa3d
Mike Klein08aa88d2017-05-12 12:59:24 -04001058 .long 0x6e27dc33 // fmul v19.4s, v1.4s, v7.4s
Mike Kleinbb338332017-05-04 12:42:52 -04001059 .long 0x4e040d15 // dup v21.4s, w8
1060 .long 0x52a7bc28 // mov w8, #0x3de10000
Mike Klein08aa88d2017-05-12 12:59:24 -04001061 .long 0x6e27dc11 // fmul v17.4s, v0.4s, v7.4s
Mike Kleinbb338332017-05-04 12:42:52 -04001062 .long 0x7288f5c8 // movk w8, #0x47ae
Mike Klein08aa88d2017-05-12 12:59:24 -04001063 .long 0x4f03f617 // fmov v23.4s, #1.000000000000000000e+00
1064 .long 0x6e35de7c // fmul v28.4s, v19.4s, v21.4s
1065 .long 0x6e27dc54 // fmul v20.4s, v2.4s, v7.4s
1066 .long 0x4e040d19 // dup v25.4s, w8
1067 .long 0x4ea7d6fa // fsub v26.4s, v23.4s, v7.4s
1068 .long 0x6e35dcbb // fmul v27.4s, v5.4s, v21.4s
1069 .long 0x4e31ce5c // fmla v28.4s, v18.4s, v17.4s
1070 .long 0x4ea3d6f7 // fsub v23.4s, v23.4s, v3.4s
1071 .long 0x6e20df40 // fmul v0.4s, v26.4s, v0.4s
1072 .long 0x6e21df41 // fmul v1.4s, v26.4s, v1.4s
1073 .long 0x6e22df42 // fmul v2.4s, v26.4s, v2.4s
1074 .long 0x4e24ce5b // fmla v27.4s, v18.4s, v4.4s
1075 .long 0x4e34cf3c // fmla v28.4s, v25.4s, v20.4s
1076 .long 0x4e37cc80 // fmla v0.4s, v4.4s, v23.4s
1077 .long 0x4e37cca1 // fmla v1.4s, v5.4s, v23.4s
1078 .long 0x4e37ccc2 // fmla v2.4s, v6.4s, v23.4s
1079 .long 0x4e26cf3b // fmla v27.4s, v25.4s, v6.4s
1080 .long 0x6ea0fb97 // fneg v23.4s, v28.4s
1081 .long 0x4e3bcc77 // fmla v23.4s, v3.4s, v27.4s
1082 .long 0x6e27dc70 // fmul v16.4s, v3.4s, v7.4s
1083 .long 0x4e27d478 // fadd v24.4s, v3.4s, v7.4s
1084 .long 0x4e37d623 // fadd v3.4s, v17.4s, v23.4s
1085 .long 0x4e37d671 // fadd v17.4s, v19.4s, v23.4s
1086 .long 0x6e35de35 // fmul v21.4s, v17.4s, v21.4s
1087 .long 0x4e37d693 // fadd v19.4s, v20.4s, v23.4s
1088 .long 0x4e23ce55 // fmla v21.4s, v18.4s, v3.4s
1089 .long 0x4eb3f634 // fmin v20.4s, v17.4s, v19.4s
1090 .long 0x4e33cf35 // fmla v21.4s, v25.4s, v19.4s
1091 .long 0x4eb4f474 // fmin v20.4s, v3.4s, v20.4s
1092 .long 0x4eb5d47a // fsub v26.4s, v3.4s, v21.4s
1093 .long 0x6ea0ca92 // fcmge v18.4s, v20.4s, #0.0
1094 .long 0x4eb4d6b4 // fsub v20.4s, v21.4s, v20.4s
1095 .long 0x6e3adeba // fmul v26.4s, v21.4s, v26.4s
1096 .long 0x6e34ff5a // fdiv v26.4s, v26.4s, v20.4s
1097 .long 0x4e33f637 // fmax v23.4s, v17.4s, v19.4s
1098 .long 0x4eb21e5b // mov v27.16b, v18.16b
1099 .long 0x4e3ad6ba // fadd v26.4s, v21.4s, v26.4s
1100 .long 0x4e37f477 // fmax v23.4s, v3.4s, v23.4s
1101 .long 0x6e7a1c7b // bsl v27.16b, v3.16b, v26.16b
1102 .long 0x4eb5d623 // fsub v3.4s, v17.4s, v21.4s
1103 .long 0x6e23dea3 // fmul v3.4s, v21.4s, v3.4s
Mike Kleinbb338332017-05-04 12:42:52 -04001104 .long 0x6e34fc63 // fdiv v3.4s, v3.4s, v20.4s
Mike Klein08aa88d2017-05-12 12:59:24 -04001105 .long 0x4eb21e5a // mov v26.16b, v18.16b
Mike Kleinbb338332017-05-04 12:42:52 -04001106 .long 0x4e23d6a3 // fadd v3.4s, v21.4s, v3.4s
Mike Klein08aa88d2017-05-12 12:59:24 -04001107 .long 0x6e631e3a // bsl v26.16b, v17.16b, v3.16b
1108 .long 0x4eb5d671 // fsub v17.4s, v19.4s, v21.4s
1109 .long 0x6e31deb1 // fmul v17.4s, v21.4s, v17.4s
1110 .long 0x6e34fe31 // fdiv v17.4s, v17.4s, v20.4s
1111 .long 0x4e31d6b1 // fadd v17.4s, v21.4s, v17.4s
1112 .long 0x6e711e72 // bsl v18.16b, v19.16b, v17.16b
1113 .long 0x4eb5d61c // fsub v28.4s, v16.4s, v21.4s
1114 .long 0x4eb5d771 // fsub v17.4s, v27.4s, v21.4s
1115 .long 0x4eb5d753 // fsub v19.4s, v26.4s, v21.4s
1116 .long 0x4eb5d654 // fsub v20.4s, v18.4s, v21.4s
1117 .long 0x6eb0e6f9 // fcmgt v25.4s, v23.4s, v16.4s
1118 .long 0x4eb5d6f7 // fsub v23.4s, v23.4s, v21.4s
1119 .long 0x6e31df91 // fmul v17.4s, v28.4s, v17.4s
1120 .long 0x6e33df93 // fmul v19.4s, v28.4s, v19.4s
1121 .long 0x6e34df94 // fmul v20.4s, v28.4s, v20.4s
1122 .long 0x6e37fe31 // fdiv v17.4s, v17.4s, v23.4s
1123 .long 0x6e37fe73 // fdiv v19.4s, v19.4s, v23.4s
1124 .long 0x6e37fe94 // fdiv v20.4s, v20.4s, v23.4s
1125 .long 0xf8408423 // ldr x3, [x1], #8
1126 .long 0x4eb91f23 // mov v3.16b, v25.16b
1127 .long 0x4eb91f3c // mov v28.16b, v25.16b
1128 .long 0x4e31d6b1 // fadd v17.4s, v21.4s, v17.4s
1129 .long 0x4e33d6b3 // fadd v19.4s, v21.4s, v19.4s
1130 .long 0x4e34d6b4 // fadd v20.4s, v21.4s, v20.4s
1131 .long 0x6f00e416 // movi v22.2d, #0x0
1132 .long 0x6e7b1e23 // bsl v3.16b, v17.16b, v27.16b
1133 .long 0x6e7a1e7c // bsl v28.16b, v19.16b, v26.16b
1134 .long 0x6e721e99 // bsl v25.16b, v20.16b, v18.16b
1135 .long 0x4e36f463 // fmax v3.4s, v3.4s, v22.4s
1136 .long 0x4e36f791 // fmax v17.4s, v28.4s, v22.4s
1137 .long 0x4e36f732 // fmax v18.4s, v25.4s, v22.4s
1138 .long 0x4e23d400 // fadd v0.4s, v0.4s, v3.4s
1139 .long 0x4e31d421 // fadd v1.4s, v1.4s, v17.4s
1140 .long 0x4e32d442 // fadd v2.4s, v2.4s, v18.4s
1141 .long 0x4eb0d703 // fsub v3.4s, v24.4s, v16.4s
Mike Kleinbb338332017-05-04 12:42:52 -04001142 .long 0xd61f0060 // br x3
1143
1144HIDDEN _sk_luminosity_aarch64
1145.globl _sk_luminosity_aarch64
1146FUNCTION(_sk_luminosity_aarch64)
1147_sk_luminosity_aarch64:
1148 .long 0x52a7d328 // mov w8, #0x3e990000
1149 .long 0x72933348 // movk w8, #0x999a
Mike Klein08aa88d2017-05-12 12:59:24 -04001150 .long 0x4e040d12 // dup v18.4s, w8
Mike Kleinbb338332017-05-04 12:42:52 -04001151 .long 0x52a7e2e8 // mov w8, #0x3f170000
Mike Kleinbb338332017-05-04 12:42:52 -04001152 .long 0x728147a8 // movk w8, #0xa3d
Mike Klein08aa88d2017-05-12 12:59:24 -04001153 .long 0x6e25dc73 // fmul v19.4s, v3.4s, v5.4s
Mike Kleinbb338332017-05-04 12:42:52 -04001154 .long 0x4e040d15 // dup v21.4s, w8
Mike Kleinbb338332017-05-04 12:42:52 -04001155 .long 0x52a7bc28 // mov w8, #0x3de10000
Mike Klein08aa88d2017-05-12 12:59:24 -04001156 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
Mike Kleinbb338332017-05-04 12:42:52 -04001157 .long 0x7288f5c8 // movk w8, #0x47ae
Mike Klein08aa88d2017-05-12 12:59:24 -04001158 .long 0x4f03f617 // fmov v23.4s, #1.000000000000000000e+00
1159 .long 0x6e35de7b // fmul v27.4s, v19.4s, v21.4s
1160 .long 0x6e26dc74 // fmul v20.4s, v3.4s, v6.4s
1161 .long 0x6e27dc70 // fmul v16.4s, v3.4s, v7.4s
1162 .long 0x4e27d478 // fadd v24.4s, v3.4s, v7.4s
1163 .long 0x4e040d19 // dup v25.4s, w8
1164 .long 0x4ea7d6fa // fsub v26.4s, v23.4s, v7.4s
1165 .long 0x4ea3d6e3 // fsub v3.4s, v23.4s, v3.4s
1166 .long 0x6e35dc37 // fmul v23.4s, v1.4s, v21.4s
1167 .long 0x4e31ce5b // fmla v27.4s, v18.4s, v17.4s
1168 .long 0x4e20ce57 // fmla v23.4s, v18.4s, v0.4s
1169 .long 0x4e34cf3b // fmla v27.4s, v25.4s, v20.4s
1170 .long 0x6e20df5c // fmul v28.4s, v26.4s, v0.4s
1171 .long 0x4e22cf37 // fmla v23.4s, v25.4s, v2.4s
1172 .long 0x6ea0fb60 // fneg v0.4s, v27.4s
1173 .long 0x6e21df41 // fmul v1.4s, v26.4s, v1.4s
1174 .long 0x6e22df5a // fmul v26.4s, v26.4s, v2.4s
1175 .long 0x4e37cce0 // fmla v0.4s, v7.4s, v23.4s
1176 .long 0x4e23cc9c // fmla v28.4s, v4.4s, v3.4s
1177 .long 0x4e23cca1 // fmla v1.4s, v5.4s, v3.4s
1178 .long 0x4e23ccda // fmla v26.4s, v6.4s, v3.4s
1179 .long 0x4e20d663 // fadd v3.4s, v19.4s, v0.4s
1180 .long 0x4e20d622 // fadd v2.4s, v17.4s, v0.4s
1181 .long 0x4e20d680 // fadd v0.4s, v20.4s, v0.4s
1182 .long 0x6e35dc74 // fmul v20.4s, v3.4s, v21.4s
1183 .long 0x4e22ce54 // fmla v20.4s, v18.4s, v2.4s
1184 .long 0x4ea0f471 // fmin v17.4s, v3.4s, v0.4s
1185 .long 0x4e20cf34 // fmla v20.4s, v25.4s, v0.4s
1186 .long 0x4eb1f451 // fmin v17.4s, v2.4s, v17.4s
1187 .long 0x4eb4d457 // fsub v23.4s, v2.4s, v20.4s
1188 .long 0x6ea0ca32 // fcmge v18.4s, v17.4s, #0.0
1189 .long 0x4eb1d691 // fsub v17.4s, v20.4s, v17.4s
1190 .long 0x6e37de97 // fmul v23.4s, v20.4s, v23.4s
1191 .long 0x6e31fef7 // fdiv v23.4s, v23.4s, v17.4s
1192 .long 0x4e20f473 // fmax v19.4s, v3.4s, v0.4s
1193 .long 0x4eb21e59 // mov v25.16b, v18.16b
1194 .long 0x4e37d697 // fadd v23.4s, v20.4s, v23.4s
1195 .long 0x4e33f453 // fmax v19.4s, v2.4s, v19.4s
1196 .long 0x6e771c59 // bsl v25.16b, v2.16b, v23.16b
1197 .long 0x4eb4d462 // fsub v2.4s, v3.4s, v20.4s
1198 .long 0x6e22de82 // fmul v2.4s, v20.4s, v2.4s
1199 .long 0x6e31fc42 // fdiv v2.4s, v2.4s, v17.4s
1200 .long 0x4eb21e57 // mov v23.16b, v18.16b
1201 .long 0x4e22d682 // fadd v2.4s, v20.4s, v2.4s
1202 .long 0x6e621c77 // bsl v23.16b, v3.16b, v2.16b
1203 .long 0x4eb4d403 // fsub v3.4s, v0.4s, v20.4s
1204 .long 0x6e23de83 // fmul v3.4s, v20.4s, v3.4s
1205 .long 0x6e31fc63 // fdiv v3.4s, v3.4s, v17.4s
1206 .long 0x4e23d683 // fadd v3.4s, v20.4s, v3.4s
1207 .long 0x6e631c12 // bsl v18.16b, v0.16b, v3.16b
1208 .long 0x4eb4d61b // fsub v27.4s, v16.4s, v20.4s
1209 .long 0x4eb4d720 // fsub v0.4s, v25.4s, v20.4s
1210 .long 0x4eb4d6e3 // fsub v3.4s, v23.4s, v20.4s
1211 .long 0x4eb4d651 // fsub v17.4s, v18.4s, v20.4s
1212 .long 0x6eb0e675 // fcmgt v21.4s, v19.4s, v16.4s
1213 .long 0x4eb4d673 // fsub v19.4s, v19.4s, v20.4s
1214 .long 0x6e20df60 // fmul v0.4s, v27.4s, v0.4s
1215 .long 0x6e23df63 // fmul v3.4s, v27.4s, v3.4s
1216 .long 0x6e31df71 // fmul v17.4s, v27.4s, v17.4s
1217 .long 0x6e33fc00 // fdiv v0.4s, v0.4s, v19.4s
1218 .long 0x6e33fc63 // fdiv v3.4s, v3.4s, v19.4s
1219 .long 0x6e33fe31 // fdiv v17.4s, v17.4s, v19.4s
Mike Kleinbb338332017-05-04 12:42:52 -04001220 .long 0xf8408423 // ldr x3, [x1], #8
Mike Klein08aa88d2017-05-12 12:59:24 -04001221 .long 0x4eb51ea2 // mov v2.16b, v21.16b
1222 .long 0x4eb51ebb // mov v27.16b, v21.16b
1223 .long 0x4e20d680 // fadd v0.4s, v20.4s, v0.4s
1224 .long 0x4e23d683 // fadd v3.4s, v20.4s, v3.4s
1225 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
1226 .long 0x6f00e416 // movi v22.2d, #0x0
1227 .long 0x6e791c02 // bsl v2.16b, v0.16b, v25.16b
1228 .long 0x6e771c7b // bsl v27.16b, v3.16b, v23.16b
1229 .long 0x6e721e35 // bsl v21.16b, v17.16b, v18.16b
1230 .long 0x4e36f440 // fmax v0.4s, v2.4s, v22.4s
1231 .long 0x4e36f762 // fmax v2.4s, v27.4s, v22.4s
1232 .long 0x4e36f6a3 // fmax v3.4s, v21.4s, v22.4s
1233 .long 0x4e20d780 // fadd v0.4s, v28.4s, v0.4s
1234 .long 0x4e22d421 // fadd v1.4s, v1.4s, v2.4s
1235 .long 0x4e23d742 // fadd v2.4s, v26.4s, v3.4s
1236 .long 0x4eb0d703 // fsub v3.4s, v24.4s, v16.4s
Mike Kleinbb338332017-05-04 12:42:52 -04001237 .long 0xd61f0060 // br x3
1238
Mike Klein7c4af542017-03-29 18:21:14 -04001239HIDDEN _sk_clamp_0_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001240.globl _sk_clamp_0_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001241FUNCTION(_sk_clamp_0_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001242_sk_clamp_0_aarch64:
1243 .long 0xf8408423 // ldr x3, [x1], #8
1244 .long 0x6f00e410 // movi v16.2d, #0x0
1245 .long 0x4e30f400 // fmax v0.4s, v0.4s, v16.4s
1246 .long 0x4e30f421 // fmax v1.4s, v1.4s, v16.4s
1247 .long 0x4e30f442 // fmax v2.4s, v2.4s, v16.4s
1248 .long 0x4e30f463 // fmax v3.4s, v3.4s, v16.4s
1249 .long 0xd61f0060 // br x3
1250
Mike Klein7c4af542017-03-29 18:21:14 -04001251HIDDEN _sk_clamp_1_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001252.globl _sk_clamp_1_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001253FUNCTION(_sk_clamp_1_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001254_sk_clamp_1_aarch64:
1255 .long 0xf8408423 // ldr x3, [x1], #8
1256 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
1257 .long 0x4eb0f400 // fmin v0.4s, v0.4s, v16.4s
1258 .long 0x4eb0f421 // fmin v1.4s, v1.4s, v16.4s
1259 .long 0x4eb0f442 // fmin v2.4s, v2.4s, v16.4s
1260 .long 0x4eb0f463 // fmin v3.4s, v3.4s, v16.4s
1261 .long 0xd61f0060 // br x3
1262
Mike Klein7c4af542017-03-29 18:21:14 -04001263HIDDEN _sk_clamp_a_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001264.globl _sk_clamp_a_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001265FUNCTION(_sk_clamp_a_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001266_sk_clamp_a_aarch64:
1267 .long 0xf8408423 // ldr x3, [x1], #8
1268 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
1269 .long 0x4eb0f463 // fmin v3.4s, v3.4s, v16.4s
1270 .long 0x4ea3f400 // fmin v0.4s, v0.4s, v3.4s
1271 .long 0x4ea3f421 // fmin v1.4s, v1.4s, v3.4s
1272 .long 0x4ea3f442 // fmin v2.4s, v2.4s, v3.4s
1273 .long 0xd61f0060 // br x3
1274
Mike Klein7c4af542017-03-29 18:21:14 -04001275HIDDEN _sk_set_rgb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001276.globl _sk_set_rgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001277FUNCTION(_sk_set_rgb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001278_sk_set_rgb_aarch64:
1279 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1280 .long 0xaa0803e9 // mov x9, x8
1281 .long 0x4ddfc920 // ld1r {v0.4s}, [x9], #4
1282 .long 0x91002108 // add x8, x8, #0x8
1283 .long 0x4d40c902 // ld1r {v2.4s}, [x8]
1284 .long 0x4d40c921 // ld1r {v1.4s}, [x9]
1285 .long 0xd61f0060 // br x3
1286
Mike Klein7c4af542017-03-29 18:21:14 -04001287HIDDEN _sk_swap_rb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001288.globl _sk_swap_rb_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001289FUNCTION(_sk_swap_rb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001290_sk_swap_rb_aarch64:
1291 .long 0xf8408423 // ldr x3, [x1], #8
1292 .long 0x4ea01c10 // mov v16.16b, v0.16b
1293 .long 0x4ea21c40 // mov v0.16b, v2.16b
1294 .long 0x4eb01e02 // mov v2.16b, v16.16b
1295 .long 0xd61f0060 // br x3
1296
Mike Klein7c4af542017-03-29 18:21:14 -04001297HIDDEN _sk_swap_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001298.globl _sk_swap_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001299FUNCTION(_sk_swap_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001300_sk_swap_aarch64:
1301 .long 0xf8408423 // ldr x3, [x1], #8
1302 .long 0x4ea31c70 // mov v16.16b, v3.16b
1303 .long 0x4ea21c51 // mov v17.16b, v2.16b
1304 .long 0x4ea11c32 // mov v18.16b, v1.16b
1305 .long 0x4ea01c13 // mov v19.16b, v0.16b
1306 .long 0x4ea41c80 // mov v0.16b, v4.16b
1307 .long 0x4ea51ca1 // mov v1.16b, v5.16b
1308 .long 0x4ea61cc2 // mov v2.16b, v6.16b
1309 .long 0x4ea71ce3 // mov v3.16b, v7.16b
1310 .long 0x4eb31e64 // mov v4.16b, v19.16b
1311 .long 0x4eb21e45 // mov v5.16b, v18.16b
1312 .long 0x4eb11e26 // mov v6.16b, v17.16b
1313 .long 0x4eb01e07 // mov v7.16b, v16.16b
1314 .long 0xd61f0060 // br x3
1315
Mike Klein7c4af542017-03-29 18:21:14 -04001316HIDDEN _sk_move_src_dst_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001317.globl _sk_move_src_dst_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001318FUNCTION(_sk_move_src_dst_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001319_sk_move_src_dst_aarch64:
1320 .long 0xf8408423 // ldr x3, [x1], #8
1321 .long 0x4ea01c04 // mov v4.16b, v0.16b
1322 .long 0x4ea11c25 // mov v5.16b, v1.16b
1323 .long 0x4ea21c46 // mov v6.16b, v2.16b
1324 .long 0x4ea31c67 // mov v7.16b, v3.16b
1325 .long 0xd61f0060 // br x3
1326
Mike Klein7c4af542017-03-29 18:21:14 -04001327HIDDEN _sk_move_dst_src_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001328.globl _sk_move_dst_src_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001329FUNCTION(_sk_move_dst_src_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001330_sk_move_dst_src_aarch64:
1331 .long 0xf8408423 // ldr x3, [x1], #8
1332 .long 0x4ea41c80 // mov v0.16b, v4.16b
1333 .long 0x4ea51ca1 // mov v1.16b, v5.16b
1334 .long 0x4ea61cc2 // mov v2.16b, v6.16b
1335 .long 0x4ea71ce3 // mov v3.16b, v7.16b
1336 .long 0xd61f0060 // br x3
1337
Mike Klein7c4af542017-03-29 18:21:14 -04001338HIDDEN _sk_premul_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001339.globl _sk_premul_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001340FUNCTION(_sk_premul_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001341_sk_premul_aarch64:
1342 .long 0xf8408423 // ldr x3, [x1], #8
1343 .long 0x6e23dc00 // fmul v0.4s, v0.4s, v3.4s
1344 .long 0x6e23dc21 // fmul v1.4s, v1.4s, v3.4s
1345 .long 0x6e23dc42 // fmul v2.4s, v2.4s, v3.4s
1346 .long 0xd61f0060 // br x3
1347
Mike Klein7c4af542017-03-29 18:21:14 -04001348HIDDEN _sk_unpremul_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001349.globl _sk_unpremul_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001350FUNCTION(_sk_unpremul_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001351_sk_unpremul_aarch64:
1352 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
1353 .long 0xf8408423 // ldr x3, [x1], #8
1354 .long 0x4ea0d870 // fcmeq v16.4s, v3.4s, #0.0
1355 .long 0x6e23fe31 // fdiv v17.4s, v17.4s, v3.4s
1356 .long 0x4e701e30 // bic v16.16b, v17.16b, v16.16b
1357 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
1358 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
1359 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
1360 .long 0xd61f0060 // br x3
1361
Mike Klein7c4af542017-03-29 18:21:14 -04001362HIDDEN _sk_from_srgb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001363.globl _sk_from_srgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001364FUNCTION(_sk_from_srgb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001365_sk_from_srgb_aarch64:
1366 .long 0x52a7d328 // mov w8, #0x3e990000
1367 .long 0x72933348 // movk w8, #0x999a
1368 .long 0x4e040d10 // dup v16.4s, w8
1369 .long 0x52a7e648 // mov w8, #0x3f320000
1370 .long 0x7291eb88 // movk w8, #0x8f5c
1371 .long 0x4e040d11 // dup v17.4s, w8
1372 .long 0x52a76468 // mov w8, #0x3b230000
1373 .long 0x729ae148 // movk w8, #0xd70a
1374 .long 0x4e040d12 // dup v18.4s, w8
1375 .long 0x52a7b3c8 // mov w8, #0x3d9e0000
1376 .long 0x72907228 // movk w8, #0x8391
1377 .long 0x6e22dc54 // fmul v20.4s, v2.4s, v2.4s
1378 .long 0x4eb11e35 // mov v21.16b, v17.16b
1379 .long 0x4eb11e37 // mov v23.16b, v17.16b
1380 .long 0x4e22ce11 // fmla v17.4s, v16.4s, v2.4s
1381 .long 0x4eb21e56 // mov v22.16b, v18.16b
1382 .long 0x4eb21e58 // mov v24.16b, v18.16b
1383 .long 0x4e34ce32 // fmla v18.4s, v17.4s, v20.4s
1384 .long 0x4e040d11 // dup v17.4s, w8
1385 .long 0x52a7ac28 // mov w8, #0x3d610000
1386 .long 0x6e20dc13 // fmul v19.4s, v0.4s, v0.4s
1387 .long 0x7288f5c8 // movk w8, #0x47ae
1388 .long 0x4e20ce15 // fmla v21.4s, v16.4s, v0.4s
1389 .long 0xf8408423 // ldr x3, [x1], #8
1390 .long 0x6e21dc34 // fmul v20.4s, v1.4s, v1.4s
1391 .long 0x4e33ceb6 // fmla v22.4s, v21.4s, v19.4s
1392 .long 0x4e040d13 // dup v19.4s, w8
1393 .long 0x4e21ce17 // fmla v23.4s, v16.4s, v1.4s
1394 .long 0x6e31dc15 // fmul v21.4s, v0.4s, v17.4s
1395 .long 0x6ea0e660 // fcmgt v0.4s, v19.4s, v0.4s
1396 .long 0x6e31dc30 // fmul v16.4s, v1.4s, v17.4s
1397 .long 0x6ea1e661 // fcmgt v1.4s, v19.4s, v1.4s
1398 .long 0x6e31dc51 // fmul v17.4s, v2.4s, v17.4s
1399 .long 0x6ea2e662 // fcmgt v2.4s, v19.4s, v2.4s
1400 .long 0x4e34cef8 // fmla v24.4s, v23.4s, v20.4s
1401 .long 0x6e761ea0 // bsl v0.16b, v21.16b, v22.16b
1402 .long 0x6e781e01 // bsl v1.16b, v16.16b, v24.16b
1403 .long 0x6e721e22 // bsl v2.16b, v17.16b, v18.16b
1404 .long 0xd61f0060 // br x3
1405
Mike Klein7c4af542017-03-29 18:21:14 -04001406HIDDEN _sk_to_srgb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001407.globl _sk_to_srgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001408FUNCTION(_sk_to_srgb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001409_sk_to_srgb_aarch64:
Mike Kleinf45e3d72017-05-15 17:36:59 -04001410 .long 0x52a829c8 // mov w8, #0x414e0000
1411 .long 0x72970a48 // movk w8, #0xb852
1412 .long 0x4e040d11 // dup v17.4s, w8
1413 .long 0x52b76408 // mov w8, #0xbb200000
1414 .long 0x729ae728 // movk w8, #0xd739
Mike Kleind7e06ae2017-03-29 16:33:06 -04001415 .long 0x4e040d12 // dup v18.4s, w8
Mike Kleinf45e3d72017-05-15 17:36:59 -04001416 .long 0x52a77308 // mov w8, #0x3b980000
1417 .long 0x72963508 // movk w8, #0xb1a8
1418 .long 0x6ea1d810 // frsqrte v16.4s, v0.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04001419 .long 0x4e040d13 // dup v19.4s, w8
Mike Kleinf45e3d72017-05-15 17:36:59 -04001420 .long 0x52a78c48 // mov w8, #0x3c620000
Mike Kleind7e06ae2017-03-29 16:33:06 -04001421 .long 0x6ea1d834 // frsqrte v20.4s, v1.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04001422 .long 0x6ea1d855 // frsqrte v21.4s, v2.4s
Mike Kleinf45e3d72017-05-15 17:36:59 -04001423 .long 0x7293f748 // movk w8, #0x9fba
1424 .long 0x6e30de16 // fmul v22.4s, v16.4s, v16.4s
1425 .long 0x6e34de97 // fmul v23.4s, v20.4s, v20.4s
1426 .long 0x6e35deb8 // fmul v24.4s, v21.4s, v21.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04001427 .long 0x4eb6fc16 // frsqrts v22.4s, v0.4s, v22.4s
Mike Kleinf45e3d72017-05-15 17:36:59 -04001428 .long 0x6e31dc19 // fmul v25.4s, v0.4s, v17.4s
1429 .long 0x6ea0e660 // fcmgt v0.4s, v19.4s, v0.4s
1430 .long 0x4eb7fc37 // frsqrts v23.4s, v1.4s, v23.4s
1431 .long 0x6e31dc3a // fmul v26.4s, v1.4s, v17.4s
1432 .long 0x6ea1e661 // fcmgt v1.4s, v19.4s, v1.4s
1433 .long 0x4eb8fc58 // frsqrts v24.4s, v2.4s, v24.4s
1434 .long 0x6e31dc51 // fmul v17.4s, v2.4s, v17.4s
1435 .long 0x6ea2e662 // fcmgt v2.4s, v19.4s, v2.4s
1436 .long 0x4e040d13 // dup v19.4s, w8
1437 .long 0x52a7f228 // mov w8, #0x3f910000
1438 .long 0x728281a8 // movk w8, #0x140d
1439 .long 0x6e36de10 // fmul v16.4s, v16.4s, v22.4s
1440 .long 0x4e040d16 // dup v22.4s, w8
1441 .long 0x6e37de94 // fmul v20.4s, v20.4s, v23.4s
1442 .long 0x4eb31e77 // mov v23.16b, v19.16b
1443 .long 0x6e38deb5 // fmul v21.4s, v21.4s, v24.4s
1444 .long 0x4eb31e78 // mov v24.16b, v19.16b
1445 .long 0x52a7c288 // mov w8, #0x3e140000
1446 .long 0x4e30ce57 // fmla v23.4s, v18.4s, v16.4s
1447 .long 0x4e34ce58 // fmla v24.4s, v18.4s, v20.4s
1448 .long 0x4e35ce53 // fmla v19.4s, v18.4s, v21.4s
1449 .long 0x4eb61ed2 // mov v18.16b, v22.16b
1450 .long 0x7293d1a8 // movk w8, #0x9e8d
1451 .long 0x4e30cef2 // fmla v18.4s, v23.4s, v16.4s
1452 .long 0x4eb61ed7 // mov v23.16b, v22.16b
1453 .long 0x4e35ce76 // fmla v22.4s, v19.4s, v21.4s
1454 .long 0x4e040d13 // dup v19.4s, w8
1455 .long 0x4e33d610 // fadd v16.4s, v16.4s, v19.4s
1456 .long 0x4e34cf17 // fmla v23.4s, v24.4s, v20.4s
1457 .long 0x4e33d694 // fadd v20.4s, v20.4s, v19.4s
1458 .long 0x4e33d6b3 // fadd v19.4s, v21.4s, v19.4s
1459 .long 0x4ea1da15 // frecpe v21.4s, v16.4s
1460 .long 0x4e35fe10 // frecps v16.4s, v16.4s, v21.4s
1461 .long 0x6e30deb0 // fmul v16.4s, v21.4s, v16.4s
1462 .long 0x4ea1da95 // frecpe v21.4s, v20.4s
1463 .long 0x4e35fe94 // frecps v20.4s, v20.4s, v21.4s
1464 .long 0x6e34deb4 // fmul v20.4s, v21.4s, v20.4s
1465 .long 0x4ea1da75 // frecpe v21.4s, v19.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04001466 .long 0xf8408423 // ldr x3, [x1], #8
Mike Kleinf45e3d72017-05-15 17:36:59 -04001467 .long 0x4e35fe73 // frecps v19.4s, v19.4s, v21.4s
1468 .long 0x6e33deb3 // fmul v19.4s, v21.4s, v19.4s
1469 .long 0x6e30de50 // fmul v16.4s, v18.4s, v16.4s
1470 .long 0x6e34def2 // fmul v18.4s, v23.4s, v20.4s
1471 .long 0x6e33ded3 // fmul v19.4s, v22.4s, v19.4s
1472 .long 0x6e701f20 // bsl v0.16b, v25.16b, v16.16b
1473 .long 0x6e721f41 // bsl v1.16b, v26.16b, v18.16b
1474 .long 0x6e731e22 // bsl v2.16b, v17.16b, v19.16b
Mike Kleind7e06ae2017-03-29 16:33:06 -04001475 .long 0xd61f0060 // br x3
1476
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001477HIDDEN _sk_rgb_to_hsl_aarch64
1478.globl _sk_rgb_to_hsl_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001479FUNCTION(_sk_rgb_to_hsl_aarch64)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001480_sk_rgb_to_hsl_aarch64:
1481 .long 0x4e21f410 // fmax v16.4s, v0.4s, v1.4s
1482 .long 0x4ea1f411 // fmin v17.4s, v0.4s, v1.4s
1483 .long 0x6ea1e454 // fcmgt v20.4s, v2.4s, v1.4s
1484 .long 0x4f00f715 // fmov v21.4s, #6.000000000000000000e+00
1485 .long 0x4e22f610 // fmax v16.4s, v16.4s, v2.4s
1486 .long 0x4ea2f631 // fmin v17.4s, v17.4s, v2.4s
1487 .long 0x4f03f612 // fmov v18.4s, #1.000000000000000000e+00
1488 .long 0x4e341eb4 // and v20.16b, v21.16b, v20.16b
1489 .long 0x4eb1d615 // fsub v21.4s, v16.4s, v17.4s
1490 .long 0x4ea2d433 // fsub v19.4s, v1.4s, v2.4s
1491 .long 0x4ea0d456 // fsub v22.4s, v2.4s, v0.4s
1492 .long 0x4f026417 // movi v23.4s, #0x40, lsl #24
1493 .long 0x6e35fe42 // fdiv v2.4s, v18.4s, v21.4s
1494 .long 0x4ea1d418 // fsub v24.4s, v0.4s, v1.4s
1495 .long 0x4f00f619 // fmov v25.4s, #4.000000000000000000e+00
1496 .long 0x4f0167fa // movi v26.4s, #0x3f, lsl #24
1497 .long 0x4eb0d6f2 // fsub v18.4s, v23.4s, v16.4s
1498 .long 0x4e36cc57 // fmla v23.4s, v2.4s, v22.4s
1499 .long 0x4e31e616 // fcmeq v22.4s, v16.4s, v17.4s
1500 .long 0x4e20e600 // fcmeq v0.4s, v16.4s, v0.4s
1501 .long 0x4e21e601 // fcmeq v1.4s, v16.4s, v1.4s
1502 .long 0x4e31d610 // fadd v16.4s, v16.4s, v17.4s
1503 .long 0x52a7c548 // mov w8, #0x3e2a0000
1504 .long 0x4e33cc54 // fmla v20.4s, v2.4s, v19.4s
1505 .long 0x4e38cc59 // fmla v25.4s, v2.4s, v24.4s
1506 .long 0x6e3ade02 // fmul v2.4s, v16.4s, v26.4s
1507 .long 0x72955568 // movk w8, #0xaaab
1508 .long 0xf8408423 // ldr x3, [x1], #8
1509 .long 0x4eb1d651 // fsub v17.4s, v18.4s, v17.4s
1510 .long 0x6ebae452 // fcmgt v18.4s, v2.4s, v26.4s
1511 .long 0x6e791ee1 // bsl v1.16b, v23.16b, v25.16b
1512 .long 0x4e040d13 // dup v19.4s, w8
1513 .long 0x6e701e32 // bsl v18.16b, v17.16b, v16.16b
1514 .long 0x6e611e80 // bsl v0.16b, v20.16b, v1.16b
1515 .long 0x6e32fea1 // fdiv v1.4s, v21.4s, v18.4s
1516 .long 0x6e33dc00 // fmul v0.4s, v0.4s, v19.4s
1517 .long 0x4e761c00 // bic v0.16b, v0.16b, v22.16b
1518 .long 0x4e761c21 // bic v1.16b, v1.16b, v22.16b
1519 .long 0xd61f0060 // br x3
1520
1521HIDDEN _sk_hsl_to_rgb_aarch64
1522.globl _sk_hsl_to_rgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001523FUNCTION(_sk_hsl_to_rgb_aarch64)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001524_sk_hsl_to_rgb_aarch64:
1525 .long 0x52a7d548 // mov w8, #0x3eaa0000
1526 .long 0x72955568 // movk w8, #0xaaab
Mike Klein5664e652017-05-01 16:01:38 -04001527 .long 0x4e040d14 // dup v20.4s, w8
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001528 .long 0x52a7e548 // mov w8, #0x3f2a0000
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001529 .long 0x72955568 // movk w8, #0xaaab
Mike Klein879a08a2017-05-01 15:34:01 -04001530 .long 0x4f0167f1 // movi v17.4s, #0x3f, lsl #24
Mike Klein5664e652017-05-01 16:01:38 -04001531 .long 0x6e22dc32 // fmul v18.4s, v1.4s, v2.4s
1532 .long 0x4e040d17 // dup v23.4s, w8
Mike Klein879a08a2017-05-01 15:34:01 -04001533 .long 0x52b7d548 // mov w8, #0xbeaa0000
1534 .long 0x4ea0d830 // fcmeq v16.4s, v1.4s, #0.0
1535 .long 0x72955568 // movk w8, #0xaaab
Mike Klein5664e652017-05-01 16:01:38 -04001536 .long 0x6e31e45a // fcmge v26.4s, v2.4s, v17.4s
1537 .long 0x4eb2d421 // fsub v1.4s, v1.4s, v18.4s
1538 .long 0x4e040d18 // dup v24.4s, w8
1539 .long 0x4e219819 // frintm v25.4s, v0.4s
1540 .long 0x6e721c3a // bsl v26.16b, v1.16b, v18.16b
1541 .long 0x4e34d401 // fadd v1.4s, v0.4s, v20.4s
1542 .long 0x4eb9d419 // fsub v25.4s, v0.4s, v25.4s
1543 .long 0x4e38d400 // fadd v0.4s, v0.4s, v24.4s
1544 .long 0x4e22d754 // fadd v20.4s, v26.4s, v2.4s
1545 .long 0x4e219838 // frintm v24.4s, v1.4s
1546 .long 0x4f026413 // movi v19.4s, #0x40, lsl #24
1547 .long 0x4f00f715 // fmov v21.4s, #6.000000000000000000e+00
1548 .long 0x4e21981b // frintm v27.4s, v0.4s
1549 .long 0x6ea0fa9c // fneg v28.4s, v20.4s
1550 .long 0x4eb8d421 // fsub v1.4s, v1.4s, v24.4s
1551 .long 0x4f00f616 // fmov v22.4s, #4.000000000000000000e+00
1552 .long 0x4ebbd418 // fsub v24.4s, v0.4s, v27.4s
1553 .long 0x4e22ce7c // fmla v28.4s, v19.4s, v2.4s
1554 .long 0x6e35dc20 // fmul v0.4s, v1.4s, v21.4s
1555 .long 0x6e35df32 // fmul v18.4s, v25.4s, v21.4s
1556 .long 0x6e35df13 // fmul v19.4s, v24.4s, v21.4s
1557 .long 0x4ebcd695 // fsub v21.4s, v20.4s, v28.4s
1558 .long 0x4ea0d6db // fsub v27.4s, v22.4s, v0.4s
1559 .long 0x4ebc1f9d // mov v29.16b, v28.16b
1560 .long 0x4e3bcebd // fmla v29.4s, v21.4s, v27.4s
1561 .long 0x4ebc1f9b // mov v27.16b, v28.16b
1562 .long 0x4eb2d6da // fsub v26.4s, v22.4s, v18.4s
1563 .long 0x4e20cebb // fmla v27.4s, v21.4s, v0.4s
1564 .long 0x4ebc1f80 // mov v0.16b, v28.16b
1565 .long 0x4e3acea0 // fmla v0.4s, v21.4s, v26.4s
1566 .long 0x4ebc1f9a // mov v26.16b, v28.16b
1567 .long 0x4eb3d6d6 // fsub v22.4s, v22.4s, v19.4s
1568 .long 0x4e32ceba // fmla v26.4s, v21.4s, v18.4s
1569 .long 0x4ebc1f92 // mov v18.16b, v28.16b
1570 .long 0x52a7c548 // mov w8, #0x3e2a0000
1571 .long 0x4e36ceb2 // fmla v18.4s, v21.4s, v22.4s
1572 .long 0x6e37e436 // fcmge v22.4s, v1.4s, v23.4s
1573 .long 0x72955568 // movk w8, #0xaaab
1574 .long 0x6e7d1f96 // bsl v22.16b, v28.16b, v29.16b
1575 .long 0x6e37e73d // fcmge v29.4s, v25.4s, v23.4s
1576 .long 0x6e37e717 // fcmge v23.4s, v24.4s, v23.4s
1577 .long 0x6e601f9d // bsl v29.16b, v28.16b, v0.16b
1578 .long 0x4e040d1e // dup v30.4s, w8
1579 .long 0x6e721f97 // bsl v23.16b, v28.16b, v18.16b
1580 .long 0x4e33cebc // fmla v28.4s, v21.4s, v19.4s
1581 .long 0x6e31e732 // fcmge v18.4s, v25.4s, v17.4s
1582 .long 0x6e31e435 // fcmge v21.4s, v1.4s, v17.4s
1583 .long 0x6e31e711 // fcmge v17.4s, v24.4s, v17.4s
1584 .long 0x6e3ee718 // fcmge v24.4s, v24.4s, v30.4s
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001585 .long 0xf8408423 // ldr x3, [x1], #8
Mike Klein5664e652017-05-01 16:01:38 -04001586 .long 0x6e741ef1 // bsl v17.16b, v23.16b, v20.16b
1587 .long 0x6e3ee733 // fcmge v19.4s, v25.4s, v30.4s
1588 .long 0x6e3ee439 // fcmge v25.4s, v1.4s, v30.4s
1589 .long 0x6e741ed5 // bsl v21.16b, v22.16b, v20.16b
1590 .long 0x6e741fb2 // bsl v18.16b, v29.16b, v20.16b
1591 .long 0x6e7c1e38 // bsl v24.16b, v17.16b, v28.16b
Mike Klein879a08a2017-05-01 15:34:01 -04001592 .long 0x4eb01e00 // mov v0.16b, v16.16b
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001593 .long 0x4eb01e01 // mov v1.16b, v16.16b
Mike Klein5664e652017-05-01 16:01:38 -04001594 .long 0x6e7b1eb9 // bsl v25.16b, v21.16b, v27.16b
1595 .long 0x6e7a1e53 // bsl v19.16b, v18.16b, v26.16b
1596 .long 0x6e781c50 // bsl v16.16b, v2.16b, v24.16b
1597 .long 0x6e791c40 // bsl v0.16b, v2.16b, v25.16b
1598 .long 0x6e731c41 // bsl v1.16b, v2.16b, v19.16b
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001599 .long 0x4eb01e02 // mov v2.16b, v16.16b
1600 .long 0xd61f0060 // br x3
1601
Mike Klein7c4af542017-03-29 18:21:14 -04001602HIDDEN _sk_scale_1_float_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001603.globl _sk_scale_1_float_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001604FUNCTION(_sk_scale_1_float_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001605_sk_scale_1_float_aarch64:
1606 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1607 .long 0xbd400110 // ldr s16, [x8]
1608 .long 0x4f909000 // fmul v0.4s, v0.4s, v16.s[0]
1609 .long 0x4f909021 // fmul v1.4s, v1.4s, v16.s[0]
1610 .long 0x4f909042 // fmul v2.4s, v2.4s, v16.s[0]
1611 .long 0x4f909063 // fmul v3.4s, v3.4s, v16.s[0]
1612 .long 0xd61f0060 // br x3
1613
Mike Klein7c4af542017-03-29 18:21:14 -04001614HIDDEN _sk_scale_u8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001615.globl _sk_scale_u8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001616FUNCTION(_sk_scale_u8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001617_sk_scale_u8_aarch64:
1618 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1619 .long 0x52a77009 // mov w9, #0x3b800000
1620 .long 0x72901029 // movk w9, #0x8081
1621 .long 0x4e040d30 // dup v16.4s, w9
1622 .long 0xf9400108 // ldr x8, [x8]
1623 .long 0x8b000108 // add x8, x8, x0
1624 .long 0x39400109 // ldrb w9, [x8]
1625 .long 0x3940050a // ldrb w10, [x8, #1]
1626 .long 0x3940090b // ldrb w11, [x8, #2]
1627 .long 0x39400d08 // ldrb w8, [x8, #3]
1628 .long 0x4e021d31 // mov v17.h[0], w9
1629 .long 0x4e061d51 // mov v17.h[1], w10
1630 .long 0x4e0a1d71 // mov v17.h[2], w11
1631 .long 0x4e0e1d11 // mov v17.h[3], w8
1632 .long 0x2f10a631 // uxtl v17.4s, v17.4h
1633 .long 0x6e21da31 // ucvtf v17.4s, v17.4s
1634 .long 0x6e30de30 // fmul v16.4s, v17.4s, v16.4s
1635 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
1636 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
1637 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
1638 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
1639 .long 0xd61f0060 // br x3
1640
Mike Klein7c4af542017-03-29 18:21:14 -04001641HIDDEN _sk_lerp_1_float_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001642.globl _sk_lerp_1_float_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001643FUNCTION(_sk_lerp_1_float_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001644_sk_lerp_1_float_aarch64:
1645 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1646 .long 0x4ea4d411 // fsub v17.4s, v0.4s, v4.4s
1647 .long 0x4ea41c80 // mov v0.16b, v4.16b
1648 .long 0x4ea5d432 // fsub v18.4s, v1.4s, v5.4s
1649 .long 0xbd400110 // ldr s16, [x8]
1650 .long 0x4ea51ca1 // mov v1.16b, v5.16b
1651 .long 0x4f901220 // fmla v0.4s, v17.4s, v16.s[0]
1652 .long 0x4ea6d451 // fsub v17.4s, v2.4s, v6.4s
1653 .long 0x4f901241 // fmla v1.4s, v18.4s, v16.s[0]
1654 .long 0x4ea61cc2 // mov v2.16b, v6.16b
1655 .long 0x4ea7d472 // fsub v18.4s, v3.4s, v7.4s
1656 .long 0x4ea71ce3 // mov v3.16b, v7.16b
1657 .long 0x4f901222 // fmla v2.4s, v17.4s, v16.s[0]
1658 .long 0x4f901243 // fmla v3.4s, v18.4s, v16.s[0]
1659 .long 0xd61f0060 // br x3
1660
Mike Klein7c4af542017-03-29 18:21:14 -04001661HIDDEN _sk_lerp_u8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001662.globl _sk_lerp_u8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001663FUNCTION(_sk_lerp_u8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001664_sk_lerp_u8_aarch64:
1665 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1666 .long 0x52a77009 // mov w9, #0x3b800000
1667 .long 0x72901029 // movk w9, #0x8081
1668 .long 0x4e040d30 // dup v16.4s, w9
1669 .long 0xf9400108 // ldr x8, [x8]
1670 .long 0x4ea4d412 // fsub v18.4s, v0.4s, v4.4s
1671 .long 0x8b000108 // add x8, x8, x0
1672 .long 0x3940010a // ldrb w10, [x8]
1673 .long 0x39400509 // ldrb w9, [x8, #1]
1674 .long 0x3940090b // ldrb w11, [x8, #2]
1675 .long 0x39400d08 // ldrb w8, [x8, #3]
1676 .long 0x4e021d51 // mov v17.h[0], w10
1677 .long 0x4e061d31 // mov v17.h[1], w9
1678 .long 0x4e0a1d71 // mov v17.h[2], w11
1679 .long 0x4e0e1d11 // mov v17.h[3], w8
1680 .long 0x2f10a620 // uxtl v0.4s, v17.4h
1681 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
1682 .long 0x6e30dc10 // fmul v16.4s, v0.4s, v16.4s
1683 .long 0x4ea41c80 // mov v0.16b, v4.16b
1684 .long 0x4ea5d431 // fsub v17.4s, v1.4s, v5.4s
1685 .long 0x4ea51ca1 // mov v1.16b, v5.16b
1686 .long 0x4e32ce00 // fmla v0.4s, v16.4s, v18.4s
1687 .long 0x4ea6d452 // fsub v18.4s, v2.4s, v6.4s
1688 .long 0x4e31ce01 // fmla v1.4s, v16.4s, v17.4s
1689 .long 0x4ea61cc2 // mov v2.16b, v6.16b
1690 .long 0x4ea7d471 // fsub v17.4s, v3.4s, v7.4s
1691 .long 0x4ea71ce3 // mov v3.16b, v7.16b
1692 .long 0x4e32ce02 // fmla v2.4s, v16.4s, v18.4s
1693 .long 0x4e31ce03 // fmla v3.4s, v16.4s, v17.4s
1694 .long 0xd61f0060 // br x3
1695
Mike Klein7c4af542017-03-29 18:21:14 -04001696HIDDEN _sk_lerp_565_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001697.globl _sk_lerp_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001698FUNCTION(_sk_lerp_565_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001699_sk_lerp_565_aarch64:
1700 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1701 .long 0xd37ff809 // lsl x9, x0, #1
bungeman6f9f2592017-05-10 13:50:12 -04001702 .long 0x4f072711 // movi v17.4s, #0xf8, lsl #8
1703 .long 0x4ea4d416 // fsub v22.4s, v0.4s, v4.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04001704 .long 0xf9400108 // ldr x8, [x8]
bungeman6f9f2592017-05-10 13:50:12 -04001705 .long 0x4f0007f4 // movi v20.4s, #0x1f
1706 .long 0x4ea7d463 // fsub v3.4s, v3.4s, v7.4s
1707 .long 0xfc696910 // ldr d16, [x8, x9]
Mike Kleind7e06ae2017-03-29 16:33:06 -04001708 .long 0x52a6f088 // mov w8, #0x37840000
1709 .long 0x72842108 // movk w8, #0x2108
Mike Kleind7e06ae2017-03-29 16:33:06 -04001710 .long 0x4e040d12 // dup v18.4s, w8
bungeman6f9f2592017-05-10 13:50:12 -04001711 .long 0x321b17e8 // orr w8, wzr, #0x7e0
1712 .long 0x4e040d13 // dup v19.4s, w8
Mike Kleind7e06ae2017-03-29 16:33:06 -04001713 .long 0x52a74048 // mov w8, #0x3a020000
bungeman6f9f2592017-05-10 13:50:12 -04001714 .long 0x2f10a600 // uxtl v0.4s, v16.4h
Mike Kleind7e06ae2017-03-29 16:33:06 -04001715 .long 0x72810428 // movk w8, #0x821
bungeman6f9f2592017-05-10 13:50:12 -04001716 .long 0x4e311c10 // and v16.16b, v0.16b, v17.16b
1717 .long 0x4e040d15 // dup v21.4s, w8
Mike Kleind7e06ae2017-03-29 16:33:06 -04001718 .long 0x52a7a088 // mov w8, #0x3d040000
bungeman6f9f2592017-05-10 13:50:12 -04001719 .long 0x4e331c11 // and v17.16b, v0.16b, v19.16b
1720 .long 0x4e341c13 // and v19.16b, v0.16b, v20.16b
1721 .long 0x4ea5d434 // fsub v20.4s, v1.4s, v5.4s
1722 .long 0x4e21da01 // scvtf v1.4s, v16.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04001723 .long 0x72842108 // movk w8, #0x2108
bungeman6f9f2592017-05-10 13:50:12 -04001724 .long 0x6e32dc30 // fmul v16.4s, v1.4s, v18.4s
1725 .long 0x4ea6d452 // fsub v18.4s, v2.4s, v6.4s
1726 .long 0x4e21da22 // scvtf v2.4s, v17.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04001727 .long 0x4ea51ca1 // mov v1.16b, v5.16b
bungeman6f9f2592017-05-10 13:50:12 -04001728 .long 0x6e35dc51 // fmul v17.4s, v2.4s, v21.4s
1729 .long 0x4e040d02 // dup v2.4s, w8
1730 .long 0x4e21da73 // scvtf v19.4s, v19.4s
1731 .long 0x6e22de73 // fmul v19.4s, v19.4s, v2.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04001732 .long 0x4ea61cc2 // mov v2.16b, v6.16b
bungeman6f9f2592017-05-10 13:50:12 -04001733 .long 0x4ea71cf5 // mov v21.16b, v7.16b
1734 .long 0x4e34ce21 // fmla v1.4s, v17.4s, v20.4s
1735 .long 0x4ea71cf4 // mov v20.16b, v7.16b
1736 .long 0x4e32ce62 // fmla v2.4s, v19.4s, v18.4s
1737 .long 0x4ea71cf2 // mov v18.16b, v7.16b
1738 .long 0x4e23ce35 // fmla v21.4s, v17.4s, v3.4s
1739 .long 0x4e23ce74 // fmla v20.4s, v19.4s, v3.4s
1740 .long 0x4ea41c80 // mov v0.16b, v4.16b
1741 .long 0x4e23ce12 // fmla v18.4s, v16.4s, v3.4s
1742 .long 0x4e34f6a3 // fmax v3.4s, v21.4s, v20.4s
1743 .long 0x4e36ce00 // fmla v0.4s, v16.4s, v22.4s
1744 .long 0x4e23f643 // fmax v3.4s, v18.4s, v3.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04001745 .long 0xd61f0060 // br x3
1746
Mike Klein7c4af542017-03-29 18:21:14 -04001747HIDDEN _sk_load_tables_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001748.globl _sk_load_tables_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001749FUNCTION(_sk_load_tables_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001750_sk_load_tables_aarch64:
1751 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1752 .long 0xd37ef409 // lsl x9, x0, #2
1753 .long 0x6f00e620 // movi v0.2d, #0xff000000ff
1754 .long 0x52a7700b // mov w11, #0x3b800000
1755 .long 0xa940310a // ldp x10, x12, [x8]
1756 .long 0x7290102b // movk w11, #0x8081
1757 .long 0x4e040d63 // dup v3.4s, w11
1758 .long 0x3ce96942 // ldr q2, [x10, x9]
1759 .long 0xa9412109 // ldp x9, x8, [x8, #16]
1760 .long 0x4e201c41 // and v1.16b, v2.16b, v0.16b
1761 .long 0x1e26002e // fmov w14, s1
1762 .long 0x6f380450 // ushr v16.4s, v2.4s, #8
1763 .long 0x6f300451 // ushr v17.4s, v2.4s, #16
1764 .long 0x8b2e498e // add x14, x12, w14, uxtw #2
1765 .long 0x0e0c3c2a // mov w10, v1.s[1]
1766 .long 0x0e143c2b // mov w11, v1.s[2]
1767 .long 0x0e1c3c2d // mov w13, v1.s[3]
1768 .long 0x4e201e01 // and v1.16b, v16.16b, v0.16b
1769 .long 0x4e201e30 // and v16.16b, v17.16b, v0.16b
1770 .long 0x0d4081c0 // ld1 {v0.s}[0], [x14]
1771 .long 0x8b2a498a // add x10, x12, w10, uxtw #2
1772 .long 0xbc6b5991 // ldr s17, [x12, w11, uxtw #2]
1773 .long 0xbc6d5992 // ldr s18, [x12, w13, uxtw #2]
1774 .long 0x0e0c3c2b // mov w11, v1.s[1]
1775 .long 0x0e143c2c // mov w12, v1.s[2]
1776 .long 0x0e1c3c2d // mov w13, v1.s[3]
1777 .long 0x1e26002e // fmov w14, s1
1778 .long 0x8b2e492e // add x14, x9, w14, uxtw #2
1779 .long 0xbc6c5933 // ldr s19, [x9, w12, uxtw #2]
1780 .long 0xbc6d5934 // ldr s20, [x9, w13, uxtw #2]
1781 .long 0x8b2b4929 // add x9, x9, w11, uxtw #2
1782 .long 0x1e26020b // fmov w11, s16
1783 .long 0x6f280442 // ushr v2.4s, v2.4s, #24
1784 .long 0x0d409140 // ld1 {v0.s}[1], [x10]
1785 .long 0x4e21d842 // scvtf v2.4s, v2.4s
1786 .long 0x8b2b490a // add x10, x8, w11, uxtw #2
1787 .long 0x0d4081c1 // ld1 {v1.s}[0], [x14]
1788 .long 0x6e23dc43 // fmul v3.4s, v2.4s, v3.4s
1789 .long 0x0d408142 // ld1 {v2.s}[0], [x10]
1790 .long 0x0e0c3e0f // mov w15, v16.s[1]
1791 .long 0x0e143e0c // mov w12, v16.s[2]
1792 .long 0x8b2f490a // add x10, x8, w15, uxtw #2
1793 .long 0x0e1c3e0d // mov w13, v16.s[3]
1794 .long 0xbc6c5910 // ldr s16, [x8, w12, uxtw #2]
1795 .long 0x0d409121 // ld1 {v1.s}[1], [x9]
1796 .long 0x0d409142 // ld1 {v2.s}[1], [x10]
1797 .long 0x6e140620 // mov v0.s[2], v17.s[0]
1798 .long 0xbc6d5911 // ldr s17, [x8, w13, uxtw #2]
1799 .long 0x6e140661 // mov v1.s[2], v19.s[0]
1800 .long 0x6e140602 // mov v2.s[2], v16.s[0]
1801 .long 0x6e1c0640 // mov v0.s[3], v18.s[0]
1802 .long 0x6e1c0681 // mov v1.s[3], v20.s[0]
1803 .long 0x6e1c0622 // mov v2.s[3], v17.s[0]
1804 .long 0xd61f0060 // br x3
1805
Mike Kleina3735cd2017-04-17 13:19:05 -04001806HIDDEN _sk_load_tables_u16_be_aarch64
1807.globl _sk_load_tables_u16_be_aarch64
1808FUNCTION(_sk_load_tables_u16_be_aarch64)
1809_sk_load_tables_u16_be_aarch64:
1810 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1811 .long 0x52a6f00a // mov w10, #0x37800000
1812 .long 0x7280100a // movk w10, #0x80
1813 .long 0x4e040d50 // dup v16.4s, w10
1814 .long 0xa9402d09 // ldp x9, x11, [x8]
1815 .long 0x8b000d29 // add x9, x9, x0, lsl #3
1816 .long 0x0c400520 // ld4 {v0.4h-v3.4h}, [x9]
1817 .long 0xa9412109 // ldp x9, x8, [x8, #16]
1818 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
1819 .long 0x2f10a411 // uxtl v17.4s, v0.4h
1820 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
1821 .long 0x1e26022e // fmov w14, s17
1822 .long 0x0e0c3e2a // mov w10, v17.s[1]
1823 .long 0x0e143e2c // mov w12, v17.s[2]
1824 .long 0x0e1c3e2d // mov w13, v17.s[3]
1825 .long 0x8b2e496e // add x14, x11, w14, uxtw #2
1826 .long 0x2f10a431 // uxtl v17.4s, v1.4h
1827 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
1828 .long 0x2f10a453 // uxtl v19.4s, v2.4h
1829 .long 0x2f180462 // ushr v2.4h, v3.4h, #8
1830 .long 0x0d4081c0 // ld1 {v0.s}[0], [x14]
1831 .long 0x0f185474 // shl v20.4h, v3.4h, #8
1832 .long 0x0ea21e82 // orr v2.8b, v20.8b, v2.8b
1833 .long 0x8b2a496a // add x10, x11, w10, uxtw #2
1834 .long 0x1e26022e // fmov w14, s17
1835 .long 0x1e26026f // fmov w15, s19
1836 .long 0x2f10a442 // uxtl v2.4s, v2.4h
1837 .long 0x8b2e492e // add x14, x9, w14, uxtw #2
1838 .long 0x0d409140 // ld1 {v0.s}[1], [x10]
1839 .long 0x8b2f490a // add x10, x8, w15, uxtw #2
1840 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
1841 .long 0x0d4081c1 // ld1 {v1.s}[0], [x14]
1842 .long 0x6e30dc43 // fmul v3.4s, v2.4s, v16.4s
1843 .long 0x0d408142 // ld1 {v2.s}[0], [x10]
1844 .long 0xbc6c5972 // ldr s18, [x11, w12, uxtw #2]
1845 .long 0xbc6d5975 // ldr s21, [x11, w13, uxtw #2]
1846 .long 0x0e0c3e2b // mov w11, v17.s[1]
1847 .long 0x0e143e2c // mov w12, v17.s[2]
1848 .long 0x0e1c3e2d // mov w13, v17.s[3]
1849 .long 0x8b2b492b // add x11, x9, w11, uxtw #2
1850 .long 0xbc6c5931 // ldr s17, [x9, w12, uxtw #2]
1851 .long 0xbc6d5936 // ldr s22, [x9, w13, uxtw #2]
1852 .long 0x0e0c3e69 // mov w9, v19.s[1]
1853 .long 0x0e143e6c // mov w12, v19.s[2]
1854 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1855 .long 0x0e1c3e6d // mov w13, v19.s[3]
1856 .long 0xbc6c5913 // ldr s19, [x8, w12, uxtw #2]
1857 .long 0x0d409161 // ld1 {v1.s}[1], [x11]
1858 .long 0x0d409122 // ld1 {v2.s}[1], [x9]
1859 .long 0xbc6d5910 // ldr s16, [x8, w13, uxtw #2]
1860 .long 0x6e140640 // mov v0.s[2], v18.s[0]
1861 .long 0x6e140621 // mov v1.s[2], v17.s[0]
1862 .long 0x6e140662 // mov v2.s[2], v19.s[0]
1863 .long 0x6e1c06a0 // mov v0.s[3], v21.s[0]
1864 .long 0x6e1c06c1 // mov v1.s[3], v22.s[0]
1865 .long 0x6e1c0602 // mov v2.s[3], v16.s[0]
1866 .long 0xd61f0060 // br x3
1867
1868HIDDEN _sk_load_tables_rgb_u16_be_aarch64
1869.globl _sk_load_tables_rgb_u16_be_aarch64
1870FUNCTION(_sk_load_tables_rgb_u16_be_aarch64)
1871_sk_load_tables_rgb_u16_be_aarch64:
1872 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1873 .long 0x321f07ea // orr w10, wzr, #0x6
1874 .long 0xa9402d09 // ldp x9, x11, [x8]
1875 .long 0x9b0a2409 // madd x9, x0, x10, x9
1876 .long 0x0c404521 // ld3 {v1.4h-v3.4h}, [x9]
1877 .long 0xa9412109 // ldp x9, x8, [x8, #16]
1878 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
1879 .long 0x2f10a420 // uxtl v0.4s, v1.4h
1880 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
1881 .long 0x1e26000e // fmov w14, s0
1882 .long 0x0e143c0c // mov w12, v0.s[2]
1883 .long 0x8b2e496e // add x14, x11, w14, uxtw #2
1884 .long 0x2f10a450 // uxtl v16.4s, v2.4h
1885 .long 0x0e0c3c0a // mov w10, v0.s[1]
1886 .long 0x0e1c3c0d // mov w13, v0.s[3]
1887 .long 0xbc6c5971 // ldr s17, [x11, w12, uxtw #2]
1888 .long 0x0d4081c0 // ld1 {v0.s}[0], [x14]
1889 .long 0x0e143e0c // mov w12, v16.s[2]
1890 .long 0x1e26020e // fmov w14, s16
1891 .long 0x2f07b7e3 // bic v3.4h, #0xff, lsl #8
1892 .long 0x8b2a496a // add x10, x11, w10, uxtw #2
1893 .long 0xbc6d5972 // ldr s18, [x11, w13, uxtw #2]
1894 .long 0x0e0c3e0b // mov w11, v16.s[1]
1895 .long 0x0e1c3e0d // mov w13, v16.s[3]
1896 .long 0xbc6c5930 // ldr s16, [x9, w12, uxtw #2]
1897 .long 0x8b2e492c // add x12, x9, w14, uxtw #2
1898 .long 0x2f10a462 // uxtl v2.4s, v3.4h
1899 .long 0xbc6d5923 // ldr s3, [x9, w13, uxtw #2]
1900 .long 0x0d408181 // ld1 {v1.s}[0], [x12]
1901 .long 0x0e143c4c // mov w12, v2.s[2]
1902 .long 0x1e26004d // fmov w13, s2
1903 .long 0xbc6c5913 // ldr s19, [x8, w12, uxtw #2]
1904 .long 0x8b2d490c // add x12, x8, w13, uxtw #2
1905 .long 0x8b2b492b // add x11, x9, w11, uxtw #2
1906 .long 0x0e0c3c49 // mov w9, v2.s[1]
1907 .long 0x0d409140 // ld1 {v0.s}[1], [x10]
1908 .long 0x0e1c3c4a // mov w10, v2.s[3]
1909 .long 0x0d408182 // ld1 {v2.s}[0], [x12]
1910 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1911 .long 0x0d409161 // ld1 {v1.s}[1], [x11]
1912 .long 0x6e140620 // mov v0.s[2], v17.s[0]
1913 .long 0x0d409122 // ld1 {v2.s}[1], [x9]
1914 .long 0xbc6a5911 // ldr s17, [x8, w10, uxtw #2]
1915 .long 0x6e140601 // mov v1.s[2], v16.s[0]
1916 .long 0x6e1c0640 // mov v0.s[3], v18.s[0]
1917 .long 0x6e140662 // mov v2.s[2], v19.s[0]
1918 .long 0x6e1c0461 // mov v1.s[3], v3.s[0]
1919 .long 0x6e1c0622 // mov v2.s[3], v17.s[0]
1920 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
1921 .long 0xd61f0060 // br x3
1922
Mike Klein40de6da2017-04-07 13:09:29 -04001923HIDDEN _sk_byte_tables_aarch64
1924.globl _sk_byte_tables_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001925FUNCTION(_sk_byte_tables_aarch64)
Mike Klein40de6da2017-04-07 13:09:29 -04001926_sk_byte_tables_aarch64:
1927 .long 0xd10083ff // sub sp, sp, #0x20
1928 .long 0xaa0103e8 // mov x8, x1
1929 .long 0x91002109 // add x9, x8, #0x8
1930 .long 0xa9014ff4 // stp x20, x19, [sp, #16]
1931 .long 0xf90007e9 // str x9, [sp, #8]
1932 .long 0xf8410429 // ldr x9, [x1], #16
1933 .long 0x52a86fea // mov w10, #0x437f0000
1934 .long 0x4e040d51 // dup v17.4s, w10
1935 .long 0x52a7700b // mov w11, #0x3b800000
1936 .long 0xa9405126 // ldp x6, x20, [x9]
1937 .long 0x6e31dc00 // fmul v0.4s, v0.4s, v17.4s
1938 .long 0x7290102b // movk w11, #0x8081
1939 .long 0x6e21a800 // fcvtnu v0.4s, v0.4s
1940 .long 0x4e040d70 // dup v16.4s, w11
1941 .long 0x0e0c3c0a // mov w10, v0.s[1]
1942 .long 0x0e143c0b // mov w11, v0.s[2]
1943 .long 0x0e1c3c0c // mov w12, v0.s[3]
1944 .long 0x1e26000d // fmov w13, s0
1945 .long 0x386d48cd // ldrb w13, [x6, w13, uxtw]
1946 .long 0x386a48ca // ldrb w10, [x6, w10, uxtw]
1947 .long 0x386b48cb // ldrb w11, [x6, w11, uxtw]
1948 .long 0x386c48cc // ldrb w12, [x6, w12, uxtw]
1949 .long 0xa9412526 // ldp x6, x9, [x9, #16]
1950 .long 0x6e31dc42 // fmul v2.4s, v2.4s, v17.4s
1951 .long 0x6e31dc21 // fmul v1.4s, v1.4s, v17.4s
1952 .long 0x6e31dc63 // fmul v3.4s, v3.4s, v17.4s
1953 .long 0x6e21a842 // fcvtnu v2.4s, v2.4s
1954 .long 0x6e21a821 // fcvtnu v1.4s, v1.4s
1955 .long 0x6e21a863 // fcvtnu v3.4s, v3.4s
1956 .long 0x0e0c3c52 // mov w18, v2.s[1]
1957 .long 0x0e143c43 // mov w3, v2.s[2]
1958 .long 0x0e1c3c44 // mov w4, v2.s[3]
1959 .long 0x1e260045 // fmov w5, s2
1960 .long 0x1e260031 // fmov w17, s1
1961 .long 0x386548c5 // ldrb w5, [x6, w5, uxtw]
1962 .long 0x387248d2 // ldrb w18, [x6, w18, uxtw]
1963 .long 0x386348c3 // ldrb w3, [x6, w3, uxtw]
1964 .long 0x386448c4 // ldrb w4, [x6, w4, uxtw]
1965 .long 0x1e260066 // fmov w6, s3
1966 .long 0x0e0c3c2e // mov w14, v1.s[1]
1967 .long 0x0e0c3c67 // mov w7, v3.s[1]
1968 .long 0x38714a91 // ldrb w17, [x20, w17, uxtw]
1969 .long 0x38664926 // ldrb w6, [x9, w6, uxtw]
1970 .long 0x0e143c2f // mov w15, v1.s[2]
1971 .long 0x0e1c3c30 // mov w16, v1.s[3]
1972 .long 0x0e143c73 // mov w19, v3.s[2]
1973 .long 0x386e4a8e // ldrb w14, [x20, w14, uxtw]
1974 .long 0x38674927 // ldrb w7, [x9, w7, uxtw]
1975 .long 0x386f4a8f // ldrb w15, [x20, w15, uxtw]
1976 .long 0x38704a90 // ldrb w16, [x20, w16, uxtw]
1977 .long 0x0e1c3c74 // mov w20, v3.s[3]
1978 .long 0x38734933 // ldrb w19, [x9, w19, uxtw]
1979 .long 0x38744929 // ldrb w9, [x9, w20, uxtw]
1980 .long 0x4e021da0 // mov v0.h[0], w13
1981 .long 0x4e021e21 // mov v1.h[0], w17
1982 .long 0x4e021ca2 // mov v2.h[0], w5
1983 .long 0x4e021cc3 // mov v3.h[0], w6
1984 .long 0x4e061d40 // mov v0.h[1], w10
1985 .long 0x4e061dc1 // mov v1.h[1], w14
1986 .long 0x4e061e42 // mov v2.h[1], w18
1987 .long 0x4e061ce3 // mov v3.h[1], w7
1988 .long 0x4e0a1d60 // mov v0.h[2], w11
1989 .long 0x4e0a1de1 // mov v1.h[2], w15
1990 .long 0x4e0a1c62 // mov v2.h[2], w3
1991 .long 0x4e0a1e63 // mov v3.h[2], w19
1992 .long 0x4e0e1d80 // mov v0.h[3], w12
1993 .long 0x4e0e1e01 // mov v1.h[3], w16
1994 .long 0x4e0e1c82 // mov v2.h[3], w4
1995 .long 0x4e0e1d23 // mov v3.h[3], w9
1996 .long 0xf9400505 // ldr x5, [x8, #8]
1997 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
1998 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
1999 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
2000 .long 0x2f07b7e3 // bic v3.4h, #0xff, lsl #8
2001 .long 0xa9414ff4 // ldp x20, x19, [sp, #16]
2002 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2003 .long 0x2f10a421 // uxtl v1.4s, v1.4h
2004 .long 0x2f10a442 // uxtl v2.4s, v2.4h
2005 .long 0x2f10a463 // uxtl v3.4s, v3.4h
2006 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
2007 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
2008 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
2009 .long 0x6e21d863 // ucvtf v3.4s, v3.4s
2010 .long 0x6e30dc00 // fmul v0.4s, v0.4s, v16.4s
2011 .long 0x6e30dc21 // fmul v1.4s, v1.4s, v16.4s
2012 .long 0x6e30dc42 // fmul v2.4s, v2.4s, v16.4s
2013 .long 0x6e30dc63 // fmul v3.4s, v3.4s, v16.4s
2014 .long 0x910083ff // add sp, sp, #0x20
2015 .long 0xd61f00a0 // br x5
2016
2017HIDDEN _sk_byte_tables_rgb_aarch64
2018.globl _sk_byte_tables_rgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002019FUNCTION(_sk_byte_tables_rgb_aarch64)
Mike Klein40de6da2017-04-07 13:09:29 -04002020_sk_byte_tables_rgb_aarch64:
2021 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2022 .long 0x52a77009 // mov w9, #0x3b800000
2023 .long 0x72901029 // movk w9, #0x8081
2024 .long 0x4e040d30 // dup v16.4s, w9
2025 .long 0xb9401909 // ldr w9, [x8, #24]
2026 .long 0xa9402d0a // ldp x10, x11, [x8]
2027 .long 0xf9400908 // ldr x8, [x8, #16]
2028 .long 0x51000529 // sub w9, w9, #0x1
2029 .long 0x4e040d31 // dup v17.4s, w9
2030 .long 0x4e21da31 // scvtf v17.4s, v17.4s
2031 .long 0x6e21de21 // fmul v1.4s, v17.4s, v1.4s
2032 .long 0x6e20de20 // fmul v0.4s, v17.4s, v0.4s
2033 .long 0x6e22de22 // fmul v2.4s, v17.4s, v2.4s
2034 .long 0x6e21a821 // fcvtnu v1.4s, v1.4s
2035 .long 0x6e21a800 // fcvtnu v0.4s, v0.4s
2036 .long 0x6e21a842 // fcvtnu v2.4s, v2.4s
2037 .long 0x0e0c3c2f // mov w15, v1.s[1]
2038 .long 0x0e143c30 // mov w16, v1.s[2]
2039 .long 0x0e1c3c31 // mov w17, v1.s[3]
2040 .long 0x1e260032 // fmov w18, s1
2041 .long 0x1e26000e // fmov w14, s0
2042 .long 0x38724972 // ldrb w18, [x11, w18, uxtw]
2043 .long 0x386f496f // ldrb w15, [x11, w15, uxtw]
2044 .long 0x38704970 // ldrb w16, [x11, w16, uxtw]
2045 .long 0x3871496b // ldrb w11, [x11, w17, uxtw]
2046 .long 0x1e260051 // fmov w17, s2
2047 .long 0x0e0c3c09 // mov w9, v0.s[1]
2048 .long 0x386e494e // ldrb w14, [x10, w14, uxtw]
2049 .long 0x0e0c3c44 // mov w4, v2.s[1]
2050 .long 0x38714911 // ldrb w17, [x8, w17, uxtw]
2051 .long 0x0e143c0c // mov w12, v0.s[2]
2052 .long 0x0e1c3c0d // mov w13, v0.s[3]
2053 .long 0x0e143c45 // mov w5, v2.s[2]
2054 .long 0x38694949 // ldrb w9, [x10, w9, uxtw]
2055 .long 0x38644904 // ldrb w4, [x8, w4, uxtw]
2056 .long 0x386c494c // ldrb w12, [x10, w12, uxtw]
2057 .long 0x386d494a // ldrb w10, [x10, w13, uxtw]
2058 .long 0x0e1c3c4d // mov w13, v2.s[3]
2059 .long 0x38654905 // ldrb w5, [x8, w5, uxtw]
2060 .long 0x386d4908 // ldrb w8, [x8, w13, uxtw]
2061 .long 0x4e021dc0 // mov v0.h[0], w14
2062 .long 0x4e021e41 // mov v1.h[0], w18
2063 .long 0x4e021e22 // mov v2.h[0], w17
2064 .long 0x4e061d20 // mov v0.h[1], w9
2065 .long 0x4e061de1 // mov v1.h[1], w15
2066 .long 0x4e061c82 // mov v2.h[1], w4
2067 .long 0x4e0a1d80 // mov v0.h[2], w12
2068 .long 0x4e0a1e01 // mov v1.h[2], w16
2069 .long 0x4e0a1ca2 // mov v2.h[2], w5
2070 .long 0x4e0e1d40 // mov v0.h[3], w10
2071 .long 0x4e0e1d61 // mov v1.h[3], w11
2072 .long 0x4e0e1d02 // mov v2.h[3], w8
2073 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
2074 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
2075 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
2076 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2077 .long 0x2f10a421 // uxtl v1.4s, v1.4h
2078 .long 0x2f10a442 // uxtl v2.4s, v2.4h
2079 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
2080 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
2081 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
2082 .long 0x6e30dc00 // fmul v0.4s, v0.4s, v16.4s
2083 .long 0x6e30dc21 // fmul v1.4s, v1.4s, v16.4s
2084 .long 0x6e30dc42 // fmul v2.4s, v2.4s, v16.4s
2085 .long 0xd61f0060 // br x3
2086
Mike Kleinc7d9c0b2017-04-17 14:43:59 -04002087HIDDEN _sk_table_r_aarch64
2088.globl _sk_table_r_aarch64
2089FUNCTION(_sk_table_r_aarch64)
2090_sk_table_r_aarch64:
2091 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2092 .long 0xb9400909 // ldr w9, [x8, #8]
2093 .long 0xf9400108 // ldr x8, [x8]
2094 .long 0x51000529 // sub w9, w9, #0x1
2095 .long 0x4e040d30 // dup v16.4s, w9
2096 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2097 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
2098 .long 0x6e21a810 // fcvtnu v16.4s, v0.4s
2099 .long 0x1e26020b // fmov w11, s16
2100 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
2101 .long 0x0d408160 // ld1 {v0.s}[0], [x11]
2102 .long 0x0e0c3e09 // mov w9, v16.s[1]
2103 .long 0x0e143e0a // mov w10, v16.s[2]
2104 .long 0x8b294909 // add x9, x8, w9, uxtw #2
2105 .long 0x0e1c3e0b // mov w11, v16.s[3]
2106 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
2107 .long 0x0d409120 // ld1 {v0.s}[1], [x9]
2108 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
2109 .long 0x6e140600 // mov v0.s[2], v16.s[0]
2110 .long 0x6e1c0620 // mov v0.s[3], v17.s[0]
2111 .long 0xd61f0060 // br x3
2112
2113HIDDEN _sk_table_g_aarch64
2114.globl _sk_table_g_aarch64
2115FUNCTION(_sk_table_g_aarch64)
2116_sk_table_g_aarch64:
2117 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2118 .long 0xb9400909 // ldr w9, [x8, #8]
2119 .long 0xf9400108 // ldr x8, [x8]
2120 .long 0x51000529 // sub w9, w9, #0x1
2121 .long 0x4e040d30 // dup v16.4s, w9
2122 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2123 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
2124 .long 0x6e21a830 // fcvtnu v16.4s, v1.4s
2125 .long 0x1e26020b // fmov w11, s16
2126 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
2127 .long 0x0d408161 // ld1 {v1.s}[0], [x11]
2128 .long 0x0e0c3e09 // mov w9, v16.s[1]
2129 .long 0x0e143e0a // mov w10, v16.s[2]
2130 .long 0x8b294909 // add x9, x8, w9, uxtw #2
2131 .long 0x0e1c3e0b // mov w11, v16.s[3]
2132 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
2133 .long 0x0d409121 // ld1 {v1.s}[1], [x9]
2134 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
2135 .long 0x6e140601 // mov v1.s[2], v16.s[0]
2136 .long 0x6e1c0621 // mov v1.s[3], v17.s[0]
2137 .long 0xd61f0060 // br x3
2138
2139HIDDEN _sk_table_b_aarch64
2140.globl _sk_table_b_aarch64
2141FUNCTION(_sk_table_b_aarch64)
2142_sk_table_b_aarch64:
2143 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2144 .long 0xb9400909 // ldr w9, [x8, #8]
2145 .long 0xf9400108 // ldr x8, [x8]
2146 .long 0x51000529 // sub w9, w9, #0x1
2147 .long 0x4e040d30 // dup v16.4s, w9
2148 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2149 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
2150 .long 0x6e21a850 // fcvtnu v16.4s, v2.4s
2151 .long 0x1e26020b // fmov w11, s16
2152 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
2153 .long 0x0d408162 // ld1 {v2.s}[0], [x11]
2154 .long 0x0e0c3e09 // mov w9, v16.s[1]
2155 .long 0x0e143e0a // mov w10, v16.s[2]
2156 .long 0x8b294909 // add x9, x8, w9, uxtw #2
2157 .long 0x0e1c3e0b // mov w11, v16.s[3]
2158 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
2159 .long 0x0d409122 // ld1 {v2.s}[1], [x9]
2160 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
2161 .long 0x6e140602 // mov v2.s[2], v16.s[0]
2162 .long 0x6e1c0622 // mov v2.s[3], v17.s[0]
2163 .long 0xd61f0060 // br x3
2164
2165HIDDEN _sk_table_a_aarch64
2166.globl _sk_table_a_aarch64
2167FUNCTION(_sk_table_a_aarch64)
2168_sk_table_a_aarch64:
2169 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2170 .long 0xb9400909 // ldr w9, [x8, #8]
2171 .long 0xf9400108 // ldr x8, [x8]
2172 .long 0x51000529 // sub w9, w9, #0x1
2173 .long 0x4e040d30 // dup v16.4s, w9
2174 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2175 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
2176 .long 0x6e21a870 // fcvtnu v16.4s, v3.4s
2177 .long 0x1e26020b // fmov w11, s16
2178 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
2179 .long 0x0d408163 // ld1 {v3.s}[0], [x11]
2180 .long 0x0e0c3e09 // mov w9, v16.s[1]
2181 .long 0x0e143e0a // mov w10, v16.s[2]
2182 .long 0x8b294909 // add x9, x8, w9, uxtw #2
2183 .long 0x0e1c3e0b // mov w11, v16.s[3]
2184 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
2185 .long 0x0d409123 // ld1 {v3.s}[1], [x9]
2186 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
2187 .long 0x6e140603 // mov v3.s[2], v16.s[0]
2188 .long 0x6e1c0623 // mov v3.s[3], v17.s[0]
2189 .long 0xd61f0060 // br x3
2190
Mike Klein44375172017-04-17 19:32:05 -04002191HIDDEN _sk_parametric_r_aarch64
2192.globl _sk_parametric_r_aarch64
2193FUNCTION(_sk_parametric_r_aarch64)
2194_sk_parametric_r_aarch64:
2195 .long 0xf9400028 // ldr x8, [x1]
2196 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
2197 .long 0x91004109 // add x9, x8, #0x10
2198 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04002199 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04002200 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04002201 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04002202 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002203 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04002204 .long 0x9100210a // add x10, x8, #0x8
2205 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002206 .long 0x4f911010 // fmla v16.4s, v0.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04002207 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04002208 .long 0x52b85f09 // mov w9, #0xc2f80000
2209 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04002210 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002211 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04002212 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04002213 .long 0x4f951014 // fmla v20.4s, v0.4s, v21.s[0]
2214 .long 0x6e20e640 // fcmge v0.4s, v18.4s, v0.4s
2215 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002216 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04002217 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04002218 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04002219 .long 0x4e21da95 // scvtf v21.4s, v20.4s
2220 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04002221 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04002222 .long 0x52a7fb89 // mov w9, #0x3fdc0000
2223 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
2224 .long 0x729d3469 // movk w9, #0xe9a3
2225 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
2226 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
2227 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002228 .long 0x52a85e49 // mov w9, #0x42f20000
2229 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04002230 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2231 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002232 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
2233 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04002234 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
2235 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002236 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04002237 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002238 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04002239 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
2240 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002241 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04002242 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002243 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04002244 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
2245 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
2246 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
2247 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
2248 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002249 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04002250 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
2251 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
2252 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
2253 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
2254 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04002255 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2256 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04002257 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2258 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04002259 .long 0x6e711e00 // bsl v0.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04002260 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
2261 .long 0x4e32f400 // fmax v0.4s, v0.4s, v18.4s
2262 .long 0x4eb5f400 // fmin v0.4s, v0.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04002263 .long 0x91004021 // add x1, x1, #0x10
2264 .long 0xd61f0060 // br x3
2265
2266HIDDEN _sk_parametric_g_aarch64
2267.globl _sk_parametric_g_aarch64
2268FUNCTION(_sk_parametric_g_aarch64)
2269_sk_parametric_g_aarch64:
2270 .long 0xf9400028 // ldr x8, [x1]
2271 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
2272 .long 0x91004109 // add x9, x8, #0x10
2273 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04002274 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04002275 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04002276 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04002277 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002278 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04002279 .long 0x9100210a // add x10, x8, #0x8
2280 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002281 .long 0x4f911030 // fmla v16.4s, v1.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04002282 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04002283 .long 0x52b85f09 // mov w9, #0xc2f80000
2284 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04002285 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002286 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04002287 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04002288 .long 0x4f951034 // fmla v20.4s, v1.4s, v21.s[0]
2289 .long 0x6e21e641 // fcmge v1.4s, v18.4s, v1.4s
2290 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002291 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04002292 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04002293 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04002294 .long 0x4e21da95 // scvtf v21.4s, v20.4s
2295 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04002296 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04002297 .long 0x52a7fb89 // mov w9, #0x3fdc0000
2298 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
2299 .long 0x729d3469 // movk w9, #0xe9a3
2300 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
2301 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
2302 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002303 .long 0x52a85e49 // mov w9, #0x42f20000
2304 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04002305 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2306 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002307 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
2308 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04002309 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
2310 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002311 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04002312 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002313 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04002314 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
2315 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002316 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04002317 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002318 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04002319 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
2320 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
2321 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
2322 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
2323 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002324 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04002325 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
2326 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
2327 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
2328 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
2329 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04002330 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2331 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04002332 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2333 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04002334 .long 0x6e711e01 // bsl v1.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04002335 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
2336 .long 0x4e32f421 // fmax v1.4s, v1.4s, v18.4s
2337 .long 0x4eb5f421 // fmin v1.4s, v1.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04002338 .long 0x91004021 // add x1, x1, #0x10
2339 .long 0xd61f0060 // br x3
2340
2341HIDDEN _sk_parametric_b_aarch64
2342.globl _sk_parametric_b_aarch64
2343FUNCTION(_sk_parametric_b_aarch64)
2344_sk_parametric_b_aarch64:
2345 .long 0xf9400028 // ldr x8, [x1]
2346 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
2347 .long 0x91004109 // add x9, x8, #0x10
2348 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04002349 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04002350 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04002351 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04002352 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002353 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04002354 .long 0x9100210a // add x10, x8, #0x8
2355 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002356 .long 0x4f911050 // fmla v16.4s, v2.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04002357 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04002358 .long 0x52b85f09 // mov w9, #0xc2f80000
2359 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04002360 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002361 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04002362 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04002363 .long 0x4f951054 // fmla v20.4s, v2.4s, v21.s[0]
2364 .long 0x6e22e642 // fcmge v2.4s, v18.4s, v2.4s
2365 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002366 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04002367 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04002368 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04002369 .long 0x4e21da95 // scvtf v21.4s, v20.4s
2370 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04002371 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04002372 .long 0x52a7fb89 // mov w9, #0x3fdc0000
2373 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
2374 .long 0x729d3469 // movk w9, #0xe9a3
2375 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
2376 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
2377 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002378 .long 0x52a85e49 // mov w9, #0x42f20000
2379 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04002380 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2381 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002382 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
2383 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04002384 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
2385 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002386 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04002387 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002388 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04002389 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
2390 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002391 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04002392 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002393 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04002394 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
2395 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
2396 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
2397 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
2398 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002399 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04002400 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
2401 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
2402 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
2403 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
2404 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04002405 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2406 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04002407 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2408 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04002409 .long 0x6e711e02 // bsl v2.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04002410 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
2411 .long 0x4e32f442 // fmax v2.4s, v2.4s, v18.4s
2412 .long 0x4eb5f442 // fmin v2.4s, v2.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04002413 .long 0x91004021 // add x1, x1, #0x10
2414 .long 0xd61f0060 // br x3
2415
2416HIDDEN _sk_parametric_a_aarch64
2417.globl _sk_parametric_a_aarch64
2418FUNCTION(_sk_parametric_a_aarch64)
2419_sk_parametric_a_aarch64:
2420 .long 0xf9400028 // ldr x8, [x1]
2421 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
2422 .long 0x91004109 // add x9, x8, #0x10
2423 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04002424 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04002425 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04002426 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04002427 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002428 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04002429 .long 0x9100210a // add x10, x8, #0x8
2430 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002431 .long 0x4f911070 // fmla v16.4s, v3.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04002432 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04002433 .long 0x52b85f09 // mov w9, #0xc2f80000
2434 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04002435 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002436 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04002437 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04002438 .long 0x4f951074 // fmla v20.4s, v3.4s, v21.s[0]
2439 .long 0x6e23e643 // fcmge v3.4s, v18.4s, v3.4s
2440 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002441 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04002442 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04002443 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04002444 .long 0x4e21da95 // scvtf v21.4s, v20.4s
2445 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04002446 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04002447 .long 0x52a7fb89 // mov w9, #0x3fdc0000
2448 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
2449 .long 0x729d3469 // movk w9, #0xe9a3
2450 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
2451 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
2452 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002453 .long 0x52a85e49 // mov w9, #0x42f20000
2454 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04002455 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2456 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002457 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
2458 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04002459 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
2460 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002461 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04002462 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002463 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04002464 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
2465 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002466 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04002467 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002468 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04002469 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
2470 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
2471 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
2472 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
2473 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002474 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04002475 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
2476 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
2477 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
2478 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
2479 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04002480 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2481 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04002482 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2483 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04002484 .long 0x6e711e03 // bsl v3.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04002485 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
2486 .long 0x4e32f463 // fmax v3.4s, v3.4s, v18.4s
2487 .long 0x4eb5f463 // fmin v3.4s, v3.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04002488 .long 0x91004021 // add x1, x1, #0x10
2489 .long 0xd61f0060 // br x3
2490
Mike Klein4e3e9f82017-04-20 11:04:29 -04002491HIDDEN _sk_lab_to_xyz_aarch64
2492.globl _sk_lab_to_xyz_aarch64
2493FUNCTION(_sk_lab_to_xyz_aarch64)
2494_sk_lab_to_xyz_aarch64:
2495 .long 0x52a85908 // mov w8, #0x42c80000
2496 .long 0x4e040d10 // dup v16.4s, w8
2497 .long 0x52a86fe8 // mov w8, #0x437f0000
2498 .long 0x4f066471 // movi v17.4s, #0xc3, lsl #24
2499 .long 0x4e040d13 // dup v19.4s, w8
2500 .long 0x52a781a8 // mov w8, #0x3c0d0000
2501 .long 0x7287b968 // movk w8, #0x3dcb
2502 .long 0x4eb11e34 // mov v20.16b, v17.16b
2503 .long 0x4e21ce74 // fmla v20.4s, v19.4s, v1.4s
2504 .long 0x4e040d01 // dup v1.4s, w8
2505 .long 0x52a76068 // mov w8, #0x3b030000
2506 .long 0x72824de8 // movk w8, #0x126f
2507 .long 0x4e22ce71 // fmla v17.4s, v19.4s, v2.4s
2508 .long 0x4e040d02 // dup v2.4s, w8
2509 .long 0x52a77468 // mov w8, #0x3ba30000
2510 .long 0x729ae148 // movk w8, #0xd70a
2511 .long 0x4e040d13 // dup v19.4s, w8
2512 .long 0x52a78228 // mov w8, #0x3c110000
2513 .long 0x4f01f612 // fmov v18.4s, #1.600000000000000000e+01
2514 .long 0x72831848 // movk w8, #0x18c2
2515 .long 0x4e20ce12 // fmla v18.4s, v16.4s, v0.4s
2516 .long 0x4e040d00 // dup v0.4s, w8
2517 .long 0x52b7c1a8 // mov w8, #0xbe0d0000
2518 .long 0x7287b968 // movk w8, #0x3dcb
2519 .long 0x6e21de41 // fmul v1.4s, v18.4s, v1.4s
2520 .long 0x4e040d10 // dup v16.4s, w8
2521 .long 0x52a7c068 // mov w8, #0x3e030000
2522 .long 0x4ea11c32 // mov v18.16b, v1.16b
2523 .long 0x72900a08 // movk w8, #0x8050
2524 .long 0x4eb3ce32 // fmls v18.4s, v17.4s, v19.4s
2525 .long 0x6e21dc31 // fmul v17.4s, v1.4s, v1.4s
2526 .long 0x4ea11c35 // mov v21.16b, v1.16b
2527 .long 0x4e30d433 // fadd v19.4s, v1.4s, v16.4s
2528 .long 0x6e31dc31 // fmul v17.4s, v1.4s, v17.4s
2529 .long 0x4e34cc55 // fmla v21.4s, v2.4s, v20.4s
2530 .long 0x4e040d02 // dup v2.4s, w8
2531 .long 0x6e22de73 // fmul v19.4s, v19.4s, v2.4s
2532 .long 0x6ea0e621 // fcmgt v1.4s, v17.4s, v0.4s
2533 .long 0x6e731e21 // bsl v1.16b, v17.16b, v19.16b
2534 .long 0x6e32de51 // fmul v17.4s, v18.4s, v18.4s
2535 .long 0x4e30d653 // fadd v19.4s, v18.4s, v16.4s
2536 .long 0x6e31de51 // fmul v17.4s, v18.4s, v17.4s
2537 .long 0x52a7eec8 // mov w8, #0x3f760000
2538 .long 0x6e22de72 // fmul v18.4s, v19.4s, v2.4s
2539 .long 0x6ea0e633 // fcmgt v19.4s, v17.4s, v0.4s
2540 .long 0x729ae3e8 // movk w8, #0xd71f
2541 .long 0x6e721e33 // bsl v19.16b, v17.16b, v18.16b
2542 .long 0x6e35deb2 // fmul v18.4s, v21.4s, v21.4s
2543 .long 0x4e040d11 // dup v17.4s, w8
2544 .long 0x52a7ea68 // mov w8, #0x3f530000
2545 .long 0x4e30d6b0 // fadd v16.4s, v21.4s, v16.4s
2546 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
2547 .long 0xf8408423 // ldr x3, [x1], #8
2548 .long 0x72881ec8 // movk w8, #0x40f6
2549 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
2550 .long 0x6ea0e640 // fcmgt v0.4s, v18.4s, v0.4s
2551 .long 0x4e040d14 // dup v20.4s, w8
2552 .long 0x6e621e40 // bsl v0.16b, v18.16b, v2.16b
2553 .long 0x6e31dc00 // fmul v0.4s, v0.4s, v17.4s
2554 .long 0x6e34de62 // fmul v2.4s, v19.4s, v20.4s
2555 .long 0xd61f0060 // br x3
2556
Mike Klein7c4af542017-03-29 18:21:14 -04002557HIDDEN _sk_load_a8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002558.globl _sk_load_a8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002559FUNCTION(_sk_load_a8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002560_sk_load_a8_aarch64:
2561 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2562 .long 0x52a77009 // mov w9, #0x3b800000
2563 .long 0x72901029 // movk w9, #0x8081
2564 .long 0x4e040d22 // dup v2.4s, w9
2565 .long 0xf9400108 // ldr x8, [x8]
2566 .long 0x6f00e400 // movi v0.2d, #0x0
2567 .long 0x6f00e401 // movi v1.2d, #0x0
2568 .long 0x8b000108 // add x8, x8, x0
2569 .long 0x3940010a // ldrb w10, [x8]
2570 .long 0x3940050b // ldrb w11, [x8, #1]
2571 .long 0x3940090c // ldrb w12, [x8, #2]
2572 .long 0x39400d08 // ldrb w8, [x8, #3]
2573 .long 0x4e021d43 // mov v3.h[0], w10
2574 .long 0x4e061d63 // mov v3.h[1], w11
2575 .long 0x4e0a1d83 // mov v3.h[2], w12
2576 .long 0x4e0e1d03 // mov v3.h[3], w8
2577 .long 0x2f10a463 // uxtl v3.4s, v3.4h
2578 .long 0x6e21d863 // ucvtf v3.4s, v3.4s
2579 .long 0x6e22dc63 // fmul v3.4s, v3.4s, v2.4s
2580 .long 0x6f00e402 // movi v2.2d, #0x0
2581 .long 0xd61f0060 // br x3
2582
Mike Klein21bd3e42017-04-06 16:32:29 -04002583HIDDEN _sk_gather_a8_aarch64
2584.globl _sk_gather_a8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002585FUNCTION(_sk_gather_a8_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002586_sk_gather_a8_aarch64:
2587 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2588 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2589 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2590 .long 0x91004109 // add x9, x8, #0x10
2591 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2592 .long 0xf9400108 // ldr x8, [x8]
2593 .long 0x52a77009 // mov w9, #0x3b800000
2594 .long 0x72901029 // movk w9, #0x8081
2595 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2596 .long 0x1e26000c // fmov w12, s0
2597 .long 0x4e040d23 // dup v3.4s, w9
2598 .long 0x0e0c3c09 // mov w9, v0.s[1]
2599 .long 0x386c490c // ldrb w12, [x8, w12, uxtw]
2600 .long 0x0e143c0a // mov w10, v0.s[2]
2601 .long 0x38694909 // ldrb w9, [x8, w9, uxtw]
2602 .long 0x0e1c3c0b // mov w11, v0.s[3]
2603 .long 0x386a490a // ldrb w10, [x8, w10, uxtw]
2604 .long 0x386b4908 // ldrb w8, [x8, w11, uxtw]
2605 .long 0x4e021d82 // mov v2.h[0], w12
2606 .long 0x4e061d22 // mov v2.h[1], w9
2607 .long 0x4e0a1d42 // mov v2.h[2], w10
2608 .long 0x4e0e1d02 // mov v2.h[3], w8
2609 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
2610 .long 0x2f10a442 // uxtl v2.4s, v2.4h
2611 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
2612 .long 0x6f00e400 // movi v0.2d, #0x0
2613 .long 0x6f00e401 // movi v1.2d, #0x0
2614 .long 0x6e23dc43 // fmul v3.4s, v2.4s, v3.4s
2615 .long 0x6f00e402 // movi v2.2d, #0x0
2616 .long 0xd61f0060 // br x3
2617
Mike Klein7c4af542017-03-29 18:21:14 -04002618HIDDEN _sk_store_a8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002619.globl _sk_store_a8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002620FUNCTION(_sk_store_a8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002621_sk_store_a8_aarch64:
2622 .long 0xf9400028 // ldr x8, [x1]
2623 .long 0x52a86fe9 // mov w9, #0x437f0000
2624 .long 0x4e040d30 // dup v16.4s, w9
2625 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
2626 .long 0xf9400108 // ldr x8, [x8]
2627 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2628 .long 0x0e612a10 // xtn v16.4h, v16.4s
2629 .long 0x0e0e3e09 // umov w9, v16.h[3]
2630 .long 0x8b000108 // add x8, x8, x0
2631 .long 0x39000d09 // strb w9, [x8, #3]
2632 .long 0x0e0a3e09 // umov w9, v16.h[2]
2633 .long 0x39000909 // strb w9, [x8, #2]
2634 .long 0x0e063e09 // umov w9, v16.h[1]
2635 .long 0x39000509 // strb w9, [x8, #1]
2636 .long 0x0e023e09 // umov w9, v16.h[0]
2637 .long 0x39000109 // strb w9, [x8]
2638 .long 0xf9400423 // ldr x3, [x1, #8]
2639 .long 0x91004021 // add x1, x1, #0x10
2640 .long 0xd61f0060 // br x3
2641
Mike Kleinf809fef2017-03-31 13:52:45 -04002642HIDDEN _sk_load_g8_aarch64
2643.globl _sk_load_g8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002644FUNCTION(_sk_load_g8_aarch64)
Mike Kleinf809fef2017-03-31 13:52:45 -04002645_sk_load_g8_aarch64:
2646 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2647 .long 0x52a77009 // mov w9, #0x3b800000
2648 .long 0x72901029 // movk w9, #0x8081
2649 .long 0x4e040d20 // dup v0.4s, w9
2650 .long 0xf9400108 // ldr x8, [x8]
2651 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2652 .long 0x8b000108 // add x8, x8, x0
2653 .long 0x3940010a // ldrb w10, [x8]
2654 .long 0x39400509 // ldrb w9, [x8, #1]
2655 .long 0x3940090b // ldrb w11, [x8, #2]
2656 .long 0x39400d08 // ldrb w8, [x8, #3]
2657 .long 0x4e021d41 // mov v1.h[0], w10
2658 .long 0x4e061d21 // mov v1.h[1], w9
2659 .long 0x4e0a1d61 // mov v1.h[2], w11
2660 .long 0x4e0e1d01 // mov v1.h[3], w8
2661 .long 0x2f10a421 // uxtl v1.4s, v1.4h
2662 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
2663 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2664 .long 0x4ea01c01 // mov v1.16b, v0.16b
2665 .long 0x4ea01c02 // mov v2.16b, v0.16b
2666 .long 0xd61f0060 // br x3
2667
Mike Klein21bd3e42017-04-06 16:32:29 -04002668HIDDEN _sk_gather_g8_aarch64
2669.globl _sk_gather_g8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002670FUNCTION(_sk_gather_g8_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002671_sk_gather_g8_aarch64:
2672 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2673 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2674 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2675 .long 0x91004109 // add x9, x8, #0x10
2676 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2677 .long 0xf9400108 // ldr x8, [x8]
2678 .long 0x52a77009 // mov w9, #0x3b800000
2679 .long 0x72901029 // movk w9, #0x8081
2680 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2681 .long 0x1e26000c // fmov w12, s0
2682 .long 0x4e040d23 // dup v3.4s, w9
2683 .long 0x0e0c3c09 // mov w9, v0.s[1]
2684 .long 0x386c490c // ldrb w12, [x8, w12, uxtw]
2685 .long 0x0e143c0a // mov w10, v0.s[2]
2686 .long 0x38694909 // ldrb w9, [x8, w9, uxtw]
2687 .long 0x0e1c3c0b // mov w11, v0.s[3]
2688 .long 0x386a490a // ldrb w10, [x8, w10, uxtw]
2689 .long 0x386b4908 // ldrb w8, [x8, w11, uxtw]
2690 .long 0x4e021d80 // mov v0.h[0], w12
2691 .long 0x4e061d20 // mov v0.h[1], w9
2692 .long 0x4e0a1d40 // mov v0.h[2], w10
2693 .long 0x4e0e1d00 // mov v0.h[3], w8
2694 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
2695 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2696 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
2697 .long 0x6e23dc00 // fmul v0.4s, v0.4s, v3.4s
2698 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2699 .long 0x4ea01c01 // mov v1.16b, v0.16b
2700 .long 0x4ea01c02 // mov v2.16b, v0.16b
2701 .long 0xd61f0060 // br x3
2702
Mike Klein7d3d8722017-04-06 17:53:18 -04002703HIDDEN _sk_gather_i8_aarch64
2704.globl _sk_gather_i8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002705FUNCTION(_sk_gather_i8_aarch64)
Mike Klein7d3d8722017-04-06 17:53:18 -04002706_sk_gather_i8_aarch64:
2707 .long 0xaa0103e8 // mov x8, x1
2708 .long 0xf8408429 // ldr x9, [x1], #8
Mike Klein5d7f2b52017-05-20 13:21:59 -04002709 .long 0xb4000069 // cbz x9, 2444 <sk_gather_i8_aarch64+0x14>
Mike Klein7d3d8722017-04-06 17:53:18 -04002710 .long 0xaa0903ea // mov x10, x9
Mike Klein5d7f2b52017-05-20 13:21:59 -04002711 .long 0x14000003 // b 244c <sk_gather_i8_aarch64+0x1c>
Mike Klein7d3d8722017-04-06 17:53:18 -04002712 .long 0xf940050a // ldr x10, [x8, #8]
2713 .long 0x91004101 // add x1, x8, #0x10
2714 .long 0xf8410548 // ldr x8, [x10], #16
2715 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2716 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2717 .long 0xf9400529 // ldr x9, [x9, #8]
2718 .long 0x4d40c942 // ld1r {v2.4s}, [x10]
2719 .long 0x6f00e623 // movi v3.2d, #0xff000000ff
2720 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2721 .long 0x1e26000d // fmov w13, s0
2722 .long 0x0e0c3c0a // mov w10, v0.s[1]
2723 .long 0x386d490d // ldrb w13, [x8, w13, uxtw]
2724 .long 0x0e143c0b // mov w11, v0.s[2]
2725 .long 0x386a490a // ldrb w10, [x8, w10, uxtw]
2726 .long 0x0e1c3c0c // mov w12, v0.s[3]
2727 .long 0x386b490b // ldrb w11, [x8, w11, uxtw]
2728 .long 0x386c4908 // ldrb w8, [x8, w12, uxtw]
2729 .long 0x4e021da0 // mov v0.h[0], w13
2730 .long 0x4e061d40 // mov v0.h[1], w10
2731 .long 0x4e0a1d60 // mov v0.h[2], w11
2732 .long 0x4e0e1d00 // mov v0.h[3], w8
2733 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2734 .long 0x4e231c00 // and v0.16b, v0.16b, v3.16b
2735 .long 0x1e26000c // fmov w12, s0
2736 .long 0x8b2c492c // add x12, x9, w12, uxtw #2
2737 .long 0x0e0c3c08 // mov w8, v0.s[1]
2738 .long 0x0e143c0a // mov w10, v0.s[2]
2739 .long 0x0e1c3c0b // mov w11, v0.s[3]
2740 .long 0x0d408180 // ld1 {v0.s}[0], [x12]
2741 .long 0x8b284928 // add x8, x9, w8, uxtw #2
2742 .long 0xb86a592a // ldr w10, [x9, w10, uxtw #2]
2743 .long 0x52a7700c // mov w12, #0x3b800000
2744 .long 0x0d409100 // ld1 {v0.s}[1], [x8]
2745 .long 0xb86b5928 // ldr w8, [x9, w11, uxtw #2]
2746 .long 0x7290102c // movk w12, #0x8081
2747 .long 0xf8408423 // ldr x3, [x1], #8
2748 .long 0x4e141d40 // mov v0.s[2], w10
2749 .long 0x4e1c1d00 // mov v0.s[3], w8
2750 .long 0x4e231c01 // and v1.16b, v0.16b, v3.16b
2751 .long 0x6f380402 // ushr v2.4s, v0.4s, #8
2752 .long 0x6f300411 // ushr v17.4s, v0.4s, #16
2753 .long 0x4e040d90 // dup v16.4s, w12
2754 .long 0x6f280400 // ushr v0.4s, v0.4s, #24
2755 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2756 .long 0x4e231c42 // and v2.16b, v2.16b, v3.16b
2757 .long 0x4e231e23 // and v3.16b, v17.16b, v3.16b
2758 .long 0x4e21d811 // scvtf v17.4s, v0.4s
2759 .long 0x6e30dc20 // fmul v0.4s, v1.4s, v16.4s
2760 .long 0x4e21d841 // scvtf v1.4s, v2.4s
2761 .long 0x4e21d862 // scvtf v2.4s, v3.4s
2762 .long 0x6e30dc21 // fmul v1.4s, v1.4s, v16.4s
2763 .long 0x6e30dc42 // fmul v2.4s, v2.4s, v16.4s
2764 .long 0x6e30de23 // fmul v3.4s, v17.4s, v16.4s
2765 .long 0xd61f0060 // br x3
2766
Mike Klein7c4af542017-03-29 18:21:14 -04002767HIDDEN _sk_load_565_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002768.globl _sk_load_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002769FUNCTION(_sk_load_565_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002770_sk_load_565_aarch64:
2771 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2772 .long 0xd37ff809 // lsl x9, x0, #1
2773 .long 0x4f072701 // movi v1.4s, #0xf8, lsl #8
2774 .long 0x4f0007e3 // movi v3.4s, #0x1f
2775 .long 0xf9400108 // ldr x8, [x8]
2776 .long 0xfc696900 // ldr d0, [x8, x9]
2777 .long 0x321b17e8 // orr w8, wzr, #0x7e0
2778 .long 0x4e040d02 // dup v2.4s, w8
2779 .long 0x52a6f088 // mov w8, #0x37840000
2780 .long 0x72842108 // movk w8, #0x2108
2781 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2782 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2783 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2784 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2785 .long 0x4e040d00 // dup v0.4s, w8
2786 .long 0x52a74048 // mov w8, #0x3a020000
2787 .long 0x72810428 // movk w8, #0x821
2788 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2789 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2790 .long 0x4e040d01 // dup v1.4s, w8
2791 .long 0x52a7a088 // mov w8, #0x3d040000
2792 .long 0x72842108 // movk w8, #0x2108
2793 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2794 .long 0x6e21dc41 // fmul v1.4s, v2.4s, v1.4s
2795 .long 0x4e040d02 // dup v2.4s, w8
2796 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2797 .long 0x6e22dc62 // fmul v2.4s, v3.4s, v2.4s
2798 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2799 .long 0xd61f0060 // br x3
2800
Mike Klein21bd3e42017-04-06 16:32:29 -04002801HIDDEN _sk_gather_565_aarch64
2802.globl _sk_gather_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002803FUNCTION(_sk_gather_565_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002804_sk_gather_565_aarch64:
2805 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2806 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2807 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2808 .long 0x91004109 // add x9, x8, #0x10
2809 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2810 .long 0xf9400108 // ldr x8, [x8]
2811 .long 0x321b17e9 // orr w9, wzr, #0x7e0
2812 .long 0x4e040d23 // dup v3.4s, w9
2813 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2814 .long 0x1e26000c // fmov w12, s0
2815 .long 0x0e0c3c09 // mov w9, v0.s[1]
2816 .long 0x8b2c450c // add x12, x8, w12, uxtw #1
2817 .long 0x0e143c0a // mov w10, v0.s[2]
2818 .long 0x0e1c3c0b // mov w11, v0.s[3]
2819 .long 0x0d404180 // ld1 {v0.h}[0], [x12]
2820 .long 0x78695909 // ldrh w9, [x8, w9, uxtw #1]
2821 .long 0x786a590a // ldrh w10, [x8, w10, uxtw #1]
2822 .long 0x786b5908 // ldrh w8, [x8, w11, uxtw #1]
2823 .long 0x4f072701 // movi v1.4s, #0xf8, lsl #8
2824 .long 0x4e061d20 // mov v0.h[1], w9
2825 .long 0x4e0a1d40 // mov v0.h[2], w10
2826 .long 0x4e0e1d00 // mov v0.h[3], w8
2827 .long 0x52a6f08b // mov w11, #0x37840000
2828 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2829 .long 0x7284210b // movk w11, #0x2108
2830 .long 0x52a74049 // mov w9, #0x3a020000
2831 .long 0x4f0007e2 // movi v2.4s, #0x1f
2832 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2833 .long 0x72810429 // movk w9, #0x821
2834 .long 0x52a7a08a // mov w10, #0x3d040000
2835 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2836 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2837 .long 0x4e040d60 // dup v0.4s, w11
2838 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2839 .long 0x7284210a // movk w10, #0x2108
2840 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2841 .long 0x4e040d21 // dup v1.4s, w9
2842 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2843 .long 0x6e21dc61 // fmul v1.4s, v3.4s, v1.4s
2844 .long 0x4e040d43 // dup v3.4s, w10
2845 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2846 .long 0x6e23dc42 // fmul v2.4s, v2.4s, v3.4s
2847 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2848 .long 0xd61f0060 // br x3
2849
Mike Klein7c4af542017-03-29 18:21:14 -04002850HIDDEN _sk_store_565_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002851.globl _sk_store_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002852FUNCTION(_sk_store_565_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002853_sk_store_565_aarch64:
2854 .long 0xf9400028 // ldr x8, [x1]
2855 .long 0x52a84f8a // mov w10, #0x427c0000
2856 .long 0x4f01f7f0 // fmov v16.4s, #3.100000000000000000e+01
2857 .long 0x4e040d52 // dup v18.4s, w10
2858 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
2859 .long 0x6e32dc32 // fmul v18.4s, v1.4s, v18.4s
2860 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2861 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2862 .long 0x6e30dc50 // fmul v16.4s, v2.4s, v16.4s
2863 .long 0x4f2b5631 // shl v17.4s, v17.4s, #11
2864 .long 0xf9400108 // ldr x8, [x8]
2865 .long 0x4f255652 // shl v18.4s, v18.4s, #5
2866 .long 0x4eb11e51 // orr v17.16b, v18.16b, v17.16b
2867 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2868 .long 0x4eb01e30 // orr v16.16b, v17.16b, v16.16b
2869 .long 0xd37ff809 // lsl x9, x0, #1
2870 .long 0x0e612a10 // xtn v16.4h, v16.4s
2871 .long 0xfc296910 // str d16, [x8, x9]
2872 .long 0xf9400423 // ldr x3, [x1, #8]
2873 .long 0x91004021 // add x1, x1, #0x10
2874 .long 0xd61f0060 // br x3
2875
Mike Kleinf809fef2017-03-31 13:52:45 -04002876HIDDEN _sk_load_4444_aarch64
2877.globl _sk_load_4444_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002878FUNCTION(_sk_load_4444_aarch64)
Mike Kleinf809fef2017-03-31 13:52:45 -04002879_sk_load_4444_aarch64:
2880 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2881 .long 0xd37ff809 // lsl x9, x0, #1
2882 .long 0x4f072601 // movi v1.4s, #0xf0, lsl #8
2883 .long 0x4f0025e2 // movi v2.4s, #0xf, lsl #8
2884 .long 0xf9400108 // ldr x8, [x8]
2885 .long 0x4f070603 // movi v3.4s, #0xf0
2886 .long 0x4f0005f0 // movi v16.4s, #0xf
2887 .long 0xfc696900 // ldr d0, [x8, x9]
2888 .long 0x52a6f108 // mov w8, #0x37880000
2889 .long 0x72911128 // movk w8, #0x8889
2890 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2891 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2892 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2893 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2894 .long 0x4e301c10 // and v16.16b, v0.16b, v16.16b
2895 .long 0x4e040d00 // dup v0.4s, w8
2896 .long 0x52a73108 // mov w8, #0x39880000
2897 .long 0x72911128 // movk w8, #0x8889
2898 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2899 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2900 .long 0x4e040d01 // dup v1.4s, w8
2901 .long 0x52a77108 // mov w8, #0x3b880000
2902 .long 0x72911128 // movk w8, #0x8889
2903 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2904 .long 0x6e21dc41 // fmul v1.4s, v2.4s, v1.4s
2905 .long 0x4e040d02 // dup v2.4s, w8
2906 .long 0x52a7b108 // mov w8, #0x3d880000
2907 .long 0x72911128 // movk w8, #0x8889
2908 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2909 .long 0x6e22dc62 // fmul v2.4s, v3.4s, v2.4s
2910 .long 0x4e040d03 // dup v3.4s, w8
2911 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2912 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
2913 .long 0xd61f0060 // br x3
2914
Mike Klein21bd3e42017-04-06 16:32:29 -04002915HIDDEN _sk_gather_4444_aarch64
2916.globl _sk_gather_4444_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002917FUNCTION(_sk_gather_4444_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002918_sk_gather_4444_aarch64:
2919 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2920 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2921 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2922 .long 0x4f070603 // movi v3.4s, #0xf0
2923 .long 0x91004109 // add x9, x8, #0x10
2924 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2925 .long 0xf9400108 // ldr x8, [x8]
2926 .long 0x4f0005f0 // movi v16.4s, #0xf
2927 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2928 .long 0x1e26000c // fmov w12, s0
2929 .long 0x0e0c3c09 // mov w9, v0.s[1]
2930 .long 0x8b2c450c // add x12, x8, w12, uxtw #1
2931 .long 0x0e143c0a // mov w10, v0.s[2]
2932 .long 0x0e1c3c0b // mov w11, v0.s[3]
2933 .long 0x0d404180 // ld1 {v0.h}[0], [x12]
2934 .long 0x78695909 // ldrh w9, [x8, w9, uxtw #1]
2935 .long 0x786a590a // ldrh w10, [x8, w10, uxtw #1]
2936 .long 0x786b5908 // ldrh w8, [x8, w11, uxtw #1]
2937 .long 0x4f072601 // movi v1.4s, #0xf0, lsl #8
2938 .long 0x4e061d20 // mov v0.h[1], w9
2939 .long 0x4e0a1d40 // mov v0.h[2], w10
2940 .long 0x4e0e1d00 // mov v0.h[3], w8
2941 .long 0x52a6f10b // mov w11, #0x37880000
2942 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2943 .long 0x7291112b // movk w11, #0x8889
2944 .long 0x4f0025e2 // movi v2.4s, #0xf, lsl #8
2945 .long 0x52a73109 // mov w9, #0x39880000
2946 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2947 .long 0x72911129 // movk w9, #0x8889
2948 .long 0x52a7710a // mov w10, #0x3b880000
2949 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2950 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2951 .long 0x4e301c10 // and v16.16b, v0.16b, v16.16b
2952 .long 0x4e040d60 // dup v0.4s, w11
2953 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2954 .long 0x7291112a // movk w10, #0x8889
2955 .long 0x52a7b108 // mov w8, #0x3d880000
2956 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2957 .long 0x4e040d21 // dup v1.4s, w9
2958 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2959 .long 0x72911128 // movk w8, #0x8889
2960 .long 0x6e21dc41 // fmul v1.4s, v2.4s, v1.4s
2961 .long 0x4e040d42 // dup v2.4s, w10
2962 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2963 .long 0x6e22dc62 // fmul v2.4s, v3.4s, v2.4s
2964 .long 0x4e040d03 // dup v3.4s, w8
2965 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2966 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
2967 .long 0xd61f0060 // br x3
2968
Mike Kleinf809fef2017-03-31 13:52:45 -04002969HIDDEN _sk_store_4444_aarch64
2970.globl _sk_store_4444_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002971FUNCTION(_sk_store_4444_aarch64)
Mike Kleinf809fef2017-03-31 13:52:45 -04002972_sk_store_4444_aarch64:
2973 .long 0x4f01f5d0 // fmov v16.4s, #1.500000000000000000e+01
2974 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
2975 .long 0x6e30dc32 // fmul v18.4s, v1.4s, v16.4s
2976 .long 0xf9400028 // ldr x8, [x1]
2977 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2978 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2979 .long 0x4f2c5631 // shl v17.4s, v17.4s, #12
2980 .long 0x4f285652 // shl v18.4s, v18.4s, #8
2981 .long 0x4eb11e51 // orr v17.16b, v18.16b, v17.16b
2982 .long 0x6e30dc52 // fmul v18.4s, v2.4s, v16.4s
2983 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2984 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
2985 .long 0x4f245652 // shl v18.4s, v18.4s, #4
2986 .long 0xf9400108 // ldr x8, [x8]
2987 .long 0x4eb21e31 // orr v17.16b, v17.16b, v18.16b
2988 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2989 .long 0x4eb01e30 // orr v16.16b, v17.16b, v16.16b
2990 .long 0xd37ff809 // lsl x9, x0, #1
2991 .long 0x0e612a10 // xtn v16.4h, v16.4s
2992 .long 0xfc296910 // str d16, [x8, x9]
2993 .long 0xf9400423 // ldr x3, [x1, #8]
2994 .long 0x91004021 // add x1, x1, #0x10
2995 .long 0xd61f0060 // br x3
2996
Mike Klein7c4af542017-03-29 18:21:14 -04002997HIDDEN _sk_load_8888_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002998.globl _sk_load_8888_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002999FUNCTION(_sk_load_8888_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003000_sk_load_8888_aarch64:
3001 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3002 .long 0xd37ef409 // lsl x9, x0, #2
3003 .long 0x6f00e621 // movi v1.2d, #0xff000000ff
3004 .long 0xf9400108 // ldr x8, [x8]
3005 .long 0x3ce96900 // ldr q0, [x8, x9]
3006 .long 0x52a77008 // mov w8, #0x3b800000
3007 .long 0x72901028 // movk w8, #0x8081
3008 .long 0x4e040d02 // dup v2.4s, w8
3009 .long 0x6f380410 // ushr v16.4s, v0.4s, #8
3010 .long 0x6f300411 // ushr v17.4s, v0.4s, #16
3011 .long 0x4e211c03 // and v3.16b, v0.16b, v1.16b
3012 .long 0x6f280400 // ushr v0.4s, v0.4s, #24
3013 .long 0x4e211e10 // and v16.16b, v16.16b, v1.16b
3014 .long 0x4e211e21 // and v1.16b, v17.16b, v1.16b
3015 .long 0x4e21d863 // scvtf v3.4s, v3.4s
3016 .long 0x4e21d811 // scvtf v17.4s, v0.4s
3017 .long 0x4e21da10 // scvtf v16.4s, v16.4s
3018 .long 0x4e21d832 // scvtf v18.4s, v1.4s
3019 .long 0x6e22dc60 // fmul v0.4s, v3.4s, v2.4s
3020 .long 0x6e22de23 // fmul v3.4s, v17.4s, v2.4s
3021 .long 0x6e22de01 // fmul v1.4s, v16.4s, v2.4s
3022 .long 0x6e22de42 // fmul v2.4s, v18.4s, v2.4s
3023 .long 0xd61f0060 // br x3
3024
Mike Kleindec4ea82017-04-06 15:04:05 -04003025HIDDEN _sk_gather_8888_aarch64
3026.globl _sk_gather_8888_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003027FUNCTION(_sk_gather_8888_aarch64)
Mike Kleindec4ea82017-04-06 15:04:05 -04003028_sk_gather_8888_aarch64:
3029 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3030 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
3031 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
3032 .long 0x91004109 // add x9, x8, #0x10
3033 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
3034 .long 0xf9400108 // ldr x8, [x8]
3035 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
3036 .long 0x1e26000c // fmov w12, s0
3037 .long 0x8b2c490c // add x12, x8, w12, uxtw #2
3038 .long 0x0e0c3c09 // mov w9, v0.s[1]
3039 .long 0x0e143c0a // mov w10, v0.s[2]
3040 .long 0x0e1c3c0b // mov w11, v0.s[3]
3041 .long 0x0d408180 // ld1 {v0.s}[0], [x12]
3042 .long 0x8b294909 // add x9, x8, w9, uxtw #2
3043 .long 0xb86a590a // ldr w10, [x8, w10, uxtw #2]
3044 .long 0xb86b5908 // ldr w8, [x8, w11, uxtw #2]
3045 .long 0x0d409120 // ld1 {v0.s}[1], [x9]
3046 .long 0x6f00e621 // movi v1.2d, #0xff000000ff
3047 .long 0x52a77009 // mov w9, #0x3b800000
3048 .long 0x72901029 // movk w9, #0x8081
3049 .long 0x4e141d40 // mov v0.s[2], w10
3050 .long 0x4e1c1d00 // mov v0.s[3], w8
3051 .long 0x6f380410 // ushr v16.4s, v0.4s, #8
3052 .long 0x6f300411 // ushr v17.4s, v0.4s, #16
3053 .long 0x4e211c03 // and v3.16b, v0.16b, v1.16b
3054 .long 0x6f280400 // ushr v0.4s, v0.4s, #24
3055 .long 0x4e211e10 // and v16.16b, v16.16b, v1.16b
3056 .long 0x4e211e21 // and v1.16b, v17.16b, v1.16b
3057 .long 0x4e040d22 // dup v2.4s, w9
3058 .long 0x4e21d863 // scvtf v3.4s, v3.4s
3059 .long 0x4e21d811 // scvtf v17.4s, v0.4s
3060 .long 0x4e21da10 // scvtf v16.4s, v16.4s
3061 .long 0x4e21d832 // scvtf v18.4s, v1.4s
3062 .long 0x6e22dc60 // fmul v0.4s, v3.4s, v2.4s
3063 .long 0x6e22de23 // fmul v3.4s, v17.4s, v2.4s
3064 .long 0x6e22de01 // fmul v1.4s, v16.4s, v2.4s
3065 .long 0x6e22de42 // fmul v2.4s, v18.4s, v2.4s
3066 .long 0xd61f0060 // br x3
3067
Mike Klein7c4af542017-03-29 18:21:14 -04003068HIDDEN _sk_store_8888_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003069.globl _sk_store_8888_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003070FUNCTION(_sk_store_8888_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003071_sk_store_8888_aarch64:
3072 .long 0x52a86fea // mov w10, #0x437f0000
3073 .long 0x4e040d50 // dup v16.4s, w10
3074 .long 0xf9400028 // ldr x8, [x1]
3075 .long 0x6e30dc32 // fmul v18.4s, v1.4s, v16.4s
3076 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
3077 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
3078 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
3079 .long 0x4f285652 // shl v18.4s, v18.4s, #8
3080 .long 0x4eb11e51 // orr v17.16b, v18.16b, v17.16b
3081 .long 0x6e30dc52 // fmul v18.4s, v2.4s, v16.4s
3082 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
3083 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
3084 .long 0xf9400108 // ldr x8, [x8]
3085 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
3086 .long 0x4f305652 // shl v18.4s, v18.4s, #16
3087 .long 0x4eb21e31 // orr v17.16b, v17.16b, v18.16b
3088 .long 0x4f385610 // shl v16.4s, v16.4s, #24
3089 .long 0xd37ef409 // lsl x9, x0, #2
3090 .long 0x4eb01e30 // orr v16.16b, v17.16b, v16.16b
3091 .long 0x3ca96910 // str q16, [x8, x9]
3092 .long 0xf9400423 // ldr x3, [x1, #8]
3093 .long 0x91004021 // add x1, x1, #0x10
3094 .long 0xd61f0060 // br x3
3095
Mike Klein7c4af542017-03-29 18:21:14 -04003096HIDDEN _sk_load_f16_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003097.globl _sk_load_f16_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003098FUNCTION(_sk_load_f16_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003099_sk_load_f16_aarch64:
3100 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3101 .long 0xf9400108 // ldr x8, [x8]
3102 .long 0x8b000d08 // add x8, x8, x0, lsl #3
3103 .long 0x0c400510 // ld4 {v16.4h-v19.4h}, [x8]
3104 .long 0x0e217a00 // fcvtl v0.4s, v16.4h
3105 .long 0x0e217a21 // fcvtl v1.4s, v17.4h
3106 .long 0x0e217a42 // fcvtl v2.4s, v18.4h
3107 .long 0x0e217a63 // fcvtl v3.4s, v19.4h
3108 .long 0xd61f0060 // br x3
3109
Mike Klein5f055f02017-04-06 20:02:11 -04003110HIDDEN _sk_gather_f16_aarch64
3111.globl _sk_gather_f16_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003112FUNCTION(_sk_gather_f16_aarch64)
Mike Klein5f055f02017-04-06 20:02:11 -04003113_sk_gather_f16_aarch64:
3114 .long 0xa9bf7bfd // stp x29, x30, [sp, #-16]!
3115 .long 0xd100c3e9 // sub x9, sp, #0x30
3116 .long 0x910003fd // mov x29, sp
3117 .long 0x927be93f // and sp, x9, #0xffffffffffffffe0
3118 .long 0xf9400028 // ldr x8, [x1]
3119 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
3120 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
3121 .long 0x91004109 // add x9, x8, #0x10
3122 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
3123 .long 0xf9400108 // ldr x8, [x8]
3124 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
3125 .long 0x0e143c0a // mov w10, v0.s[2]
3126 .long 0x1e26000c // fmov w12, s0
3127 .long 0x8b2c4d0c // add x12, x8, w12, uxtw #3
3128 .long 0x8b2a4d0a // add x10, x8, w10, uxtw #3
3129 .long 0x0e0c3c09 // mov w9, v0.s[1]
3130 .long 0x0e1c3c0b // mov w11, v0.s[3]
3131 .long 0x0d408540 // ld1 {v0.d}[0], [x10]
3132 .long 0x0d408581 // ld1 {v1.d}[0], [x12]
3133 .long 0x8b294d09 // add x9, x8, w9, uxtw #3
3134 .long 0x8b2b4d08 // add x8, x8, w11, uxtw #3
3135 .long 0x4d408500 // ld1 {v0.d}[1], [x8]
3136 .long 0x4d408521 // ld1 {v1.d}[1], [x9]
3137 .long 0x910003e8 // mov x8, sp
3138 .long 0xad0003e1 // stp q1, q0, [sp]
3139 .long 0x0c400510 // ld4 {v16.4h-v19.4h}, [x8]
3140 .long 0xf9400428 // ldr x8, [x1, #8]
3141 .long 0x91004021 // add x1, x1, #0x10
3142 .long 0x0e217a00 // fcvtl v0.4s, v16.4h
3143 .long 0x0e217a21 // fcvtl v1.4s, v17.4h
3144 .long 0x0e217a42 // fcvtl v2.4s, v18.4h
3145 .long 0x0e217a63 // fcvtl v3.4s, v19.4h
3146 .long 0xd63f0100 // blr x8
3147 .long 0x910003bf // mov sp, x29
3148 .long 0xa8c17bfd // ldp x29, x30, [sp], #16
3149 .long 0xd65f03c0 // ret
3150
Mike Klein7c4af542017-03-29 18:21:14 -04003151HIDDEN _sk_store_f16_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003152.globl _sk_store_f16_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003153FUNCTION(_sk_store_f16_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003154_sk_store_f16_aarch64:
3155 .long 0xf9400028 // ldr x8, [x1]
3156 .long 0x0e216810 // fcvtn v16.4h, v0.4s
3157 .long 0x0e216831 // fcvtn v17.4h, v1.4s
3158 .long 0x0e216852 // fcvtn v18.4h, v2.4s
3159 .long 0xf9400108 // ldr x8, [x8]
3160 .long 0x0e216873 // fcvtn v19.4h, v3.4s
3161 .long 0x8b000d08 // add x8, x8, x0, lsl #3
3162 .long 0x0c000510 // st4 {v16.4h-v19.4h}, [x8]
3163 .long 0xf9400423 // ldr x3, [x1, #8]
3164 .long 0x91004021 // add x1, x1, #0x10
3165 .long 0xd61f0060 // br x3
3166
Mike Klein3146bb92017-04-05 14:45:02 -04003167HIDDEN _sk_load_u16_be_aarch64
3168.globl _sk_load_u16_be_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003169FUNCTION(_sk_load_u16_be_aarch64)
Mike Klein3146bb92017-04-05 14:45:02 -04003170_sk_load_u16_be_aarch64:
3171 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3172 .long 0xf9400108 // ldr x8, [x8]
3173 .long 0x8b000d08 // add x8, x8, x0, lsl #3
3174 .long 0x0c400500 // ld4 {v0.4h-v3.4h}, [x8]
3175 .long 0x52a6f008 // mov w8, #0x37800000
3176 .long 0x72801008 // movk w8, #0x80
3177 .long 0x0f185410 // shl v16.4h, v0.4h, #8
3178 .long 0x2f180411 // ushr v17.4h, v0.4h, #8
3179 .long 0x0f185432 // shl v18.4h, v1.4h, #8
3180 .long 0x2f180433 // ushr v19.4h, v1.4h, #8
3181 .long 0x0f185454 // shl v20.4h, v2.4h, #8
3182 .long 0x2f180455 // ushr v21.4h, v2.4h, #8
3183 .long 0x0f185476 // shl v22.4h, v3.4h, #8
3184 .long 0x2f180460 // ushr v0.4h, v3.4h, #8
3185 .long 0x0eb11e01 // orr v1.8b, v16.8b, v17.8b
3186 .long 0x0eb31e42 // orr v2.8b, v18.8b, v19.8b
3187 .long 0x0eb51e90 // orr v16.8b, v20.8b, v21.8b
3188 .long 0x0ea01ec0 // orr v0.8b, v22.8b, v0.8b
3189 .long 0x2f10a421 // uxtl v1.4s, v1.4h
3190 .long 0x2f10a442 // uxtl v2.4s, v2.4h
3191 .long 0x2f10a610 // uxtl v16.4s, v16.4h
3192 .long 0x2f10a400 // uxtl v0.4s, v0.4h
3193 .long 0x4e040d03 // dup v3.4s, w8
3194 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
3195 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
3196 .long 0x6e21da10 // ucvtf v16.4s, v16.4s
3197 .long 0x6e21d811 // ucvtf v17.4s, v0.4s
3198 .long 0x6e23dc20 // fmul v0.4s, v1.4s, v3.4s
3199 .long 0x6e23dc41 // fmul v1.4s, v2.4s, v3.4s
3200 .long 0x6e23de02 // fmul v2.4s, v16.4s, v3.4s
3201 .long 0x6e23de23 // fmul v3.4s, v17.4s, v3.4s
3202 .long 0xd61f0060 // br x3
3203
Mike Kleinb3821732017-04-17 10:58:05 -04003204HIDDEN _sk_load_rgb_u16_be_aarch64
3205.globl _sk_load_rgb_u16_be_aarch64
3206FUNCTION(_sk_load_rgb_u16_be_aarch64)
3207_sk_load_rgb_u16_be_aarch64:
3208 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3209 .long 0x321f07e9 // orr w9, wzr, #0x6
3210 .long 0xf9400108 // ldr x8, [x8]
3211 .long 0x9b092008 // madd x8, x0, x9, x8
3212 .long 0x0c404500 // ld3 {v0.4h-v2.4h}, [x8]
3213 .long 0x52a6f008 // mov w8, #0x37800000
3214 .long 0x72801008 // movk w8, #0x80
3215 .long 0x0f185403 // shl v3.4h, v0.4h, #8
3216 .long 0x2f180410 // ushr v16.4h, v0.4h, #8
3217 .long 0x0f185431 // shl v17.4h, v1.4h, #8
3218 .long 0x2f180432 // ushr v18.4h, v1.4h, #8
3219 .long 0x0f185453 // shl v19.4h, v2.4h, #8
3220 .long 0x2f180440 // ushr v0.4h, v2.4h, #8
3221 .long 0x0eb01c61 // orr v1.8b, v3.8b, v16.8b
3222 .long 0x0eb21e23 // orr v3.8b, v17.8b, v18.8b
3223 .long 0x0ea01e60 // orr v0.8b, v19.8b, v0.8b
3224 .long 0x2f10a421 // uxtl v1.4s, v1.4h
3225 .long 0x2f10a463 // uxtl v3.4s, v3.4h
3226 .long 0x2f10a400 // uxtl v0.4s, v0.4h
3227 .long 0x4e040d02 // dup v2.4s, w8
3228 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
3229 .long 0x6e21d863 // ucvtf v3.4s, v3.4s
3230 .long 0x6e21d810 // ucvtf v16.4s, v0.4s
3231 .long 0x6e22dc20 // fmul v0.4s, v1.4s, v2.4s
3232 .long 0x6e22dc61 // fmul v1.4s, v3.4s, v2.4s
3233 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
3234 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
3235 .long 0xd61f0060 // br x3
3236
Mike Klein3146bb92017-04-05 14:45:02 -04003237HIDDEN _sk_store_u16_be_aarch64
3238.globl _sk_store_u16_be_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003239FUNCTION(_sk_store_u16_be_aarch64)
Mike Klein3146bb92017-04-05 14:45:02 -04003240_sk_store_u16_be_aarch64:
3241 .long 0x52a8efe9 // mov w9, #0x477f0000
3242 .long 0x729fe009 // movk w9, #0xff00
3243 .long 0x4e040d30 // dup v16.4s, w9
3244 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
3245 .long 0xf9400028 // ldr x8, [x1]
3246 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
3247 .long 0x0e612a31 // xtn v17.4h, v17.4s
3248 .long 0x6e30dc32 // fmul v18.4s, v1.4s, v16.4s
3249 .long 0x0f185633 // shl v19.4h, v17.4h, #8
3250 .long 0x2f180631 // ushr v17.4h, v17.4h, #8
3251 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
3252 .long 0x0eb11e75 // orr v21.8b, v19.8b, v17.8b
3253 .long 0x6e30dc51 // fmul v17.4s, v2.4s, v16.4s
3254 .long 0x0e612a52 // xtn v18.4h, v18.4s
3255 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
3256 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
3257 .long 0xf9400108 // ldr x8, [x8]
3258 .long 0x0f185654 // shl v20.4h, v18.4h, #8
3259 .long 0x2f180652 // ushr v18.4h, v18.4h, #8
3260 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
3261 .long 0x0e612a31 // xtn v17.4h, v17.4s
3262 .long 0x0eb21e96 // orr v22.8b, v20.8b, v18.8b
3263 .long 0x0e612a10 // xtn v16.4h, v16.4s
3264 .long 0x0f185632 // shl v18.4h, v17.4h, #8
3265 .long 0x2f180631 // ushr v17.4h, v17.4h, #8
3266 .long 0x0eb11e57 // orr v23.8b, v18.8b, v17.8b
3267 .long 0x0f185611 // shl v17.4h, v16.4h, #8
3268 .long 0x2f180610 // ushr v16.4h, v16.4h, #8
3269 .long 0x8b000d08 // add x8, x8, x0, lsl #3
3270 .long 0x0eb01e38 // orr v24.8b, v17.8b, v16.8b
3271 .long 0x0c000515 // st4 {v21.4h-v24.4h}, [x8]
3272 .long 0xf9400423 // ldr x3, [x1, #8]
3273 .long 0x91004021 // add x1, x1, #0x10
3274 .long 0xd61f0060 // br x3
3275
Mike Klein14987eb2017-04-06 10:22:26 -04003276HIDDEN _sk_load_f32_aarch64
3277.globl _sk_load_f32_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003278FUNCTION(_sk_load_f32_aarch64)
Mike Klein14987eb2017-04-06 10:22:26 -04003279_sk_load_f32_aarch64:
3280 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3281 .long 0xf9400108 // ldr x8, [x8]
3282 .long 0x8b001108 // add x8, x8, x0, lsl #4
3283 .long 0x4c400900 // ld4 {v0.4s-v3.4s}, [x8]
3284 .long 0xd61f0060 // br x3
3285
Mike Klein7c4af542017-03-29 18:21:14 -04003286HIDDEN _sk_store_f32_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003287.globl _sk_store_f32_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003288FUNCTION(_sk_store_f32_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003289_sk_store_f32_aarch64:
3290 .long 0xf9400028 // ldr x8, [x1]
3291 .long 0xf9400108 // ldr x8, [x8]
3292 .long 0x8b001108 // add x8, x8, x0, lsl #4
3293 .long 0x4c000900 // st4 {v0.4s-v3.4s}, [x8]
3294 .long 0xf9400423 // ldr x3, [x1, #8]
3295 .long 0x91004021 // add x1, x1, #0x10
3296 .long 0xd61f0060 // br x3
3297
Mike Klein7c4af542017-03-29 18:21:14 -04003298HIDDEN _sk_clamp_x_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003299.globl _sk_clamp_x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003300FUNCTION(_sk_clamp_x_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003301_sk_clamp_x_aarch64:
3302 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3303 .long 0x6f00e411 // movi v17.2d, #0x0
3304 .long 0x4e20f620 // fmax v0.4s, v17.4s, v0.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04003305 .long 0x4d40c910 // ld1r {v16.4s}, [x8]
Mike Kleind7e06ae2017-03-29 16:33:06 -04003306 .long 0x4eb0f400 // fmin v0.4s, v0.4s, v16.4s
3307 .long 0xd61f0060 // br x3
3308
Mike Klein7c4af542017-03-29 18:21:14 -04003309HIDDEN _sk_clamp_y_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003310.globl _sk_clamp_y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003311FUNCTION(_sk_clamp_y_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003312_sk_clamp_y_aarch64:
3313 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3314 .long 0x6f00e411 // movi v17.2d, #0x0
3315 .long 0x4e21f621 // fmax v1.4s, v17.4s, v1.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04003316 .long 0x4d40c910 // ld1r {v16.4s}, [x8]
Mike Kleind7e06ae2017-03-29 16:33:06 -04003317 .long 0x4eb0f421 // fmin v1.4s, v1.4s, v16.4s
3318 .long 0xd61f0060 // br x3
3319
Mike Klein7c4af542017-03-29 18:21:14 -04003320HIDDEN _sk_repeat_x_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003321.globl _sk_repeat_x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003322FUNCTION(_sk_repeat_x_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003323_sk_repeat_x_aarch64:
3324 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
Mike Kleind7e06ae2017-03-29 16:33:06 -04003325 .long 0xbd400110 // ldr s16, [x8]
Mike Kleinfc84dc52017-05-11 15:29:31 -04003326 .long 0x4e040611 // dup v17.4s, v16.s[0]
Mike Klein8ca33562017-05-23 08:07:43 -04003327 .long 0x6e31fc11 // fdiv v17.4s, v0.4s, v17.4s
3328 .long 0x4e219a31 // frintm v17.4s, v17.4s
3329 .long 0x4f905220 // fmls v0.4s, v17.4s, v16.s[0]
Mike Kleind7e06ae2017-03-29 16:33:06 -04003330 .long 0xd61f0060 // br x3
3331
Mike Klein7c4af542017-03-29 18:21:14 -04003332HIDDEN _sk_repeat_y_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003333.globl _sk_repeat_y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003334FUNCTION(_sk_repeat_y_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003335_sk_repeat_y_aarch64:
3336 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
Mike Kleind7e06ae2017-03-29 16:33:06 -04003337 .long 0xbd400110 // ldr s16, [x8]
Mike Kleinfc84dc52017-05-11 15:29:31 -04003338 .long 0x4e040611 // dup v17.4s, v16.s[0]
Mike Klein8ca33562017-05-23 08:07:43 -04003339 .long 0x6e31fc31 // fdiv v17.4s, v1.4s, v17.4s
3340 .long 0x4e219a31 // frintm v17.4s, v17.4s
3341 .long 0x4f905221 // fmls v1.4s, v17.4s, v16.s[0]
Mike Kleind7e06ae2017-03-29 16:33:06 -04003342 .long 0xd61f0060 // br x3
3343
Mike Klein7c4af542017-03-29 18:21:14 -04003344HIDDEN _sk_mirror_x_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003345.globl _sk_mirror_x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003346FUNCTION(_sk_mirror_x_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003347_sk_mirror_x_aarch64:
3348 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3349 .long 0xbd400110 // ldr s16, [x8]
3350 .long 0x4e040611 // dup v17.4s, v16.s[0]
3351 .long 0x1e302a10 // fadd s16, s16, s16
3352 .long 0x4eb1d400 // fsub v0.4s, v0.4s, v17.4s
3353 .long 0x4e040612 // dup v18.4s, v16.s[0]
3354 .long 0x6e32fc12 // fdiv v18.4s, v0.4s, v18.4s
3355 .long 0x4e219a52 // frintm v18.4s, v18.4s
3356 .long 0x4f905240 // fmls v0.4s, v18.4s, v16.s[0]
Mike Kleind7e06ae2017-03-29 16:33:06 -04003357 .long 0x4eb1d400 // fsub v0.4s, v0.4s, v17.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04003358 .long 0x4ea0f800 // fabs v0.4s, v0.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04003359 .long 0xd61f0060 // br x3
3360
Mike Klein7c4af542017-03-29 18:21:14 -04003361HIDDEN _sk_mirror_y_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003362.globl _sk_mirror_y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003363FUNCTION(_sk_mirror_y_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003364_sk_mirror_y_aarch64:
3365 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3366 .long 0xbd400110 // ldr s16, [x8]
3367 .long 0x4e040611 // dup v17.4s, v16.s[0]
3368 .long 0x1e302a10 // fadd s16, s16, s16
3369 .long 0x4eb1d421 // fsub v1.4s, v1.4s, v17.4s
3370 .long 0x4e040612 // dup v18.4s, v16.s[0]
3371 .long 0x6e32fc32 // fdiv v18.4s, v1.4s, v18.4s
3372 .long 0x4e219a52 // frintm v18.4s, v18.4s
3373 .long 0x4f905241 // fmls v1.4s, v18.4s, v16.s[0]
Mike Kleind7e06ae2017-03-29 16:33:06 -04003374 .long 0x4eb1d421 // fsub v1.4s, v1.4s, v17.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04003375 .long 0x4ea0f821 // fabs v1.4s, v1.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -04003376 .long 0xd61f0060 // br x3
3377
Mike Klein9f85d682017-05-23 07:52:01 -04003378HIDDEN _sk_clamp_x_1_aarch64
3379.globl _sk_clamp_x_1_aarch64
3380FUNCTION(_sk_clamp_x_1_aarch64)
3381_sk_clamp_x_1_aarch64:
3382 .long 0xf8408423 // ldr x3, [x1], #8
3383 .long 0x6f00e410 // movi v16.2d, #0x0
3384 .long 0x4e20f600 // fmax v0.4s, v16.4s, v0.4s
3385 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
3386 .long 0x4eb0f400 // fmin v0.4s, v0.4s, v16.4s
3387 .long 0xd61f0060 // br x3
3388
3389HIDDEN _sk_repeat_x_1_aarch64
3390.globl _sk_repeat_x_1_aarch64
3391FUNCTION(_sk_repeat_x_1_aarch64)
3392_sk_repeat_x_1_aarch64:
3393 .long 0xf8408423 // ldr x3, [x1], #8
3394 .long 0x4e219810 // frintm v16.4s, v0.4s
3395 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
3396 .long 0xd61f0060 // br x3
3397
3398HIDDEN _sk_mirror_x_1_aarch64
3399.globl _sk_mirror_x_1_aarch64
3400FUNCTION(_sk_mirror_x_1_aarch64)
3401_sk_mirror_x_1_aarch64:
3402 .long 0x4f07f610 // fmov v16.4s, #-1.000000000000000000e+00
3403 .long 0x4f0167f1 // movi v17.4s, #0x3f, lsl #24
3404 .long 0x4e30d400 // fadd v0.4s, v0.4s, v16.4s
3405 .long 0x6e31dc11 // fmul v17.4s, v0.4s, v17.4s
3406 .long 0x4e219a31 // frintm v17.4s, v17.4s
3407 .long 0x4e31d631 // fadd v17.4s, v17.4s, v17.4s
3408 .long 0xf8408423 // ldr x3, [x1], #8
3409 .long 0x4eb1d400 // fsub v0.4s, v0.4s, v17.4s
3410 .long 0x4e30d400 // fadd v0.4s, v0.4s, v16.4s
3411 .long 0x4ea0f800 // fabs v0.4s, v0.4s
3412 .long 0xd61f0060 // br x3
3413
Mike Klein7c4af542017-03-29 18:21:14 -04003414HIDDEN _sk_luminance_to_alpha_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003415.globl _sk_luminance_to_alpha_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003416FUNCTION(_sk_luminance_to_alpha_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003417_sk_luminance_to_alpha_aarch64:
3418 .long 0x52a7cb28 // mov w8, #0x3e590000
3419 .long 0x72967a08 // movk w8, #0xb3d0
3420 .long 0x4e040d11 // dup v17.4s, w8
3421 .long 0x52a7e6e8 // mov w8, #0x3f370000
3422 .long 0x7282eb28 // movk w8, #0x1759
3423 .long 0x4ea01c10 // mov v16.16b, v0.16b
3424 .long 0x4e040d00 // dup v0.4s, w8
3425 .long 0x52a7b268 // mov w8, #0x3d930000
3426 .long 0xf8408423 // ldr x3, [x1], #8
3427 .long 0x729bb308 // movk w8, #0xdd98
3428 .long 0x6e20dc23 // fmul v3.4s, v1.4s, v0.4s
3429 .long 0x4e30ce23 // fmla v3.4s, v17.4s, v16.4s
3430 .long 0x4e040d10 // dup v16.4s, w8
3431 .long 0x6f00e400 // movi v0.2d, #0x0
3432 .long 0x6f00e401 // movi v1.2d, #0x0
3433 .long 0x4e22ce03 // fmla v3.4s, v16.4s, v2.4s
3434 .long 0x6f00e402 // movi v2.2d, #0x0
3435 .long 0xd61f0060 // br x3
3436
Mike Klein7c4af542017-03-29 18:21:14 -04003437HIDDEN _sk_matrix_2x3_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003438.globl _sk_matrix_2x3_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003439FUNCTION(_sk_matrix_2x3_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003440_sk_matrix_2x3_aarch64:
3441 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3442 .long 0xaa0803e9 // mov x9, x8
3443 .long 0x9100410a // add x10, x8, #0x10
3444 .long 0x4ddfc932 // ld1r {v18.4s}, [x9], #4
3445 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
3446 .long 0x2d415113 // ldp s19, s20, [x8, #8]
3447 .long 0x9100510a // add x10, x8, #0x14
3448 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
3449 .long 0x4f931030 // fmla v16.4s, v1.4s, v19.s[0]
3450 .long 0xbd400133 // ldr s19, [x9]
3451 .long 0x4f941031 // fmla v17.4s, v1.4s, v20.s[0]
3452 .long 0x4e20ce50 // fmla v16.4s, v18.4s, v0.4s
3453 .long 0x4f931011 // fmla v17.4s, v0.4s, v19.s[0]
3454 .long 0x4eb01e00 // mov v0.16b, v16.16b
3455 .long 0x4eb11e21 // mov v1.16b, v17.16b
3456 .long 0xd61f0060 // br x3
3457
Mike Klein7c4af542017-03-29 18:21:14 -04003458HIDDEN _sk_matrix_3x4_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003459.globl _sk_matrix_3x4_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003460FUNCTION(_sk_matrix_3x4_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003461_sk_matrix_3x4_aarch64:
3462 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3463 .long 0xaa0803e9 // mov x9, x8
3464 .long 0x9100910a // add x10, x8, #0x24
3465 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
3466 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
3467 .long 0x9100a10a // add x10, x8, #0x28
3468 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
3469 .long 0x9100b10a // add x10, x8, #0x2c
3470 .long 0x2d435514 // ldp s20, s21, [x8, #24]
3471 .long 0xbd402116 // ldr s22, [x8, #32]
3472 .long 0x4d40c952 // ld1r {v18.4s}, [x10]
3473 .long 0x4f941050 // fmla v16.4s, v2.4s, v20.s[0]
3474 .long 0x4f951051 // fmla v17.4s, v2.4s, v21.s[0]
3475 .long 0x4f961052 // fmla v18.4s, v2.4s, v22.s[0]
3476 .long 0x2d425502 // ldp s2, s21, [x8, #16]
3477 .long 0x2d415d14 // ldp s20, s23, [x8, #8]
3478 .long 0x4f821031 // fmla v17.4s, v1.4s, v2.s[0]
3479 .long 0xbd400122 // ldr s2, [x9]
3480 .long 0x4f971030 // fmla v16.4s, v1.4s, v23.s[0]
3481 .long 0x4f951032 // fmla v18.4s, v1.4s, v21.s[0]
3482 .long 0x4e20ce70 // fmla v16.4s, v19.4s, v0.4s
3483 .long 0x4f941012 // fmla v18.4s, v0.4s, v20.s[0]
3484 .long 0x4f821011 // fmla v17.4s, v0.4s, v2.s[0]
3485 .long 0x4eb01e00 // mov v0.16b, v16.16b
3486 .long 0x4eb11e21 // mov v1.16b, v17.16b
3487 .long 0x4eb21e42 // mov v2.16b, v18.16b
3488 .long 0xd61f0060 // br x3
3489
Mike Klein7c4af542017-03-29 18:21:14 -04003490HIDDEN _sk_matrix_4x5_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003491.globl _sk_matrix_4x5_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003492FUNCTION(_sk_matrix_4x5_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003493_sk_matrix_4x5_aarch64:
3494 .long 0xf9400029 // ldr x9, [x1]
3495 .long 0xaa0903e8 // mov x8, x9
3496 .long 0x9101012a // add x10, x9, #0x40
3497 .long 0x4ddfc914 // ld1r {v20.4s}, [x8], #4
3498 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
3499 .long 0x9101112a // add x10, x9, #0x44
3500 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
3501 .long 0x9101212a // add x10, x9, #0x48
3502 .long 0x4d40c952 // ld1r {v18.4s}, [x10]
3503 .long 0x2d465533 // ldp s19, s21, [x9, #48]
3504 .long 0x2d475d36 // ldp s22, s23, [x9, #56]
3505 .long 0x9101312a // add x10, x9, #0x4c
3506 .long 0xf9400423 // ldr x3, [x1, #8]
3507 .long 0x4f931070 // fmla v16.4s, v3.4s, v19.s[0]
3508 .long 0x4d40c953 // ld1r {v19.4s}, [x10]
3509 .long 0x4f951071 // fmla v17.4s, v3.4s, v21.s[0]
3510 .long 0x4f961072 // fmla v18.4s, v3.4s, v22.s[0]
3511 .long 0x2d445935 // ldp s21, s22, [x9, #32]
3512 .long 0x4f971073 // fmla v19.4s, v3.4s, v23.s[0]
3513 .long 0x2d455d23 // ldp s3, s23, [x9, #40]
3514 .long 0x91004021 // add x1, x1, #0x10
3515 .long 0x4f951050 // fmla v16.4s, v2.4s, v21.s[0]
3516 .long 0x4f961051 // fmla v17.4s, v2.4s, v22.s[0]
3517 .long 0x2d425935 // ldp s21, s22, [x9, #16]
3518 .long 0x4f971053 // fmla v19.4s, v2.4s, v23.s[0]
3519 .long 0x4f831052 // fmla v18.4s, v2.4s, v3.s[0]
3520 .long 0x2d410d22 // ldp s2, s3, [x9, #8]
3521 .long 0x4f951030 // fmla v16.4s, v1.4s, v21.s[0]
3522 .long 0x2d435d35 // ldp s21, s23, [x9, #24]
3523 .long 0x4f961031 // fmla v17.4s, v1.4s, v22.s[0]
3524 .long 0xbd400116 // ldr s22, [x8]
3525 .long 0x4e20ce90 // fmla v16.4s, v20.4s, v0.4s
3526 .long 0x4f951032 // fmla v18.4s, v1.4s, v21.s[0]
3527 .long 0x4f971033 // fmla v19.4s, v1.4s, v23.s[0]
3528 .long 0x4f821012 // fmla v18.4s, v0.4s, v2.s[0]
3529 .long 0x4f831013 // fmla v19.4s, v0.4s, v3.s[0]
3530 .long 0x4f961011 // fmla v17.4s, v0.4s, v22.s[0]
3531 .long 0x4eb01e00 // mov v0.16b, v16.16b
3532 .long 0x4eb11e21 // mov v1.16b, v17.16b
3533 .long 0x4eb21e42 // mov v2.16b, v18.16b
3534 .long 0x4eb31e63 // mov v3.16b, v19.16b
3535 .long 0xd61f0060 // br x3
3536
Mike Reed02640952017-05-19 15:32:13 -04003537HIDDEN _sk_matrix_4x3_aarch64
3538.globl _sk_matrix_4x3_aarch64
3539FUNCTION(_sk_matrix_4x3_aarch64)
3540_sk_matrix_4x3_aarch64:
3541 .long 0xf9400028 // ldr x8, [x1]
3542 .long 0xaa0803e9 // mov x9, x8
3543 .long 0x9100810a // add x10, x8, #0x20
3544 .long 0x4ddfc932 // ld1r {v18.4s}, [x9], #4
3545 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
3546 .long 0x9100910a // add x10, x8, #0x24
3547 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
3548 .long 0x9100a10a // add x10, x8, #0x28
3549 .long 0x2d425113 // ldp s19, s20, [x8, #16]
3550 .long 0x4d40c942 // ld1r {v2.4s}, [x10]
3551 .long 0x9100b10a // add x10, x8, #0x2c
3552 .long 0x2d435915 // ldp s21, s22, [x8, #24]
3553 .long 0x4d40c943 // ld1r {v3.4s}, [x10]
3554 .long 0x4f931030 // fmla v16.4s, v1.4s, v19.s[0]
3555 .long 0x4e20ce50 // fmla v16.4s, v18.4s, v0.4s
3556 .long 0xbd400132 // ldr s18, [x9]
3557 .long 0x4f941031 // fmla v17.4s, v1.4s, v20.s[0]
3558 .long 0x4f951022 // fmla v2.4s, v1.4s, v21.s[0]
3559 .long 0x4f961023 // fmla v3.4s, v1.4s, v22.s[0]
3560 .long 0x2d414d01 // ldp s1, s19, [x8, #8]
3561 .long 0xf9400423 // ldr x3, [x1, #8]
3562 .long 0x4f921011 // fmla v17.4s, v0.4s, v18.s[0]
3563 .long 0x91004021 // add x1, x1, #0x10
3564 .long 0x4f811002 // fmla v2.4s, v0.4s, v1.s[0]
3565 .long 0x4f931003 // fmla v3.4s, v0.4s, v19.s[0]
3566 .long 0x4eb01e00 // mov v0.16b, v16.16b
3567 .long 0x4eb11e21 // mov v1.16b, v17.16b
3568 .long 0xd61f0060 // br x3
3569
Mike Klein7c4af542017-03-29 18:21:14 -04003570HIDDEN _sk_matrix_perspective_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003571.globl _sk_matrix_perspective_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003572FUNCTION(_sk_matrix_perspective_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003573_sk_matrix_perspective_aarch64:
3574 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3575 .long 0xaa0803e9 // mov x9, x8
3576 .long 0x9100510a // add x10, x8, #0x14
3577 .long 0x4ddfc930 // ld1r {v16.4s}, [x9], #4
3578 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
3579 .long 0x9100810a // add x10, x8, #0x20
3580 .long 0x4d40c952 // ld1r {v18.4s}, [x10]
3581 .long 0x2d41d113 // ldp s19, s20, [x8, #12]
3582 .long 0x2d435915 // ldp s21, s22, [x8, #24]
3583 .long 0x91002108 // add x8, x8, #0x8
3584 .long 0x4f941031 // fmla v17.4s, v1.4s, v20.s[0]
3585 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
3586 .long 0x4f961032 // fmla v18.4s, v1.4s, v22.s[0]
3587 .long 0xbd400136 // ldr s22, [x9]
3588 .long 0x4f951012 // fmla v18.4s, v0.4s, v21.s[0]
3589 .long 0x4f931011 // fmla v17.4s, v0.4s, v19.s[0]
3590 .long 0x4f961034 // fmla v20.4s, v1.4s, v22.s[0]
3591 .long 0x4ea1da41 // frecpe v1.4s, v18.4s
3592 .long 0x4e21fe52 // frecps v18.4s, v18.4s, v1.4s
3593 .long 0x6e32dc32 // fmul v18.4s, v1.4s, v18.4s
3594 .long 0x4e20ce14 // fmla v20.4s, v16.4s, v0.4s
3595 .long 0x6e32de21 // fmul v1.4s, v17.4s, v18.4s
3596 .long 0x6e32de80 // fmul v0.4s, v20.4s, v18.4s
3597 .long 0xd61f0060 // br x3
3598
Herb Derby4de13042017-05-15 10:49:39 -04003599HIDDEN _sk_evenly_spaced_gradient_aarch64
3600.globl _sk_evenly_spaced_gradient_aarch64
3601FUNCTION(_sk_evenly_spaced_gradient_aarch64)
3602_sk_evenly_spaced_gradient_aarch64:
3603 .long 0xd10043ff // sub sp, sp, #0x10
3604 .long 0xaa0103e8 // mov x8, x1
3605 .long 0x91002109 // add x9, x8, #0x8
3606 .long 0xf90007e9 // str x9, [sp, #8]
3607 .long 0xf841042a // ldr x10, [x1], #16
3608 .long 0xa940254b // ldp x11, x9, [x10]
3609 .long 0xa942354c // ldp x12, x13, [x10, #32]
3610 .long 0xa9413d4e // ldp x14, x15, [x10, #16]
3611 .long 0xa9434550 // ldp x16, x17, [x10, #48]
3612 .long 0xd100056b // sub x11, x11, #0x1
3613 .long 0x9e230161 // ucvtf s1, x11
3614 .long 0xf940214a // ldr x10, [x10, #64]
3615 .long 0x4f819001 // fmul v1.4s, v0.4s, v1.s[0]
3616 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
3617 .long 0x6f20a422 // uxtl2 v2.2d, v1.4s
3618 .long 0x2f20a421 // uxtl v1.2d, v1.2s
3619 .long 0x9e660032 // fmov x18, d1
3620 .long 0x9e660044 // fmov x4, d2
3621 .long 0x4e183c2b // mov x11, v1.d[1]
3622 .long 0x4e183c43 // mov x3, v2.d[1]
3623 .long 0xbc647921 // ldr s1, [x9, x4, lsl #2]
3624 .long 0xbc6479a2 // ldr s2, [x13, x4, lsl #2]
3625 .long 0xbc6479c3 // ldr s3, [x14, x4, lsl #2]
3626 .long 0xbc647a11 // ldr s17, [x16, x4, lsl #2]
3627 .long 0xbc6479f2 // ldr s18, [x15, x4, lsl #2]
3628 .long 0xbc647a33 // ldr s19, [x17, x4, lsl #2]
3629 .long 0xbc647994 // ldr s20, [x12, x4, lsl #2]
3630 .long 0xbc647955 // ldr s21, [x10, x4, lsl #2]
3631 .long 0x8b120924 // add x4, x9, x18, lsl #2
3632 .long 0x0d408096 // ld1 {v22.s}[0], [x4]
3633 .long 0x8b1209a4 // add x4, x13, x18, lsl #2
3634 .long 0x0d408090 // ld1 {v16.s}[0], [x4]
3635 .long 0x8b0b0924 // add x4, x9, x11, lsl #2
3636 .long 0x0d409096 // ld1 {v22.s}[1], [x4]
3637 .long 0x8b1209c4 // add x4, x14, x18, lsl #2
3638 .long 0x0d408097 // ld1 {v23.s}[0], [x4]
3639 .long 0x8b120a04 // add x4, x16, x18, lsl #2
3640 .long 0x6e140436 // mov v22.s[2], v1.s[0]
3641 .long 0x0d408081 // ld1 {v1.s}[0], [x4]
3642 .long 0x8b0b09a4 // add x4, x13, x11, lsl #2
3643 .long 0x0d409090 // ld1 {v16.s}[1], [x4]
3644 .long 0x8b0b09c4 // add x4, x14, x11, lsl #2
3645 .long 0x0d409097 // ld1 {v23.s}[1], [x4]
3646 .long 0x8b1209e4 // add x4, x15, x18, lsl #2
3647 .long 0x0d408098 // ld1 {v24.s}[0], [x4]
3648 .long 0x8b120a24 // add x4, x17, x18, lsl #2
3649 .long 0x6e140450 // mov v16.s[2], v2.s[0]
3650 .long 0x0d408082 // ld1 {v2.s}[0], [x4]
3651 .long 0x8b0b0a04 // add x4, x16, x11, lsl #2
3652 .long 0x0d409081 // ld1 {v1.s}[1], [x4]
3653 .long 0x8b0b09e4 // add x4, x15, x11, lsl #2
3654 .long 0x0d409098 // ld1 {v24.s}[1], [x4]
3655 .long 0x8b120984 // add x4, x12, x18, lsl #2
3656 .long 0x8b120952 // add x18, x10, x18, lsl #2
3657 .long 0x6e140477 // mov v23.s[2], v3.s[0]
3658 .long 0x0d408243 // ld1 {v3.s}[0], [x18]
3659 .long 0x8b0b0a32 // add x18, x17, x11, lsl #2
3660 .long 0x6e140621 // mov v1.s[2], v17.s[0]
3661 .long 0x0d408091 // ld1 {v17.s}[0], [x4]
3662 .long 0x0d409242 // ld1 {v2.s}[1], [x18]
3663 .long 0x8b0b0992 // add x18, x12, x11, lsl #2
3664 .long 0x6e140658 // mov v24.s[2], v18.s[0]
3665 .long 0x0d409251 // ld1 {v17.s}[1], [x18]
3666 .long 0x6e140662 // mov v2.s[2], v19.s[0]
3667 .long 0xbc637932 // ldr s18, [x9, x3, lsl #2]
3668 .long 0xbc6379b3 // ldr s19, [x13, x3, lsl #2]
3669 .long 0x6e140691 // mov v17.s[2], v20.s[0]
3670 .long 0xbc6379d4 // ldr s20, [x14, x3, lsl #2]
3671 .long 0x6e1c0656 // mov v22.s[3], v18.s[0]
3672 .long 0xbc637a12 // ldr s18, [x16, x3, lsl #2]
3673 .long 0x6e1c0670 // mov v16.s[3], v19.s[0]
3674 .long 0xbc6379f3 // ldr s19, [x15, x3, lsl #2]
3675 .long 0x8b0b094b // add x11, x10, x11, lsl #2
3676 .long 0x0d409163 // ld1 {v3.s}[1], [x11]
3677 .long 0x6e1c0697 // mov v23.s[3], v20.s[0]
3678 .long 0xbc637a34 // ldr s20, [x17, x3, lsl #2]
3679 .long 0x6e1c0641 // mov v1.s[3], v18.s[0]
3680 .long 0xbc637992 // ldr s18, [x12, x3, lsl #2]
3681 .long 0x6e1c0678 // mov v24.s[3], v19.s[0]
3682 .long 0xbc637953 // ldr s19, [x10, x3, lsl #2]
3683 .long 0xf9400503 // ldr x3, [x8, #8]
3684 .long 0x6e1406a3 // mov v3.s[2], v21.s[0]
3685 .long 0x6e1c0682 // mov v2.s[3], v20.s[0]
3686 .long 0x6e1c0651 // mov v17.s[3], v18.s[0]
3687 .long 0x6e1c0663 // mov v3.s[3], v19.s[0]
3688 .long 0x4e20ced0 // fmla v16.4s, v22.4s, v0.4s
3689 .long 0x4e20cee1 // fmla v1.4s, v23.4s, v0.4s
3690 .long 0x4e20cf02 // fmla v2.4s, v24.4s, v0.4s
3691 .long 0x4e20ce23 // fmla v3.4s, v17.4s, v0.4s
3692 .long 0x4eb01e00 // mov v0.16b, v16.16b
3693 .long 0x910043ff // add sp, sp, #0x10
3694 .long 0xd61f0060 // br x3
3695
Mike Klein5c7960b2017-05-11 10:59:22 -04003696HIDDEN _sk_gradient_aarch64
3697.globl _sk_gradient_aarch64
3698FUNCTION(_sk_gradient_aarch64)
3699_sk_gradient_aarch64:
Herb Derby4de13042017-05-15 10:49:39 -04003700 .long 0xd10043ff // sub sp, sp, #0x10
3701 .long 0x91002028 // add x8, x1, #0x8
3702 .long 0xf90007e8 // str x8, [sp, #8]
3703 .long 0xf9400028 // ldr x8, [x1]
3704 .long 0x6f00e401 // movi v1.2d, #0x0
Herb Derby7b4202d2017-04-10 10:52:34 -04003705 .long 0x6f00e411 // movi v17.2d, #0x0
Herb Derby4de13042017-05-15 10:49:39 -04003706 .long 0xf9400109 // ldr x9, [x8]
3707 .long 0xf100093f // cmp x9, #0x2
Mike Klein8ca33562017-05-23 08:07:43 -04003708 .long 0x540001c3 // b.cc 3164 <sk_gradient_aarch64+0x58> // b.lo, b.ul, b.last
Herb Derby4de13042017-05-15 10:49:39 -04003709 .long 0xf940250a // ldr x10, [x8, #72]
3710 .long 0xd1000529 // sub x9, x9, #0x1
3711 .long 0x6f00e401 // movi v1.2d, #0x0
3712 .long 0x4f000422 // movi v2.4s, #0x1
3713 .long 0x9100114a // add x10, x10, #0x4
3714 .long 0x4ddfc943 // ld1r {v3.4s}, [x10], #4
3715 .long 0xd1000529 // sub x9, x9, #0x1
3716 .long 0x6e23e403 // fcmge v3.4s, v0.4s, v3.4s
3717 .long 0x4e221c63 // and v3.16b, v3.16b, v2.16b
3718 .long 0x4ea18461 // add v1.4s, v3.4s, v1.4s
Mike Klein8ca33562017-05-23 08:07:43 -04003719 .long 0xb5ffff69 // cbnz x9, 3144 <sk_gradient_aarch64+0x38>
Herb Derby4de13042017-05-15 10:49:39 -04003720 .long 0x6f20a431 // uxtl2 v17.2d, v1.4s
3721 .long 0x2f20a421 // uxtl v1.2d, v1.2s
3722 .long 0xa940b10a // ldp x10, x12, [x8, #8]
3723 .long 0xa942b90d // ldp x13, x14, [x8, #40]
3724 .long 0x9e66002b // fmov x11, d1
3725 .long 0xa941c10f // ldp x15, x16, [x8, #24]
3726 .long 0x8b0b0952 // add x18, x10, x11, lsl #2
3727 .long 0xa943a111 // ldp x17, x8, [x8, #56]
3728 .long 0x0d408252 // ld1 {v18.s}[0], [x18]
3729 .long 0x8b0b09b2 // add x18, x13, x11, lsl #2
3730 .long 0x0d408250 // ld1 {v16.s}[0], [x18]
3731 .long 0x8b0b0992 // add x18, x12, x11, lsl #2
3732 .long 0x0d408253 // ld1 {v19.s}[0], [x18]
3733 .long 0x8b0b09d2 // add x18, x14, x11, lsl #2
3734 .long 0x4e183c29 // mov x9, v1.d[1]
3735 .long 0x0d408241 // ld1 {v1.s}[0], [x18]
3736 .long 0x8b0b09f2 // add x18, x15, x11, lsl #2
3737 .long 0x0d408254 // ld1 {v20.s}[0], [x18]
3738 .long 0x8b0b0a32 // add x18, x17, x11, lsl #2
3739 .long 0x0d408242 // ld1 {v2.s}[0], [x18]
3740 .long 0x8b0b0a12 // add x18, x16, x11, lsl #2
3741 .long 0x8b0b090b // add x11, x8, x11, lsl #2
3742 .long 0x0d408163 // ld1 {v3.s}[0], [x11]
3743 .long 0x8b09094b // add x11, x10, x9, lsl #2
3744 .long 0x0d409172 // ld1 {v18.s}[1], [x11]
3745 .long 0x8b0909ab // add x11, x13, x9, lsl #2
3746 .long 0x0d409170 // ld1 {v16.s}[1], [x11]
3747 .long 0x8b09098b // add x11, x12, x9, lsl #2
3748 .long 0x0d409173 // ld1 {v19.s}[1], [x11]
3749 .long 0x8b0909cb // add x11, x14, x9, lsl #2
3750 .long 0x0d409161 // ld1 {v1.s}[1], [x11]
3751 .long 0x8b0909eb // add x11, x15, x9, lsl #2
3752 .long 0x0d408255 // ld1 {v21.s}[0], [x18]
3753 .long 0x9e660232 // fmov x18, d17
3754 .long 0x0d409174 // ld1 {v20.s}[1], [x11]
3755 .long 0x4e183e2b // mov x11, v17.d[1]
3756 .long 0xbc6b7951 // ldr s17, [x10, x11, lsl #2]
3757 .long 0x8b12094a // add x10, x10, x18, lsl #2
3758 .long 0x4d408152 // ld1 {v18.s}[2], [x10]
3759 .long 0x8b1209aa // add x10, x13, x18, lsl #2
3760 .long 0xbc6b79b6 // ldr s22, [x13, x11, lsl #2]
3761 .long 0x4d408150 // ld1 {v16.s}[2], [x10]
3762 .long 0x8b12098a // add x10, x12, x18, lsl #2
3763 .long 0x4d408153 // ld1 {v19.s}[2], [x10]
3764 .long 0x8b1209ca // add x10, x14, x18, lsl #2
3765 .long 0x4d408141 // ld1 {v1.s}[2], [x10]
3766 .long 0x8b090a2a // add x10, x17, x9, lsl #2
3767 .long 0xbc6b7997 // ldr s23, [x12, x11, lsl #2]
3768 .long 0x8b1209ec // add x12, x15, x18, lsl #2
3769 .long 0x0d409142 // ld1 {v2.s}[1], [x10]
3770 .long 0x8b090a0a // add x10, x16, x9, lsl #2
3771 .long 0x8b090909 // add x9, x8, x9, lsl #2
3772 .long 0x6e1c0632 // mov v18.s[3], v17.s[0]
3773 .long 0xbc6b79d1 // ldr s17, [x14, x11, lsl #2]
3774 .long 0x6e1c06d0 // mov v16.s[3], v22.s[0]
3775 .long 0xbc6b79f6 // ldr s22, [x15, x11, lsl #2]
3776 .long 0x0d409155 // ld1 {v21.s}[1], [x10]
3777 .long 0x4d408194 // ld1 {v20.s}[2], [x12]
3778 .long 0x0d409123 // ld1 {v3.s}[1], [x9]
3779 .long 0xf94007e1 // ldr x1, [sp, #8]
3780 .long 0x8b120a2d // add x13, x17, x18, lsl #2
3781 .long 0x8b120a0e // add x14, x16, x18, lsl #2
3782 .long 0x8b12090f // add x15, x8, x18, lsl #2
3783 .long 0x6e1c06f3 // mov v19.s[3], v23.s[0]
3784 .long 0xbc6b7a37 // ldr s23, [x17, x11, lsl #2]
3785 .long 0x6e1c0621 // mov v1.s[3], v17.s[0]
3786 .long 0xbc6b7a11 // ldr s17, [x16, x11, lsl #2]
3787 .long 0x4d4081a2 // ld1 {v2.s}[2], [x13]
3788 .long 0x4d4081d5 // ld1 {v21.s}[2], [x14]
3789 .long 0x6e1c06d4 // mov v20.s[3], v22.s[0]
3790 .long 0xbc6b7916 // ldr s22, [x8, x11, lsl #2]
3791 .long 0x4d4081e3 // ld1 {v3.s}[2], [x15]
3792 .long 0xf8408423 // ldr x3, [x1], #8
3793 .long 0x6e1c06e2 // mov v2.s[3], v23.s[0]
3794 .long 0x6e1c0635 // mov v21.s[3], v17.s[0]
3795 .long 0x6e1c06c3 // mov v3.s[3], v22.s[0]
3796 .long 0x4e20ce50 // fmla v16.4s, v18.4s, v0.4s
3797 .long 0x4e20ce61 // fmla v1.4s, v19.4s, v0.4s
3798 .long 0x4e20ce82 // fmla v2.4s, v20.4s, v0.4s
3799 .long 0x4e20cea3 // fmla v3.4s, v21.4s, v0.4s
Herb Derby7b4202d2017-04-10 10:52:34 -04003800 .long 0x4eb01e00 // mov v0.16b, v16.16b
Herb Derby4de13042017-05-15 10:49:39 -04003801 .long 0x910043ff // add sp, sp, #0x10
Herb Derby7b4202d2017-04-10 10:52:34 -04003802 .long 0xd61f0060 // br x3
3803
Mike Klein5c7960b2017-05-11 10:59:22 -04003804HIDDEN _sk_evenly_spaced_2_stop_gradient_aarch64
3805.globl _sk_evenly_spaced_2_stop_gradient_aarch64
3806FUNCTION(_sk_evenly_spaced_2_stop_gradient_aarch64)
3807_sk_evenly_spaced_2_stop_gradient_aarch64:
Mike Kleind7e06ae2017-03-29 16:33:06 -04003808 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
Mike Klein8a823fa2017-04-05 17:29:26 -04003809 .long 0xaa0803e9 // mov x9, x8
Herb Derby7b4202d2017-04-10 10:52:34 -04003810 .long 0x9100410a // add x10, x8, #0x10
3811 .long 0x4ddfc931 // ld1r {v17.4s}, [x9], #4
3812 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
3813 .long 0x9100510a // add x10, x8, #0x14
3814 .long 0x4d40c941 // ld1r {v1.4s}, [x10]
3815 .long 0x9100610a // add x10, x8, #0x18
Mike Klein8a823fa2017-04-05 17:29:26 -04003816 .long 0x4d40c942 // ld1r {v2.4s}, [x10]
Herb Derby7b4202d2017-04-10 10:52:34 -04003817 .long 0x9100710a // add x10, x8, #0x1c
3818 .long 0x2d414d12 // ldp s18, s19, [x8, #8]
3819 .long 0x4d40c943 // ld1r {v3.4s}, [x10]
3820 .long 0x4e20ce30 // fmla v16.4s, v17.4s, v0.4s
3821 .long 0xbd400131 // ldr s17, [x9]
Mike Klein8a823fa2017-04-05 17:29:26 -04003822 .long 0x4f921002 // fmla v2.4s, v0.4s, v18.s[0]
3823 .long 0x4f931003 // fmla v3.4s, v0.4s, v19.s[0]
3824 .long 0x4f911001 // fmla v1.4s, v0.4s, v17.s[0]
Mike Kleind7e06ae2017-03-29 16:33:06 -04003825 .long 0x4eb01e00 // mov v0.16b, v16.16b
3826 .long 0xd61f0060 // br x3
Mike Klein0a904492017-04-12 12:52:48 -04003827
Mike Klein5c7960b2017-05-11 10:59:22 -04003828HIDDEN _sk_xy_to_unit_angle_aarch64
3829.globl _sk_xy_to_unit_angle_aarch64
3830FUNCTION(_sk_xy_to_unit_angle_aarch64)
3831_sk_xy_to_unit_angle_aarch64:
Herb Derby7eb86982017-05-02 19:04:39 -04003832 .long 0x52b77ce8 // mov w8, #0xbbe70000
3833 .long 0x72856de8 // movk w8, #0x2b6f
3834 .long 0x4ea0f810 // fabs v16.4s, v0.4s
3835 .long 0x4ea0f831 // fabs v17.4s, v1.4s
3836 .long 0x4e040d12 // dup v18.4s, w8
3837 .long 0x52a79948 // mov w8, #0x3cca0000
3838 .long 0x729af3e8 // movk w8, #0xd79f
3839 .long 0x4eb1f614 // fmin v20.4s, v16.4s, v17.4s
3840 .long 0x4e31f615 // fmax v21.4s, v16.4s, v17.4s
3841 .long 0x4e040d13 // dup v19.4s, w8
3842 .long 0x52b7aa88 // mov w8, #0xbd540000
3843 .long 0x6e35fe94 // fdiv v20.4s, v20.4s, v21.4s
3844 .long 0x728c9a88 // movk w8, #0x64d4
3845 .long 0x6e34de95 // fmul v21.4s, v20.4s, v20.4s
3846 .long 0x4e35ce53 // fmla v19.4s, v18.4s, v21.4s
3847 .long 0x4e040d12 // dup v18.4s, w8
3848 .long 0x52a7c448 // mov w8, #0x3e220000
3849 .long 0x729e1528 // movk w8, #0xf0a9
3850 .long 0x4e35ce72 // fmla v18.4s, v19.4s, v21.4s
3851 .long 0x4e040d13 // dup v19.4s, w8
3852 .long 0x4e35ce53 // fmla v19.4s, v18.4s, v21.4s
3853 .long 0x4f02f612 // fmov v18.4s, #2.500000000000000000e-01
3854 .long 0x6e33de93 // fmul v19.4s, v20.4s, v19.4s
3855 .long 0x6eb0e630 // fcmgt v16.4s, v17.4s, v16.4s
3856 .long 0x4eb3d652 // fsub v18.4s, v18.4s, v19.4s
3857 .long 0x4f0167f5 // movi v21.4s, #0x3f, lsl #24
3858 .long 0x6e731e50 // bsl v16.16b, v18.16b, v19.16b
3859 .long 0x4ea0e800 // fcmlt v0.4s, v0.4s, #0.0
3860 .long 0x4eb0d6b2 // fsub v18.4s, v21.4s, v16.4s
3861 .long 0x4f03f614 // fmov v20.4s, #1.000000000000000000e+00
3862 .long 0x6e701e40 // bsl v0.16b, v18.16b, v16.16b
3863 .long 0x4ea0e831 // fcmlt v17.4s, v1.4s, #0.0
3864 .long 0x4ea0d690 // fsub v16.4s, v20.4s, v0.4s
3865 .long 0xf8408423 // ldr x3, [x1], #8
3866 .long 0x6e601e11 // bsl v17.16b, v16.16b, v0.16b
3867 .long 0x6ea0ca20 // fcmge v0.4s, v17.4s, #0.0
3868 .long 0x4ea0ea30 // fcmlt v16.4s, v17.4s, #0.0
3869 .long 0x4ea01e00 // orr v0.16b, v16.16b, v0.16b
3870 .long 0x4e201e20 // and v0.16b, v17.16b, v0.16b
3871 .long 0xd61f0060 // br x3
3872
Herb Derby090fbf82017-05-08 15:10:36 -04003873HIDDEN _sk_xy_to_radius_aarch64
3874.globl _sk_xy_to_radius_aarch64
3875FUNCTION(_sk_xy_to_radius_aarch64)
3876_sk_xy_to_radius_aarch64:
Mike Kleinfd35c742017-05-15 15:55:54 -04003877 .long 0xf8408423 // ldr x3, [x1], #8
Herb Derby090fbf82017-05-08 15:10:36 -04003878 .long 0x6e21dc30 // fmul v16.4s, v1.4s, v1.4s
3879 .long 0x4e20cc10 // fmla v16.4s, v0.4s, v0.4s
Mike Kleinfd35c742017-05-15 15:55:54 -04003880 .long 0x6ea1fa00 // fsqrt v0.4s, v16.4s
Herb Derby090fbf82017-05-08 15:10:36 -04003881 .long 0xd61f0060 // br x3
3882
Mike Klein0a904492017-04-12 12:52:48 -04003883HIDDEN _sk_save_xy_aarch64
3884.globl _sk_save_xy_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003885FUNCTION(_sk_save_xy_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003886_sk_save_xy_aarch64:
3887 .long 0x4f0167f0 // movi v16.4s, #0x3f, lsl #24
3888 .long 0xf9400028 // ldr x8, [x1]
3889 .long 0x4e30d411 // fadd v17.4s, v0.4s, v16.4s
3890 .long 0x4e30d430 // fadd v16.4s, v1.4s, v16.4s
3891 .long 0x4e219a32 // frintm v18.4s, v17.4s
3892 .long 0x4eb2d631 // fsub v17.4s, v17.4s, v18.4s
3893 .long 0x4e219a12 // frintm v18.4s, v16.4s
3894 .long 0x4eb2d610 // fsub v16.4s, v16.4s, v18.4s
3895 .long 0x3d800100 // str q0, [x8]
3896 .long 0x3d800901 // str q1, [x8, #32]
3897 .long 0x3d801111 // str q17, [x8, #64]
3898 .long 0x3d801910 // str q16, [x8, #96]
3899 .long 0xf9400423 // ldr x3, [x1, #8]
3900 .long 0x91004021 // add x1, x1, #0x10
3901 .long 0xd61f0060 // br x3
3902
3903HIDDEN _sk_accumulate_aarch64
3904.globl _sk_accumulate_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003905FUNCTION(_sk_accumulate_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003906_sk_accumulate_aarch64:
3907 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3908 .long 0x3dc02110 // ldr q16, [x8, #128]
3909 .long 0x3dc02911 // ldr q17, [x8, #160]
3910 .long 0x6e31de10 // fmul v16.4s, v16.4s, v17.4s
3911 .long 0x4e30cc04 // fmla v4.4s, v0.4s, v16.4s
3912 .long 0x4e30cc25 // fmla v5.4s, v1.4s, v16.4s
3913 .long 0x4e30cc46 // fmla v6.4s, v2.4s, v16.4s
3914 .long 0x4e30cc67 // fmla v7.4s, v3.4s, v16.4s
3915 .long 0xd61f0060 // br x3
3916
3917HIDDEN _sk_bilinear_nx_aarch64
3918.globl _sk_bilinear_nx_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003919FUNCTION(_sk_bilinear_nx_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003920_sk_bilinear_nx_aarch64:
3921 .long 0xf9400028 // ldr x8, [x1]
3922 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
3923 .long 0x3dc01100 // ldr q0, [x8, #64]
3924 .long 0x3dc00110 // ldr q16, [x8]
3925 .long 0x4ea0d620 // fsub v0.4s, v17.4s, v0.4s
3926 .long 0x3d802100 // str q0, [x8, #128]
3927 .long 0xf9400423 // ldr x3, [x1, #8]
3928 .long 0x4f0567e0 // movi v0.4s, #0xbf, lsl #24
3929 .long 0x4e20d600 // fadd v0.4s, v16.4s, v0.4s
3930 .long 0x91004021 // add x1, x1, #0x10
3931 .long 0xd61f0060 // br x3
3932
3933HIDDEN _sk_bilinear_px_aarch64
3934.globl _sk_bilinear_px_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003935FUNCTION(_sk_bilinear_px_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003936_sk_bilinear_px_aarch64:
3937 .long 0xf9400028 // ldr x8, [x1]
3938 .long 0x3dc01100 // ldr q0, [x8, #64]
3939 .long 0x3dc00110 // ldr q16, [x8]
3940 .long 0x3d802100 // str q0, [x8, #128]
3941 .long 0xf9400423 // ldr x3, [x1, #8]
3942 .long 0x4f0167e0 // movi v0.4s, #0x3f, lsl #24
3943 .long 0x4e20d600 // fadd v0.4s, v16.4s, v0.4s
3944 .long 0x91004021 // add x1, x1, #0x10
3945 .long 0xd61f0060 // br x3
3946
3947HIDDEN _sk_bilinear_ny_aarch64
3948.globl _sk_bilinear_ny_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003949FUNCTION(_sk_bilinear_ny_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003950_sk_bilinear_ny_aarch64:
3951 .long 0xf9400028 // ldr x8, [x1]
3952 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
3953 .long 0x3dc01901 // ldr q1, [x8, #96]
3954 .long 0x3dc00910 // ldr q16, [x8, #32]
3955 .long 0x4ea1d621 // fsub v1.4s, v17.4s, v1.4s
3956 .long 0x3d802901 // str q1, [x8, #160]
3957 .long 0xf9400423 // ldr x3, [x1, #8]
3958 .long 0x4f0567e1 // movi v1.4s, #0xbf, lsl #24
3959 .long 0x4e21d601 // fadd v1.4s, v16.4s, v1.4s
3960 .long 0x91004021 // add x1, x1, #0x10
3961 .long 0xd61f0060 // br x3
3962
3963HIDDEN _sk_bilinear_py_aarch64
3964.globl _sk_bilinear_py_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003965FUNCTION(_sk_bilinear_py_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003966_sk_bilinear_py_aarch64:
3967 .long 0xf9400028 // ldr x8, [x1]
3968 .long 0x3dc01901 // ldr q1, [x8, #96]
3969 .long 0x3dc00910 // ldr q16, [x8, #32]
3970 .long 0x3d802901 // str q1, [x8, #160]
3971 .long 0xf9400423 // ldr x3, [x1, #8]
3972 .long 0x4f0167e1 // movi v1.4s, #0x3f, lsl #24
3973 .long 0x4e21d601 // fadd v1.4s, v16.4s, v1.4s
3974 .long 0x91004021 // add x1, x1, #0x10
3975 .long 0xd61f0060 // br x3
3976
3977HIDDEN _sk_bicubic_n3x_aarch64
3978.globl _sk_bicubic_n3x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003979FUNCTION(_sk_bicubic_n3x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003980_sk_bicubic_n3x_aarch64:
3981 .long 0xf9400028 // ldr x8, [x1]
3982 .long 0x52a7d8e9 // mov w9, #0x3ec70000
3983 .long 0x72838e49 // movk w9, #0x1c72
3984 .long 0x4e040d30 // dup v16.4s, w9
3985 .long 0x3dc01111 // ldr q17, [x8, #64]
3986 .long 0x52b7d549 // mov w9, #0xbeaa0000
3987 .long 0x4f03f600 // fmov v0.4s, #1.000000000000000000e+00
3988 .long 0x72955569 // movk w9, #0xaaab
3989 .long 0x4e040d32 // dup v18.4s, w9
3990 .long 0x4eb1d400 // fsub v0.4s, v0.4s, v17.4s
3991 .long 0x6e20dc11 // fmul v17.4s, v0.4s, v0.4s
3992 .long 0x4e20ce12 // fmla v18.4s, v16.4s, v0.4s
3993 .long 0x6e32de20 // fmul v0.4s, v17.4s, v18.4s
3994 .long 0x3dc00113 // ldr q19, [x8]
3995 .long 0x3d802100 // str q0, [x8, #128]
3996 .long 0xf9400423 // ldr x3, [x1, #8]
3997 .long 0x4f07f700 // fmov v0.4s, #-1.500000000000000000e+00
3998 .long 0x4e20d660 // fadd v0.4s, v19.4s, v0.4s
3999 .long 0x91004021 // add x1, x1, #0x10
4000 .long 0xd61f0060 // br x3
4001
4002HIDDEN _sk_bicubic_n1x_aarch64
4003.globl _sk_bicubic_n1x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04004004FUNCTION(_sk_bicubic_n1x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04004005_sk_bicubic_n1x_aarch64:
4006 .long 0xf9400028 // ldr x8, [x1]
4007 .long 0x52b7f2a9 // mov w9, #0xbf950000
4008 .long 0x4f03f600 // fmov v0.4s, #1.000000000000000000e+00
4009 .long 0x728aaaa9 // movk w9, #0x5555
4010 .long 0x3dc01110 // ldr q16, [x8, #64]
4011 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
4012 .long 0x4f0167f2 // movi v18.4s, #0x3f, lsl #24
4013 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
4014 .long 0x4e040d30 // dup v16.4s, w9
4015 .long 0x52a7ac69 // mov w9, #0x3d630000
4016 .long 0x7291c729 // movk w9, #0x8e39
4017 .long 0x4e20ce11 // fmla v17.4s, v16.4s, v0.4s
4018 .long 0x4e20ce32 // fmla v18.4s, v17.4s, v0.4s
4019 .long 0x4e040d31 // dup v17.4s, w9
4020 .long 0x4e20ce51 // fmla v17.4s, v18.4s, v0.4s
4021 .long 0x3dc00110 // ldr q16, [x8]
4022 .long 0x3d802111 // str q17, [x8, #128]
4023 .long 0xf9400423 // ldr x3, [x1, #8]
4024 .long 0x4f0567e0 // movi v0.4s, #0xbf, lsl #24
4025 .long 0x4e20d600 // fadd v0.4s, v16.4s, v0.4s
4026 .long 0x91004021 // add x1, x1, #0x10
4027 .long 0xd61f0060 // br x3
4028
4029HIDDEN _sk_bicubic_p1x_aarch64
4030.globl _sk_bicubic_p1x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04004031FUNCTION(_sk_bicubic_p1x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04004032_sk_bicubic_p1x_aarch64:
4033 .long 0xf9400028 // ldr x8, [x1]
4034 .long 0x52b7f2a9 // mov w9, #0xbf950000
4035 .long 0x728aaaa9 // movk w9, #0x5555
4036 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
4037 .long 0x3dc01112 // ldr q18, [x8, #64]
4038 .long 0x3dc00100 // ldr q0, [x8]
4039 .long 0x4e040d33 // dup v19.4s, w9
4040 .long 0x52a7ac69 // mov w9, #0x3d630000
4041 .long 0x4f0167f0 // movi v16.4s, #0x3f, lsl #24
4042 .long 0x7291c729 // movk w9, #0x8e39
4043 .long 0x4e32ce71 // fmla v17.4s, v19.4s, v18.4s
4044 .long 0x4e30d400 // fadd v0.4s, v0.4s, v16.4s
4045 .long 0x4e32ce30 // fmla v16.4s, v17.4s, v18.4s
4046 .long 0x4e040d31 // dup v17.4s, w9
4047 .long 0x4e32ce11 // fmla v17.4s, v16.4s, v18.4s
4048 .long 0x3d802111 // str q17, [x8, #128]
4049 .long 0xf9400423 // ldr x3, [x1, #8]
4050 .long 0x91004021 // add x1, x1, #0x10
4051 .long 0xd61f0060 // br x3
4052
4053HIDDEN _sk_bicubic_p3x_aarch64
4054.globl _sk_bicubic_p3x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04004055FUNCTION(_sk_bicubic_p3x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04004056_sk_bicubic_p3x_aarch64:
4057 .long 0xf9400028 // ldr x8, [x1]
4058 .long 0x52a7d8e9 // mov w9, #0x3ec70000
4059 .long 0x72838e49 // movk w9, #0x1c72
4060 .long 0x4e040d20 // dup v0.4s, w9
4061 .long 0x3dc01110 // ldr q16, [x8, #64]
4062 .long 0x52b7d549 // mov w9, #0xbeaa0000
4063 .long 0x72955569 // movk w9, #0xaaab
4064 .long 0x4e040d31 // dup v17.4s, w9
4065 .long 0x6e30de13 // fmul v19.4s, v16.4s, v16.4s
4066 .long 0x4e30cc11 // fmla v17.4s, v0.4s, v16.4s
4067 .long 0x6e31de60 // fmul v0.4s, v19.4s, v17.4s
4068 .long 0x3dc00112 // ldr q18, [x8]
4069 .long 0x3d802100 // str q0, [x8, #128]
4070 .long 0xf9400423 // ldr x3, [x1, #8]
4071 .long 0x4f03f700 // fmov v0.4s, #1.500000000000000000e+00
4072 .long 0x4e20d640 // fadd v0.4s, v18.4s, v0.4s
4073 .long 0x91004021 // add x1, x1, #0x10
4074 .long 0xd61f0060 // br x3
4075
4076HIDDEN _sk_bicubic_n3y_aarch64
4077.globl _sk_bicubic_n3y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04004078FUNCTION(_sk_bicubic_n3y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04004079_sk_bicubic_n3y_aarch64:
4080 .long 0xf9400028 // ldr x8, [x1]
4081 .long 0x52a7d8e9 // mov w9, #0x3ec70000
4082 .long 0x72838e49 // movk w9, #0x1c72
4083 .long 0x4e040d30 // dup v16.4s, w9
4084 .long 0x3dc01911 // ldr q17, [x8, #96]
4085 .long 0x52b7d549 // mov w9, #0xbeaa0000
4086 .long 0x4f03f601 // fmov v1.4s, #1.000000000000000000e+00
4087 .long 0x72955569 // movk w9, #0xaaab
4088 .long 0x4e040d32 // dup v18.4s, w9
4089 .long 0x4eb1d421 // fsub v1.4s, v1.4s, v17.4s
4090 .long 0x6e21dc31 // fmul v17.4s, v1.4s, v1.4s
4091 .long 0x4e21ce12 // fmla v18.4s, v16.4s, v1.4s
4092 .long 0x6e32de21 // fmul v1.4s, v17.4s, v18.4s
4093 .long 0x3dc00913 // ldr q19, [x8, #32]
4094 .long 0x3d802901 // str q1, [x8, #160]
4095 .long 0xf9400423 // ldr x3, [x1, #8]
4096 .long 0x4f07f701 // fmov v1.4s, #-1.500000000000000000e+00
4097 .long 0x4e21d661 // fadd v1.4s, v19.4s, v1.4s
4098 .long 0x91004021 // add x1, x1, #0x10
4099 .long 0xd61f0060 // br x3
4100
4101HIDDEN _sk_bicubic_n1y_aarch64
4102.globl _sk_bicubic_n1y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04004103FUNCTION(_sk_bicubic_n1y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04004104_sk_bicubic_n1y_aarch64:
4105 .long 0xf9400028 // ldr x8, [x1]
4106 .long 0x52b7f2a9 // mov w9, #0xbf950000
4107 .long 0x4f03f601 // fmov v1.4s, #1.000000000000000000e+00
4108 .long 0x728aaaa9 // movk w9, #0x5555
4109 .long 0x3dc01910 // ldr q16, [x8, #96]
4110 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
4111 .long 0x4f0167f2 // movi v18.4s, #0x3f, lsl #24
4112 .long 0x4eb0d421 // fsub v1.4s, v1.4s, v16.4s
4113 .long 0x4e040d30 // dup v16.4s, w9
4114 .long 0x52a7ac69 // mov w9, #0x3d630000
4115 .long 0x7291c729 // movk w9, #0x8e39
4116 .long 0x4e21ce11 // fmla v17.4s, v16.4s, v1.4s
4117 .long 0x4e21ce32 // fmla v18.4s, v17.4s, v1.4s
4118 .long 0x4e040d31 // dup v17.4s, w9
4119 .long 0x4e21ce51 // fmla v17.4s, v18.4s, v1.4s
4120 .long 0x3dc00910 // ldr q16, [x8, #32]
4121 .long 0x3d802911 // str q17, [x8, #160]
4122 .long 0xf9400423 // ldr x3, [x1, #8]
4123 .long 0x4f0567e1 // movi v1.4s, #0xbf, lsl #24
4124 .long 0x4e21d601 // fadd v1.4s, v16.4s, v1.4s
4125 .long 0x91004021 // add x1, x1, #0x10
4126 .long 0xd61f0060 // br x3
4127
4128HIDDEN _sk_bicubic_p1y_aarch64
4129.globl _sk_bicubic_p1y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04004130FUNCTION(_sk_bicubic_p1y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04004131_sk_bicubic_p1y_aarch64:
4132 .long 0xf9400028 // ldr x8, [x1]
4133 .long 0x52b7f2a9 // mov w9, #0xbf950000
4134 .long 0x728aaaa9 // movk w9, #0x5555
4135 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
4136 .long 0x3dc01912 // ldr q18, [x8, #96]
4137 .long 0x3dc00901 // ldr q1, [x8, #32]
4138 .long 0x4e040d33 // dup v19.4s, w9
4139 .long 0x52a7ac69 // mov w9, #0x3d630000
4140 .long 0x4f0167f0 // movi v16.4s, #0x3f, lsl #24
4141 .long 0x7291c729 // movk w9, #0x8e39
4142 .long 0x4e32ce71 // fmla v17.4s, v19.4s, v18.4s
4143 .long 0x4e30d421 // fadd v1.4s, v1.4s, v16.4s
4144 .long 0x4e32ce30 // fmla v16.4s, v17.4s, v18.4s
4145 .long 0x4e040d31 // dup v17.4s, w9
4146 .long 0x4e32ce11 // fmla v17.4s, v16.4s, v18.4s
4147 .long 0x3d802911 // str q17, [x8, #160]
4148 .long 0xf9400423 // ldr x3, [x1, #8]
4149 .long 0x91004021 // add x1, x1, #0x10
4150 .long 0xd61f0060 // br x3
4151
4152HIDDEN _sk_bicubic_p3y_aarch64
4153.globl _sk_bicubic_p3y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04004154FUNCTION(_sk_bicubic_p3y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04004155_sk_bicubic_p3y_aarch64:
4156 .long 0xf9400028 // ldr x8, [x1]
4157 .long 0x52a7d8e9 // mov w9, #0x3ec70000
4158 .long 0x72838e49 // movk w9, #0x1c72
4159 .long 0x4e040d21 // dup v1.4s, w9
4160 .long 0x3dc01910 // ldr q16, [x8, #96]
4161 .long 0x52b7d549 // mov w9, #0xbeaa0000
4162 .long 0x72955569 // movk w9, #0xaaab
4163 .long 0x4e040d31 // dup v17.4s, w9
4164 .long 0x6e30de13 // fmul v19.4s, v16.4s, v16.4s
4165 .long 0x4e30cc31 // fmla v17.4s, v1.4s, v16.4s
4166 .long 0x6e31de61 // fmul v1.4s, v19.4s, v17.4s
4167 .long 0x3dc00912 // ldr q18, [x8, #32]
4168 .long 0x3d802901 // str q1, [x8, #160]
4169 .long 0xf9400423 // ldr x3, [x1, #8]
4170 .long 0x4f03f701 // fmov v1.4s, #1.500000000000000000e+00
4171 .long 0x4e21d641 // fadd v1.4s, v18.4s, v1.4s
4172 .long 0x91004021 // add x1, x1, #0x10
4173 .long 0xd61f0060 // br x3
Mike Klein7fee90c2017-04-07 16:55:09 -04004174
4175HIDDEN _sk_callback_aarch64
4176.globl _sk_callback_aarch64
4177FUNCTION(_sk_callback_aarch64)
4178_sk_callback_aarch64:
Mike Kleinc17dc242017-04-20 16:21:57 -04004179 .long 0xd101c3ff // sub sp, sp, #0x70
4180 .long 0xf90023f6 // str x22, [sp, #64]
4181 .long 0xa90553f5 // stp x21, x20, [sp, #80]
4182 .long 0xa9067bf3 // stp x19, x30, [sp, #96]
4183 .long 0xad011fe6 // stp q6, q7, [sp, #32]
4184 .long 0xad0017e4 // stp q4, q5, [sp]
Mike Klein7fee90c2017-04-07 16:55:09 -04004185 .long 0xaa0103f4 // mov x20, x1
Mike Kleinc17dc242017-04-20 16:21:57 -04004186 .long 0xf9400295 // ldr x21, [x20]
4187 .long 0xaa0003f6 // mov x22, x0
Mike Klein7fee90c2017-04-07 16:55:09 -04004188 .long 0x321e03e1 // orr w1, wzr, #0x4
4189 .long 0xaa0203f3 // mov x19, x2
Mike Kleinc17dc242017-04-20 16:21:57 -04004190 .long 0x910022a8 // add x8, x21, #0x8
4191 .long 0x4c000900 // st4 {v0.4s-v3.4s}, [x8]
4192 .long 0xf94002a8 // ldr x8, [x21]
4193 .long 0xaa1503e0 // mov x0, x21
4194 .long 0xd63f0100 // blr x8
4195 .long 0xf94046a8 // ldr x8, [x21, #136]
Mike Klein7fee90c2017-04-07 16:55:09 -04004196 .long 0xf9400683 // ldr x3, [x20, #8]
4197 .long 0x91004281 // add x1, x20, #0x10
Mike Kleinc17dc242017-04-20 16:21:57 -04004198 .long 0xaa1603e0 // mov x0, x22
4199 .long 0x4c400900 // ld4 {v0.4s-v3.4s}, [x8]
Mike Klein7fee90c2017-04-07 16:55:09 -04004200 .long 0xaa1303e2 // mov x2, x19
Mike Kleinc17dc242017-04-20 16:21:57 -04004201 .long 0xad4017e4 // ldp q4, q5, [sp]
4202 .long 0xad411fe6 // ldp q6, q7, [sp, #32]
4203 .long 0xa9467bf3 // ldp x19, x30, [sp, #96]
4204 .long 0xa94553f5 // ldp x21, x20, [sp, #80]
4205 .long 0xf94023f6 // ldr x22, [sp, #64]
4206 .long 0x9101c3ff // add sp, sp, #0x70
Mike Klein7fee90c2017-04-07 16:55:09 -04004207 .long 0xd61f0060 // br x3
Mike Kleind7e06ae2017-03-29 16:33:06 -04004208#elif defined(__arm__)
Mike Klein2229b572017-04-21 10:30:29 -04004209BALIGN4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004210
Mike Klein7c4af542017-03-29 18:21:14 -04004211HIDDEN _sk_start_pipeline_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004212.globl _sk_start_pipeline_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004213FUNCTION(_sk_start_pipeline_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004214_sk_start_pipeline_vfp4:
4215 .long 0xe92d41f0 // push {r4, r5, r6, r7, r8, lr}
4216 .long 0xe1a04000 // mov r4, r0
4217 .long 0xe2840002 // add r0, r4, #2
4218 .long 0xe1a05003 // mov r5, r3
4219 .long 0xe1a08002 // mov r8, r2
4220 .long 0xe1a07001 // mov r7, r1
4221 .long 0xe1500005 // cmp r0, r5
4222 .long 0x8a000010 // bhi 64 <sk_start_pipeline_vfp4+0x64>
4223 .long 0xe4976004 // ldr r6, [r7], #4
4224 .long 0xf2800010 // vmov.i32 d0, #0
4225 .long 0xe1a00004 // mov r0, r4
4226 .long 0xf2801010 // vmov.i32 d1, #0
4227 .long 0xe1a01007 // mov r1, r7
4228 .long 0xf2802010 // vmov.i32 d2, #0
4229 .long 0xe1a02008 // mov r2, r8
4230 .long 0xf2803010 // vmov.i32 d3, #0
4231 .long 0xf2804010 // vmov.i32 d4, #0
4232 .long 0xf2805010 // vmov.i32 d5, #0
4233 .long 0xf2806010 // vmov.i32 d6, #0
4234 .long 0xf2807010 // vmov.i32 d7, #0
4235 .long 0xe12fff36 // blx r6
4236 .long 0xe2840004 // add r0, r4, #4
4237 .long 0xe2844002 // add r4, r4, #2
4238 .long 0xe1500005 // cmp r0, r5
4239 .long 0x9affffef // bls 24 <sk_start_pipeline_vfp4+0x24>
4240 .long 0xe1a00004 // mov r0, r4
4241 .long 0xe8bd81f0 // pop {r4, r5, r6, r7, r8, pc}
4242
Mike Klein7c4af542017-03-29 18:21:14 -04004243HIDDEN _sk_just_return_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004244.globl _sk_just_return_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004245FUNCTION(_sk_just_return_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004246_sk_just_return_vfp4:
4247 .long 0xe12fff1e // bx lr
4248
Mike Klein7c4af542017-03-29 18:21:14 -04004249HIDDEN _sk_seed_shader_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004250.globl _sk_seed_shader_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004251FUNCTION(_sk_seed_shader_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004252_sk_seed_shader_vfp4:
4253 .long 0xee800b90 // vdup.32 d16, r0
4254 .long 0xe8911008 // ldm r1, {r3, ip}
4255 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
4256 .long 0xf2c3161f // vmov.i32 d17, #1056964608
4257 .long 0xedd23b00 // vldr d19, [r2]
4258 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
4259 .long 0xf2872f10 // vmov.f32 d2, #1
4260 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
4261 .long 0xe2811008 // add r1, r1, #8
4262 .long 0xf2400da1 // vadd.f32 d16, d16, d17
4263 .long 0xf2803010 // vmov.i32 d3, #0
4264 .long 0xf2804010 // vmov.i32 d4, #0
4265 .long 0xf2021da1 // vadd.f32 d1, d18, d17
4266 .long 0xf2000da3 // vadd.f32 d0, d16, d19
4267 .long 0xf2805010 // vmov.i32 d5, #0
4268 .long 0xf2806010 // vmov.i32 d6, #0
4269 .long 0xf2807010 // vmov.i32 d7, #0
4270 .long 0xe12fff1c // bx ip
4271
Mike Klein581e6982017-05-03 13:05:13 -04004272HIDDEN _sk_dither_vfp4
4273.globl _sk_dither_vfp4
4274FUNCTION(_sk_dither_vfp4)
4275_sk_dither_vfp4:
Mike Kleindb711c92017-05-03 17:57:48 -04004276 .long 0xe92d4010 // push {r4, lr}
Mike Klein5d7f2b52017-05-20 13:21:59 -04004277 .long 0xedd21b08 // vldr d17, [r2, #32]
4278 .long 0xf2c02011 // vmov.i32 d18, #1
Mike Kleindb711c92017-05-03 17:57:48 -04004279 .long 0xe8911010 // ldm r1, {r4, ip}
Mike Klein5d7f2b52017-05-20 13:21:59 -04004280 .long 0xee800b90 // vdup.32 d16, r0
4281 .long 0xf26108a0 // vadd.i32 d16, d17, d16
4282 .long 0xf2c01012 // vmov.i32 d17, #2
Mike Kleindb711c92017-05-03 17:57:48 -04004283 .long 0xe3a035f2 // mov r3, #1015021568
Mike Kleindb711c92017-05-03 17:57:48 -04004284 .long 0xe494e004 // ldr lr, [r4], #4
Mike Klein5d7f2b52017-05-20 13:21:59 -04004285 .long 0xf24041b2 // vand d20, d16, d18
4286 .long 0xf24051b1 // vand d21, d16, d17
4287 .long 0xe2811008 // add r1, r1, #8
4288 .long 0xf2c03014 // vmov.i32 d19, #4
4289 .long 0xf4ee7c9f // vld1.32 {d23[]}, [lr :32]
Mike Klein581e6982017-05-03 13:05:13 -04004290 .long 0xf2e44534 // vshl.s32 d20, d20, #4
Mike Klein5d7f2b52017-05-20 13:21:59 -04004291 .long 0xf24061b3 // vand d22, d16, d19
4292 .long 0xf34001b7 // veor d16, d16, d23
4293 .long 0xf2e15535 // vshl.s32 d21, d21, #1
4294 .long 0xf24021b2 // vand d18, d16, d18
4295 .long 0xf3fe6036 // vshr.u32 d22, d22, #2
4296 .long 0xf26541b4 // vorr d20, d21, d20
4297 .long 0xf24011b1 // vand d17, d16, d17
4298 .long 0xf24001b3 // vand d16, d16, d19
4299 .long 0xf26431b6 // vorr d19, d20, d22
4300 .long 0xf2e52532 // vshl.s32 d18, d18, #5
4301 .long 0xf2e21531 // vshl.s32 d17, d17, #2
4302 .long 0xf26321b2 // vorr d18, d19, d18
4303 .long 0xf3ff0030 // vshr.u32 d16, d16, #1
4304 .long 0xf26211b1 // vorr d17, d18, d17
Mike Klein7e68bc92017-05-16 12:03:15 -04004305 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein5d7f2b52017-05-20 13:21:59 -04004306 .long 0xf26101b0 // vorr d16, d17, d16
Mike Kleindb711c92017-05-03 17:57:48 -04004307 .long 0xee813b90 // vdup.32 d17, r3
Mike Klein581e6982017-05-03 13:05:13 -04004308 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
4309 .long 0xf3400db1 // vmul.f32 d16, d16, d17
Mike Klein7e68bc92017-05-16 12:03:15 -04004310 .long 0xeddf1b0e // vldr d17, [pc, #56]
Mike Klein581e6982017-05-03 13:05:13 -04004311 .long 0xf2400da1 // vadd.f32 d16, d16, d17
Mike Kleindb711c92017-05-03 17:57:48 -04004312 .long 0xf4e41c9f // vld1.32 {d17[]}, [r4 :32]
Mike Klein581e6982017-05-03 13:05:13 -04004313 .long 0xf3410db0 // vmul.f32 d16, d17, d16
Mike Klein7e68bc92017-05-16 12:03:15 -04004314 .long 0xf2401d80 // vadd.f32 d17, d16, d0
4315 .long 0xf2402d81 // vadd.f32 d18, d16, d1
4316 .long 0xf2400d82 // vadd.f32 d16, d16, d2
4317 .long 0xf2611f83 // vmin.f32 d17, d17, d3
4318 .long 0xf2622f83 // vmin.f32 d18, d18, d3
4319 .long 0xf2600f83 // vmin.f32 d16, d16, d3
4320 .long 0xf2030fa1 // vmax.f32 d0, d19, d17
4321 .long 0xf2031fa2 // vmax.f32 d1, d19, d18
4322 .long 0xf2032fa0 // vmax.f32 d2, d19, d16
Mike Kleindb711c92017-05-03 17:57:48 -04004323 .long 0xe8bd4010 // pop {r4, lr}
Mike Klein581e6982017-05-03 13:05:13 -04004324 .long 0xe12fff1c // bx ip
Mike Klein7e68bc92017-05-16 12:03:15 -04004325 .long 0xe320f000 // nop {0}
Mike Kleindb711c92017-05-03 17:57:48 -04004326 .long 0xbefc0000 // .word 0xbefc0000
4327 .long 0xbefc0000 // .word 0xbefc0000
Mike Klein581e6982017-05-03 13:05:13 -04004328
Mike Klein7c4af542017-03-29 18:21:14 -04004329HIDDEN _sk_constant_color_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004330.globl _sk_constant_color_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004331FUNCTION(_sk_constant_color_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004332_sk_constant_color_vfp4:
Mike Klein8a823fa2017-04-05 17:29:26 -04004333 .long 0xe92d4010 // push {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04004334 .long 0xe8911008 // ldm r1, {r3, ip}
4335 .long 0xe2811008 // add r1, r1, #8
Mike Klein8a823fa2017-04-05 17:29:26 -04004336 .long 0xe283400c // add r4, r3, #12
4337 .long 0xe1a0e003 // mov lr, r3
4338 .long 0xe2833008 // add r3, r3, #8
4339 .long 0xf4ae0c9d // vld1.32 {d0[]}, [lr :32]!
4340 .long 0xf4a43c9f // vld1.32 {d3[]}, [r4 :32]
4341 .long 0xf4a32c9f // vld1.32 {d2[]}, [r3 :32]
4342 .long 0xf4ae1c9f // vld1.32 {d1[]}, [lr :32]
4343 .long 0xe8bd4010 // pop {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04004344 .long 0xe12fff1c // bx ip
4345
Mike Reed9959f722017-05-15 09:34:22 -04004346HIDDEN _sk_load_rgba_vfp4
4347.globl _sk_load_rgba_vfp4
4348FUNCTION(_sk_load_rgba_vfp4)
4349_sk_load_rgba_vfp4:
4350 .long 0xe92d4800 // push {fp, lr}
4351 .long 0xe8911008 // ldm r1, {r3, ip}
4352 .long 0xe2811008 // add r1, r1, #8
4353 .long 0xe1a0e003 // mov lr, r3
4354 .long 0xed932b04 // vldr d2, [r3, #16]
4355 .long 0xf42e078d // vld1.32 {d0}, [lr]!
4356 .long 0xed933b06 // vldr d3, [r3, #24]
4357 .long 0xed9e1b00 // vldr d1, [lr]
4358 .long 0xe8bd4800 // pop {fp, lr}
4359 .long 0xe12fff1c // bx ip
4360
4361HIDDEN _sk_store_rgba_vfp4
4362.globl _sk_store_rgba_vfp4
4363FUNCTION(_sk_store_rgba_vfp4)
4364_sk_store_rgba_vfp4:
4365 .long 0xe591c000 // ldr ip, [r1]
4366 .long 0xe1a0300c // mov r3, ip
4367 .long 0xf403078d // vst1.32 {d0}, [r3]!
4368 .long 0xed831b00 // vstr d1, [r3]
4369 .long 0xe2813008 // add r3, r1, #8
4370 .long 0xed8c2b04 // vstr d2, [ip, #16]
4371 .long 0xed8c3b06 // vstr d3, [ip, #24]
4372 .long 0xe591c004 // ldr ip, [r1, #4]
4373 .long 0xe1a01003 // mov r1, r3
4374 .long 0xe12fff1c // bx ip
4375
Mike Klein7c4af542017-03-29 18:21:14 -04004376HIDDEN _sk_clear_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004377.globl _sk_clear_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004378FUNCTION(_sk_clear_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004379_sk_clear_vfp4:
4380 .long 0xe4913004 // ldr r3, [r1], #4
4381 .long 0xf2800010 // vmov.i32 d0, #0
4382 .long 0xf2801010 // vmov.i32 d1, #0
4383 .long 0xf2802010 // vmov.i32 d2, #0
4384 .long 0xf2803010 // vmov.i32 d3, #0
4385 .long 0xe12fff13 // bx r3
4386
Mike Kleinaaca1e42017-03-31 09:29:01 -04004387HIDDEN _sk_srcatop_vfp4
4388.globl _sk_srcatop_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004389FUNCTION(_sk_srcatop_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04004390_sk_srcatop_vfp4:
4391 .long 0xf2c70f10 // vmov.f32 d16, #1
Mike Kleind7e06ae2017-03-29 16:33:06 -04004392 .long 0xe4913004 // ldr r3, [r1], #4
Mike Kleinaaca1e42017-03-31 09:29:01 -04004393 .long 0xf2603d83 // vsub.f32 d19, d16, d3
4394 .long 0xf3033d17 // vmul.f32 d3, d3, d7
4395 .long 0xf3430d94 // vmul.f32 d16, d19, d4
4396 .long 0xf3431d95 // vmul.f32 d17, d19, d5
4397 .long 0xf3432d96 // vmul.f32 d18, d19, d6
4398 .long 0xf2400c17 // vfma.f32 d16, d0, d7
4399 .long 0xf2411c17 // vfma.f32 d17, d1, d7
4400 .long 0xf2422c17 // vfma.f32 d18, d2, d7
4401 .long 0xf2033c97 // vfma.f32 d3, d19, d7
4402 .long 0xf22001b0 // vorr d0, d16, d16
4403 .long 0xf22111b1 // vorr d1, d17, d17
4404 .long 0xf22221b2 // vorr d2, d18, d18
4405 .long 0xe12fff13 // bx r3
4406
4407HIDDEN _sk_dstatop_vfp4
4408.globl _sk_dstatop_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004409FUNCTION(_sk_dstatop_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04004410_sk_dstatop_vfp4:
4411 .long 0xf2c70f10 // vmov.f32 d16, #1
4412 .long 0xe4913004 // ldr r3, [r1], #4
4413 .long 0xf3431d15 // vmul.f32 d17, d3, d5
4414 .long 0xf2604d87 // vsub.f32 d20, d16, d7
4415 .long 0xf3430d14 // vmul.f32 d16, d3, d4
4416 .long 0xf3432d16 // vmul.f32 d18, d3, d6
4417 .long 0xf3433d17 // vmul.f32 d19, d3, d7
4418 .long 0xf2440c90 // vfma.f32 d16, d20, d0
4419 .long 0xf2441c91 // vfma.f32 d17, d20, d1
4420 .long 0xf2442c92 // vfma.f32 d18, d20, d2
4421 .long 0xf2443c93 // vfma.f32 d19, d20, d3
4422 .long 0xf22001b0 // vorr d0, d16, d16
4423 .long 0xf22111b1 // vorr d1, d17, d17
4424 .long 0xf22221b2 // vorr d2, d18, d18
4425 .long 0xf22331b3 // vorr d3, d19, d19
4426 .long 0xe12fff13 // bx r3
4427
4428HIDDEN _sk_srcin_vfp4
4429.globl _sk_srcin_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004430FUNCTION(_sk_srcin_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04004431_sk_srcin_vfp4:
4432 .long 0xf3000d17 // vmul.f32 d0, d0, d7
4433 .long 0xe4913004 // ldr r3, [r1], #4
4434 .long 0xf3011d17 // vmul.f32 d1, d1, d7
4435 .long 0xf3022d17 // vmul.f32 d2, d2, d7
4436 .long 0xf3033d17 // vmul.f32 d3, d3, d7
4437 .long 0xe12fff13 // bx r3
4438
4439HIDDEN _sk_dstin_vfp4
4440.globl _sk_dstin_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004441FUNCTION(_sk_dstin_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04004442_sk_dstin_vfp4:
4443 .long 0xf3030d14 // vmul.f32 d0, d3, d4
4444 .long 0xe4913004 // ldr r3, [r1], #4
4445 .long 0xf3031d15 // vmul.f32 d1, d3, d5
4446 .long 0xf3032d16 // vmul.f32 d2, d3, d6
4447 .long 0xf3033d17 // vmul.f32 d3, d3, d7
4448 .long 0xe12fff13 // bx r3
4449
4450HIDDEN _sk_srcout_vfp4
4451.globl _sk_srcout_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004452FUNCTION(_sk_srcout_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04004453_sk_srcout_vfp4:
4454 .long 0xf2c70f10 // vmov.f32 d16, #1
4455 .long 0xe4913004 // ldr r3, [r1], #4
4456 .long 0xf2600d87 // vsub.f32 d16, d16, d7
4457 .long 0xf3000d90 // vmul.f32 d0, d16, d0
4458 .long 0xf3001d91 // vmul.f32 d1, d16, d1
4459 .long 0xf3002d92 // vmul.f32 d2, d16, d2
4460 .long 0xf3003d93 // vmul.f32 d3, d16, d3
4461 .long 0xe12fff13 // bx r3
4462
4463HIDDEN _sk_dstout_vfp4
4464.globl _sk_dstout_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004465FUNCTION(_sk_dstout_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04004466_sk_dstout_vfp4:
4467 .long 0xf2c70f10 // vmov.f32 d16, #1
4468 .long 0xe4913004 // ldr r3, [r1], #4
4469 .long 0xf2600d83 // vsub.f32 d16, d16, d3
4470 .long 0xf3000d94 // vmul.f32 d0, d16, d4
4471 .long 0xf3001d95 // vmul.f32 d1, d16, d5
4472 .long 0xf3002d96 // vmul.f32 d2, d16, d6
4473 .long 0xf3003d97 // vmul.f32 d3, d16, d7
Mike Kleind7e06ae2017-03-29 16:33:06 -04004474 .long 0xe12fff13 // bx r3
4475
Mike Klein7c4af542017-03-29 18:21:14 -04004476HIDDEN _sk_srcover_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004477.globl _sk_srcover_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004478FUNCTION(_sk_srcover_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004479_sk_srcover_vfp4:
4480 .long 0xf2c70f10 // vmov.f32 d16, #1
4481 .long 0xe4913004 // ldr r3, [r1], #4
4482 .long 0xf2600d83 // vsub.f32 d16, d16, d3
4483 .long 0xf2040c30 // vfma.f32 d0, d4, d16
4484 .long 0xf2051c30 // vfma.f32 d1, d5, d16
4485 .long 0xf2062c30 // vfma.f32 d2, d6, d16
4486 .long 0xf2073c30 // vfma.f32 d3, d7, d16
4487 .long 0xe12fff13 // bx r3
4488
Mike Klein7c4af542017-03-29 18:21:14 -04004489HIDDEN _sk_dstover_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004490.globl _sk_dstover_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004491FUNCTION(_sk_dstover_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004492_sk_dstover_vfp4:
4493 .long 0xf2c70f10 // vmov.f32 d16, #1
4494 .long 0xe4913004 // ldr r3, [r1], #4
4495 .long 0xf2651115 // vorr d17, d5, d5
4496 .long 0xf2604d87 // vsub.f32 d20, d16, d7
4497 .long 0xf2640114 // vorr d16, d4, d4
4498 .long 0xf2662116 // vorr d18, d6, d6
4499 .long 0xf2673117 // vorr d19, d7, d7
4500 .long 0xf2400c34 // vfma.f32 d16, d0, d20
4501 .long 0xf2411c34 // vfma.f32 d17, d1, d20
4502 .long 0xf2422c34 // vfma.f32 d18, d2, d20
4503 .long 0xf2433c34 // vfma.f32 d19, d3, d20
4504 .long 0xf22001b0 // vorr d0, d16, d16
4505 .long 0xf22111b1 // vorr d1, d17, d17
4506 .long 0xf22221b2 // vorr d2, d18, d18
4507 .long 0xf22331b3 // vorr d3, d19, d19
4508 .long 0xe12fff13 // bx r3
4509
Mike Kleinaaca1e42017-03-31 09:29:01 -04004510HIDDEN _sk_modulate_vfp4
4511.globl _sk_modulate_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004512FUNCTION(_sk_modulate_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04004513_sk_modulate_vfp4:
4514 .long 0xf3000d14 // vmul.f32 d0, d0, d4
4515 .long 0xe4913004 // ldr r3, [r1], #4
4516 .long 0xf3011d15 // vmul.f32 d1, d1, d5
4517 .long 0xf3022d16 // vmul.f32 d2, d2, d6
4518 .long 0xf3033d17 // vmul.f32 d3, d3, d7
4519 .long 0xe12fff13 // bx r3
4520
4521HIDDEN _sk_multiply_vfp4
4522.globl _sk_multiply_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004523FUNCTION(_sk_multiply_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04004524_sk_multiply_vfp4:
4525 .long 0xf2c70f10 // vmov.f32 d16, #1
4526 .long 0xe4913004 // ldr r3, [r1], #4
4527 .long 0xf2601d87 // vsub.f32 d17, d16, d7
4528 .long 0xf2600d83 // vsub.f32 d16, d16, d3
4529 .long 0xf3412d90 // vmul.f32 d18, d17, d0
4530 .long 0xf3403d94 // vmul.f32 d19, d16, d4
4531 .long 0xf3414d91 // vmul.f32 d20, d17, d1
4532 .long 0xf3405d95 // vmul.f32 d21, d16, d5
4533 .long 0xf3416d92 // vmul.f32 d22, d17, d2
4534 .long 0xf3418d93 // vmul.f32 d24, d17, d3
4535 .long 0xf3407d96 // vmul.f32 d23, d16, d6
4536 .long 0xf3409d97 // vmul.f32 d25, d16, d7
4537 .long 0xf2430da2 // vadd.f32 d16, d19, d18
4538 .long 0xf2451da4 // vadd.f32 d17, d21, d20
4539 .long 0xf2472da6 // vadd.f32 d18, d23, d22
4540 .long 0xf2493da8 // vadd.f32 d19, d25, d24
4541 .long 0xf2400c14 // vfma.f32 d16, d0, d4
4542 .long 0xf2411c15 // vfma.f32 d17, d1, d5
4543 .long 0xf2422c16 // vfma.f32 d18, d2, d6
4544 .long 0xf2433c17 // vfma.f32 d19, d3, d7
4545 .long 0xf22001b0 // vorr d0, d16, d16
4546 .long 0xf22111b1 // vorr d1, d17, d17
4547 .long 0xf22221b2 // vorr d2, d18, d18
4548 .long 0xf22331b3 // vorr d3, d19, d19
4549 .long 0xe12fff13 // bx r3
4550
4551HIDDEN _sk_plus__vfp4
4552.globl _sk_plus__vfp4
Mike Klein86714282017-04-13 17:37:38 -04004553FUNCTION(_sk_plus__vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04004554_sk_plus__vfp4:
4555 .long 0xf2000d04 // vadd.f32 d0, d0, d4
4556 .long 0xe4913004 // ldr r3, [r1], #4
4557 .long 0xf2011d05 // vadd.f32 d1, d1, d5
4558 .long 0xf2022d06 // vadd.f32 d2, d2, d6
4559 .long 0xf2033d07 // vadd.f32 d3, d3, d7
4560 .long 0xe12fff13 // bx r3
4561
4562HIDDEN _sk_screen_vfp4
4563.globl _sk_screen_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004564FUNCTION(_sk_screen_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04004565_sk_screen_vfp4:
4566 .long 0xf2400d04 // vadd.f32 d16, d0, d4
4567 .long 0xe4913004 // ldr r3, [r1], #4
4568 .long 0xf2411d05 // vadd.f32 d17, d1, d5
4569 .long 0xf2422d06 // vadd.f32 d18, d2, d6
4570 .long 0xf2433d07 // vadd.f32 d19, d3, d7
4571 .long 0xf2600c14 // vfms.f32 d16, d0, d4
4572 .long 0xf2611c15 // vfms.f32 d17, d1, d5
4573 .long 0xf2622c16 // vfms.f32 d18, d2, d6
4574 .long 0xf2633c17 // vfms.f32 d19, d3, d7
4575 .long 0xf22001b0 // vorr d0, d16, d16
4576 .long 0xf22111b1 // vorr d1, d17, d17
4577 .long 0xf22221b2 // vorr d2, d18, d18
4578 .long 0xf22331b3 // vorr d3, d19, d19
4579 .long 0xe12fff13 // bx r3
4580
4581HIDDEN _sk_xor__vfp4
4582.globl _sk_xor__vfp4
Mike Klein86714282017-04-13 17:37:38 -04004583FUNCTION(_sk_xor__vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04004584_sk_xor__vfp4:
4585 .long 0xf2c70f10 // vmov.f32 d16, #1
4586 .long 0xe4913004 // ldr r3, [r1], #4
4587 .long 0xf2603d83 // vsub.f32 d19, d16, d3
4588 .long 0xf2604d87 // vsub.f32 d20, d16, d7
4589 .long 0xf3430d94 // vmul.f32 d16, d19, d4
4590 .long 0xf3431d95 // vmul.f32 d17, d19, d5
4591 .long 0xf3432d96 // vmul.f32 d18, d19, d6
4592 .long 0xf3433d97 // vmul.f32 d19, d19, d7
4593 .long 0xf2440c90 // vfma.f32 d16, d20, d0
4594 .long 0xf2441c91 // vfma.f32 d17, d20, d1
4595 .long 0xf2442c92 // vfma.f32 d18, d20, d2
4596 .long 0xf2443c93 // vfma.f32 d19, d20, d3
4597 .long 0xf22001b0 // vorr d0, d16, d16
4598 .long 0xf22111b1 // vorr d1, d17, d17
4599 .long 0xf22221b2 // vorr d2, d18, d18
4600 .long 0xf22331b3 // vorr d3, d19, d19
4601 .long 0xe12fff13 // bx r3
4602
Mike Klein66b09ab2017-03-31 10:29:40 -04004603HIDDEN _sk_darken_vfp4
4604.globl _sk_darken_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004605FUNCTION(_sk_darken_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04004606_sk_darken_vfp4:
4607 .long 0xf2c70f10 // vmov.f32 d16, #1
4608 .long 0xe4913004 // ldr r3, [r1], #4
4609 .long 0xf3431d14 // vmul.f32 d17, d3, d4
4610 .long 0xf3402d17 // vmul.f32 d18, d0, d7
4611 .long 0xf3433d15 // vmul.f32 d19, d3, d5
4612 .long 0xf3414d17 // vmul.f32 d20, d1, d7
4613 .long 0xf3435d16 // vmul.f32 d21, d3, d6
4614 .long 0xf2600d83 // vsub.f32 d16, d16, d3
4615 .long 0xf3426d17 // vmul.f32 d22, d2, d7
4616 .long 0xf2421fa1 // vmax.f32 d17, d18, d17
4617 .long 0xf2407d04 // vadd.f32 d23, d0, d4
4618 .long 0xf2443fa3 // vmax.f32 d19, d20, d19
4619 .long 0xf2412d05 // vadd.f32 d18, d1, d5
4620 .long 0xf2424d06 // vadd.f32 d20, d2, d6
4621 .long 0xf2465fa5 // vmax.f32 d21, d22, d21
4622 .long 0xf2073c30 // vfma.f32 d3, d7, d16
4623 .long 0xf2270da1 // vsub.f32 d0, d23, d17
4624 .long 0xf2221da3 // vsub.f32 d1, d18, d19
4625 .long 0xf2242da5 // vsub.f32 d2, d20, d21
4626 .long 0xe12fff13 // bx r3
4627
4628HIDDEN _sk_lighten_vfp4
4629.globl _sk_lighten_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004630FUNCTION(_sk_lighten_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04004631_sk_lighten_vfp4:
4632 .long 0xf2c70f10 // vmov.f32 d16, #1
4633 .long 0xe4913004 // ldr r3, [r1], #4
4634 .long 0xf3431d14 // vmul.f32 d17, d3, d4
4635 .long 0xf3402d17 // vmul.f32 d18, d0, d7
4636 .long 0xf3433d15 // vmul.f32 d19, d3, d5
4637 .long 0xf3414d17 // vmul.f32 d20, d1, d7
4638 .long 0xf3435d16 // vmul.f32 d21, d3, d6
4639 .long 0xf2600d83 // vsub.f32 d16, d16, d3
4640 .long 0xf3426d17 // vmul.f32 d22, d2, d7
4641 .long 0xf2621fa1 // vmin.f32 d17, d18, d17
4642 .long 0xf2407d04 // vadd.f32 d23, d0, d4
4643 .long 0xf2643fa3 // vmin.f32 d19, d20, d19
4644 .long 0xf2412d05 // vadd.f32 d18, d1, d5
4645 .long 0xf2424d06 // vadd.f32 d20, d2, d6
4646 .long 0xf2665fa5 // vmin.f32 d21, d22, d21
4647 .long 0xf2073c30 // vfma.f32 d3, d7, d16
4648 .long 0xf2270da1 // vsub.f32 d0, d23, d17
4649 .long 0xf2221da3 // vsub.f32 d1, d18, d19
4650 .long 0xf2242da5 // vsub.f32 d2, d20, d21
4651 .long 0xe12fff13 // bx r3
4652
4653HIDDEN _sk_difference_vfp4
4654.globl _sk_difference_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004655FUNCTION(_sk_difference_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04004656_sk_difference_vfp4:
4657 .long 0xf3430d14 // vmul.f32 d16, d3, d4
4658 .long 0xe4913004 // ldr r3, [r1], #4
4659 .long 0xf3401d17 // vmul.f32 d17, d0, d7
4660 .long 0xf3432d15 // vmul.f32 d18, d3, d5
4661 .long 0xf3413d17 // vmul.f32 d19, d1, d7
4662 .long 0xf3434d16 // vmul.f32 d20, d3, d6
4663 .long 0xf3425d17 // vmul.f32 d21, d2, d7
4664 .long 0xf2c76f10 // vmov.f32 d22, #1
4665 .long 0xf2610fa0 // vmin.f32 d16, d17, d16
4666 .long 0xf2631fa2 // vmin.f32 d17, d19, d18
4667 .long 0xf2662d83 // vsub.f32 d18, d22, d3
4668 .long 0xf2653fa4 // vmin.f32 d19, d21, d20
4669 .long 0xf2404d04 // vadd.f32 d20, d0, d4
4670 .long 0xf2400da0 // vadd.f32 d16, d16, d16
4671 .long 0xf2073c32 // vfma.f32 d3, d7, d18
4672 .long 0xf2415d05 // vadd.f32 d21, d1, d5
4673 .long 0xf2411da1 // vadd.f32 d17, d17, d17
4674 .long 0xf2426d06 // vadd.f32 d22, d2, d6
4675 .long 0xf2432da3 // vadd.f32 d18, d19, d19
4676 .long 0xf2240da0 // vsub.f32 d0, d20, d16
4677 .long 0xf2251da1 // vsub.f32 d1, d21, d17
4678 .long 0xf2262da2 // vsub.f32 d2, d22, d18
4679 .long 0xe12fff13 // bx r3
4680
4681HIDDEN _sk_exclusion_vfp4
4682.globl _sk_exclusion_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004683FUNCTION(_sk_exclusion_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04004684_sk_exclusion_vfp4:
4685 .long 0xf2c70f10 // vmov.f32 d16, #1
4686 .long 0xe4913004 // ldr r3, [r1], #4
4687 .long 0xf3401d14 // vmul.f32 d17, d0, d4
4688 .long 0xf3412d15 // vmul.f32 d18, d1, d5
4689 .long 0xf3423d16 // vmul.f32 d19, d2, d6
4690 .long 0xf2600d83 // vsub.f32 d16, d16, d3
4691 .long 0xf2404d04 // vadd.f32 d20, d0, d4
4692 .long 0xf2411da1 // vadd.f32 d17, d17, d17
4693 .long 0xf2415d05 // vadd.f32 d21, d1, d5
4694 .long 0xf2422da2 // vadd.f32 d18, d18, d18
4695 .long 0xf2426d06 // vadd.f32 d22, d2, d6
4696 .long 0xf2433da3 // vadd.f32 d19, d19, d19
4697 .long 0xf2073c30 // vfma.f32 d3, d7, d16
4698 .long 0xf2240da1 // vsub.f32 d0, d20, d17
4699 .long 0xf2251da2 // vsub.f32 d1, d21, d18
4700 .long 0xf2262da3 // vsub.f32 d2, d22, d19
4701 .long 0xe12fff13 // bx r3
4702
Mike Klein61b84162017-03-31 11:48:14 -04004703HIDDEN _sk_colorburn_vfp4
4704.globl _sk_colorburn_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004705FUNCTION(_sk_colorburn_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004706_sk_colorburn_vfp4:
4707 .long 0xed2d8b08 // vpush {d8-d11}
4708 .long 0xf2670d04 // vsub.f32 d16, d7, d4
4709 .long 0xe4913004 // ldr r3, [r1], #4
4710 .long 0xf2671d06 // vsub.f32 d17, d7, d6
4711 .long 0xf2672d05 // vsub.f32 d18, d7, d5
4712 .long 0xf3008d93 // vmul.f32 d8, d16, d3
4713 .long 0xf3019d93 // vmul.f32 d9, d17, d3
4714 .long 0xf302ad93 // vmul.f32 d10, d18, d3
4715 .long 0xf2c71f10 // vmov.f32 d17, #1
4716 .long 0xeec8baa0 // vdiv.f32 s23, s17, s1
4717 .long 0xee88ba00 // vdiv.f32 s22, s16, s0
4718 .long 0xeec98aa2 // vdiv.f32 s17, s19, s5
4719 .long 0xee898a02 // vdiv.f32 s16, s18, s4
4720 .long 0xeeca9aa1 // vdiv.f32 s19, s21, s3
4721 .long 0xee8a9a01 // vdiv.f32 s18, s20, s2
4722 .long 0xf2672f08 // vmin.f32 d18, d7, d8
4723 .long 0xf2673f09 // vmin.f32 d19, d7, d9
4724 .long 0xf2670f0b // vmin.f32 d16, d7, d11
4725 .long 0xf2614d87 // vsub.f32 d20, d17, d7
4726 .long 0xf2672d22 // vsub.f32 d18, d7, d18
4727 .long 0xf2673d23 // vsub.f32 d19, d7, d19
4728 .long 0xf2611d83 // vsub.f32 d17, d17, d3
4729 .long 0xf2670d20 // vsub.f32 d16, d7, d16
4730 .long 0xf3445d90 // vmul.f32 d21, d20, d0
4731 .long 0xf3446d92 // vmul.f32 d22, d20, d2
4732 .long 0xf3422d93 // vmul.f32 d18, d18, d3
4733 .long 0xf3444d91 // vmul.f32 d20, d20, d1
4734 .long 0xf3433d93 // vmul.f32 d19, d19, d3
4735 .long 0xf3400d93 // vmul.f32 d16, d16, d3
4736 .long 0xf3417d95 // vmul.f32 d23, d17, d5
4737 .long 0xf3418d94 // vmul.f32 d24, d17, d4
4738 .long 0xf3419d96 // vmul.f32 d25, d17, d6
4739 .long 0xf2443da3 // vadd.f32 d19, d20, d19
4740 .long 0xf2462da2 // vadd.f32 d18, d22, d18
4741 .long 0xf245ada0 // vadd.f32 d26, d21, d16
4742 .long 0xf247bd81 // vadd.f32 d27, d23, d1
4743 .long 0xf248cd80 // vadd.f32 d28, d24, d0
4744 .long 0xf249dd82 // vadd.f32 d29, d25, d2
4745 .long 0xf2073c31 // vfma.f32 d3, d7, d17
4746 .long 0xf2499da2 // vadd.f32 d25, d25, d18
4747 .long 0xf2473da3 // vadd.f32 d19, d23, d19
4748 .long 0xf3f97501 // vceq.f32 d23, d1, #0
4749 .long 0xf2455d84 // vadd.f32 d21, d21, d4
4750 .long 0xf2444d85 // vadd.f32 d20, d20, d5
4751 .long 0xf2440e07 // vceq.f32 d16, d4, d7
4752 .long 0xf2466d86 // vadd.f32 d22, d22, d6
4753 .long 0xf2451e07 // vceq.f32 d17, d5, d7
4754 .long 0xf2462e07 // vceq.f32 d18, d6, d7
4755 .long 0xf35b71b3 // vbsl d23, d27, d19
4756 .long 0xf3f93500 // vceq.f32 d19, d0, #0
4757 .long 0xf2488daa // vadd.f32 d24, d24, d26
4758 .long 0xf35c31b8 // vbsl d19, d28, d24
4759 .long 0xf3f98502 // vceq.f32 d24, d2, #0
4760 .long 0xf35d81b9 // vbsl d24, d29, d25
4761 .long 0xf35501b3 // vbsl d16, d21, d19
4762 .long 0xf35411b7 // vbsl d17, d20, d23
4763 .long 0xf35621b8 // vbsl d18, d22, d24
4764 .long 0xf22001b0 // vorr d0, d16, d16
4765 .long 0xf22111b1 // vorr d1, d17, d17
4766 .long 0xf22221b2 // vorr d2, d18, d18
4767 .long 0xecbd8b08 // vpop {d8-d11}
4768 .long 0xe12fff13 // bx r3
4769
4770HIDDEN _sk_colordodge_vfp4
4771.globl _sk_colordodge_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004772FUNCTION(_sk_colordodge_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004773_sk_colordodge_vfp4:
4774 .long 0xed2d8b0e // vpush {d8-d14}
4775 .long 0xf2238d02 // vsub.f32 d8, d3, d2
4776 .long 0xe4913004 // ldr r3, [r1], #4
4777 .long 0xf3039d16 // vmul.f32 d9, d3, d6
4778 .long 0xf223ad01 // vsub.f32 d10, d3, d1
4779 .long 0xf303bd15 // vmul.f32 d11, d3, d5
4780 .long 0xf223cd00 // vsub.f32 d12, d3, d0
4781 .long 0xf303dd14 // vmul.f32 d13, d3, d4
4782 .long 0xeec9eaa8 // vdiv.f32 s29, s19, s17
4783 .long 0xee89ea08 // vdiv.f32 s28, s18, s16
4784 .long 0xeecb8aaa // vdiv.f32 s17, s23, s21
4785 .long 0xeecd9aac // vdiv.f32 s19, s27, s25
4786 .long 0xee8b8a0a // vdiv.f32 s16, s22, s20
4787 .long 0xee8d9a0c // vdiv.f32 s18, s26, s24
4788 .long 0xf2c70f10 // vmov.f32 d16, #1
4789 .long 0xf2672f0e // vmin.f32 d18, d7, d14
4790 .long 0xf2601d87 // vsub.f32 d17, d16, d7
4791 .long 0xf2673f08 // vmin.f32 d19, d7, d8
4792 .long 0xf2674f09 // vmin.f32 d20, d7, d9
4793 .long 0xf2600d83 // vsub.f32 d16, d16, d3
4794 .long 0xf3415d92 // vmul.f32 d21, d17, d2
4795 .long 0xf3422d93 // vmul.f32 d18, d18, d3
4796 .long 0xf3416d91 // vmul.f32 d22, d17, d1
4797 .long 0xf3433d93 // vmul.f32 d19, d19, d3
4798 .long 0xf3411d90 // vmul.f32 d17, d17, d0
4799 .long 0xf3444d93 // vmul.f32 d20, d20, d3
4800 .long 0xf3407d95 // vmul.f32 d23, d16, d5
4801 .long 0xf3408d94 // vmul.f32 d24, d16, d4
4802 .long 0xf3409d96 // vmul.f32 d25, d16, d6
4803 .long 0xf2452da2 // vadd.f32 d18, d21, d18
4804 .long 0xf2463da3 // vadd.f32 d19, d22, d19
4805 .long 0xf2414da4 // vadd.f32 d20, d17, d20
4806 .long 0xf241ae03 // vceq.f32 d26, d1, d3
4807 .long 0xf247bd81 // vadd.f32 d27, d23, d1
4808 .long 0xf3b91505 // vceq.f32 d1, d5, #0
4809 .long 0xf240ce03 // vceq.f32 d28, d0, d3
4810 .long 0xf248dd80 // vadd.f32 d29, d24, d0
4811 .long 0xf3b90504 // vceq.f32 d0, d4, #0
4812 .long 0xf242ee03 // vceq.f32 d30, d2, d3
4813 .long 0xf249fd82 // vadd.f32 d31, d25, d2
4814 .long 0xf3b92506 // vceq.f32 d2, d6, #0
4815 .long 0xf2073c30 // vfma.f32 d3, d7, d16
4816 .long 0xf2410d84 // vadd.f32 d16, d17, d4
4817 .long 0xf2491da2 // vadd.f32 d17, d25, d18
4818 .long 0xf2462d85 // vadd.f32 d18, d22, d5
4819 .long 0xf2455d86 // vadd.f32 d21, d21, d6
4820 .long 0xf2473da3 // vadd.f32 d19, d23, d19
4821 .long 0xf2484da4 // vadd.f32 d20, d24, d20
4822 .long 0xf35fe1b1 // vbsl d30, d31, d17
4823 .long 0xf35ba1b3 // vbsl d26, d27, d19
4824 .long 0xf35dc1b4 // vbsl d28, d29, d20
4825 .long 0xf31001bc // vbsl d0, d16, d28
4826 .long 0xf31211ba // vbsl d1, d18, d26
4827 .long 0xf31521be // vbsl d2, d21, d30
4828 .long 0xecbd8b0e // vpop {d8-d14}
4829 .long 0xe12fff13 // bx r3
4830
4831HIDDEN _sk_hardlight_vfp4
4832.globl _sk_hardlight_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004833FUNCTION(_sk_hardlight_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004834_sk_hardlight_vfp4:
4835 .long 0xf2c71f10 // vmov.f32 d17, #1
4836 .long 0xe4913004 // ldr r3, [r1], #4
4837 .long 0xf2670d04 // vsub.f32 d16, d7, d4
4838 .long 0xf2617d87 // vsub.f32 d23, d17, d7
4839 .long 0xf2611d83 // vsub.f32 d17, d17, d3
4840 .long 0xf2672d05 // vsub.f32 d18, d7, d5
4841 .long 0xf2674d06 // vsub.f32 d20, d7, d6
4842 .long 0xf2633d00 // vsub.f32 d19, d3, d0
4843 .long 0xf2635d01 // vsub.f32 d21, d3, d1
4844 .long 0xf2636d02 // vsub.f32 d22, d3, d2
4845 .long 0xf347bd90 // vmul.f32 d27, d23, d0
4846 .long 0xf341cd94 // vmul.f32 d28, d17, d4
4847 .long 0xf3430db0 // vmul.f32 d16, d19, d16
4848 .long 0xf3463db4 // vmul.f32 d19, d22, d20
4849 .long 0xf3452db2 // vmul.f32 d18, d21, d18
4850 .long 0xf2404d00 // vadd.f32 d20, d0, d0
4851 .long 0xf3405d14 // vmul.f32 d21, d0, d4
4852 .long 0xf2416d01 // vadd.f32 d22, d1, d1
4853 .long 0xf3418d15 // vmul.f32 d24, d1, d5
4854 .long 0xf2429d02 // vadd.f32 d25, d2, d2
4855 .long 0xf342ad16 // vmul.f32 d26, d2, d6
4856 .long 0xf347dd91 // vmul.f32 d29, d23, d1
4857 .long 0xf341fd95 // vmul.f32 d31, d17, d5
4858 .long 0xf24cbdab // vadd.f32 d27, d28, d27
4859 .long 0xf3477d92 // vmul.f32 d23, d23, d2
4860 .long 0xf341cd96 // vmul.f32 d28, d17, d6
4861 .long 0xf2400da0 // vadd.f32 d16, d16, d16
4862 .long 0xf343ed17 // vmul.f32 d30, d3, d7
4863 .long 0xf2422da2 // vadd.f32 d18, d18, d18
4864 .long 0xf2433da3 // vadd.f32 d19, d19, d19
4865 .long 0xf3434e24 // vcge.f32 d20, d3, d20
4866 .long 0xf2455da5 // vadd.f32 d21, d21, d21
4867 .long 0xf3436e26 // vcge.f32 d22, d3, d22
4868 .long 0xf3439e29 // vcge.f32 d25, d3, d25
4869 .long 0xf2488da8 // vadd.f32 d24, d24, d24
4870 .long 0xf24aadaa // vadd.f32 d26, d26, d26
4871 .long 0xf2073c31 // vfma.f32 d3, d7, d17
4872 .long 0xf24fddad // vadd.f32 d29, d31, d29
4873 .long 0xf24c1da7 // vadd.f32 d17, d28, d23
4874 .long 0xf26e0da0 // vsub.f32 d16, d30, d16
4875 .long 0xf26e2da2 // vsub.f32 d18, d30, d18
4876 .long 0xf26e3da3 // vsub.f32 d19, d30, d19
4877 .long 0xf35541b0 // vbsl d20, d21, d16
4878 .long 0xf35861b2 // vbsl d22, d24, d18
4879 .long 0xf35a91b3 // vbsl d25, d26, d19
4880 .long 0xf20b0da4 // vadd.f32 d0, d27, d20
4881 .long 0xf20d1da6 // vadd.f32 d1, d29, d22
4882 .long 0xf2012da9 // vadd.f32 d2, d17, d25
4883 .long 0xe12fff13 // bx r3
4884
4885HIDDEN _sk_overlay_vfp4
4886.globl _sk_overlay_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004887FUNCTION(_sk_overlay_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004888_sk_overlay_vfp4:
4889 .long 0xf2c71f10 // vmov.f32 d17, #1
4890 .long 0xe4913004 // ldr r3, [r1], #4
4891 .long 0xf2670d04 // vsub.f32 d16, d7, d4
4892 .long 0xf2617d87 // vsub.f32 d23, d17, d7
4893 .long 0xf2611d83 // vsub.f32 d17, d17, d3
4894 .long 0xf2672d05 // vsub.f32 d18, d7, d5
4895 .long 0xf2674d06 // vsub.f32 d20, d7, d6
4896 .long 0xf2633d00 // vsub.f32 d19, d3, d0
4897 .long 0xf2635d01 // vsub.f32 d21, d3, d1
4898 .long 0xf2636d02 // vsub.f32 d22, d3, d2
4899 .long 0xf347bd90 // vmul.f32 d27, d23, d0
4900 .long 0xf341cd94 // vmul.f32 d28, d17, d4
4901 .long 0xf3430db0 // vmul.f32 d16, d19, d16
4902 .long 0xf3463db4 // vmul.f32 d19, d22, d20
4903 .long 0xf3452db2 // vmul.f32 d18, d21, d18
4904 .long 0xf2444d04 // vadd.f32 d20, d4, d4
4905 .long 0xf3405d14 // vmul.f32 d21, d0, d4
4906 .long 0xf2456d05 // vadd.f32 d22, d5, d5
4907 .long 0xf3418d15 // vmul.f32 d24, d1, d5
4908 .long 0xf2469d06 // vadd.f32 d25, d6, d6
4909 .long 0xf342ad16 // vmul.f32 d26, d2, d6
4910 .long 0xf347dd91 // vmul.f32 d29, d23, d1
4911 .long 0xf341fd95 // vmul.f32 d31, d17, d5
4912 .long 0xf24cbdab // vadd.f32 d27, d28, d27
4913 .long 0xf3477d92 // vmul.f32 d23, d23, d2
4914 .long 0xf341cd96 // vmul.f32 d28, d17, d6
4915 .long 0xf343ed17 // vmul.f32 d30, d3, d7
4916 .long 0xf2400da0 // vadd.f32 d16, d16, d16
4917 .long 0xf2422da2 // vadd.f32 d18, d18, d18
4918 .long 0xf2433da3 // vadd.f32 d19, d19, d19
4919 .long 0xf3474e24 // vcge.f32 d20, d7, d20
4920 .long 0xf2455da5 // vadd.f32 d21, d21, d21
4921 .long 0xf3476e26 // vcge.f32 d22, d7, d22
4922 .long 0xf2488da8 // vadd.f32 d24, d24, d24
4923 .long 0xf3479e29 // vcge.f32 d25, d7, d25
4924 .long 0xf24aadaa // vadd.f32 d26, d26, d26
4925 .long 0xf2073c31 // vfma.f32 d3, d7, d17
4926 .long 0xf24fddad // vadd.f32 d29, d31, d29
4927 .long 0xf24c1da7 // vadd.f32 d17, d28, d23
4928 .long 0xf26e0da0 // vsub.f32 d16, d30, d16
4929 .long 0xf26e2da2 // vsub.f32 d18, d30, d18
4930 .long 0xf26e3da3 // vsub.f32 d19, d30, d19
4931 .long 0xf35541b0 // vbsl d20, d21, d16
4932 .long 0xf35861b2 // vbsl d22, d24, d18
4933 .long 0xf35a91b3 // vbsl d25, d26, d19
4934 .long 0xf20b0da4 // vadd.f32 d0, d27, d20
4935 .long 0xf20d1da6 // vadd.f32 d1, d29, d22
4936 .long 0xf2012da9 // vadd.f32 d2, d17, d25
4937 .long 0xe12fff13 // bx r3
4938
4939HIDDEN _sk_softlight_vfp4
4940.globl _sk_softlight_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004941FUNCTION(_sk_softlight_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004942_sk_softlight_vfp4:
4943 .long 0xed2d8b06 // vpush {d8-d10}
4944 .long 0xeec58aa7 // vdiv.f32 s17, s11, s15
4945 .long 0xf3f90407 // vcgt.f32 d16, d7, #0
4946 .long 0xe4913004 // ldr r3, [r1], #4
4947 .long 0xeec49aa7 // vdiv.f32 s19, s9, s15
4948 .long 0xeec6aaa7 // vdiv.f32 s21, s13, s15
4949 .long 0xee858a07 // vdiv.f32 s16, s10, s14
4950 .long 0xee849a07 // vdiv.f32 s18, s8, s14
4951 .long 0xee86aa07 // vdiv.f32 s20, s12, s14
4952 .long 0xf26021b0 // vorr d18, d16, d16
4953 .long 0xf2c01010 // vmov.i32 d17, #0
4954 .long 0xf3582131 // vbsl d18, d8, d17
4955 .long 0xf26031b0 // vorr d19, d16, d16
4956 .long 0xf3fb45a2 // vrsqrte.f32 d20, d18
4957 .long 0xf3593131 // vbsl d19, d9, d17
4958 .long 0xf35a0131 // vbsl d16, d10, d17
4959 .long 0xf3fb15a3 // vrsqrte.f32 d17, d19
4960 .long 0xf3fb55a0 // vrsqrte.f32 d21, d16
4961 .long 0xf3446db4 // vmul.f32 d22, d20, d20
4962 .long 0xf243ada3 // vadd.f32 d26, d19, d19
4963 .long 0xf240bda0 // vadd.f32 d27, d16, d16
4964 .long 0xf3417db1 // vmul.f32 d23, d17, d17
4965 .long 0xf3458db5 // vmul.f32 d24, d21, d21
4966 .long 0xf2626fb6 // vrsqrts.f32 d22, d18, d22
4967 .long 0xf2429da2 // vadd.f32 d25, d18, d18
4968 .long 0xf2637fb7 // vrsqrts.f32 d23, d19, d23
4969 .long 0xf2608fb8 // vrsqrts.f32 d24, d16, d24
4970 .long 0xf2818f1c // vmov.f32 d8, #7
4971 .long 0xf2499da9 // vadd.f32 d25, d25, d25
4972 .long 0xf3444db6 // vmul.f32 d20, d20, d22
4973 .long 0xf24a6daa // vadd.f32 d22, d26, d26
4974 .long 0xf24badab // vadd.f32 d26, d27, d27
4975 .long 0xf3411db7 // vmul.f32 d17, d17, d23
4976 .long 0xf3455db8 // vmul.f32 d21, d21, d24
4977 .long 0xf3fb7524 // vrecpe.f32 d23, d20
4978 .long 0xf3498db9 // vmul.f32 d24, d25, d25
4979 .long 0xf3fbd521 // vrecpe.f32 d29, d17
4980 .long 0xf34aedba // vmul.f32 d30, d26, d26
4981 .long 0xf3fbf525 // vrecpe.f32 d31, d21
4982 .long 0xf2444fb7 // vrecps.f32 d20, d20, d23
4983 .long 0xf346cdb6 // vmul.f32 d28, d22, d22
4984 .long 0xf2411fbd // vrecps.f32 d17, d17, d29
4985 .long 0xf3c7bf10 // vmov.f32 d27, #-1
4986 .long 0xf2455fbf // vrecps.f32 d21, d21, d31
4987 .long 0xf24aadae // vadd.f32 d26, d26, d30
4988 .long 0xf2498da8 // vadd.f32 d24, d25, d24
4989 .long 0xf2429dab // vadd.f32 d25, d18, d27
4990 .long 0xf2466dac // vadd.f32 d22, d22, d28
4991 .long 0xf243cdab // vadd.f32 d28, d19, d27
4992 .long 0xf240bdab // vadd.f32 d27, d16, d27
4993 .long 0xf3474db4 // vmul.f32 d20, d23, d20
4994 .long 0xf2c7ef10 // vmov.f32 d30, #1
4995 .long 0xf34d1db1 // vmul.f32 d17, d29, d17
4996 .long 0xf34badba // vmul.f32 d26, d27, d26
4997 .long 0xf242bd02 // vadd.f32 d27, d2, d2
4998 .long 0xf26edda0 // vsub.f32 d29, d30, d16
4999 .long 0xf3498db8 // vmul.f32 d24, d25, d24
5000 .long 0xf3429d98 // vmul.f32 d25, d18, d8
5001 .long 0xf34f5db5 // vmul.f32 d21, d31, d21
5002 .long 0xf26efda2 // vsub.f32 d31, d30, d18
5003 .long 0xf2642da2 // vsub.f32 d18, d20, d18
5004 .long 0xf26b4d83 // vsub.f32 d20, d27, d3
5005 .long 0xf2498da8 // vadd.f32 d24, d25, d24
5006 .long 0xf34c6db6 // vmul.f32 d22, d28, d22
5007 .long 0xf3437d98 // vmul.f32 d23, d19, d8
5008 .long 0xf3449dbd // vmul.f32 d25, d20, d29
5009 .long 0xf245dd05 // vadd.f32 d29, d5, d5
5010 .long 0xf340cd98 // vmul.f32 d28, d16, d8
5011 .long 0xf2476da6 // vadd.f32 d22, d23, d22
5012 .long 0xf2611da3 // vsub.f32 d17, d17, d19
5013 .long 0xf24dddad // vadd.f32 d29, d29, d29
5014 .long 0xf24c7daa // vadd.f32 d23, d28, d26
5015 .long 0xf2650da0 // vsub.f32 d16, d21, d16
5016 .long 0xf26e3da3 // vsub.f32 d19, d30, d19
5017 .long 0xf347de2d // vcge.f32 d29, d7, d29
5018 .long 0xf241ad01 // vadd.f32 d26, d1, d1
5019 .long 0xf3444d97 // vmul.f32 d20, d20, d7
5020 .long 0xf358d1b2 // vbsl d29, d24, d18
5021 .long 0xf2448d04 // vadd.f32 d24, d4, d4
5022 .long 0xf2462d06 // vadd.f32 d18, d6, d6
5023 .long 0xf26a5d83 // vsub.f32 d21, d26, d3
5024 .long 0xf2488da8 // vadd.f32 d24, d24, d24
5025 .long 0xf2422da2 // vadd.f32 d18, d18, d18
5026 .long 0xf345cdbf // vmul.f32 d28, d21, d31
5027 .long 0xf3455d97 // vmul.f32 d21, d21, d7
5028 .long 0xf3478e28 // vcge.f32 d24, d7, d24
5029 .long 0xf3472e22 // vcge.f32 d18, d7, d18
5030 .long 0xf343fd14 // vmul.f32 d31, d3, d4
5031 .long 0xf3455dbd // vmul.f32 d21, d21, d29
5032 .long 0xf35681b1 // vbsl d24, d22, d17
5033 .long 0xf2401d00 // vadd.f32 d17, d0, d0
5034 .long 0xf35721b0 // vbsl d18, d23, d16
5035 .long 0xf24c0d83 // vadd.f32 d16, d28, d3
5036 .long 0xf2496d83 // vadd.f32 d22, d25, d3
5037 .long 0xf2617d83 // vsub.f32 d23, d17, d3
5038 .long 0xf3442db2 // vmul.f32 d18, d20, d18
5039 .long 0xf3434e2a // vcge.f32 d20, d3, d26
5040 .long 0xf343ae2b // vcge.f32 d26, d3, d27
5041 .long 0xf3473db3 // vmul.f32 d19, d23, d19
5042 .long 0xf3477d97 // vmul.f32 d23, d23, d7
5043 .long 0xf3431e21 // vcge.f32 d17, d3, d17
5044 .long 0xf3400d95 // vmul.f32 d16, d16, d5
5045 .long 0xf2433d83 // vadd.f32 d19, d19, d3
5046 .long 0xf3477db8 // vmul.f32 d23, d23, d24
5047 .long 0xf26e8d87 // vsub.f32 d24, d30, d7
5048 .long 0xf26eed83 // vsub.f32 d30, d30, d3
5049 .long 0xf3433d94 // vmul.f32 d19, d19, d4
5050 .long 0xf24f7da7 // vadd.f32 d23, d31, d23
5051 .long 0xf3489d91 // vmul.f32 d25, d24, d1
5052 .long 0xf348cd90 // vmul.f32 d28, d24, d0
5053 .long 0xf34edd94 // vmul.f32 d29, d30, d4
5054 .long 0xf34ebd95 // vmul.f32 d27, d30, d5
5055 .long 0xf3488d92 // vmul.f32 d24, d24, d2
5056 .long 0xf34efd96 // vmul.f32 d31, d30, d6
5057 .long 0xf24dcdac // vadd.f32 d28, d29, d28
5058 .long 0xf343dd15 // vmul.f32 d29, d3, d5
5059 .long 0xf24b9da9 // vadd.f32 d25, d27, d25
5060 .long 0xf343bd16 // vmul.f32 d27, d3, d6
5061 .long 0xf3466d96 // vmul.f32 d22, d22, d6
5062 .long 0xf24f8da8 // vadd.f32 d24, d31, d24
5063 .long 0xf24d5da5 // vadd.f32 d21, d29, d21
5064 .long 0xf24b2da2 // vadd.f32 d18, d27, d18
5065 .long 0xf35311b7 // vbsl d17, d19, d23
5066 .long 0xf35041b5 // vbsl d20, d16, d21
5067 .long 0xf356a1b2 // vbsl d26, d22, d18
5068 .long 0xf2073c3e // vfma.f32 d3, d7, d30
5069 .long 0xf20c0da1 // vadd.f32 d0, d28, d17
5070 .long 0xf2091da4 // vadd.f32 d1, d25, d20
5071 .long 0xf2082daa // vadd.f32 d2, d24, d26
5072 .long 0xecbd8b06 // vpop {d8-d10}
5073 .long 0xe12fff13 // bx r3
5074
Mike Kleinbb338332017-05-04 12:42:52 -04005075HIDDEN _sk_hue_vfp4
5076.globl _sk_hue_vfp4
5077FUNCTION(_sk_hue_vfp4)
5078_sk_hue_vfp4:
Mike Klein08aa88d2017-05-12 12:59:24 -04005079 .long 0xed2d8b0c // vpush {d8-d13}
5080 .long 0xf3420d13 // vmul.f32 d16, d2, d3
Mike Kleinbb338332017-05-04 12:42:52 -04005081 .long 0xe4913004 // ldr r3, [r1], #4
Mike Klein08aa88d2017-05-12 12:59:24 -04005082 .long 0xf3411d13 // vmul.f32 d17, d1, d3
5083 .long 0xf2652f06 // vmin.f32 d18, d5, d6
5084 .long 0xf2453f06 // vmax.f32 d19, d5, d6
5085 .long 0xf3404d13 // vmul.f32 d20, d0, d3
5086 .long 0xf2615fa0 // vmin.f32 d21, d17, d16
5087 .long 0xf2642f22 // vmin.f32 d18, d4, d18
5088 .long 0xf2443f23 // vmax.f32 d19, d4, d19
5089 .long 0xf2416fa0 // vmax.f32 d22, d17, d16
5090 .long 0xf2645fa5 // vmin.f32 d21, d20, d21
5091 .long 0xf2632da2 // vsub.f32 d18, d19, d18
5092 .long 0xf2443fa6 // vmax.f32 d19, d20, d22
5093 .long 0xeddf6b76 // vldr d22, [pc, #472]
5094 .long 0xf2611da5 // vsub.f32 d17, d17, d21
5095 .long 0xf2644da5 // vsub.f32 d20, d20, d21
5096 .long 0xf3422d93 // vmul.f32 d18, d18, d3
5097 .long 0xf2238da5 // vsub.f32 d8, d19, d21
5098 .long 0xf2600da5 // vsub.f32 d16, d16, d21
5099 .long 0xf3f97508 // vceq.f32 d23, d8, #0
5100 .long 0xf26751b7 // vorr d21, d23, d23
5101 .long 0xf3029db1 // vmul.f32 d9, d18, d17
5102 .long 0xeddf1b69 // vldr d17, [pc, #420]
5103 .long 0xf302adb4 // vmul.f32 d10, d18, d20
5104 .long 0xf3453d31 // vmul.f32 d19, d5, d17
5105 .long 0xf302bdb0 // vmul.f32 d11, d18, d16
5106 .long 0xeddf2b67 // vldr d18, [pc, #412]
5107 .long 0xf2c00010 // vmov.i32 d16, #0
5108 .long 0xeec9caa8 // vdiv.f32 s25, s19, s17
5109 .long 0xee89ca08 // vdiv.f32 s24, s18, s16
5110 .long 0xeeca9aa8 // vdiv.f32 s19, s21, s17
5111 .long 0xee8a9a08 // vdiv.f32 s18, s20, s16
5112 .long 0xeecbaaa8 // vdiv.f32 s21, s23, s17
5113 .long 0xee8baa08 // vdiv.f32 s20, s22, s16
5114 .long 0xf3444d32 // vmul.f32 d20, d4, d18
5115 .long 0xf350519c // vbsl d21, d16, d12
5116 .long 0xf3468d36 // vmul.f32 d24, d6, d22
5117 .long 0xf3459db1 // vmul.f32 d25, d21, d17
5118 .long 0xf2443da3 // vadd.f32 d19, d20, d19
5119 .long 0xf26741b7 // vorr d20, d23, d23
5120 .long 0xf350719a // vbsl d23, d16, d10
5121 .long 0xf3504199 // vbsl d20, d16, d9
5122 .long 0xf2433da8 // vadd.f32 d19, d19, d24
5123 .long 0xf344adb2 // vmul.f32 d26, d20, d18
5124 .long 0xf3478db6 // vmul.f32 d24, d23, d22
5125 .long 0xf3433d93 // vmul.f32 d19, d19, d3
5126 .long 0xf24a9da9 // vadd.f32 d25, d26, d25
5127 .long 0xf2498da8 // vadd.f32 d24, d25, d24
5128 .long 0xf2633da8 // vsub.f32 d19, d19, d24
5129 .long 0xf2458da3 // vadd.f32 d24, d21, d19
5130 .long 0xf2445da3 // vadd.f32 d21, d20, d19
5131 .long 0xf2477da3 // vadd.f32 d23, d23, d19
5132 .long 0xf3481db1 // vmul.f32 d17, d24, d17
5133 .long 0xf3452db2 // vmul.f32 d18, d21, d18
5134 .long 0xf3473db6 // vmul.f32 d19, d23, d22
5135 .long 0xf2684fa7 // vmin.f32 d20, d24, d23
5136 .long 0xf2486fa7 // vmax.f32 d22, d24, d23
5137 .long 0xf2421da1 // vadd.f32 d17, d18, d17
5138 .long 0xf2456fa6 // vmax.f32 d22, d21, d22
5139 .long 0xf2432da1 // vadd.f32 d18, d19, d17
5140 .long 0xf2653fa4 // vmin.f32 d19, d21, d20
5141 .long 0xf3f944a3 // vcge.f32 d20, d19, #0
Mike Kleinbb338332017-05-04 12:42:52 -04005142 .long 0xf264a1b4 // vorr d26, d20, d20
Mike Klein08aa88d2017-05-12 12:59:24 -04005143 .long 0xf2671da2 // vsub.f32 d17, d23, d18
5144 .long 0xf2228da3 // vsub.f32 d8, d18, d19
5145 .long 0xf26431b4 // vorr d19, d20, d20
5146 .long 0xf3029db1 // vmul.f32 d9, d18, d17
5147 .long 0xf3431d17 // vmul.f32 d17, d3, d7
5148 .long 0xeec9aaa8 // vdiv.f32 s21, s19, s17
5149 .long 0xee89aa08 // vdiv.f32 s20, s18, s16
5150 .long 0xf2429d8a // vadd.f32 d25, d18, d10
5151 .long 0xf35731b9 // vbsl d19, d23, d25
5152 .long 0xf2619da2 // vsub.f32 d25, d17, d18
5153 .long 0xf2637da2 // vsub.f32 d23, d19, d18
5154 .long 0xf226ada2 // vsub.f32 d10, d22, d18
5155 .long 0xf309bdb7 // vmul.f32 d11, d25, d23
5156 .long 0xf2687da2 // vsub.f32 d23, d24, d18
5157 .long 0xeecb9aaa // vdiv.f32 s19, s23, s21
5158 .long 0xee8b9a0a // vdiv.f32 s18, s22, s20
5159 .long 0xf302bdb7 // vmul.f32 d11, d18, d23
5160 .long 0xeecbcaa8 // vdiv.f32 s25, s23, s17
5161 .long 0xee8bca08 // vdiv.f32 s24, s22, s16
5162 .long 0xf2427d8c // vadd.f32 d23, d18, d12
5163 .long 0xf358a1b7 // vbsl d26, d24, d23
5164 .long 0xf26a7da2 // vsub.f32 d23, d26, d18
5165 .long 0xf309bdb7 // vmul.f32 d11, d25, d23
5166 .long 0xf2657da2 // vsub.f32 d23, d21, d18
5167 .long 0xeecbcaaa // vdiv.f32 s25, s23, s21
5168 .long 0xee8bca0a // vdiv.f32 s24, s22, s20
5169 .long 0xf302bdb7 // vmul.f32 d11, d18, d23
5170 .long 0xf2428d8c // vadd.f32 d24, d18, d12
5171 .long 0xeecbdaa8 // vdiv.f32 s27, s23, s17
5172 .long 0xee8bda08 // vdiv.f32 s26, s22, s16
5173 .long 0xf2427d8d // vadd.f32 d23, d18, d13
5174 .long 0xf35541b7 // vbsl d20, d21, d23
5175 .long 0xf2c77f10 // vmov.f32 d23, #1
5176 .long 0xf2645da2 // vsub.f32 d21, d20, d18
5177 .long 0xf3098db5 // vmul.f32 d8, d25, d21
5178 .long 0xf3665ea1 // vcgt.f32 d21, d22, d17
5179 .long 0xf2679d87 // vsub.f32 d25, d23, d7
5180 .long 0xf2677d83 // vsub.f32 d23, d23, d3
5181 .long 0xeec8baaa // vdiv.f32 s23, s17, s21
5182 .long 0xee88ba0a // vdiv.f32 s22, s16, s20
5183 .long 0xf2426d8b // vadd.f32 d22, d18, d11
5184 .long 0xf265f1b5 // vorr d31, d21, d21
5185 .long 0xf2422d89 // vadd.f32 d18, d18, d9
5186 .long 0xf349bd90 // vmul.f32 d27, d25, d0
5187 .long 0xf356f1b4 // vbsl d31, d22, d20
5188 .long 0xf347cd94 // vmul.f32 d28, d23, d4
5189 .long 0xf349dd91 // vmul.f32 d29, d25, d1
5190 .long 0xf3494d92 // vmul.f32 d20, d25, d2
5191 .long 0xf3476d96 // vmul.f32 d22, d23, d6
5192 .long 0xf347ed95 // vmul.f32 d30, d23, d5
5193 .long 0xf26571b5 // vorr d23, d21, d21
5194 .long 0xf35251b3 // vbsl d21, d18, d19
5195 .long 0xf35871ba // vbsl d23, d24, d26
5196 .long 0xf2438d07 // vadd.f32 d24, d3, d7
5197 .long 0xf24c9dab // vadd.f32 d25, d28, d27
5198 .long 0xf24f2fa0 // vmax.f32 d18, d31, d16
5199 .long 0xf2477fa0 // vmax.f32 d23, d23, d16
5200 .long 0xf24e3dad // vadd.f32 d19, d30, d29
5201 .long 0xf2464da4 // vadd.f32 d20, d22, d20
5202 .long 0xf2450fa0 // vmax.f32 d16, d21, d16
5203 .long 0xf2283da1 // vsub.f32 d3, d24, d17
5204 .long 0xf2090da2 // vadd.f32 d0, d25, d18
5205 .long 0xf2031da7 // vadd.f32 d1, d19, d23
5206 .long 0xf2042da0 // vadd.f32 d2, d20, d16
5207 .long 0xecbd8b0c // vpop {d8-d13}
Mike Kleinbb338332017-05-04 12:42:52 -04005208 .long 0xe12fff13 // bx r3
5209 .long 0x3f170a3d // .word 0x3f170a3d
5210 .long 0x3f170a3d // .word 0x3f170a3d
5211 .long 0x3e99999a // .word 0x3e99999a
5212 .long 0x3e99999a // .word 0x3e99999a
5213 .long 0x3de147ae // .word 0x3de147ae
5214 .long 0x3de147ae // .word 0x3de147ae
5215
5216HIDDEN _sk_saturation_vfp4
5217.globl _sk_saturation_vfp4
5218FUNCTION(_sk_saturation_vfp4)
5219_sk_saturation_vfp4:
Mike Klein08aa88d2017-05-12 12:59:24 -04005220 .long 0xed2d8b0c // vpush {d8-d13}
5221 .long 0xf3430d16 // vmul.f32 d16, d3, d6
5222 .long 0xeddf7b82 // vldr d23, [pc, #520]
5223 .long 0xf3431d15 // vmul.f32 d17, d3, d5
Mike Kleinbb338332017-05-04 12:42:52 -04005224 .long 0xe4913004 // ldr r3, [r1], #4
Mike Klein08aa88d2017-05-12 12:59:24 -04005225 .long 0xf2612f02 // vmin.f32 d18, d1, d2
5226 .long 0xf2413f02 // vmax.f32 d19, d1, d2
5227 .long 0xf3434d14 // vmul.f32 d20, d3, d4
5228 .long 0xf2615fa0 // vmin.f32 d21, d17, d16
5229 .long 0xf2602f22 // vmin.f32 d18, d0, d18
5230 .long 0xf2403f23 // vmax.f32 d19, d0, d19
5231 .long 0xf2416fa0 // vmax.f32 d22, d17, d16
5232 .long 0xf2645fa5 // vmin.f32 d21, d20, d21
5233 .long 0xf3468d37 // vmul.f32 d24, d6, d23
5234 .long 0xf2632da2 // vsub.f32 d18, d19, d18
5235 .long 0xf2443fa6 // vmax.f32 d19, d20, d22
5236 .long 0xf2611da5 // vsub.f32 d17, d17, d21
5237 .long 0xf2644da5 // vsub.f32 d20, d20, d21
5238 .long 0xf3422d97 // vmul.f32 d18, d18, d7
5239 .long 0xf2238da5 // vsub.f32 d8, d19, d21
5240 .long 0xf2600da5 // vsub.f32 d16, d16, d21
5241 .long 0xf3f96508 // vceq.f32 d22, d8, #0
5242 .long 0xf26651b6 // vorr d21, d22, d22
5243 .long 0xf3029db1 // vmul.f32 d9, d18, d17
5244 .long 0xeddf1b68 // vldr d17, [pc, #416]
5245 .long 0xf302adb4 // vmul.f32 d10, d18, d20
5246 .long 0xf3453d31 // vmul.f32 d19, d5, d17
5247 .long 0xf302bdb0 // vmul.f32 d11, d18, d16
5248 .long 0xeddf2b66 // vldr d18, [pc, #408]
5249 .long 0xf2c00010 // vmov.i32 d16, #0
5250 .long 0xeec9caa8 // vdiv.f32 s25, s19, s17
5251 .long 0xee89ca08 // vdiv.f32 s24, s18, s16
5252 .long 0xeeca9aa8 // vdiv.f32 s19, s21, s17
5253 .long 0xee8a9a08 // vdiv.f32 s18, s20, s16
5254 .long 0xeecbaaa8 // vdiv.f32 s21, s23, s17
5255 .long 0xee8baa08 // vdiv.f32 s20, s22, s16
5256 .long 0xf3444d32 // vmul.f32 d20, d4, d18
5257 .long 0xf350519c // vbsl d21, d16, d12
5258 .long 0xf3459db1 // vmul.f32 d25, d21, d17
5259 .long 0xf2443da3 // vadd.f32 d19, d20, d19
5260 .long 0xf26641b6 // vorr d20, d22, d22
5261 .long 0xf350619a // vbsl d22, d16, d10
5262 .long 0xf3504199 // vbsl d20, d16, d9
5263 .long 0xf2433da8 // vadd.f32 d19, d19, d24
5264 .long 0xf344adb2 // vmul.f32 d26, d20, d18
5265 .long 0xf3468db7 // vmul.f32 d24, d22, d23
5266 .long 0xf3433d93 // vmul.f32 d19, d19, d3
5267 .long 0xf24a9da9 // vadd.f32 d25, d26, d25
5268 .long 0xf2498da8 // vadd.f32 d24, d25, d24
5269 .long 0xf2633da8 // vsub.f32 d19, d19, d24
5270 .long 0xf2458da3 // vadd.f32 d24, d21, d19
5271 .long 0xf2445da3 // vadd.f32 d21, d20, d19
5272 .long 0xf2466da3 // vadd.f32 d22, d22, d19
5273 .long 0xf3481db1 // vmul.f32 d17, d24, d17
5274 .long 0xf3452db2 // vmul.f32 d18, d21, d18
5275 .long 0xf3463db7 // vmul.f32 d19, d22, d23
5276 .long 0xf2684fa6 // vmin.f32 d20, d24, d22
5277 .long 0xf2487fa6 // vmax.f32 d23, d24, d22
5278 .long 0xf2421da1 // vadd.f32 d17, d18, d17
5279 .long 0xf2457fa7 // vmax.f32 d23, d21, d23
5280 .long 0xf2432da1 // vadd.f32 d18, d19, d17
5281 .long 0xf2653fa4 // vmin.f32 d19, d21, d20
5282 .long 0xf3f944a3 // vcge.f32 d20, d19, #0
Mike Kleinbb338332017-05-04 12:42:52 -04005283 .long 0xf264a1b4 // vorr d26, d20, d20
Mike Klein08aa88d2017-05-12 12:59:24 -04005284 .long 0xf2661da2 // vsub.f32 d17, d22, d18
5285 .long 0xf2228da3 // vsub.f32 d8, d18, d19
5286 .long 0xf26431b4 // vorr d19, d20, d20
5287 .long 0xf3029db1 // vmul.f32 d9, d18, d17
5288 .long 0xf3431d17 // vmul.f32 d17, d3, d7
5289 .long 0xeec9aaa8 // vdiv.f32 s21, s19, s17
5290 .long 0xee89aa08 // vdiv.f32 s20, s18, s16
5291 .long 0xf2429d8a // vadd.f32 d25, d18, d10
5292 .long 0xf35631b9 // vbsl d19, d22, d25
5293 .long 0xf2619da2 // vsub.f32 d25, d17, d18
5294 .long 0xf2636da2 // vsub.f32 d22, d19, d18
5295 .long 0xf227ada2 // vsub.f32 d10, d23, d18
5296 .long 0xf309bdb6 // vmul.f32 d11, d25, d22
5297 .long 0xf2686da2 // vsub.f32 d22, d24, d18
5298 .long 0xeecb9aaa // vdiv.f32 s19, s23, s21
5299 .long 0xee8b9a0a // vdiv.f32 s18, s22, s20
5300 .long 0xf302bdb6 // vmul.f32 d11, d18, d22
5301 .long 0xeecbcaa8 // vdiv.f32 s25, s23, s17
5302 .long 0xee8bca08 // vdiv.f32 s24, s22, s16
5303 .long 0xf2426d8c // vadd.f32 d22, d18, d12
5304 .long 0xf358a1b6 // vbsl d26, d24, d22
5305 .long 0xf26a6da2 // vsub.f32 d22, d26, d18
5306 .long 0xf309bdb6 // vmul.f32 d11, d25, d22
5307 .long 0xf2656da2 // vsub.f32 d22, d21, d18
5308 .long 0xeecbcaaa // vdiv.f32 s25, s23, s21
5309 .long 0xee8bca0a // vdiv.f32 s24, s22, s20
5310 .long 0xf302bdb6 // vmul.f32 d11, d18, d22
5311 .long 0xf2428d8c // vadd.f32 d24, d18, d12
5312 .long 0xeecbdaa8 // vdiv.f32 s27, s23, s17
5313 .long 0xee8bda08 // vdiv.f32 s26, s22, s16
5314 .long 0xf2426d8d // vadd.f32 d22, d18, d13
5315 .long 0xf35541b6 // vbsl d20, d21, d22
5316 .long 0xf2645da2 // vsub.f32 d21, d20, d18
5317 .long 0xf3098db5 // vmul.f32 d8, d25, d21
5318 .long 0xf3675ea1 // vcgt.f32 d21, d23, d17
5319 .long 0xf2c77f10 // vmov.f32 d23, #1
5320 .long 0xf2679d87 // vsub.f32 d25, d23, d7
5321 .long 0xeec8baaa // vdiv.f32 s23, s17, s21
5322 .long 0xee88ba0a // vdiv.f32 s22, s16, s20
5323 .long 0xf2677d83 // vsub.f32 d23, d23, d3
5324 .long 0xf2426d8b // vadd.f32 d22, d18, d11
5325 .long 0xf265f1b5 // vorr d31, d21, d21
5326 .long 0xf2422d89 // vadd.f32 d18, d18, d9
5327 .long 0xf349bd90 // vmul.f32 d27, d25, d0
5328 .long 0xf356f1b4 // vbsl d31, d22, d20
5329 .long 0xf347cd94 // vmul.f32 d28, d23, d4
5330 .long 0xf349dd91 // vmul.f32 d29, d25, d1
5331 .long 0xf3494d92 // vmul.f32 d20, d25, d2
5332 .long 0xf3476d96 // vmul.f32 d22, d23, d6
5333 .long 0xf347ed95 // vmul.f32 d30, d23, d5
5334 .long 0xf26571b5 // vorr d23, d21, d21
5335 .long 0xf35251b3 // vbsl d21, d18, d19
5336 .long 0xf35871ba // vbsl d23, d24, d26
5337 .long 0xf2438d07 // vadd.f32 d24, d3, d7
5338 .long 0xf24c9dab // vadd.f32 d25, d28, d27
5339 .long 0xf24f2fa0 // vmax.f32 d18, d31, d16
5340 .long 0xf2477fa0 // vmax.f32 d23, d23, d16
5341 .long 0xf24e3dad // vadd.f32 d19, d30, d29
5342 .long 0xf2464da4 // vadd.f32 d20, d22, d20
5343 .long 0xf2450fa0 // vmax.f32 d16, d21, d16
5344 .long 0xf2283da1 // vsub.f32 d3, d24, d17
5345 .long 0xf2090da2 // vadd.f32 d0, d25, d18
5346 .long 0xf2031da7 // vadd.f32 d1, d19, d23
5347 .long 0xf2042da0 // vadd.f32 d2, d20, d16
5348 .long 0xecbd8b0c // vpop {d8-d13}
Mike Kleinbb338332017-05-04 12:42:52 -04005349 .long 0xe12fff13 // bx r3
5350 .long 0x3f170a3d // .word 0x3f170a3d
5351 .long 0x3f170a3d // .word 0x3f170a3d
5352 .long 0x3e99999a // .word 0x3e99999a
5353 .long 0x3e99999a // .word 0x3e99999a
5354 .long 0x3de147ae // .word 0x3de147ae
5355 .long 0x3de147ae // .word 0x3de147ae
5356
5357HIDDEN _sk_color_vfp4
5358.globl _sk_color_vfp4
5359FUNCTION(_sk_color_vfp4)
5360_sk_color_vfp4:
Mike Klein08aa88d2017-05-12 12:59:24 -04005361 .long 0xed2d8b0e // vpush {d8-d14}
5362 .long 0xeddf0b63 // vldr d16, [pc, #396]
5363 .long 0xf3412d17 // vmul.f32 d18, d1, d7
5364 .long 0xeddf3b63 // vldr d19, [pc, #396]
5365 .long 0xf3401d17 // vmul.f32 d17, d0, d7
5366 .long 0xf3454d30 // vmul.f32 d20, d5, d16
5367 .long 0xeddf7b62 // vldr d23, [pc, #392]
5368 .long 0xf3446d33 // vmul.f32 d22, d4, d19
Mike Kleinbb338332017-05-04 12:42:52 -04005369 .long 0xe4913004 // ldr r3, [r1], #4
Mike Klein08aa88d2017-05-12 12:59:24 -04005370 .long 0xf3425d17 // vmul.f32 d21, d2, d7
5371 .long 0xf3428db0 // vmul.f32 d24, d18, d16
5372 .long 0xf3419db3 // vmul.f32 d25, d17, d19
5373 .long 0xf2464da4 // vadd.f32 d20, d22, d20
5374 .long 0xf346ad37 // vmul.f32 d26, d6, d23
5375 .long 0xf3456db7 // vmul.f32 d22, d21, d23
5376 .long 0xf2498da8 // vadd.f32 d24, d25, d24
5377 .long 0xf2c0e010 // vmov.i32 d30, #0
5378 .long 0xf2444daa // vadd.f32 d20, d20, d26
5379 .long 0xf2466da8 // vadd.f32 d22, d22, d24
5380 .long 0xf3444d93 // vmul.f32 d20, d20, d3
5381 .long 0xf2646da6 // vsub.f32 d22, d20, d22
5382 .long 0xf2414da6 // vadd.f32 d20, d17, d22
5383 .long 0xf2428da6 // vadd.f32 d24, d18, d22
Mike Kleinbb338332017-05-04 12:42:52 -04005384 .long 0xf2455da6 // vadd.f32 d21, d21, d22
Mike Klein08aa88d2017-05-12 12:59:24 -04005385 .long 0xf3441db3 // vmul.f32 d17, d20, d19
5386 .long 0xf3480db0 // vmul.f32 d16, d24, d16
5387 .long 0xf3452db7 // vmul.f32 d18, d21, d23
5388 .long 0xf2683fa5 // vmin.f32 d19, d24, d21
5389 .long 0xf2486fa5 // vmax.f32 d22, d24, d21
5390 .long 0xf2410da0 // vadd.f32 d16, d17, d16
5391 .long 0xf2421da0 // vadd.f32 d17, d18, d16
5392 .long 0xf2642fa3 // vmin.f32 d18, d20, d19
5393 .long 0xf3f934a2 // vcge.f32 d19, d18, #0
5394 .long 0xf26391b3 // vorr d25, d19, d19
5395 .long 0xf2650da1 // vsub.f32 d16, d21, d17
5396 .long 0xf2219da2 // vsub.f32 d9, d17, d18
5397 .long 0xf26321b3 // vorr d18, d19, d19
5398 .long 0xf3018db0 // vmul.f32 d8, d17, d16
5399 .long 0xf3430d17 // vmul.f32 d16, d3, d7
5400 .long 0xeec8aaa9 // vdiv.f32 s21, s17, s19
5401 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
5402 .long 0xf2417d8a // vadd.f32 d23, d17, d10
5403 .long 0xf35521b7 // vbsl d18, d21, d23
5404 .long 0xf2445fa6 // vmax.f32 d21, d20, d22
5405 .long 0xf2626da1 // vsub.f32 d22, d18, d17
5406 .long 0xf2607da1 // vsub.f32 d23, d16, d17
5407 .long 0xf225ada1 // vsub.f32 d10, d21, d17
5408 .long 0xf307bdb6 // vmul.f32 d11, d23, d22
5409 .long 0xf2686da1 // vsub.f32 d22, d24, d17
5410 .long 0xeecb8aaa // vdiv.f32 s17, s23, s21
5411 .long 0xf301cdb6 // vmul.f32 d12, d17, d22
5412 .long 0xee8b8a0a // vdiv.f32 s16, s22, s20
5413 .long 0xeeccdaa9 // vdiv.f32 s27, s25, s19
5414 .long 0xee8cda09 // vdiv.f32 s26, s24, s18
5415 .long 0xf2416d8d // vadd.f32 d22, d17, d13
5416 .long 0xf35891b6 // vbsl d25, d24, d22
5417 .long 0xf2696da1 // vsub.f32 d22, d25, d17
5418 .long 0xf307ddb6 // vmul.f32 d13, d23, d22
5419 .long 0xf2646da1 // vsub.f32 d22, d20, d17
5420 .long 0xeecdcaaa // vdiv.f32 s25, s27, s21
5421 .long 0xee8dca0a // vdiv.f32 s24, s26, s20
5422 .long 0xf301ddb6 // vmul.f32 d13, d17, d22
5423 .long 0xf2418d8c // vadd.f32 d24, d17, d12
5424 .long 0xeecdeaa9 // vdiv.f32 s29, s27, s19
5425 .long 0xee8dea09 // vdiv.f32 s28, s26, s18
5426 .long 0xf2416d8e // vadd.f32 d22, d17, d14
5427 .long 0xf35431b6 // vbsl d19, d20, d22
Mike Kleinbb338332017-05-04 12:42:52 -04005428 .long 0xf2634da1 // vsub.f32 d20, d19, d17
Mike Klein08aa88d2017-05-12 12:59:24 -04005429 .long 0xf3079db4 // vmul.f32 d9, d23, d20
5430 .long 0xf3654ea0 // vcgt.f32 d20, d21, d16
5431 .long 0xf2c75f10 // vmov.f32 d21, #1
5432 .long 0xf2657d83 // vsub.f32 d23, d21, d3
5433 .long 0xeec9daaa // vdiv.f32 s27, s19, s21
5434 .long 0xee89da0a // vdiv.f32 s26, s18, s20
5435 .long 0xf2655d87 // vsub.f32 d21, d21, d7
5436 .long 0xf2416d8d // vadd.f32 d22, d17, d13
5437 .long 0xf264f1b4 // vorr d31, d20, d20
5438 .long 0xf2411d88 // vadd.f32 d17, d17, d8
5439 .long 0xf345ad90 // vmul.f32 d26, d21, d0
5440 .long 0xf356f1b3 // vbsl d31, d22, d19
5441 .long 0xf26461b4 // vorr d22, d20, d20
5442 .long 0xf347bd94 // vmul.f32 d27, d23, d4
5443 .long 0xf345cd91 // vmul.f32 d28, d21, d1
5444 .long 0xf3453d92 // vmul.f32 d19, d21, d2
5445 .long 0xf3475d96 // vmul.f32 d21, d23, d6
5446 .long 0xf347dd95 // vmul.f32 d29, d23, d5
5447 .long 0xf35141b2 // vbsl d20, d17, d18
5448 .long 0xf35861b9 // vbsl d22, d24, d25
Mike Kleinbb338332017-05-04 12:42:52 -04005449 .long 0xf2437d07 // vadd.f32 d23, d3, d7
Mike Klein08aa88d2017-05-12 12:59:24 -04005450 .long 0xf24b8daa // vadd.f32 d24, d27, d26
5451 .long 0xf24f1fae // vmax.f32 d17, d31, d30
5452 .long 0xf24d2dac // vadd.f32 d18, d29, d28
5453 .long 0xf2466fae // vmax.f32 d22, d22, d30
5454 .long 0xf2453da3 // vadd.f32 d19, d21, d19
5455 .long 0xf2444fae // vmax.f32 d20, d20, d30
5456 .long 0xf2273da0 // vsub.f32 d3, d23, d16
5457 .long 0xf2080da1 // vadd.f32 d0, d24, d17
5458 .long 0xf2021da6 // vadd.f32 d1, d18, d22
5459 .long 0xf2032da4 // vadd.f32 d2, d19, d20
5460 .long 0xecbd8b0e // vpop {d8-d14}
Mike Kleinbb338332017-05-04 12:42:52 -04005461 .long 0xe12fff13 // bx r3
Mike Klein08aa88d2017-05-12 12:59:24 -04005462 .long 0xe320f000 // nop {0}
Mike Kleinbb338332017-05-04 12:42:52 -04005463 .long 0x3f170a3d // .word 0x3f170a3d
5464 .long 0x3f170a3d // .word 0x3f170a3d
5465 .long 0x3e99999a // .word 0x3e99999a
5466 .long 0x3e99999a // .word 0x3e99999a
5467 .long 0x3de147ae // .word 0x3de147ae
5468 .long 0x3de147ae // .word 0x3de147ae
5469
5470HIDDEN _sk_luminosity_vfp4
5471.globl _sk_luminosity_vfp4
5472FUNCTION(_sk_luminosity_vfp4)
5473_sk_luminosity_vfp4:
Mike Klein08aa88d2017-05-12 12:59:24 -04005474 .long 0xed2d8b0e // vpush {d8-d14}
5475 .long 0xeddf0b63 // vldr d16, [pc, #396]
5476 .long 0xf3432d15 // vmul.f32 d18, d3, d5
5477 .long 0xeddf3b63 // vldr d19, [pc, #396]
5478 .long 0xf3431d14 // vmul.f32 d17, d3, d4
5479 .long 0xf3414d30 // vmul.f32 d20, d1, d16
5480 .long 0xeddf7b62 // vldr d23, [pc, #392]
5481 .long 0xf3406d33 // vmul.f32 d22, d0, d19
Mike Kleinbb338332017-05-04 12:42:52 -04005482 .long 0xe4913004 // ldr r3, [r1], #4
Mike Klein08aa88d2017-05-12 12:59:24 -04005483 .long 0xf3435d16 // vmul.f32 d21, d3, d6
5484 .long 0xf3428db0 // vmul.f32 d24, d18, d16
5485 .long 0xf3419db3 // vmul.f32 d25, d17, d19
5486 .long 0xf2464da4 // vadd.f32 d20, d22, d20
5487 .long 0xf342ad37 // vmul.f32 d26, d2, d23
5488 .long 0xf3456db7 // vmul.f32 d22, d21, d23
5489 .long 0xf2498da8 // vadd.f32 d24, d25, d24
5490 .long 0xf2c0e010 // vmov.i32 d30, #0
5491 .long 0xf2444daa // vadd.f32 d20, d20, d26
5492 .long 0xf2486da6 // vadd.f32 d22, d24, d22
5493 .long 0xf3444d97 // vmul.f32 d20, d20, d7
5494 .long 0xf2646da6 // vsub.f32 d22, d20, d22
5495 .long 0xf2414da6 // vadd.f32 d20, d17, d22
5496 .long 0xf2428da6 // vadd.f32 d24, d18, d22
Mike Kleinbb338332017-05-04 12:42:52 -04005497 .long 0xf2455da6 // vadd.f32 d21, d21, d22
Mike Klein08aa88d2017-05-12 12:59:24 -04005498 .long 0xf3441db3 // vmul.f32 d17, d20, d19
5499 .long 0xf3480db0 // vmul.f32 d16, d24, d16
5500 .long 0xf3452db7 // vmul.f32 d18, d21, d23
5501 .long 0xf2683fa5 // vmin.f32 d19, d24, d21
5502 .long 0xf2486fa5 // vmax.f32 d22, d24, d21
5503 .long 0xf2410da0 // vadd.f32 d16, d17, d16
5504 .long 0xf2421da0 // vadd.f32 d17, d18, d16
5505 .long 0xf2642fa3 // vmin.f32 d18, d20, d19
5506 .long 0xf3f934a2 // vcge.f32 d19, d18, #0
5507 .long 0xf26391b3 // vorr d25, d19, d19
5508 .long 0xf2650da1 // vsub.f32 d16, d21, d17
5509 .long 0xf2219da2 // vsub.f32 d9, d17, d18
5510 .long 0xf26321b3 // vorr d18, d19, d19
5511 .long 0xf3018db0 // vmul.f32 d8, d17, d16
5512 .long 0xf3430d17 // vmul.f32 d16, d3, d7
5513 .long 0xeec8aaa9 // vdiv.f32 s21, s17, s19
5514 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
5515 .long 0xf2417d8a // vadd.f32 d23, d17, d10
5516 .long 0xf35521b7 // vbsl d18, d21, d23
5517 .long 0xf2445fa6 // vmax.f32 d21, d20, d22
5518 .long 0xf2626da1 // vsub.f32 d22, d18, d17
5519 .long 0xf2607da1 // vsub.f32 d23, d16, d17
5520 .long 0xf225ada1 // vsub.f32 d10, d21, d17
5521 .long 0xf307bdb6 // vmul.f32 d11, d23, d22
5522 .long 0xf2686da1 // vsub.f32 d22, d24, d17
5523 .long 0xeecb8aaa // vdiv.f32 s17, s23, s21
5524 .long 0xf301cdb6 // vmul.f32 d12, d17, d22
5525 .long 0xee8b8a0a // vdiv.f32 s16, s22, s20
5526 .long 0xeeccdaa9 // vdiv.f32 s27, s25, s19
5527 .long 0xee8cda09 // vdiv.f32 s26, s24, s18
5528 .long 0xf2416d8d // vadd.f32 d22, d17, d13
5529 .long 0xf35891b6 // vbsl d25, d24, d22
5530 .long 0xf2696da1 // vsub.f32 d22, d25, d17
5531 .long 0xf307ddb6 // vmul.f32 d13, d23, d22
5532 .long 0xf2646da1 // vsub.f32 d22, d20, d17
5533 .long 0xeecdcaaa // vdiv.f32 s25, s27, s21
5534 .long 0xee8dca0a // vdiv.f32 s24, s26, s20
5535 .long 0xf301ddb6 // vmul.f32 d13, d17, d22
5536 .long 0xf2418d8c // vadd.f32 d24, d17, d12
5537 .long 0xeecdeaa9 // vdiv.f32 s29, s27, s19
5538 .long 0xee8dea09 // vdiv.f32 s28, s26, s18
5539 .long 0xf2416d8e // vadd.f32 d22, d17, d14
5540 .long 0xf35431b6 // vbsl d19, d20, d22
Mike Kleinbb338332017-05-04 12:42:52 -04005541 .long 0xf2634da1 // vsub.f32 d20, d19, d17
Mike Klein08aa88d2017-05-12 12:59:24 -04005542 .long 0xf3079db4 // vmul.f32 d9, d23, d20
5543 .long 0xf3654ea0 // vcgt.f32 d20, d21, d16
5544 .long 0xf2c75f10 // vmov.f32 d21, #1
5545 .long 0xf2657d83 // vsub.f32 d23, d21, d3
5546 .long 0xeec9daaa // vdiv.f32 s27, s19, s21
5547 .long 0xee89da0a // vdiv.f32 s26, s18, s20
5548 .long 0xf2655d87 // vsub.f32 d21, d21, d7
5549 .long 0xf2416d8d // vadd.f32 d22, d17, d13
5550 .long 0xf264f1b4 // vorr d31, d20, d20
5551 .long 0xf2411d88 // vadd.f32 d17, d17, d8
5552 .long 0xf345ad90 // vmul.f32 d26, d21, d0
5553 .long 0xf356f1b3 // vbsl d31, d22, d19
5554 .long 0xf26461b4 // vorr d22, d20, d20
5555 .long 0xf347bd94 // vmul.f32 d27, d23, d4
5556 .long 0xf345cd91 // vmul.f32 d28, d21, d1
5557 .long 0xf3453d92 // vmul.f32 d19, d21, d2
5558 .long 0xf3475d96 // vmul.f32 d21, d23, d6
5559 .long 0xf347dd95 // vmul.f32 d29, d23, d5
5560 .long 0xf35141b2 // vbsl d20, d17, d18
5561 .long 0xf35861b9 // vbsl d22, d24, d25
Mike Kleinbb338332017-05-04 12:42:52 -04005562 .long 0xf2437d07 // vadd.f32 d23, d3, d7
Mike Klein08aa88d2017-05-12 12:59:24 -04005563 .long 0xf24b8daa // vadd.f32 d24, d27, d26
5564 .long 0xf24f1fae // vmax.f32 d17, d31, d30
5565 .long 0xf24d2dac // vadd.f32 d18, d29, d28
5566 .long 0xf2466fae // vmax.f32 d22, d22, d30
5567 .long 0xf2453da3 // vadd.f32 d19, d21, d19
5568 .long 0xf2444fae // vmax.f32 d20, d20, d30
5569 .long 0xf2273da0 // vsub.f32 d3, d23, d16
5570 .long 0xf2080da1 // vadd.f32 d0, d24, d17
5571 .long 0xf2021da6 // vadd.f32 d1, d18, d22
5572 .long 0xf2032da4 // vadd.f32 d2, d19, d20
5573 .long 0xecbd8b0e // vpop {d8-d14}
Mike Kleinbb338332017-05-04 12:42:52 -04005574 .long 0xe12fff13 // bx r3
Mike Klein08aa88d2017-05-12 12:59:24 -04005575 .long 0xe320f000 // nop {0}
Mike Kleinbb338332017-05-04 12:42:52 -04005576 .long 0x3f170a3d // .word 0x3f170a3d
5577 .long 0x3f170a3d // .word 0x3f170a3d
5578 .long 0x3e99999a // .word 0x3e99999a
5579 .long 0x3e99999a // .word 0x3e99999a
5580 .long 0x3de147ae // .word 0x3de147ae
5581 .long 0x3de147ae // .word 0x3de147ae
5582
Mike Klein7c4af542017-03-29 18:21:14 -04005583HIDDEN _sk_clamp_0_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005584.globl _sk_clamp_0_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005585FUNCTION(_sk_clamp_0_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005586_sk_clamp_0_vfp4:
5587 .long 0xf2c00010 // vmov.i32 d16, #0
5588 .long 0xe4913004 // ldr r3, [r1], #4
5589 .long 0xf2000f20 // vmax.f32 d0, d0, d16
5590 .long 0xf2011f20 // vmax.f32 d1, d1, d16
5591 .long 0xf2022f20 // vmax.f32 d2, d2, d16
5592 .long 0xf2033f20 // vmax.f32 d3, d3, d16
5593 .long 0xe12fff13 // bx r3
5594
Mike Klein7c4af542017-03-29 18:21:14 -04005595HIDDEN _sk_clamp_1_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005596.globl _sk_clamp_1_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005597FUNCTION(_sk_clamp_1_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005598_sk_clamp_1_vfp4:
5599 .long 0xf2c70f10 // vmov.f32 d16, #1
5600 .long 0xe4913004 // ldr r3, [r1], #4
5601 .long 0xf2200f20 // vmin.f32 d0, d0, d16
5602 .long 0xf2211f20 // vmin.f32 d1, d1, d16
5603 .long 0xf2222f20 // vmin.f32 d2, d2, d16
5604 .long 0xf2233f20 // vmin.f32 d3, d3, d16
5605 .long 0xe12fff13 // bx r3
5606
Mike Klein7c4af542017-03-29 18:21:14 -04005607HIDDEN _sk_clamp_a_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005608.globl _sk_clamp_a_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005609FUNCTION(_sk_clamp_a_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005610_sk_clamp_a_vfp4:
5611 .long 0xf2c70f10 // vmov.f32 d16, #1
5612 .long 0xe4913004 // ldr r3, [r1], #4
5613 .long 0xf2233f20 // vmin.f32 d3, d3, d16
5614 .long 0xf2200f03 // vmin.f32 d0, d0, d3
5615 .long 0xf2211f03 // vmin.f32 d1, d1, d3
5616 .long 0xf2222f03 // vmin.f32 d2, d2, d3
5617 .long 0xe12fff13 // bx r3
5618
Mike Klein7c4af542017-03-29 18:21:14 -04005619HIDDEN _sk_set_rgb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005620.globl _sk_set_rgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005621FUNCTION(_sk_set_rgb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005622_sk_set_rgb_vfp4:
5623 .long 0xe92d4800 // push {fp, lr}
5624 .long 0xe8911008 // ldm r1, {r3, ip}
5625 .long 0xe2811008 // add r1, r1, #8
5626 .long 0xe283e008 // add lr, r3, #8
5627 .long 0xf4a30c9d // vld1.32 {d0[]}, [r3 :32]!
5628 .long 0xf4ae2c9f // vld1.32 {d2[]}, [lr :32]
5629 .long 0xf4a31c9f // vld1.32 {d1[]}, [r3 :32]
5630 .long 0xe8bd4800 // pop {fp, lr}
5631 .long 0xe12fff1c // bx ip
5632
Mike Klein7c4af542017-03-29 18:21:14 -04005633HIDDEN _sk_swap_rb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005634.globl _sk_swap_rb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005635FUNCTION(_sk_swap_rb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005636_sk_swap_rb_vfp4:
5637 .long 0xeef00b40 // vmov.f64 d16, d0
5638 .long 0xe4913004 // ldr r3, [r1], #4
5639 .long 0xeeb00b42 // vmov.f64 d0, d2
5640 .long 0xeeb02b60 // vmov.f64 d2, d16
5641 .long 0xe12fff13 // bx r3
5642
Mike Klein7c4af542017-03-29 18:21:14 -04005643HIDDEN _sk_swap_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005644.globl _sk_swap_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005645FUNCTION(_sk_swap_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005646_sk_swap_vfp4:
5647 .long 0xeef00b43 // vmov.f64 d16, d3
5648 .long 0xe4913004 // ldr r3, [r1], #4
5649 .long 0xeef01b42 // vmov.f64 d17, d2
5650 .long 0xeef02b41 // vmov.f64 d18, d1
5651 .long 0xeef03b40 // vmov.f64 d19, d0
5652 .long 0xeeb00b44 // vmov.f64 d0, d4
5653 .long 0xeeb01b45 // vmov.f64 d1, d5
5654 .long 0xeeb02b46 // vmov.f64 d2, d6
5655 .long 0xeeb03b47 // vmov.f64 d3, d7
5656 .long 0xeeb04b63 // vmov.f64 d4, d19
5657 .long 0xeeb05b62 // vmov.f64 d5, d18
5658 .long 0xeeb06b61 // vmov.f64 d6, d17
5659 .long 0xeeb07b60 // vmov.f64 d7, d16
5660 .long 0xe12fff13 // bx r3
5661
Mike Klein7c4af542017-03-29 18:21:14 -04005662HIDDEN _sk_move_src_dst_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005663.globl _sk_move_src_dst_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005664FUNCTION(_sk_move_src_dst_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005665_sk_move_src_dst_vfp4:
5666 .long 0xeeb04b40 // vmov.f64 d4, d0
5667 .long 0xe4913004 // ldr r3, [r1], #4
5668 .long 0xeeb05b41 // vmov.f64 d5, d1
5669 .long 0xeeb06b42 // vmov.f64 d6, d2
5670 .long 0xeeb07b43 // vmov.f64 d7, d3
5671 .long 0xe12fff13 // bx r3
5672
Mike Klein7c4af542017-03-29 18:21:14 -04005673HIDDEN _sk_move_dst_src_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005674.globl _sk_move_dst_src_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005675FUNCTION(_sk_move_dst_src_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005676_sk_move_dst_src_vfp4:
5677 .long 0xeeb00b44 // vmov.f64 d0, d4
5678 .long 0xe4913004 // ldr r3, [r1], #4
5679 .long 0xeeb01b45 // vmov.f64 d1, d5
5680 .long 0xeeb02b46 // vmov.f64 d2, d6
5681 .long 0xeeb03b47 // vmov.f64 d3, d7
5682 .long 0xe12fff13 // bx r3
5683
Mike Klein7c4af542017-03-29 18:21:14 -04005684HIDDEN _sk_premul_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005685.globl _sk_premul_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005686FUNCTION(_sk_premul_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005687_sk_premul_vfp4:
5688 .long 0xf3000d13 // vmul.f32 d0, d0, d3
5689 .long 0xe4913004 // ldr r3, [r1], #4
5690 .long 0xf3011d13 // vmul.f32 d1, d1, d3
5691 .long 0xf3022d13 // vmul.f32 d2, d2, d3
5692 .long 0xe12fff13 // bx r3
5693
Mike Klein7c4af542017-03-29 18:21:14 -04005694HIDDEN _sk_unpremul_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005695.globl _sk_unpremul_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005696FUNCTION(_sk_unpremul_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005697_sk_unpremul_vfp4:
5698 .long 0xed2d8b04 // vpush {d8-d9}
5699 .long 0xeeb78a00 // vmov.f32 s16, #112
5700 .long 0xf3f91503 // vceq.f32 d17, d3, #0
5701 .long 0xf2c00010 // vmov.i32 d16, #0
5702 .long 0xe4913004 // ldr r3, [r1], #4
5703 .long 0xeec89a23 // vdiv.f32 s19, s16, s7
5704 .long 0xee889a03 // vdiv.f32 s18, s16, s6
5705 .long 0xf3501199 // vbsl d17, d16, d9
5706 .long 0xf3010d90 // vmul.f32 d0, d17, d0
5707 .long 0xf3011d91 // vmul.f32 d1, d17, d1
5708 .long 0xf3012d92 // vmul.f32 d2, d17, d2
5709 .long 0xecbd8b04 // vpop {d8-d9}
5710 .long 0xe12fff13 // bx r3
Mike Klein61b84162017-03-31 11:48:14 -04005711 .long 0xe320f000 // nop {0}
Mike Kleind7e06ae2017-03-29 16:33:06 -04005712
Mike Klein7c4af542017-03-29 18:21:14 -04005713HIDDEN _sk_from_srgb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005714.globl _sk_from_srgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005715FUNCTION(_sk_from_srgb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005716_sk_from_srgb_vfp4:
5717 .long 0xeddf3b20 // vldr d19, [pc, #128]
5718 .long 0xf3408d10 // vmul.f32 d24, d0, d0
5719 .long 0xeddf0b1c // vldr d16, [pc, #112]
5720 .long 0xf26341b3 // vorr d20, d19, d19
5721 .long 0xf26351b3 // vorr d21, d19, d19
5722 .long 0xeddf9b1f // vldr d25, [pc, #124]
5723 .long 0xf2404c30 // vfma.f32 d20, d0, d16
5724 .long 0xeddf2b1b // vldr d18, [pc, #108]
5725 .long 0xf2415c30 // vfma.f32 d21, d1, d16
5726 .long 0xeddfcb1d // vldr d28, [pc, #116]
5727 .long 0xf2423c30 // vfma.f32 d19, d2, d16
5728 .long 0xe4913004 // ldr r3, [r1], #4
5729 .long 0xf3426d12 // vmul.f32 d22, d2, d2
5730 .long 0xf3417d11 // vmul.f32 d23, d1, d1
5731 .long 0xf3620e80 // vcgt.f32 d16, d18, d0
5732 .long 0xf3621e81 // vcgt.f32 d17, d18, d1
5733 .long 0xf341ad39 // vmul.f32 d26, d1, d25
5734 .long 0xf342bd39 // vmul.f32 d27, d2, d25
5735 .long 0xf3622e82 // vcgt.f32 d18, d18, d2
5736 .long 0xf3409d39 // vmul.f32 d25, d0, d25
5737 .long 0xf26cd1bc // vorr d29, d28, d28
5738 .long 0xf248dcb4 // vfma.f32 d29, d24, d20
5739 .long 0xf26c41bc // vorr d20, d28, d28
5740 .long 0xf2474cb5 // vfma.f32 d20, d23, d21
5741 .long 0xf246ccb3 // vfma.f32 d28, d22, d19
5742 .long 0xf35901bd // vbsl d16, d25, d29
5743 .long 0xf35a11b4 // vbsl d17, d26, d20
5744 .long 0xf35b21bc // vbsl d18, d27, d28
5745 .long 0xf22001b0 // vorr d0, d16, d16
5746 .long 0xf22111b1 // vorr d1, d17, d17
5747 .long 0xf22221b2 // vorr d2, d18, d18
5748 .long 0xe12fff13 // bx r3
5749 .long 0x3e99999a // .word 0x3e99999a
5750 .long 0x3e99999a // .word 0x3e99999a
5751 .long 0x3f328f5c // .word 0x3f328f5c
5752 .long 0x3f328f5c // .word 0x3f328f5c
5753 .long 0x3d6147ae // .word 0x3d6147ae
5754 .long 0x3d6147ae // .word 0x3d6147ae
5755 .long 0x3d9e8391 // .word 0x3d9e8391
5756 .long 0x3d9e8391 // .word 0x3d9e8391
5757 .long 0x3b23d70a // .word 0x3b23d70a
5758 .long 0x3b23d70a // .word 0x3b23d70a
5759
Mike Klein7c4af542017-03-29 18:21:14 -04005760HIDDEN _sk_to_srgb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005761.globl _sk_to_srgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005762FUNCTION(_sk_to_srgb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005763_sk_to_srgb_vfp4:
Mike Kleinf45e3d72017-05-15 17:36:59 -04005764 .long 0xf3fb0580 // vrsqrte.f32 d16, d0
5765 .long 0xeddf9b3b // vldr d25, [pc, #236]
Mike Kleind7e06ae2017-03-29 16:33:06 -04005766 .long 0xf3fb1581 // vrsqrte.f32 d17, d1
Mike Kleinf45e3d72017-05-15 17:36:59 -04005767 .long 0xeddf7b37 // vldr d23, [pc, #220]
5768 .long 0xf3fb2582 // vrsqrte.f32 d18, d2
5769 .long 0xe4913004 // ldr r3, [r1], #4
5770 .long 0xf269a1b9 // vorr d26, d25, d25
5771 .long 0xf269c1b9 // vorr d28, d25, d25
Mike Kleind7e06ae2017-03-29 16:33:06 -04005772 .long 0xf3403db0 // vmul.f32 d19, d16, d16
5773 .long 0xf3414db1 // vmul.f32 d20, d17, d17
5774 .long 0xf3425db2 // vmul.f32 d21, d18, d18
Mike Kleinf45e3d72017-05-15 17:36:59 -04005775 .long 0xf2603f33 // vrsqrts.f32 d19, d0, d19
Mike Kleind7e06ae2017-03-29 16:33:06 -04005776 .long 0xf2614f34 // vrsqrts.f32 d20, d1, d20
Mike Kleinf45e3d72017-05-15 17:36:59 -04005777 .long 0xf2625f35 // vrsqrts.f32 d21, d2, d21
Mike Kleind7e06ae2017-03-29 16:33:06 -04005778 .long 0xf3400db3 // vmul.f32 d16, d16, d19
Mike Kleinf45e3d72017-05-15 17:36:59 -04005779 .long 0xeddf3b29 // vldr d19, [pc, #164]
Mike Kleind7e06ae2017-03-29 16:33:06 -04005780 .long 0xf3411db4 // vmul.f32 d17, d17, d20
5781 .long 0xf3422db5 // vmul.f32 d18, d18, d21
Mike Kleinf45e3d72017-05-15 17:36:59 -04005782 .long 0xf2404da3 // vadd.f32 d20, d16, d19
5783 .long 0xf2415da3 // vadd.f32 d21, d17, d19
5784 .long 0xf2423da3 // vadd.f32 d19, d18, d19
5785 .long 0xf240acb7 // vfma.f32 d26, d16, d23
5786 .long 0xf3fb6524 // vrecpe.f32 d22, d20
5787 .long 0xf3fb8525 // vrecpe.f32 d24, d21
5788 .long 0xf3fbb523 // vrecpe.f32 d27, d19
5789 .long 0xf241ccb7 // vfma.f32 d28, d17, d23
5790 .long 0xf2429cb7 // vfma.f32 d25, d18, d23
5791 .long 0xeddf7b23 // vldr d23, [pc, #140]
5792 .long 0xf2455fb8 // vrecps.f32 d21, d21, d24
5793 .long 0xf2444fb6 // vrecps.f32 d20, d20, d22
5794 .long 0xf2433fbb // vrecps.f32 d19, d19, d27
5795 .long 0xf267d1b7 // vorr d29, d23, d23
5796 .long 0xf240dcba // vfma.f32 d29, d16, d26
5797 .long 0xf267a1b7 // vorr d26, d23, d23
5798 .long 0xf241acbc // vfma.f32 d26, d17, d28
5799 .long 0xf2427cb9 // vfma.f32 d23, d18, d25
5800 .long 0xeddf2b1e // vldr d18, [pc, #120]
Mike Kleind7e06ae2017-03-29 16:33:06 -04005801 .long 0xf3620e80 // vcgt.f32 d16, d18, d0
Mike Kleinf45e3d72017-05-15 17:36:59 -04005802 .long 0xf3485db5 // vmul.f32 d21, d24, d21
5803 .long 0xeddf8b19 // vldr d24, [pc, #100]
5804 .long 0xf3464db4 // vmul.f32 d20, d22, d20
5805 .long 0xf34b3db3 // vmul.f32 d19, d27, d19
Mike Kleind7e06ae2017-03-29 16:33:06 -04005806 .long 0xf3621e81 // vcgt.f32 d17, d18, d1
Mike Kleinf45e3d72017-05-15 17:36:59 -04005807 .long 0xf3406d38 // vmul.f32 d22, d0, d24
5808 .long 0xf3419d38 // vmul.f32 d25, d1, d24
Mike Kleind7e06ae2017-03-29 16:33:06 -04005809 .long 0xf3622e82 // vcgt.f32 d18, d18, d2
Mike Kleinf45e3d72017-05-15 17:36:59 -04005810 .long 0xf3428d38 // vmul.f32 d24, d2, d24
5811 .long 0xf34d4db4 // vmul.f32 d20, d29, d20
5812 .long 0xf34a5db5 // vmul.f32 d21, d26, d21
5813 .long 0xf3473db3 // vmul.f32 d19, d23, d19
5814 .long 0xf35601b4 // vbsl d16, d22, d20
5815 .long 0xf35911b5 // vbsl d17, d25, d21
5816 .long 0xf35821b3 // vbsl d18, d24, d19
Mike Kleind7e06ae2017-03-29 16:33:06 -04005817 .long 0xf22001b0 // vorr d0, d16, d16
5818 .long 0xf22111b1 // vorr d1, d17, d17
5819 .long 0xf22221b2 // vorr d2, d18, d18
5820 .long 0xe12fff13 // bx r3
Mike Kleinf45e3d72017-05-15 17:36:59 -04005821 .long 0xe320f000 // nop {0}
5822 .long 0x3e149e8d // .word 0x3e149e8d
5823 .long 0x3e149e8d // .word 0x3e149e8d
5824 .long 0xbb20d739 // .word 0xbb20d739
5825 .long 0xbb20d739 // .word 0xbb20d739
5826 .long 0x3c629fba // .word 0x3c629fba
5827 .long 0x3c629fba // .word 0x3c629fba
5828 .long 0x3f91140d // .word 0x3f91140d
5829 .long 0x3f91140d // .word 0x3f91140d
5830 .long 0x414eb852 // .word 0x414eb852
5831 .long 0x414eb852 // .word 0x414eb852
5832 .long 0x3b98b1a8 // .word 0x3b98b1a8
5833 .long 0x3b98b1a8 // .word 0x3b98b1a8
Mike Kleind7e06ae2017-03-29 16:33:06 -04005834
Mike Kleindb1cbcb2017-04-12 08:35:41 -04005835HIDDEN _sk_rgb_to_hsl_vfp4
5836.globl _sk_rgb_to_hsl_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005837FUNCTION(_sk_rgb_to_hsl_vfp4)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04005838_sk_rgb_to_hsl_vfp4:
5839 .long 0xed2d8b08 // vpush {d8-d11}
5840 .long 0xf2401f01 // vmax.f32 d17, d0, d1
5841 .long 0xeddf9b2c // vldr d25, [pc, #176]
5842 .long 0xf2600f01 // vmin.f32 d16, d0, d1
5843 .long 0xe4913004 // ldr r3, [r1], #4
5844 .long 0xeeb78a00 // vmov.f32 s16, #112
5845 .long 0xf2c3461f // vmov.i32 d20, #1056964608
5846 .long 0xf2411f82 // vmax.f32 d17, d17, d2
5847 .long 0xf2602f82 // vmin.f32 d18, d16, d2
5848 .long 0xf2c45610 // vmov.i32 d21, #1073741824
5849 .long 0xf2607d01 // vsub.f32 d23, d0, d1
5850 .long 0xf2656da1 // vsub.f32 d22, d21, d17
5851 .long 0xf221ada2 // vsub.f32 d10, d17, d18
5852 .long 0xf2413da2 // vadd.f32 d19, d17, d18
5853 .long 0xf2c08010 // vmov.i32 d24, #0
5854 .long 0xf2666da2 // vsub.f32 d22, d22, d18
5855 .long 0xf241ae80 // vceq.f32 d26, d17, d0
5856 .long 0xeec8ba2a // vdiv.f32 s23, s16, s21
5857 .long 0xf3430db4 // vmul.f32 d16, d19, d20
5858 .long 0xee88ba0a // vdiv.f32 s22, s16, s20
5859 .long 0xf3209ea4 // vcgt.f32 d9, d16, d20
5860 .long 0xf2614d02 // vsub.f32 d20, d1, d2
5861 .long 0xf3477d9b // vmul.f32 d23, d23, d11
5862 .long 0xf31691b3 // vbsl d9, d22, d19
5863 .long 0xf2623d00 // vsub.f32 d19, d2, d0
5864 .long 0xf3626e01 // vcgt.f32 d22, d2, d1
5865 .long 0xeeca8aa9 // vdiv.f32 s17, s21, s19
5866 .long 0xee8a8a09 // vdiv.f32 s16, s20, s18
5867 .long 0xf3433d9b // vmul.f32 d19, d19, d11
5868 .long 0xf3444d9b // vmul.f32 d20, d20, d11
5869 .long 0xf35961b8 // vbsl d22, d25, d24
5870 .long 0xf2419e81 // vceq.f32 d25, d17, d1
5871 .long 0xf2011ea2 // vceq.f32 d1, d17, d18
5872 .long 0xf2433da5 // vadd.f32 d19, d19, d21
5873 .long 0xf2c15f10 // vmov.f32 d21, #4
5874 .long 0xf2464da4 // vadd.f32 d20, d22, d20
5875 .long 0xf2471da5 // vadd.f32 d17, d23, d21
5876 .long 0xf35391b1 // vbsl d25, d19, d17
5877 .long 0xeddf1b0a // vldr d17, [pc, #40]
5878 .long 0xf2612111 // vorr d18, d1, d1
5879 .long 0xf354a1b9 // vbsl d26, d20, d25
5880 .long 0xf35821ba // vbsl d18, d24, d26
5881 .long 0xf3181198 // vbsl d1, d24, d8
5882 .long 0xf3020db1 // vmul.f32 d0, d18, d17
5883 .long 0xf22021b0 // vorr d2, d16, d16
5884 .long 0xecbd8b08 // vpop {d8-d11}
5885 .long 0xe12fff13 // bx r3
5886 .long 0xe320f000 // nop {0}
5887 .long 0x40c00000 // .word 0x40c00000
5888 .long 0x40c00000 // .word 0x40c00000
5889 .long 0x3e2aaaab // .word 0x3e2aaaab
5890 .long 0x3e2aaaab // .word 0x3e2aaaab
5891
5892HIDDEN _sk_hsl_to_rgb_vfp4
5893.globl _sk_hsl_to_rgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005894FUNCTION(_sk_hsl_to_rgb_vfp4)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04005895_sk_hsl_to_rgb_vfp4:
Mike Kleinb3665f02017-05-01 14:56:04 -04005896 .long 0xed2d8b02 // vpush {d8}
Mike Klein879a08a2017-05-01 15:34:01 -04005897 .long 0xeddf0b51 // vldr d16, [pc, #324]
5898 .long 0xf3fb2700 // vcvt.s32.f32 d18, d0
Mike Klein5664e652017-05-01 16:01:38 -04005899 .long 0xeddf1b51 // vldr d17, [pc, #324]
Mike Klein879a08a2017-05-01 15:34:01 -04005900 .long 0xf2400d20 // vadd.f32 d16, d0, d16
Mike Klein879a08a2017-05-01 15:34:01 -04005901 .long 0xf2401d21 // vadd.f32 d17, d0, d17
5902 .long 0xeddfab50 // vldr d26, [pc, #320]
Mike Klein5664e652017-05-01 16:01:38 -04005903 .long 0xf3416d12 // vmul.f32 d22, d1, d2
Mike Kleinb3665f02017-05-01 14:56:04 -04005904 .long 0xe4913004 // ldr r3, [r1], #4
Mike Klein5664e652017-05-01 16:01:38 -04005905 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5906 .long 0xf3fb3720 // vcvt.s32.f32 d19, d16
Mike Klein879a08a2017-05-01 15:34:01 -04005907 .long 0xf3fb4721 // vcvt.s32.f32 d20, d17
Mike Klein5664e652017-05-01 16:01:38 -04005908 .long 0xf2c3761f // vmov.i32 d23, #1056964608
Mike Klein879a08a2017-05-01 15:34:01 -04005909 .long 0xf3625e80 // vcgt.f32 d21, d18, d0
5910 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
5911 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
Mike Klein5664e652017-05-01 16:01:38 -04005912 .long 0xf2c08010 // vmov.i32 d24, #0
5913 .long 0xf35a51b8 // vbsl d21, d26, d24
Mike Klein879a08a2017-05-01 15:34:01 -04005914 .long 0xf3639ea0 // vcgt.f32 d25, d19, d16
5915 .long 0xf364bea1 // vcgt.f32 d27, d20, d17
Mike Klein5664e652017-05-01 16:01:38 -04005916 .long 0xf342ce27 // vcge.f32 d28, d2, d23
5917 .long 0xf261dd26 // vsub.f32 d29, d1, d22
5918 .long 0xf35a91b8 // vbsl d25, d26, d24
5919 .long 0xf35ab1b8 // vbsl d27, d26, d24
Mike Klein879a08a2017-05-01 15:34:01 -04005920 .long 0xf2622da5 // vsub.f32 d18, d18, d21
Mike Klein879a08a2017-05-01 15:34:01 -04005921 .long 0xf2633da9 // vsub.f32 d19, d19, d25
Mike Klein879a08a2017-05-01 15:34:01 -04005922 .long 0xf2644dab // vsub.f32 d20, d20, d27
Mike Klein5664e652017-05-01 16:01:38 -04005923 .long 0xf35dc1b6 // vbsl d28, d29, d22
5924 .long 0xeddfdb3c // vldr d29, [pc, #240]
Mike Klein879a08a2017-05-01 15:34:01 -04005925 .long 0xf2602d22 // vsub.f32 d18, d0, d18
Mike Klein879a08a2017-05-01 15:34:01 -04005926 .long 0xf2600da3 // vsub.f32 d16, d16, d19
Mike Klein5664e652017-05-01 16:01:38 -04005927 .long 0xf2c15f18 // vmov.f32 d21, #6
5928 .long 0xf2426d02 // vadd.f32 d22, d2, d2
5929 .long 0xf24c8d82 // vadd.f32 d24, d28, d2
Mike Klein879a08a2017-05-01 15:34:01 -04005930 .long 0xf2611da4 // vsub.f32 d17, d17, d20
5931 .long 0xf3423db5 // vmul.f32 d19, d18, d21
Mike Klein879a08a2017-05-01 15:34:01 -04005932 .long 0xf3409db5 // vmul.f32 d25, d16, d21
Mike Klein5664e652017-05-01 16:01:38 -04005933 .long 0xf2664da8 // vsub.f32 d20, d22, d24
Mike Klein879a08a2017-05-01 15:34:01 -04005934 .long 0xf3415db5 // vmul.f32 d21, d17, d21
Mike Klein5664e652017-05-01 16:01:38 -04005935 .long 0xf2c16f10 // vmov.f32 d22, #4
5936 .long 0xf342eead // vcge.f32 d30, d18, d29
5937 .long 0xf266ada3 // vsub.f32 d26, d22, d19
Mike Klein879a08a2017-05-01 15:34:01 -04005938 .long 0xf268bda4 // vsub.f32 d27, d24, d20
Mike Klein5664e652017-05-01 16:01:38 -04005939 .long 0xf266cda9 // vsub.f32 d28, d22, d25
5940 .long 0xf2666da5 // vsub.f32 d22, d22, d21
5941 .long 0xf340fead // vcge.f32 d31, d16, d29
Mike Klein879a08a2017-05-01 15:34:01 -04005942 .long 0xf34badba // vmul.f32 d26, d27, d26
Mike Klein5664e652017-05-01 16:01:38 -04005943 .long 0xf341dead // vcge.f32 d29, d17, d29
Mike Klein879a08a2017-05-01 15:34:01 -04005944 .long 0xf34bcdbc // vmul.f32 d28, d27, d28
Mike Klein5664e652017-05-01 16:01:38 -04005945 .long 0xf34b6db6 // vmul.f32 d22, d27, d22
Mike Klein879a08a2017-05-01 15:34:01 -04005946 .long 0xf244adaa // vadd.f32 d26, d20, d26
Mike Klein5664e652017-05-01 16:01:38 -04005947 .long 0xf3020ea7 // vcge.f32 d0, d18, d23
5948 .long 0xf3008ea7 // vcge.f32 d8, d16, d23
5949 .long 0xf354e1ba // vbsl d30, d20, d26
5950 .long 0xeddfab24 // vldr d26, [pc, #144]
Mike Klein879a08a2017-05-01 15:34:01 -04005951 .long 0xf244cdac // vadd.f32 d28, d20, d28
Mike Klein5664e652017-05-01 16:01:38 -04005952 .long 0xf2446da6 // vadd.f32 d22, d20, d22
5953 .long 0xf34b3db3 // vmul.f32 d19, d27, d19
5954 .long 0xf34b9db9 // vmul.f32 d25, d27, d25
5955 .long 0xf3417ea7 // vcge.f32 d23, d17, d23
5956 .long 0xf354d1b6 // vbsl d29, d20, d22
5957 .long 0xf354f1bc // vbsl d31, d20, d28
5958 .long 0xf3406eaa // vcge.f32 d22, d16, d26
5959 .long 0xf3422eaa // vcge.f32 d18, d18, d26
5960 .long 0xf34b5db5 // vmul.f32 d21, d27, d21
5961 .long 0xf3411eaa // vcge.f32 d17, d17, d26
5962 .long 0xf31e01b8 // vbsl d0, d30, d24
5963 .long 0xf31f81b8 // vbsl d8, d31, d24
5964 .long 0xf2440da3 // vadd.f32 d16, d20, d19
5965 .long 0xf2443da9 // vadd.f32 d19, d20, d25
5966 .long 0xf3502130 // vbsl d18, d0, d16
Mike Klein879a08a2017-05-01 15:34:01 -04005967 .long 0xf3f90501 // vceq.f32 d16, d1, #0
Mike Klein5664e652017-05-01 16:01:38 -04005968 .long 0xf35d71b8 // vbsl d23, d29, d24
5969 .long 0xf3586133 // vbsl d22, d8, d19
Mike Klein879a08a2017-05-01 15:34:01 -04005970 .long 0xf22011b0 // vorr d1, d16, d16
Mike Klein5664e652017-05-01 16:01:38 -04005971 .long 0xf2444da5 // vadd.f32 d20, d20, d21
Mike Klein879a08a2017-05-01 15:34:01 -04005972 .long 0xf22001b0 // vorr d0, d16, d16
Mike Klein5664e652017-05-01 16:01:38 -04005973 .long 0xf3520136 // vbsl d16, d2, d22
5974 .long 0xf35711b4 // vbsl d17, d23, d20
Mike Klein879a08a2017-05-01 15:34:01 -04005975 .long 0xf3121132 // vbsl d1, d2, d18
5976 .long 0xf3120131 // vbsl d0, d2, d17
Mike Kleindb1cbcb2017-04-12 08:35:41 -04005977 .long 0xf22021b0 // vorr d2, d16, d16
Mike Kleinb3665f02017-05-01 14:56:04 -04005978 .long 0xecbd8b02 // vpop {d8}
Mike Kleindb1cbcb2017-04-12 08:35:41 -04005979 .long 0xe12fff13 // bx r3
Mike Kleindb1cbcb2017-04-12 08:35:41 -04005980 .long 0xbeaaaaab // .word 0xbeaaaaab
5981 .long 0xbeaaaaab // .word 0xbeaaaaab
5982 .long 0x3eaaaaab // .word 0x3eaaaaab
5983 .long 0x3eaaaaab // .word 0x3eaaaaab
Mike Klein879a08a2017-05-01 15:34:01 -04005984 .long 0x3f800000 // .word 0x3f800000
5985 .long 0x3f800000 // .word 0x3f800000
Mike Kleindb1cbcb2017-04-12 08:35:41 -04005986 .long 0x3f2aaaab // .word 0x3f2aaaab
5987 .long 0x3f2aaaab // .word 0x3f2aaaab
5988 .long 0x3e2aaaab // .word 0x3e2aaaab
5989 .long 0x3e2aaaab // .word 0x3e2aaaab
Mike Klein7125ac62017-04-05 15:27:22 -04005990
Mike Klein7c4af542017-03-29 18:21:14 -04005991HIDDEN _sk_scale_1_float_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005992.globl _sk_scale_1_float_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005993FUNCTION(_sk_scale_1_float_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005994_sk_scale_1_float_vfp4:
5995 .long 0xe8911008 // ldm r1, {r3, ip}
5996 .long 0xe2811008 // add r1, r1, #8
5997 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5998 .long 0xf3000d90 // vmul.f32 d0, d16, d0
5999 .long 0xf3001d91 // vmul.f32 d1, d16, d1
6000 .long 0xf3002d92 // vmul.f32 d2, d16, d2
6001 .long 0xf3003d93 // vmul.f32 d3, d16, d3
6002 .long 0xe12fff1c // bx ip
6003
Mike Klein7c4af542017-03-29 18:21:14 -04006004HIDDEN _sk_scale_u8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006005.globl _sk_scale_u8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006006FUNCTION(_sk_scale_u8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006007_sk_scale_u8_vfp4:
6008 .long 0xe24dd004 // sub sp, sp, #4
6009 .long 0xe8911008 // ldm r1, {r3, ip}
6010 .long 0xe2811008 // add r1, r1, #8
6011 .long 0xe5933000 // ldr r3, [r3]
6012 .long 0xe0833000 // add r3, r3, r0
6013 .long 0xe1d330b0 // ldrh r3, [r3]
6014 .long 0xe1cd30b0 // strh r3, [sp]
6015 .long 0xe1a0300d // mov r3, sp
6016 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
6017 .long 0xf3c80a30 // vmovl.u8 q8, d16
6018 .long 0xf3d00a30 // vmovl.u16 q8, d16
6019 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
6020 .long 0xeddf1b06 // vldr d17, [pc, #24]
6021 .long 0xf3400db1 // vmul.f32 d16, d16, d17
6022 .long 0xf3000d90 // vmul.f32 d0, d16, d0
6023 .long 0xf3001d91 // vmul.f32 d1, d16, d1
6024 .long 0xf3002d92 // vmul.f32 d2, d16, d2
6025 .long 0xf3003d93 // vmul.f32 d3, d16, d3
6026 .long 0xe28dd004 // add sp, sp, #4
6027 .long 0xe12fff1c // bx ip
6028 .long 0x3b808081 // .word 0x3b808081
6029 .long 0x3b808081 // .word 0x3b808081
6030
Mike Klein7c4af542017-03-29 18:21:14 -04006031HIDDEN _sk_lerp_1_float_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006032.globl _sk_lerp_1_float_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006033FUNCTION(_sk_lerp_1_float_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006034_sk_lerp_1_float_vfp4:
6035 .long 0xe8911008 // ldm r1, {r3, ip}
6036 .long 0xf2600d04 // vsub.f32 d16, d0, d4
6037 .long 0xf2611d05 // vsub.f32 d17, d1, d5
6038 .long 0xf2622d06 // vsub.f32 d18, d2, d6
6039 .long 0xe2811008 // add r1, r1, #8
6040 .long 0xf2633d07 // vsub.f32 d19, d3, d7
6041 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6042 .long 0xf2240114 // vorr d0, d4, d4
6043 .long 0xf2251115 // vorr d1, d5, d5
6044 .long 0xf2262116 // vorr d2, d6, d6
6045 .long 0xf2273117 // vorr d3, d7, d7
6046 .long 0xf2000cb4 // vfma.f32 d0, d16, d20
6047 .long 0xf2011cb4 // vfma.f32 d1, d17, d20
6048 .long 0xf2022cb4 // vfma.f32 d2, d18, d20
6049 .long 0xf2033cb4 // vfma.f32 d3, d19, d20
6050 .long 0xe12fff1c // bx ip
6051
Mike Klein7c4af542017-03-29 18:21:14 -04006052HIDDEN _sk_lerp_u8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006053.globl _sk_lerp_u8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006054FUNCTION(_sk_lerp_u8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006055_sk_lerp_u8_vfp4:
6056 .long 0xe24dd004 // sub sp, sp, #4
6057 .long 0xe8911008 // ldm r1, {r3, ip}
6058 .long 0xf2602d04 // vsub.f32 d18, d0, d4
6059 .long 0xf2623d06 // vsub.f32 d19, d2, d6
6060 .long 0xf2634d07 // vsub.f32 d20, d3, d7
6061 .long 0xe2811008 // add r1, r1, #8
6062 .long 0xe5933000 // ldr r3, [r3]
6063 .long 0xf2240114 // vorr d0, d4, d4
6064 .long 0xf2262116 // vorr d2, d6, d6
6065 .long 0xe0833000 // add r3, r3, r0
6066 .long 0xf2273117 // vorr d3, d7, d7
6067 .long 0xe1d330b0 // ldrh r3, [r3]
6068 .long 0xe1cd30b0 // strh r3, [sp]
6069 .long 0xe1a0300d // mov r3, sp
6070 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
6071 .long 0xf3c80a30 // vmovl.u8 q8, d16
6072 .long 0xf3d00a30 // vmovl.u16 q8, d16
6073 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
6074 .long 0xeddf1b08 // vldr d17, [pc, #32]
6075 .long 0xf3400db1 // vmul.f32 d16, d16, d17
6076 .long 0xf2611d05 // vsub.f32 d17, d1, d5
6077 .long 0xf2251115 // vorr d1, d5, d5
6078 .long 0xf2020cb0 // vfma.f32 d0, d18, d16
6079 .long 0xf2011cb0 // vfma.f32 d1, d17, d16
6080 .long 0xf2032cb0 // vfma.f32 d2, d19, d16
6081 .long 0xf2043cb0 // vfma.f32 d3, d20, d16
6082 .long 0xe28dd004 // add sp, sp, #4
6083 .long 0xe12fff1c // bx ip
6084 .long 0x3b808081 // .word 0x3b808081
6085 .long 0x3b808081 // .word 0x3b808081
6086
Mike Klein7c4af542017-03-29 18:21:14 -04006087HIDDEN _sk_lerp_565_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006088.globl _sk_lerp_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006089FUNCTION(_sk_lerp_565_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006090_sk_lerp_565_vfp4:
6091 .long 0xe24dd004 // sub sp, sp, #4
6092 .long 0xe8911008 // ldm r1, {r3, ip}
bungeman6f9f2592017-05-10 13:50:12 -04006093 .long 0xf2c1201f // vmov.i32 d18, #31
6094 .long 0xf3c71218 // vmov.i32 d17, #63488
6095 .long 0xeddf3b28 // vldr d19, [pc, #160]
6096 .long 0xf2679117 // vorr d25, d7, d7
Mike Kleind7e06ae2017-03-29 16:33:06 -04006097 .long 0xe5933000 // ldr r3, [r3]
bungeman6f9f2592017-05-10 13:50:12 -04006098 .long 0xf2617d05 // vsub.f32 d23, d1, d5
Mike Kleind7e06ae2017-03-29 16:33:06 -04006099 .long 0xf2251115 // vorr d1, d5, d5
bungeman6f9f2592017-05-10 13:50:12 -04006100 .long 0xe2811008 // add r1, r1, #8
6101 .long 0xf2606d04 // vsub.f32 d22, d0, d4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006102 .long 0xe7933080 // ldr r3, [r3, r0, lsl #1]
bungeman6f9f2592017-05-10 13:50:12 -04006103 .long 0xf2628d06 // vsub.f32 d24, d2, d6
6104 .long 0xf2240114 // vorr d0, d4, d4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006105 .long 0xe58d3000 // str r3, [sp]
6106 .long 0xe1a0300d // mov r3, sp
6107 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
6108 .long 0xe3a03e7e // mov r3, #2016
bungeman6f9f2592017-05-10 13:50:12 -04006109 .long 0xf2262116 // vorr d2, d6, d6
Mike Kleind7e06ae2017-03-29 16:33:06 -04006110 .long 0xf3d04a30 // vmovl.u16 q10, d16
6111 .long 0xee803b90 // vdup.32 d16, r3
6112 .long 0xf24421b2 // vand d18, d20, d18
Mike Kleind7e06ae2017-03-29 16:33:06 -04006113 .long 0xf24401b0 // vand d16, d20, d16
Mike Kleind7e06ae2017-03-29 16:33:06 -04006114 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6115 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
bungeman6f9f2592017-05-10 13:50:12 -04006116 .long 0xf24411b1 // vand d17, d20, d17
6117 .long 0xeddf4b14 // vldr d20, [pc, #80]
6118 .long 0xf2635d07 // vsub.f32 d21, d3, d7
Mike Kleind7e06ae2017-03-29 16:33:06 -04006119 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
bungeman6f9f2592017-05-10 13:50:12 -04006120 .long 0xf3422db3 // vmul.f32 d18, d18, d19
6121 .long 0xeddf3b12 // vldr d19, [pc, #72]
6122 .long 0xf3400db4 // vmul.f32 d16, d16, d20
6123 .long 0xf2674117 // vorr d20, d7, d7
6124 .long 0xf3411db3 // vmul.f32 d17, d17, d19
6125 .long 0xf2673117 // vorr d19, d7, d7
6126 .long 0xf2453cb2 // vfma.f32 d19, d21, d18
6127 .long 0xf2454cb0 // vfma.f32 d20, d21, d16
6128 .long 0xf2459cb1 // vfma.f32 d25, d21, d17
6129 .long 0xf2071cb0 // vfma.f32 d1, d23, d16
6130 .long 0xf2060cb1 // vfma.f32 d0, d22, d17
6131 .long 0xf2082cb2 // vfma.f32 d2, d24, d18
6132 .long 0xf2440fa3 // vmax.f32 d16, d20, d19
6133 .long 0xf2093fa0 // vmax.f32 d3, d25, d16
Mike Kleind7e06ae2017-03-29 16:33:06 -04006134 .long 0xe28dd004 // add sp, sp, #4
6135 .long 0xe12fff1c // bx ip
6136 .long 0xe320f000 // nop {0}
Mike Kleind7e06ae2017-03-29 16:33:06 -04006137 .long 0x3d042108 // .word 0x3d042108
6138 .long 0x3d042108 // .word 0x3d042108
bungeman6f9f2592017-05-10 13:50:12 -04006139 .long 0x3a020821 // .word 0x3a020821
6140 .long 0x3a020821 // .word 0x3a020821
6141 .long 0x37842108 // .word 0x37842108
6142 .long 0x37842108 // .word 0x37842108
Mike Kleind7e06ae2017-03-29 16:33:06 -04006143
Mike Klein7c4af542017-03-29 18:21:14 -04006144HIDDEN _sk_load_tables_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006145.globl _sk_load_tables_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006146FUNCTION(_sk_load_tables_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006147_sk_load_tables_vfp4:
6148 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
6149 .long 0xe8911008 // ldm r1, {r3, ip}
6150 .long 0xf3c7001f // vmov.i32 d16, #255
6151 .long 0xe2811008 // add r1, r1, #8
6152 .long 0xe593e000 // ldr lr, [r3]
6153 .long 0xe99300b0 // ldmib r3, {r4, r5, r7}
6154 .long 0xe08e3100 // add r3, lr, r0, lsl #2
6155 .long 0xedd31b00 // vldr d17, [r3]
6156 .long 0xf24121b0 // vand d18, d17, d16
6157 .long 0xf3f83031 // vshr.u32 d19, d17, #8
6158 .long 0xee323b90 // vmov.32 r3, d18[1]
6159 .long 0xee126b90 // vmov.32 r6, d18[0]
6160 .long 0xf3f02031 // vshr.u32 d18, d17, #16
6161 .long 0xf24221b0 // vand d18, d18, d16
6162 .long 0xf24301b0 // vand d16, d19, d16
6163 .long 0xe0843103 // add r3, r4, r3, lsl #2
6164 .long 0xedd30a00 // vldr s1, [r3]
6165 .long 0xe0843106 // add r3, r4, r6, lsl #2
6166 .long 0xee326b90 // vmov.32 r6, d18[1]
6167 .long 0xed930a00 // vldr s0, [r3]
6168 .long 0xee303b90 // vmov.32 r3, d16[1]
6169 .long 0xee104b90 // vmov.32 r4, d16[0]
6170 .long 0xf3e80031 // vshr.u32 d16, d17, #24
6171 .long 0xeddf1b0d // vldr d17, [pc, #52]
6172 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6173 .long 0xf3003db1 // vmul.f32 d3, d16, d17
6174 .long 0xe087e106 // add lr, r7, r6, lsl #2
6175 .long 0xee126b90 // vmov.32 r6, d18[0]
6176 .long 0xe0853103 // add r3, r5, r3, lsl #2
6177 .long 0xedde2a00 // vldr s5, [lr]
6178 .long 0xedd31a00 // vldr s3, [r3]
6179 .long 0xe0853104 // add r3, r5, r4, lsl #2
6180 .long 0xed931a00 // vldr s2, [r3]
6181 .long 0xe0873106 // add r3, r7, r6, lsl #2
6182 .long 0xed932a00 // vldr s4, [r3]
6183 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
6184 .long 0xe12fff1c // bx ip
6185 .long 0xe320f000 // nop {0}
6186 .long 0x3b808081 // .word 0x3b808081
6187 .long 0x3b808081 // .word 0x3b808081
6188
Mike Kleina3735cd2017-04-17 13:19:05 -04006189HIDDEN _sk_load_tables_u16_be_vfp4
6190.globl _sk_load_tables_u16_be_vfp4
6191FUNCTION(_sk_load_tables_u16_be_vfp4)
6192_sk_load_tables_u16_be_vfp4:
6193 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
6194 .long 0xe8911008 // ldm r1, {r3, ip}
6195 .long 0xf3c7801f // vmov.i32 d24, #255
6196 .long 0xe2811008 // add r1, r1, #8
6197 .long 0xe5936000 // ldr r6, [r3]
6198 .long 0xe9934030 // ldmib r3, {r4, r5, lr}
6199 .long 0xe0863180 // add r3, r6, r0, lsl #3
6200 .long 0xf4e3070d // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]!
6201 .long 0xf4e3074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3]
6202 .long 0xee903bb0 // vmov.u16 r3, d16[0]
6203 .long 0xee926bb0 // vmov.u16 r6, d18[0]
6204 .long 0xee043b90 // vmov.32 d20[0], r3
6205 .long 0xee913bb0 // vmov.u16 r3, d17[0]
6206 .long 0xee056b90 // vmov.32 d21[0], r6
6207 .long 0xee906bf0 // vmov.u16 r6, d16[1]
6208 .long 0xee063b90 // vmov.32 d22[0], r3
6209 .long 0xee933bb0 // vmov.u16 r3, d19[0]
6210 .long 0xee246b90 // vmov.32 d20[1], r6
6211 .long 0xee926bf0 // vmov.u16 r6, d18[1]
6212 .long 0xf24441b8 // vand d20, d20, d24
6213 .long 0xee073b90 // vmov.32 d23[0], r3
6214 .long 0xee913bf0 // vmov.u16 r3, d17[1]
6215 .long 0xee256b90 // vmov.32 d21[1], r6
6216 .long 0xee936bf0 // vmov.u16 r6, d19[1]
6217 .long 0xf24501b8 // vand d16, d21, d24
6218 .long 0xee107b90 // vmov.32 r7, d16[0]
6219 .long 0xee263b90 // vmov.32 d22[1], r3
6220 .long 0xee343b90 // vmov.32 r3, d20[1]
6221 .long 0xf24611b8 // vand d17, d22, d24
6222 .long 0xee276b90 // vmov.32 d23[1], r6
6223 .long 0xee146b90 // vmov.32 r6, d20[0]
6224 .long 0xf2e82537 // vshl.s32 d18, d23, #8
6225 .long 0xe0843103 // add r3, r4, r3, lsl #2
6226 .long 0xedd30a00 // vldr s1, [r3]
6227 .long 0xe0843106 // add r3, r4, r6, lsl #2
6228 .long 0xee304b90 // vmov.32 r4, d16[1]
6229 .long 0xee116b90 // vmov.32 r6, d17[0]
6230 .long 0xf3c70c1f // vmov.i32 d16, #65535
6231 .long 0xed930a00 // vldr s0, [r3]
6232 .long 0xee313b90 // vmov.32 r3, d17[1]
6233 .long 0xf24711b0 // vand d17, d23, d16
6234 .long 0xf3f81031 // vshr.u32 d17, d17, #8
6235 .long 0xf26211b1 // vorr d17, d18, d17
6236 .long 0xf24101b0 // vand d16, d17, d16
6237 .long 0xeddf1b0c // vldr d17, [pc, #48]
6238 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
6239 .long 0xf3003db1 // vmul.f32 d3, d16, d17
6240 .long 0xe08e4104 // add r4, lr, r4, lsl #2
6241 .long 0xedd42a00 // vldr s5, [r4]
6242 .long 0xe0853103 // add r3, r5, r3, lsl #2
6243 .long 0xedd31a00 // vldr s3, [r3]
6244 .long 0xe0853106 // add r3, r5, r6, lsl #2
6245 .long 0xed931a00 // vldr s2, [r3]
6246 .long 0xe08e3107 // add r3, lr, r7, lsl #2
6247 .long 0xed932a00 // vldr s4, [r3]
6248 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
6249 .long 0xe12fff1c // bx ip
6250 .long 0xe320f000 // nop {0}
6251 .long 0x37800080 // .word 0x37800080
6252 .long 0x37800080 // .word 0x37800080
6253
6254HIDDEN _sk_load_tables_rgb_u16_be_vfp4
6255.globl _sk_load_tables_rgb_u16_be_vfp4
6256FUNCTION(_sk_load_tables_rgb_u16_be_vfp4)
6257_sk_load_tables_rgb_u16_be_vfp4:
6258 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
6259 .long 0xe8911008 // ldm r1, {r3, ip}
6260 .long 0xf3c7601f // vmov.i32 d22, #255
6261 .long 0xe2811008 // add r1, r1, #8
6262 .long 0xf2873f10 // vmov.f32 d3, #1
6263 .long 0xe5936000 // ldr r6, [r3]
6264 .long 0xe9934030 // ldmib r3, {r4, r5, lr}
6265 .long 0xe0803080 // add r3, r0, r0, lsl #1
6266 .long 0xe0863083 // add r3, r6, r3, lsl #1
6267 .long 0xf4e3060d // vld3.16 {d16[0],d17[0],d18[0]}, [r3]!
6268 .long 0xf4e3064f // vld3.16 {d16[1],d17[1],d18[1]}, [r3]
6269 .long 0xee903bb0 // vmov.u16 r3, d16[0]
6270 .long 0xee926bb0 // vmov.u16 r6, d18[0]
6271 .long 0xee043b90 // vmov.32 d20[0], r3
6272 .long 0xee903bf0 // vmov.u16 r3, d16[1]
6273 .long 0xee056b90 // vmov.32 d21[0], r6
6274 .long 0xee916bb0 // vmov.u16 r6, d17[0]
6275 .long 0xee243b90 // vmov.32 d20[1], r3
6276 .long 0xee923bf0 // vmov.u16 r3, d18[1]
6277 .long 0xf24441b6 // vand d20, d20, d22
6278 .long 0xee076b90 // vmov.32 d23[0], r6
6279 .long 0xee916bf0 // vmov.u16 r6, d17[1]
6280 .long 0xee253b90 // vmov.32 d21[1], r3
6281 .long 0xee343b90 // vmov.32 r3, d20[1]
6282 .long 0xf24501b6 // vand d16, d21, d22
6283 .long 0xee276b90 // vmov.32 d23[1], r6
6284 .long 0xee146b90 // vmov.32 r6, d20[0]
6285 .long 0xf24711b6 // vand d17, d23, d22
6286 .long 0xee107b90 // vmov.32 r7, d16[0]
6287 .long 0xe0843103 // add r3, r4, r3, lsl #2
6288 .long 0xedd30a00 // vldr s1, [r3]
6289 .long 0xe0843106 // add r3, r4, r6, lsl #2
6290 .long 0xee304b90 // vmov.32 r4, d16[1]
6291 .long 0xee116b90 // vmov.32 r6, d17[0]
6292 .long 0xed930a00 // vldr s0, [r3]
6293 .long 0xee313b90 // vmov.32 r3, d17[1]
6294 .long 0xe08e4104 // add r4, lr, r4, lsl #2
6295 .long 0xedd42a00 // vldr s5, [r4]
6296 .long 0xe0853103 // add r3, r5, r3, lsl #2
6297 .long 0xedd31a00 // vldr s3, [r3]
6298 .long 0xe0853106 // add r3, r5, r6, lsl #2
6299 .long 0xed931a00 // vldr s2, [r3]
6300 .long 0xe08e3107 // add r3, lr, r7, lsl #2
6301 .long 0xed932a00 // vldr s4, [r3]
6302 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
6303 .long 0xe12fff1c // bx ip
6304
Mike Klein40de6da2017-04-07 13:09:29 -04006305HIDDEN _sk_byte_tables_vfp4
6306.globl _sk_byte_tables_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006307FUNCTION(_sk_byte_tables_vfp4)
Mike Klein40de6da2017-04-07 13:09:29 -04006308_sk_byte_tables_vfp4:
6309 .long 0xe92d4bf0 // push {r4, r5, r6, r7, r8, r9, fp, lr}
6310 .long 0xeddf0b37 // vldr d16, [pc, #220]
6311 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6312 .long 0xf2c3361f // vmov.i32 d19, #1056964608
6313 .long 0xe8911010 // ldm r1, {r4, ip}
6314 .long 0xf2422c30 // vfma.f32 d18, d2, d16
6315 .long 0xf2413c30 // vfma.f32 d19, d1, d16
6316 .long 0xe2811008 // add r1, r1, #8
6317 .long 0xf2c3461f // vmov.i32 d20, #1056964608
6318 .long 0xe89402e0 // ldm r4, {r5, r6, r7, r9}
6319 .long 0xf2404c30 // vfma.f32 d20, d0, d16
6320 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6321 .long 0xf2431c30 // vfma.f32 d17, d3, d16
6322 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
6323 .long 0xf3fb37a3 // vcvt.u32.f32 d19, d19
6324 .long 0xf3fb47a4 // vcvt.u32.f32 d20, d20
6325 .long 0xee123b90 // vmov.32 r3, d18[0]
6326 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
6327 .long 0xee13eb90 // vmov.32 lr, d19[0]
6328 .long 0xee144b90 // vmov.32 r4, d20[0]
6329 .long 0xe7d78003 // ldrb r8, [r7, r3]
6330 .long 0xe7d6300e // ldrb r3, [r6, lr]
6331 .long 0xee053b90 // vmov.32 d21[0], r3
6332 .long 0xe7d53004 // ldrb r3, [r5, r4]
6333 .long 0xee344b90 // vmov.32 r4, d20[1]
6334 .long 0xee013b90 // vmov.32 d17[0], r3
6335 .long 0xee103b90 // vmov.32 r3, d16[0]
6336 .long 0xee048b90 // vmov.32 d20[0], r8
6337 .long 0xe7d5e004 // ldrb lr, [r5, r4]
6338 .long 0xee334b90 // vmov.32 r4, d19[1]
6339 .long 0xee325b90 // vmov.32 r5, d18[1]
6340 .long 0xf3c7201f // vmov.i32 d18, #255
6341 .long 0xe7d93003 // ldrb r3, [r9, r3]
6342 .long 0xee21eb90 // vmov.32 d17[1], lr
6343 .long 0xf24111b2 // vand d17, d17, d18
6344 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
6345 .long 0xe7d64004 // ldrb r4, [r6, r4]
6346 .long 0xee306b90 // vmov.32 r6, d16[1]
6347 .long 0xee003b90 // vmov.32 d16[0], r3
6348 .long 0xee254b90 // vmov.32 d21[1], r4
6349 .long 0xe7d74005 // ldrb r4, [r7, r5]
6350 .long 0xf24531b2 // vand d19, d21, d18
6351 .long 0xee244b90 // vmov.32 d20[1], r4
6352 .long 0xf24441b2 // vand d20, d20, d18
6353 .long 0xf3fb46a4 // vcvt.f32.u32 d20, d20
6354 .long 0xe7d93006 // ldrb r3, [r9, r6]
6355 .long 0xee203b90 // vmov.32 d16[1], r3
6356 .long 0xf24001b2 // vand d16, d16, d18
6357 .long 0xf3fb26a3 // vcvt.f32.u32 d18, d19
6358 .long 0xeddf3b09 // vldr d19, [pc, #36]
6359 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
6360 .long 0xf3010db3 // vmul.f32 d0, d17, d19
6361 .long 0xf3042db3 // vmul.f32 d2, d20, d19
6362 .long 0xf3021db3 // vmul.f32 d1, d18, d19
6363 .long 0xf3003db3 // vmul.f32 d3, d16, d19
6364 .long 0xe8bd4bf0 // pop {r4, r5, r6, r7, r8, r9, fp, lr}
6365 .long 0xe12fff1c // bx ip
6366 .long 0xe320f000 // nop {0}
6367 .long 0x437f0000 // .word 0x437f0000
6368 .long 0x437f0000 // .word 0x437f0000
6369 .long 0x3b808081 // .word 0x3b808081
6370 .long 0x3b808081 // .word 0x3b808081
6371
6372HIDDEN _sk_byte_tables_rgb_vfp4
6373.globl _sk_byte_tables_rgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006374FUNCTION(_sk_byte_tables_rgb_vfp4)
Mike Klein40de6da2017-04-07 13:09:29 -04006375_sk_byte_tables_rgb_vfp4:
6376 .long 0xe92d41f0 // push {r4, r5, r6, r7, r8, lr}
6377 .long 0xe8911008 // ldm r1, {r3, ip}
6378 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6379 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6380 .long 0xf3c7301f // vmov.i32 d19, #255
6381 .long 0xe2811008 // add r1, r1, #8
6382 .long 0xe593e000 // ldr lr, [r3]
6383 .long 0xe9930110 // ldmib r3, {r4, r8}
6384 .long 0xe593300c // ldr r3, [r3, #12]
6385 .long 0xe2433001 // sub r3, r3, #1
6386 .long 0xee803b90 // vdup.32 d16, r3
6387 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6388 .long 0xf2402c30 // vfma.f32 d18, d0, d16
6389 .long 0xf2411c30 // vfma.f32 d17, d1, d16
6390 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
6391 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
6392 .long 0xee123b90 // vmov.32 r3, d18[0]
6393 .long 0xee326b90 // vmov.32 r6, d18[1]
6394 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6395 .long 0xf2422c30 // vfma.f32 d18, d2, d16
6396 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
6397 .long 0xee107b90 // vmov.32 r7, d16[0]
6398 .long 0xee305b90 // vmov.32 r5, d16[1]
6399 .long 0xe7de3003 // ldrb r3, [lr, r3]
6400 .long 0xe7dee006 // ldrb lr, [lr, r6]
6401 .long 0xee116b90 // vmov.32 r6, d17[0]
6402 .long 0xee023b90 // vmov.32 d18[0], r3
6403 .long 0xee313b90 // vmov.32 r3, d17[1]
6404 .long 0xee22eb90 // vmov.32 d18[1], lr
6405 .long 0xf24221b3 // vand d18, d18, d19
6406 .long 0xf3fb26a2 // vcvt.f32.u32 d18, d18
6407 .long 0xe7d87007 // ldrb r7, [r8, r7]
6408 .long 0xee017b90 // vmov.32 d17[0], r7
6409 .long 0xe7d46006 // ldrb r6, [r4, r6]
6410 .long 0xe7d43003 // ldrb r3, [r4, r3]
6411 .long 0xee006b90 // vmov.32 d16[0], r6
6412 .long 0xe7d84005 // ldrb r4, [r8, r5]
6413 .long 0xee203b90 // vmov.32 d16[1], r3
6414 .long 0xee214b90 // vmov.32 d17[1], r4
6415 .long 0xf24001b3 // vand d16, d16, d19
6416 .long 0xf24111b3 // vand d17, d17, d19
6417 .long 0xeddf3b07 // vldr d19, [pc, #28]
6418 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
6419 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
6420 .long 0xf3020db3 // vmul.f32 d0, d18, d19
6421 .long 0xf3001db3 // vmul.f32 d1, d16, d19
6422 .long 0xf3012db3 // vmul.f32 d2, d17, d19
6423 .long 0xe8bd41f0 // pop {r4, r5, r6, r7, r8, lr}
6424 .long 0xe12fff1c // bx ip
6425 .long 0xe320f000 // nop {0}
6426 .long 0x3b808081 // .word 0x3b808081
6427 .long 0x3b808081 // .word 0x3b808081
6428
Mike Kleinc7d9c0b2017-04-17 14:43:59 -04006429HIDDEN _sk_table_r_vfp4
6430.globl _sk_table_r_vfp4
6431FUNCTION(_sk_table_r_vfp4)
6432_sk_table_r_vfp4:
6433 .long 0xe92d4010 // push {r4, lr}
6434 .long 0xe8911008 // ldm r1, {r3, ip}
6435 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6436 .long 0xe2811008 // add r1, r1, #8
6437 .long 0xe593e000 // ldr lr, [r3]
6438 .long 0xe5933004 // ldr r3, [r3, #4]
6439 .long 0xe2433001 // sub r3, r3, #1
6440 .long 0xee803b90 // vdup.32 d16, r3
6441 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6442 .long 0xf2401c30 // vfma.f32 d17, d0, d16
6443 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
6444 .long 0xee303b90 // vmov.32 r3, d16[1]
6445 .long 0xee104b90 // vmov.32 r4, d16[0]
6446 .long 0xe08e3103 // add r3, lr, r3, lsl #2
6447 .long 0xedd30a00 // vldr s1, [r3]
6448 .long 0xe08e3104 // add r3, lr, r4, lsl #2
6449 .long 0xed930a00 // vldr s0, [r3]
6450 .long 0xe8bd4010 // pop {r4, lr}
6451 .long 0xe12fff1c // bx ip
6452
6453HIDDEN _sk_table_g_vfp4
6454.globl _sk_table_g_vfp4
6455FUNCTION(_sk_table_g_vfp4)
6456_sk_table_g_vfp4:
6457 .long 0xe92d4010 // push {r4, lr}
6458 .long 0xe8911008 // ldm r1, {r3, ip}
6459 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6460 .long 0xe2811008 // add r1, r1, #8
6461 .long 0xe593e000 // ldr lr, [r3]
6462 .long 0xe5933004 // ldr r3, [r3, #4]
6463 .long 0xe2433001 // sub r3, r3, #1
6464 .long 0xee803b90 // vdup.32 d16, r3
6465 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6466 .long 0xf2411c30 // vfma.f32 d17, d1, d16
6467 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
6468 .long 0xee303b90 // vmov.32 r3, d16[1]
6469 .long 0xee104b90 // vmov.32 r4, d16[0]
6470 .long 0xe08e3103 // add r3, lr, r3, lsl #2
6471 .long 0xedd31a00 // vldr s3, [r3]
6472 .long 0xe08e3104 // add r3, lr, r4, lsl #2
6473 .long 0xed931a00 // vldr s2, [r3]
6474 .long 0xe8bd4010 // pop {r4, lr}
6475 .long 0xe12fff1c // bx ip
6476
6477HIDDEN _sk_table_b_vfp4
6478.globl _sk_table_b_vfp4
6479FUNCTION(_sk_table_b_vfp4)
6480_sk_table_b_vfp4:
6481 .long 0xe92d4010 // push {r4, lr}
6482 .long 0xe8911008 // ldm r1, {r3, ip}
6483 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6484 .long 0xe2811008 // add r1, r1, #8
6485 .long 0xe593e000 // ldr lr, [r3]
6486 .long 0xe5933004 // ldr r3, [r3, #4]
6487 .long 0xe2433001 // sub r3, r3, #1
6488 .long 0xee803b90 // vdup.32 d16, r3
6489 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6490 .long 0xf2421c30 // vfma.f32 d17, d2, d16
6491 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
6492 .long 0xee303b90 // vmov.32 r3, d16[1]
6493 .long 0xee104b90 // vmov.32 r4, d16[0]
6494 .long 0xe08e3103 // add r3, lr, r3, lsl #2
6495 .long 0xedd32a00 // vldr s5, [r3]
6496 .long 0xe08e3104 // add r3, lr, r4, lsl #2
6497 .long 0xed932a00 // vldr s4, [r3]
6498 .long 0xe8bd4010 // pop {r4, lr}
6499 .long 0xe12fff1c // bx ip
6500
6501HIDDEN _sk_table_a_vfp4
6502.globl _sk_table_a_vfp4
6503FUNCTION(_sk_table_a_vfp4)
6504_sk_table_a_vfp4:
6505 .long 0xe92d4010 // push {r4, lr}
6506 .long 0xe8911008 // ldm r1, {r3, ip}
6507 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6508 .long 0xe2811008 // add r1, r1, #8
6509 .long 0xe593e000 // ldr lr, [r3]
6510 .long 0xe5933004 // ldr r3, [r3, #4]
6511 .long 0xe2433001 // sub r3, r3, #1
6512 .long 0xee803b90 // vdup.32 d16, r3
6513 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6514 .long 0xf2431c30 // vfma.f32 d17, d3, d16
6515 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
6516 .long 0xee303b90 // vmov.32 r3, d16[1]
6517 .long 0xee104b90 // vmov.32 r4, d16[0]
6518 .long 0xe08e3103 // add r3, lr, r3, lsl #2
6519 .long 0xedd33a00 // vldr s7, [r3]
6520 .long 0xe08e3104 // add r3, lr, r4, lsl #2
6521 .long 0xed933a00 // vldr s6, [r3]
6522 .long 0xe8bd4010 // pop {r4, lr}
6523 .long 0xe12fff1c // bx ip
6524
Mike Klein44375172017-04-17 19:32:05 -04006525HIDDEN _sk_parametric_r_vfp4
6526.globl _sk_parametric_r_vfp4
6527FUNCTION(_sk_parametric_r_vfp4)
6528_sk_parametric_r_vfp4:
6529 .long 0xe92d4800 // push {fp, lr}
6530 .long 0xed2d8b06 // vpush {d8-d10}
6531 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04006532 .long 0xeddf3b41 // vldr d19, [pc, #260]
6533 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04006534 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04006535 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04006536 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
6537 .long 0xe591c004 // ldr ip, [r1, #4]
6538 .long 0xe2811008 // add r1, r1, #8
6539 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6540 .long 0xe28e3008 // add r3, lr, #8
6541 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6542 .long 0xe28e300c // add r3, lr, #12
6543 .long 0xf2412c90 // vfma.f32 d18, d17, d0
6544 .long 0xf2c71d1f // vmov.i32 d17, #8388607
6545 .long 0xf24211b1 // vand d17, d18, d17
6546 .long 0xf2c3171f // vorr.i32 d17, #1056964608
6547 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6548 .long 0xf2019da3 // vadd.f32 d9, d17, d19
6549 .long 0xf2c33614 // vmov.i32 d19, #872415232
6550 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04006551 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04006552 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
6553 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04006554 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04006555 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04006556 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04006557 .long 0xeddf4b2e // vldr d20, [pc, #184]
6558 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04006559 .long 0xf2621da1 // vsub.f32 d17, d18, d17
6560 .long 0xf2611d8a // vsub.f32 d17, d17, d10
6561 .long 0xf3400db1 // vmul.f32 d16, d16, d17
6562 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
6563 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6564 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
6565 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04006566 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04006567 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04006568 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04006569 .long 0xf2601da1 // vsub.f32 d17, d16, d17
6570 .long 0xf2400da4 // vadd.f32 d16, d16, d20
6571 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04006572 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04006573 .long 0xf3411db2 // vmul.f32 d17, d17, d18
6574 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6575 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
6576 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
6577 .long 0xf2600da1 // vsub.f32 d16, d16, d17
6578 .long 0xf2c4161b // vmov.i32 d17, #1258291200
6579 .long 0xf2400d8a // vadd.f32 d16, d16, d10
6580 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
6581 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6582 .long 0xe28e3018 // add r3, lr, #24
6583 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6584 .long 0xe28e3010 // add r3, lr, #16
6585 .long 0xf2401c90 // vfma.f32 d17, d16, d0
6586 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6587 .long 0xe28e3014 // add r3, lr, #20
6588 .long 0xf3400e80 // vcge.f32 d16, d16, d0
6589 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6590 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
6591 .long 0xf2442da2 // vadd.f32 d18, d20, d18
6592 .long 0xf35101b2 // vbsl d16, d17, d18
6593 .long 0xf2c71f10 // vmov.f32 d17, #1
6594 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
6595 .long 0xf2200fa1 // vmin.f32 d0, d16, d17
6596 .long 0xecbd8b06 // vpop {d8-d10}
6597 .long 0xe8bd4800 // pop {fp, lr}
6598 .long 0xe12fff1c // bx ip
6599 .long 0x3eb444f9 // .word 0x3eb444f9
6600 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04006601 .long 0x3fbfbf75 // .word 0x3fbfbf75
6602 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04006603 .long 0xc2f87377 // .word 0xc2f87377
6604 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04006605 .long 0x3f800000 // .word 0x3f800000
6606 .long 0x3f800000 // .word 0x3f800000
6607 .long 0x409af5f8 // .word 0x409af5f8
6608 .long 0x409af5f8 // .word 0x409af5f8
6609 .long 0x3fbebc8d // .word 0x3fbebc8d
6610 .long 0x3fbebc8d // .word 0x3fbebc8d
6611 .long 0x42f28c51 // .word 0x42f28c51
6612 .long 0x42f28c51 // .word 0x42f28c51
6613 .long 0x3fdce9a3 // .word 0x3fdce9a3
6614 .long 0x41ddd2fe // .word 0x41ddd2fe
6615
6616HIDDEN _sk_parametric_g_vfp4
6617.globl _sk_parametric_g_vfp4
6618FUNCTION(_sk_parametric_g_vfp4)
6619_sk_parametric_g_vfp4:
6620 .long 0xe92d4800 // push {fp, lr}
6621 .long 0xed2d8b06 // vpush {d8-d10}
6622 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04006623 .long 0xeddf3b41 // vldr d19, [pc, #260]
6624 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04006625 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04006626 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04006627 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
6628 .long 0xe591c004 // ldr ip, [r1, #4]
6629 .long 0xe2811008 // add r1, r1, #8
6630 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6631 .long 0xe28e3008 // add r3, lr, #8
6632 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6633 .long 0xe28e300c // add r3, lr, #12
6634 .long 0xf2412c91 // vfma.f32 d18, d17, d1
6635 .long 0xf2c71d1f // vmov.i32 d17, #8388607
6636 .long 0xf24211b1 // vand d17, d18, d17
6637 .long 0xf2c3171f // vorr.i32 d17, #1056964608
6638 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6639 .long 0xf2019da3 // vadd.f32 d9, d17, d19
6640 .long 0xf2c33614 // vmov.i32 d19, #872415232
6641 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04006642 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04006643 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
6644 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04006645 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04006646 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04006647 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04006648 .long 0xeddf4b2e // vldr d20, [pc, #184]
6649 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04006650 .long 0xf2621da1 // vsub.f32 d17, d18, d17
6651 .long 0xf2611d8a // vsub.f32 d17, d17, d10
6652 .long 0xf3400db1 // vmul.f32 d16, d16, d17
6653 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
6654 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6655 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
6656 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04006657 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04006658 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04006659 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04006660 .long 0xf2601da1 // vsub.f32 d17, d16, d17
6661 .long 0xf2400da4 // vadd.f32 d16, d16, d20
6662 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04006663 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04006664 .long 0xf3411db2 // vmul.f32 d17, d17, d18
6665 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6666 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
6667 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
6668 .long 0xf2600da1 // vsub.f32 d16, d16, d17
6669 .long 0xf2c4161b // vmov.i32 d17, #1258291200
6670 .long 0xf2400d8a // vadd.f32 d16, d16, d10
6671 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
6672 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6673 .long 0xe28e3018 // add r3, lr, #24
6674 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6675 .long 0xe28e3010 // add r3, lr, #16
6676 .long 0xf2401c91 // vfma.f32 d17, d16, d1
6677 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6678 .long 0xe28e3014 // add r3, lr, #20
6679 .long 0xf3400e81 // vcge.f32 d16, d16, d1
6680 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6681 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
6682 .long 0xf2442da2 // vadd.f32 d18, d20, d18
6683 .long 0xf35101b2 // vbsl d16, d17, d18
6684 .long 0xf2c71f10 // vmov.f32 d17, #1
6685 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
6686 .long 0xf2201fa1 // vmin.f32 d1, d16, d17
6687 .long 0xecbd8b06 // vpop {d8-d10}
6688 .long 0xe8bd4800 // pop {fp, lr}
6689 .long 0xe12fff1c // bx ip
6690 .long 0x3eb444f9 // .word 0x3eb444f9
6691 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04006692 .long 0x3fbfbf75 // .word 0x3fbfbf75
6693 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04006694 .long 0xc2f87377 // .word 0xc2f87377
6695 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04006696 .long 0x3f800000 // .word 0x3f800000
6697 .long 0x3f800000 // .word 0x3f800000
6698 .long 0x409af5f8 // .word 0x409af5f8
6699 .long 0x409af5f8 // .word 0x409af5f8
6700 .long 0x3fbebc8d // .word 0x3fbebc8d
6701 .long 0x3fbebc8d // .word 0x3fbebc8d
6702 .long 0x42f28c51 // .word 0x42f28c51
6703 .long 0x42f28c51 // .word 0x42f28c51
6704 .long 0x3fdce9a3 // .word 0x3fdce9a3
6705 .long 0x41ddd2fe // .word 0x41ddd2fe
6706
6707HIDDEN _sk_parametric_b_vfp4
6708.globl _sk_parametric_b_vfp4
6709FUNCTION(_sk_parametric_b_vfp4)
6710_sk_parametric_b_vfp4:
6711 .long 0xe92d4800 // push {fp, lr}
6712 .long 0xed2d8b06 // vpush {d8-d10}
6713 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04006714 .long 0xeddf3b41 // vldr d19, [pc, #260]
6715 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04006716 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04006717 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04006718 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
6719 .long 0xe591c004 // ldr ip, [r1, #4]
6720 .long 0xe2811008 // add r1, r1, #8
6721 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6722 .long 0xe28e3008 // add r3, lr, #8
6723 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6724 .long 0xe28e300c // add r3, lr, #12
6725 .long 0xf2412c92 // vfma.f32 d18, d17, d2
6726 .long 0xf2c71d1f // vmov.i32 d17, #8388607
6727 .long 0xf24211b1 // vand d17, d18, d17
6728 .long 0xf2c3171f // vorr.i32 d17, #1056964608
6729 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6730 .long 0xf2019da3 // vadd.f32 d9, d17, d19
6731 .long 0xf2c33614 // vmov.i32 d19, #872415232
6732 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04006733 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04006734 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
6735 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04006736 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04006737 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04006738 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04006739 .long 0xeddf4b2e // vldr d20, [pc, #184]
6740 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04006741 .long 0xf2621da1 // vsub.f32 d17, d18, d17
6742 .long 0xf2611d8a // vsub.f32 d17, d17, d10
6743 .long 0xf3400db1 // vmul.f32 d16, d16, d17
6744 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
6745 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6746 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
6747 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04006748 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04006749 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04006750 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04006751 .long 0xf2601da1 // vsub.f32 d17, d16, d17
6752 .long 0xf2400da4 // vadd.f32 d16, d16, d20
6753 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04006754 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04006755 .long 0xf3411db2 // vmul.f32 d17, d17, d18
6756 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6757 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
6758 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
6759 .long 0xf2600da1 // vsub.f32 d16, d16, d17
6760 .long 0xf2c4161b // vmov.i32 d17, #1258291200
6761 .long 0xf2400d8a // vadd.f32 d16, d16, d10
6762 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
6763 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6764 .long 0xe28e3018 // add r3, lr, #24
6765 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6766 .long 0xe28e3010 // add r3, lr, #16
6767 .long 0xf2401c92 // vfma.f32 d17, d16, d2
6768 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6769 .long 0xe28e3014 // add r3, lr, #20
6770 .long 0xf3400e82 // vcge.f32 d16, d16, d2
6771 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6772 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
6773 .long 0xf2442da2 // vadd.f32 d18, d20, d18
6774 .long 0xf35101b2 // vbsl d16, d17, d18
6775 .long 0xf2c71f10 // vmov.f32 d17, #1
6776 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
6777 .long 0xf2202fa1 // vmin.f32 d2, d16, d17
6778 .long 0xecbd8b06 // vpop {d8-d10}
6779 .long 0xe8bd4800 // pop {fp, lr}
6780 .long 0xe12fff1c // bx ip
6781 .long 0x3eb444f9 // .word 0x3eb444f9
6782 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04006783 .long 0x3fbfbf75 // .word 0x3fbfbf75
6784 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04006785 .long 0xc2f87377 // .word 0xc2f87377
6786 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04006787 .long 0x3f800000 // .word 0x3f800000
6788 .long 0x3f800000 // .word 0x3f800000
6789 .long 0x409af5f8 // .word 0x409af5f8
6790 .long 0x409af5f8 // .word 0x409af5f8
6791 .long 0x3fbebc8d // .word 0x3fbebc8d
6792 .long 0x3fbebc8d // .word 0x3fbebc8d
6793 .long 0x42f28c51 // .word 0x42f28c51
6794 .long 0x42f28c51 // .word 0x42f28c51
6795 .long 0x3fdce9a3 // .word 0x3fdce9a3
6796 .long 0x41ddd2fe // .word 0x41ddd2fe
6797
6798HIDDEN _sk_parametric_a_vfp4
6799.globl _sk_parametric_a_vfp4
6800FUNCTION(_sk_parametric_a_vfp4)
6801_sk_parametric_a_vfp4:
6802 .long 0xe92d4800 // push {fp, lr}
6803 .long 0xed2d8b06 // vpush {d8-d10}
6804 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04006805 .long 0xeddf3b41 // vldr d19, [pc, #260]
6806 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04006807 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04006808 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04006809 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
6810 .long 0xe591c004 // ldr ip, [r1, #4]
6811 .long 0xe2811008 // add r1, r1, #8
6812 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6813 .long 0xe28e3008 // add r3, lr, #8
6814 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6815 .long 0xe28e300c // add r3, lr, #12
6816 .long 0xf2412c93 // vfma.f32 d18, d17, d3
6817 .long 0xf2c71d1f // vmov.i32 d17, #8388607
6818 .long 0xf24211b1 // vand d17, d18, d17
6819 .long 0xf2c3171f // vorr.i32 d17, #1056964608
6820 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6821 .long 0xf2019da3 // vadd.f32 d9, d17, d19
6822 .long 0xf2c33614 // vmov.i32 d19, #872415232
6823 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04006824 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04006825 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
6826 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04006827 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04006828 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04006829 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04006830 .long 0xeddf4b2e // vldr d20, [pc, #184]
6831 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04006832 .long 0xf2621da1 // vsub.f32 d17, d18, d17
6833 .long 0xf2611d8a // vsub.f32 d17, d17, d10
6834 .long 0xf3400db1 // vmul.f32 d16, d16, d17
6835 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
6836 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6837 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
6838 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04006839 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04006840 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04006841 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04006842 .long 0xf2601da1 // vsub.f32 d17, d16, d17
6843 .long 0xf2400da4 // vadd.f32 d16, d16, d20
6844 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04006845 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04006846 .long 0xf3411db2 // vmul.f32 d17, d17, d18
6847 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6848 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
6849 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
6850 .long 0xf2600da1 // vsub.f32 d16, d16, d17
6851 .long 0xf2c4161b // vmov.i32 d17, #1258291200
6852 .long 0xf2400d8a // vadd.f32 d16, d16, d10
6853 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
6854 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6855 .long 0xe28e3018 // add r3, lr, #24
6856 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6857 .long 0xe28e3010 // add r3, lr, #16
6858 .long 0xf2401c93 // vfma.f32 d17, d16, d3
6859 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6860 .long 0xe28e3014 // add r3, lr, #20
6861 .long 0xf3400e83 // vcge.f32 d16, d16, d3
6862 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6863 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
6864 .long 0xf2442da2 // vadd.f32 d18, d20, d18
6865 .long 0xf35101b2 // vbsl d16, d17, d18
6866 .long 0xf2c71f10 // vmov.f32 d17, #1
6867 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
6868 .long 0xf2203fa1 // vmin.f32 d3, d16, d17
6869 .long 0xecbd8b06 // vpop {d8-d10}
6870 .long 0xe8bd4800 // pop {fp, lr}
6871 .long 0xe12fff1c // bx ip
6872 .long 0x3eb444f9 // .word 0x3eb444f9
6873 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04006874 .long 0x3fbfbf75 // .word 0x3fbfbf75
6875 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04006876 .long 0xc2f87377 // .word 0xc2f87377
6877 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04006878 .long 0x3f800000 // .word 0x3f800000
6879 .long 0x3f800000 // .word 0x3f800000
6880 .long 0x409af5f8 // .word 0x409af5f8
6881 .long 0x409af5f8 // .word 0x409af5f8
6882 .long 0x3fbebc8d // .word 0x3fbebc8d
6883 .long 0x3fbebc8d // .word 0x3fbebc8d
6884 .long 0x42f28c51 // .word 0x42f28c51
6885 .long 0x42f28c51 // .word 0x42f28c51
6886 .long 0x3fdce9a3 // .word 0x3fdce9a3
6887 .long 0x41ddd2fe // .word 0x41ddd2fe
6888
Mike Klein4e3e9f82017-04-20 11:04:29 -04006889HIDDEN _sk_lab_to_xyz_vfp4
6890.globl _sk_lab_to_xyz_vfp4
6891FUNCTION(_sk_lab_to_xyz_vfp4)
6892_sk_lab_to_xyz_vfp4:
6893 .long 0xeddf1b2e // vldr d17, [pc, #184]
6894 .long 0xf3c43613 // vmov.i32 d19, #-1023410176
6895 .long 0xeddf0b2a // vldr d16, [pc, #168]
6896 .long 0xf2c34f10 // vmov.f32 d20, #16
6897 .long 0xf3401d31 // vmul.f32 d17, d0, d17
6898 .long 0xeddf5b2f // vldr d21, [pc, #188]
6899 .long 0xf3412d30 // vmul.f32 d18, d1, d16
6900 .long 0xeddf6b2f // vldr d22, [pc, #188]
6901 .long 0xf3420d30 // vmul.f32 d16, d2, d16
6902 .long 0xeddf7b2f // vldr d23, [pc, #188]
6903 .long 0xeddf8b30 // vldr d24, [pc, #192]
6904 .long 0xf2411da4 // vadd.f32 d17, d17, d20
6905 .long 0xeddf4b24 // vldr d20, [pc, #144]
6906 .long 0xf2422da3 // vadd.f32 d18, d18, d19
6907 .long 0xe4913004 // ldr r3, [r1], #4
6908 .long 0xf2400da3 // vadd.f32 d16, d16, d19
6909 .long 0xeddf3b22 // vldr d19, [pc, #136]
6910 .long 0xf3411db3 // vmul.f32 d17, d17, d19
6911 .long 0xf3422db4 // vmul.f32 d18, d18, d20
6912 .long 0xf3400db5 // vmul.f32 d16, d16, d21
6913 .long 0xf2412da2 // vadd.f32 d18, d17, d18
6914 .long 0xf2610da0 // vsub.f32 d16, d17, d16
6915 .long 0xf3415db1 // vmul.f32 d21, d17, d17
6916 .long 0xf3423db2 // vmul.f32 d19, d18, d18
6917 .long 0xf3404db0 // vmul.f32 d20, d16, d16
6918 .long 0xf3415db5 // vmul.f32 d21, d17, d21
6919 .long 0xf2411da6 // vadd.f32 d17, d17, d22
6920 .long 0xf3423db3 // vmul.f32 d19, d18, d19
6921 .long 0xf3404db4 // vmul.f32 d20, d16, d20
6922 .long 0xf2400da6 // vadd.f32 d16, d16, d22
6923 .long 0xf2422da6 // vadd.f32 d18, d18, d22
6924 .long 0xeddf6b1d // vldr d22, [pc, #116]
6925 .long 0xf3639ea7 // vcgt.f32 d25, d19, d23
6926 .long 0xf364aea7 // vcgt.f32 d26, d20, d23
6927 .long 0xf3400db8 // vmul.f32 d16, d16, d24
6928 .long 0xf3422db8 // vmul.f32 d18, d18, d24
6929 .long 0xf35391b2 // vbsl d25, d19, d18
6930 .long 0xeddf2b19 // vldr d18, [pc, #100]
6931 .long 0xf354a1b0 // vbsl d26, d20, d16
6932 .long 0xf3251ea7 // vcgt.f32 d1, d21, d23
6933 .long 0xf3090db6 // vmul.f32 d0, d25, d22
6934 .long 0xf30a2db2 // vmul.f32 d2, d26, d18
6935 .long 0xf3410db8 // vmul.f32 d16, d17, d24
6936 .long 0xf31511b0 // vbsl d1, d21, d16
6937 .long 0xe12fff13 // bx r3
6938 .long 0xe320f000 // nop {0}
6939 .long 0x437f0000 // .word 0x437f0000
6940 .long 0x437f0000 // .word 0x437f0000
6941 .long 0x42c80000 // .word 0x42c80000
6942 .long 0x42c80000 // .word 0x42c80000
6943 .long 0x3b03126f // .word 0x3b03126f
6944 .long 0x3b03126f // .word 0x3b03126f
6945 .long 0x3c0d3dcb // .word 0x3c0d3dcb
6946 .long 0x3c0d3dcb // .word 0x3c0d3dcb
6947 .long 0x3ba3d70a // .word 0x3ba3d70a
6948 .long 0x3ba3d70a // .word 0x3ba3d70a
6949 .long 0xbe0d3dcb // .word 0xbe0d3dcb
6950 .long 0xbe0d3dcb // .word 0xbe0d3dcb
6951 .long 0x3c1118c2 // .word 0x3c1118c2
6952 .long 0x3c1118c2 // .word 0x3c1118c2
6953 .long 0x3e038050 // .word 0x3e038050
6954 .long 0x3e038050 // .word 0x3e038050
6955 .long 0x3f76d71f // .word 0x3f76d71f
6956 .long 0x3f76d71f // .word 0x3f76d71f
6957 .long 0x3f5340f6 // .word 0x3f5340f6
6958 .long 0x3f5340f6 // .word 0x3f5340f6
6959
Mike Klein7c4af542017-03-29 18:21:14 -04006960HIDDEN _sk_load_a8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006961.globl _sk_load_a8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006962FUNCTION(_sk_load_a8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006963_sk_load_a8_vfp4:
6964 .long 0xe24dd004 // sub sp, sp, #4
6965 .long 0xe8911008 // ldm r1, {r3, ip}
6966 .long 0xe2811008 // add r1, r1, #8
6967 .long 0xf2800010 // vmov.i32 d0, #0
6968 .long 0xf2801010 // vmov.i32 d1, #0
6969 .long 0xe5933000 // ldr r3, [r3]
6970 .long 0xf2802010 // vmov.i32 d2, #0
6971 .long 0xe0833000 // add r3, r3, r0
6972 .long 0xe1d330b0 // ldrh r3, [r3]
6973 .long 0xe1cd30b0 // strh r3, [sp]
6974 .long 0xe1a0300d // mov r3, sp
6975 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
6976 .long 0xf3c80a30 // vmovl.u8 q8, d16
6977 .long 0xf3d00a30 // vmovl.u16 q8, d16
6978 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
6979 .long 0xeddf1b03 // vldr d17, [pc, #12]
6980 .long 0xf3003db1 // vmul.f32 d3, d16, d17
6981 .long 0xe28dd004 // add sp, sp, #4
6982 .long 0xe12fff1c // bx ip
6983 .long 0xe320f000 // nop {0}
6984 .long 0x3b808081 // .word 0x3b808081
6985 .long 0x3b808081 // .word 0x3b808081
6986
Mike Klein21bd3e42017-04-06 16:32:29 -04006987HIDDEN _sk_gather_a8_vfp4
6988.globl _sk_gather_a8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006989FUNCTION(_sk_gather_a8_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04006990_sk_gather_a8_vfp4:
6991 .long 0xe92d4010 // push {r4, lr}
6992 .long 0xe8911008 // ldm r1, {r3, ip}
6993 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
6994 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
6995 .long 0xe2811008 // add r1, r1, #8
6996 .long 0xf2800010 // vmov.i32 d0, #0
6997 .long 0xe493e008 // ldr lr, [r3], #8
6998 .long 0xf2801010 // vmov.i32 d1, #0
6999 .long 0xf2802010 // vmov.i32 d2, #0
7000 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
7001 .long 0xf26219a0 // vmla.i32 d17, d18, d16
7002 .long 0xee113b90 // vmov.32 r3, d17[0]
7003 .long 0xee314b90 // vmov.32 r4, d17[1]
7004 .long 0xf3c7101f // vmov.i32 d17, #255
7005 .long 0xe7de3003 // ldrb r3, [lr, r3]
7006 .long 0xe7de4004 // ldrb r4, [lr, r4]
7007 .long 0xee003b90 // vmov.32 d16[0], r3
7008 .long 0xee204b90 // vmov.32 d16[1], r4
7009 .long 0xf24001b1 // vand d16, d16, d17
7010 .long 0xeddf1b03 // vldr d17, [pc, #12]
7011 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
7012 .long 0xf3003db1 // vmul.f32 d3, d16, d17
7013 .long 0xe8bd4010 // pop {r4, lr}
7014 .long 0xe12fff1c // bx ip
7015 .long 0x3b808081 // .word 0x3b808081
7016 .long 0x3b808081 // .word 0x3b808081
7017
Mike Klein7c4af542017-03-29 18:21:14 -04007018HIDDEN _sk_store_a8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007019.globl _sk_store_a8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007020FUNCTION(_sk_store_a8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007021_sk_store_a8_vfp4:
7022 .long 0xe92d4800 // push {fp, lr}
7023 .long 0xeddf0b0d // vldr d16, [pc, #52]
7024 .long 0xf2c3161f // vmov.i32 d17, #1056964608
7025 .long 0xf2431c30 // vfma.f32 d17, d3, d16
7026 .long 0xe5913000 // ldr r3, [r1]
7027 .long 0xe5933000 // ldr r3, [r3]
7028 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
7029 .long 0xee10eb90 // vmov.32 lr, d16[0]
7030 .long 0xee30cb90 // vmov.32 ip, d16[1]
7031 .long 0xe7e3e000 // strb lr, [r3, r0]!
7032 .long 0xe5c3c001 // strb ip, [r3, #1]
7033 .long 0xe2813008 // add r3, r1, #8
7034 .long 0xe591c004 // ldr ip, [r1, #4]
7035 .long 0xe1a01003 // mov r1, r3
7036 .long 0xe8bd4800 // pop {fp, lr}
7037 .long 0xe12fff1c // bx ip
7038 .long 0x437f0000 // .word 0x437f0000
7039 .long 0x437f0000 // .word 0x437f0000
7040
Mike Kleinf809fef2017-03-31 13:52:45 -04007041HIDDEN _sk_load_g8_vfp4
7042.globl _sk_load_g8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007043FUNCTION(_sk_load_g8_vfp4)
Mike Kleinf809fef2017-03-31 13:52:45 -04007044_sk_load_g8_vfp4:
7045 .long 0xe24dd004 // sub sp, sp, #4
7046 .long 0xe8911008 // ldm r1, {r3, ip}
7047 .long 0xe2811008 // add r1, r1, #8
7048 .long 0xf2873f10 // vmov.f32 d3, #1
7049 .long 0xe5933000 // ldr r3, [r3]
7050 .long 0xe0833000 // add r3, r3, r0
7051 .long 0xe1d330b0 // ldrh r3, [r3]
7052 .long 0xe1cd30b0 // strh r3, [sp]
7053 .long 0xe1a0300d // mov r3, sp
7054 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
7055 .long 0xf3c80a30 // vmovl.u8 q8, d16
7056 .long 0xf3d00a30 // vmovl.u16 q8, d16
7057 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
7058 .long 0xeddf1b05 // vldr d17, [pc, #20]
7059 .long 0xf3000db1 // vmul.f32 d0, d16, d17
7060 .long 0xf2201110 // vorr d1, d0, d0
7061 .long 0xf2202110 // vorr d2, d0, d0
7062 .long 0xe28dd004 // add sp, sp, #4
7063 .long 0xe12fff1c // bx ip
7064 .long 0xe320f000 // nop {0}
7065 .long 0x3b808081 // .word 0x3b808081
7066 .long 0x3b808081 // .word 0x3b808081
7067
Mike Klein21bd3e42017-04-06 16:32:29 -04007068HIDDEN _sk_gather_g8_vfp4
7069.globl _sk_gather_g8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007070FUNCTION(_sk_gather_g8_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04007071_sk_gather_g8_vfp4:
7072 .long 0xe92d4010 // push {r4, lr}
7073 .long 0xe8911008 // ldm r1, {r3, ip}
7074 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
7075 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
7076 .long 0xe2811008 // add r1, r1, #8
7077 .long 0xf2873f10 // vmov.f32 d3, #1
7078 .long 0xe493e008 // ldr lr, [r3], #8
7079 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
7080 .long 0xf26219a0 // vmla.i32 d17, d18, d16
7081 .long 0xee113b90 // vmov.32 r3, d17[0]
7082 .long 0xee314b90 // vmov.32 r4, d17[1]
7083 .long 0xf3c7101f // vmov.i32 d17, #255
7084 .long 0xe7de3003 // ldrb r3, [lr, r3]
7085 .long 0xe7de4004 // ldrb r4, [lr, r4]
7086 .long 0xee003b90 // vmov.32 d16[0], r3
7087 .long 0xee204b90 // vmov.32 d16[1], r4
7088 .long 0xf24001b1 // vand d16, d16, d17
7089 .long 0xeddf1b05 // vldr d17, [pc, #20]
7090 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
7091 .long 0xf3000db1 // vmul.f32 d0, d16, d17
7092 .long 0xf2201110 // vorr d1, d0, d0
7093 .long 0xf2202110 // vorr d2, d0, d0
7094 .long 0xe8bd4010 // pop {r4, lr}
7095 .long 0xe12fff1c // bx ip
7096 .long 0x3b808081 // .word 0x3b808081
7097 .long 0x3b808081 // .word 0x3b808081
7098
Mike Klein7d3d8722017-04-06 17:53:18 -04007099HIDDEN _sk_gather_i8_vfp4
7100.globl _sk_gather_i8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007101FUNCTION(_sk_gather_i8_vfp4)
Mike Klein7d3d8722017-04-06 17:53:18 -04007102_sk_gather_i8_vfp4:
7103 .long 0xe92d4010 // push {r4, lr}
7104 .long 0xe1a0e001 // mov lr, r1
7105 .long 0xe491c004 // ldr ip, [r1], #4
7106 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
7107 .long 0xe35c0000 // cmp ip, #0
7108 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
7109 .long 0xe1a0300c // mov r3, ip
7110 .long 0x028e1008 // addeq r1, lr, #8
7111 .long 0x059e3004 // ldreq r3, [lr, #4]
7112 .long 0xe493e008 // ldr lr, [r3], #8
7113 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
7114 .long 0xf26219a0 // vmla.i32 d17, d18, d16
7115 .long 0xee113b90 // vmov.32 r3, d17[0]
7116 .long 0xee314b90 // vmov.32 r4, d17[1]
7117 .long 0xf3c7101f // vmov.i32 d17, #255
7118 .long 0xe7de3003 // ldrb r3, [lr, r3]
7119 .long 0xe7de4004 // ldrb r4, [lr, r4]
7120 .long 0xee003b90 // vmov.32 d16[0], r3
7121 .long 0xee204b90 // vmov.32 d16[1], r4
7122 .long 0xe59c4004 // ldr r4, [ip, #4]
7123 .long 0xf24001b1 // vand d16, d16, d17
7124 .long 0xee103b90 // vmov.32 r3, d16[0]
7125 .long 0xee30eb90 // vmov.32 lr, d16[1]
7126 .long 0xe0843103 // add r3, r4, r3, lsl #2
7127 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
7128 .long 0xe084310e // add r3, r4, lr, lsl #2
7129 .long 0xf4e308bf // vld1.32 {d16[1]}, [r3 :32]
7130 .long 0xf24021b1 // vand d18, d16, d17
7131 .long 0xf3f83030 // vshr.u32 d19, d16, #8
7132 .long 0xf3e84030 // vshr.u32 d20, d16, #24
7133 .long 0xe4913004 // ldr r3, [r1], #4
7134 .long 0xf3f00030 // vshr.u32 d16, d16, #16
7135 .long 0xf24331b1 // vand d19, d19, d17
7136 .long 0xf24001b1 // vand d16, d16, d17
7137 .long 0xeddf1b0a // vldr d17, [pc, #40]
7138 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
7139 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
7140 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
7141 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
7142 .long 0xf3020db1 // vmul.f32 d0, d18, d17
7143 .long 0xf3043db1 // vmul.f32 d3, d20, d17
7144 .long 0xf3031db1 // vmul.f32 d1, d19, d17
7145 .long 0xf3002db1 // vmul.f32 d2, d16, d17
7146 .long 0xe8bd4010 // pop {r4, lr}
7147 .long 0xe12fff13 // bx r3
7148 .long 0xe320f000 // nop {0}
7149 .long 0x3b808081 // .word 0x3b808081
7150 .long 0x3b808081 // .word 0x3b808081
7151
Mike Klein7c4af542017-03-29 18:21:14 -04007152HIDDEN _sk_load_565_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007153.globl _sk_load_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007154FUNCTION(_sk_load_565_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007155_sk_load_565_vfp4:
7156 .long 0xe24dd004 // sub sp, sp, #4
7157 .long 0xe8911008 // ldm r1, {r3, ip}
7158 .long 0xf2c1101f // vmov.i32 d17, #31
7159 .long 0xf3c72218 // vmov.i32 d18, #63488
7160 .long 0xeddf3b16 // vldr d19, [pc, #88]
7161 .long 0xe2811008 // add r1, r1, #8
7162 .long 0xe5933000 // ldr r3, [r3]
7163 .long 0xf2873f10 // vmov.f32 d3, #1
7164 .long 0xe7933080 // ldr r3, [r3, r0, lsl #1]
7165 .long 0xe58d3000 // str r3, [sp]
7166 .long 0xe1a0300d // mov r3, sp
7167 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
7168 .long 0xe3a03e7e // mov r3, #2016
7169 .long 0xf3d04a30 // vmovl.u16 q10, d16
7170 .long 0xee803b90 // vdup.32 d16, r3
7171 .long 0xf24411b1 // vand d17, d20, d17
7172 .long 0xeddf5b0e // vldr d21, [pc, #56]
7173 .long 0xf24421b2 // vand d18, d20, d18
7174 .long 0xf24401b0 // vand d16, d20, d16
7175 .long 0xeddf4b09 // vldr d20, [pc, #36]
7176 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
7177 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
7178 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
7179 .long 0xf3020db3 // vmul.f32 d0, d18, d19
7180 .long 0xf3001db4 // vmul.f32 d1, d16, d20
7181 .long 0xf3012db5 // vmul.f32 d2, d17, d21
7182 .long 0xe28dd004 // add sp, sp, #4
7183 .long 0xe12fff1c // bx ip
7184 .long 0x37842108 // .word 0x37842108
7185 .long 0x37842108 // .word 0x37842108
7186 .long 0x3a020821 // .word 0x3a020821
7187 .long 0x3a020821 // .word 0x3a020821
7188 .long 0x3d042108 // .word 0x3d042108
7189 .long 0x3d042108 // .word 0x3d042108
7190
Mike Klein21bd3e42017-04-06 16:32:29 -04007191HIDDEN _sk_gather_565_vfp4
7192.globl _sk_gather_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007193FUNCTION(_sk_gather_565_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04007194_sk_gather_565_vfp4:
7195 .long 0xe92d4010 // push {r4, lr}
7196 .long 0xe8911008 // ldm r1, {r3, ip}
7197 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
7198 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
7199 .long 0xeddf4b20 // vldr d20, [pc, #128]
7200 .long 0xe2811008 // add r1, r1, #8
7201 .long 0xe493e008 // ldr lr, [r3], #8
7202 .long 0xf2873f10 // vmov.f32 d3, #1
7203 .long 0xeddf5b1e // vldr d21, [pc, #120]
7204 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
7205 .long 0xf26219a0 // vmla.i32 d17, d18, d16
7206 .long 0xf2c1201f // vmov.i32 d18, #31
7207 .long 0xee113b90 // vmov.32 r3, d17[0]
7208 .long 0xee314b90 // vmov.32 r4, d17[1]
7209 .long 0xf3c71218 // vmov.i32 d17, #63488
7210 .long 0xe08e3083 // add r3, lr, r3, lsl #1
7211 .long 0xe08e4084 // add r4, lr, r4, lsl #1
7212 .long 0xe1d330b0 // ldrh r3, [r3]
7213 .long 0xe1d440b0 // ldrh r4, [r4]
7214 .long 0xee003b90 // vmov.32 d16[0], r3
7215 .long 0xe3a03e7e // mov r3, #2016
7216 .long 0xee833b90 // vdup.32 d19, r3
7217 .long 0xee204b90 // vmov.32 d16[1], r4
7218 .long 0xf24011b1 // vand d17, d16, d17
7219 .long 0xf24031b3 // vand d19, d16, d19
7220 .long 0xf24001b2 // vand d16, d16, d18
7221 .long 0xf3fb2623 // vcvt.f32.s32 d18, d19
7222 .long 0xeddf3b07 // vldr d19, [pc, #28]
7223 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
7224 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
7225 .long 0xf3021db4 // vmul.f32 d1, d18, d20
7226 .long 0xf3010db3 // vmul.f32 d0, d17, d19
7227 .long 0xf3002db5 // vmul.f32 d2, d16, d21
7228 .long 0xe8bd4010 // pop {r4, lr}
7229 .long 0xe12fff1c // bx ip
7230 .long 0xe320f000 // nop {0}
7231 .long 0x37842108 // .word 0x37842108
7232 .long 0x37842108 // .word 0x37842108
7233 .long 0x3a020821 // .word 0x3a020821
7234 .long 0x3a020821 // .word 0x3a020821
7235 .long 0x3d042108 // .word 0x3d042108
7236 .long 0x3d042108 // .word 0x3d042108
7237
Mike Klein7c4af542017-03-29 18:21:14 -04007238HIDDEN _sk_store_565_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007239.globl _sk_store_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007240FUNCTION(_sk_store_565_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007241_sk_store_565_vfp4:
7242 .long 0xf2c30f1f // vmov.f32 d16, #31
7243 .long 0xeddf1b15 // vldr d17, [pc, #84]
7244 .long 0xf2c3361f // vmov.i32 d19, #1056964608
7245 .long 0xe5913000 // ldr r3, [r1]
7246 .long 0xf2413c31 // vfma.f32 d19, d1, d17
7247 .long 0xf2c3161f // vmov.i32 d17, #1056964608
7248 .long 0xf2401c30 // vfma.f32 d17, d0, d16
7249 .long 0xe5933000 // ldr r3, [r3]
7250 .long 0xf2c3261f // vmov.i32 d18, #1056964608
7251 .long 0xf2422c30 // vfma.f32 d18, d2, d16
7252 .long 0xe0833080 // add r3, r3, r0, lsl #1
7253 .long 0xf3fb07a3 // vcvt.u32.f32 d16, d19
7254 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
7255 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
7256 .long 0xf2e50530 // vshl.s32 d16, d16, #5
7257 .long 0xf2eb1531 // vshl.s32 d17, d17, #11
7258 .long 0xf26001b1 // vorr d16, d16, d17
7259 .long 0xf26001b2 // vorr d16, d16, d18
7260 .long 0xf3f60121 // vuzp.16 d16, d17
7261 .long 0xf4c3080f // vst1.32 {d16[0]}, [r3]
7262 .long 0xe2813008 // add r3, r1, #8
7263 .long 0xe591c004 // ldr ip, [r1, #4]
7264 .long 0xe1a01003 // mov r1, r3
7265 .long 0xe12fff1c // bx ip
7266 .long 0x427c0000 // .word 0x427c0000
7267 .long 0x427c0000 // .word 0x427c0000
7268
Mike Kleinf809fef2017-03-31 13:52:45 -04007269HIDDEN _sk_load_4444_vfp4
7270.globl _sk_load_4444_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007271FUNCTION(_sk_load_4444_vfp4)
Mike Kleinf809fef2017-03-31 13:52:45 -04007272_sk_load_4444_vfp4:
7273 .long 0xe24dd004 // sub sp, sp, #4
7274 .long 0xe8911008 // ldm r1, {r3, ip}
7275 .long 0xf3c71210 // vmov.i32 d17, #61440
7276 .long 0xf3c74010 // vmov.i32 d20, #240
7277 .long 0xf2c0501f // vmov.i32 d21, #15
7278 .long 0xeddf6b1d // vldr d22, [pc, #116]
7279 .long 0xe5933000 // ldr r3, [r3]
7280 .long 0xe2811008 // add r1, r1, #8
7281 .long 0xe7933080 // ldr r3, [r3, r0, lsl #1]
7282 .long 0xe58d3000 // str r3, [sp]
7283 .long 0xe1a0300d // mov r3, sp
7284 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
7285 .long 0xf3d02a30 // vmovl.u16 q9, d16
7286 .long 0xf2c0021f // vmov.i32 d16, #3840
7287 .long 0xf24211b1 // vand d17, d18, d17
7288 .long 0xf24201b0 // vand d16, d18, d16
7289 .long 0xf24241b4 // vand d20, d18, d20
7290 .long 0xf24221b5 // vand d18, d18, d21
7291 .long 0xeddf3b0c // vldr d19, [pc, #48]
7292 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
7293 .long 0xeddf5b0c // vldr d21, [pc, #48]
7294 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
7295 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
7296 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
7297 .long 0xf3010db3 // vmul.f32 d0, d17, d19
7298 .long 0xeddf1b0b // vldr d17, [pc, #44]
7299 .long 0xf3001db5 // vmul.f32 d1, d16, d21
7300 .long 0xf3042db6 // vmul.f32 d2, d20, d22
7301 .long 0xf3023db1 // vmul.f32 d3, d18, d17
7302 .long 0xe28dd004 // add sp, sp, #4
7303 .long 0xe12fff1c // bx ip
7304 .long 0xe320f000 // nop {0}
7305 .long 0x37888889 // .word 0x37888889
7306 .long 0x37888889 // .word 0x37888889
7307 .long 0x39888889 // .word 0x39888889
7308 .long 0x39888889 // .word 0x39888889
7309 .long 0x3b888889 // .word 0x3b888889
7310 .long 0x3b888889 // .word 0x3b888889
7311 .long 0x3d888889 // .word 0x3d888889
7312 .long 0x3d888889 // .word 0x3d888889
7313
Mike Klein21bd3e42017-04-06 16:32:29 -04007314HIDDEN _sk_gather_4444_vfp4
7315.globl _sk_gather_4444_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007316FUNCTION(_sk_gather_4444_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04007317_sk_gather_4444_vfp4:
7318 .long 0xe92d4010 // push {r4, lr}
7319 .long 0xe8911008 // ldm r1, {r3, ip}
7320 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
7321 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
7322 .long 0xf3c73010 // vmov.i32 d19, #240
7323 .long 0xeddf5b21 // vldr d21, [pc, #132]
7324 .long 0xe493e008 // ldr lr, [r3], #8
7325 .long 0xf2c0401f // vmov.i32 d20, #15
7326 .long 0xeddf6b20 // vldr d22, [pc, #128]
7327 .long 0xe2811008 // add r1, r1, #8
7328 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
7329 .long 0xf26219a0 // vmla.i32 d17, d18, d16
7330 .long 0xf2c0221f // vmov.i32 d18, #3840
7331 .long 0xee113b90 // vmov.32 r3, d17[0]
7332 .long 0xee314b90 // vmov.32 r4, d17[1]
7333 .long 0xf3c71210 // vmov.i32 d17, #61440
7334 .long 0xe08e3083 // add r3, lr, r3, lsl #1
7335 .long 0xe08e4084 // add r4, lr, r4, lsl #1
7336 .long 0xe1d330b0 // ldrh r3, [r3]
7337 .long 0xe1d440b0 // ldrh r4, [r4]
7338 .long 0xee003b90 // vmov.32 d16[0], r3
7339 .long 0xee204b90 // vmov.32 d16[1], r4
7340 .long 0xf24011b1 // vand d17, d16, d17
7341 .long 0xf24021b2 // vand d18, d16, d18
7342 .long 0xf24031b3 // vand d19, d16, d19
7343 .long 0xf24001b4 // vand d16, d16, d20
7344 .long 0xeddf4b0a // vldr d20, [pc, #40]
7345 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
7346 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
7347 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
7348 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
7349 .long 0xf3010db4 // vmul.f32 d0, d17, d20
7350 .long 0xeddf1b0a // vldr d17, [pc, #40]
7351 .long 0xf3021db5 // vmul.f32 d1, d18, d21
7352 .long 0xf3032db6 // vmul.f32 d2, d19, d22
7353 .long 0xf3003db1 // vmul.f32 d3, d16, d17
7354 .long 0xe8bd4010 // pop {r4, lr}
7355 .long 0xe12fff1c // bx ip
7356 .long 0x37888889 // .word 0x37888889
7357 .long 0x37888889 // .word 0x37888889
7358 .long 0x39888889 // .word 0x39888889
7359 .long 0x39888889 // .word 0x39888889
7360 .long 0x3b888889 // .word 0x3b888889
7361 .long 0x3b888889 // .word 0x3b888889
7362 .long 0x3d888889 // .word 0x3d888889
7363 .long 0x3d888889 // .word 0x3d888889
7364
Mike Kleinf809fef2017-03-31 13:52:45 -04007365HIDDEN _sk_store_4444_vfp4
7366.globl _sk_store_4444_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007367FUNCTION(_sk_store_4444_vfp4)
Mike Kleinf809fef2017-03-31 13:52:45 -04007368_sk_store_4444_vfp4:
7369 .long 0xf2c20f1e // vmov.f32 d16, #15
7370 .long 0xe5913000 // ldr r3, [r1]
7371 .long 0xf2c3261f // vmov.i32 d18, #1056964608
7372 .long 0xf2c3361f // vmov.i32 d19, #1056964608
7373 .long 0xf2402c30 // vfma.f32 d18, d0, d16
7374 .long 0xe5933000 // ldr r3, [r3]
7375 .long 0xf2413c30 // vfma.f32 d19, d1, d16
7376 .long 0xf2c3461f // vmov.i32 d20, #1056964608
7377 .long 0xe0833080 // add r3, r3, r0, lsl #1
7378 .long 0xf2424c30 // vfma.f32 d20, d2, d16
7379 .long 0xf2c3161f // vmov.i32 d17, #1056964608
7380 .long 0xf2431c30 // vfma.f32 d17, d3, d16
7381 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
7382 .long 0xf3fb27a3 // vcvt.u32.f32 d18, d19
7383 .long 0xf3fb37a4 // vcvt.u32.f32 d19, d20
7384 .long 0xf2ec0530 // vshl.s32 d16, d16, #12
7385 .long 0xf2e82532 // vshl.s32 d18, d18, #8
7386 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
7387 .long 0xf2e43533 // vshl.s32 d19, d19, #4
7388 .long 0xf26201b0 // vorr d16, d18, d16
7389 .long 0xf26001b3 // vorr d16, d16, d19
7390 .long 0xf26001b1 // vorr d16, d16, d17
7391 .long 0xf3f60121 // vuzp.16 d16, d17
7392 .long 0xf4c3080f // vst1.32 {d16[0]}, [r3]
7393 .long 0xe2813008 // add r3, r1, #8
7394 .long 0xe591c004 // ldr ip, [r1, #4]
7395 .long 0xe1a01003 // mov r1, r3
7396 .long 0xe12fff1c // bx ip
7397
Mike Klein7c4af542017-03-29 18:21:14 -04007398HIDDEN _sk_load_8888_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007399.globl _sk_load_8888_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007400FUNCTION(_sk_load_8888_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007401_sk_load_8888_vfp4:
7402 .long 0xe8911008 // ldm r1, {r3, ip}
7403 .long 0xf3c7001f // vmov.i32 d16, #255
7404 .long 0xe2811008 // add r1, r1, #8
7405 .long 0xe5933000 // ldr r3, [r3]
7406 .long 0xe0833100 // add r3, r3, r0, lsl #2
7407 .long 0xedd31b00 // vldr d17, [r3]
7408 .long 0xf24121b0 // vand d18, d17, d16
7409 .long 0xf3f83031 // vshr.u32 d19, d17, #8
7410 .long 0xf3e84031 // vshr.u32 d20, d17, #24
7411 .long 0xf3f01031 // vshr.u32 d17, d17, #16
7412 .long 0xf24331b0 // vand d19, d19, d16
7413 .long 0xf24101b0 // vand d16, d17, d16
7414 .long 0xeddf1b08 // vldr d17, [pc, #32]
7415 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
7416 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
7417 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
7418 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
7419 .long 0xf3020db1 // vmul.f32 d0, d18, d17
7420 .long 0xf3043db1 // vmul.f32 d3, d20, d17
7421 .long 0xf3031db1 // vmul.f32 d1, d19, d17
7422 .long 0xf3002db1 // vmul.f32 d2, d16, d17
7423 .long 0xe12fff1c // bx ip
7424 .long 0x3b808081 // .word 0x3b808081
7425 .long 0x3b808081 // .word 0x3b808081
7426
Mike Kleindec4ea82017-04-06 15:04:05 -04007427HIDDEN _sk_gather_8888_vfp4
7428.globl _sk_gather_8888_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007429FUNCTION(_sk_gather_8888_vfp4)
Mike Kleindec4ea82017-04-06 15:04:05 -04007430_sk_gather_8888_vfp4:
7431 .long 0xe92d4010 // push {r4, lr}
7432 .long 0xe8911008 // ldm r1, {r3, ip}
7433 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
7434 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
7435 .long 0xe2811008 // add r1, r1, #8
7436 .long 0xe493e008 // ldr lr, [r3], #8
7437 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
7438 .long 0xf26219a0 // vmla.i32 d17, d18, d16
7439 .long 0xee113b90 // vmov.32 r3, d17[0]
7440 .long 0xee314b90 // vmov.32 r4, d17[1]
7441 .long 0xf3c7101f // vmov.i32 d17, #255
7442 .long 0xe08e3103 // add r3, lr, r3, lsl #2
7443 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
7444 .long 0xe08e3104 // add r3, lr, r4, lsl #2
7445 .long 0xf4e308bf // vld1.32 {d16[1]}, [r3 :32]
7446 .long 0xf24021b1 // vand d18, d16, d17
7447 .long 0xf3f83030 // vshr.u32 d19, d16, #8
7448 .long 0xf3e84030 // vshr.u32 d20, d16, #24
7449 .long 0xf3f00030 // vshr.u32 d16, d16, #16
7450 .long 0xf24331b1 // vand d19, d19, d17
7451 .long 0xf24001b1 // vand d16, d16, d17
7452 .long 0xeddf1b09 // vldr d17, [pc, #36]
7453 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
7454 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
7455 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
7456 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
7457 .long 0xf3020db1 // vmul.f32 d0, d18, d17
7458 .long 0xf3043db1 // vmul.f32 d3, d20, d17
7459 .long 0xf3031db1 // vmul.f32 d1, d19, d17
7460 .long 0xf3002db1 // vmul.f32 d2, d16, d17
7461 .long 0xe8bd4010 // pop {r4, lr}
7462 .long 0xe12fff1c // bx ip
7463 .long 0x3b808081 // .word 0x3b808081
7464 .long 0x3b808081 // .word 0x3b808081
7465
Mike Klein7c4af542017-03-29 18:21:14 -04007466HIDDEN _sk_store_8888_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007467.globl _sk_store_8888_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007468FUNCTION(_sk_store_8888_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007469_sk_store_8888_vfp4:
7470 .long 0xeddf0b1a // vldr d16, [pc, #104]
7471 .long 0xf2c3261f // vmov.i32 d18, #1056964608
7472 .long 0xf2412c30 // vfma.f32 d18, d1, d16
7473 .long 0xe5913000 // ldr r3, [r1]
7474 .long 0xf2c3361f // vmov.i32 d19, #1056964608
7475 .long 0xf2c3161f // vmov.i32 d17, #1056964608
7476 .long 0xf2423c30 // vfma.f32 d19, d2, d16
7477 .long 0xe5933000 // ldr r3, [r3]
7478 .long 0xf2c3461f // vmov.i32 d20, #1056964608
7479 .long 0xf2401c30 // vfma.f32 d17, d0, d16
7480 .long 0xe0833100 // add r3, r3, r0, lsl #2
7481 .long 0xf2434c30 // vfma.f32 d20, d3, d16
7482 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
7483 .long 0xf3fb27a3 // vcvt.u32.f32 d18, d19
7484 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
7485 .long 0xf3fb37a4 // vcvt.u32.f32 d19, d20
7486 .long 0xf2e80530 // vshl.s32 d16, d16, #8
7487 .long 0xf2f02532 // vshl.s32 d18, d18, #16
7488 .long 0xf26001b1 // vorr d16, d16, d17
7489 .long 0xf2f81533 // vshl.s32 d17, d19, #24
7490 .long 0xf26001b2 // vorr d16, d16, d18
7491 .long 0xf26001b1 // vorr d16, d16, d17
7492 .long 0xedc30b00 // vstr d16, [r3]
7493 .long 0xe2813008 // add r3, r1, #8
7494 .long 0xe591c004 // ldr ip, [r1, #4]
7495 .long 0xe1a01003 // mov r1, r3
7496 .long 0xe12fff1c // bx ip
7497 .long 0xe320f000 // nop {0}
7498 .long 0x437f0000 // .word 0x437f0000
7499 .long 0x437f0000 // .word 0x437f0000
7500
Mike Klein7c4af542017-03-29 18:21:14 -04007501HIDDEN _sk_load_f16_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007502.globl _sk_load_f16_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007503FUNCTION(_sk_load_f16_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007504_sk_load_f16_vfp4:
7505 .long 0xe8911008 // ldm r1, {r3, ip}
7506 .long 0xe2811008 // add r1, r1, #8
7507 .long 0xe5933000 // ldr r3, [r3]
7508 .long 0xe0833180 // add r3, r3, r0, lsl #3
Mike Klein114e6b32017-04-03 22:21:15 -04007509 .long 0xf4e3070d // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]!
7510 .long 0xf4e3074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3]
7511 .long 0xf3b60720 // vcvt.f32.f16 q0, d16
7512 .long 0xf3b62722 // vcvt.f32.f16 q1, d18
7513 .long 0xf3f64721 // vcvt.f32.f16 q10, d17
7514 .long 0xf3f60723 // vcvt.f32.f16 q8, d19
7515 .long 0xf22411b4 // vorr d1, d20, d20
7516 .long 0xf22031b0 // vorr d3, d16, d16
Mike Kleind7e06ae2017-03-29 16:33:06 -04007517 .long 0xe12fff1c // bx ip
7518
Mike Klein5f055f02017-04-06 20:02:11 -04007519HIDDEN _sk_gather_f16_vfp4
7520.globl _sk_gather_f16_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007521FUNCTION(_sk_gather_f16_vfp4)
Mike Klein5f055f02017-04-06 20:02:11 -04007522_sk_gather_f16_vfp4:
7523 .long 0xe92d4c10 // push {r4, sl, fp, lr}
7524 .long 0xe28db008 // add fp, sp, #8
7525 .long 0xe24dd010 // sub sp, sp, #16
7526 .long 0xe7c3d01f // bfc sp, #0, #4
7527 .long 0xe5913000 // ldr r3, [r1]
7528 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
7529 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
7530 .long 0xe493c008 // ldr ip, [r3], #8
7531 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
7532 .long 0xf26219a0 // vmla.i32 d17, d18, d16
7533 .long 0xee113b90 // vmov.32 r3, d17[0]
7534 .long 0xee31eb90 // vmov.32 lr, d17[1]
7535 .long 0xe08c4183 // add r4, ip, r3, lsl #3
7536 .long 0xe08c318e // add r3, ip, lr, lsl #3
7537 .long 0xedd31b00 // vldr d17, [r3]
7538 .long 0xe1a0300d // mov r3, sp
7539 .long 0xedd40b00 // vldr d16, [r4]
7540 .long 0xf4430aef // vst1.64 {d16-d17}, [r3 :128]
7541 .long 0xf4e3071f // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3 :64]
7542 .long 0xe3833008 // orr r3, r3, #8
7543 .long 0xf4e3075f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3 :64]
7544 .long 0xf3b60720 // vcvt.f32.f16 q0, d16
7545 .long 0xf3b62722 // vcvt.f32.f16 q1, d18
7546 .long 0xe5913004 // ldr r3, [r1, #4]
7547 .long 0xe2811008 // add r1, r1, #8
7548 .long 0xf3f64721 // vcvt.f32.f16 q10, d17
7549 .long 0xf3f60723 // vcvt.f32.f16 q8, d19
7550 .long 0xf22411b4 // vorr d1, d20, d20
7551 .long 0xf22031b0 // vorr d3, d16, d16
7552 .long 0xe12fff33 // blx r3
7553 .long 0xe24bd008 // sub sp, fp, #8
7554 .long 0xe8bd8c10 // pop {r4, sl, fp, pc}
7555
Mike Klein7c4af542017-03-29 18:21:14 -04007556HIDDEN _sk_store_f16_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007557.globl _sk_store_f16_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007558FUNCTION(_sk_store_f16_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007559_sk_store_f16_vfp4:
Mike Klein95f53be2017-04-04 10:24:56 -04007560 .long 0xf2630113 // vorr d16, d3, d3
Mike Kleind7e06ae2017-03-29 16:33:06 -04007561 .long 0xe5913000 // ldr r3, [r1]
Mike Klein95f53be2017-04-04 10:24:56 -04007562 .long 0xf2612111 // vorr d18, d1, d1
7563 .long 0xf3f67620 // vcvt.f16.f32 d23, q8
Mike Kleind7e06ae2017-03-29 16:33:06 -04007564 .long 0xe5933000 // ldr r3, [r3]
Mike Klein95f53be2017-04-04 10:24:56 -04007565 .long 0xf3f66602 // vcvt.f16.f32 d22, q1
Mike Kleind7e06ae2017-03-29 16:33:06 -04007566 .long 0xe0833180 // add r3, r3, r0, lsl #3
Mike Klein95f53be2017-04-04 10:24:56 -04007567 .long 0xf3f65622 // vcvt.f16.f32 d21, q9
7568 .long 0xf3f64600 // vcvt.f16.f32 d20, q0
7569 .long 0xf22211b2 // vorr d1, d18, d18
7570 .long 0xf22031b0 // vorr d3, d16, d16
7571 .long 0xf4c3470d // vst4.16 {d20[0],d21[0],d22[0],d23[0]}, [r3]!
7572 .long 0xf4c3474f // vst4.16 {d20[1],d21[1],d22[1],d23[1]}, [r3]
Mike Kleind7e06ae2017-03-29 16:33:06 -04007573 .long 0xe2813008 // add r3, r1, #8
7574 .long 0xe591c004 // ldr ip, [r1, #4]
7575 .long 0xe1a01003 // mov r1, r3
7576 .long 0xe12fff1c // bx ip
7577
Mike Klein3146bb92017-04-05 14:45:02 -04007578HIDDEN _sk_load_u16_be_vfp4
7579.globl _sk_load_u16_be_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007580FUNCTION(_sk_load_u16_be_vfp4)
Mike Klein3146bb92017-04-05 14:45:02 -04007581_sk_load_u16_be_vfp4:
7582 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
7583 .long 0xe8911008 // ldm r1, {r3, ip}
7584 .long 0xe2811008 // add r1, r1, #8
7585 .long 0xe5933000 // ldr r3, [r3]
7586 .long 0xe0833180 // add r3, r3, r0, lsl #3
7587 .long 0xf4e3070d // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]!
7588 .long 0xf4e3074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3]
7589 .long 0xee903bb0 // vmov.u16 r3, d16[0]
7590 .long 0xee92ebb0 // vmov.u16 lr, d18[0]
7591 .long 0xee914bb0 // vmov.u16 r4, d17[0]
7592 .long 0xee937bb0 // vmov.u16 r7, d19[0]
7593 .long 0xee905bf0 // vmov.u16 r5, d16[1]
7594 .long 0xee926bf0 // vmov.u16 r6, d18[1]
7595 .long 0xee043b90 // vmov.32 d20[0], r3
7596 .long 0xee05eb90 // vmov.32 d21[0], lr
7597 .long 0xee93ebf0 // vmov.u16 lr, d19[1]
7598 .long 0xee913bf0 // vmov.u16 r3, d17[1]
7599 .long 0xf3c71c1f // vmov.i32 d17, #65535
7600 .long 0xee004b90 // vmov.32 d16[0], r4
7601 .long 0xee027b90 // vmov.32 d18[0], r7
7602 .long 0xee245b90 // vmov.32 d20[1], r5
7603 .long 0xf24431b1 // vand d19, d20, d17
7604 .long 0xee256b90 // vmov.32 d21[1], r6
7605 .long 0xf2e84534 // vshl.s32 d20, d20, #8
7606 .long 0xf24561b1 // vand d22, d21, d17
7607 .long 0xf3f83033 // vshr.u32 d19, d19, #8
7608 .long 0xf2e85535 // vshl.s32 d21, d21, #8
7609 .long 0xf26431b3 // vorr d19, d20, d19
7610 .long 0xf3f86036 // vshr.u32 d22, d22, #8
7611 .long 0xf24331b1 // vand d19, d19, d17
7612 .long 0xf26551b6 // vorr d21, d21, d22
7613 .long 0xf3fb36a3 // vcvt.f32.u32 d19, d19
7614 .long 0xee22eb90 // vmov.32 d18[1], lr
7615 .long 0xee203b90 // vmov.32 d16[1], r3
7616 .long 0xf24281b1 // vand d24, d18, d17
7617 .long 0xf2e82532 // vshl.s32 d18, d18, #8
7618 .long 0xf24071b1 // vand d23, d16, d17
7619 .long 0xf3f84038 // vshr.u32 d20, d24, #8
7620 .long 0xf2e80530 // vshl.s32 d16, d16, #8
7621 .long 0xf3f87037 // vshr.u32 d23, d23, #8
7622 .long 0xf26221b4 // vorr d18, d18, d20
7623 .long 0xf26001b7 // vorr d16, d16, d23
7624 .long 0xf24541b1 // vand d20, d21, d17
7625 .long 0xf24001b1 // vand d16, d16, d17
7626 .long 0xf24211b1 // vand d17, d18, d17
7627 .long 0xeddf2b09 // vldr d18, [pc, #36]
7628 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
7629 .long 0xf3fb46a4 // vcvt.f32.u32 d20, d20
7630 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
7631 .long 0xf3030db2 // vmul.f32 d0, d19, d18
7632 .long 0xf3001db2 // vmul.f32 d1, d16, d18
7633 .long 0xf3042db2 // vmul.f32 d2, d20, d18
7634 .long 0xf3013db2 // vmul.f32 d3, d17, d18
7635 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
7636 .long 0xe12fff1c // bx ip
7637 .long 0xe320f000 // nop {0}
7638 .long 0x37800080 // .word 0x37800080
7639 .long 0x37800080 // .word 0x37800080
7640
Mike Kleinb3821732017-04-17 10:58:05 -04007641HIDDEN _sk_load_rgb_u16_be_vfp4
7642.globl _sk_load_rgb_u16_be_vfp4
7643FUNCTION(_sk_load_rgb_u16_be_vfp4)
7644_sk_load_rgb_u16_be_vfp4:
7645 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
7646 .long 0xe8911008 // ldm r1, {r3, ip}
7647 .long 0xe2811008 // add r1, r1, #8
7648 .long 0xf2873f10 // vmov.f32 d3, #1
7649 .long 0xe593e000 // ldr lr, [r3]
7650 .long 0xe0803080 // add r3, r0, r0, lsl #1
7651 .long 0xe08e3083 // add r3, lr, r3, lsl #1
7652 .long 0xf4e3060d // vld3.16 {d16[0],d17[0],d18[0]}, [r3]!
7653 .long 0xf4e3064f // vld3.16 {d16[1],d17[1],d18[1]}, [r3]
7654 .long 0xee90ebb0 // vmov.u16 lr, d16[0]
7655 .long 0xee913bb0 // vmov.u16 r3, d17[0]
7656 .long 0xee924bb0 // vmov.u16 r4, d18[0]
7657 .long 0xee927bf0 // vmov.u16 r7, d18[1]
7658 .long 0xf3c73c1f // vmov.i32 d19, #65535
7659 .long 0xee905bf0 // vmov.u16 r5, d16[1]
7660 .long 0xee916bf0 // vmov.u16 r6, d17[1]
7661 .long 0xee00eb90 // vmov.32 d16[0], lr
7662 .long 0xee013b90 // vmov.32 d17[0], r3
7663 .long 0xee024b90 // vmov.32 d18[0], r4
7664 .long 0xee205b90 // vmov.32 d16[1], r5
7665 .long 0xee216b90 // vmov.32 d17[1], r6
7666 .long 0xf24041b3 // vand d20, d16, d19
7667 .long 0xf2e80530 // vshl.s32 d16, d16, #8
7668 .long 0xee227b90 // vmov.32 d18[1], r7
7669 .long 0xf24151b3 // vand d21, d17, d19
7670 .long 0xf3f84034 // vshr.u32 d20, d20, #8
7671 .long 0xf24261b3 // vand d22, d18, d19
7672 .long 0xf2e81531 // vshl.s32 d17, d17, #8
7673 .long 0xf3f85035 // vshr.u32 d21, d21, #8
7674 .long 0xf2e82532 // vshl.s32 d18, d18, #8
7675 .long 0xf3f86036 // vshr.u32 d22, d22, #8
7676 .long 0xf26001b4 // vorr d16, d16, d20
7677 .long 0xf26111b5 // vorr d17, d17, d21
7678 .long 0xf26221b6 // vorr d18, d18, d22
7679 .long 0xf24001b3 // vand d16, d16, d19
7680 .long 0xf24111b3 // vand d17, d17, d19
7681 .long 0xf24221b3 // vand d18, d18, d19
7682 .long 0xeddf3b07 // vldr d19, [pc, #28]
7683 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
7684 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
7685 .long 0xf3fb26a2 // vcvt.f32.u32 d18, d18
7686 .long 0xf3000db3 // vmul.f32 d0, d16, d19
7687 .long 0xf3011db3 // vmul.f32 d1, d17, d19
7688 .long 0xf3022db3 // vmul.f32 d2, d18, d19
7689 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
7690 .long 0xe12fff1c // bx ip
7691 .long 0x37800080 // .word 0x37800080
7692 .long 0x37800080 // .word 0x37800080
7693
Mike Klein3146bb92017-04-05 14:45:02 -04007694HIDDEN _sk_store_u16_be_vfp4
7695.globl _sk_store_u16_be_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007696FUNCTION(_sk_store_u16_be_vfp4)
Mike Klein3146bb92017-04-05 14:45:02 -04007697_sk_store_u16_be_vfp4:
7698 .long 0xeddf0b2a // vldr d16, [pc, #168]
7699 .long 0xf2c3261f // vmov.i32 d18, #1056964608
7700 .long 0xf2c3361f // vmov.i32 d19, #1056964608
7701 .long 0xe5913000 // ldr r3, [r1]
7702 .long 0xf2432c30 // vfma.f32 d18, d3, d16
7703 .long 0xf2c3461f // vmov.i32 d20, #1056964608
7704 .long 0xf2423c30 // vfma.f32 d19, d2, d16
7705 .long 0xf2c3161f // vmov.i32 d17, #1056964608
7706 .long 0xf2414c30 // vfma.f32 d20, d1, d16
7707 .long 0xf2401c30 // vfma.f32 d17, d0, d16
7708 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
7709 .long 0xf3fb27a3 // vcvt.u32.f32 d18, d19
7710 .long 0xf3c73c1f // vmov.i32 d19, #65535
7711 .long 0xf3fb47a4 // vcvt.u32.f32 d20, d20
7712 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
7713 .long 0xf24051b3 // vand d21, d16, d19
7714 .long 0xf24261b3 // vand d22, d18, d19
7715 .long 0xf24471b3 // vand d23, d20, d19
7716 .long 0xf24131b3 // vand d19, d17, d19
7717 .long 0xf2e80530 // vshl.s32 d16, d16, #8
7718 .long 0xf3f85035 // vshr.u32 d21, d21, #8
7719 .long 0xf2e82532 // vshl.s32 d18, d18, #8
7720 .long 0xf3f86036 // vshr.u32 d22, d22, #8
7721 .long 0xf260b1b5 // vorr d27, d16, d21
7722 .long 0xf2e84534 // vshl.s32 d20, d20, #8
7723 .long 0xf3f87037 // vshr.u32 d23, d23, #8
7724 .long 0xf262a1b6 // vorr d26, d18, d22
7725 .long 0xf2e81531 // vshl.s32 d17, d17, #8
7726 .long 0xf3f83033 // vshr.u32 d19, d19, #8
7727 .long 0xf26491b7 // vorr d25, d20, d23
7728 .long 0xf26181b3 // vorr d24, d17, d19
7729 .long 0xf3f6b120 // vuzp.16 d27, d16
7730 .long 0xe5933000 // ldr r3, [r3]
7731 .long 0xf3f6a120 // vuzp.16 d26, d16
7732 .long 0xe0833180 // add r3, r3, r0, lsl #3
7733 .long 0xf3f69120 // vuzp.16 d25, d16
7734 .long 0xf3f68120 // vuzp.16 d24, d16
7735 .long 0xf4c3870d // vst4.16 {d24[0],d25[0],d26[0],d27[0]}, [r3]!
7736 .long 0xf4c3874f // vst4.16 {d24[1],d25[1],d26[1],d27[1]}, [r3]
7737 .long 0xe2813008 // add r3, r1, #8
7738 .long 0xe591c004 // ldr ip, [r1, #4]
7739 .long 0xe1a01003 // mov r1, r3
7740 .long 0xe12fff1c // bx ip
7741 .long 0xe320f000 // nop {0}
7742 .long 0x477fff00 // .word 0x477fff00
7743 .long 0x477fff00 // .word 0x477fff00
7744
Mike Klein14987eb2017-04-06 10:22:26 -04007745HIDDEN _sk_load_f32_vfp4
7746.globl _sk_load_f32_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007747FUNCTION(_sk_load_f32_vfp4)
Mike Klein14987eb2017-04-06 10:22:26 -04007748_sk_load_f32_vfp4:
7749 .long 0xe8911008 // ldm r1, {r3, ip}
7750 .long 0xe2811008 // add r1, r1, #8
7751 .long 0xe5933000 // ldr r3, [r3]
7752 .long 0xe0833200 // add r3, r3, r0, lsl #4
7753 .long 0xf423008f // vld4.32 {d0-d3}, [r3]
7754 .long 0xe12fff1c // bx ip
7755
Mike Klein7c4af542017-03-29 18:21:14 -04007756HIDDEN _sk_store_f32_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007757.globl _sk_store_f32_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007758FUNCTION(_sk_store_f32_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007759_sk_store_f32_vfp4:
7760 .long 0xe5913000 // ldr r3, [r1]
7761 .long 0xe5933000 // ldr r3, [r3]
7762 .long 0xe0833200 // add r3, r3, r0, lsl #4
7763 .long 0xf403008f // vst4.32 {d0-d3}, [r3]
7764 .long 0xe2813008 // add r3, r1, #8
7765 .long 0xe591c004 // ldr ip, [r1, #4]
7766 .long 0xe1a01003 // mov r1, r3
7767 .long 0xe12fff1c // bx ip
7768
Mike Klein7c4af542017-03-29 18:21:14 -04007769HIDDEN _sk_clamp_x_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007770.globl _sk_clamp_x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007771FUNCTION(_sk_clamp_x_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007772_sk_clamp_x_vfp4:
Mike Kleind7e06ae2017-03-29 16:33:06 -04007773 .long 0xf2c00010 // vmov.i32 d16, #0
Mike Kleinfc84dc52017-05-11 15:29:31 -04007774 .long 0xe8911008 // ldm r1, {r3, ip}
Mike Kleind7e06ae2017-03-29 16:33:06 -04007775 .long 0xe2811008 // add r1, r1, #8
Mike Kleinfc84dc52017-05-11 15:29:31 -04007776 .long 0xf2400f80 // vmax.f32 d16, d16, d0
7777 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
Mike Kleind7e06ae2017-03-29 16:33:06 -04007778 .long 0xf2200fa1 // vmin.f32 d0, d16, d17
7779 .long 0xe12fff1c // bx ip
7780
Mike Klein7c4af542017-03-29 18:21:14 -04007781HIDDEN _sk_clamp_y_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007782.globl _sk_clamp_y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007783FUNCTION(_sk_clamp_y_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007784_sk_clamp_y_vfp4:
Mike Kleind7e06ae2017-03-29 16:33:06 -04007785 .long 0xf2c00010 // vmov.i32 d16, #0
Mike Kleinfc84dc52017-05-11 15:29:31 -04007786 .long 0xe8911008 // ldm r1, {r3, ip}
Mike Kleind7e06ae2017-03-29 16:33:06 -04007787 .long 0xe2811008 // add r1, r1, #8
Mike Kleinfc84dc52017-05-11 15:29:31 -04007788 .long 0xf2400f81 // vmax.f32 d16, d16, d1
7789 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
Mike Kleind7e06ae2017-03-29 16:33:06 -04007790 .long 0xf2201fa1 // vmin.f32 d1, d16, d17
7791 .long 0xe12fff1c // bx ip
7792
Mike Klein7c4af542017-03-29 18:21:14 -04007793HIDDEN _sk_repeat_x_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007794.globl _sk_repeat_x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007795FUNCTION(_sk_repeat_x_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007796_sk_repeat_x_vfp4:
7797 .long 0xed2d8b04 // vpush {d8-d9}
7798 .long 0xe8911008 // ldm r1, {r3, ip}
7799 .long 0xf2c02010 // vmov.i32 d18, #0
7800 .long 0xe2811008 // add r1, r1, #8
Mike Klein8ca33562017-05-23 08:07:43 -04007801 .long 0xeddf3b0c // vldr d19, [pc, #48]
Mike Kleind7e06ae2017-03-29 16:33:06 -04007802 .long 0xed938a00 // vldr s16, [r3]
7803 .long 0xeec09a88 // vdiv.f32 s19, s1, s16
7804 .long 0xee809a08 // vdiv.f32 s18, s0, s16
7805 .long 0xf3fb0709 // vcvt.s32.f32 d16, d9
7806 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
7807 .long 0xf3601e89 // vcgt.f32 d17, d16, d9
7808 .long 0xf35311b2 // vbsl d17, d19, d18
Mike Kleind7e06ae2017-03-29 16:33:06 -04007809 .long 0xf2600da1 // vsub.f32 d16, d16, d17
Mike Kleinfc84dc52017-05-11 15:29:31 -04007810 .long 0xf3f41c08 // vdup.32 d17, d8[0]
Mike Klein8ca33562017-05-23 08:07:43 -04007811 .long 0xf2210cb0 // vfms.f32 d0, d17, d16
Mike Kleind7e06ae2017-03-29 16:33:06 -04007812 .long 0xecbd8b04 // vpop {d8-d9}
7813 .long 0xe12fff1c // bx ip
7814 .long 0xe320f000 // nop {0}
7815 .long 0x3f800000 // .word 0x3f800000
7816 .long 0x3f800000 // .word 0x3f800000
7817
Mike Klein7c4af542017-03-29 18:21:14 -04007818HIDDEN _sk_repeat_y_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007819.globl _sk_repeat_y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007820FUNCTION(_sk_repeat_y_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007821_sk_repeat_y_vfp4:
7822 .long 0xed2d8b04 // vpush {d8-d9}
7823 .long 0xe8911008 // ldm r1, {r3, ip}
7824 .long 0xf2c02010 // vmov.i32 d18, #0
7825 .long 0xe2811008 // add r1, r1, #8
Mike Klein8ca33562017-05-23 08:07:43 -04007826 .long 0xeddf3b0c // vldr d19, [pc, #48]
Mike Kleind7e06ae2017-03-29 16:33:06 -04007827 .long 0xed938a00 // vldr s16, [r3]
7828 .long 0xeec19a88 // vdiv.f32 s19, s3, s16
7829 .long 0xee819a08 // vdiv.f32 s18, s2, s16
7830 .long 0xf3fb0709 // vcvt.s32.f32 d16, d9
7831 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
7832 .long 0xf3601e89 // vcgt.f32 d17, d16, d9
7833 .long 0xf35311b2 // vbsl d17, d19, d18
Mike Kleind7e06ae2017-03-29 16:33:06 -04007834 .long 0xf2600da1 // vsub.f32 d16, d16, d17
Mike Kleinfc84dc52017-05-11 15:29:31 -04007835 .long 0xf3f41c08 // vdup.32 d17, d8[0]
Mike Klein8ca33562017-05-23 08:07:43 -04007836 .long 0xf2211cb0 // vfms.f32 d1, d17, d16
Mike Kleind7e06ae2017-03-29 16:33:06 -04007837 .long 0xecbd8b04 // vpop {d8-d9}
7838 .long 0xe12fff1c // bx ip
7839 .long 0xe320f000 // nop {0}
7840 .long 0x3f800000 // .word 0x3f800000
7841 .long 0x3f800000 // .word 0x3f800000
7842
Mike Klein7c4af542017-03-29 18:21:14 -04007843HIDDEN _sk_mirror_x_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007844.globl _sk_mirror_x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007845FUNCTION(_sk_mirror_x_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007846_sk_mirror_x_vfp4:
7847 .long 0xed2d8b04 // vpush {d8-d9}
7848 .long 0xe8911008 // ldm r1, {r3, ip}
7849 .long 0xf2c03010 // vmov.i32 d19, #0
7850 .long 0xe2811008 // add r1, r1, #8
Mike Klein8ca33562017-05-23 08:07:43 -04007851 .long 0xeddf4b10 // vldr d20, [pc, #64]
Mike Kleind7e06ae2017-03-29 16:33:06 -04007852 .long 0xed938a00 // vldr s16, [r3]
7853 .long 0xee389a08 // vadd.f32 s18, s16, s16
7854 .long 0xf3f40c08 // vdup.32 d16, d8[0]
7855 .long 0xf2200d20 // vsub.f32 d0, d0, d16
7856 .long 0xeec08a89 // vdiv.f32 s17, s1, s18
7857 .long 0xee808a09 // vdiv.f32 s16, s0, s18
7858 .long 0xf3fb1708 // vcvt.s32.f32 d17, d8
7859 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
7860 .long 0xf3612e88 // vcgt.f32 d18, d17, d8
7861 .long 0xf35421b3 // vbsl d18, d20, d19
7862 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleind7e06ae2017-03-29 16:33:06 -04007863 .long 0xf2e119c9 // vmul.f32 d17, d17, d9[0]
7864 .long 0xf2601d21 // vsub.f32 d17, d0, d17
Mike Klein8ca33562017-05-23 08:07:43 -04007865 .long 0xf2610da0 // vsub.f32 d16, d17, d16
7866 .long 0xf3b90720 // vabs.f32 d0, d16
Mike Kleind7e06ae2017-03-29 16:33:06 -04007867 .long 0xecbd8b04 // vpop {d8-d9}
7868 .long 0xe12fff1c // bx ip
Mike Kleind7e06ae2017-03-29 16:33:06 -04007869 .long 0x3f800000 // .word 0x3f800000
7870 .long 0x3f800000 // .word 0x3f800000
7871
Mike Klein7c4af542017-03-29 18:21:14 -04007872HIDDEN _sk_mirror_y_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007873.globl _sk_mirror_y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007874FUNCTION(_sk_mirror_y_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007875_sk_mirror_y_vfp4:
7876 .long 0xed2d8b04 // vpush {d8-d9}
7877 .long 0xe8911008 // ldm r1, {r3, ip}
7878 .long 0xf2c03010 // vmov.i32 d19, #0
7879 .long 0xe2811008 // add r1, r1, #8
Mike Klein8ca33562017-05-23 08:07:43 -04007880 .long 0xeddf4b10 // vldr d20, [pc, #64]
Mike Kleind7e06ae2017-03-29 16:33:06 -04007881 .long 0xed938a00 // vldr s16, [r3]
7882 .long 0xee389a08 // vadd.f32 s18, s16, s16
7883 .long 0xf3f40c08 // vdup.32 d16, d8[0]
7884 .long 0xf2211d20 // vsub.f32 d1, d1, d16
7885 .long 0xeec18a89 // vdiv.f32 s17, s3, s18
7886 .long 0xee818a09 // vdiv.f32 s16, s2, s18
7887 .long 0xf3fb1708 // vcvt.s32.f32 d17, d8
7888 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
7889 .long 0xf3612e88 // vcgt.f32 d18, d17, d8
7890 .long 0xf35421b3 // vbsl d18, d20, d19
7891 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleind7e06ae2017-03-29 16:33:06 -04007892 .long 0xf2e119c9 // vmul.f32 d17, d17, d9[0]
7893 .long 0xf2611d21 // vsub.f32 d17, d1, d17
Mike Klein8ca33562017-05-23 08:07:43 -04007894 .long 0xf2610da0 // vsub.f32 d16, d17, d16
7895 .long 0xf3b91720 // vabs.f32 d1, d16
Mike Kleind7e06ae2017-03-29 16:33:06 -04007896 .long 0xecbd8b04 // vpop {d8-d9}
7897 .long 0xe12fff1c // bx ip
Mike Kleind7e06ae2017-03-29 16:33:06 -04007898 .long 0x3f800000 // .word 0x3f800000
7899 .long 0x3f800000 // .word 0x3f800000
7900
Mike Klein9f85d682017-05-23 07:52:01 -04007901HIDDEN _sk_clamp_x_1_vfp4
7902.globl _sk_clamp_x_1_vfp4
7903FUNCTION(_sk_clamp_x_1_vfp4)
7904_sk_clamp_x_1_vfp4:
7905 .long 0xf2c00010 // vmov.i32 d16, #0
7906 .long 0xe4913004 // ldr r3, [r1], #4
7907 .long 0xf2c71f10 // vmov.f32 d17, #1
7908 .long 0xf2400f80 // vmax.f32 d16, d16, d0
7909 .long 0xf2200fa1 // vmin.f32 d0, d16, d17
7910 .long 0xe12fff13 // bx r3
7911
7912HIDDEN _sk_repeat_x_1_vfp4
7913.globl _sk_repeat_x_1_vfp4
7914FUNCTION(_sk_repeat_x_1_vfp4)
7915_sk_repeat_x_1_vfp4:
7916 .long 0xf3fb0700 // vcvt.s32.f32 d16, d0
7917 .long 0xeddf3b07 // vldr d19, [pc, #28]
7918 .long 0xf2c02010 // vmov.i32 d18, #0
7919 .long 0xe4913004 // ldr r3, [r1], #4
7920 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
7921 .long 0xf3601e80 // vcgt.f32 d17, d16, d0
7922 .long 0xf35311b2 // vbsl d17, d19, d18
7923 .long 0xf2600da1 // vsub.f32 d16, d16, d17
7924 .long 0xf2200d20 // vsub.f32 d0, d0, d16
7925 .long 0xe12fff13 // bx r3
7926 .long 0x3f800000 // .word 0x3f800000
7927 .long 0x3f800000 // .word 0x3f800000
7928
7929HIDDEN _sk_mirror_x_1_vfp4
7930.globl _sk_mirror_x_1_vfp4
7931FUNCTION(_sk_mirror_x_1_vfp4)
7932_sk_mirror_x_1_vfp4:
7933 .long 0xf3c70f10 // vmov.f32 d16, #-1
7934 .long 0xeddf5b0f // vldr d21, [pc, #60]
7935 .long 0xf2c3261f // vmov.i32 d18, #1056964608
7936 .long 0xe4913004 // ldr r3, [r1], #4
7937 .long 0xf2401d20 // vadd.f32 d17, d0, d16
7938 .long 0xf2c04010 // vmov.i32 d20, #0
7939 .long 0xf3412db2 // vmul.f32 d18, d17, d18
7940 .long 0xf3fb3722 // vcvt.s32.f32 d19, d18
7941 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
7942 .long 0xf3632ea2 // vcgt.f32 d18, d19, d18
7943 .long 0xf35521b4 // vbsl d18, d21, d20
7944 .long 0xf2632da2 // vsub.f32 d18, d19, d18
7945 .long 0xf2422da2 // vadd.f32 d18, d18, d18
7946 .long 0xf2611da2 // vsub.f32 d17, d17, d18
7947 .long 0xf2410da0 // vadd.f32 d16, d17, d16
7948 .long 0xf3b90720 // vabs.f32 d0, d16
7949 .long 0xe12fff13 // bx r3
7950 .long 0xe320f000 // nop {0}
7951 .long 0x3f800000 // .word 0x3f800000
7952 .long 0x3f800000 // .word 0x3f800000
7953
Mike Klein7c4af542017-03-29 18:21:14 -04007954HIDDEN _sk_luminance_to_alpha_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007955.globl _sk_luminance_to_alpha_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007956FUNCTION(_sk_luminance_to_alpha_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007957_sk_luminance_to_alpha_vfp4:
7958 .long 0xeddf0b0a // vldr d16, [pc, #40]
7959 .long 0xeddf1b0b // vldr d17, [pc, #44]
7960 .long 0xf3410d30 // vmul.f32 d16, d1, d16
7961 .long 0xe4913004 // ldr r3, [r1], #4
7962 .long 0xf3401d31 // vmul.f32 d17, d0, d17
7963 .long 0xf2800010 // vmov.i32 d0, #0
7964 .long 0xf2801010 // vmov.i32 d1, #0
7965 .long 0xf2013da0 // vadd.f32 d3, d17, d16
7966 .long 0xeddf0b06 // vldr d16, [pc, #24]
7967 .long 0xf2023c30 // vfma.f32 d3, d2, d16
7968 .long 0xf2802010 // vmov.i32 d2, #0
7969 .long 0xe12fff13 // bx r3
7970 .long 0x3f371759 // .word 0x3f371759
7971 .long 0x3f371759 // .word 0x3f371759
7972 .long 0x3e59b3d0 // .word 0x3e59b3d0
7973 .long 0x3e59b3d0 // .word 0x3e59b3d0
7974 .long 0x3d93dd98 // .word 0x3d93dd98
7975 .long 0x3d93dd98 // .word 0x3d93dd98
7976
Mike Klein7c4af542017-03-29 18:21:14 -04007977HIDDEN _sk_matrix_2x3_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007978.globl _sk_matrix_2x3_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007979FUNCTION(_sk_matrix_2x3_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007980_sk_matrix_2x3_vfp4:
7981 .long 0xe92d4800 // push {fp, lr}
7982 .long 0xe591e000 // ldr lr, [r1]
7983 .long 0xe591c004 // ldr ip, [r1, #4]
7984 .long 0xe2811008 // add r1, r1, #8
7985 .long 0xe28e300c // add r3, lr, #12
7986 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
7987 .long 0xe28e3008 // add r3, lr, #8
7988 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
7989 .long 0xe28e3010 // add r3, lr, #16
7990 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
7991 .long 0xe28e3014 // add r3, lr, #20
7992 .long 0xf2410c31 // vfma.f32 d16, d1, d17
7993 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
7994 .long 0xf2411c32 // vfma.f32 d17, d1, d18
7995 .long 0xf4ee2c9d // vld1.32 {d18[]}, [lr :32]!
7996 .long 0xf4ee3c9f // vld1.32 {d19[]}, [lr :32]
7997 .long 0xf2400c32 // vfma.f32 d16, d0, d18
7998 .long 0xf2401c33 // vfma.f32 d17, d0, d19
7999 .long 0xf22001b0 // vorr d0, d16, d16
8000 .long 0xf22111b1 // vorr d1, d17, d17
8001 .long 0xe8bd4800 // pop {fp, lr}
8002 .long 0xe12fff1c // bx ip
8003
Mike Klein7c4af542017-03-29 18:21:14 -04008004HIDDEN _sk_matrix_3x4_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04008005.globl _sk_matrix_3x4_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008006FUNCTION(_sk_matrix_3x4_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008007_sk_matrix_3x4_vfp4:
8008 .long 0xe92d4800 // push {fp, lr}
8009 .long 0xe591e000 // ldr lr, [r1]
8010 .long 0xe591c004 // ldr ip, [r1, #4]
8011 .long 0xe2811008 // add r1, r1, #8
8012 .long 0xe28e3020 // add r3, lr, #32
8013 .long 0xf4e33c9f // vld1.32 {d19[]}, [r3 :32]
8014 .long 0xe28e302c // add r3, lr, #44
8015 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
8016 .long 0xe28e301c // add r3, lr, #28
8017 .long 0xf2420c33 // vfma.f32 d16, d2, d19
8018 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
8019 .long 0xe28e3018 // add r3, lr, #24
8020 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
8021 .long 0xe28e3024 // add r3, lr, #36
8022 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
8023 .long 0xe28e3028 // add r3, lr, #40
8024 .long 0xf2421c32 // vfma.f32 d17, d2, d18
8025 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
8026 .long 0xe28e3010 // add r3, lr, #16
8027 .long 0xf2422c34 // vfma.f32 d18, d2, d20
8028 .long 0xf4e33c9f // vld1.32 {d19[]}, [r3 :32]
8029 .long 0xe28e300c // add r3, lr, #12
8030 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
8031 .long 0xe28e3014 // add r3, lr, #20
8032 .long 0xf2411c34 // vfma.f32 d17, d1, d20
8033 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
8034 .long 0xf2410c34 // vfma.f32 d16, d1, d20
8035 .long 0xe28e3008 // add r3, lr, #8
8036 .long 0xf2412c33 // vfma.f32 d18, d1, d19
8037 .long 0xf4ee3c9d // vld1.32 {d19[]}, [lr :32]!
8038 .long 0xf4ee4c9f // vld1.32 {d20[]}, [lr :32]
8039 .long 0xf2401c33 // vfma.f32 d17, d0, d19
8040 .long 0xf4e33c9f // vld1.32 {d19[]}, [r3 :32]
8041 .long 0xf2400c33 // vfma.f32 d16, d0, d19
8042 .long 0xf2402c34 // vfma.f32 d18, d0, d20
8043 .long 0xf22101b1 // vorr d0, d17, d17
8044 .long 0xf22021b0 // vorr d2, d16, d16
8045 .long 0xf22211b2 // vorr d1, d18, d18
8046 .long 0xe8bd4800 // pop {fp, lr}
8047 .long 0xe12fff1c // bx ip
8048
Mike Klein7c4af542017-03-29 18:21:14 -04008049HIDDEN _sk_matrix_4x5_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04008050.globl _sk_matrix_4x5_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008051FUNCTION(_sk_matrix_4x5_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008052_sk_matrix_4x5_vfp4:
8053 .long 0xe92d4010 // push {r4, lr}
8054 .long 0xe8911008 // ldm r1, {r3, ip}
8055 .long 0xf2620112 // vorr d16, d2, d2
8056 .long 0xe2811008 // add r1, r1, #8
8057 .long 0xe2834014 // add r4, r3, #20
8058 .long 0xe1a0e003 // mov lr, r3
8059 .long 0xf4e45c9f // vld1.32 {d21[]}, [r4 :32]
8060 .long 0xe2834028 // add r4, r3, #40
8061 .long 0xf4e46c9f // vld1.32 {d22[]}, [r4 :32]
8062 .long 0xe2834038 // add r4, r3, #56
8063 .long 0xf4e47c9f // vld1.32 {d23[]}, [r4 :32]
8064 .long 0xe2834048 // add r4, r3, #72
8065 .long 0xf4a42c9f // vld1.32 {d2[]}, [r4 :32]
8066 .long 0xe2834034 // add r4, r3, #52
8067 .long 0xf2032c37 // vfma.f32 d2, d3, d23
8068 .long 0xf4e48c9f // vld1.32 {d24[]}, [r4 :32]
8069 .long 0xe2834044 // add r4, r3, #68
8070 .long 0xf4e41c9f // vld1.32 {d17[]}, [r4 :32]
8071 .long 0xe2834030 // add r4, r3, #48
8072 .long 0xf2431c38 // vfma.f32 d17, d3, d24
8073 .long 0xf4e49c9f // vld1.32 {d25[]}, [r4 :32]
8074 .long 0xe283403c // add r4, r3, #60
8075 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
8076 .long 0xe283404c // add r4, r3, #76
8077 .long 0xf2002cb6 // vfma.f32 d2, d16, d22
8078 .long 0xf4e42c9f // vld1.32 {d18[]}, [r4 :32]
8079 .long 0xe2834040 // add r4, r3, #64
8080 .long 0xf2432c33 // vfma.f32 d18, d3, d19
8081 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
8082 .long 0xe2834020 // add r4, r3, #32
8083 .long 0xf2433c39 // vfma.f32 d19, d3, d25
8084 .long 0xf4e47c9f // vld1.32 {d23[]}, [r4 :32]
8085 .long 0xe283402c // add r4, r3, #44
8086 .long 0xf4e48c9f // vld1.32 {d24[]}, [r4 :32]
8087 .long 0xe2834024 // add r4, r3, #36
8088 .long 0xf2402cb8 // vfma.f32 d18, d16, d24
8089 .long 0xf4e48c9f // vld1.32 {d24[]}, [r4 :32]
8090 .long 0xf2401cb8 // vfma.f32 d17, d16, d24
8091 .long 0xe2834010 // add r4, r3, #16
8092 .long 0xf2403cb7 // vfma.f32 d19, d16, d23
8093 .long 0xf4ee4c9d // vld1.32 {d20[]}, [lr :32]!
8094 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
8095 .long 0xe283401c // add r4, r3, #28
8096 .long 0xf4e46c9f // vld1.32 {d22[]}, [r4 :32]
8097 .long 0xe2834018 // add r4, r3, #24
8098 .long 0xf2412c36 // vfma.f32 d18, d1, d22
8099 .long 0xf2411c35 // vfma.f32 d17, d1, d21
8100 .long 0xf4ee5c9f // vld1.32 {d21[]}, [lr :32]
8101 .long 0xf2413c30 // vfma.f32 d19, d1, d16
8102 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
8103 .long 0xe2834008 // add r4, r3, #8
8104 .long 0xe283300c // add r3, r3, #12
8105 .long 0xf2012c30 // vfma.f32 d2, d1, d16
8106 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
8107 .long 0xf2401c35 // vfma.f32 d17, d0, d21
8108 .long 0xf2403c34 // vfma.f32 d19, d0, d20
8109 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
8110 .long 0xf2402c34 // vfma.f32 d18, d0, d20
8111 .long 0xf2002c30 // vfma.f32 d2, d0, d16
8112 .long 0xf22111b1 // vorr d1, d17, d17
8113 .long 0xf22301b3 // vorr d0, d19, d19
8114 .long 0xf22231b2 // vorr d3, d18, d18
8115 .long 0xe8bd4010 // pop {r4, lr}
8116 .long 0xe12fff1c // bx ip
8117
Mike Reed02640952017-05-19 15:32:13 -04008118HIDDEN _sk_matrix_4x3_vfp4
8119.globl _sk_matrix_4x3_vfp4
8120FUNCTION(_sk_matrix_4x3_vfp4)
8121_sk_matrix_4x3_vfp4:
8122 .long 0xe92d4010 // push {r4, lr}
8123 .long 0xe8911008 // ldm r1, {r3, ip}
8124 .long 0xe2811008 // add r1, r1, #8
8125 .long 0xe2834018 // add r4, r3, #24
8126 .long 0xe1a0e003 // mov lr, r3
8127 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
8128 .long 0xe2834028 // add r4, r3, #40
8129 .long 0xf4a42c9f // vld1.32 {d2[]}, [r4 :32]
8130 .long 0xe2834014 // add r4, r3, #20
8131 .long 0xf2012c33 // vfma.f32 d2, d1, d19
8132 .long 0xf4e44c9f // vld1.32 {d20[]}, [r4 :32]
8133 .long 0xe2834010 // add r4, r3, #16
8134 .long 0xf4e41c9f // vld1.32 {d17[]}, [r4 :32]
8135 .long 0xe2834020 // add r4, r3, #32
8136 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
8137 .long 0xe283401c // add r4, r3, #28
8138 .long 0xf2410c31 // vfma.f32 d16, d1, d17
8139 .long 0xf4e45c9f // vld1.32 {d21[]}, [r4 :32]
8140 .long 0xe283402c // add r4, r3, #44
8141 .long 0xf4a43c9f // vld1.32 {d3[]}, [r4 :32]
8142 .long 0xe2834024 // add r4, r3, #36
8143 .long 0xf2013c35 // vfma.f32 d3, d1, d21
8144 .long 0xf4e41c9f // vld1.32 {d17[]}, [r4 :32]
8145 .long 0xe2834008 // add r4, r3, #8
8146 .long 0xf2411c34 // vfma.f32 d17, d1, d20
8147 .long 0xe283300c // add r3, r3, #12
8148 .long 0xf4ee2c9d // vld1.32 {d18[]}, [lr :32]!
8149 .long 0xf2400c32 // vfma.f32 d16, d0, d18
8150 .long 0xf4ee4c9f // vld1.32 {d20[]}, [lr :32]
8151 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
8152 .long 0xf2002c33 // vfma.f32 d2, d0, d19
8153 .long 0xf2401c34 // vfma.f32 d17, d0, d20
8154 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
8155 .long 0xf2003c32 // vfma.f32 d3, d0, d18
8156 .long 0xf22001b0 // vorr d0, d16, d16
8157 .long 0xf22111b1 // vorr d1, d17, d17
8158 .long 0xe8bd4010 // pop {r4, lr}
8159 .long 0xe12fff1c // bx ip
8160
Mike Klein7c4af542017-03-29 18:21:14 -04008161HIDDEN _sk_matrix_perspective_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04008162.globl _sk_matrix_perspective_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008163FUNCTION(_sk_matrix_perspective_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008164_sk_matrix_perspective_vfp4:
8165 .long 0xe92d4010 // push {r4, lr}
8166 .long 0xe591e000 // ldr lr, [r1]
8167 .long 0xe591c004 // ldr ip, [r1, #4]
8168 .long 0xe2811008 // add r1, r1, #8
8169 .long 0xe28e301c // add r3, lr, #28
8170 .long 0xe28e4010 // add r4, lr, #16
8171 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
8172 .long 0xe28e3020 // add r3, lr, #32
8173 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
8174 .long 0xe28e3018 // add r3, lr, #24
8175 .long 0xf2411c30 // vfma.f32 d17, d1, d16
8176 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
8177 .long 0xe1a0300e // mov r3, lr
8178 .long 0xf4e42c9f // vld1.32 {d18[]}, [r4 :32]
8179 .long 0xe28e4008 // add r4, lr, #8
8180 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
8181 .long 0xf2401c30 // vfma.f32 d17, d0, d16
8182 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
8183 .long 0xf4e35c9f // vld1.32 {d21[]}, [r3 :32]
8184 .long 0xe28e3014 // add r3, lr, #20
8185 .long 0xf2413c35 // vfma.f32 d19, d1, d21
8186 .long 0xf4e35c9f // vld1.32 {d21[]}, [r3 :32]
8187 .long 0xe28e300c // add r3, lr, #12
8188 .long 0xf2415c32 // vfma.f32 d21, d1, d18
8189 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
8190 .long 0xf3fb4521 // vrecpe.f32 d20, d17
8191 .long 0xf2403c30 // vfma.f32 d19, d0, d16
8192 .long 0xf2411fb4 // vrecps.f32 d17, d17, d20
8193 .long 0xf2405c32 // vfma.f32 d21, d0, d18
8194 .long 0xf3440db1 // vmul.f32 d16, d20, d17
8195 .long 0xf3030db0 // vmul.f32 d0, d19, d16
8196 .long 0xf3051db0 // vmul.f32 d1, d21, d16
8197 .long 0xe8bd4010 // pop {r4, lr}
8198 .long 0xe12fff1c // bx ip
8199
Herb Derby4de13042017-05-15 10:49:39 -04008200HIDDEN _sk_evenly_spaced_gradient_vfp4
8201.globl _sk_evenly_spaced_gradient_vfp4
8202FUNCTION(_sk_evenly_spaced_gradient_vfp4)
8203_sk_evenly_spaced_gradient_vfp4:
8204 .long 0xe92d47f0 // push {r4, r5, r6, r7, r8, r9, sl, lr}
8205 .long 0xed2d8b0a // vpush {d8-d12}
8206 .long 0xe8911008 // ldm r1, {r3, ip}
8207 .long 0xe2811008 // add r1, r1, #8
8208 .long 0xe8934010 // ldm r3, {r4, lr}
8209 .long 0xe2444001 // sub r4, r4, #1
8210 .long 0xe5937010 // ldr r7, [r3, #16]
8211 .long 0xe593a020 // ldr sl, [r3, #32]
8212 .long 0xee804b90 // vdup.32 d16, r4
8213 .long 0xe593900c // ldr r9, [r3, #12]
8214 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
8215 .long 0xe5938008 // ldr r8, [r3, #8]
8216 .long 0xf3400d90 // vmul.f32 d16, d16, d0
8217 .long 0xf3fb0720 // vcvt.s32.f32 d16, d16
8218 .long 0xee304b90 // vmov.32 r4, d16[1]
8219 .long 0xe0875104 // add r5, r7, r4, lsl #2
8220 .long 0xe08a6104 // add r6, sl, r4, lsl #2
8221 .long 0xedd59a00 // vldr s19, [r5]
8222 .long 0xee105b90 // vmov.32 r5, d16[0]
8223 .long 0xedd63a00 // vldr s7, [r6]
8224 .long 0xe0896104 // add r6, r9, r4, lsl #2
8225 .long 0xedd6aa00 // vldr s21, [r6]
8226 .long 0xe0896105 // add r6, r9, r5, lsl #2
8227 .long 0xe0877105 // add r7, r7, r5, lsl #2
8228 .long 0xe5939018 // ldr r9, [r3, #24]
8229 .long 0xed96aa00 // vldr s20, [r6]
8230 .long 0xe593601c // ldr r6, [r3, #28]
8231 .long 0xed979a00 // vldr s18, [r7]
8232 .long 0xe0867104 // add r7, r6, r4, lsl #2
8233 .long 0xe5933014 // ldr r3, [r3, #20]
8234 .long 0xe0866105 // add r6, r6, r5, lsl #2
8235 .long 0xedd72a00 // vldr s5, [r7]
8236 .long 0xe0887104 // add r7, r8, r4, lsl #2
8237 .long 0xedd7ba00 // vldr s23, [r7]
8238 .long 0xe0887105 // add r7, r8, r5, lsl #2
8239 .long 0xe08a8105 // add r8, sl, r5, lsl #2
8240 .long 0xed962a00 // vldr s4, [r6]
8241 .long 0xed97ba00 // vldr s22, [r7]
8242 .long 0xe0897104 // add r7, r9, r4, lsl #2
8243 .long 0xed983a00 // vldr s6, [r8]
8244 .long 0xf2002c1a // vfma.f32 d2, d0, d10
8245 .long 0xedd71a00 // vldr s3, [r7]
8246 .long 0xe08e7104 // add r7, lr, r4, lsl #2
8247 .long 0xf2003c19 // vfma.f32 d3, d0, d9
8248 .long 0xedd7ca00 // vldr s25, [r7]
8249 .long 0xe08e7105 // add r7, lr, r5, lsl #2
8250 .long 0xed97ca00 // vldr s24, [r7]
8251 .long 0xe0837105 // add r7, r3, r5, lsl #2
8252 .long 0xe0833104 // add r3, r3, r4, lsl #2
8253 .long 0xedd38a00 // vldr s17, [r3]
8254 .long 0xe0893105 // add r3, r9, r5, lsl #2
8255 .long 0xed978a00 // vldr s16, [r7]
8256 .long 0xed931a00 // vldr s2, [r3]
8257 .long 0xf2008c1c // vfma.f32 d8, d0, d12
8258 .long 0xf2001c1b // vfma.f32 d1, d0, d11
8259 .long 0xf2280118 // vorr d0, d8, d8
8260 .long 0xecbd8b0a // vpop {d8-d12}
8261 .long 0xe8bd47f0 // pop {r4, r5, r6, r7, r8, r9, sl, lr}
8262 .long 0xe12fff1c // bx ip
8263
Mike Klein5c7960b2017-05-11 10:59:22 -04008264HIDDEN _sk_gradient_vfp4
8265.globl _sk_gradient_vfp4
8266FUNCTION(_sk_gradient_vfp4)
8267_sk_gradient_vfp4:
Herb Derby4de13042017-05-15 10:49:39 -04008268 .long 0xe92d4ff0 // push {r4, r5, r6, r7, r8, r9, sl, fp, lr}
8269 .long 0xe24dd004 // sub sp, sp, #4
8270 .long 0xed2d8b0a // vpush {d8-d12}
8271 .long 0xe591c000 // ldr ip, [r1]
8272 .long 0xf2c00010 // vmov.i32 d16, #0
8273 .long 0xe59c3000 // ldr r3, [ip]
8274 .long 0xe3530002 // cmp r3, #2
Mike Klein8ca33562017-05-23 08:07:43 -04008275 .long 0x3a00000b // bcc 375c <sk_gradient_vfp4+0x50>
Herb Derby4de13042017-05-15 10:49:39 -04008276 .long 0xe59c4024 // ldr r4, [ip, #36]
Herb Derby7b4202d2017-04-10 10:52:34 -04008277 .long 0xf2c01010 // vmov.i32 d17, #0
Herb Derby4de13042017-05-15 10:49:39 -04008278 .long 0xf2c02011 // vmov.i32 d18, #1
8279 .long 0xe243e001 // sub lr, r3, #1
8280 .long 0xf2c00010 // vmov.i32 d16, #0
8281 .long 0xe2843004 // add r3, r4, #4
8282 .long 0xf4e33c9d // vld1.32 {d19[]}, [r3 :32]!
8283 .long 0xe25ee001 // subs lr, lr, #1
8284 .long 0xf3403e23 // vcge.f32 d19, d0, d19
8285 .long 0xf35231b1 // vbsl d19, d18, d17
8286 .long 0xf26308a0 // vadd.i32 d16, d19, d16
Mike Klein8ca33562017-05-23 08:07:43 -04008287 .long 0x1afffff9 // bne 3744 <sk_gradient_vfp4+0x38>
Herb Derby4de13042017-05-15 10:49:39 -04008288 .long 0xee303b90 // vmov.32 r3, d16[1]
8289 .long 0xe59c7010 // ldr r7, [ip, #16]
8290 .long 0xee10eb90 // vmov.32 lr, d16[0]
8291 .long 0xe59c600c // ldr r6, [ip, #12]
8292 .long 0xe59c5020 // ldr r5, [ip, #32]
8293 .long 0xe59c8008 // ldr r8, [ip, #8]
8294 .long 0xe59c9004 // ldr r9, [ip, #4]
8295 .long 0xe0874103 // add r4, r7, r3, lsl #2
8296 .long 0xe085a10e // add sl, r5, lr, lsl #2
8297 .long 0xedd49a00 // vldr s19, [r4]
8298 .long 0xe087410e // add r4, r7, lr, lsl #2
8299 .long 0xe59c7018 // ldr r7, [ip, #24]
8300 .long 0xed949a00 // vldr s18, [r4]
8301 .long 0xe0864103 // add r4, r6, r3, lsl #2
8302 .long 0xedd4aa00 // vldr s21, [r4]
8303 .long 0xe086410e // add r4, r6, lr, lsl #2
8304 .long 0xed94aa00 // vldr s20, [r4]
8305 .long 0xe0854103 // add r4, r5, r3, lsl #2
8306 .long 0xe0885103 // add r5, r8, r3, lsl #2
8307 .long 0xedd43a00 // vldr s7, [r4]
8308 .long 0xe59c401c // ldr r4, [ip, #28]
8309 .long 0xedd5ba00 // vldr s23, [r5]
8310 .long 0xe088510e // add r5, r8, lr, lsl #2
8311 .long 0xe0846103 // add r6, r4, r3, lsl #2
8312 .long 0xe084b10e // add fp, r4, lr, lsl #2
8313 .long 0xe59c4014 // ldr r4, [ip, #20]
8314 .long 0xedd62a00 // vldr s5, [r6]
8315 .long 0xe089610e // add r6, r9, lr, lsl #2
8316 .long 0xe0899103 // add r9, r9, r3, lsl #2
8317 .long 0xed95ba00 // vldr s22, [r5]
8318 .long 0xe0875103 // add r5, r7, r3, lsl #2
8319 .long 0xe0843103 // add r3, r4, r3, lsl #2
8320 .long 0xedd9ca00 // vldr s25, [r9]
8321 .long 0xedd51a00 // vldr s3, [r5]
8322 .long 0xe084510e // add r5, r4, lr, lsl #2
8323 .long 0xedd38a00 // vldr s17, [r3]
8324 .long 0xe087310e // add r3, r7, lr, lsl #2
8325 .long 0xed96ca00 // vldr s24, [r6]
8326 .long 0xed958a00 // vldr s16, [r5]
8327 .long 0xed931a00 // vldr s2, [r3]
8328 .long 0xf2008c1c // vfma.f32 d8, d0, d12
8329 .long 0xed9b2a00 // vldr s4, [fp]
8330 .long 0xed9a3a00 // vldr s6, [sl]
8331 .long 0xf2001c1b // vfma.f32 d1, d0, d11
Herb Derby7b4202d2017-04-10 10:52:34 -04008332 .long 0xe5913004 // ldr r3, [r1, #4]
Herb Derby4de13042017-05-15 10:49:39 -04008333 .long 0xf2002c1a // vfma.f32 d2, d0, d10
8334 .long 0xf2003c19 // vfma.f32 d3, d0, d9
Herb Derby7b4202d2017-04-10 10:52:34 -04008335 .long 0xe2811008 // add r1, r1, #8
Herb Derby4de13042017-05-15 10:49:39 -04008336 .long 0xf2280118 // vorr d0, d8, d8
8337 .long 0xecbd8b0a // vpop {d8-d12}
8338 .long 0xe28dd004 // add sp, sp, #4
8339 .long 0xe8bd4ff0 // pop {r4, r5, r6, r7, r8, r9, sl, fp, lr}
Herb Derby7b4202d2017-04-10 10:52:34 -04008340 .long 0xe12fff13 // bx r3
8341
Mike Klein5c7960b2017-05-11 10:59:22 -04008342HIDDEN _sk_evenly_spaced_2_stop_gradient_vfp4
8343.globl _sk_evenly_spaced_2_stop_gradient_vfp4
8344FUNCTION(_sk_evenly_spaced_2_stop_gradient_vfp4)
8345_sk_evenly_spaced_2_stop_gradient_vfp4:
Mike Klein8a823fa2017-04-05 17:29:26 -04008346 .long 0xe92d4010 // push {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04008347 .long 0xe8911008 // ldm r1, {r3, ip}
8348 .long 0xe2811008 // add r1, r1, #8
Herb Derby7b4202d2017-04-10 10:52:34 -04008349 .long 0xe283400c // add r4, r3, #12
Mike Klein8a823fa2017-04-05 17:29:26 -04008350 .long 0xe1a0e003 // mov lr, r3
Mike Klein8a823fa2017-04-05 17:29:26 -04008351 .long 0xf4e42c9f // vld1.32 {d18[]}, [r4 :32]
Mike Klein8a823fa2017-04-05 17:29:26 -04008352 .long 0xe2834008 // add r4, r3, #8
Herb Derby7b4202d2017-04-10 10:52:34 -04008353 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
8354 .long 0xe2834018 // add r4, r3, #24
Mike Klein8a823fa2017-04-05 17:29:26 -04008355 .long 0xf4a42c9f // vld1.32 {d2[]}, [r4 :32]
Herb Derby7b4202d2017-04-10 10:52:34 -04008356 .long 0xe2834010 // add r4, r3, #16
8357 .long 0xf2002c33 // vfma.f32 d2, d0, d19
8358 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
8359 .long 0xe283401c // add r4, r3, #28
8360 .long 0xe2833014 // add r3, r3, #20
8361 .long 0xf4ee1c9d // vld1.32 {d17[]}, [lr :32]!
8362 .long 0xf2400c31 // vfma.f32 d16, d0, d17
8363 .long 0xf4a43c9f // vld1.32 {d3[]}, [r4 :32]
8364 .long 0xf2003c32 // vfma.f32 d3, d0, d18
8365 .long 0xf4ee1c9f // vld1.32 {d17[]}, [lr :32]
8366 .long 0xf4a31c9f // vld1.32 {d1[]}, [r3 :32]
8367 .long 0xf2001c31 // vfma.f32 d1, d0, d17
Mike Kleind7e06ae2017-03-29 16:33:06 -04008368 .long 0xf22001b0 // vorr d0, d16, d16
Mike Klein8a823fa2017-04-05 17:29:26 -04008369 .long 0xe8bd4010 // pop {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04008370 .long 0xe12fff1c // bx ip
Herb Derby4de13042017-05-15 10:49:39 -04008371 .long 0xe320f000 // nop {0}
Mike Klein0a904492017-04-12 12:52:48 -04008372
Mike Klein5c7960b2017-05-11 10:59:22 -04008373HIDDEN _sk_xy_to_unit_angle_vfp4
8374.globl _sk_xy_to_unit_angle_vfp4
8375FUNCTION(_sk_xy_to_unit_angle_vfp4)
8376_sk_xy_to_unit_angle_vfp4:
Herb Derby7eb86982017-05-02 19:04:39 -04008377 .long 0xed2d8b06 // vpush {d8-d10}
8378 .long 0xf3f90701 // vabs.f32 d16, d1
8379 .long 0xeddf3b24 // vldr d19, [pc, #144]
8380 .long 0xf3f91700 // vabs.f32 d17, d0
8381 .long 0xeddf4b24 // vldr d20, [pc, #144]
8382 .long 0xe4913004 // ldr r3, [r1], #4
8383 .long 0xf2018fa0 // vmax.f32 d8, d17, d16
8384 .long 0xf2219fa0 // vmin.f32 d9, d17, d16
8385 .long 0xf3600ea1 // vcgt.f32 d16, d16, d17
8386 .long 0xeec9aaa8 // vdiv.f32 s21, s19, s17
8387 .long 0xee89aa08 // vdiv.f32 s20, s18, s16
8388 .long 0xf34a2d1a // vmul.f32 d18, d10, d10
8389 .long 0xf3423db3 // vmul.f32 d19, d18, d19
8390 .long 0xf2433da4 // vadd.f32 d19, d19, d20
8391 .long 0xeddf4b1c // vldr d20, [pc, #112]
8392 .long 0xf3423db3 // vmul.f32 d19, d18, d19
8393 .long 0xf2433da4 // vadd.f32 d19, d19, d20
8394 .long 0xf3422db3 // vmul.f32 d18, d18, d19
8395 .long 0xeddf3b1a // vldr d19, [pc, #104]
8396 .long 0xf2422da3 // vadd.f32 d18, d18, d19
8397 .long 0xf2c53f10 // vmov.f32 d19, #0.25
8398 .long 0xf34a2d32 // vmul.f32 d18, d10, d18
8399 .long 0xf2631da2 // vsub.f32 d17, d19, d18
8400 .long 0xf2c3361f // vmov.i32 d19, #1056964608
8401 .long 0xf35101b2 // vbsl d16, d17, d18
8402 .long 0xf2c72f10 // vmov.f32 d18, #1
8403 .long 0xf2631da0 // vsub.f32 d17, d19, d16
8404 .long 0xf3f93600 // vclt.f32 d19, d0, #0
8405 .long 0xf35131b0 // vbsl d19, d17, d16
8406 .long 0xf2c01010 // vmov.i32 d17, #0
8407 .long 0xf2620da3 // vsub.f32 d16, d18, d19
8408 .long 0xf3f92601 // vclt.f32 d18, d1, #0
8409 .long 0xf35021b3 // vbsl d18, d16, d19
8410 .long 0xf3420ea1 // vcge.f32 d16, d18, d17
8411 .long 0xf3613ea2 // vcgt.f32 d19, d17, d18
8412 .long 0xf26301b0 // vorr d16, d19, d16
8413 .long 0xf3b005a0 // vmvn d0, d16
8414 .long 0xf31101b2 // vbsl d0, d17, d18
8415 .long 0xecbd8b06 // vpop {d8-d10}
8416 .long 0xe12fff13 // bx r3
8417 .long 0xbbe72b6f // .word 0xbbe72b6f
8418 .long 0xbbe72b6f // .word 0xbbe72b6f
8419 .long 0x3ccad79f // .word 0x3ccad79f
8420 .long 0x3ccad79f // .word 0x3ccad79f
8421 .long 0xbd5464d4 // .word 0xbd5464d4
8422 .long 0xbd5464d4 // .word 0xbd5464d4
8423 .long 0x3e22f0a9 // .word 0x3e22f0a9
8424 .long 0x3e22f0a9 // .word 0x3e22f0a9
8425
Herb Derby090fbf82017-05-08 15:10:36 -04008426HIDDEN _sk_xy_to_radius_vfp4
8427.globl _sk_xy_to_radius_vfp4
8428FUNCTION(_sk_xy_to_radius_vfp4)
8429_sk_xy_to_radius_vfp4:
8430 .long 0xf3410d11 // vmul.f32 d16, d1, d1
8431 .long 0xe4913004 // ldr r3, [r1], #4
8432 .long 0xf3401d10 // vmul.f32 d17, d0, d0
8433 .long 0xf2410da0 // vadd.f32 d16, d17, d16
8434 .long 0xf3fb15a0 // vrsqrte.f32 d17, d16
8435 .long 0xf3412db1 // vmul.f32 d18, d17, d17
Mike Kleinfd35c742017-05-15 15:55:54 -04008436 .long 0xf2602fb2 // vrsqrts.f32 d18, d16, d18
8437 .long 0xf3411db2 // vmul.f32 d17, d17, d18
8438 .long 0xf3412db1 // vmul.f32 d18, d17, d17
8439 .long 0xf2602fb2 // vrsqrts.f32 d18, d16, d18
8440 .long 0xf3411db2 // vmul.f32 d17, d17, d18
8441 .long 0xf3000db1 // vmul.f32 d0, d16, d17
Herb Derby090fbf82017-05-08 15:10:36 -04008442 .long 0xe12fff13 // bx r3
Mike Kleinfd35c742017-05-15 15:55:54 -04008443 .long 0xe320f000 // nop {0}
Herb Derby090fbf82017-05-08 15:10:36 -04008444
Mike Klein0a904492017-04-12 12:52:48 -04008445HIDDEN _sk_save_xy_vfp4
8446.globl _sk_save_xy_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008447FUNCTION(_sk_save_xy_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008448_sk_save_xy_vfp4:
8449 .long 0xf2c3061f // vmov.i32 d16, #1056964608
8450 .long 0xeddf7b17 // vldr d23, [pc, #92]
8451 .long 0xf2c06010 // vmov.i32 d22, #0
8452 .long 0xe5913000 // ldr r3, [r1]
8453 .long 0xf2401d20 // vadd.f32 d17, d0, d16
8454 .long 0xf2410d20 // vadd.f32 d16, d1, d16
8455 .long 0xed830b00 // vstr d0, [r3]
8456 .long 0xed831b08 // vstr d1, [r3, #32]
8457 .long 0xf3fb2721 // vcvt.s32.f32 d18, d17
8458 .long 0xf3fb3720 // vcvt.s32.f32 d19, d16
8459 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
8460 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
8461 .long 0xf3624ea1 // vcgt.f32 d20, d18, d17
8462 .long 0xf3635ea0 // vcgt.f32 d21, d19, d16
8463 .long 0xf35741b6 // vbsl d20, d23, d22
8464 .long 0xf35751b6 // vbsl d21, d23, d22
8465 .long 0xf2622da4 // vsub.f32 d18, d18, d20
8466 .long 0xf2633da5 // vsub.f32 d19, d19, d21
8467 .long 0xf2611da2 // vsub.f32 d17, d17, d18
8468 .long 0xf2600da3 // vsub.f32 d16, d16, d19
8469 .long 0xedc31b10 // vstr d17, [r3, #64]
8470 .long 0xedc30b18 // vstr d16, [r3, #96]
8471 .long 0xe2813008 // add r3, r1, #8
8472 .long 0xe591c004 // ldr ip, [r1, #4]
8473 .long 0xe1a01003 // mov r1, r3
8474 .long 0xe12fff1c // bx ip
8475 .long 0x3f800000 // .word 0x3f800000
8476 .long 0x3f800000 // .word 0x3f800000
8477
8478HIDDEN _sk_accumulate_vfp4
8479.globl _sk_accumulate_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008480FUNCTION(_sk_accumulate_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008481_sk_accumulate_vfp4:
8482 .long 0xe8911008 // ldm r1, {r3, ip}
8483 .long 0xe2811008 // add r1, r1, #8
8484 .long 0xedd31b28 // vldr d17, [r3, #160]
8485 .long 0xedd30b20 // vldr d16, [r3, #128]
8486 .long 0xf3400db1 // vmul.f32 d16, d16, d17
8487 .long 0xf2004c90 // vfma.f32 d4, d16, d0
8488 .long 0xf2005c91 // vfma.f32 d5, d16, d1
8489 .long 0xf2006c92 // vfma.f32 d6, d16, d2
8490 .long 0xf2007c93 // vfma.f32 d7, d16, d3
8491 .long 0xe12fff1c // bx ip
8492
8493HIDDEN _sk_bilinear_nx_vfp4
8494.globl _sk_bilinear_nx_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008495FUNCTION(_sk_bilinear_nx_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008496_sk_bilinear_nx_vfp4:
8497 .long 0xe5913000 // ldr r3, [r1]
8498 .long 0xf2c70f10 // vmov.f32 d16, #1
8499 .long 0xedd32b10 // vldr d18, [r3, #64]
8500 .long 0xf2600da2 // vsub.f32 d16, d16, d18
8501 .long 0xedd31b00 // vldr d17, [r3]
8502 .long 0xf3c3261f // vmov.i32 d18, #-1090519040
8503 .long 0xf2010da2 // vadd.f32 d0, d17, d18
8504 .long 0xedc30b20 // vstr d16, [r3, #128]
8505 .long 0xe2813008 // add r3, r1, #8
8506 .long 0xe591c004 // ldr ip, [r1, #4]
8507 .long 0xe1a01003 // mov r1, r3
8508 .long 0xe12fff1c // bx ip
8509
8510HIDDEN _sk_bilinear_px_vfp4
8511.globl _sk_bilinear_px_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008512FUNCTION(_sk_bilinear_px_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008513_sk_bilinear_px_vfp4:
8514 .long 0xe5913000 // ldr r3, [r1]
8515 .long 0xf2c3061f // vmov.i32 d16, #1056964608
8516 .long 0xedd31b00 // vldr d17, [r3]
8517 .long 0xedd32b10 // vldr d18, [r3, #64]
8518 .long 0xf2010da0 // vadd.f32 d0, d17, d16
8519 .long 0xedc32b20 // vstr d18, [r3, #128]
8520 .long 0xe2813008 // add r3, r1, #8
8521 .long 0xe591c004 // ldr ip, [r1, #4]
8522 .long 0xe1a01003 // mov r1, r3
8523 .long 0xe12fff1c // bx ip
8524
8525HIDDEN _sk_bilinear_ny_vfp4
8526.globl _sk_bilinear_ny_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008527FUNCTION(_sk_bilinear_ny_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008528_sk_bilinear_ny_vfp4:
8529 .long 0xe5913000 // ldr r3, [r1]
8530 .long 0xf2c70f10 // vmov.f32 d16, #1
8531 .long 0xedd32b18 // vldr d18, [r3, #96]
8532 .long 0xf2600da2 // vsub.f32 d16, d16, d18
8533 .long 0xedd31b08 // vldr d17, [r3, #32]
8534 .long 0xf3c3261f // vmov.i32 d18, #-1090519040
8535 .long 0xf2011da2 // vadd.f32 d1, d17, d18
8536 .long 0xedc30b28 // vstr d16, [r3, #160]
8537 .long 0xe2813008 // add r3, r1, #8
8538 .long 0xe591c004 // ldr ip, [r1, #4]
8539 .long 0xe1a01003 // mov r1, r3
8540 .long 0xe12fff1c // bx ip
8541
8542HIDDEN _sk_bilinear_py_vfp4
8543.globl _sk_bilinear_py_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008544FUNCTION(_sk_bilinear_py_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008545_sk_bilinear_py_vfp4:
8546 .long 0xe5913000 // ldr r3, [r1]
8547 .long 0xf2c3061f // vmov.i32 d16, #1056964608
8548 .long 0xedd31b08 // vldr d17, [r3, #32]
8549 .long 0xedd32b18 // vldr d18, [r3, #96]
8550 .long 0xf2011da0 // vadd.f32 d1, d17, d16
8551 .long 0xedc32b28 // vstr d18, [r3, #160]
8552 .long 0xe2813008 // add r3, r1, #8
8553 .long 0xe591c004 // ldr ip, [r1, #4]
8554 .long 0xe1a01003 // mov r1, r3
8555 .long 0xe12fff1c // bx ip
8556
8557HIDDEN _sk_bicubic_n3x_vfp4
8558.globl _sk_bicubic_n3x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008559FUNCTION(_sk_bicubic_n3x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008560_sk_bicubic_n3x_vfp4:
8561 .long 0xe5913000 // ldr r3, [r1]
8562 .long 0xf2c70f10 // vmov.f32 d16, #1
8563 .long 0xeddf3b10 // vldr d19, [pc, #64]
8564 .long 0xedd32b10 // vldr d18, [r3, #64]
8565 .long 0xf2600da2 // vsub.f32 d16, d16, d18
8566 .long 0xeddf2b0b // vldr d18, [pc, #44]
8567 .long 0xedd31b00 // vldr d17, [r3]
8568 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
8569 .long 0xf3400db0 // vmul.f32 d16, d16, d16
8570 .long 0xf3c72f18 // vmov.f32 d18, #-1.5
8571 .long 0xf2010da2 // vadd.f32 d0, d17, d18
8572 .long 0xf3400db3 // vmul.f32 d16, d16, d19
8573 .long 0xedc30b20 // vstr d16, [r3, #128]
8574 .long 0xe2813008 // add r3, r1, #8
8575 .long 0xe591c004 // ldr ip, [r1, #4]
8576 .long 0xe1a01003 // mov r1, r3
8577 .long 0xe12fff1c // bx ip
8578 .long 0xe320f000 // nop {0}
8579 .long 0x3ec71c72 // .word 0x3ec71c72
8580 .long 0x3ec71c72 // .word 0x3ec71c72
8581 .long 0xbeaaaaab // .word 0xbeaaaaab
8582 .long 0xbeaaaaab // .word 0xbeaaaaab
8583
8584HIDDEN _sk_bicubic_n1x_vfp4
8585.globl _sk_bicubic_n1x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008586FUNCTION(_sk_bicubic_n1x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008587_sk_bicubic_n1x_vfp4:
8588 .long 0xe5913000 // ldr r3, [r1]
8589 .long 0xf2c70f10 // vmov.f32 d16, #1
8590 .long 0xf2c73f18 // vmov.f32 d19, #1.5
8591 .long 0xedd32b10 // vldr d18, [r3, #64]
8592 .long 0xf2600da2 // vsub.f32 d16, d16, d18
8593 .long 0xeddf2b0d // vldr d18, [pc, #52]
8594 .long 0xedd31b00 // vldr d17, [r3]
8595 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
8596 .long 0xf2c3261f // vmov.i32 d18, #1056964608
8597 .long 0xf2402cb3 // vfma.f32 d18, d16, d19
8598 .long 0xeddf3b0a // vldr d19, [pc, #40]
8599 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
8600 .long 0xf3c3061f // vmov.i32 d16, #-1090519040
8601 .long 0xf2010da0 // vadd.f32 d0, d17, d16
8602 .long 0xedc33b20 // vstr d19, [r3, #128]
8603 .long 0xe2813008 // add r3, r1, #8
8604 .long 0xe591c004 // ldr ip, [r1, #4]
8605 .long 0xe1a01003 // mov r1, r3
8606 .long 0xe12fff1c // bx ip
8607 .long 0xe320f000 // nop {0}
8608 .long 0xbf955555 // .word 0xbf955555
8609 .long 0xbf955555 // .word 0xbf955555
8610 .long 0x3d638e39 // .word 0x3d638e39
8611 .long 0x3d638e39 // .word 0x3d638e39
8612
8613HIDDEN _sk_bicubic_p1x_vfp4
8614.globl _sk_bicubic_p1x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008615FUNCTION(_sk_bicubic_p1x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008616_sk_bicubic_p1x_vfp4:
8617 .long 0xe5913000 // ldr r3, [r1]
8618 .long 0xf2c71f18 // vmov.f32 d17, #1.5
8619 .long 0xeddf0b0c // vldr d16, [pc, #48]
8620 .long 0xedd33b10 // vldr d19, [r3, #64]
8621 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
8622 .long 0xedd32b00 // vldr d18, [r3]
8623 .long 0xf2c3061f // vmov.i32 d16, #1056964608
8624 .long 0xf2020da0 // vadd.f32 d0, d18, d16
8625 .long 0xf2430cb1 // vfma.f32 d16, d19, d17
8626 .long 0xeddf1b07 // vldr d17, [pc, #28]
8627 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
8628 .long 0xedc31b20 // vstr d17, [r3, #128]
8629 .long 0xe2813008 // add r3, r1, #8
8630 .long 0xe591c004 // ldr ip, [r1, #4]
8631 .long 0xe1a01003 // mov r1, r3
8632 .long 0xe12fff1c // bx ip
8633 .long 0xbf955555 // .word 0xbf955555
8634 .long 0xbf955555 // .word 0xbf955555
8635 .long 0x3d638e39 // .word 0x3d638e39
8636 .long 0x3d638e39 // .word 0x3d638e39
8637
8638HIDDEN _sk_bicubic_p3x_vfp4
8639.globl _sk_bicubic_p3x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008640FUNCTION(_sk_bicubic_p3x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008641_sk_bicubic_p3x_vfp4:
8642 .long 0xe5913000 // ldr r3, [r1]
8643 .long 0xeddf0b0d // vldr d16, [pc, #52]
8644 .long 0xeddf3b0e // vldr d19, [pc, #56]
8645 .long 0xedd32b10 // vldr d18, [r3, #64]
8646 .long 0xf2423cb0 // vfma.f32 d19, d18, d16
8647 .long 0xedd31b00 // vldr d17, [r3]
8648 .long 0xf3420db2 // vmul.f32 d16, d18, d18
8649 .long 0xf2c72f18 // vmov.f32 d18, #1.5
8650 .long 0xf2010da2 // vadd.f32 d0, d17, d18
8651 .long 0xf3400db3 // vmul.f32 d16, d16, d19
8652 .long 0xedc30b20 // vstr d16, [r3, #128]
8653 .long 0xe2813008 // add r3, r1, #8
8654 .long 0xe591c004 // ldr ip, [r1, #4]
8655 .long 0xe1a01003 // mov r1, r3
8656 .long 0xe12fff1c // bx ip
8657 .long 0xe320f000 // nop {0}
8658 .long 0x3ec71c72 // .word 0x3ec71c72
8659 .long 0x3ec71c72 // .word 0x3ec71c72
8660 .long 0xbeaaaaab // .word 0xbeaaaaab
8661 .long 0xbeaaaaab // .word 0xbeaaaaab
8662
8663HIDDEN _sk_bicubic_n3y_vfp4
8664.globl _sk_bicubic_n3y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008665FUNCTION(_sk_bicubic_n3y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008666_sk_bicubic_n3y_vfp4:
8667 .long 0xe5913000 // ldr r3, [r1]
8668 .long 0xf2c70f10 // vmov.f32 d16, #1
8669 .long 0xeddf3b10 // vldr d19, [pc, #64]
8670 .long 0xedd32b18 // vldr d18, [r3, #96]
8671 .long 0xf2600da2 // vsub.f32 d16, d16, d18
8672 .long 0xeddf2b0b // vldr d18, [pc, #44]
8673 .long 0xedd31b08 // vldr d17, [r3, #32]
8674 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
8675 .long 0xf3400db0 // vmul.f32 d16, d16, d16
8676 .long 0xf3c72f18 // vmov.f32 d18, #-1.5
8677 .long 0xf2011da2 // vadd.f32 d1, d17, d18
8678 .long 0xf3400db3 // vmul.f32 d16, d16, d19
8679 .long 0xedc30b28 // vstr d16, [r3, #160]
8680 .long 0xe2813008 // add r3, r1, #8
8681 .long 0xe591c004 // ldr ip, [r1, #4]
8682 .long 0xe1a01003 // mov r1, r3
8683 .long 0xe12fff1c // bx ip
8684 .long 0xe320f000 // nop {0}
8685 .long 0x3ec71c72 // .word 0x3ec71c72
8686 .long 0x3ec71c72 // .word 0x3ec71c72
8687 .long 0xbeaaaaab // .word 0xbeaaaaab
8688 .long 0xbeaaaaab // .word 0xbeaaaaab
8689
8690HIDDEN _sk_bicubic_n1y_vfp4
8691.globl _sk_bicubic_n1y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008692FUNCTION(_sk_bicubic_n1y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008693_sk_bicubic_n1y_vfp4:
8694 .long 0xe5913000 // ldr r3, [r1]
8695 .long 0xf2c70f10 // vmov.f32 d16, #1
8696 .long 0xf2c73f18 // vmov.f32 d19, #1.5
8697 .long 0xedd32b18 // vldr d18, [r3, #96]
8698 .long 0xf2600da2 // vsub.f32 d16, d16, d18
8699 .long 0xeddf2b0d // vldr d18, [pc, #52]
8700 .long 0xedd31b08 // vldr d17, [r3, #32]
8701 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
8702 .long 0xf2c3261f // vmov.i32 d18, #1056964608
8703 .long 0xf2402cb3 // vfma.f32 d18, d16, d19
8704 .long 0xeddf3b0a // vldr d19, [pc, #40]
8705 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
8706 .long 0xf3c3061f // vmov.i32 d16, #-1090519040
8707 .long 0xf2011da0 // vadd.f32 d1, d17, d16
8708 .long 0xedc33b28 // vstr d19, [r3, #160]
8709 .long 0xe2813008 // add r3, r1, #8
8710 .long 0xe591c004 // ldr ip, [r1, #4]
8711 .long 0xe1a01003 // mov r1, r3
8712 .long 0xe12fff1c // bx ip
8713 .long 0xe320f000 // nop {0}
8714 .long 0xbf955555 // .word 0xbf955555
8715 .long 0xbf955555 // .word 0xbf955555
8716 .long 0x3d638e39 // .word 0x3d638e39
8717 .long 0x3d638e39 // .word 0x3d638e39
8718
8719HIDDEN _sk_bicubic_p1y_vfp4
8720.globl _sk_bicubic_p1y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008721FUNCTION(_sk_bicubic_p1y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008722_sk_bicubic_p1y_vfp4:
8723 .long 0xe5913000 // ldr r3, [r1]
8724 .long 0xf2c71f18 // vmov.f32 d17, #1.5
8725 .long 0xeddf0b0c // vldr d16, [pc, #48]
8726 .long 0xedd33b18 // vldr d19, [r3, #96]
8727 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
8728 .long 0xedd32b08 // vldr d18, [r3, #32]
8729 .long 0xf2c3061f // vmov.i32 d16, #1056964608
8730 .long 0xf2021da0 // vadd.f32 d1, d18, d16
8731 .long 0xf2430cb1 // vfma.f32 d16, d19, d17
8732 .long 0xeddf1b07 // vldr d17, [pc, #28]
8733 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
8734 .long 0xedc31b28 // vstr d17, [r3, #160]
8735 .long 0xe2813008 // add r3, r1, #8
8736 .long 0xe591c004 // ldr ip, [r1, #4]
8737 .long 0xe1a01003 // mov r1, r3
8738 .long 0xe12fff1c // bx ip
8739 .long 0xbf955555 // .word 0xbf955555
8740 .long 0xbf955555 // .word 0xbf955555
8741 .long 0x3d638e39 // .word 0x3d638e39
8742 .long 0x3d638e39 // .word 0x3d638e39
8743
8744HIDDEN _sk_bicubic_p3y_vfp4
8745.globl _sk_bicubic_p3y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04008746FUNCTION(_sk_bicubic_p3y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04008747_sk_bicubic_p3y_vfp4:
8748 .long 0xe5913000 // ldr r3, [r1]
8749 .long 0xeddf0b0d // vldr d16, [pc, #52]
8750 .long 0xeddf3b0e // vldr d19, [pc, #56]
8751 .long 0xedd32b18 // vldr d18, [r3, #96]
8752 .long 0xf2423cb0 // vfma.f32 d19, d18, d16
8753 .long 0xedd31b08 // vldr d17, [r3, #32]
8754 .long 0xf3420db2 // vmul.f32 d16, d18, d18
8755 .long 0xf2c72f18 // vmov.f32 d18, #1.5
8756 .long 0xf2011da2 // vadd.f32 d1, d17, d18
8757 .long 0xf3400db3 // vmul.f32 d16, d16, d19
8758 .long 0xedc30b28 // vstr d16, [r3, #160]
8759 .long 0xe2813008 // add r3, r1, #8
8760 .long 0xe591c004 // ldr ip, [r1, #4]
8761 .long 0xe1a01003 // mov r1, r3
8762 .long 0xe12fff1c // bx ip
8763 .long 0xe320f000 // nop {0}
8764 .long 0x3ec71c72 // .word 0x3ec71c72
8765 .long 0x3ec71c72 // .word 0x3ec71c72
8766 .long 0xbeaaaaab // .word 0xbeaaaaab
8767 .long 0xbeaaaaab // .word 0xbeaaaaab
Mike Klein7fee90c2017-04-07 16:55:09 -04008768
8769HIDDEN _sk_callback_vfp4
8770.globl _sk_callback_vfp4
8771FUNCTION(_sk_callback_vfp4)
8772_sk_callback_vfp4:
Mike Kleinc17dc242017-04-20 16:21:57 -04008773 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
8774 .long 0xed2d8b08 // vpush {d8-d11}
Mike Klein7fee90c2017-04-07 16:55:09 -04008775 .long 0xe1a05001 // mov r5, r1
8776 .long 0xe1a06000 // mov r6, r0
Mike Kleinc17dc242017-04-20 16:21:57 -04008777 .long 0xe5957000 // ldr r7, [r5]
Mike Klein7fee90c2017-04-07 16:55:09 -04008778 .long 0xe1a04002 // mov r4, r2
8779 .long 0xe3a01002 // mov r1, #2
8780 .long 0xeeb08b47 // vmov.f64 d8, d7
Mike Kleinc17dc242017-04-20 16:21:57 -04008781 .long 0xe2870004 // add r0, r7, #4
8782 .long 0xf400008f // vst4.32 {d0-d3}, [r0]
8783 .long 0xe1a00007 // mov r0, r7
8784 .long 0xe5972000 // ldr r2, [r7]
Mike Klein7fee90c2017-04-07 16:55:09 -04008785 .long 0xeeb09b46 // vmov.f64 d9, d6
8786 .long 0xeeb0ab45 // vmov.f64 d10, d5
8787 .long 0xeeb0bb44 // vmov.f64 d11, d4
Mike Klein7fee90c2017-04-07 16:55:09 -04008788 .long 0xe12fff32 // blx r2
Mike Kleinc17dc242017-04-20 16:21:57 -04008789 .long 0xe5970084 // ldr r0, [r7, #132]
Mike Klein7fee90c2017-04-07 16:55:09 -04008790 .long 0xe2851008 // add r1, r5, #8
8791 .long 0xe5953004 // ldr r3, [r5, #4]
Mike Klein7fee90c2017-04-07 16:55:09 -04008792 .long 0xe1a02004 // mov r2, r4
Mike Klein7fee90c2017-04-07 16:55:09 -04008793 .long 0xeeb04b4b // vmov.f64 d4, d11
Mike Kleinc17dc242017-04-20 16:21:57 -04008794 .long 0xf420008f // vld4.32 {d0-d3}, [r0]
8795 .long 0xe1a00006 // mov r0, r6
Mike Klein7fee90c2017-04-07 16:55:09 -04008796 .long 0xeeb05b4a // vmov.f64 d5, d10
8797 .long 0xeeb06b49 // vmov.f64 d6, d9
8798 .long 0xeeb07b48 // vmov.f64 d7, d8
Mike Kleinc17dc242017-04-20 16:21:57 -04008799 .long 0xecbd8b08 // vpop {d8-d11}
8800 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
Mike Klein7fee90c2017-04-07 16:55:09 -04008801 .long 0xe12fff13 // bx r3
Mike Kleind7e06ae2017-03-29 16:33:06 -04008802#elif defined(__x86_64__)
Mike Klein67e61712017-04-26 09:52:09 -04008803BALIGN32
Mike Kleind7e06ae2017-03-29 16:33:06 -04008804
Mike Klein7c4af542017-03-29 18:21:14 -04008805HIDDEN _sk_start_pipeline_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008806.globl _sk_start_pipeline_hsw
Mike Klein86714282017-04-13 17:37:38 -04008807FUNCTION(_sk_start_pipeline_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008808_sk_start_pipeline_hsw:
8809 .byte 65,87 // push %r15
8810 .byte 65,86 // push %r14
8811 .byte 65,85 // push %r13
8812 .byte 65,84 // push %r12
8813 .byte 83 // push %rbx
8814 .byte 73,137,205 // mov %rcx,%r13
8815 .byte 73,137,214 // mov %rdx,%r14
8816 .byte 72,137,251 // mov %rdi,%rbx
8817 .byte 72,173 // lods %ds:(%rsi),%rax
8818 .byte 73,137,199 // mov %rax,%r15
8819 .byte 73,137,244 // mov %rsi,%r12
8820 .byte 72,141,67,8 // lea 0x8(%rbx),%rax
8821 .byte 76,57,232 // cmp %r13,%rax
8822 .byte 118,5 // jbe 28 <_sk_start_pipeline_hsw+0x28>
8823 .byte 72,137,223 // mov %rbx,%rdi
8824 .byte 235,65 // jmp 69 <_sk_start_pipeline_hsw+0x69>
8825 .byte 185,0,0,0,0 // mov $0x0,%ecx
8826 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
8827 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
8828 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
8829 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
8830 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
8831 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
8832 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
8833 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
8834 .byte 72,137,223 // mov %rbx,%rdi
8835 .byte 76,137,230 // mov %r12,%rsi
8836 .byte 76,137,242 // mov %r14,%rdx
8837 .byte 65,255,215 // callq *%r15
8838 .byte 72,141,123,8 // lea 0x8(%rbx),%rdi
8839 .byte 72,131,195,16 // add $0x10,%rbx
8840 .byte 76,57,235 // cmp %r13,%rbx
8841 .byte 72,137,251 // mov %rdi,%rbx
8842 .byte 118,191 // jbe 28 <_sk_start_pipeline_hsw+0x28>
8843 .byte 76,137,233 // mov %r13,%rcx
8844 .byte 72,41,249 // sub %rdi,%rcx
8845 .byte 116,41 // je 9a <_sk_start_pipeline_hsw+0x9a>
8846 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
8847 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
8848 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
8849 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
8850 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
8851 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
8852 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
8853 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
8854 .byte 76,137,230 // mov %r12,%rsi
8855 .byte 76,137,242 // mov %r14,%rdx
8856 .byte 65,255,215 // callq *%r15
8857 .byte 76,137,232 // mov %r13,%rax
8858 .byte 91 // pop %rbx
8859 .byte 65,92 // pop %r12
8860 .byte 65,93 // pop %r13
8861 .byte 65,94 // pop %r14
8862 .byte 65,95 // pop %r15
8863 .byte 197,248,119 // vzeroupper
8864 .byte 195 // retq
8865
Mike Klein7c4af542017-03-29 18:21:14 -04008866HIDDEN _sk_just_return_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008867.globl _sk_just_return_hsw
Mike Klein86714282017-04-13 17:37:38 -04008868FUNCTION(_sk_just_return_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008869_sk_just_return_hsw:
8870 .byte 195 // retq
8871
Mike Klein7c4af542017-03-29 18:21:14 -04008872HIDDEN _sk_seed_shader_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008873.globl _sk_seed_shader_hsw
Mike Klein86714282017-04-13 17:37:38 -04008874FUNCTION(_sk_seed_shader_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008875_sk_seed_shader_hsw:
8876 .byte 72,173 // lods %ds:(%rsi),%rax
8877 .byte 197,249,110,199 // vmovd %edi,%xmm0
8878 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
8879 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -04008880 .byte 196,226,125,24,13,177,71,0,0 // vbroadcastss 0x47b1(%rip),%ymm1 # 4874 <_sk_callback_hsw+0x127>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008881 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
8882 .byte 197,252,88,2 // vaddps (%rdx),%ymm0,%ymm0
8883 .byte 196,226,125,24,16 // vbroadcastss (%rax),%ymm2
8884 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
8885 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -04008886 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -04008887 .byte 196,226,125,24,21,149,71,0,0 // vbroadcastss 0x4795(%rip),%ymm2 # 4878 <_sk_callback_hsw+0x12b>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008888 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
8889 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
8890 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
8891 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
8892 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
8893 .byte 255,224 // jmpq *%rax
8894
Mike Klein581e6982017-05-03 13:05:13 -04008895HIDDEN _sk_dither_hsw
8896.globl _sk_dither_hsw
8897FUNCTION(_sk_dither_hsw)
8898_sk_dither_hsw:
8899 .byte 72,173 // lods %ds:(%rsi),%rax
8900 .byte 197,121,110,199 // vmovd %edi,%xmm8
8901 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
Mike Klein5d7f2b52017-05-20 13:21:59 -04008902 .byte 197,61,254,66,32 // vpaddd 0x20(%rdx),%ymm8,%ymm8
Mike Klein581e6982017-05-03 13:05:13 -04008903 .byte 76,139,0 // mov (%rax),%r8
8904 .byte 196,66,125,88,8 // vpbroadcastd (%r8),%ymm9
8905 .byte 196,65,61,239,201 // vpxor %ymm9,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -04008906 .byte 196,98,125,88,21,93,71,0,0 // vpbroadcastd 0x475d(%rip),%ymm10 # 487c <_sk_callback_hsw+0x12f>
Mike Klein581e6982017-05-03 13:05:13 -04008907 .byte 196,65,53,219,218 // vpand %ymm10,%ymm9,%ymm11
8908 .byte 196,193,37,114,243,5 // vpslld $0x5,%ymm11,%ymm11
8909 .byte 196,65,61,219,210 // vpand %ymm10,%ymm8,%ymm10
8910 .byte 196,193,45,114,242,4 // vpslld $0x4,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -04008911 .byte 196,98,125,88,37,66,71,0,0 // vpbroadcastd 0x4742(%rip),%ymm12 # 4880 <_sk_callback_hsw+0x133>
8912 .byte 196,98,125,88,45,61,71,0,0 // vpbroadcastd 0x473d(%rip),%ymm13 # 4884 <_sk_callback_hsw+0x137>
Mike Klein581e6982017-05-03 13:05:13 -04008913 .byte 196,65,53,219,245 // vpand %ymm13,%ymm9,%ymm14
8914 .byte 196,193,13,114,246,2 // vpslld $0x2,%ymm14,%ymm14
8915 .byte 196,65,61,219,237 // vpand %ymm13,%ymm8,%ymm13
8916 .byte 196,65,21,254,237 // vpaddd %ymm13,%ymm13,%ymm13
8917 .byte 196,65,53,219,204 // vpand %ymm12,%ymm9,%ymm9
8918 .byte 196,193,53,114,209,1 // vpsrld $0x1,%ymm9,%ymm9
8919 .byte 196,65,61,219,196 // vpand %ymm12,%ymm8,%ymm8
8920 .byte 196,193,61,114,208,2 // vpsrld $0x2,%ymm8,%ymm8
8921 .byte 196,65,21,235,210 // vpor %ymm10,%ymm13,%ymm10
8922 .byte 196,65,45,235,192 // vpor %ymm8,%ymm10,%ymm8
Mike Klein5d7f2b52017-05-20 13:21:59 -04008923 .byte 196,65,61,235,195 // vpor %ymm11,%ymm8,%ymm8
8924 .byte 196,65,13,235,201 // vpor %ymm9,%ymm14,%ymm9
Mike Klein581e6982017-05-03 13:05:13 -04008925 .byte 196,65,61,235,193 // vpor %ymm9,%ymm8,%ymm8
8926 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -04008927 .byte 196,98,125,24,13,239,70,0,0 // vbroadcastss 0x46ef(%rip),%ymm9 # 4888 <_sk_callback_hsw+0x13b>
8928 .byte 196,98,125,24,21,234,70,0,0 // vbroadcastss 0x46ea(%rip),%ymm10 # 488c <_sk_callback_hsw+0x13f>
Mike Klein581e6982017-05-03 13:05:13 -04008929 .byte 196,66,61,184,209 // vfmadd231ps %ymm9,%ymm8,%ymm10
8930 .byte 196,98,125,24,64,8 // vbroadcastss 0x8(%rax),%ymm8
8931 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
Mike Klein581e6982017-05-03 13:05:13 -04008932 .byte 197,188,88,192 // vaddps %ymm0,%ymm8,%ymm0
8933 .byte 197,188,88,201 // vaddps %ymm1,%ymm8,%ymm1
8934 .byte 197,188,88,210 // vaddps %ymm2,%ymm8,%ymm2
Mike Klein7e68bc92017-05-16 12:03:15 -04008935 .byte 197,252,93,195 // vminps %ymm3,%ymm0,%ymm0
8936 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
8937 .byte 197,188,95,192 // vmaxps %ymm0,%ymm8,%ymm0
8938 .byte 197,244,93,203 // vminps %ymm3,%ymm1,%ymm1
8939 .byte 197,188,95,201 // vmaxps %ymm1,%ymm8,%ymm1
8940 .byte 197,236,93,211 // vminps %ymm3,%ymm2,%ymm2
8941 .byte 197,188,95,210 // vmaxps %ymm2,%ymm8,%ymm2
Mike Klein581e6982017-05-03 13:05:13 -04008942 .byte 72,173 // lods %ds:(%rsi),%rax
8943 .byte 255,224 // jmpq *%rax
8944
Mike Klein7c4af542017-03-29 18:21:14 -04008945HIDDEN _sk_constant_color_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008946.globl _sk_constant_color_hsw
Mike Klein86714282017-04-13 17:37:38 -04008947FUNCTION(_sk_constant_color_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008948_sk_constant_color_hsw:
8949 .byte 72,173 // lods %ds:(%rsi),%rax
8950 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
8951 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
8952 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
8953 .byte 196,226,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm3
8954 .byte 72,173 // lods %ds:(%rsi),%rax
8955 .byte 255,224 // jmpq *%rax
8956
Mike Reed9959f722017-05-15 09:34:22 -04008957HIDDEN _sk_load_rgba_hsw
8958.globl _sk_load_rgba_hsw
8959FUNCTION(_sk_load_rgba_hsw)
8960_sk_load_rgba_hsw:
8961 .byte 72,173 // lods %ds:(%rsi),%rax
8962 .byte 197,252,16,0 // vmovups (%rax),%ymm0
8963 .byte 197,252,16,72,32 // vmovups 0x20(%rax),%ymm1
8964 .byte 197,252,16,80,64 // vmovups 0x40(%rax),%ymm2
8965 .byte 197,252,16,88,96 // vmovups 0x60(%rax),%ymm3
8966 .byte 72,173 // lods %ds:(%rsi),%rax
8967 .byte 255,224 // jmpq *%rax
8968
8969HIDDEN _sk_store_rgba_hsw
8970.globl _sk_store_rgba_hsw
8971FUNCTION(_sk_store_rgba_hsw)
8972_sk_store_rgba_hsw:
8973 .byte 72,173 // lods %ds:(%rsi),%rax
8974 .byte 197,252,17,0 // vmovups %ymm0,(%rax)
8975 .byte 197,252,17,72,32 // vmovups %ymm1,0x20(%rax)
8976 .byte 197,252,17,80,64 // vmovups %ymm2,0x40(%rax)
8977 .byte 197,252,17,88,96 // vmovups %ymm3,0x60(%rax)
8978 .byte 72,173 // lods %ds:(%rsi),%rax
8979 .byte 255,224 // jmpq *%rax
8980
Mike Klein7c4af542017-03-29 18:21:14 -04008981HIDDEN _sk_clear_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008982.globl _sk_clear_hsw
Mike Klein86714282017-04-13 17:37:38 -04008983FUNCTION(_sk_clear_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008984_sk_clear_hsw:
8985 .byte 72,173 // lods %ds:(%rsi),%rax
8986 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
8987 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
8988 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
8989 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
8990 .byte 255,224 // jmpq *%rax
8991
Mike Kleinaaca1e42017-03-31 09:29:01 -04008992HIDDEN _sk_srcatop_hsw
8993.globl _sk_srcatop_hsw
Mike Klein86714282017-04-13 17:37:38 -04008994FUNCTION(_sk_srcatop_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04008995_sk_srcatop_hsw:
Mike Kleinfe560a82017-05-01 12:56:35 -04008996 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -04008997 .byte 196,98,125,24,5,65,70,0,0 // vbroadcastss 0x4641(%rip),%ymm8 # 4890 <_sk_callback_hsw+0x143>
Mike Kleinaaca1e42017-03-31 09:29:01 -04008998 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04008999 .byte 196,226,61,184,196 // vfmadd231ps %ymm4,%ymm8,%ymm0
9000 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
9001 .byte 196,226,61,184,205 // vfmadd231ps %ymm5,%ymm8,%ymm1
9002 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
9003 .byte 196,226,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm2
Mike Kleinaaca1e42017-03-31 09:29:01 -04009004 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
9005 .byte 196,194,69,168,216 // vfmadd213ps %ymm8,%ymm7,%ymm3
9006 .byte 72,173 // lods %ds:(%rsi),%rax
9007 .byte 255,224 // jmpq *%rax
9008
9009HIDDEN _sk_dstatop_hsw
9010.globl _sk_dstatop_hsw
Mike Klein86714282017-04-13 17:37:38 -04009011FUNCTION(_sk_dstatop_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04009012_sk_dstatop_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -04009013 .byte 196,98,125,24,5,20,70,0,0 // vbroadcastss 0x4614(%rip),%ymm8 # 4894 <_sk_callback_hsw+0x147>
Mike Kleinaaca1e42017-03-31 09:29:01 -04009014 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
9015 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
9016 .byte 196,226,101,184,196 // vfmadd231ps %ymm4,%ymm3,%ymm0
9017 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
9018 .byte 196,226,101,184,205 // vfmadd231ps %ymm5,%ymm3,%ymm1
9019 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
9020 .byte 196,226,101,184,214 // vfmadd231ps %ymm6,%ymm3,%ymm2
9021 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
9022 .byte 196,194,69,168,216 // vfmadd213ps %ymm8,%ymm7,%ymm3
9023 .byte 72,173 // lods %ds:(%rsi),%rax
9024 .byte 255,224 // jmpq *%rax
9025
9026HIDDEN _sk_srcin_hsw
9027.globl _sk_srcin_hsw
Mike Klein86714282017-04-13 17:37:38 -04009028FUNCTION(_sk_srcin_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04009029_sk_srcin_hsw:
9030 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
9031 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
9032 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
9033 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
9034 .byte 72,173 // lods %ds:(%rsi),%rax
9035 .byte 255,224 // jmpq *%rax
9036
9037HIDDEN _sk_dstin_hsw
9038.globl _sk_dstin_hsw
Mike Klein86714282017-04-13 17:37:38 -04009039FUNCTION(_sk_dstin_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04009040_sk_dstin_hsw:
9041 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
9042 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
9043 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
9044 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
9045 .byte 72,173 // lods %ds:(%rsi),%rax
9046 .byte 255,224 // jmpq *%rax
9047
9048HIDDEN _sk_srcout_hsw
9049.globl _sk_srcout_hsw
Mike Klein86714282017-04-13 17:37:38 -04009050FUNCTION(_sk_srcout_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04009051_sk_srcout_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -04009052 .byte 196,98,125,24,5,187,69,0,0 // vbroadcastss 0x45bb(%rip),%ymm8 # 4898 <_sk_callback_hsw+0x14b>
Mike Kleinaaca1e42017-03-31 09:29:01 -04009053 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
9054 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
9055 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
9056 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
9057 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
9058 .byte 72,173 // lods %ds:(%rsi),%rax
9059 .byte 255,224 // jmpq *%rax
9060
9061HIDDEN _sk_dstout_hsw
9062.globl _sk_dstout_hsw
Mike Klein86714282017-04-13 17:37:38 -04009063FUNCTION(_sk_dstout_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04009064_sk_dstout_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -04009065 .byte 196,226,125,24,5,158,69,0,0 // vbroadcastss 0x459e(%rip),%ymm0 # 489c <_sk_callback_hsw+0x14f>
Mike Kleinaaca1e42017-03-31 09:29:01 -04009066 .byte 197,252,92,219 // vsubps %ymm3,%ymm0,%ymm3
9067 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
9068 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
9069 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
9070 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -04009071 .byte 72,173 // lods %ds:(%rsi),%rax
9072 .byte 255,224 // jmpq *%rax
9073
Mike Klein7c4af542017-03-29 18:21:14 -04009074HIDDEN _sk_srcover_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04009075.globl _sk_srcover_hsw
Mike Klein86714282017-04-13 17:37:38 -04009076FUNCTION(_sk_srcover_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04009077_sk_srcover_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -04009078 .byte 196,98,125,24,5,129,69,0,0 // vbroadcastss 0x4581(%rip),%ymm8 # 48a0 <_sk_callback_hsw+0x153>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009079 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
9080 .byte 196,194,93,184,192 // vfmadd231ps %ymm8,%ymm4,%ymm0
9081 .byte 196,194,85,184,200 // vfmadd231ps %ymm8,%ymm5,%ymm1
9082 .byte 196,194,77,184,208 // vfmadd231ps %ymm8,%ymm6,%ymm2
9083 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
9084 .byte 72,173 // lods %ds:(%rsi),%rax
9085 .byte 255,224 // jmpq *%rax
9086
Mike Klein7c4af542017-03-29 18:21:14 -04009087HIDDEN _sk_dstover_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04009088.globl _sk_dstover_hsw
Mike Klein86714282017-04-13 17:37:38 -04009089FUNCTION(_sk_dstover_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04009090_sk_dstover_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -04009091 .byte 196,98,125,24,5,96,69,0,0 // vbroadcastss 0x4560(%rip),%ymm8 # 48a4 <_sk_callback_hsw+0x157>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009092 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
9093 .byte 196,226,61,168,196 // vfmadd213ps %ymm4,%ymm8,%ymm0
9094 .byte 196,226,61,168,205 // vfmadd213ps %ymm5,%ymm8,%ymm1
9095 .byte 196,226,61,168,214 // vfmadd213ps %ymm6,%ymm8,%ymm2
9096 .byte 196,226,61,168,223 // vfmadd213ps %ymm7,%ymm8,%ymm3
9097 .byte 72,173 // lods %ds:(%rsi),%rax
9098 .byte 255,224 // jmpq *%rax
9099
Mike Kleinaaca1e42017-03-31 09:29:01 -04009100HIDDEN _sk_modulate_hsw
9101.globl _sk_modulate_hsw
Mike Klein86714282017-04-13 17:37:38 -04009102FUNCTION(_sk_modulate_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04009103_sk_modulate_hsw:
9104 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
9105 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
9106 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
9107 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
9108 .byte 72,173 // lods %ds:(%rsi),%rax
9109 .byte 255,224 // jmpq *%rax
9110
9111HIDDEN _sk_multiply_hsw
9112.globl _sk_multiply_hsw
Mike Klein86714282017-04-13 17:37:38 -04009113FUNCTION(_sk_multiply_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04009114_sk_multiply_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -04009115 .byte 196,98,125,24,5,43,69,0,0 // vbroadcastss 0x452b(%rip),%ymm8 # 48a8 <_sk_callback_hsw+0x15b>
Mike Kleinaaca1e42017-03-31 09:29:01 -04009116 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -04009117 .byte 197,52,89,208 // vmulps %ymm0,%ymm9,%ymm10
Mike Kleinaaca1e42017-03-31 09:29:01 -04009118 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04009119 .byte 196,98,61,184,212 // vfmadd231ps %ymm4,%ymm8,%ymm10
Mike Kleinaaca1e42017-03-31 09:29:01 -04009120 .byte 196,194,93,168,194 // vfmadd213ps %ymm10,%ymm4,%ymm0
9121 .byte 197,52,89,209 // vmulps %ymm1,%ymm9,%ymm10
9122 .byte 196,98,61,184,213 // vfmadd231ps %ymm5,%ymm8,%ymm10
9123 .byte 196,194,85,168,202 // vfmadd213ps %ymm10,%ymm5,%ymm1
9124 .byte 197,52,89,210 // vmulps %ymm2,%ymm9,%ymm10
9125 .byte 196,98,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm10
9126 .byte 196,194,77,168,210 // vfmadd213ps %ymm10,%ymm6,%ymm2
9127 .byte 197,52,89,203 // vmulps %ymm3,%ymm9,%ymm9
9128 .byte 196,66,69,168,193 // vfmadd213ps %ymm9,%ymm7,%ymm8
9129 .byte 196,194,69,168,216 // vfmadd213ps %ymm8,%ymm7,%ymm3
9130 .byte 72,173 // lods %ds:(%rsi),%rax
9131 .byte 255,224 // jmpq *%rax
9132
9133HIDDEN _sk_plus__hsw
9134.globl _sk_plus__hsw
Mike Klein86714282017-04-13 17:37:38 -04009135FUNCTION(_sk_plus__hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04009136_sk_plus__hsw:
9137 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
9138 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
9139 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
9140 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
9141 .byte 72,173 // lods %ds:(%rsi),%rax
9142 .byte 255,224 // jmpq *%rax
9143
9144HIDDEN _sk_screen_hsw
9145.globl _sk_screen_hsw
Mike Klein86714282017-04-13 17:37:38 -04009146FUNCTION(_sk_screen_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04009147_sk_screen_hsw:
9148 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
9149 .byte 196,194,93,172,192 // vfnmadd213ps %ymm8,%ymm4,%ymm0
9150 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
9151 .byte 196,194,85,172,200 // vfnmadd213ps %ymm8,%ymm5,%ymm1
9152 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
9153 .byte 196,194,77,172,208 // vfnmadd213ps %ymm8,%ymm6,%ymm2
9154 .byte 197,100,88,199 // vaddps %ymm7,%ymm3,%ymm8
9155 .byte 196,194,69,172,216 // vfnmadd213ps %ymm8,%ymm7,%ymm3
9156 .byte 72,173 // lods %ds:(%rsi),%rax
9157 .byte 255,224 // jmpq *%rax
9158
9159HIDDEN _sk_xor__hsw
9160.globl _sk_xor__hsw
Mike Klein86714282017-04-13 17:37:38 -04009161FUNCTION(_sk_xor__hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04009162_sk_xor__hsw:
Mike Klein8ca33562017-05-23 08:07:43 -04009163 .byte 196,98,125,24,5,166,68,0,0 // vbroadcastss 0x44a6(%rip),%ymm8 # 48ac <_sk_callback_hsw+0x15f>
Mike Kleinaaca1e42017-03-31 09:29:01 -04009164 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -04009165 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
Mike Kleinaaca1e42017-03-31 09:29:01 -04009166 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04009167 .byte 196,226,61,184,196 // vfmadd231ps %ymm4,%ymm8,%ymm0
Mike Kleinaaca1e42017-03-31 09:29:01 -04009168 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
9169 .byte 196,226,61,184,205 // vfmadd231ps %ymm5,%ymm8,%ymm1
9170 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
9171 .byte 196,226,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm2
9172 .byte 197,180,89,219 // vmulps %ymm3,%ymm9,%ymm3
9173 .byte 196,98,69,168,195 // vfmadd213ps %ymm3,%ymm7,%ymm8
9174 .byte 72,173 // lods %ds:(%rsi),%rax
9175 .byte 197,124,41,195 // vmovaps %ymm8,%ymm3
9176 .byte 255,224 // jmpq *%rax
9177
Mike Klein66b09ab2017-03-31 10:29:40 -04009178HIDDEN _sk_darken_hsw
9179.globl _sk_darken_hsw
Mike Klein86714282017-04-13 17:37:38 -04009180FUNCTION(_sk_darken_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04009181_sk_darken_hsw:
9182 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
9183 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
9184 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
9185 .byte 196,193,124,95,193 // vmaxps %ymm9,%ymm0,%ymm0
9186 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
9187 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
9188 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
9189 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
9190 .byte 196,193,116,95,201 // vmaxps %ymm9,%ymm1,%ymm1
9191 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
9192 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
9193 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
9194 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
9195 .byte 196,193,108,95,209 // vmaxps %ymm9,%ymm2,%ymm2
9196 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -04009197 .byte 196,98,125,24,5,46,68,0,0 // vbroadcastss 0x442e(%rip),%ymm8 # 48b0 <_sk_callback_hsw+0x163>
Mike Klein66b09ab2017-03-31 10:29:40 -04009198 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
9199 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
9200 .byte 72,173 // lods %ds:(%rsi),%rax
9201 .byte 255,224 // jmpq *%rax
9202
9203HIDDEN _sk_lighten_hsw
9204.globl _sk_lighten_hsw
Mike Klein86714282017-04-13 17:37:38 -04009205FUNCTION(_sk_lighten_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04009206_sk_lighten_hsw:
9207 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
9208 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
9209 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
9210 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
9211 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
9212 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
9213 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
9214 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
9215 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
9216 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
9217 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
9218 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
9219 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
9220 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
9221 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -04009222 .byte 196,98,125,24,5,221,67,0,0 // vbroadcastss 0x43dd(%rip),%ymm8 # 48b4 <_sk_callback_hsw+0x167>
Mike Klein66b09ab2017-03-31 10:29:40 -04009223 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
9224 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
9225 .byte 72,173 // lods %ds:(%rsi),%rax
9226 .byte 255,224 // jmpq *%rax
9227
9228HIDDEN _sk_difference_hsw
9229.globl _sk_difference_hsw
Mike Klein86714282017-04-13 17:37:38 -04009230FUNCTION(_sk_difference_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04009231_sk_difference_hsw:
9232 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
9233 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
9234 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
9235 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
9236 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
9237 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
9238 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
9239 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
9240 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
9241 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
9242 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
9243 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
9244 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
9245 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
9246 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
9247 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
9248 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
9249 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -04009250 .byte 196,98,125,24,5,128,67,0,0 // vbroadcastss 0x4380(%rip),%ymm8 # 48b8 <_sk_callback_hsw+0x16b>
Mike Klein66b09ab2017-03-31 10:29:40 -04009251 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
9252 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
9253 .byte 72,173 // lods %ds:(%rsi),%rax
9254 .byte 255,224 // jmpq *%rax
9255
9256HIDDEN _sk_exclusion_hsw
9257.globl _sk_exclusion_hsw
Mike Klein86714282017-04-13 17:37:38 -04009258FUNCTION(_sk_exclusion_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04009259_sk_exclusion_hsw:
9260 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
9261 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
9262 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
9263 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
9264 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
9265 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
9266 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
9267 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
9268 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
9269 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
9270 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
9271 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -04009272 .byte 196,98,125,24,5,62,67,0,0 // vbroadcastss 0x433e(%rip),%ymm8 # 48bc <_sk_callback_hsw+0x16f>
Mike Klein66b09ab2017-03-31 10:29:40 -04009273 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
9274 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
9275 .byte 72,173 // lods %ds:(%rsi),%rax
9276 .byte 255,224 // jmpq *%rax
9277
Mike Klein61b84162017-03-31 11:48:14 -04009278HIDDEN _sk_colorburn_hsw
9279.globl _sk_colorburn_hsw
Mike Klein86714282017-04-13 17:37:38 -04009280FUNCTION(_sk_colorburn_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04009281_sk_colorburn_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -04009282 .byte 196,98,125,24,5,44,67,0,0 // vbroadcastss 0x432c(%rip),%ymm8 # 48c0 <_sk_callback_hsw+0x173>
Mike Klein61b84162017-03-31 11:48:14 -04009283 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
9284 .byte 197,52,89,216 // vmulps %ymm0,%ymm9,%ymm11
9285 .byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
9286 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
9287 .byte 197,60,89,228 // vmulps %ymm4,%ymm8,%ymm12
9288 .byte 197,68,92,236 // vsubps %ymm4,%ymm7,%ymm13
9289 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
9290 .byte 197,20,94,232 // vdivps %ymm0,%ymm13,%ymm13
9291 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
9292 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
9293 .byte 196,66,101,168,235 // vfmadd213ps %ymm11,%ymm3,%ymm13
9294 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
9295 .byte 197,28,88,224 // vaddps %ymm0,%ymm12,%ymm12
9296 .byte 196,193,124,194,194,0 // vcmpeqps %ymm10,%ymm0,%ymm0
9297 .byte 196,195,21,74,196,0 // vblendvps %ymm0,%ymm12,%ymm13,%ymm0
9298 .byte 197,92,194,231,0 // vcmpeqps %ymm7,%ymm4,%ymm12
9299 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
9300 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
9301 .byte 197,52,89,217 // vmulps %ymm1,%ymm9,%ymm11
9302 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
9303 .byte 197,68,92,237 // vsubps %ymm5,%ymm7,%ymm13
9304 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
9305 .byte 197,20,94,233 // vdivps %ymm1,%ymm13,%ymm13
9306 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
9307 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
9308 .byte 196,66,101,168,235 // vfmadd213ps %ymm11,%ymm3,%ymm13
9309 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
9310 .byte 197,28,88,225 // vaddps %ymm1,%ymm12,%ymm12
9311 .byte 196,193,116,194,202,0 // vcmpeqps %ymm10,%ymm1,%ymm1
9312 .byte 196,195,21,74,204,16 // vblendvps %ymm1,%ymm12,%ymm13,%ymm1
9313 .byte 197,84,194,231,0 // vcmpeqps %ymm7,%ymm5,%ymm12
9314 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
9315 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
9316 .byte 197,52,89,202 // vmulps %ymm2,%ymm9,%ymm9
9317 .byte 196,65,108,194,210,0 // vcmpeqps %ymm10,%ymm2,%ymm10
9318 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
9319 .byte 197,68,92,230 // vsubps %ymm6,%ymm7,%ymm12
9320 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
9321 .byte 197,28,94,226 // vdivps %ymm2,%ymm12,%ymm12
9322 .byte 197,164,88,210 // vaddps %ymm2,%ymm11,%ymm2
9323 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
9324 .byte 196,65,68,92,228 // vsubps %ymm12,%ymm7,%ymm12
9325 .byte 196,66,101,168,225 // vfmadd213ps %ymm9,%ymm3,%ymm12
9326 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
9327 .byte 196,227,37,74,210,160 // vblendvps %ymm10,%ymm2,%ymm11,%ymm2
9328 .byte 197,76,194,215,0 // vcmpeqps %ymm7,%ymm6,%ymm10
9329 .byte 197,52,88,206 // vaddps %ymm6,%ymm9,%ymm9
9330 .byte 196,195,109,74,209,160 // vblendvps %ymm10,%ymm9,%ymm2,%ymm2
9331 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
9332 .byte 72,173 // lods %ds:(%rsi),%rax
9333 .byte 255,224 // jmpq *%rax
9334
9335HIDDEN _sk_colordodge_hsw
9336.globl _sk_colordodge_hsw
Mike Klein86714282017-04-13 17:37:38 -04009337FUNCTION(_sk_colordodge_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04009338_sk_colordodge_hsw:
9339 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -04009340 .byte 196,98,125,24,13,55,66,0,0 // vbroadcastss 0x4237(%rip),%ymm9 # 48c4 <_sk_callback_hsw+0x177>
Mike Klein61b84162017-03-31 11:48:14 -04009341 .byte 197,52,92,215 // vsubps %ymm7,%ymm9,%ymm10
9342 .byte 197,44,89,216 // vmulps %ymm0,%ymm10,%ymm11
9343 .byte 197,52,92,203 // vsubps %ymm3,%ymm9,%ymm9
9344 .byte 197,100,89,228 // vmulps %ymm4,%ymm3,%ymm12
9345 .byte 197,100,92,232 // vsubps %ymm0,%ymm3,%ymm13
9346 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
9347 .byte 197,52,89,236 // vmulps %ymm4,%ymm9,%ymm13
9348 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
9349 .byte 196,66,101,168,227 // vfmadd213ps %ymm11,%ymm3,%ymm12
9350 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
9351 .byte 197,20,88,232 // vaddps %ymm0,%ymm13,%ymm13
9352 .byte 197,252,194,195,0 // vcmpeqps %ymm3,%ymm0,%ymm0
9353 .byte 196,195,29,74,197,0 // vblendvps %ymm0,%ymm13,%ymm12,%ymm0
9354 .byte 196,65,92,194,224,0 // vcmpeqps %ymm8,%ymm4,%ymm12
9355 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
9356 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
9357 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
9358 .byte 197,100,89,229 // vmulps %ymm5,%ymm3,%ymm12
9359 .byte 197,100,92,233 // vsubps %ymm1,%ymm3,%ymm13
9360 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
9361 .byte 197,52,89,237 // vmulps %ymm5,%ymm9,%ymm13
9362 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
9363 .byte 196,66,101,168,227 // vfmadd213ps %ymm11,%ymm3,%ymm12
9364 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
9365 .byte 197,20,88,233 // vaddps %ymm1,%ymm13,%ymm13
9366 .byte 197,244,194,203,0 // vcmpeqps %ymm3,%ymm1,%ymm1
9367 .byte 196,195,29,74,205,16 // vblendvps %ymm1,%ymm13,%ymm12,%ymm1
9368 .byte 196,65,84,194,224,0 // vcmpeqps %ymm8,%ymm5,%ymm12
9369 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
9370 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
9371 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
9372 .byte 197,100,89,222 // vmulps %ymm6,%ymm3,%ymm11
9373 .byte 197,100,92,226 // vsubps %ymm2,%ymm3,%ymm12
9374 .byte 196,65,36,94,220 // vdivps %ymm12,%ymm11,%ymm11
9375 .byte 197,52,89,230 // vmulps %ymm6,%ymm9,%ymm12
9376 .byte 196,65,68,93,219 // vminps %ymm11,%ymm7,%ymm11
9377 .byte 196,66,101,168,218 // vfmadd213ps %ymm10,%ymm3,%ymm11
9378 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
9379 .byte 197,28,88,226 // vaddps %ymm2,%ymm12,%ymm12
9380 .byte 197,236,194,211,0 // vcmpeqps %ymm3,%ymm2,%ymm2
9381 .byte 196,195,37,74,212,32 // vblendvps %ymm2,%ymm12,%ymm11,%ymm2
9382 .byte 196,65,76,194,192,0 // vcmpeqps %ymm8,%ymm6,%ymm8
9383 .byte 197,44,88,214 // vaddps %ymm6,%ymm10,%ymm10
9384 .byte 196,195,109,74,210,128 // vblendvps %ymm8,%ymm10,%ymm2,%ymm2
9385 .byte 196,194,69,184,217 // vfmadd231ps %ymm9,%ymm7,%ymm3
9386 .byte 72,173 // lods %ds:(%rsi),%rax
9387 .byte 255,224 // jmpq *%rax
9388
9389HIDDEN _sk_hardlight_hsw
9390.globl _sk_hardlight_hsw
Mike Klein86714282017-04-13 17:37:38 -04009391FUNCTION(_sk_hardlight_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04009392_sk_hardlight_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -04009393 .byte 196,98,125,24,5,88,65,0,0 // vbroadcastss 0x4158(%rip),%ymm8 # 48c8 <_sk_callback_hsw+0x17b>
Mike Klein61b84162017-03-31 11:48:14 -04009394 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -04009395 .byte 197,44,89,216 // vmulps %ymm0,%ymm10,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -04009396 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04009397 .byte 196,98,61,184,220 // vfmadd231ps %ymm4,%ymm8,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -04009398 .byte 197,124,88,200 // vaddps %ymm0,%ymm0,%ymm9
9399 .byte 197,52,194,227,2 // vcmpleps %ymm3,%ymm9,%ymm12
9400 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
9401 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
9402 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
9403 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
9404 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
9405 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
9406 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
9407 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
9408 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -04009409 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04009410 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
9411 .byte 196,98,61,184,221 // vfmadd231ps %ymm5,%ymm8,%ymm11
9412 .byte 197,116,88,225 // vaddps %ymm1,%ymm1,%ymm12
9413 .byte 197,28,194,227,2 // vcmpleps %ymm3,%ymm12,%ymm12
9414 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
9415 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
9416 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
9417 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
9418 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
9419 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
9420 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
9421 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -04009422 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -04009423 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
9424 .byte 196,98,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm10
9425 .byte 197,108,88,218 // vaddps %ymm2,%ymm2,%ymm11
9426 .byte 197,36,194,219,2 // vcmpleps %ymm3,%ymm11,%ymm11
9427 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
9428 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
9429 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
9430 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
9431 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
9432 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
9433 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
9434 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -04009435 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -04009436 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
9437 .byte 72,173 // lods %ds:(%rsi),%rax
9438 .byte 255,224 // jmpq *%rax
9439
9440HIDDEN _sk_overlay_hsw
9441.globl _sk_overlay_hsw
Mike Klein86714282017-04-13 17:37:38 -04009442FUNCTION(_sk_overlay_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04009443_sk_overlay_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -04009444 .byte 196,98,125,24,5,144,64,0,0 // vbroadcastss 0x4090(%rip),%ymm8 # 48cc <_sk_callback_hsw+0x17f>
Mike Klein61b84162017-03-31 11:48:14 -04009445 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -04009446 .byte 197,44,89,216 // vmulps %ymm0,%ymm10,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -04009447 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04009448 .byte 196,98,61,184,220 // vfmadd231ps %ymm4,%ymm8,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -04009449 .byte 197,92,88,204 // vaddps %ymm4,%ymm4,%ymm9
9450 .byte 197,52,194,231,2 // vcmpleps %ymm7,%ymm9,%ymm12
9451 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
9452 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
9453 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
9454 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
9455 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
9456 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
9457 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
9458 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
9459 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -04009460 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04009461 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
9462 .byte 196,98,61,184,221 // vfmadd231ps %ymm5,%ymm8,%ymm11
9463 .byte 197,84,88,229 // vaddps %ymm5,%ymm5,%ymm12
9464 .byte 197,28,194,231,2 // vcmpleps %ymm7,%ymm12,%ymm12
9465 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
9466 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
9467 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
9468 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
9469 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
9470 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
9471 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
9472 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -04009473 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -04009474 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
9475 .byte 196,98,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm10
9476 .byte 197,76,88,222 // vaddps %ymm6,%ymm6,%ymm11
9477 .byte 197,36,194,223,2 // vcmpleps %ymm7,%ymm11,%ymm11
9478 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
9479 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
9480 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
9481 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
9482 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
9483 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
9484 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
9485 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -04009486 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -04009487 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
9488 .byte 72,173 // lods %ds:(%rsi),%rax
9489 .byte 255,224 // jmpq *%rax
9490
9491HIDDEN _sk_softlight_hsw
9492.globl _sk_softlight_hsw
Mike Klein86714282017-04-13 17:37:38 -04009493FUNCTION(_sk_softlight_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04009494_sk_softlight_hsw:
Mike Klein15bf6782017-03-31 12:21:46 -04009495 .byte 197,252,17,84,36,200 // vmovups %ymm2,-0x38(%rsp)
Mike Kleinfe560a82017-05-01 12:56:35 -04009496 .byte 197,252,40,209 // vmovaps %ymm1,%ymm2
9497 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
9498 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
9499 .byte 197,52,194,215,1 // vcmpltps %ymm7,%ymm9,%ymm10
Mike Klein61b84162017-03-31 11:48:14 -04009500 .byte 197,92,94,199 // vdivps %ymm7,%ymm4,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04009501 .byte 196,67,53,74,232,160 // vblendvps %ymm10,%ymm8,%ymm9,%ymm13
9502 .byte 196,65,20,88,197 // vaddps %ymm13,%ymm13,%ymm8
9503 .byte 196,65,60,88,192 // vaddps %ymm8,%ymm8,%ymm8
9504 .byte 196,66,61,168,192 // vfmadd213ps %ymm8,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -04009505 .byte 196,98,125,24,29,155,63,0,0 // vbroadcastss 0x3f9b(%rip),%ymm11 # 48d4 <_sk_callback_hsw+0x187>
Mike Kleinfe560a82017-05-01 12:56:35 -04009506 .byte 196,65,20,88,227 // vaddps %ymm11,%ymm13,%ymm12
9507 .byte 196,65,28,89,192 // vmulps %ymm8,%ymm12,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -04009508 .byte 196,98,125,24,37,140,63,0,0 // vbroadcastss 0x3f8c(%rip),%ymm12 # 48d8 <_sk_callback_hsw+0x18b>
Mike Kleinfe560a82017-05-01 12:56:35 -04009509 .byte 196,66,21,184,196 // vfmadd231ps %ymm12,%ymm13,%ymm8
9510 .byte 196,65,124,82,245 // vrsqrtps %ymm13,%ymm14
9511 .byte 196,65,124,83,246 // vrcpps %ymm14,%ymm14
9512 .byte 196,65,12,92,245 // vsubps %ymm13,%ymm14,%ymm14
9513 .byte 197,92,88,252 // vaddps %ymm4,%ymm4,%ymm15
9514 .byte 196,65,4,88,255 // vaddps %ymm15,%ymm15,%ymm15
9515 .byte 197,4,194,255,2 // vcmpleps %ymm7,%ymm15,%ymm15
9516 .byte 196,67,13,74,240,240 // vblendvps %ymm15,%ymm8,%ymm14,%ymm14
9517 .byte 197,116,88,249 // vaddps %ymm1,%ymm1,%ymm15
Mike Klein8ca33562017-05-23 08:07:43 -04009518 .byte 196,98,125,24,5,79,63,0,0 // vbroadcastss 0x3f4f(%rip),%ymm8 # 48d0 <_sk_callback_hsw+0x183>
Mike Kleinfe560a82017-05-01 12:56:35 -04009519 .byte 196,65,60,92,237 // vsubps %ymm13,%ymm8,%ymm13
9520 .byte 197,132,92,195 // vsubps %ymm3,%ymm15,%ymm0
9521 .byte 196,98,125,168,235 // vfmadd213ps %ymm3,%ymm0,%ymm13
9522 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
9523 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
9524 .byte 197,20,89,236 // vmulps %ymm4,%ymm13,%ymm13
9525 .byte 196,226,101,184,196 // vfmadd231ps %ymm4,%ymm3,%ymm0
9526 .byte 197,4,194,243,2 // vcmpleps %ymm3,%ymm15,%ymm14
9527 .byte 196,195,125,74,197,224 // vblendvps %ymm14,%ymm13,%ymm0,%ymm0
9528 .byte 197,252,17,68,36,168 // vmovups %ymm0,-0x58(%rsp)
9529 .byte 197,212,94,199 // vdivps %ymm7,%ymm5,%ymm0
9530 .byte 196,227,53,74,192,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04009531 .byte 197,124,88,240 // vaddps %ymm0,%ymm0,%ymm14
Mike Klein61b84162017-03-31 11:48:14 -04009532 .byte 196,65,12,88,246 // vaddps %ymm14,%ymm14,%ymm14
9533 .byte 196,66,13,168,246 // vfmadd213ps %ymm14,%ymm14,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -04009534 .byte 196,65,124,88,251 // vaddps %ymm11,%ymm0,%ymm15
Mike Klein61b84162017-03-31 11:48:14 -04009535 .byte 196,65,4,89,246 // vmulps %ymm14,%ymm15,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -04009536 .byte 196,66,125,184,244 // vfmadd231ps %ymm12,%ymm0,%ymm14
9537 .byte 197,124,82,248 // vrsqrtps %ymm0,%ymm15
Mike Klein61b84162017-03-31 11:48:14 -04009538 .byte 196,65,124,83,255 // vrcpps %ymm15,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -04009539 .byte 197,4,92,248 // vsubps %ymm0,%ymm15,%ymm15
9540 .byte 197,84,88,237 // vaddps %ymm5,%ymm5,%ymm13
9541 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
9542 .byte 197,20,194,239,2 // vcmpleps %ymm7,%ymm13,%ymm13
9543 .byte 196,67,5,74,238,208 // vblendvps %ymm13,%ymm14,%ymm15,%ymm13
9544 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
9545 .byte 197,108,88,242 // vaddps %ymm2,%ymm2,%ymm14
Mike Klein61b84162017-03-31 11:48:14 -04009546 .byte 197,12,92,251 // vsubps %ymm3,%ymm14,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -04009547 .byte 196,226,5,168,195 // vfmadd213ps %ymm3,%ymm15,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04009548 .byte 197,4,89,255 // vmulps %ymm7,%ymm15,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -04009549 .byte 196,65,4,89,237 // vmulps %ymm13,%ymm15,%ymm13
9550 .byte 197,252,89,197 // vmulps %ymm5,%ymm0,%ymm0
9551 .byte 196,98,101,184,237 // vfmadd231ps %ymm5,%ymm3,%ymm13
Mike Klein61b84162017-03-31 11:48:14 -04009552 .byte 197,12,194,243,2 // vcmpleps %ymm3,%ymm14,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -04009553 .byte 196,99,21,74,240,224 // vblendvps %ymm14,%ymm0,%ymm13,%ymm14
9554 .byte 197,204,94,199 // vdivps %ymm7,%ymm6,%ymm0
9555 .byte 196,227,53,74,192,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm0
9556 .byte 197,124,88,200 // vaddps %ymm0,%ymm0,%ymm9
9557 .byte 196,65,52,88,201 // vaddps %ymm9,%ymm9,%ymm9
9558 .byte 196,66,53,168,201 // vfmadd213ps %ymm9,%ymm9,%ymm9
9559 .byte 196,65,124,88,211 // vaddps %ymm11,%ymm0,%ymm10
9560 .byte 196,65,44,89,201 // vmulps %ymm9,%ymm10,%ymm9
9561 .byte 196,66,125,184,204 // vfmadd231ps %ymm12,%ymm0,%ymm9
9562 .byte 197,124,82,208 // vrsqrtps %ymm0,%ymm10
9563 .byte 196,65,124,83,210 // vrcpps %ymm10,%ymm10
9564 .byte 197,44,92,208 // vsubps %ymm0,%ymm10,%ymm10
9565 .byte 197,76,88,222 // vaddps %ymm6,%ymm6,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -04009566 .byte 196,65,36,88,219 // vaddps %ymm11,%ymm11,%ymm11
Mike Kleinfe560a82017-05-01 12:56:35 -04009567 .byte 197,36,194,223,2 // vcmpleps %ymm7,%ymm11,%ymm11
9568 .byte 196,67,45,74,201,176 // vblendvps %ymm11,%ymm9,%ymm10,%ymm9
9569 .byte 197,124,16,100,36,200 // vmovups -0x38(%rsp),%ymm12
9570 .byte 196,65,28,88,212 // vaddps %ymm12,%ymm12,%ymm10
9571 .byte 197,44,92,219 // vsubps %ymm3,%ymm10,%ymm11
9572 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
9573 .byte 196,226,37,168,195 // vfmadd213ps %ymm3,%ymm11,%ymm0
9574 .byte 197,36,89,223 // vmulps %ymm7,%ymm11,%ymm11
9575 .byte 196,65,36,89,201 // vmulps %ymm9,%ymm11,%ymm9
9576 .byte 197,252,89,198 // vmulps %ymm6,%ymm0,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04009577 .byte 196,98,101,184,206 // vfmadd231ps %ymm6,%ymm3,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -04009578 .byte 197,44,194,211,2 // vcmpleps %ymm3,%ymm10,%ymm10
9579 .byte 196,99,53,74,200,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm9
Mike Klein61b84162017-03-31 11:48:14 -04009580 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -04009581 .byte 197,172,89,193 // vmulps %ymm1,%ymm10,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -04009582 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -04009583 .byte 196,226,61,184,196 // vfmadd231ps %ymm4,%ymm8,%ymm0
9584 .byte 197,252,88,68,36,168 // vaddps -0x58(%rsp),%ymm0,%ymm0
9585 .byte 197,172,89,202 // vmulps %ymm2,%ymm10,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -04009586 .byte 196,226,61,184,205 // vfmadd231ps %ymm5,%ymm8,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -04009587 .byte 196,193,116,88,206 // vaddps %ymm14,%ymm1,%ymm1
9588 .byte 196,193,44,89,212 // vmulps %ymm12,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -04009589 .byte 196,226,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm2
9590 .byte 196,193,108,88,209 // vaddps %ymm9,%ymm2,%ymm2
9591 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
9592 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein61b84162017-03-31 11:48:14 -04009593 .byte 255,224 // jmpq *%rax
9594
Mike Kleinbb338332017-05-04 12:42:52 -04009595HIDDEN _sk_hue_hsw
9596.globl _sk_hue_hsw
9597FUNCTION(_sk_hue_hsw)
9598_sk_hue_hsw:
Mike Klein08aa88d2017-05-12 12:59:24 -04009599 .byte 197,124,40,194 // vmovaps %ymm2,%ymm8
9600 .byte 197,124,17,68,36,200 // vmovups %ymm8,-0x38(%rsp)
9601 .byte 197,252,17,76,36,168 // vmovups %ymm1,-0x58(%rsp)
9602 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
9603 .byte 197,108,89,203 // vmulps %ymm3,%ymm2,%ymm9
9604 .byte 197,116,89,211 // vmulps %ymm3,%ymm1,%ymm10
9605 .byte 197,60,89,219 // vmulps %ymm3,%ymm8,%ymm11
9606 .byte 197,84,95,198 // vmaxps %ymm6,%ymm5,%ymm8
9607 .byte 196,65,92,95,192 // vmaxps %ymm8,%ymm4,%ymm8
9608 .byte 197,84,93,230 // vminps %ymm6,%ymm5,%ymm12
9609 .byte 196,65,92,93,228 // vminps %ymm12,%ymm4,%ymm12
9610 .byte 196,65,60,92,196 // vsubps %ymm12,%ymm8,%ymm8
9611 .byte 197,60,89,227 // vmulps %ymm3,%ymm8,%ymm12
9612 .byte 196,65,44,93,195 // vminps %ymm11,%ymm10,%ymm8
9613 .byte 196,65,52,93,232 // vminps %ymm8,%ymm9,%ymm13
9614 .byte 196,65,44,95,195 // vmaxps %ymm11,%ymm10,%ymm8
9615 .byte 196,65,52,95,192 // vmaxps %ymm8,%ymm9,%ymm8
9616 .byte 196,65,60,92,245 // vsubps %ymm13,%ymm8,%ymm14
Mike Kleinbb338332017-05-04 12:42:52 -04009617 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Klein08aa88d2017-05-12 12:59:24 -04009618 .byte 196,65,12,194,248,0 // vcmpeqps %ymm8,%ymm14,%ymm15
9619 .byte 196,65,52,92,205 // vsubps %ymm13,%ymm9,%ymm9
9620 .byte 196,65,28,89,201 // vmulps %ymm9,%ymm12,%ymm9
9621 .byte 196,65,52,94,206 // vdivps %ymm14,%ymm9,%ymm9
9622 .byte 196,67,53,74,200,240 // vblendvps %ymm15,%ymm8,%ymm9,%ymm9
9623 .byte 196,65,44,92,213 // vsubps %ymm13,%ymm10,%ymm10
9624 .byte 196,65,28,89,210 // vmulps %ymm10,%ymm12,%ymm10
9625 .byte 196,65,44,94,214 // vdivps %ymm14,%ymm10,%ymm10
9626 .byte 196,195,45,74,200,240 // vblendvps %ymm15,%ymm8,%ymm10,%ymm1
9627 .byte 196,65,36,92,213 // vsubps %ymm13,%ymm11,%ymm10
9628 .byte 196,65,28,89,210 // vmulps %ymm10,%ymm12,%ymm10
9629 .byte 196,65,44,94,214 // vdivps %ymm14,%ymm10,%ymm10
9630 .byte 196,67,45,74,224,240 // vblendvps %ymm15,%ymm8,%ymm10,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -04009631 .byte 196,98,125,24,53,83,61,0,0 // vbroadcastss 0x3d53(%rip),%ymm14 # 48dc <_sk_callback_hsw+0x18f>
9632 .byte 196,98,125,24,61,78,61,0,0 // vbroadcastss 0x3d4e(%rip),%ymm15 # 48e0 <_sk_callback_hsw+0x193>
Mike Klein08aa88d2017-05-12 12:59:24 -04009633 .byte 196,65,84,89,239 // vmulps %ymm15,%ymm5,%ymm13
9634 .byte 196,66,93,184,238 // vfmadd231ps %ymm14,%ymm4,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -04009635 .byte 196,226,125,24,5,63,61,0,0 // vbroadcastss 0x3d3f(%rip),%ymm0 # 48e4 <_sk_callback_hsw+0x197>
Mike Klein08aa88d2017-05-12 12:59:24 -04009636 .byte 196,98,77,184,232 // vfmadd231ps %ymm0,%ymm6,%ymm13
9637 .byte 196,65,116,89,215 // vmulps %ymm15,%ymm1,%ymm10
9638 .byte 196,66,53,184,214 // vfmadd231ps %ymm14,%ymm9,%ymm10
9639 .byte 196,98,29,184,208 // vfmadd231ps %ymm0,%ymm12,%ymm10
9640 .byte 196,66,101,170,234 // vfmsub213ps %ymm10,%ymm3,%ymm13
9641 .byte 196,65,52,88,213 // vaddps %ymm13,%ymm9,%ymm10
9642 .byte 196,65,116,88,221 // vaddps %ymm13,%ymm1,%ymm11
9643 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
9644 .byte 196,193,36,93,204 // vminps %ymm12,%ymm11,%ymm1
9645 .byte 197,44,93,233 // vminps %ymm1,%ymm10,%ymm13
9646 .byte 196,65,36,89,207 // vmulps %ymm15,%ymm11,%ymm9
9647 .byte 196,66,45,184,206 // vfmadd231ps %ymm14,%ymm10,%ymm9
9648 .byte 196,98,29,184,200 // vfmadd231ps %ymm0,%ymm12,%ymm9
9649 .byte 196,193,44,92,193 // vsubps %ymm9,%ymm10,%ymm0
9650 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
9651 .byte 196,193,52,92,205 // vsubps %ymm13,%ymm9,%ymm1
9652 .byte 197,252,94,193 // vdivps %ymm1,%ymm0,%ymm0
9653 .byte 196,65,36,92,241 // vsubps %ymm9,%ymm11,%ymm14
Mike Kleinbb338332017-05-04 12:42:52 -04009654 .byte 196,65,52,89,246 // vmulps %ymm14,%ymm9,%ymm14
Mike Klein08aa88d2017-05-12 12:59:24 -04009655 .byte 197,12,94,241 // vdivps %ymm1,%ymm14,%ymm14
9656 .byte 196,65,28,92,249 // vsubps %ymm9,%ymm12,%ymm15
Mike Kleinbb338332017-05-04 12:42:52 -04009657 .byte 196,65,52,89,255 // vmulps %ymm15,%ymm9,%ymm15
Mike Klein08aa88d2017-05-12 12:59:24 -04009658 .byte 197,132,94,201 // vdivps %ymm1,%ymm15,%ymm1
9659 .byte 196,65,60,194,237,2 // vcmpleps %ymm13,%ymm8,%ymm13
9660 .byte 196,65,52,88,246 // vaddps %ymm14,%ymm9,%ymm14
9661 .byte 196,67,13,74,243,208 // vblendvps %ymm13,%ymm11,%ymm14,%ymm14
9662 .byte 196,65,36,95,220 // vmaxps %ymm12,%ymm11,%ymm11
9663 .byte 197,180,88,201 // vaddps %ymm1,%ymm9,%ymm1
9664 .byte 196,195,117,74,204,208 // vblendvps %ymm13,%ymm12,%ymm1,%ymm1
9665 .byte 197,180,88,192 // vaddps %ymm0,%ymm9,%ymm0
9666 .byte 196,195,125,74,194,208 // vblendvps %ymm13,%ymm10,%ymm0,%ymm0
9667 .byte 197,100,89,231 // vmulps %ymm7,%ymm3,%ymm12
9668 .byte 196,65,44,95,211 // vmaxps %ymm11,%ymm10,%ymm10
9669 .byte 196,65,124,92,217 // vsubps %ymm9,%ymm0,%ymm11
9670 .byte 196,65,28,92,233 // vsubps %ymm9,%ymm12,%ymm13
9671 .byte 196,65,20,89,219 // vmulps %ymm11,%ymm13,%ymm11
9672 .byte 196,65,28,194,250,1 // vcmpltps %ymm10,%ymm12,%ymm15
9673 .byte 196,65,44,92,209 // vsubps %ymm9,%ymm10,%ymm10
9674 .byte 196,65,36,94,218 // vdivps %ymm10,%ymm11,%ymm11
9675 .byte 196,65,52,88,219 // vaddps %ymm11,%ymm9,%ymm11
9676 .byte 196,195,125,74,195,240 // vblendvps %ymm15,%ymm11,%ymm0,%ymm0
9677 .byte 196,65,12,92,217 // vsubps %ymm9,%ymm14,%ymm11
9678 .byte 196,65,20,89,219 // vmulps %ymm11,%ymm13,%ymm11
9679 .byte 196,65,36,94,218 // vdivps %ymm10,%ymm11,%ymm11
9680 .byte 196,65,52,88,219 // vaddps %ymm11,%ymm9,%ymm11
9681 .byte 196,67,13,74,219,240 // vblendvps %ymm15,%ymm11,%ymm14,%ymm11
9682 .byte 196,65,116,92,241 // vsubps %ymm9,%ymm1,%ymm14
9683 .byte 196,65,20,89,238 // vmulps %ymm14,%ymm13,%ymm13
9684 .byte 196,65,20,94,210 // vdivps %ymm10,%ymm13,%ymm10
9685 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
9686 .byte 196,195,117,74,201,240 // vblendvps %ymm15,%ymm9,%ymm1,%ymm1
9687 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
9688 .byte 196,65,36,95,200 // vmaxps %ymm8,%ymm11,%ymm9
9689 .byte 196,65,116,95,192 // vmaxps %ymm8,%ymm1,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -04009690 .byte 196,226,125,24,13,44,60,0,0 // vbroadcastss 0x3c2c(%rip),%ymm1 # 48e8 <_sk_callback_hsw+0x19b>
Mike Klein08aa88d2017-05-12 12:59:24 -04009691 .byte 197,116,92,215 // vsubps %ymm7,%ymm1,%ymm10
9692 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
9693 .byte 197,116,92,219 // vsubps %ymm3,%ymm1,%ymm11
9694 .byte 196,226,37,184,212 // vfmadd231ps %ymm4,%ymm11,%ymm2
9695 .byte 197,236,88,192 // vaddps %ymm0,%ymm2,%ymm0
9696 .byte 197,172,89,76,36,168 // vmulps -0x58(%rsp),%ymm10,%ymm1
9697 .byte 196,226,37,184,205 // vfmadd231ps %ymm5,%ymm11,%ymm1
9698 .byte 196,193,116,88,201 // vaddps %ymm9,%ymm1,%ymm1
9699 .byte 197,172,89,84,36,200 // vmulps -0x38(%rsp),%ymm10,%ymm2
9700 .byte 196,98,77,168,218 // vfmadd213ps %ymm2,%ymm6,%ymm11
9701 .byte 196,193,36,88,208 // vaddps %ymm8,%ymm11,%ymm2
9702 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
9703 .byte 196,193,100,92,220 // vsubps %ymm12,%ymm3,%ymm3
Mike Kleinbb338332017-05-04 12:42:52 -04009704 .byte 72,173 // lods %ds:(%rsi),%rax
9705 .byte 255,224 // jmpq *%rax
9706
9707HIDDEN _sk_saturation_hsw
9708.globl _sk_saturation_hsw
9709FUNCTION(_sk_saturation_hsw)
9710_sk_saturation_hsw:
Mike Klein08aa88d2017-05-12 12:59:24 -04009711 .byte 197,124,40,194 // vmovaps %ymm2,%ymm8
9712 .byte 197,252,17,76,36,168 // vmovups %ymm1,-0x58(%rsp)
9713 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
9714 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
9715 .byte 197,100,89,213 // vmulps %ymm5,%ymm3,%ymm10
9716 .byte 197,100,89,222 // vmulps %ymm6,%ymm3,%ymm11
9717 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
9718 .byte 197,252,17,68,36,200 // vmovups %ymm0,-0x38(%rsp)
9719 .byte 197,116,95,192 // vmaxps %ymm0,%ymm1,%ymm8
9720 .byte 196,65,108,95,192 // vmaxps %ymm8,%ymm2,%ymm8
9721 .byte 197,116,93,224 // vminps %ymm0,%ymm1,%ymm12
9722 .byte 196,65,108,93,228 // vminps %ymm12,%ymm2,%ymm12
9723 .byte 196,65,60,92,196 // vsubps %ymm12,%ymm8,%ymm8
9724 .byte 197,60,89,231 // vmulps %ymm7,%ymm8,%ymm12
9725 .byte 196,65,44,93,195 // vminps %ymm11,%ymm10,%ymm8
9726 .byte 196,65,52,93,232 // vminps %ymm8,%ymm9,%ymm13
9727 .byte 196,65,44,95,195 // vmaxps %ymm11,%ymm10,%ymm8
9728 .byte 196,65,52,95,192 // vmaxps %ymm8,%ymm9,%ymm8
9729 .byte 196,65,60,92,245 // vsubps %ymm13,%ymm8,%ymm14
Mike Kleinbb338332017-05-04 12:42:52 -04009730 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Klein08aa88d2017-05-12 12:59:24 -04009731 .byte 196,65,12,194,248,0 // vcmpeqps %ymm8,%ymm14,%ymm15
9732 .byte 196,65,52,92,205 // vsubps %ymm13,%ymm9,%ymm9
9733 .byte 196,65,28,89,201 // vmulps %ymm9,%ymm12,%ymm9
9734 .byte 196,65,52,94,206 // vdivps %ymm14,%ymm9,%ymm9
9735 .byte 196,67,53,74,200,240 // vblendvps %ymm15,%ymm8,%ymm9,%ymm9
9736 .byte 196,65,44,92,213 // vsubps %ymm13,%ymm10,%ymm10
9737 .byte 196,65,28,89,210 // vmulps %ymm10,%ymm12,%ymm10
9738 .byte 196,65,44,94,214 // vdivps %ymm14,%ymm10,%ymm10
9739 .byte 196,195,45,74,200,240 // vblendvps %ymm15,%ymm8,%ymm10,%ymm1
9740 .byte 196,65,36,92,213 // vsubps %ymm13,%ymm11,%ymm10
9741 .byte 196,65,28,89,210 // vmulps %ymm10,%ymm12,%ymm10
9742 .byte 196,65,44,94,214 // vdivps %ymm14,%ymm10,%ymm10
9743 .byte 196,67,45,74,224,240 // vblendvps %ymm15,%ymm8,%ymm10,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -04009744 .byte 196,98,125,24,53,67,59,0,0 // vbroadcastss 0x3b43(%rip),%ymm14 # 48ec <_sk_callback_hsw+0x19f>
9745 .byte 196,98,125,24,61,62,59,0,0 // vbroadcastss 0x3b3e(%rip),%ymm15 # 48f0 <_sk_callback_hsw+0x1a3>
Mike Klein08aa88d2017-05-12 12:59:24 -04009746 .byte 196,65,84,89,239 // vmulps %ymm15,%ymm5,%ymm13
9747 .byte 196,66,93,184,238 // vfmadd231ps %ymm14,%ymm4,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -04009748 .byte 196,226,125,24,5,47,59,0,0 // vbroadcastss 0x3b2f(%rip),%ymm0 # 48f4 <_sk_callback_hsw+0x1a7>
Mike Klein08aa88d2017-05-12 12:59:24 -04009749 .byte 196,98,77,184,232 // vfmadd231ps %ymm0,%ymm6,%ymm13
9750 .byte 196,65,116,89,215 // vmulps %ymm15,%ymm1,%ymm10
9751 .byte 196,66,53,184,214 // vfmadd231ps %ymm14,%ymm9,%ymm10
9752 .byte 196,98,29,184,208 // vfmadd231ps %ymm0,%ymm12,%ymm10
9753 .byte 196,66,101,170,234 // vfmsub213ps %ymm10,%ymm3,%ymm13
9754 .byte 196,65,52,88,213 // vaddps %ymm13,%ymm9,%ymm10
9755 .byte 196,65,116,88,221 // vaddps %ymm13,%ymm1,%ymm11
9756 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
9757 .byte 196,193,36,93,204 // vminps %ymm12,%ymm11,%ymm1
9758 .byte 197,44,93,233 // vminps %ymm1,%ymm10,%ymm13
9759 .byte 196,65,36,89,207 // vmulps %ymm15,%ymm11,%ymm9
9760 .byte 196,66,45,184,206 // vfmadd231ps %ymm14,%ymm10,%ymm9
9761 .byte 196,98,29,184,200 // vfmadd231ps %ymm0,%ymm12,%ymm9
9762 .byte 196,193,44,92,193 // vsubps %ymm9,%ymm10,%ymm0
9763 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
9764 .byte 196,193,52,92,205 // vsubps %ymm13,%ymm9,%ymm1
9765 .byte 197,252,94,193 // vdivps %ymm1,%ymm0,%ymm0
9766 .byte 196,65,36,92,241 // vsubps %ymm9,%ymm11,%ymm14
9767 .byte 196,65,52,89,246 // vmulps %ymm14,%ymm9,%ymm14
9768 .byte 197,12,94,241 // vdivps %ymm1,%ymm14,%ymm14
9769 .byte 196,65,28,92,249 // vsubps %ymm9,%ymm12,%ymm15
Mike Kleinbb338332017-05-04 12:42:52 -04009770 .byte 196,65,52,89,255 // vmulps %ymm15,%ymm9,%ymm15
Mike Klein08aa88d2017-05-12 12:59:24 -04009771 .byte 197,132,94,201 // vdivps %ymm1,%ymm15,%ymm1
9772 .byte 196,65,60,194,237,2 // vcmpleps %ymm13,%ymm8,%ymm13
9773 .byte 196,65,52,88,246 // vaddps %ymm14,%ymm9,%ymm14
9774 .byte 196,67,13,74,243,208 // vblendvps %ymm13,%ymm11,%ymm14,%ymm14
9775 .byte 196,65,36,95,220 // vmaxps %ymm12,%ymm11,%ymm11
9776 .byte 197,180,88,201 // vaddps %ymm1,%ymm9,%ymm1
9777 .byte 196,195,117,74,204,208 // vblendvps %ymm13,%ymm12,%ymm1,%ymm1
9778 .byte 197,180,88,192 // vaddps %ymm0,%ymm9,%ymm0
9779 .byte 196,195,125,74,194,208 // vblendvps %ymm13,%ymm10,%ymm0,%ymm0
9780 .byte 197,100,89,231 // vmulps %ymm7,%ymm3,%ymm12
9781 .byte 196,65,44,95,211 // vmaxps %ymm11,%ymm10,%ymm10
9782 .byte 196,65,124,92,217 // vsubps %ymm9,%ymm0,%ymm11
9783 .byte 196,65,28,92,233 // vsubps %ymm9,%ymm12,%ymm13
9784 .byte 196,65,20,89,219 // vmulps %ymm11,%ymm13,%ymm11
9785 .byte 196,65,28,194,250,1 // vcmpltps %ymm10,%ymm12,%ymm15
9786 .byte 196,65,44,92,209 // vsubps %ymm9,%ymm10,%ymm10
9787 .byte 196,65,36,94,218 // vdivps %ymm10,%ymm11,%ymm11
9788 .byte 196,65,52,88,219 // vaddps %ymm11,%ymm9,%ymm11
9789 .byte 196,195,125,74,195,240 // vblendvps %ymm15,%ymm11,%ymm0,%ymm0
9790 .byte 196,65,12,92,217 // vsubps %ymm9,%ymm14,%ymm11
9791 .byte 196,65,20,89,219 // vmulps %ymm11,%ymm13,%ymm11
9792 .byte 196,65,36,94,218 // vdivps %ymm10,%ymm11,%ymm11
9793 .byte 196,65,52,88,219 // vaddps %ymm11,%ymm9,%ymm11
9794 .byte 196,67,13,74,219,240 // vblendvps %ymm15,%ymm11,%ymm14,%ymm11
9795 .byte 196,65,116,92,241 // vsubps %ymm9,%ymm1,%ymm14
9796 .byte 196,65,20,89,238 // vmulps %ymm14,%ymm13,%ymm13
9797 .byte 196,65,20,94,210 // vdivps %ymm10,%ymm13,%ymm10
9798 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
9799 .byte 196,195,117,74,201,240 // vblendvps %ymm15,%ymm9,%ymm1,%ymm1
9800 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
9801 .byte 196,65,36,95,200 // vmaxps %ymm8,%ymm11,%ymm9
9802 .byte 196,65,116,95,192 // vmaxps %ymm8,%ymm1,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -04009803 .byte 196,226,125,24,13,28,58,0,0 // vbroadcastss 0x3a1c(%rip),%ymm1 # 48f8 <_sk_callback_hsw+0x1ab>
Mike Klein08aa88d2017-05-12 12:59:24 -04009804 .byte 197,116,92,215 // vsubps %ymm7,%ymm1,%ymm10
9805 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
9806 .byte 197,116,92,219 // vsubps %ymm3,%ymm1,%ymm11
9807 .byte 196,226,37,184,212 // vfmadd231ps %ymm4,%ymm11,%ymm2
9808 .byte 197,236,88,192 // vaddps %ymm0,%ymm2,%ymm0
9809 .byte 197,172,89,76,36,168 // vmulps -0x58(%rsp),%ymm10,%ymm1
9810 .byte 196,226,37,184,205 // vfmadd231ps %ymm5,%ymm11,%ymm1
9811 .byte 196,193,116,88,201 // vaddps %ymm9,%ymm1,%ymm1
9812 .byte 197,172,89,84,36,200 // vmulps -0x38(%rsp),%ymm10,%ymm2
9813 .byte 196,98,77,168,218 // vfmadd213ps %ymm2,%ymm6,%ymm11
9814 .byte 196,193,36,88,208 // vaddps %ymm8,%ymm11,%ymm2
9815 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
9816 .byte 196,193,100,92,220 // vsubps %ymm12,%ymm3,%ymm3
Mike Kleinbb338332017-05-04 12:42:52 -04009817 .byte 72,173 // lods %ds:(%rsi),%rax
9818 .byte 255,224 // jmpq *%rax
9819
9820HIDDEN _sk_color_hsw
9821.globl _sk_color_hsw
9822FUNCTION(_sk_color_hsw)
9823_sk_color_hsw:
Mike Klein08aa88d2017-05-12 12:59:24 -04009824 .byte 197,124,40,202 // vmovaps %ymm2,%ymm9
9825 .byte 197,124,17,76,36,200 // vmovups %ymm9,-0x38(%rsp)
9826 .byte 197,252,17,76,36,168 // vmovups %ymm1,-0x58(%rsp)
9827 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
9828 .byte 197,108,89,199 // vmulps %ymm7,%ymm2,%ymm8
9829 .byte 197,116,89,215 // vmulps %ymm7,%ymm1,%ymm10
9830 .byte 197,52,89,223 // vmulps %ymm7,%ymm9,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -04009831 .byte 196,98,125,24,45,181,57,0,0 // vbroadcastss 0x39b5(%rip),%ymm13 # 48fc <_sk_callback_hsw+0x1af>
9832 .byte 196,98,125,24,53,176,57,0,0 // vbroadcastss 0x39b0(%rip),%ymm14 # 4900 <_sk_callback_hsw+0x1b3>
Mike Klein08aa88d2017-05-12 12:59:24 -04009833 .byte 196,65,84,89,230 // vmulps %ymm14,%ymm5,%ymm12
9834 .byte 196,66,93,184,229 // vfmadd231ps %ymm13,%ymm4,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -04009835 .byte 196,98,125,24,61,161,57,0,0 // vbroadcastss 0x39a1(%rip),%ymm15 # 4904 <_sk_callback_hsw+0x1b7>
Mike Klein08aa88d2017-05-12 12:59:24 -04009836 .byte 196,66,77,184,231 // vfmadd231ps %ymm15,%ymm6,%ymm12
9837 .byte 196,65,44,89,206 // vmulps %ymm14,%ymm10,%ymm9
9838 .byte 196,66,61,184,205 // vfmadd231ps %ymm13,%ymm8,%ymm9
9839 .byte 196,66,37,184,207 // vfmadd231ps %ymm15,%ymm11,%ymm9
9840 .byte 196,66,101,170,225 // vfmsub213ps %ymm9,%ymm3,%ymm12
9841 .byte 196,65,60,88,204 // vaddps %ymm12,%ymm8,%ymm9
9842 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
9843 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
9844 .byte 196,65,44,93,195 // vminps %ymm11,%ymm10,%ymm8
9845 .byte 196,65,52,93,224 // vminps %ymm8,%ymm9,%ymm12
9846 .byte 196,65,44,89,198 // vmulps %ymm14,%ymm10,%ymm8
9847 .byte 196,66,53,184,197 // vfmadd231ps %ymm13,%ymm9,%ymm8
9848 .byte 196,66,37,184,199 // vfmadd231ps %ymm15,%ymm11,%ymm8
9849 .byte 196,65,52,92,232 // vsubps %ymm8,%ymm9,%ymm13
9850 .byte 196,65,60,89,237 // vmulps %ymm13,%ymm8,%ymm13
9851 .byte 196,65,60,92,244 // vsubps %ymm12,%ymm8,%ymm14
9852 .byte 196,193,20,94,198 // vdivps %ymm14,%ymm13,%ymm0
9853 .byte 196,65,44,92,248 // vsubps %ymm8,%ymm10,%ymm15
9854 .byte 196,65,60,89,255 // vmulps %ymm15,%ymm8,%ymm15
9855 .byte 196,65,4,94,254 // vdivps %ymm14,%ymm15,%ymm15
9856 .byte 196,65,36,92,232 // vsubps %ymm8,%ymm11,%ymm13
9857 .byte 196,65,60,89,237 // vmulps %ymm13,%ymm8,%ymm13
9858 .byte 196,65,20,94,238 // vdivps %ymm14,%ymm13,%ymm13
9859 .byte 196,65,12,87,246 // vxorps %ymm14,%ymm14,%ymm14
9860 .byte 196,65,12,194,228,2 // vcmpleps %ymm12,%ymm14,%ymm12
9861 .byte 196,65,60,88,255 // vaddps %ymm15,%ymm8,%ymm15
9862 .byte 196,67,5,74,250,192 // vblendvps %ymm12,%ymm10,%ymm15,%ymm15
9863 .byte 196,65,44,95,211 // vmaxps %ymm11,%ymm10,%ymm10
9864 .byte 196,65,60,88,237 // vaddps %ymm13,%ymm8,%ymm13
9865 .byte 196,67,21,74,219,192 // vblendvps %ymm12,%ymm11,%ymm13,%ymm11
9866 .byte 197,188,88,192 // vaddps %ymm0,%ymm8,%ymm0
9867 .byte 196,195,125,74,201,192 // vblendvps %ymm12,%ymm9,%ymm0,%ymm1
9868 .byte 197,100,89,231 // vmulps %ymm7,%ymm3,%ymm12
9869 .byte 196,65,52,95,202 // vmaxps %ymm10,%ymm9,%ymm9
9870 .byte 196,65,116,92,208 // vsubps %ymm8,%ymm1,%ymm10
9871 .byte 196,65,28,92,232 // vsubps %ymm8,%ymm12,%ymm13
9872 .byte 196,65,20,89,210 // vmulps %ymm10,%ymm13,%ymm10
9873 .byte 196,193,28,194,193,1 // vcmpltps %ymm9,%ymm12,%ymm0
9874 .byte 196,65,52,92,200 // vsubps %ymm8,%ymm9,%ymm9
9875 .byte 196,65,44,94,209 // vdivps %ymm9,%ymm10,%ymm10
9876 .byte 196,65,60,88,210 // vaddps %ymm10,%ymm8,%ymm10
9877 .byte 196,195,117,74,202,0 // vblendvps %ymm0,%ymm10,%ymm1,%ymm1
9878 .byte 196,65,4,92,208 // vsubps %ymm8,%ymm15,%ymm10
9879 .byte 196,65,20,89,210 // vmulps %ymm10,%ymm13,%ymm10
9880 .byte 196,65,44,94,209 // vdivps %ymm9,%ymm10,%ymm10
9881 .byte 196,65,60,88,210 // vaddps %ymm10,%ymm8,%ymm10
9882 .byte 196,67,5,74,210,0 // vblendvps %ymm0,%ymm10,%ymm15,%ymm10
9883 .byte 196,65,36,92,248 // vsubps %ymm8,%ymm11,%ymm15
9884 .byte 196,65,20,89,239 // vmulps %ymm15,%ymm13,%ymm13
9885 .byte 196,65,20,94,201 // vdivps %ymm9,%ymm13,%ymm9
9886 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
9887 .byte 196,195,37,74,192,0 // vblendvps %ymm0,%ymm8,%ymm11,%ymm0
9888 .byte 196,193,116,95,206 // vmaxps %ymm14,%ymm1,%ymm1
9889 .byte 196,65,44,95,198 // vmaxps %ymm14,%ymm10,%ymm8
9890 .byte 196,65,124,95,206 // vmaxps %ymm14,%ymm0,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -04009891 .byte 196,226,125,24,5,131,56,0,0 // vbroadcastss 0x3883(%rip),%ymm0 # 4908 <_sk_callback_hsw+0x1bb>
Mike Klein08aa88d2017-05-12 12:59:24 -04009892 .byte 197,124,92,215 // vsubps %ymm7,%ymm0,%ymm10
Mike Kleinbb338332017-05-04 12:42:52 -04009893 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
Mike Klein08aa88d2017-05-12 12:59:24 -04009894 .byte 197,124,92,219 // vsubps %ymm3,%ymm0,%ymm11
9895 .byte 196,226,37,184,212 // vfmadd231ps %ymm4,%ymm11,%ymm2
9896 .byte 197,236,88,193 // vaddps %ymm1,%ymm2,%ymm0
9897 .byte 197,172,89,76,36,168 // vmulps -0x58(%rsp),%ymm10,%ymm1
9898 .byte 196,226,37,184,205 // vfmadd231ps %ymm5,%ymm11,%ymm1
9899 .byte 196,193,116,88,200 // vaddps %ymm8,%ymm1,%ymm1
9900 .byte 197,172,89,84,36,200 // vmulps -0x38(%rsp),%ymm10,%ymm2
9901 .byte 196,98,77,168,218 // vfmadd213ps %ymm2,%ymm6,%ymm11
9902 .byte 196,193,36,88,209 // vaddps %ymm9,%ymm11,%ymm2
9903 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
9904 .byte 196,193,100,92,220 // vsubps %ymm12,%ymm3,%ymm3
Mike Kleinbb338332017-05-04 12:42:52 -04009905 .byte 72,173 // lods %ds:(%rsi),%rax
9906 .byte 255,224 // jmpq *%rax
9907
9908HIDDEN _sk_luminosity_hsw
9909.globl _sk_luminosity_hsw
9910FUNCTION(_sk_luminosity_hsw)
9911_sk_luminosity_hsw:
Mike Klein08aa88d2017-05-12 12:59:24 -04009912 .byte 197,124,40,202 // vmovaps %ymm2,%ymm9
9913 .byte 197,124,17,76,36,168 // vmovups %ymm9,-0x58(%rsp)
9914 .byte 197,252,17,76,36,200 // vmovups %ymm1,-0x38(%rsp)
9915 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
9916 .byte 197,100,89,196 // vmulps %ymm4,%ymm3,%ymm8
9917 .byte 197,100,89,213 // vmulps %ymm5,%ymm3,%ymm10
9918 .byte 197,100,89,222 // vmulps %ymm6,%ymm3,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -04009919 .byte 196,98,125,24,45,28,56,0,0 // vbroadcastss 0x381c(%rip),%ymm13 # 490c <_sk_callback_hsw+0x1bf>
9920 .byte 196,98,125,24,53,23,56,0,0 // vbroadcastss 0x3817(%rip),%ymm14 # 4910 <_sk_callback_hsw+0x1c3>
Mike Klein08aa88d2017-05-12 12:59:24 -04009921 .byte 196,65,116,89,230 // vmulps %ymm14,%ymm1,%ymm12
9922 .byte 196,66,109,184,229 // vfmadd231ps %ymm13,%ymm2,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -04009923 .byte 196,98,125,24,61,8,56,0,0 // vbroadcastss 0x3808(%rip),%ymm15 # 4914 <_sk_callback_hsw+0x1c7>
Mike Klein08aa88d2017-05-12 12:59:24 -04009924 .byte 196,66,53,184,231 // vfmadd231ps %ymm15,%ymm9,%ymm12
9925 .byte 196,65,44,89,206 // vmulps %ymm14,%ymm10,%ymm9
9926 .byte 196,66,61,184,205 // vfmadd231ps %ymm13,%ymm8,%ymm9
9927 .byte 196,66,37,184,207 // vfmadd231ps %ymm15,%ymm11,%ymm9
9928 .byte 196,66,69,170,225 // vfmsub213ps %ymm9,%ymm7,%ymm12
9929 .byte 196,65,60,88,204 // vaddps %ymm12,%ymm8,%ymm9
9930 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
9931 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
9932 .byte 196,65,44,93,195 // vminps %ymm11,%ymm10,%ymm8
9933 .byte 196,65,52,93,224 // vminps %ymm8,%ymm9,%ymm12
9934 .byte 196,65,44,89,198 // vmulps %ymm14,%ymm10,%ymm8
9935 .byte 196,66,53,184,197 // vfmadd231ps %ymm13,%ymm9,%ymm8
9936 .byte 196,66,37,184,199 // vfmadd231ps %ymm15,%ymm11,%ymm8
9937 .byte 196,65,52,92,232 // vsubps %ymm8,%ymm9,%ymm13
9938 .byte 196,65,60,89,237 // vmulps %ymm13,%ymm8,%ymm13
9939 .byte 196,65,60,92,244 // vsubps %ymm12,%ymm8,%ymm14
9940 .byte 196,193,20,94,198 // vdivps %ymm14,%ymm13,%ymm0
9941 .byte 196,65,44,92,248 // vsubps %ymm8,%ymm10,%ymm15
9942 .byte 196,65,60,89,255 // vmulps %ymm15,%ymm8,%ymm15
9943 .byte 196,65,4,94,254 // vdivps %ymm14,%ymm15,%ymm15
9944 .byte 196,65,36,92,232 // vsubps %ymm8,%ymm11,%ymm13
9945 .byte 196,65,60,89,237 // vmulps %ymm13,%ymm8,%ymm13
9946 .byte 196,65,20,94,238 // vdivps %ymm14,%ymm13,%ymm13
9947 .byte 196,65,12,87,246 // vxorps %ymm14,%ymm14,%ymm14
9948 .byte 196,65,12,194,228,2 // vcmpleps %ymm12,%ymm14,%ymm12
9949 .byte 196,65,60,88,255 // vaddps %ymm15,%ymm8,%ymm15
9950 .byte 196,67,5,74,250,192 // vblendvps %ymm12,%ymm10,%ymm15,%ymm15
9951 .byte 196,65,44,95,211 // vmaxps %ymm11,%ymm10,%ymm10
9952 .byte 196,65,60,88,237 // vaddps %ymm13,%ymm8,%ymm13
9953 .byte 196,67,21,74,219,192 // vblendvps %ymm12,%ymm11,%ymm13,%ymm11
9954 .byte 197,188,88,192 // vaddps %ymm0,%ymm8,%ymm0
9955 .byte 196,195,125,74,201,192 // vblendvps %ymm12,%ymm9,%ymm0,%ymm1
9956 .byte 197,100,89,231 // vmulps %ymm7,%ymm3,%ymm12
9957 .byte 196,65,52,95,202 // vmaxps %ymm10,%ymm9,%ymm9
9958 .byte 196,65,116,92,208 // vsubps %ymm8,%ymm1,%ymm10
9959 .byte 196,65,28,92,232 // vsubps %ymm8,%ymm12,%ymm13
9960 .byte 196,65,20,89,210 // vmulps %ymm10,%ymm13,%ymm10
9961 .byte 196,193,28,194,193,1 // vcmpltps %ymm9,%ymm12,%ymm0
9962 .byte 196,65,52,92,200 // vsubps %ymm8,%ymm9,%ymm9
9963 .byte 196,65,44,94,209 // vdivps %ymm9,%ymm10,%ymm10
9964 .byte 196,65,60,88,210 // vaddps %ymm10,%ymm8,%ymm10
9965 .byte 196,195,117,74,202,0 // vblendvps %ymm0,%ymm10,%ymm1,%ymm1
9966 .byte 196,65,4,92,208 // vsubps %ymm8,%ymm15,%ymm10
9967 .byte 196,65,20,89,210 // vmulps %ymm10,%ymm13,%ymm10
9968 .byte 196,65,44,94,209 // vdivps %ymm9,%ymm10,%ymm10
9969 .byte 196,65,60,88,210 // vaddps %ymm10,%ymm8,%ymm10
9970 .byte 196,67,5,74,210,0 // vblendvps %ymm0,%ymm10,%ymm15,%ymm10
9971 .byte 196,65,36,92,248 // vsubps %ymm8,%ymm11,%ymm15
9972 .byte 196,65,20,89,239 // vmulps %ymm15,%ymm13,%ymm13
9973 .byte 196,65,20,94,201 // vdivps %ymm9,%ymm13,%ymm9
9974 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
9975 .byte 196,195,37,74,192,0 // vblendvps %ymm0,%ymm8,%ymm11,%ymm0
9976 .byte 196,193,116,95,206 // vmaxps %ymm14,%ymm1,%ymm1
9977 .byte 196,65,44,95,198 // vmaxps %ymm14,%ymm10,%ymm8
9978 .byte 196,65,124,95,206 // vmaxps %ymm14,%ymm0,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -04009979 .byte 196,226,125,24,5,234,54,0,0 // vbroadcastss 0x36ea(%rip),%ymm0 # 4918 <_sk_callback_hsw+0x1cb>
Mike Klein08aa88d2017-05-12 12:59:24 -04009980 .byte 197,124,92,215 // vsubps %ymm7,%ymm0,%ymm10
9981 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
9982 .byte 197,124,92,219 // vsubps %ymm3,%ymm0,%ymm11
9983 .byte 196,226,37,184,212 // vfmadd231ps %ymm4,%ymm11,%ymm2
9984 .byte 197,236,88,193 // vaddps %ymm1,%ymm2,%ymm0
9985 .byte 197,172,89,76,36,200 // vmulps -0x38(%rsp),%ymm10,%ymm1
9986 .byte 196,226,37,184,205 // vfmadd231ps %ymm5,%ymm11,%ymm1
9987 .byte 196,193,116,88,200 // vaddps %ymm8,%ymm1,%ymm1
9988 .byte 197,172,89,84,36,168 // vmulps -0x58(%rsp),%ymm10,%ymm2
9989 .byte 196,98,77,168,218 // vfmadd213ps %ymm2,%ymm6,%ymm11
9990 .byte 196,193,36,88,209 // vaddps %ymm9,%ymm11,%ymm2
9991 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
9992 .byte 196,193,100,92,220 // vsubps %ymm12,%ymm3,%ymm3
Mike Kleinbb338332017-05-04 12:42:52 -04009993 .byte 72,173 // lods %ds:(%rsi),%rax
9994 .byte 255,224 // jmpq *%rax
9995
Mike Klein7c4af542017-03-29 18:21:14 -04009996HIDDEN _sk_clamp_0_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04009997.globl _sk_clamp_0_hsw
Mike Klein86714282017-04-13 17:37:38 -04009998FUNCTION(_sk_clamp_0_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04009999_sk_clamp_0_hsw:
10000 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
10001 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
10002 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
10003 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
10004 .byte 196,193,100,95,216 // vmaxps %ymm8,%ymm3,%ymm3
10005 .byte 72,173 // lods %ds:(%rsi),%rax
10006 .byte 255,224 // jmpq *%rax
10007
Mike Klein7c4af542017-03-29 18:21:14 -040010008HIDDEN _sk_clamp_1_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010009.globl _sk_clamp_1_hsw
Mike Klein86714282017-04-13 17:37:38 -040010010FUNCTION(_sk_clamp_1_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010011_sk_clamp_1_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -040010012 .byte 196,98,125,24,5,134,54,0,0 // vbroadcastss 0x3686(%rip),%ymm8 # 491c <_sk_callback_hsw+0x1cf>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010013 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
10014 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
10015 .byte 196,193,108,93,208 // vminps %ymm8,%ymm2,%ymm2
10016 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
10017 .byte 72,173 // lods %ds:(%rsi),%rax
10018 .byte 255,224 // jmpq *%rax
10019
Mike Klein7c4af542017-03-29 18:21:14 -040010020HIDDEN _sk_clamp_a_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010021.globl _sk_clamp_a_hsw
Mike Klein86714282017-04-13 17:37:38 -040010022FUNCTION(_sk_clamp_a_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010023_sk_clamp_a_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -040010024 .byte 196,98,125,24,5,105,54,0,0 // vbroadcastss 0x3669(%rip),%ymm8 # 4920 <_sk_callback_hsw+0x1d3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010025 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
10026 .byte 197,252,93,195 // vminps %ymm3,%ymm0,%ymm0
10027 .byte 197,244,93,203 // vminps %ymm3,%ymm1,%ymm1
10028 .byte 197,236,93,211 // vminps %ymm3,%ymm2,%ymm2
10029 .byte 72,173 // lods %ds:(%rsi),%rax
10030 .byte 255,224 // jmpq *%rax
10031
Mike Klein7c4af542017-03-29 18:21:14 -040010032HIDDEN _sk_set_rgb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010033.globl _sk_set_rgb_hsw
Mike Klein86714282017-04-13 17:37:38 -040010034FUNCTION(_sk_set_rgb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010035_sk_set_rgb_hsw:
10036 .byte 72,173 // lods %ds:(%rsi),%rax
10037 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
10038 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
10039 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
10040 .byte 72,173 // lods %ds:(%rsi),%rax
10041 .byte 255,224 // jmpq *%rax
10042
Mike Klein7c4af542017-03-29 18:21:14 -040010043HIDDEN _sk_swap_rb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010044.globl _sk_swap_rb_hsw
Mike Klein86714282017-04-13 17:37:38 -040010045FUNCTION(_sk_swap_rb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010046_sk_swap_rb_hsw:
10047 .byte 197,124,40,192 // vmovaps %ymm0,%ymm8
10048 .byte 72,173 // lods %ds:(%rsi),%rax
10049 .byte 197,252,40,194 // vmovaps %ymm2,%ymm0
10050 .byte 197,124,41,194 // vmovaps %ymm8,%ymm2
10051 .byte 255,224 // jmpq *%rax
10052
Mike Klein7c4af542017-03-29 18:21:14 -040010053HIDDEN _sk_swap_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010054.globl _sk_swap_hsw
Mike Klein86714282017-04-13 17:37:38 -040010055FUNCTION(_sk_swap_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010056_sk_swap_hsw:
10057 .byte 197,124,40,195 // vmovaps %ymm3,%ymm8
10058 .byte 197,124,40,202 // vmovaps %ymm2,%ymm9
10059 .byte 197,124,40,209 // vmovaps %ymm1,%ymm10
10060 .byte 197,124,40,216 // vmovaps %ymm0,%ymm11
10061 .byte 72,173 // lods %ds:(%rsi),%rax
10062 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
10063 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
10064 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
10065 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
10066 .byte 197,124,41,220 // vmovaps %ymm11,%ymm4
10067 .byte 197,124,41,213 // vmovaps %ymm10,%ymm5
10068 .byte 197,124,41,206 // vmovaps %ymm9,%ymm6
10069 .byte 197,124,41,199 // vmovaps %ymm8,%ymm7
10070 .byte 255,224 // jmpq *%rax
10071
Mike Klein7c4af542017-03-29 18:21:14 -040010072HIDDEN _sk_move_src_dst_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010073.globl _sk_move_src_dst_hsw
Mike Klein86714282017-04-13 17:37:38 -040010074FUNCTION(_sk_move_src_dst_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010075_sk_move_src_dst_hsw:
10076 .byte 72,173 // lods %ds:(%rsi),%rax
10077 .byte 197,252,40,224 // vmovaps %ymm0,%ymm4
10078 .byte 197,252,40,233 // vmovaps %ymm1,%ymm5
10079 .byte 197,252,40,242 // vmovaps %ymm2,%ymm6
10080 .byte 197,252,40,251 // vmovaps %ymm3,%ymm7
10081 .byte 255,224 // jmpq *%rax
10082
Mike Klein7c4af542017-03-29 18:21:14 -040010083HIDDEN _sk_move_dst_src_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010084.globl _sk_move_dst_src_hsw
Mike Klein86714282017-04-13 17:37:38 -040010085FUNCTION(_sk_move_dst_src_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010086_sk_move_dst_src_hsw:
10087 .byte 72,173 // lods %ds:(%rsi),%rax
10088 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
10089 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
10090 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
10091 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
10092 .byte 255,224 // jmpq *%rax
10093
Mike Klein7c4af542017-03-29 18:21:14 -040010094HIDDEN _sk_premul_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010095.globl _sk_premul_hsw
Mike Klein86714282017-04-13 17:37:38 -040010096FUNCTION(_sk_premul_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010097_sk_premul_hsw:
10098 .byte 197,252,89,195 // vmulps %ymm3,%ymm0,%ymm0
10099 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
10100 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
10101 .byte 72,173 // lods %ds:(%rsi),%rax
10102 .byte 255,224 // jmpq *%rax
10103
Mike Klein7c4af542017-03-29 18:21:14 -040010104HIDDEN _sk_unpremul_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010105.globl _sk_unpremul_hsw
Mike Klein86714282017-04-13 17:37:38 -040010106FUNCTION(_sk_unpremul_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010107_sk_unpremul_hsw:
10108 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
10109 .byte 196,65,100,194,200,0 // vcmpeqps %ymm8,%ymm3,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040010110 .byte 196,98,125,24,21,177,53,0,0 // vbroadcastss 0x35b1(%rip),%ymm10 # 4924 <_sk_callback_hsw+0x1d7>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010111 .byte 197,44,94,211 // vdivps %ymm3,%ymm10,%ymm10
10112 .byte 196,67,45,74,192,144 // vblendvps %ymm9,%ymm8,%ymm10,%ymm8
10113 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
10114 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
10115 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
10116 .byte 72,173 // lods %ds:(%rsi),%rax
10117 .byte 255,224 // jmpq *%rax
10118
Mike Klein7c4af542017-03-29 18:21:14 -040010119HIDDEN _sk_from_srgb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010120.globl _sk_from_srgb_hsw
Mike Klein86714282017-04-13 17:37:38 -040010121FUNCTION(_sk_from_srgb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010122_sk_from_srgb_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -040010123 .byte 196,98,125,24,5,146,53,0,0 // vbroadcastss 0x3592(%rip),%ymm8 # 4928 <_sk_callback_hsw+0x1db>
Mike Kleinfe560a82017-05-01 12:56:35 -040010124 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040010125 .byte 197,124,89,208 // vmulps %ymm0,%ymm0,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040010126 .byte 196,98,125,24,29,132,53,0,0 // vbroadcastss 0x3584(%rip),%ymm11 # 492c <_sk_callback_hsw+0x1df>
10127 .byte 196,98,125,24,37,127,53,0,0 // vbroadcastss 0x357f(%rip),%ymm12 # 4930 <_sk_callback_hsw+0x1e3>
Mike Kleinfe560a82017-05-01 12:56:35 -040010128 .byte 196,65,124,40,236 // vmovaps %ymm12,%ymm13
10129 .byte 196,66,125,168,235 // vfmadd213ps %ymm11,%ymm0,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040010130 .byte 196,98,125,24,53,112,53,0,0 // vbroadcastss 0x3570(%rip),%ymm14 # 4934 <_sk_callback_hsw+0x1e7>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010131 .byte 196,66,45,168,238 // vfmadd213ps %ymm14,%ymm10,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040010132 .byte 196,98,125,24,21,102,53,0,0 // vbroadcastss 0x3566(%rip),%ymm10 # 4938 <_sk_callback_hsw+0x1eb>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010133 .byte 196,193,124,194,194,1 // vcmpltps %ymm10,%ymm0,%ymm0
10134 .byte 196,195,21,74,193,0 // vblendvps %ymm0,%ymm9,%ymm13,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040010135 .byte 196,65,116,89,200 // vmulps %ymm8,%ymm1,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040010136 .byte 197,116,89,233 // vmulps %ymm1,%ymm1,%ymm13
Mike Kleinfe560a82017-05-01 12:56:35 -040010137 .byte 196,65,124,40,252 // vmovaps %ymm12,%ymm15
10138 .byte 196,66,117,168,251 // vfmadd213ps %ymm11,%ymm1,%ymm15
Mike Kleind7e06ae2017-03-29 16:33:06 -040010139 .byte 196,66,21,168,254 // vfmadd213ps %ymm14,%ymm13,%ymm15
10140 .byte 196,193,116,194,202,1 // vcmpltps %ymm10,%ymm1,%ymm1
10141 .byte 196,195,5,74,201,16 // vblendvps %ymm1,%ymm9,%ymm15,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040010142 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040010143 .byte 197,108,89,202 // vmulps %ymm2,%ymm2,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040010144 .byte 196,66,109,168,227 // vfmadd213ps %ymm11,%ymm2,%ymm12
10145 .byte 196,66,53,168,230 // vfmadd213ps %ymm14,%ymm9,%ymm12
Mike Kleind7e06ae2017-03-29 16:33:06 -040010146 .byte 196,193,108,194,210,1 // vcmpltps %ymm10,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040010147 .byte 196,195,29,74,208,32 // vblendvps %ymm2,%ymm8,%ymm12,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040010148 .byte 72,173 // lods %ds:(%rsi),%rax
10149 .byte 255,224 // jmpq *%rax
10150
Mike Klein7c4af542017-03-29 18:21:14 -040010151HIDDEN _sk_to_srgb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010152.globl _sk_to_srgb_hsw
Mike Klein86714282017-04-13 17:37:38 -040010153FUNCTION(_sk_to_srgb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010154_sk_to_srgb_hsw:
Mike Kleinf45e3d72017-05-15 17:36:59 -040010155 .byte 197,124,82,200 // vrsqrtps %ymm0,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040010156 .byte 196,98,125,24,5,10,53,0,0 // vbroadcastss 0x350a(%rip),%ymm8 # 493c <_sk_callback_hsw+0x1ef>
Mike Kleinf45e3d72017-05-15 17:36:59 -040010157 .byte 196,65,124,89,208 // vmulps %ymm8,%ymm0,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040010158 .byte 196,98,125,24,29,0,53,0,0 // vbroadcastss 0x3500(%rip),%ymm11 # 4940 <_sk_callback_hsw+0x1f3>
10159 .byte 196,98,125,24,37,251,52,0,0 // vbroadcastss 0x34fb(%rip),%ymm12 # 4944 <_sk_callback_hsw+0x1f7>
Mike Kleinf45e3d72017-05-15 17:36:59 -040010160 .byte 196,65,124,40,236 // vmovaps %ymm12,%ymm13
10161 .byte 196,66,53,168,235 // vfmadd213ps %ymm11,%ymm9,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040010162 .byte 196,98,125,24,53,236,52,0,0 // vbroadcastss 0x34ec(%rip),%ymm14 # 4948 <_sk_callback_hsw+0x1fb>
Mike Kleinf45e3d72017-05-15 17:36:59 -040010163 .byte 196,66,53,168,238 // vfmadd213ps %ymm14,%ymm9,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040010164 .byte 196,98,125,24,61,226,52,0,0 // vbroadcastss 0x34e2(%rip),%ymm15 # 494c <_sk_callback_hsw+0x1ff>
Mike Kleinf45e3d72017-05-15 17:36:59 -040010165 .byte 196,65,52,88,207 // vaddps %ymm15,%ymm9,%ymm9
10166 .byte 196,65,124,83,201 // vrcpps %ymm9,%ymm9
10167 .byte 196,65,20,89,201 // vmulps %ymm9,%ymm13,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040010168 .byte 196,98,125,24,45,206,52,0,0 // vbroadcastss 0x34ce(%rip),%ymm13 # 4950 <_sk_callback_hsw+0x203>
Mike Kleinf45e3d72017-05-15 17:36:59 -040010169 .byte 196,193,124,194,197,1 // vcmpltps %ymm13,%ymm0,%ymm0
10170 .byte 196,195,53,74,194,0 // vblendvps %ymm0,%ymm10,%ymm9,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040010171 .byte 197,124,82,201 // vrsqrtps %ymm1,%ymm9
Mike Kleinf45e3d72017-05-15 17:36:59 -040010172 .byte 196,65,124,40,212 // vmovaps %ymm12,%ymm10
10173 .byte 196,66,53,168,211 // vfmadd213ps %ymm11,%ymm9,%ymm10
10174 .byte 196,66,53,168,214 // vfmadd213ps %ymm14,%ymm9,%ymm10
10175 .byte 196,65,52,88,207 // vaddps %ymm15,%ymm9,%ymm9
10176 .byte 196,65,124,83,201 // vrcpps %ymm9,%ymm9
10177 .byte 196,65,44,89,201 // vmulps %ymm9,%ymm10,%ymm9
10178 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
10179 .byte 196,193,116,194,205,1 // vcmpltps %ymm13,%ymm1,%ymm1
10180 .byte 196,195,53,74,202,16 // vblendvps %ymm1,%ymm10,%ymm9,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040010181 .byte 197,124,82,202 // vrsqrtps %ymm2,%ymm9
Mike Kleinf45e3d72017-05-15 17:36:59 -040010182 .byte 196,66,53,168,227 // vfmadd213ps %ymm11,%ymm9,%ymm12
10183 .byte 196,66,53,168,230 // vfmadd213ps %ymm14,%ymm9,%ymm12
10184 .byte 196,65,52,88,207 // vaddps %ymm15,%ymm9,%ymm9
10185 .byte 196,65,124,83,201 // vrcpps %ymm9,%ymm9
10186 .byte 196,65,28,89,201 // vmulps %ymm9,%ymm12,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040010187 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
Mike Kleinf45e3d72017-05-15 17:36:59 -040010188 .byte 196,193,108,194,213,1 // vcmpltps %ymm13,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040010189 .byte 196,195,53,74,208,32 // vblendvps %ymm2,%ymm8,%ymm9,%ymm2
10190 .byte 72,173 // lods %ds:(%rsi),%rax
10191 .byte 255,224 // jmpq *%rax
10192
Mike Kleindb1cbcb2017-04-12 08:35:41 -040010193HIDDEN _sk_rgb_to_hsl_hsw
10194.globl _sk_rgb_to_hsl_hsw
Mike Klein86714282017-04-13 17:37:38 -040010195FUNCTION(_sk_rgb_to_hsl_hsw)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040010196_sk_rgb_to_hsl_hsw:
Mike Kleinfe560a82017-05-01 12:56:35 -040010197 .byte 197,124,95,193 // vmaxps %ymm1,%ymm0,%ymm8
10198 .byte 197,60,95,194 // vmaxps %ymm2,%ymm8,%ymm8
10199 .byte 197,124,93,201 // vminps %ymm1,%ymm0,%ymm9
10200 .byte 197,52,93,202 // vminps %ymm2,%ymm9,%ymm9
10201 .byte 196,65,60,92,209 // vsubps %ymm9,%ymm8,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040010202 .byte 196,98,125,24,29,67,52,0,0 // vbroadcastss 0x3443(%rip),%ymm11 # 4954 <_sk_callback_hsw+0x207>
Mike Kleinfe560a82017-05-01 12:56:35 -040010203 .byte 196,65,36,94,218 // vdivps %ymm10,%ymm11,%ymm11
10204 .byte 197,116,92,226 // vsubps %ymm2,%ymm1,%ymm12
10205 .byte 197,116,194,234,1 // vcmpltps %ymm2,%ymm1,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040010206 .byte 196,98,125,24,53,48,52,0,0 // vbroadcastss 0x3430(%rip),%ymm14 # 4958 <_sk_callback_hsw+0x20b>
Mike Kleindb1cbcb2017-04-12 08:35:41 -040010207 .byte 196,65,4,87,255 // vxorps %ymm15,%ymm15,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -040010208 .byte 196,67,5,74,238,208 // vblendvps %ymm13,%ymm14,%ymm15,%ymm13
10209 .byte 196,66,37,168,229 // vfmadd213ps %ymm13,%ymm11,%ymm12
10210 .byte 197,236,92,208 // vsubps %ymm0,%ymm2,%ymm2
10211 .byte 197,124,92,233 // vsubps %ymm1,%ymm0,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040010212 .byte 196,98,125,24,53,23,52,0,0 // vbroadcastss 0x3417(%rip),%ymm14 # 4960 <_sk_callback_hsw+0x213>
Mike Kleinfe560a82017-05-01 12:56:35 -040010213 .byte 196,66,37,168,238 // vfmadd213ps %ymm14,%ymm11,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040010214 .byte 196,98,125,24,53,5,52,0,0 // vbroadcastss 0x3405(%rip),%ymm14 # 495c <_sk_callback_hsw+0x20f>
Mike Kleinfe560a82017-05-01 12:56:35 -040010215 .byte 196,194,37,168,214 // vfmadd213ps %ymm14,%ymm11,%ymm2
10216 .byte 197,188,194,201,0 // vcmpeqps %ymm1,%ymm8,%ymm1
10217 .byte 196,227,21,74,202,16 // vblendvps %ymm1,%ymm2,%ymm13,%ymm1
10218 .byte 197,188,194,192,0 // vcmpeqps %ymm0,%ymm8,%ymm0
10219 .byte 196,195,117,74,196,0 // vblendvps %ymm0,%ymm12,%ymm1,%ymm0
10220 .byte 196,193,60,88,201 // vaddps %ymm9,%ymm8,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040010221 .byte 196,98,125,24,29,232,51,0,0 // vbroadcastss 0x33e8(%rip),%ymm11 # 4968 <_sk_callback_hsw+0x21b>
Mike Kleinfe560a82017-05-01 12:56:35 -040010222 .byte 196,193,116,89,211 // vmulps %ymm11,%ymm1,%ymm2
10223 .byte 197,36,194,218,1 // vcmpltps %ymm2,%ymm11,%ymm11
10224 .byte 196,65,12,92,224 // vsubps %ymm8,%ymm14,%ymm12
10225 .byte 196,65,28,92,225 // vsubps %ymm9,%ymm12,%ymm12
10226 .byte 196,195,117,74,204,176 // vblendvps %ymm11,%ymm12,%ymm1,%ymm1
10227 .byte 196,65,60,194,193,0 // vcmpeqps %ymm9,%ymm8,%ymm8
10228 .byte 197,172,94,201 // vdivps %ymm1,%ymm10,%ymm1
10229 .byte 196,195,125,74,199,128 // vblendvps %ymm8,%ymm15,%ymm0,%ymm0
10230 .byte 196,195,117,74,207,128 // vblendvps %ymm8,%ymm15,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040010231 .byte 196,98,125,24,5,171,51,0,0 // vbroadcastss 0x33ab(%rip),%ymm8 # 4964 <_sk_callback_hsw+0x217>
Mike Kleinfe560a82017-05-01 12:56:35 -040010232 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Kleindb1cbcb2017-04-12 08:35:41 -040010233 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleindb1cbcb2017-04-12 08:35:41 -040010234 .byte 255,224 // jmpq *%rax
10235
10236HIDDEN _sk_hsl_to_rgb_hsw
10237.globl _sk_hsl_to_rgb_hsw
Mike Klein86714282017-04-13 17:37:38 -040010238FUNCTION(_sk_hsl_to_rgb_hsw)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040010239_sk_hsl_to_rgb_hsw:
Mike Klein879a08a2017-05-01 15:34:01 -040010240 .byte 72,131,236,56 // sub $0x38,%rsp
10241 .byte 197,252,17,60,36 // vmovups %ymm7,(%rsp)
10242 .byte 197,252,17,116,36,224 // vmovups %ymm6,-0x20(%rsp)
10243 .byte 197,252,17,108,36,192 // vmovups %ymm5,-0x40(%rsp)
10244 .byte 197,252,17,100,36,160 // vmovups %ymm4,-0x60(%rsp)
10245 .byte 197,252,17,92,36,128 // vmovups %ymm3,-0x80(%rsp)
Mike Klein5664e652017-05-01 16:01:38 -040010246 .byte 197,252,40,233 // vmovaps %ymm1,%ymm5
10247 .byte 197,252,40,224 // vmovaps %ymm0,%ymm4
Mike Klein8ca33562017-05-23 08:07:43 -040010248 .byte 196,98,125,24,5,120,51,0,0 // vbroadcastss 0x3378(%rip),%ymm8 # 496c <_sk_callback_hsw+0x21f>
Mike Klein5664e652017-05-01 16:01:38 -040010249 .byte 197,60,194,202,2 // vcmpleps %ymm2,%ymm8,%ymm9
10250 .byte 197,84,89,210 // vmulps %ymm2,%ymm5,%ymm10
10251 .byte 196,65,84,92,218 // vsubps %ymm10,%ymm5,%ymm11
10252 .byte 196,67,45,74,203,144 // vblendvps %ymm9,%ymm11,%ymm10,%ymm9
10253 .byte 197,52,88,210 // vaddps %ymm2,%ymm9,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040010254 .byte 196,98,125,24,13,91,51,0,0 // vbroadcastss 0x335b(%rip),%ymm9 # 4970 <_sk_callback_hsw+0x223>
Mike Klein5664e652017-05-01 16:01:38 -040010255 .byte 196,66,109,170,202 // vfmsub213ps %ymm10,%ymm2,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040010256 .byte 196,98,125,24,29,81,51,0,0 // vbroadcastss 0x3351(%rip),%ymm11 # 4974 <_sk_callback_hsw+0x227>
Mike Klein5664e652017-05-01 16:01:38 -040010257 .byte 196,65,92,88,219 // vaddps %ymm11,%ymm4,%ymm11
Mike Klein879a08a2017-05-01 15:34:01 -040010258 .byte 196,67,125,8,227,1 // vroundps $0x1,%ymm11,%ymm12
Mike Klein5664e652017-05-01 16:01:38 -040010259 .byte 196,65,36,92,252 // vsubps %ymm12,%ymm11,%ymm15
10260 .byte 196,65,44,92,217 // vsubps %ymm9,%ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040010261 .byte 196,98,125,24,45,59,51,0,0 // vbroadcastss 0x333b(%rip),%ymm13 # 497c <_sk_callback_hsw+0x22f>
Mike Klein5664e652017-05-01 16:01:38 -040010262 .byte 196,193,4,89,197 // vmulps %ymm13,%ymm15,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040010263 .byte 196,98,125,24,53,49,51,0,0 // vbroadcastss 0x3331(%rip),%ymm14 # 4980 <_sk_callback_hsw+0x233>
Mike Klein5664e652017-05-01 16:01:38 -040010264 .byte 197,12,92,224 // vsubps %ymm0,%ymm14,%ymm12
10265 .byte 196,66,37,168,225 // vfmadd213ps %ymm9,%ymm11,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -040010266 .byte 196,226,125,24,29,23,51,0,0 // vbroadcastss 0x3317(%rip),%ymm3 # 4978 <_sk_callback_hsw+0x22b>
Mike Klein5664e652017-05-01 16:01:38 -040010267 .byte 196,193,100,194,255,2 // vcmpleps %ymm15,%ymm3,%ymm7
10268 .byte 196,195,29,74,249,112 // vblendvps %ymm7,%ymm9,%ymm12,%ymm7
10269 .byte 196,65,60,194,231,2 // vcmpleps %ymm15,%ymm8,%ymm12
10270 .byte 196,227,45,74,255,192 // vblendvps %ymm12,%ymm7,%ymm10,%ymm7
Mike Klein8ca33562017-05-23 08:07:43 -040010271 .byte 196,98,125,24,37,2,51,0,0 // vbroadcastss 0x3302(%rip),%ymm12 # 4984 <_sk_callback_hsw+0x237>
Mike Klein5664e652017-05-01 16:01:38 -040010272 .byte 196,65,28,194,255,2 // vcmpleps %ymm15,%ymm12,%ymm15
10273 .byte 196,194,37,168,193 // vfmadd213ps %ymm9,%ymm11,%ymm0
10274 .byte 196,99,125,74,255,240 // vblendvps %ymm15,%ymm7,%ymm0,%ymm15
10275 .byte 196,227,125,8,196,1 // vroundps $0x1,%ymm4,%ymm0
10276 .byte 197,220,92,192 // vsubps %ymm0,%ymm4,%ymm0
10277 .byte 196,193,124,89,253 // vmulps %ymm13,%ymm0,%ymm7
10278 .byte 197,140,92,207 // vsubps %ymm7,%ymm14,%ymm1
10279 .byte 196,194,37,168,201 // vfmadd213ps %ymm9,%ymm11,%ymm1
10280 .byte 197,228,194,240,2 // vcmpleps %ymm0,%ymm3,%ymm6
10281 .byte 196,195,117,74,201,96 // vblendvps %ymm6,%ymm9,%ymm1,%ymm1
10282 .byte 197,188,194,240,2 // vcmpleps %ymm0,%ymm8,%ymm6
10283 .byte 196,227,45,74,201,96 // vblendvps %ymm6,%ymm1,%ymm10,%ymm1
10284 .byte 197,156,194,192,2 // vcmpleps %ymm0,%ymm12,%ymm0
10285 .byte 196,194,37,168,249 // vfmadd213ps %ymm9,%ymm11,%ymm7
10286 .byte 196,227,69,74,201,0 // vblendvps %ymm0,%ymm1,%ymm7,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040010287 .byte 196,226,125,24,5,174,50,0,0 // vbroadcastss 0x32ae(%rip),%ymm0 # 4988 <_sk_callback_hsw+0x23b>
Mike Klein5664e652017-05-01 16:01:38 -040010288 .byte 197,220,88,192 // vaddps %ymm0,%ymm4,%ymm0
10289 .byte 196,227,125,8,224,1 // vroundps $0x1,%ymm0,%ymm4
10290 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
10291 .byte 197,228,194,216,2 // vcmpleps %ymm0,%ymm3,%ymm3
10292 .byte 196,193,124,89,229 // vmulps %ymm13,%ymm0,%ymm4
10293 .byte 197,140,92,244 // vsubps %ymm4,%ymm14,%ymm6
10294 .byte 196,194,37,168,241 // vfmadd213ps %ymm9,%ymm11,%ymm6
10295 .byte 196,195,77,74,217,48 // vblendvps %ymm3,%ymm9,%ymm6,%ymm3
10296 .byte 197,188,194,240,2 // vcmpleps %ymm0,%ymm8,%ymm6
10297 .byte 196,227,45,74,219,96 // vblendvps %ymm6,%ymm3,%ymm10,%ymm3
10298 .byte 196,98,37,184,204 // vfmadd231ps %ymm4,%ymm11,%ymm9
10299 .byte 197,156,194,192,2 // vcmpleps %ymm0,%ymm12,%ymm0
10300 .byte 196,227,53,74,219,0 // vblendvps %ymm0,%ymm3,%ymm9,%ymm3
Mike Kleindb1cbcb2017-04-12 08:35:41 -040010301 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
Mike Klein5664e652017-05-01 16:01:38 -040010302 .byte 197,212,194,224,0 // vcmpeqps %ymm0,%ymm5,%ymm4
10303 .byte 196,227,5,74,194,64 // vblendvps %ymm4,%ymm2,%ymm15,%ymm0
10304 .byte 196,227,117,74,202,64 // vblendvps %ymm4,%ymm2,%ymm1,%ymm1
10305 .byte 196,227,101,74,210,64 // vblendvps %ymm4,%ymm2,%ymm3,%ymm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -040010306 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein879a08a2017-05-01 15:34:01 -040010307 .byte 197,252,16,92,36,128 // vmovups -0x80(%rsp),%ymm3
10308 .byte 197,252,16,100,36,160 // vmovups -0x60(%rsp),%ymm4
10309 .byte 197,252,16,108,36,192 // vmovups -0x40(%rsp),%ymm5
10310 .byte 197,252,16,116,36,224 // vmovups -0x20(%rsp),%ymm6
10311 .byte 197,252,16,60,36 // vmovups (%rsp),%ymm7
10312 .byte 72,131,196,56 // add $0x38,%rsp
Mike Kleindb1cbcb2017-04-12 08:35:41 -040010313 .byte 255,224 // jmpq *%rax
10314
Mike Klein7c4af542017-03-29 18:21:14 -040010315HIDDEN _sk_scale_1_float_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010316.globl _sk_scale_1_float_hsw
Mike Klein86714282017-04-13 17:37:38 -040010317FUNCTION(_sk_scale_1_float_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010318_sk_scale_1_float_hsw:
10319 .byte 72,173 // lods %ds:(%rsi),%rax
10320 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
10321 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
10322 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
10323 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
10324 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
10325 .byte 72,173 // lods %ds:(%rsi),%rax
10326 .byte 255,224 // jmpq *%rax
10327
Mike Klein7c4af542017-03-29 18:21:14 -040010328HIDDEN _sk_scale_u8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010329.globl _sk_scale_u8_hsw
Mike Klein86714282017-04-13 17:37:38 -040010330FUNCTION(_sk_scale_u8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010331_sk_scale_u8_hsw:
10332 .byte 73,137,200 // mov %rcx,%r8
10333 .byte 72,173 // lods %ds:(%rsi),%rax
10334 .byte 72,139,0 // mov (%rax),%rax
10335 .byte 72,1,248 // add %rdi,%rax
10336 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040010337 .byte 117,51 // jne 17ba <_sk_scale_u8_hsw+0x43>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010338 .byte 197,122,126,0 // vmovq (%rax),%xmm8
10339 .byte 196,66,125,49,192 // vpmovzxbd %xmm8,%ymm8
10340 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040010341 .byte 196,98,125,24,13,238,49,0,0 // vbroadcastss 0x31ee(%rip),%ymm9 # 498c <_sk_callback_hsw+0x23f>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010342 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
10343 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
10344 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
10345 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
10346 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
10347 .byte 72,173 // lods %ds:(%rsi),%rax
10348 .byte 76,137,193 // mov %r8,%rcx
10349 .byte 255,224 // jmpq *%rax
10350 .byte 49,201 // xor %ecx,%ecx
10351 .byte 77,137,194 // mov %r8,%r10
10352 .byte 69,49,201 // xor %r9d,%r9d
10353 .byte 68,15,182,24 // movzbl (%rax),%r11d
10354 .byte 72,255,192 // inc %rax
10355 .byte 73,211,227 // shl %cl,%r11
10356 .byte 77,9,217 // or %r11,%r9
10357 .byte 72,131,193,8 // add $0x8,%rcx
10358 .byte 73,255,202 // dec %r10
Mike Klein5d7f2b52017-05-20 13:21:59 -040010359 .byte 117,234 // jne 17c2 <_sk_scale_u8_hsw+0x4b>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010360 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Klein5d7f2b52017-05-20 13:21:59 -040010361 .byte 235,172 // jmp 178b <_sk_scale_u8_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010362
Mike Klein7c4af542017-03-29 18:21:14 -040010363HIDDEN _sk_lerp_1_float_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010364.globl _sk_lerp_1_float_hsw
Mike Klein86714282017-04-13 17:37:38 -040010365FUNCTION(_sk_lerp_1_float_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010366_sk_lerp_1_float_hsw:
10367 .byte 72,173 // lods %ds:(%rsi),%rax
10368 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
10369 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
10370 .byte 196,226,61,168,196 // vfmadd213ps %ymm4,%ymm8,%ymm0
10371 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
10372 .byte 196,226,61,168,205 // vfmadd213ps %ymm5,%ymm8,%ymm1
10373 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
10374 .byte 196,226,61,168,214 // vfmadd213ps %ymm6,%ymm8,%ymm2
10375 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
10376 .byte 196,226,61,168,223 // vfmadd213ps %ymm7,%ymm8,%ymm3
10377 .byte 72,173 // lods %ds:(%rsi),%rax
10378 .byte 255,224 // jmpq *%rax
10379
Mike Klein7c4af542017-03-29 18:21:14 -040010380HIDDEN _sk_lerp_u8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010381.globl _sk_lerp_u8_hsw
Mike Klein86714282017-04-13 17:37:38 -040010382FUNCTION(_sk_lerp_u8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010383_sk_lerp_u8_hsw:
10384 .byte 73,137,200 // mov %rcx,%r8
10385 .byte 72,173 // lods %ds:(%rsi),%rax
10386 .byte 72,139,0 // mov (%rax),%rax
10387 .byte 72,1,248 // add %rdi,%rax
10388 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040010389 .byte 117,71 // jne 1865 <_sk_lerp_u8_hsw+0x57>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010390 .byte 197,122,126,0 // vmovq (%rax),%xmm8
10391 .byte 196,66,125,49,192 // vpmovzxbd %xmm8,%ymm8
10392 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040010393 .byte 196,98,125,24,13,91,49,0,0 // vbroadcastss 0x315b(%rip),%ymm9 # 4990 <_sk_callback_hsw+0x243>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010394 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
10395 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
10396 .byte 196,226,61,168,196 // vfmadd213ps %ymm4,%ymm8,%ymm0
10397 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
10398 .byte 196,226,61,168,205 // vfmadd213ps %ymm5,%ymm8,%ymm1
10399 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
10400 .byte 196,226,61,168,214 // vfmadd213ps %ymm6,%ymm8,%ymm2
10401 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
10402 .byte 196,226,61,168,223 // vfmadd213ps %ymm7,%ymm8,%ymm3
10403 .byte 72,173 // lods %ds:(%rsi),%rax
10404 .byte 76,137,193 // mov %r8,%rcx
10405 .byte 255,224 // jmpq *%rax
10406 .byte 49,201 // xor %ecx,%ecx
10407 .byte 77,137,194 // mov %r8,%r10
10408 .byte 69,49,201 // xor %r9d,%r9d
10409 .byte 68,15,182,24 // movzbl (%rax),%r11d
10410 .byte 72,255,192 // inc %rax
10411 .byte 73,211,227 // shl %cl,%r11
10412 .byte 77,9,217 // or %r11,%r9
10413 .byte 72,131,193,8 // add $0x8,%rcx
10414 .byte 73,255,202 // dec %r10
Mike Klein5d7f2b52017-05-20 13:21:59 -040010415 .byte 117,234 // jne 186d <_sk_lerp_u8_hsw+0x5f>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010416 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Klein5d7f2b52017-05-20 13:21:59 -040010417 .byte 235,152 // jmp 1822 <_sk_lerp_u8_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010418
Mike Klein7c4af542017-03-29 18:21:14 -040010419HIDDEN _sk_lerp_565_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010420.globl _sk_lerp_565_hsw
Mike Klein86714282017-04-13 17:37:38 -040010421FUNCTION(_sk_lerp_565_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010422_sk_lerp_565_hsw:
10423 .byte 72,173 // lods %ds:(%rsi),%rax
10424 .byte 76,139,16 // mov (%rax),%r10
10425 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010426 .byte 15,133,169,0,0,0 // jne 1941 <_sk_lerp_565_hsw+0xb7>
bungeman6f9f2592017-05-10 13:50:12 -040010427 .byte 196,65,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm8
10428 .byte 196,66,125,51,192 // vpmovzxwd %xmm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040010429 .byte 196,98,125,88,13,232,48,0,0 // vpbroadcastd 0x30e8(%rip),%ymm9 # 4994 <_sk_callback_hsw+0x247>
bungeman6f9f2592017-05-10 13:50:12 -040010430 .byte 196,65,61,219,201 // vpand %ymm9,%ymm8,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040010431 .byte 196,65,124,91,201 // vcvtdq2ps %ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040010432 .byte 196,98,125,24,21,217,48,0,0 // vbroadcastss 0x30d9(%rip),%ymm10 # 4998 <_sk_callback_hsw+0x24b>
Mike Kleinfe560a82017-05-01 12:56:35 -040010433 .byte 196,65,52,89,202 // vmulps %ymm10,%ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040010434 .byte 196,98,125,88,21,207,48,0,0 // vpbroadcastd 0x30cf(%rip),%ymm10 # 499c <_sk_callback_hsw+0x24f>
bungeman6f9f2592017-05-10 13:50:12 -040010435 .byte 196,65,61,219,210 // vpand %ymm10,%ymm8,%ymm10
10436 .byte 196,65,124,91,210 // vcvtdq2ps %ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040010437 .byte 196,98,125,24,29,192,48,0,0 // vbroadcastss 0x30c0(%rip),%ymm11 # 49a0 <_sk_callback_hsw+0x253>
bungeman6f9f2592017-05-10 13:50:12 -040010438 .byte 196,65,44,89,211 // vmulps %ymm11,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040010439 .byte 196,98,125,88,29,182,48,0,0 // vpbroadcastd 0x30b6(%rip),%ymm11 # 49a4 <_sk_callback_hsw+0x257>
bungeman6f9f2592017-05-10 13:50:12 -040010440 .byte 196,65,61,219,195 // vpand %ymm11,%ymm8,%ymm8
10441 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040010442 .byte 196,98,125,24,29,167,48,0,0 // vbroadcastss 0x30a7(%rip),%ymm11 # 49a8 <_sk_callback_hsw+0x25b>
bungeman6f9f2592017-05-10 13:50:12 -040010443 .byte 196,65,60,89,195 // vmulps %ymm11,%ymm8,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040010444 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
bungeman6f9f2592017-05-10 13:50:12 -040010445 .byte 196,226,53,168,196 // vfmadd213ps %ymm4,%ymm9,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040010446 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
bungeman6f9f2592017-05-10 13:50:12 -040010447 .byte 196,226,45,168,205 // vfmadd213ps %ymm5,%ymm10,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040010448 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
bungeman6f9f2592017-05-10 13:50:12 -040010449 .byte 196,226,61,168,214 // vfmadd213ps %ymm6,%ymm8,%ymm2
10450 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
10451 .byte 196,98,101,168,207 // vfmadd213ps %ymm7,%ymm3,%ymm9
10452 .byte 196,98,101,168,215 // vfmadd213ps %ymm7,%ymm3,%ymm10
10453 .byte 196,98,101,168,199 // vfmadd213ps %ymm7,%ymm3,%ymm8
10454 .byte 196,193,44,95,216 // vmaxps %ymm8,%ymm10,%ymm3
10455 .byte 197,180,95,219 // vmaxps %ymm3,%ymm9,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040010456 .byte 72,173 // lods %ds:(%rsi),%rax
10457 .byte 255,224 // jmpq *%rax
10458 .byte 65,137,200 // mov %ecx,%r8d
10459 .byte 65,128,224,7 // and $0x7,%r8b
bungeman6f9f2592017-05-10 13:50:12 -040010460 .byte 196,65,57,239,192 // vpxor %xmm8,%xmm8,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040010461 .byte 65,254,200 // dec %r8b
10462 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Klein5d7f2b52017-05-20 13:21:59 -040010463 .byte 15,135,68,255,255,255 // ja 189e <_sk_lerp_565_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010464 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Klein5d7f2b52017-05-20 13:21:59 -040010465 .byte 76,141,13,75,0,0,0 // lea 0x4b(%rip),%r9 # 19b0 <_sk_lerp_565_hsw+0x126>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010466 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
10467 .byte 76,1,200 // add %r9,%rax
10468 .byte 255,224 // jmpq *%rax
bungeman6f9f2592017-05-10 13:50:12 -040010469 .byte 196,65,57,239,192 // vpxor %xmm8,%xmm8,%xmm8
10470 .byte 196,65,57,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm8,%xmm8
10471 .byte 196,65,57,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm8,%xmm8
10472 .byte 196,65,57,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm8,%xmm8
10473 .byte 196,65,57,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm8,%xmm8
10474 .byte 196,65,57,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm8,%xmm8
10475 .byte 196,65,57,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm8,%xmm8
10476 .byte 196,65,57,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm8,%xmm8
Mike Klein5d7f2b52017-05-20 13:21:59 -040010477 .byte 233,239,254,255,255 // jmpq 189e <_sk_lerp_565_hsw+0x14>
10478 .byte 144 // nop
10479 .byte 243,255 // repz (bad)
10480 .byte 255 // (bad)
10481 .byte 255 // (bad)
10482 .byte 235,255 // jmp 19b5 <_sk_lerp_565_hsw+0x12b>
10483 .byte 255 // (bad)
10484 .byte 255,227 // jmpq *%rbx
Mike Kleind7e06ae2017-03-29 16:33:06 -040010485 .byte 255 // (bad)
10486 .byte 255 // (bad)
10487 .byte 255 // (bad)
Mike Klein5d7f2b52017-05-20 13:21:59 -040010488 .byte 219,255 // (bad)
10489 .byte 255 // (bad)
10490 .byte 255,211 // callq *%rbx
Mike Klein7e68bc92017-05-16 12:03:15 -040010491 .byte 255 // (bad)
10492 .byte 255 // (bad)
Mike Klein5d7f2b52017-05-20 13:21:59 -040010493 .byte 255,203 // dec %ebx
Mike Kleind7e06ae2017-03-29 16:33:06 -040010494 .byte 255 // (bad)
10495 .byte 255 // (bad)
10496 .byte 255 // (bad)
Mike Klein5d7f2b52017-05-20 13:21:59 -040010497 .byte 190 // .byte 0xbe
Mike Kleind7e06ae2017-03-29 16:33:06 -040010498 .byte 255 // (bad)
10499 .byte 255 // (bad)
10500 .byte 255 // .byte 0xff
10501
Mike Klein7c4af542017-03-29 18:21:14 -040010502HIDDEN _sk_load_tables_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010503.globl _sk_load_tables_hsw
Mike Klein86714282017-04-13 17:37:38 -040010504FUNCTION(_sk_load_tables_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010505_sk_load_tables_hsw:
10506 .byte 73,137,200 // mov %rcx,%r8
10507 .byte 72,173 // lods %ds:(%rsi),%rax
10508 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
10509 .byte 76,3,8 // add (%rax),%r9
10510 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040010511 .byte 117,105 // jne 1a4a <_sk_load_tables_hsw+0x7e>
Brian Osman74fc5932017-05-22 19:25:36 +000010512 .byte 196,193,126,111,25 // vmovdqu (%r9),%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040010513 .byte 197,229,219,13,114,50,0,0 // vpand 0x3272(%rip),%ymm3,%ymm1 # 4c60 <_sk_callback_hsw+0x513>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010514 .byte 196,65,61,118,192 // vpcmpeqd %ymm8,%ymm8,%ymm8
10515 .byte 72,139,72,8 // mov 0x8(%rax),%rcx
10516 .byte 76,139,72,16 // mov 0x10(%rax),%r9
Mike Klein0aa742f2017-04-27 13:36:57 -040010517 .byte 197,237,118,210 // vpcmpeqd %ymm2,%ymm2,%ymm2
10518 .byte 196,226,109,146,4,137 // vgatherdps %ymm2,(%rcx,%ymm1,4),%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040010519 .byte 196,226,101,0,21,114,50,0,0 // vpshufb 0x3272(%rip),%ymm3,%ymm2 # 4c80 <_sk_callback_hsw+0x533>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010520 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
Mike Klein0aa742f2017-04-27 13:36:57 -040010521 .byte 196,194,53,146,12,145 // vgatherdps %ymm9,(%r9,%ymm2,4),%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040010522 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040010523 .byte 196,98,101,0,13,122,50,0,0 // vpshufb 0x327a(%rip),%ymm3,%ymm9 # 4ca0 <_sk_callback_hsw+0x553>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010524 .byte 196,162,61,146,20,136 // vgatherdps %ymm8,(%rax,%ymm9,4),%ymm2
10525 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040010526 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040010527 .byte 196,98,125,24,5,110,47,0,0 // vbroadcastss 0x2f6e(%rip),%ymm8 # 49ac <_sk_callback_hsw+0x25f>
Mike Kleinfe560a82017-05-01 12:56:35 -040010528 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040010529 .byte 72,173 // lods %ds:(%rsi),%rax
10530 .byte 76,137,193 // mov %r8,%rcx
10531 .byte 255,224 // jmpq *%rax
10532 .byte 185,8,0,0,0 // mov $0x8,%ecx
10533 .byte 68,41,193 // sub %r8d,%ecx
10534 .byte 192,225,3 // shl $0x3,%cl
10535 .byte 73,199,194,255,255,255,255 // mov $0xffffffffffffffff,%r10
10536 .byte 73,211,234 // shr %cl,%r10
10537 .byte 196,193,249,110,194 // vmovq %r10,%xmm0
10538 .byte 196,226,125,33,192 // vpmovsxbd %xmm0,%ymm0
Brian Osman74fc5932017-05-22 19:25:36 +000010539 .byte 196,194,125,140,25 // vpmaskmovd (%r9),%ymm0,%ymm3
Mike Klein5d7f2b52017-05-20 13:21:59 -040010540 .byte 233,115,255,255,255 // jmpq 19e6 <_sk_load_tables_hsw+0x1a>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010541
Mike Kleina3735cd2017-04-17 13:19:05 -040010542HIDDEN _sk_load_tables_u16_be_hsw
10543.globl _sk_load_tables_u16_be_hsw
10544FUNCTION(_sk_load_tables_u16_be_hsw)
10545_sk_load_tables_u16_be_hsw:
10546 .byte 72,173 // lods %ds:(%rsi),%rax
10547 .byte 76,139,0 // mov (%rax),%r8
10548 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
10549 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010550 .byte 15,133,201,0,0,0 // jne 1b52 <_sk_load_tables_u16_be_hsw+0xdf>
Mike Kleina3735cd2017-04-17 13:19:05 -040010551 .byte 196,1,121,16,4,72 // vmovupd (%r8,%r9,2),%xmm8
10552 .byte 196,129,121,16,84,72,16 // vmovupd 0x10(%r8,%r9,2),%xmm2
10553 .byte 196,129,121,16,92,72,32 // vmovupd 0x20(%r8,%r9,2),%xmm3
10554 .byte 196,1,122,111,76,72,48 // vmovdqu 0x30(%r8,%r9,2),%xmm9
10555 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
10556 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
10557 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
10558 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
10559 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
10560 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
Mike Klein0aa742f2017-04-27 13:36:57 -040010561 .byte 197,241,97,195 // vpunpcklwd %xmm3,%xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040010562 .byte 197,241,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm3
Mike Klein0aa742f2017-04-27 13:36:57 -040010563 .byte 197,185,108,200 // vpunpcklqdq %xmm0,%xmm8,%xmm1
10564 .byte 197,185,109,208 // vpunpckhqdq %xmm0,%xmm8,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040010565 .byte 197,49,108,195 // vpunpcklqdq %xmm3,%xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040010566 .byte 197,121,111,21,6,51,0,0 // vmovdqa 0x3306(%rip),%xmm10 # 4de0 <_sk_callback_hsw+0x693>
Mike Klein0aa742f2017-04-27 13:36:57 -040010567 .byte 196,193,113,219,194 // vpand %xmm10,%xmm1,%xmm0
10568 .byte 196,226,125,51,200 // vpmovzxwd %xmm0,%ymm1
Mike Kleina3735cd2017-04-17 13:19:05 -040010569 .byte 196,65,37,118,219 // vpcmpeqd %ymm11,%ymm11,%ymm11
10570 .byte 76,139,64,8 // mov 0x8(%rax),%r8
10571 .byte 76,139,72,16 // mov 0x10(%rax),%r9
10572 .byte 196,65,29,118,228 // vpcmpeqd %ymm12,%ymm12,%ymm12
10573 .byte 196,194,29,146,4,136 // vgatherdps %ymm12,(%r8,%ymm1,4),%ymm0
Mike Klein0aa742f2017-04-27 13:36:57 -040010574 .byte 196,193,105,219,202 // vpand %xmm10,%xmm2,%xmm1
10575 .byte 196,226,125,51,209 // vpmovzxwd %xmm1,%ymm2
10576 .byte 196,65,29,118,228 // vpcmpeqd %ymm12,%ymm12,%ymm12
10577 .byte 196,194,29,146,12,145 // vgatherdps %ymm12,(%r9,%ymm2,4),%ymm1
Mike Kleina3735cd2017-04-17 13:19:05 -040010578 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040010579 .byte 196,193,57,219,210 // vpand %xmm10,%xmm8,%xmm2
10580 .byte 196,98,125,51,194 // vpmovzxwd %xmm2,%ymm8
Mike Kleina3735cd2017-04-17 13:19:05 -040010581 .byte 196,162,37,146,20,128 // vgatherdps %ymm11,(%rax,%ymm8,4),%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040010582 .byte 197,177,109,219 // vpunpckhqdq %xmm3,%xmm9,%xmm3
10583 .byte 197,185,113,243,8 // vpsllw $0x8,%xmm3,%xmm8
Mike Kleina3735cd2017-04-17 13:19:05 -040010584 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040010585 .byte 197,185,235,219 // vpor %xmm3,%xmm8,%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040010586 .byte 196,226,125,51,219 // vpmovzxwd %xmm3,%ymm3
10587 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040010588 .byte 196,98,125,24,5,103,46,0,0 // vbroadcastss 0x2e67(%rip),%ymm8 # 49b0 <_sk_callback_hsw+0x263>
Mike Kleina3735cd2017-04-17 13:19:05 -040010589 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
10590 .byte 72,173 // lods %ds:(%rsi),%rax
10591 .byte 255,224 // jmpq *%rax
10592 .byte 196,1,123,16,4,72 // vmovsd (%r8,%r9,2),%xmm8
10593 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
10594 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010595 .byte 116,85 // je 1bb8 <_sk_load_tables_u16_be_hsw+0x145>
Mike Kleina3735cd2017-04-17 13:19:05 -040010596 .byte 196,1,57,22,68,72,8 // vmovhpd 0x8(%r8,%r9,2),%xmm8,%xmm8
10597 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010598 .byte 114,72 // jb 1bb8 <_sk_load_tables_u16_be_hsw+0x145>
Mike Kleina3735cd2017-04-17 13:19:05 -040010599 .byte 196,129,123,16,84,72,16 // vmovsd 0x10(%r8,%r9,2),%xmm2
10600 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010601 .byte 116,72 // je 1bc5 <_sk_load_tables_u16_be_hsw+0x152>
Mike Kleina3735cd2017-04-17 13:19:05 -040010602 .byte 196,129,105,22,84,72,24 // vmovhpd 0x18(%r8,%r9,2),%xmm2,%xmm2
10603 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010604 .byte 114,59 // jb 1bc5 <_sk_load_tables_u16_be_hsw+0x152>
Mike Kleina3735cd2017-04-17 13:19:05 -040010605 .byte 196,129,123,16,92,72,32 // vmovsd 0x20(%r8,%r9,2),%xmm3
10606 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010607 .byte 15,132,9,255,255,255 // je 1aa4 <_sk_load_tables_u16_be_hsw+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040010608 .byte 196,129,97,22,92,72,40 // vmovhpd 0x28(%r8,%r9,2),%xmm3,%xmm3
10609 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010610 .byte 15,130,248,254,255,255 // jb 1aa4 <_sk_load_tables_u16_be_hsw+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040010611 .byte 196,1,122,126,76,72,48 // vmovq 0x30(%r8,%r9,2),%xmm9
Mike Klein5d7f2b52017-05-20 13:21:59 -040010612 .byte 233,236,254,255,255 // jmpq 1aa4 <_sk_load_tables_u16_be_hsw+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040010613 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
10614 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Klein5d7f2b52017-05-20 13:21:59 -040010615 .byte 233,223,254,255,255 // jmpq 1aa4 <_sk_load_tables_u16_be_hsw+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040010616 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Mike Klein5d7f2b52017-05-20 13:21:59 -040010617 .byte 233,214,254,255,255 // jmpq 1aa4 <_sk_load_tables_u16_be_hsw+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040010618
10619HIDDEN _sk_load_tables_rgb_u16_be_hsw
10620.globl _sk_load_tables_rgb_u16_be_hsw
10621FUNCTION(_sk_load_tables_rgb_u16_be_hsw)
10622_sk_load_tables_rgb_u16_be_hsw:
10623 .byte 72,173 // lods %ds:(%rsi),%rax
10624 .byte 76,139,0 // mov (%rax),%r8
10625 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
10626 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010627 .byte 15,133,193,0,0,0 // jne 1ca1 <_sk_load_tables_rgb_u16_be_hsw+0xd3>
Mike Kleina3735cd2017-04-17 13:19:05 -040010628 .byte 196,129,122,111,4,72 // vmovdqu (%r8,%r9,2),%xmm0
10629 .byte 196,129,122,111,84,72,12 // vmovdqu 0xc(%r8,%r9,2),%xmm2
10630 .byte 196,129,122,111,76,72,24 // vmovdqu 0x18(%r8,%r9,2),%xmm1
10631 .byte 196,129,122,111,92,72,32 // vmovdqu 0x20(%r8,%r9,2),%xmm3
10632 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
10633 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
10634 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
10635 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
10636 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
10637 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
10638 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
10639 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
10640 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
10641 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
Mike Klein0aa742f2017-04-27 13:36:57 -040010642 .byte 197,249,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040010643 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040010644 .byte 197,241,105,203 // vpunpckhwd %xmm3,%xmm1,%xmm1
10645 .byte 197,185,108,218 // vpunpcklqdq %xmm2,%xmm8,%xmm3
10646 .byte 197,185,109,210 // vpunpckhqdq %xmm2,%xmm8,%xmm2
10647 .byte 197,121,108,193 // vpunpcklqdq %xmm1,%xmm0,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040010648 .byte 197,121,111,13,166,49,0,0 // vmovdqa 0x31a6(%rip),%xmm9 # 4df0 <_sk_callback_hsw+0x6a3>
Mike Klein0aa742f2017-04-27 13:36:57 -040010649 .byte 196,193,97,219,193 // vpand %xmm9,%xmm3,%xmm0
10650 .byte 196,226,125,51,200 // vpmovzxwd %xmm0,%ymm1
10651 .byte 197,229,118,219 // vpcmpeqd %ymm3,%ymm3,%ymm3
Mike Kleina3735cd2017-04-17 13:19:05 -040010652 .byte 76,139,64,8 // mov 0x8(%rax),%r8
10653 .byte 76,139,72,16 // mov 0x10(%rax),%r9
Mike Klein0aa742f2017-04-27 13:36:57 -040010654 .byte 196,65,45,118,210 // vpcmpeqd %ymm10,%ymm10,%ymm10
10655 .byte 196,194,45,146,4,136 // vgatherdps %ymm10,(%r8,%ymm1,4),%ymm0
10656 .byte 196,193,105,219,201 // vpand %xmm9,%xmm2,%xmm1
10657 .byte 196,226,125,51,209 // vpmovzxwd %xmm1,%ymm2
10658 .byte 196,65,45,118,210 // vpcmpeqd %ymm10,%ymm10,%ymm10
10659 .byte 196,194,45,146,12,145 // vgatherdps %ymm10,(%r9,%ymm2,4),%ymm1
Mike Kleina3735cd2017-04-17 13:19:05 -040010660 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040010661 .byte 196,193,57,219,209 // vpand %xmm9,%xmm8,%xmm2
10662 .byte 196,98,125,51,194 // vpmovzxwd %xmm2,%ymm8
10663 .byte 196,162,101,146,20,128 // vgatherdps %ymm3,(%rax,%ymm8,4),%ymm2
Mike Kleina3735cd2017-04-17 13:19:05 -040010664 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040010665 .byte 196,226,125,24,29,21,45,0,0 // vbroadcastss 0x2d15(%rip),%ymm3 # 49b4 <_sk_callback_hsw+0x267>
Mike Kleina3735cd2017-04-17 13:19:05 -040010666 .byte 255,224 // jmpq *%rax
10667 .byte 196,129,121,110,4,72 // vmovd (%r8,%r9,2),%xmm0
10668 .byte 196,129,121,196,68,72,4,2 // vpinsrw $0x2,0x4(%r8,%r9,2),%xmm0,%xmm0
10669 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010670 .byte 117,5 // jne 1cba <_sk_load_tables_rgb_u16_be_hsw+0xec>
10671 .byte 233,90,255,255,255 // jmpq 1c14 <_sk_load_tables_rgb_u16_be_hsw+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040010672 .byte 196,129,121,110,76,72,6 // vmovd 0x6(%r8,%r9,2),%xmm1
10673 .byte 196,1,113,196,68,72,10,2 // vpinsrw $0x2,0xa(%r8,%r9,2),%xmm1,%xmm8
10674 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010675 .byte 114,26 // jb 1ce9 <_sk_load_tables_rgb_u16_be_hsw+0x11b>
Mike Kleina3735cd2017-04-17 13:19:05 -040010676 .byte 196,129,121,110,76,72,12 // vmovd 0xc(%r8,%r9,2),%xmm1
10677 .byte 196,129,113,196,84,72,16,2 // vpinsrw $0x2,0x10(%r8,%r9,2),%xmm1,%xmm2
10678 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010679 .byte 117,10 // jne 1cee <_sk_load_tables_rgb_u16_be_hsw+0x120>
10680 .byte 233,43,255,255,255 // jmpq 1c14 <_sk_load_tables_rgb_u16_be_hsw+0x46>
10681 .byte 233,38,255,255,255 // jmpq 1c14 <_sk_load_tables_rgb_u16_be_hsw+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040010682 .byte 196,129,121,110,76,72,18 // vmovd 0x12(%r8,%r9,2),%xmm1
10683 .byte 196,1,113,196,76,72,22,2 // vpinsrw $0x2,0x16(%r8,%r9,2),%xmm1,%xmm9
10684 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010685 .byte 114,26 // jb 1d1d <_sk_load_tables_rgb_u16_be_hsw+0x14f>
Mike Kleina3735cd2017-04-17 13:19:05 -040010686 .byte 196,129,121,110,76,72,24 // vmovd 0x18(%r8,%r9,2),%xmm1
10687 .byte 196,129,113,196,76,72,28,2 // vpinsrw $0x2,0x1c(%r8,%r9,2),%xmm1,%xmm1
10688 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010689 .byte 117,10 // jne 1d22 <_sk_load_tables_rgb_u16_be_hsw+0x154>
10690 .byte 233,247,254,255,255 // jmpq 1c14 <_sk_load_tables_rgb_u16_be_hsw+0x46>
10691 .byte 233,242,254,255,255 // jmpq 1c14 <_sk_load_tables_rgb_u16_be_hsw+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040010692 .byte 196,129,121,110,92,72,30 // vmovd 0x1e(%r8,%r9,2),%xmm3
10693 .byte 196,1,97,196,92,72,34,2 // vpinsrw $0x2,0x22(%r8,%r9,2),%xmm3,%xmm11
10694 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040010695 .byte 114,20 // jb 1d4b <_sk_load_tables_rgb_u16_be_hsw+0x17d>
Mike Kleina3735cd2017-04-17 13:19:05 -040010696 .byte 196,129,121,110,92,72,36 // vmovd 0x24(%r8,%r9,2),%xmm3
10697 .byte 196,129,97,196,92,72,40,2 // vpinsrw $0x2,0x28(%r8,%r9,2),%xmm3,%xmm3
Mike Klein5d7f2b52017-05-20 13:21:59 -040010698 .byte 233,201,254,255,255 // jmpq 1c14 <_sk_load_tables_rgb_u16_be_hsw+0x46>
10699 .byte 233,196,254,255,255 // jmpq 1c14 <_sk_load_tables_rgb_u16_be_hsw+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040010700
Mike Klein40de6da2017-04-07 13:09:29 -040010701HIDDEN _sk_byte_tables_hsw
10702.globl _sk_byte_tables_hsw
Mike Klein86714282017-04-13 17:37:38 -040010703FUNCTION(_sk_byte_tables_hsw)
Mike Klein40de6da2017-04-07 13:09:29 -040010704_sk_byte_tables_hsw:
10705 .byte 85 // push %rbp
10706 .byte 65,87 // push %r15
10707 .byte 65,86 // push %r14
10708 .byte 65,85 // push %r13
10709 .byte 65,84 // push %r12
10710 .byte 83 // push %rbx
10711 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040010712 .byte 196,98,125,24,5,83,44,0,0 // vbroadcastss 0x2c53(%rip),%ymm8 # 49b8 <_sk_callback_hsw+0x26b>
Mike Kleinfe560a82017-05-01 12:56:35 -040010713 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Klein40de6da2017-04-07 13:09:29 -040010714 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
10715 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
10716 .byte 68,137,197 // mov %r8d,%ebp
10717 .byte 77,137,194 // mov %r8,%r10
10718 .byte 73,193,234,32 // shr $0x20,%r10
10719 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
10720 .byte 69,137,195 // mov %r8d,%r11d
10721 .byte 77,137,199 // mov %r8,%r15
10722 .byte 73,193,239,32 // shr $0x20,%r15
10723 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
10724 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
10725 .byte 69,137,198 // mov %r8d,%r14d
10726 .byte 77,137,196 // mov %r8,%r12
10727 .byte 73,193,236,32 // shr $0x20,%r12
10728 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
10729 .byte 65,137,221 // mov %ebx,%r13d
10730 .byte 72,193,235,32 // shr $0x20,%rbx
10731 .byte 76,139,8 // mov (%rax),%r9
10732 .byte 76,139,64,8 // mov 0x8(%rax),%r8
10733 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
10734 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
10735 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
10736 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
10737 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
10738 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
10739 .byte 67,15,182,44,41 // movzbl (%r9,%r13,1),%ebp
10740 .byte 196,227,121,32,197,4 // vpinsrb $0x4,%ebp,%xmm0,%xmm0
10741 .byte 65,15,182,44,25 // movzbl (%r9,%rbx,1),%ebp
10742 .byte 196,227,121,32,197,5 // vpinsrb $0x5,%ebp,%xmm0,%xmm0
10743 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
10744 .byte 196,227,121,32,197,6 // vpinsrb $0x6,%ebp,%xmm0,%xmm0
10745 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
10746 .byte 196,227,121,32,197,7 // vpinsrb $0x7,%ebp,%xmm0,%xmm0
10747 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040010748 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040010749 .byte 196,98,125,24,13,164,43,0,0 // vbroadcastss 0x2ba4(%rip),%ymm9 # 49bc <_sk_callback_hsw+0x26f>
Mike Kleinfe560a82017-05-01 12:56:35 -040010750 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
10751 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -040010752 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
10753 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
10754 .byte 65,137,233 // mov %ebp,%r9d
10755 .byte 72,193,237,32 // shr $0x20,%rbp
10756 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
10757 .byte 65,137,218 // mov %ebx,%r10d
10758 .byte 72,193,235,32 // shr $0x20,%rbx
10759 .byte 196,227,125,57,201,1 // vextracti128 $0x1,%ymm1,%xmm1
10760 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
10761 .byte 69,137,222 // mov %r11d,%r14d
10762 .byte 73,193,235,32 // shr $0x20,%r11
10763 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
10764 .byte 69,137,252 // mov %r15d,%r12d
10765 .byte 73,193,239,32 // shr $0x20,%r15
10766 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
10767 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
10768 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
10769 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
10770 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
10771 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
10772 .byte 67,15,182,44,32 // movzbl (%r8,%r12,1),%ebp
10773 .byte 196,227,113,32,205,4 // vpinsrb $0x4,%ebp,%xmm1,%xmm1
10774 .byte 67,15,182,44,56 // movzbl (%r8,%r15,1),%ebp
10775 .byte 196,227,113,32,205,5 // vpinsrb $0x5,%ebp,%xmm1,%xmm1
10776 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
10777 .byte 196,227,113,32,205,6 // vpinsrb $0x6,%ebp,%xmm1,%xmm1
10778 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
10779 .byte 196,227,113,32,205,7 // vpinsrb $0x7,%ebp,%xmm1,%xmm1
10780 .byte 196,226,125,49,201 // vpmovzxbd %xmm1,%ymm1
10781 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040010782 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -040010783 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Kleinfe560a82017-05-01 12:56:35 -040010784 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -040010785 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
10786 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
10787 .byte 65,137,233 // mov %ebp,%r9d
10788 .byte 72,193,237,32 // shr $0x20,%rbp
10789 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
10790 .byte 65,137,218 // mov %ebx,%r10d
10791 .byte 72,193,235,32 // shr $0x20,%rbx
10792 .byte 196,227,125,57,210,1 // vextracti128 $0x1,%ymm2,%xmm2
10793 .byte 196,195,249,22,211,1 // vpextrq $0x1,%xmm2,%r11
10794 .byte 69,137,222 // mov %r11d,%r14d
10795 .byte 73,193,235,32 // shr $0x20,%r11
10796 .byte 196,193,249,126,215 // vmovq %xmm2,%r15
10797 .byte 69,137,252 // mov %r15d,%r12d
10798 .byte 73,193,239,32 // shr $0x20,%r15
10799 .byte 196,131,121,32,20,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm2
10800 .byte 196,195,105,32,20,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm2,%xmm2
10801 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
10802 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
10803 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
10804 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
10805 .byte 67,15,182,44,32 // movzbl (%r8,%r12,1),%ebp
10806 .byte 196,227,105,32,213,4 // vpinsrb $0x4,%ebp,%xmm2,%xmm2
10807 .byte 67,15,182,44,56 // movzbl (%r8,%r15,1),%ebp
10808 .byte 196,227,105,32,213,5 // vpinsrb $0x5,%ebp,%xmm2,%xmm2
10809 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
10810 .byte 196,227,105,32,213,6 // vpinsrb $0x6,%ebp,%xmm2,%xmm2
10811 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
10812 .byte 196,227,105,32,213,7 // vpinsrb $0x7,%ebp,%xmm2,%xmm2
10813 .byte 196,226,125,49,210 // vpmovzxbd %xmm2,%ymm2
10814 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040010815 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -040010816 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040010817 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Klein40de6da2017-04-07 13:09:29 -040010818 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
10819 .byte 196,227,249,22,221,1 // vpextrq $0x1,%xmm3,%rbp
10820 .byte 65,137,232 // mov %ebp,%r8d
10821 .byte 72,193,237,32 // shr $0x20,%rbp
10822 .byte 196,225,249,126,219 // vmovq %xmm3,%rbx
10823 .byte 65,137,217 // mov %ebx,%r9d
10824 .byte 72,193,235,32 // shr $0x20,%rbx
10825 .byte 196,227,125,57,219,1 // vextracti128 $0x1,%ymm3,%xmm3
10826 .byte 196,195,249,22,218,1 // vpextrq $0x1,%xmm3,%r10
10827 .byte 69,137,211 // mov %r10d,%r11d
10828 .byte 73,193,234,32 // shr $0x20,%r10
10829 .byte 196,193,249,126,222 // vmovq %xmm3,%r14
10830 .byte 69,137,247 // mov %r14d,%r15d
10831 .byte 73,193,238,32 // shr $0x20,%r14
10832 .byte 196,163,121,32,28,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm3
10833 .byte 196,227,97,32,28,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm3,%xmm3
10834 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
10835 .byte 196,227,97,32,219,2 // vpinsrb $0x2,%ebx,%xmm3,%xmm3
10836 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
10837 .byte 196,227,97,32,221,3 // vpinsrb $0x3,%ebp,%xmm3,%xmm3
10838 .byte 66,15,182,44,56 // movzbl (%rax,%r15,1),%ebp
10839 .byte 196,227,97,32,221,4 // vpinsrb $0x4,%ebp,%xmm3,%xmm3
10840 .byte 66,15,182,44,48 // movzbl (%rax,%r14,1),%ebp
10841 .byte 196,227,97,32,221,5 // vpinsrb $0x5,%ebp,%xmm3,%xmm3
10842 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
10843 .byte 196,227,97,32,221,6 // vpinsrb $0x6,%ebp,%xmm3,%xmm3
10844 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
10845 .byte 196,227,97,32,216,7 // vpinsrb $0x7,%eax,%xmm3,%xmm3
10846 .byte 196,226,125,49,219 // vpmovzxbd %xmm3,%ymm3
10847 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040010848 .byte 196,193,100,89,217 // vmulps %ymm9,%ymm3,%ymm3
Mike Klein40de6da2017-04-07 13:09:29 -040010849 .byte 72,173 // lods %ds:(%rsi),%rax
10850 .byte 91 // pop %rbx
10851 .byte 65,92 // pop %r12
10852 .byte 65,93 // pop %r13
10853 .byte 65,94 // pop %r14
10854 .byte 65,95 // pop %r15
10855 .byte 93 // pop %rbp
10856 .byte 255,224 // jmpq *%rax
10857
10858HIDDEN _sk_byte_tables_rgb_hsw
10859.globl _sk_byte_tables_rgb_hsw
Mike Klein86714282017-04-13 17:37:38 -040010860FUNCTION(_sk_byte_tables_rgb_hsw)
Mike Klein40de6da2017-04-07 13:09:29 -040010861_sk_byte_tables_rgb_hsw:
10862 .byte 85 // push %rbp
10863 .byte 65,87 // push %r15
10864 .byte 65,86 // push %r14
10865 .byte 65,85 // push %r13
10866 .byte 65,84 // push %r12
10867 .byte 83 // push %rbx
10868 .byte 72,173 // lods %ds:(%rsi),%rax
10869 .byte 68,139,64,24 // mov 0x18(%rax),%r8d
10870 .byte 65,255,200 // dec %r8d
10871 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
10872 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
10873 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
10874 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
10875 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
10876 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
10877 .byte 68,137,197 // mov %r8d,%ebp
10878 .byte 77,137,194 // mov %r8,%r10
10879 .byte 73,193,234,32 // shr $0x20,%r10
10880 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
10881 .byte 69,137,195 // mov %r8d,%r11d
10882 .byte 77,137,199 // mov %r8,%r15
10883 .byte 73,193,239,32 // shr $0x20,%r15
10884 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
10885 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
10886 .byte 69,137,198 // mov %r8d,%r14d
10887 .byte 77,137,196 // mov %r8,%r12
10888 .byte 73,193,236,32 // shr $0x20,%r12
10889 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
10890 .byte 65,137,221 // mov %ebx,%r13d
10891 .byte 72,193,235,32 // shr $0x20,%rbx
10892 .byte 76,139,8 // mov (%rax),%r9
10893 .byte 76,139,64,8 // mov 0x8(%rax),%r8
10894 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
10895 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
10896 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
10897 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
10898 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
10899 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
10900 .byte 67,15,182,44,41 // movzbl (%r9,%r13,1),%ebp
10901 .byte 196,227,121,32,197,4 // vpinsrb $0x4,%ebp,%xmm0,%xmm0
10902 .byte 65,15,182,44,25 // movzbl (%r9,%rbx,1),%ebp
10903 .byte 196,227,121,32,197,5 // vpinsrb $0x5,%ebp,%xmm0,%xmm0
10904 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
10905 .byte 196,227,121,32,197,6 // vpinsrb $0x6,%ebp,%xmm0,%xmm0
10906 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
10907 .byte 196,227,121,32,197,7 // vpinsrb $0x7,%ebp,%xmm0,%xmm0
10908 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040010909 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040010910 .byte 196,98,125,24,13,221,40,0,0 // vbroadcastss 0x28dd(%rip),%ymm9 # 49c0 <_sk_callback_hsw+0x273>
Mike Kleinfe560a82017-05-01 12:56:35 -040010911 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
Mike Klein40de6da2017-04-07 13:09:29 -040010912 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
10913 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
10914 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
10915 .byte 65,137,233 // mov %ebp,%r9d
10916 .byte 72,193,237,32 // shr $0x20,%rbp
10917 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
10918 .byte 65,137,218 // mov %ebx,%r10d
10919 .byte 72,193,235,32 // shr $0x20,%rbx
10920 .byte 196,227,125,57,201,1 // vextracti128 $0x1,%ymm1,%xmm1
10921 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
10922 .byte 69,137,222 // mov %r11d,%r14d
10923 .byte 73,193,235,32 // shr $0x20,%r11
10924 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
10925 .byte 69,137,252 // mov %r15d,%r12d
10926 .byte 73,193,239,32 // shr $0x20,%r15
10927 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
10928 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
10929 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
10930 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
10931 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
10932 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
10933 .byte 67,15,182,44,32 // movzbl (%r8,%r12,1),%ebp
10934 .byte 196,227,113,32,205,4 // vpinsrb $0x4,%ebp,%xmm1,%xmm1
10935 .byte 67,15,182,44,56 // movzbl (%r8,%r15,1),%ebp
10936 .byte 196,227,113,32,205,5 // vpinsrb $0x5,%ebp,%xmm1,%xmm1
10937 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
10938 .byte 196,227,113,32,205,6 // vpinsrb $0x6,%ebp,%xmm1,%xmm1
10939 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
10940 .byte 196,227,113,32,205,7 // vpinsrb $0x7,%ebp,%xmm1,%xmm1
10941 .byte 196,226,125,49,201 // vpmovzxbd %xmm1,%ymm1
10942 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040010943 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -040010944 .byte 72,139,64,16 // mov 0x10(%rax),%rax
10945 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
10946 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
10947 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
10948 .byte 65,137,232 // mov %ebp,%r8d
10949 .byte 72,193,237,32 // shr $0x20,%rbp
10950 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
10951 .byte 65,137,217 // mov %ebx,%r9d
10952 .byte 72,193,235,32 // shr $0x20,%rbx
10953 .byte 196,227,125,57,210,1 // vextracti128 $0x1,%ymm2,%xmm2
10954 .byte 196,195,249,22,210,1 // vpextrq $0x1,%xmm2,%r10
10955 .byte 69,137,211 // mov %r10d,%r11d
10956 .byte 73,193,234,32 // shr $0x20,%r10
10957 .byte 196,193,249,126,214 // vmovq %xmm2,%r14
10958 .byte 69,137,247 // mov %r14d,%r15d
10959 .byte 73,193,238,32 // shr $0x20,%r14
10960 .byte 196,163,121,32,20,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm2
10961 .byte 196,227,105,32,20,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm2,%xmm2
10962 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
10963 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
10964 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
10965 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
10966 .byte 66,15,182,44,56 // movzbl (%rax,%r15,1),%ebp
10967 .byte 196,227,105,32,213,4 // vpinsrb $0x4,%ebp,%xmm2,%xmm2
10968 .byte 66,15,182,44,48 // movzbl (%rax,%r14,1),%ebp
10969 .byte 196,227,105,32,213,5 // vpinsrb $0x5,%ebp,%xmm2,%xmm2
10970 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
10971 .byte 196,227,105,32,213,6 // vpinsrb $0x6,%ebp,%xmm2,%xmm2
10972 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
10973 .byte 196,227,105,32,208,7 // vpinsrb $0x7,%eax,%xmm2,%xmm2
10974 .byte 196,226,125,49,210 // vpmovzxbd %xmm2,%ymm2
10975 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040010976 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -040010977 .byte 72,173 // lods %ds:(%rsi),%rax
10978 .byte 91 // pop %rbx
10979 .byte 65,92 // pop %r12
10980 .byte 65,93 // pop %r13
10981 .byte 65,94 // pop %r14
10982 .byte 65,95 // pop %r15
10983 .byte 93 // pop %rbp
10984 .byte 255,224 // jmpq *%rax
10985
Mike Kleinc7d9c0b2017-04-17 14:43:59 -040010986HIDDEN _sk_table_r_hsw
10987.globl _sk_table_r_hsw
10988FUNCTION(_sk_table_r_hsw)
10989_sk_table_r_hsw:
10990 .byte 72,173 // lods %ds:(%rsi),%rax
10991 .byte 76,139,0 // mov (%rax),%r8
10992 .byte 139,64,8 // mov 0x8(%rax),%eax
10993 .byte 255,200 // dec %eax
10994 .byte 197,121,110,192 // vmovd %eax,%xmm8
10995 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
10996 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
10997 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
10998 .byte 197,125,91,192 // vcvtps2dq %ymm0,%ymm8
10999 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
11000 .byte 196,130,53,146,4,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm0
11001 .byte 72,173 // lods %ds:(%rsi),%rax
11002 .byte 255,224 // jmpq *%rax
11003
11004HIDDEN _sk_table_g_hsw
11005.globl _sk_table_g_hsw
11006FUNCTION(_sk_table_g_hsw)
11007_sk_table_g_hsw:
11008 .byte 72,173 // lods %ds:(%rsi),%rax
11009 .byte 76,139,0 // mov (%rax),%r8
11010 .byte 139,64,8 // mov 0x8(%rax),%eax
11011 .byte 255,200 // dec %eax
11012 .byte 197,121,110,192 // vmovd %eax,%xmm8
11013 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11014 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
11015 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
11016 .byte 197,125,91,193 // vcvtps2dq %ymm1,%ymm8
11017 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
11018 .byte 196,130,53,146,12,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm1
11019 .byte 72,173 // lods %ds:(%rsi),%rax
11020 .byte 255,224 // jmpq *%rax
11021
11022HIDDEN _sk_table_b_hsw
11023.globl _sk_table_b_hsw
11024FUNCTION(_sk_table_b_hsw)
11025_sk_table_b_hsw:
11026 .byte 72,173 // lods %ds:(%rsi),%rax
11027 .byte 76,139,0 // mov (%rax),%r8
11028 .byte 139,64,8 // mov 0x8(%rax),%eax
11029 .byte 255,200 // dec %eax
11030 .byte 197,121,110,192 // vmovd %eax,%xmm8
11031 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11032 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
11033 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
11034 .byte 197,125,91,194 // vcvtps2dq %ymm2,%ymm8
11035 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
11036 .byte 196,130,53,146,20,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm2
11037 .byte 72,173 // lods %ds:(%rsi),%rax
11038 .byte 255,224 // jmpq *%rax
11039
11040HIDDEN _sk_table_a_hsw
11041.globl _sk_table_a_hsw
11042FUNCTION(_sk_table_a_hsw)
11043_sk_table_a_hsw:
11044 .byte 72,173 // lods %ds:(%rsi),%rax
11045 .byte 76,139,0 // mov (%rax),%r8
11046 .byte 139,64,8 // mov 0x8(%rax),%eax
11047 .byte 255,200 // dec %eax
11048 .byte 197,121,110,192 // vmovd %eax,%xmm8
11049 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11050 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
11051 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
11052 .byte 197,125,91,195 // vcvtps2dq %ymm3,%ymm8
11053 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
11054 .byte 196,130,53,146,28,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm3
11055 .byte 72,173 // lods %ds:(%rsi),%rax
11056 .byte 255,224 // jmpq *%rax
11057
Mike Klein44375172017-04-17 19:32:05 -040011058HIDDEN _sk_parametric_r_hsw
11059.globl _sk_parametric_r_hsw
11060FUNCTION(_sk_parametric_r_hsw)
11061_sk_parametric_r_hsw:
11062 .byte 72,173 // lods %ds:(%rsi),%rax
11063 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
11064 .byte 196,65,124,194,192,2 // vcmpleps %ymm8,%ymm0,%ymm8
11065 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
11066 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
11067 .byte 196,66,125,168,202 // vfmadd213ps %ymm10,%ymm0,%ymm9
11068 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
11069 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
11070 .byte 196,66,125,168,211 // vfmadd213ps %ymm11,%ymm0,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040011071 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
Mike Klein44375172017-04-17 19:32:05 -040011072 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011073 .byte 196,98,125,24,37,144,38,0,0 // vbroadcastss 0x2690(%rip),%ymm12 # 49c4 <_sk_callback_hsw+0x277>
11074 .byte 196,98,125,24,45,139,38,0,0 // vbroadcastss 0x268b(%rip),%ymm13 # 49c8 <_sk_callback_hsw+0x27b>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011075 .byte 196,65,44,84,213 // vandps %ymm13,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011076 .byte 196,98,125,24,45,129,38,0,0 // vbroadcastss 0x2681(%rip),%ymm13 # 49cc <_sk_callback_hsw+0x27f>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011077 .byte 196,65,44,86,213 // vorps %ymm13,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011078 .byte 196,98,125,24,45,119,38,0,0 // vbroadcastss 0x2677(%rip),%ymm13 # 49d0 <_sk_callback_hsw+0x283>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011079 .byte 196,66,37,184,236 // vfmadd231ps %ymm12,%ymm11,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040011080 .byte 196,98,125,24,29,109,38,0,0 // vbroadcastss 0x266d(%rip),%ymm11 # 49d4 <_sk_callback_hsw+0x287>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011081 .byte 196,66,45,172,221 // vfnmadd213ps %ymm13,%ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011082 .byte 196,98,125,24,37,99,38,0,0 // vbroadcastss 0x2663(%rip),%ymm12 # 49d8 <_sk_callback_hsw+0x28b>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011083 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011084 .byte 196,98,125,24,37,89,38,0,0 // vbroadcastss 0x2659(%rip),%ymm12 # 49dc <_sk_callback_hsw+0x28f>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011085 .byte 196,65,28,94,210 // vdivps %ymm10,%ymm12,%ymm10
Mike Klein44375172017-04-17 19:32:05 -040011086 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040011087 .byte 196,193,124,89,194 // vmulps %ymm10,%ymm0,%ymm0
11088 .byte 196,99,125,8,208,1 // vroundps $0x1,%ymm0,%ymm10
11089 .byte 196,65,124,92,210 // vsubps %ymm10,%ymm0,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011090 .byte 196,98,125,24,29,58,38,0,0 // vbroadcastss 0x263a(%rip),%ymm11 # 49e0 <_sk_callback_hsw+0x293>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011091 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011092 .byte 196,98,125,24,29,48,38,0,0 // vbroadcastss 0x2630(%rip),%ymm11 # 49e4 <_sk_callback_hsw+0x297>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011093 .byte 196,98,45,172,216 // vfnmadd213ps %ymm0,%ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011094 .byte 196,226,125,24,5,38,38,0,0 // vbroadcastss 0x2626(%rip),%ymm0 # 49e8 <_sk_callback_hsw+0x29b>
Mike Klein44375172017-04-17 19:32:05 -040011095 .byte 196,193,124,92,194 // vsubps %ymm10,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011096 .byte 196,98,125,24,21,28,38,0,0 // vbroadcastss 0x261c(%rip),%ymm10 # 49ec <_sk_callback_hsw+0x29f>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011097 .byte 197,172,94,192 // vdivps %ymm0,%ymm10,%ymm0
11098 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011099 .byte 196,98,125,24,21,15,38,0,0 // vbroadcastss 0x260f(%rip),%ymm10 # 49f0 <_sk_callback_hsw+0x2a3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011100 .byte 196,193,124,89,194 // vmulps %ymm10,%ymm0,%ymm0
Mike Klein44375172017-04-17 19:32:05 -040011101 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
11102 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
11103 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
11104 .byte 196,195,125,74,193,128 // vblendvps %ymm8,%ymm9,%ymm0,%ymm0
11105 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040011106 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011107 .byte 196,98,125,24,5,230,37,0,0 // vbroadcastss 0x25e6(%rip),%ymm8 # 49f4 <_sk_callback_hsw+0x2a7>
Mike Kleinfe560a82017-05-01 12:56:35 -040011108 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
Mike Klein44375172017-04-17 19:32:05 -040011109 .byte 72,173 // lods %ds:(%rsi),%rax
11110 .byte 255,224 // jmpq *%rax
11111
11112HIDDEN _sk_parametric_g_hsw
11113.globl _sk_parametric_g_hsw
11114FUNCTION(_sk_parametric_g_hsw)
11115_sk_parametric_g_hsw:
11116 .byte 72,173 // lods %ds:(%rsi),%rax
11117 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
11118 .byte 196,65,116,194,192,2 // vcmpleps %ymm8,%ymm1,%ymm8
11119 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
11120 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
11121 .byte 196,66,117,168,202 // vfmadd213ps %ymm10,%ymm1,%ymm9
11122 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
11123 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
11124 .byte 196,66,117,168,211 // vfmadd213ps %ymm11,%ymm1,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040011125 .byte 196,226,125,24,8 // vbroadcastss (%rax),%ymm1
Mike Klein44375172017-04-17 19:32:05 -040011126 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011127 .byte 196,98,125,24,37,158,37,0,0 // vbroadcastss 0x259e(%rip),%ymm12 # 49f8 <_sk_callback_hsw+0x2ab>
11128 .byte 196,98,125,24,45,153,37,0,0 // vbroadcastss 0x2599(%rip),%ymm13 # 49fc <_sk_callback_hsw+0x2af>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011129 .byte 196,65,44,84,213 // vandps %ymm13,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011130 .byte 196,98,125,24,45,143,37,0,0 // vbroadcastss 0x258f(%rip),%ymm13 # 4a00 <_sk_callback_hsw+0x2b3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011131 .byte 196,65,44,86,213 // vorps %ymm13,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011132 .byte 196,98,125,24,45,133,37,0,0 // vbroadcastss 0x2585(%rip),%ymm13 # 4a04 <_sk_callback_hsw+0x2b7>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011133 .byte 196,66,37,184,236 // vfmadd231ps %ymm12,%ymm11,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040011134 .byte 196,98,125,24,29,123,37,0,0 // vbroadcastss 0x257b(%rip),%ymm11 # 4a08 <_sk_callback_hsw+0x2bb>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011135 .byte 196,66,45,172,221 // vfnmadd213ps %ymm13,%ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011136 .byte 196,98,125,24,37,113,37,0,0 // vbroadcastss 0x2571(%rip),%ymm12 # 4a0c <_sk_callback_hsw+0x2bf>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011137 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011138 .byte 196,98,125,24,37,103,37,0,0 // vbroadcastss 0x2567(%rip),%ymm12 # 4a10 <_sk_callback_hsw+0x2c3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011139 .byte 196,65,28,94,210 // vdivps %ymm10,%ymm12,%ymm10
Mike Klein44375172017-04-17 19:32:05 -040011140 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040011141 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
11142 .byte 196,99,125,8,209,1 // vroundps $0x1,%ymm1,%ymm10
11143 .byte 196,65,116,92,210 // vsubps %ymm10,%ymm1,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011144 .byte 196,98,125,24,29,72,37,0,0 // vbroadcastss 0x2548(%rip),%ymm11 # 4a14 <_sk_callback_hsw+0x2c7>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011145 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011146 .byte 196,98,125,24,29,62,37,0,0 // vbroadcastss 0x253e(%rip),%ymm11 # 4a18 <_sk_callback_hsw+0x2cb>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011147 .byte 196,98,45,172,217 // vfnmadd213ps %ymm1,%ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011148 .byte 196,226,125,24,13,52,37,0,0 // vbroadcastss 0x2534(%rip),%ymm1 # 4a1c <_sk_callback_hsw+0x2cf>
Mike Klein44375172017-04-17 19:32:05 -040011149 .byte 196,193,116,92,202 // vsubps %ymm10,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011150 .byte 196,98,125,24,21,42,37,0,0 // vbroadcastss 0x252a(%rip),%ymm10 # 4a20 <_sk_callback_hsw+0x2d3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011151 .byte 197,172,94,201 // vdivps %ymm1,%ymm10,%ymm1
11152 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011153 .byte 196,98,125,24,21,29,37,0,0 // vbroadcastss 0x251d(%rip),%ymm10 # 4a24 <_sk_callback_hsw+0x2d7>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011154 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
Mike Klein44375172017-04-17 19:32:05 -040011155 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
11156 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
11157 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
11158 .byte 196,195,117,74,201,128 // vblendvps %ymm8,%ymm9,%ymm1,%ymm1
11159 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040011160 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011161 .byte 196,98,125,24,5,244,36,0,0 // vbroadcastss 0x24f4(%rip),%ymm8 # 4a28 <_sk_callback_hsw+0x2db>
Mike Kleinfe560a82017-05-01 12:56:35 -040011162 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
Mike Klein44375172017-04-17 19:32:05 -040011163 .byte 72,173 // lods %ds:(%rsi),%rax
11164 .byte 255,224 // jmpq *%rax
11165
11166HIDDEN _sk_parametric_b_hsw
11167.globl _sk_parametric_b_hsw
11168FUNCTION(_sk_parametric_b_hsw)
11169_sk_parametric_b_hsw:
11170 .byte 72,173 // lods %ds:(%rsi),%rax
11171 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
11172 .byte 196,65,108,194,192,2 // vcmpleps %ymm8,%ymm2,%ymm8
11173 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
11174 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
11175 .byte 196,66,109,168,202 // vfmadd213ps %ymm10,%ymm2,%ymm9
11176 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
11177 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
11178 .byte 196,66,109,168,211 // vfmadd213ps %ymm11,%ymm2,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040011179 .byte 196,226,125,24,16 // vbroadcastss (%rax),%ymm2
Mike Klein44375172017-04-17 19:32:05 -040011180 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011181 .byte 196,98,125,24,37,172,36,0,0 // vbroadcastss 0x24ac(%rip),%ymm12 # 4a2c <_sk_callback_hsw+0x2df>
11182 .byte 196,98,125,24,45,167,36,0,0 // vbroadcastss 0x24a7(%rip),%ymm13 # 4a30 <_sk_callback_hsw+0x2e3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011183 .byte 196,65,44,84,213 // vandps %ymm13,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011184 .byte 196,98,125,24,45,157,36,0,0 // vbroadcastss 0x249d(%rip),%ymm13 # 4a34 <_sk_callback_hsw+0x2e7>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011185 .byte 196,65,44,86,213 // vorps %ymm13,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011186 .byte 196,98,125,24,45,147,36,0,0 // vbroadcastss 0x2493(%rip),%ymm13 # 4a38 <_sk_callback_hsw+0x2eb>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011187 .byte 196,66,37,184,236 // vfmadd231ps %ymm12,%ymm11,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040011188 .byte 196,98,125,24,29,137,36,0,0 // vbroadcastss 0x2489(%rip),%ymm11 # 4a3c <_sk_callback_hsw+0x2ef>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011189 .byte 196,66,45,172,221 // vfnmadd213ps %ymm13,%ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011190 .byte 196,98,125,24,37,127,36,0,0 // vbroadcastss 0x247f(%rip),%ymm12 # 4a40 <_sk_callback_hsw+0x2f3>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011191 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011192 .byte 196,98,125,24,37,117,36,0,0 // vbroadcastss 0x2475(%rip),%ymm12 # 4a44 <_sk_callback_hsw+0x2f7>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011193 .byte 196,65,28,94,210 // vdivps %ymm10,%ymm12,%ymm10
Mike Klein44375172017-04-17 19:32:05 -040011194 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040011195 .byte 196,193,108,89,210 // vmulps %ymm10,%ymm2,%ymm2
11196 .byte 196,99,125,8,210,1 // vroundps $0x1,%ymm2,%ymm10
11197 .byte 196,65,108,92,210 // vsubps %ymm10,%ymm2,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011198 .byte 196,98,125,24,29,86,36,0,0 // vbroadcastss 0x2456(%rip),%ymm11 # 4a48 <_sk_callback_hsw+0x2fb>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011199 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011200 .byte 196,98,125,24,29,76,36,0,0 // vbroadcastss 0x244c(%rip),%ymm11 # 4a4c <_sk_callback_hsw+0x2ff>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011201 .byte 196,98,45,172,218 // vfnmadd213ps %ymm2,%ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011202 .byte 196,226,125,24,21,66,36,0,0 // vbroadcastss 0x2442(%rip),%ymm2 # 4a50 <_sk_callback_hsw+0x303>
Mike Klein44375172017-04-17 19:32:05 -040011203 .byte 196,193,108,92,210 // vsubps %ymm10,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011204 .byte 196,98,125,24,21,56,36,0,0 // vbroadcastss 0x2438(%rip),%ymm10 # 4a54 <_sk_callback_hsw+0x307>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011205 .byte 197,172,94,210 // vdivps %ymm2,%ymm10,%ymm2
11206 .byte 197,164,88,210 // vaddps %ymm2,%ymm11,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011207 .byte 196,98,125,24,21,43,36,0,0 // vbroadcastss 0x242b(%rip),%ymm10 # 4a58 <_sk_callback_hsw+0x30b>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011208 .byte 196,193,108,89,210 // vmulps %ymm10,%ymm2,%ymm2
Mike Klein44375172017-04-17 19:32:05 -040011209 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
11210 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
11211 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
11212 .byte 196,195,109,74,209,128 // vblendvps %ymm8,%ymm9,%ymm2,%ymm2
11213 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040011214 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011215 .byte 196,98,125,24,5,2,36,0,0 // vbroadcastss 0x2402(%rip),%ymm8 # 4a5c <_sk_callback_hsw+0x30f>
Mike Kleinfe560a82017-05-01 12:56:35 -040011216 .byte 196,193,108,93,208 // vminps %ymm8,%ymm2,%ymm2
Mike Klein44375172017-04-17 19:32:05 -040011217 .byte 72,173 // lods %ds:(%rsi),%rax
11218 .byte 255,224 // jmpq *%rax
11219
11220HIDDEN _sk_parametric_a_hsw
11221.globl _sk_parametric_a_hsw
11222FUNCTION(_sk_parametric_a_hsw)
11223_sk_parametric_a_hsw:
11224 .byte 72,173 // lods %ds:(%rsi),%rax
11225 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
11226 .byte 196,65,100,194,192,2 // vcmpleps %ymm8,%ymm3,%ymm8
11227 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
11228 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
11229 .byte 196,66,101,168,202 // vfmadd213ps %ymm10,%ymm3,%ymm9
11230 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
11231 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
11232 .byte 196,66,101,168,211 // vfmadd213ps %ymm11,%ymm3,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040011233 .byte 196,226,125,24,24 // vbroadcastss (%rax),%ymm3
Mike Klein44375172017-04-17 19:32:05 -040011234 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011235 .byte 196,98,125,24,37,186,35,0,0 // vbroadcastss 0x23ba(%rip),%ymm12 # 4a60 <_sk_callback_hsw+0x313>
11236 .byte 196,98,125,24,45,181,35,0,0 // vbroadcastss 0x23b5(%rip),%ymm13 # 4a64 <_sk_callback_hsw+0x317>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011237 .byte 196,65,44,84,213 // vandps %ymm13,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011238 .byte 196,98,125,24,45,171,35,0,0 // vbroadcastss 0x23ab(%rip),%ymm13 # 4a68 <_sk_callback_hsw+0x31b>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011239 .byte 196,65,44,86,213 // vorps %ymm13,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011240 .byte 196,98,125,24,45,161,35,0,0 // vbroadcastss 0x23a1(%rip),%ymm13 # 4a6c <_sk_callback_hsw+0x31f>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011241 .byte 196,66,37,184,236 // vfmadd231ps %ymm12,%ymm11,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040011242 .byte 196,98,125,24,29,151,35,0,0 // vbroadcastss 0x2397(%rip),%ymm11 # 4a70 <_sk_callback_hsw+0x323>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011243 .byte 196,66,45,172,221 // vfnmadd213ps %ymm13,%ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011244 .byte 196,98,125,24,37,141,35,0,0 // vbroadcastss 0x238d(%rip),%ymm12 # 4a74 <_sk_callback_hsw+0x327>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011245 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011246 .byte 196,98,125,24,37,131,35,0,0 // vbroadcastss 0x2383(%rip),%ymm12 # 4a78 <_sk_callback_hsw+0x32b>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011247 .byte 196,65,28,94,210 // vdivps %ymm10,%ymm12,%ymm10
Mike Klein44375172017-04-17 19:32:05 -040011248 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040011249 .byte 196,193,100,89,218 // vmulps %ymm10,%ymm3,%ymm3
11250 .byte 196,99,125,8,211,1 // vroundps $0x1,%ymm3,%ymm10
11251 .byte 196,65,100,92,210 // vsubps %ymm10,%ymm3,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011252 .byte 196,98,125,24,29,100,35,0,0 // vbroadcastss 0x2364(%rip),%ymm11 # 4a7c <_sk_callback_hsw+0x32f>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011253 .byte 196,193,100,88,219 // vaddps %ymm11,%ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040011254 .byte 196,98,125,24,29,90,35,0,0 // vbroadcastss 0x235a(%rip),%ymm11 # 4a80 <_sk_callback_hsw+0x333>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011255 .byte 196,98,45,172,219 // vfnmadd213ps %ymm3,%ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040011256 .byte 196,226,125,24,29,80,35,0,0 // vbroadcastss 0x2350(%rip),%ymm3 # 4a84 <_sk_callback_hsw+0x337>
Mike Klein44375172017-04-17 19:32:05 -040011257 .byte 196,193,100,92,218 // vsubps %ymm10,%ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040011258 .byte 196,98,125,24,21,70,35,0,0 // vbroadcastss 0x2346(%rip),%ymm10 # 4a88 <_sk_callback_hsw+0x33b>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011259 .byte 197,172,94,219 // vdivps %ymm3,%ymm10,%ymm3
11260 .byte 197,164,88,219 // vaddps %ymm3,%ymm11,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040011261 .byte 196,98,125,24,21,57,35,0,0 // vbroadcastss 0x2339(%rip),%ymm10 # 4a8c <_sk_callback_hsw+0x33f>
Mike Kleinb4bbc642017-04-27 08:59:55 -040011262 .byte 196,193,100,89,218 // vmulps %ymm10,%ymm3,%ymm3
Mike Klein44375172017-04-17 19:32:05 -040011263 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
11264 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
11265 .byte 196,193,100,88,218 // vaddps %ymm10,%ymm3,%ymm3
11266 .byte 196,195,101,74,217,128 // vblendvps %ymm8,%ymm9,%ymm3,%ymm3
11267 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040011268 .byte 196,193,100,95,216 // vmaxps %ymm8,%ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040011269 .byte 196,98,125,24,5,16,35,0,0 // vbroadcastss 0x2310(%rip),%ymm8 # 4a90 <_sk_callback_hsw+0x343>
Mike Kleinfe560a82017-05-01 12:56:35 -040011270 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
Mike Klein44375172017-04-17 19:32:05 -040011271 .byte 72,173 // lods %ds:(%rsi),%rax
11272 .byte 255,224 // jmpq *%rax
11273
Mike Klein4e3e9f82017-04-20 11:04:29 -040011274HIDDEN _sk_lab_to_xyz_hsw
11275.globl _sk_lab_to_xyz_hsw
11276FUNCTION(_sk_lab_to_xyz_hsw)
11277_sk_lab_to_xyz_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -040011278 .byte 196,98,125,24,5,2,35,0,0 // vbroadcastss 0x2302(%rip),%ymm8 # 4a94 <_sk_callback_hsw+0x347>
11279 .byte 196,98,125,24,13,253,34,0,0 // vbroadcastss 0x22fd(%rip),%ymm9 # 4a98 <_sk_callback_hsw+0x34b>
11280 .byte 196,98,125,24,21,248,34,0,0 // vbroadcastss 0x22f8(%rip),%ymm10 # 4a9c <_sk_callback_hsw+0x34f>
Mike Kleinfe560a82017-05-01 12:56:35 -040011281 .byte 196,194,53,168,202 // vfmadd213ps %ymm10,%ymm9,%ymm1
11282 .byte 196,194,53,168,210 // vfmadd213ps %ymm10,%ymm9,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011283 .byte 196,98,125,24,13,233,34,0,0 // vbroadcastss 0x22e9(%rip),%ymm9 # 4aa0 <_sk_callback_hsw+0x353>
Mike Kleinfe560a82017-05-01 12:56:35 -040011284 .byte 196,66,125,184,200 // vfmadd231ps %ymm8,%ymm0,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040011285 .byte 196,226,125,24,5,223,34,0,0 // vbroadcastss 0x22df(%rip),%ymm0 # 4aa4 <_sk_callback_hsw+0x357>
Mike Kleinfe560a82017-05-01 12:56:35 -040011286 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011287 .byte 196,98,125,24,5,214,34,0,0 // vbroadcastss 0x22d6(%rip),%ymm8 # 4aa8 <_sk_callback_hsw+0x35b>
Mike Kleinfe560a82017-05-01 12:56:35 -040011288 .byte 196,98,117,168,192 // vfmadd213ps %ymm0,%ymm1,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040011289 .byte 196,98,125,24,13,204,34,0,0 // vbroadcastss 0x22cc(%rip),%ymm9 # 4aac <_sk_callback_hsw+0x35f>
Mike Kleinfe560a82017-05-01 12:56:35 -040011290 .byte 196,98,109,172,200 // vfnmadd213ps %ymm0,%ymm2,%ymm9
Mike Klein4e3e9f82017-04-20 11:04:29 -040011291 .byte 196,193,60,89,200 // vmulps %ymm8,%ymm8,%ymm1
11292 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011293 .byte 196,226,125,24,21,185,34,0,0 // vbroadcastss 0x22b9(%rip),%ymm2 # 4ab0 <_sk_callback_hsw+0x363>
Mike Klein4e3e9f82017-04-20 11:04:29 -040011294 .byte 197,108,194,209,1 // vcmpltps %ymm1,%ymm2,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040011295 .byte 196,98,125,24,29,175,34,0,0 // vbroadcastss 0x22af(%rip),%ymm11 # 4ab4 <_sk_callback_hsw+0x367>
Mike Kleinfe560a82017-05-01 12:56:35 -040011296 .byte 196,65,60,88,195 // vaddps %ymm11,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040011297 .byte 196,98,125,24,37,165,34,0,0 // vbroadcastss 0x22a5(%rip),%ymm12 # 4ab8 <_sk_callback_hsw+0x36b>
Mike Kleinfe560a82017-05-01 12:56:35 -040011298 .byte 196,65,60,89,196 // vmulps %ymm12,%ymm8,%ymm8
11299 .byte 196,99,61,74,193,160 // vblendvps %ymm10,%ymm1,%ymm8,%ymm8
11300 .byte 197,252,89,200 // vmulps %ymm0,%ymm0,%ymm1
11301 .byte 197,252,89,201 // vmulps %ymm1,%ymm0,%ymm1
11302 .byte 197,108,194,209,1 // vcmpltps %ymm1,%ymm2,%ymm10
11303 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
11304 .byte 196,193,124,89,196 // vmulps %ymm12,%ymm0,%ymm0
11305 .byte 196,227,125,74,201,160 // vblendvps %ymm10,%ymm1,%ymm0,%ymm1
11306 .byte 196,193,52,89,193 // vmulps %ymm9,%ymm9,%ymm0
11307 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
11308 .byte 197,236,194,208,1 // vcmpltps %ymm0,%ymm2,%ymm2
11309 .byte 196,65,52,88,203 // vaddps %ymm11,%ymm9,%ymm9
11310 .byte 196,65,52,89,204 // vmulps %ymm12,%ymm9,%ymm9
11311 .byte 196,227,53,74,208,32 // vblendvps %ymm2,%ymm0,%ymm9,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011312 .byte 196,226,125,24,5,90,34,0,0 // vbroadcastss 0x225a(%rip),%ymm0 # 4abc <_sk_callback_hsw+0x36f>
Mike Kleinfe560a82017-05-01 12:56:35 -040011313 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011314 .byte 196,98,125,24,5,81,34,0,0 // vbroadcastss 0x2251(%rip),%ymm8 # 4ac0 <_sk_callback_hsw+0x373>
Mike Kleinfe560a82017-05-01 12:56:35 -040011315 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein4e3e9f82017-04-20 11:04:29 -040011316 .byte 72,173 // lods %ds:(%rsi),%rax
11317 .byte 255,224 // jmpq *%rax
11318
Mike Klein7c4af542017-03-29 18:21:14 -040011319HIDDEN _sk_load_a8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011320.globl _sk_load_a8_hsw
Mike Klein86714282017-04-13 17:37:38 -040011321FUNCTION(_sk_load_a8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011322_sk_load_a8_hsw:
11323 .byte 73,137,200 // mov %rcx,%r8
11324 .byte 72,173 // lods %ds:(%rsi),%rax
11325 .byte 72,139,0 // mov (%rax),%rax
11326 .byte 72,1,248 // add %rdi,%rax
11327 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040011328 .byte 117,45 // jne 28b5 <_sk_load_a8_hsw+0x3d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011329 .byte 197,250,126,0 // vmovq (%rax),%xmm0
11330 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
11331 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011332 .byte 196,226,125,24,13,38,34,0,0 // vbroadcastss 0x2226(%rip),%ymm1 # 4ac4 <_sk_callback_hsw+0x377>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011333 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
11334 .byte 72,173 // lods %ds:(%rsi),%rax
11335 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
11336 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
11337 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
11338 .byte 76,137,193 // mov %r8,%rcx
11339 .byte 255,224 // jmpq *%rax
11340 .byte 49,201 // xor %ecx,%ecx
11341 .byte 77,137,194 // mov %r8,%r10
11342 .byte 69,49,201 // xor %r9d,%r9d
11343 .byte 68,15,182,24 // movzbl (%rax),%r11d
11344 .byte 72,255,192 // inc %rax
11345 .byte 73,211,227 // shl %cl,%r11
11346 .byte 77,9,217 // or %r11,%r9
11347 .byte 72,131,193,8 // add $0x8,%rcx
11348 .byte 73,255,202 // dec %r10
Mike Klein5d7f2b52017-05-20 13:21:59 -040011349 .byte 117,234 // jne 28bd <_sk_load_a8_hsw+0x45>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011350 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Mike Klein5d7f2b52017-05-20 13:21:59 -040011351 .byte 235,178 // jmp 288c <_sk_load_a8_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011352
Mike Klein21bd3e42017-04-06 16:32:29 -040011353HIDDEN _sk_gather_a8_hsw
11354.globl _sk_gather_a8_hsw
Mike Klein86714282017-04-13 17:37:38 -040011355FUNCTION(_sk_gather_a8_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -040011356_sk_gather_a8_hsw:
11357 .byte 65,87 // push %r15
11358 .byte 65,86 // push %r14
11359 .byte 65,84 // push %r12
11360 .byte 83 // push %rbx
11361 .byte 72,173 // lods %ds:(%rsi),%rax
11362 .byte 76,139,0 // mov (%rax),%r8
11363 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
11364 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
11365 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
11366 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
11367 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
11368 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
11369 .byte 65,137,193 // mov %eax,%r9d
11370 .byte 72,193,232,32 // shr $0x20,%rax
11371 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
11372 .byte 69,137,211 // mov %r10d,%r11d
11373 .byte 73,193,234,32 // shr $0x20,%r10
11374 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
11375 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
11376 .byte 65,137,222 // mov %ebx,%r14d
11377 .byte 72,193,235,32 // shr $0x20,%rbx
11378 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
11379 .byte 69,137,252 // mov %r15d,%r12d
11380 .byte 73,193,239,32 // shr $0x20,%r15
11381 .byte 196,131,121,32,4,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm0
11382 .byte 196,131,121,32,4,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm0,%xmm0
11383 .byte 71,15,182,12,8 // movzbl (%r8,%r9,1),%r9d
11384 .byte 196,195,121,32,193,2 // vpinsrb $0x2,%r9d,%xmm0,%xmm0
11385 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
11386 .byte 196,227,121,32,192,3 // vpinsrb $0x3,%eax,%xmm0,%xmm0
11387 .byte 67,15,182,4,32 // movzbl (%r8,%r12,1),%eax
11388 .byte 196,227,121,32,192,4 // vpinsrb $0x4,%eax,%xmm0,%xmm0
11389 .byte 67,15,182,4,56 // movzbl (%r8,%r15,1),%eax
11390 .byte 196,227,121,32,192,5 // vpinsrb $0x5,%eax,%xmm0,%xmm0
11391 .byte 67,15,182,4,48 // movzbl (%r8,%r14,1),%eax
11392 .byte 196,227,121,32,192,6 // vpinsrb $0x6,%eax,%xmm0,%xmm0
11393 .byte 65,15,182,4,24 // movzbl (%r8,%rbx,1),%eax
11394 .byte 196,227,121,32,192,7 // vpinsrb $0x7,%eax,%xmm0,%xmm0
11395 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
11396 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011397 .byte 196,226,125,24,13,49,33,0,0 // vbroadcastss 0x2131(%rip),%ymm1 # 4ac8 <_sk_callback_hsw+0x37b>
Mike Klein21bd3e42017-04-06 16:32:29 -040011398 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
11399 .byte 72,173 // lods %ds:(%rsi),%rax
11400 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
11401 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
11402 .byte 197,237,239,210 // vpxor %ymm2,%ymm2,%ymm2
11403 .byte 91 // pop %rbx
11404 .byte 65,92 // pop %r12
11405 .byte 65,94 // pop %r14
11406 .byte 65,95 // pop %r15
11407 .byte 255,224 // jmpq *%rax
11408
Mike Klein7c4af542017-03-29 18:21:14 -040011409HIDDEN _sk_store_a8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011410.globl _sk_store_a8_hsw
Mike Klein86714282017-04-13 17:37:38 -040011411FUNCTION(_sk_store_a8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011412_sk_store_a8_hsw:
11413 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040011414 .byte 76,139,16 // mov (%rax),%r10
Mike Klein8ca33562017-05-23 08:07:43 -040011415 .byte 196,98,125,24,5,12,33,0,0 // vbroadcastss 0x210c(%rip),%ymm8 # 4acc <_sk_callback_hsw+0x37f>
Mike Kleinfe560a82017-05-01 12:56:35 -040011416 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040011417 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
11418 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
11419 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
11420 .byte 196,65,57,103,192 // vpackuswb %xmm8,%xmm8,%xmm8
11421 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040011422 .byte 117,10 // jne 29e9 <_sk_store_a8_hsw+0x37>
Mike Kleinfe560a82017-05-01 12:56:35 -040011423 .byte 196,65,123,17,4,58 // vmovsd %xmm8,(%r10,%rdi,1)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011424 .byte 72,173 // lods %ds:(%rsi),%rax
11425 .byte 255,224 // jmpq *%rax
11426 .byte 65,137,200 // mov %ecx,%r8d
11427 .byte 65,128,224,7 // and $0x7,%r8b
11428 .byte 65,254,200 // dec %r8b
11429 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Klein5d7f2b52017-05-20 13:21:59 -040011430 .byte 119,236 // ja 29e5 <_sk_store_a8_hsw+0x33>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011431 .byte 196,66,121,48,192 // vpmovzxbw %xmm8,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040011432 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Klein5d7f2b52017-05-20 13:21:59 -040011433 .byte 76,141,13,67,0,0,0 // lea 0x43(%rip),%r9 # 2a4c <_sk_store_a8_hsw+0x9a>
Mike Kleinfe560a82017-05-01 12:56:35 -040011434 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
11435 .byte 76,1,200 // add %r9,%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040011436 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040011437 .byte 196,67,121,20,68,58,6,12 // vpextrb $0xc,%xmm8,0x6(%r10,%rdi,1)
11438 .byte 196,67,121,20,68,58,5,10 // vpextrb $0xa,%xmm8,0x5(%r10,%rdi,1)
11439 .byte 196,67,121,20,68,58,4,8 // vpextrb $0x8,%xmm8,0x4(%r10,%rdi,1)
11440 .byte 196,67,121,20,68,58,3,6 // vpextrb $0x6,%xmm8,0x3(%r10,%rdi,1)
11441 .byte 196,67,121,20,68,58,2,4 // vpextrb $0x4,%xmm8,0x2(%r10,%rdi,1)
11442 .byte 196,67,121,20,68,58,1,2 // vpextrb $0x2,%xmm8,0x1(%r10,%rdi,1)
11443 .byte 196,67,121,20,4,58,0 // vpextrb $0x0,%xmm8,(%r10,%rdi,1)
Mike Klein5d7f2b52017-05-20 13:21:59 -040011444 .byte 235,154 // jmp 29e5 <_sk_store_a8_hsw+0x33>
Mike Klein0aa742f2017-04-27 13:36:57 -040011445 .byte 144 // nop
11446 .byte 246,255 // idiv %bh
Mike Kleina3735cd2017-04-17 13:19:05 -040011447 .byte 255 // (bad)
11448 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040011449 .byte 238 // out %al,(%dx)
Mike Kleina3735cd2017-04-17 13:19:05 -040011450 .byte 255 // (bad)
11451 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040011452 .byte 255,230 // jmpq *%rsi
Mike Kleind7e06ae2017-03-29 16:33:06 -040011453 .byte 255 // (bad)
11454 .byte 255 // (bad)
11455 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040011456 .byte 222,255 // fdivrp %st,%st(7)
Mike Kleina3735cd2017-04-17 13:19:05 -040011457 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040011458 .byte 255,214 // callq *%rsi
Mike Kleind7e06ae2017-03-29 16:33:06 -040011459 .byte 255 // (bad)
11460 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040011461 .byte 255,206 // dec %esi
Mike Kleind7e06ae2017-03-29 16:33:06 -040011462 .byte 255 // (bad)
11463 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040011464 .byte 255,198 // inc %esi
Mike Kleind7e06ae2017-03-29 16:33:06 -040011465 .byte 255 // (bad)
11466 .byte 255 // (bad)
11467 .byte 255 // .byte 0xff
11468
Mike Kleinf809fef2017-03-31 13:52:45 -040011469HIDDEN _sk_load_g8_hsw
11470.globl _sk_load_g8_hsw
Mike Klein86714282017-04-13 17:37:38 -040011471FUNCTION(_sk_load_g8_hsw)
Mike Kleinf809fef2017-03-31 13:52:45 -040011472_sk_load_g8_hsw:
11473 .byte 73,137,200 // mov %rcx,%r8
11474 .byte 72,173 // lods %ds:(%rsi),%rax
11475 .byte 72,139,0 // mov (%rax),%rax
11476 .byte 72,1,248 // add %rdi,%rax
11477 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040011478 .byte 117,50 // jne 2aaa <_sk_load_g8_hsw+0x42>
Mike Kleinf809fef2017-03-31 13:52:45 -040011479 .byte 197,250,126,0 // vmovq (%rax),%xmm0
11480 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
11481 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011482 .byte 196,226,125,24,13,66,32,0,0 // vbroadcastss 0x2042(%rip),%ymm1 # 4ad0 <_sk_callback_hsw+0x383>
Mike Kleinf809fef2017-03-31 13:52:45 -040011483 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinf809fef2017-03-31 13:52:45 -040011484 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040011485 .byte 196,226,125,24,29,55,32,0,0 // vbroadcastss 0x2037(%rip),%ymm3 # 4ad4 <_sk_callback_hsw+0x387>
Mike Kleinf809fef2017-03-31 13:52:45 -040011486 .byte 76,137,193 // mov %r8,%rcx
11487 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
11488 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
11489 .byte 255,224 // jmpq *%rax
11490 .byte 49,201 // xor %ecx,%ecx
11491 .byte 77,137,194 // mov %r8,%r10
11492 .byte 69,49,201 // xor %r9d,%r9d
11493 .byte 68,15,182,24 // movzbl (%rax),%r11d
11494 .byte 72,255,192 // inc %rax
11495 .byte 73,211,227 // shl %cl,%r11
11496 .byte 77,9,217 // or %r11,%r9
11497 .byte 72,131,193,8 // add $0x8,%rcx
11498 .byte 73,255,202 // dec %r10
Mike Klein5d7f2b52017-05-20 13:21:59 -040011499 .byte 117,234 // jne 2ab2 <_sk_load_g8_hsw+0x4a>
Mike Kleinf809fef2017-03-31 13:52:45 -040011500 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Mike Klein5d7f2b52017-05-20 13:21:59 -040011501 .byte 235,173 // jmp 2a7c <_sk_load_g8_hsw+0x14>
Mike Klein21bd3e42017-04-06 16:32:29 -040011502
11503HIDDEN _sk_gather_g8_hsw
11504.globl _sk_gather_g8_hsw
Mike Klein86714282017-04-13 17:37:38 -040011505FUNCTION(_sk_gather_g8_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -040011506_sk_gather_g8_hsw:
11507 .byte 65,87 // push %r15
11508 .byte 65,86 // push %r14
11509 .byte 65,84 // push %r12
11510 .byte 83 // push %rbx
11511 .byte 72,173 // lods %ds:(%rsi),%rax
11512 .byte 76,139,0 // mov (%rax),%r8
11513 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
11514 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
11515 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
11516 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
11517 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
11518 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
11519 .byte 65,137,193 // mov %eax,%r9d
11520 .byte 72,193,232,32 // shr $0x20,%rax
11521 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
11522 .byte 69,137,211 // mov %r10d,%r11d
11523 .byte 73,193,234,32 // shr $0x20,%r10
11524 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
11525 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
11526 .byte 65,137,222 // mov %ebx,%r14d
11527 .byte 72,193,235,32 // shr $0x20,%rbx
11528 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
11529 .byte 69,137,252 // mov %r15d,%r12d
11530 .byte 73,193,239,32 // shr $0x20,%r15
11531 .byte 196,131,121,32,4,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm0
11532 .byte 196,131,121,32,4,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm0,%xmm0
11533 .byte 71,15,182,12,8 // movzbl (%r8,%r9,1),%r9d
11534 .byte 196,195,121,32,193,2 // vpinsrb $0x2,%r9d,%xmm0,%xmm0
11535 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
11536 .byte 196,227,121,32,192,3 // vpinsrb $0x3,%eax,%xmm0,%xmm0
11537 .byte 67,15,182,4,32 // movzbl (%r8,%r12,1),%eax
11538 .byte 196,227,121,32,192,4 // vpinsrb $0x4,%eax,%xmm0,%xmm0
11539 .byte 67,15,182,4,56 // movzbl (%r8,%r15,1),%eax
11540 .byte 196,227,121,32,192,5 // vpinsrb $0x5,%eax,%xmm0,%xmm0
11541 .byte 67,15,182,4,48 // movzbl (%r8,%r14,1),%eax
11542 .byte 196,227,121,32,192,6 // vpinsrb $0x6,%eax,%xmm0,%xmm0
11543 .byte 65,15,182,4,24 // movzbl (%r8,%rbx,1),%eax
11544 .byte 196,227,121,32,192,7 // vpinsrb $0x7,%eax,%xmm0,%xmm0
11545 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
11546 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011547 .byte 196,226,125,24,13,76,31,0,0 // vbroadcastss 0x1f4c(%rip),%ymm1 # 4ad8 <_sk_callback_hsw+0x38b>
Mike Klein21bd3e42017-04-06 16:32:29 -040011548 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -040011549 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040011550 .byte 196,226,125,24,29,65,31,0,0 // vbroadcastss 0x1f41(%rip),%ymm3 # 4adc <_sk_callback_hsw+0x38f>
Mike Klein21bd3e42017-04-06 16:32:29 -040011551 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
11552 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
11553 .byte 91 // pop %rbx
11554 .byte 65,92 // pop %r12
11555 .byte 65,94 // pop %r14
11556 .byte 65,95 // pop %r15
11557 .byte 255,224 // jmpq *%rax
Mike Kleinf809fef2017-03-31 13:52:45 -040011558
Mike Klein7d3d8722017-04-06 17:53:18 -040011559HIDDEN _sk_gather_i8_hsw
11560.globl _sk_gather_i8_hsw
Mike Klein86714282017-04-13 17:37:38 -040011561FUNCTION(_sk_gather_i8_hsw)
Mike Klein7d3d8722017-04-06 17:53:18 -040011562_sk_gather_i8_hsw:
11563 .byte 72,173 // lods %ds:(%rsi),%rax
11564 .byte 73,137,192 // mov %rax,%r8
11565 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040011566 .byte 116,5 // je 2bbb <_sk_gather_i8_hsw+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -040011567 .byte 76,137,192 // mov %r8,%rax
Mike Klein5d7f2b52017-05-20 13:21:59 -040011568 .byte 235,2 // jmp 2bbd <_sk_gather_i8_hsw+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -040011569 .byte 72,173 // lods %ds:(%rsi),%rax
11570 .byte 65,87 // push %r15
11571 .byte 65,86 // push %r14
11572 .byte 65,85 // push %r13
11573 .byte 65,84 // push %r12
11574 .byte 83 // push %rbx
11575 .byte 76,139,8 // mov (%rax),%r9
11576 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
11577 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
11578 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
11579 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
11580 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
11581 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
11582 .byte 65,137,194 // mov %eax,%r10d
11583 .byte 72,193,232,32 // shr $0x20,%rax
11584 .byte 196,193,249,126,195 // vmovq %xmm0,%r11
11585 .byte 69,137,222 // mov %r11d,%r14d
11586 .byte 73,193,235,32 // shr $0x20,%r11
11587 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
11588 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
11589 .byte 65,137,223 // mov %ebx,%r15d
11590 .byte 72,193,235,32 // shr $0x20,%rbx
11591 .byte 196,193,249,126,196 // vmovq %xmm0,%r12
11592 .byte 69,137,229 // mov %r12d,%r13d
11593 .byte 73,193,236,32 // shr $0x20,%r12
11594 .byte 196,131,121,32,4,49,0 // vpinsrb $0x0,(%r9,%r14,1),%xmm0,%xmm0
11595 .byte 196,131,121,32,4,25,1 // vpinsrb $0x1,(%r9,%r11,1),%xmm0,%xmm0
11596 .byte 196,131,121,32,4,17,2 // vpinsrb $0x2,(%r9,%r10,1),%xmm0,%xmm0
11597 .byte 196,195,121,32,4,1,3 // vpinsrb $0x3,(%r9,%rax,1),%xmm0,%xmm0
11598 .byte 196,131,121,32,4,41,4 // vpinsrb $0x4,(%r9,%r13,1),%xmm0,%xmm0
11599 .byte 196,131,121,32,4,33,5 // vpinsrb $0x5,(%r9,%r12,1),%xmm0,%xmm0
11600 .byte 196,131,121,32,4,57,6 // vpinsrb $0x6,(%r9,%r15,1),%xmm0,%xmm0
11601 .byte 196,195,121,32,4,25,7 // vpinsrb $0x7,(%r9,%rbx,1),%xmm0,%xmm0
11602 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
11603 .byte 73,139,64,8 // mov 0x8(%r8),%rax
11604 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
11605 .byte 196,226,117,144,28,128 // vpgatherdd %ymm1,(%rax,%ymm0,4),%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040011606 .byte 197,229,219,5,85,32,0,0 // vpand 0x2055(%rip),%ymm3,%ymm0 # 4cc0 <_sk_callback_hsw+0x573>
Mike Klein7d3d8722017-04-06 17:53:18 -040011607 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011608 .byte 196,98,125,24,5,104,30,0,0 // vbroadcastss 0x1e68(%rip),%ymm8 # 4ae0 <_sk_callback_hsw+0x393>
Mike Klein7d3d8722017-04-06 17:53:18 -040011609 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011610 .byte 196,226,101,0,13,90,32,0,0 // vpshufb 0x205a(%rip),%ymm3,%ymm1 # 4ce0 <_sk_callback_hsw+0x593>
Mike Klein7d3d8722017-04-06 17:53:18 -040011611 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
11612 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011613 .byte 196,226,101,0,21,104,32,0,0 // vpshufb 0x2068(%rip),%ymm3,%ymm2 # 4d00 <_sk_callback_hsw+0x5b3>
Mike Klein7d3d8722017-04-06 17:53:18 -040011614 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
11615 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
11616 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
11617 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
11618 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
11619 .byte 72,173 // lods %ds:(%rsi),%rax
11620 .byte 91 // pop %rbx
11621 .byte 65,92 // pop %r12
11622 .byte 65,93 // pop %r13
11623 .byte 65,94 // pop %r14
11624 .byte 65,95 // pop %r15
11625 .byte 255,224 // jmpq *%rax
11626
Mike Klein7c4af542017-03-29 18:21:14 -040011627HIDDEN _sk_load_565_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011628.globl _sk_load_565_hsw
Mike Klein86714282017-04-13 17:37:38 -040011629FUNCTION(_sk_load_565_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011630_sk_load_565_hsw:
11631 .byte 72,173 // lods %ds:(%rsi),%rax
11632 .byte 76,139,16 // mov (%rax),%r10
11633 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040011634 .byte 117,114 // jne 2d38 <_sk_load_565_hsw+0x7c>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011635 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
11636 .byte 196,226,125,51,208 // vpmovzxwd %xmm0,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011637 .byte 196,226,125,88,5,10,30,0,0 // vpbroadcastd 0x1e0a(%rip),%ymm0 # 4ae4 <_sk_callback_hsw+0x397>
Mike Klein308e6242017-04-27 13:56:33 -040011638 .byte 197,237,219,192 // vpand %ymm0,%ymm2,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040011639 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011640 .byte 196,226,125,24,13,253,29,0,0 // vbroadcastss 0x1dfd(%rip),%ymm1 # 4ae8 <_sk_callback_hsw+0x39b>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011641 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011642 .byte 196,226,125,88,13,244,29,0,0 // vpbroadcastd 0x1df4(%rip),%ymm1 # 4aec <_sk_callback_hsw+0x39f>
Mike Klein308e6242017-04-27 13:56:33 -040011643 .byte 197,237,219,201 // vpand %ymm1,%ymm2,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040011644 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011645 .byte 196,226,125,24,29,231,29,0,0 // vbroadcastss 0x1de7(%rip),%ymm3 # 4af0 <_sk_callback_hsw+0x3a3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011646 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011647 .byte 196,226,125,88,29,222,29,0,0 // vpbroadcastd 0x1dde(%rip),%ymm3 # 4af4 <_sk_callback_hsw+0x3a7>
Mike Klein308e6242017-04-27 13:56:33 -040011648 .byte 197,237,219,211 // vpand %ymm3,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040011649 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011650 .byte 196,226,125,24,29,209,29,0,0 // vbroadcastss 0x1dd1(%rip),%ymm3 # 4af8 <_sk_callback_hsw+0x3ab>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011651 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040011652 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040011653 .byte 196,226,125,24,29,198,29,0,0 // vbroadcastss 0x1dc6(%rip),%ymm3 # 4afc <_sk_callback_hsw+0x3af>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011654 .byte 255,224 // jmpq *%rax
11655 .byte 65,137,200 // mov %ecx,%r8d
11656 .byte 65,128,224,7 // and $0x7,%r8b
11657 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
11658 .byte 65,254,200 // dec %r8b
11659 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Klein5d7f2b52017-05-20 13:21:59 -040011660 .byte 119,128 // ja 2ccc <_sk_load_565_hsw+0x10>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011661 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Klein5d7f2b52017-05-20 13:21:59 -040011662 .byte 76,141,13,73,0,0,0 // lea 0x49(%rip),%r9 # 2da0 <_sk_load_565_hsw+0xe4>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011663 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
11664 .byte 76,1,200 // add %r9,%rax
11665 .byte 255,224 // jmpq *%rax
11666 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
11667 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
11668 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
11669 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
11670 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
11671 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
11672 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
11673 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Mike Klein5d7f2b52017-05-20 13:21:59 -040011674 .byte 233,44,255,255,255 // jmpq 2ccc <_sk_load_565_hsw+0x10>
Mike Kleinfe560a82017-05-01 12:56:35 -040011675 .byte 244 // hlt
Mike Kleind7e06ae2017-03-29 16:33:06 -040011676 .byte 255 // (bad)
11677 .byte 255 // (bad)
11678 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040011679 .byte 236 // in (%dx),%al
11680 .byte 255 // (bad)
11681 .byte 255 // (bad)
11682 .byte 255,228 // jmpq *%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040011683 .byte 255 // (bad)
11684 .byte 255 // (bad)
11685 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040011686 .byte 220,255 // fdivr %st,%st(7)
Mike Klein0aa742f2017-04-27 13:36:57 -040011687 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040011688 .byte 255,212 // callq *%rsp
Mike Klein0aa742f2017-04-27 13:36:57 -040011689 .byte 255 // (bad)
11690 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040011691 .byte 255,204 // dec %esp
Mike Klein0aa742f2017-04-27 13:36:57 -040011692 .byte 255 // (bad)
11693 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040011694 .byte 255,192 // inc %eax
Mike Kleind7e06ae2017-03-29 16:33:06 -040011695 .byte 255 // (bad)
11696 .byte 255 // (bad)
11697 .byte 255 // .byte 0xff
11698
Mike Klein21bd3e42017-04-06 16:32:29 -040011699HIDDEN _sk_gather_565_hsw
11700.globl _sk_gather_565_hsw
Mike Klein86714282017-04-13 17:37:38 -040011701FUNCTION(_sk_gather_565_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -040011702_sk_gather_565_hsw:
11703 .byte 65,87 // push %r15
11704 .byte 65,86 // push %r14
11705 .byte 65,84 // push %r12
11706 .byte 83 // push %rbx
11707 .byte 72,173 // lods %ds:(%rsi),%rax
11708 .byte 76,139,0 // mov (%rax),%r8
11709 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
11710 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
11711 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
11712 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
11713 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
11714 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
11715 .byte 65,137,193 // mov %eax,%r9d
11716 .byte 72,193,232,32 // shr $0x20,%rax
11717 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
11718 .byte 69,137,211 // mov %r10d,%r11d
11719 .byte 73,193,234,32 // shr $0x20,%r10
11720 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
11721 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
11722 .byte 65,137,222 // mov %ebx,%r14d
11723 .byte 72,193,235,32 // shr $0x20,%rbx
11724 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
11725 .byte 69,137,252 // mov %r15d,%r12d
11726 .byte 73,193,239,32 // shr $0x20,%r15
11727 .byte 71,15,183,20,80 // movzwl (%r8,%r10,2),%r10d
11728 .byte 71,15,183,28,88 // movzwl (%r8,%r11,2),%r11d
11729 .byte 196,193,121,110,195 // vmovd %r11d,%xmm0
11730 .byte 196,193,121,196,194,1 // vpinsrw $0x1,%r10d,%xmm0,%xmm0
11731 .byte 71,15,183,12,72 // movzwl (%r8,%r9,2),%r9d
11732 .byte 196,193,121,196,193,2 // vpinsrw $0x2,%r9d,%xmm0,%xmm0
11733 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
11734 .byte 197,249,196,192,3 // vpinsrw $0x3,%eax,%xmm0,%xmm0
11735 .byte 67,15,183,4,96 // movzwl (%r8,%r12,2),%eax
11736 .byte 197,249,196,192,4 // vpinsrw $0x4,%eax,%xmm0,%xmm0
11737 .byte 67,15,183,4,120 // movzwl (%r8,%r15,2),%eax
11738 .byte 197,249,196,192,5 // vpinsrw $0x5,%eax,%xmm0,%xmm0
11739 .byte 67,15,183,4,112 // movzwl (%r8,%r14,2),%eax
11740 .byte 197,249,196,192,6 // vpinsrw $0x6,%eax,%xmm0,%xmm0
11741 .byte 65,15,183,4,88 // movzwl (%r8,%rbx,2),%eax
11742 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
11743 .byte 196,226,125,51,208 // vpmovzxwd %xmm0,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011744 .byte 196,226,125,88,5,137,28,0,0 // vpbroadcastd 0x1c89(%rip),%ymm0 # 4b00 <_sk_callback_hsw+0x3b3>
Mike Klein308e6242017-04-27 13:56:33 -040011745 .byte 197,237,219,192 // vpand %ymm0,%ymm2,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -040011746 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011747 .byte 196,226,125,24,13,124,28,0,0 // vbroadcastss 0x1c7c(%rip),%ymm1 # 4b04 <_sk_callback_hsw+0x3b7>
Mike Klein21bd3e42017-04-06 16:32:29 -040011748 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011749 .byte 196,226,125,88,13,115,28,0,0 // vpbroadcastd 0x1c73(%rip),%ymm1 # 4b08 <_sk_callback_hsw+0x3bb>
Mike Klein308e6242017-04-27 13:56:33 -040011750 .byte 197,237,219,201 // vpand %ymm1,%ymm2,%ymm1
Mike Klein21bd3e42017-04-06 16:32:29 -040011751 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011752 .byte 196,226,125,24,29,102,28,0,0 // vbroadcastss 0x1c66(%rip),%ymm3 # 4b0c <_sk_callback_hsw+0x3bf>
Mike Klein21bd3e42017-04-06 16:32:29 -040011753 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011754 .byte 196,226,125,88,29,93,28,0,0 // vpbroadcastd 0x1c5d(%rip),%ymm3 # 4b10 <_sk_callback_hsw+0x3c3>
Mike Klein308e6242017-04-27 13:56:33 -040011755 .byte 197,237,219,211 // vpand %ymm3,%ymm2,%ymm2
Mike Klein21bd3e42017-04-06 16:32:29 -040011756 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011757 .byte 196,226,125,24,29,80,28,0,0 // vbroadcastss 0x1c50(%rip),%ymm3 # 4b14 <_sk_callback_hsw+0x3c7>
Mike Klein21bd3e42017-04-06 16:32:29 -040011758 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
Mike Klein21bd3e42017-04-06 16:32:29 -040011759 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040011760 .byte 196,226,125,24,29,69,28,0,0 // vbroadcastss 0x1c45(%rip),%ymm3 # 4b18 <_sk_callback_hsw+0x3cb>
Mike Klein21bd3e42017-04-06 16:32:29 -040011761 .byte 91 // pop %rbx
11762 .byte 65,92 // pop %r12
11763 .byte 65,94 // pop %r14
11764 .byte 65,95 // pop %r15
11765 .byte 255,224 // jmpq *%rax
11766
Mike Klein7c4af542017-03-29 18:21:14 -040011767HIDDEN _sk_store_565_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011768.globl _sk_store_565_hsw
Mike Klein86714282017-04-13 17:37:38 -040011769FUNCTION(_sk_store_565_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011770_sk_store_565_hsw:
11771 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040011772 .byte 76,139,16 // mov (%rax),%r10
Mike Klein8ca33562017-05-23 08:07:43 -040011773 .byte 196,98,125,24,5,50,28,0,0 // vbroadcastss 0x1c32(%rip),%ymm8 # 4b1c <_sk_callback_hsw+0x3cf>
Mike Kleinfe560a82017-05-01 12:56:35 -040011774 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040011775 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
11776 .byte 196,193,53,114,241,11 // vpslld $0xb,%ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040011777 .byte 196,98,125,24,21,29,28,0,0 // vbroadcastss 0x1c1d(%rip),%ymm10 # 4b20 <_sk_callback_hsw+0x3d3>
Mike Kleinfe560a82017-05-01 12:56:35 -040011778 .byte 196,65,116,89,210 // vmulps %ymm10,%ymm1,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040011779 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
11780 .byte 196,193,45,114,242,5 // vpslld $0x5,%ymm10,%ymm10
11781 .byte 196,65,45,235,201 // vpor %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040011782 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040011783 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
11784 .byte 196,65,53,235,192 // vpor %ymm8,%ymm9,%ymm8
11785 .byte 196,67,125,57,193,1 // vextracti128 $0x1,%ymm8,%xmm9
11786 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
11787 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040011788 .byte 117,10 // jne 2f41 <_sk_store_565_hsw+0x65>
Mike Kleinfe560a82017-05-01 12:56:35 -040011789 .byte 196,65,122,127,4,122 // vmovdqu %xmm8,(%r10,%rdi,2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011790 .byte 72,173 // lods %ds:(%rsi),%rax
11791 .byte 255,224 // jmpq *%rax
11792 .byte 65,137,200 // mov %ecx,%r8d
11793 .byte 65,128,224,7 // and $0x7,%r8b
11794 .byte 65,254,200 // dec %r8b
11795 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Klein5d7f2b52017-05-20 13:21:59 -040011796 .byte 119,236 // ja 2f3d <_sk_store_565_hsw+0x61>
Mike Kleinfe560a82017-05-01 12:56:35 -040011797 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Klein5d7f2b52017-05-20 13:21:59 -040011798 .byte 76,141,13,68,0,0,0 // lea 0x44(%rip),%r9 # 2fa0 <_sk_store_565_hsw+0xc4>
Mike Kleinfe560a82017-05-01 12:56:35 -040011799 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
11800 .byte 76,1,200 // add %r9,%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040011801 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040011802 .byte 196,67,121,21,68,122,12,6 // vpextrw $0x6,%xmm8,0xc(%r10,%rdi,2)
11803 .byte 196,67,121,21,68,122,10,5 // vpextrw $0x5,%xmm8,0xa(%r10,%rdi,2)
11804 .byte 196,67,121,21,68,122,8,4 // vpextrw $0x4,%xmm8,0x8(%r10,%rdi,2)
11805 .byte 196,67,121,21,68,122,6,3 // vpextrw $0x3,%xmm8,0x6(%r10,%rdi,2)
11806 .byte 196,67,121,21,68,122,4,2 // vpextrw $0x2,%xmm8,0x4(%r10,%rdi,2)
11807 .byte 196,67,121,21,68,122,2,1 // vpextrw $0x1,%xmm8,0x2(%r10,%rdi,2)
11808 .byte 196,67,121,21,4,122,0 // vpextrw $0x0,%xmm8,(%r10,%rdi,2)
Mike Klein5d7f2b52017-05-20 13:21:59 -040011809 .byte 235,159 // jmp 2f3d <_sk_store_565_hsw+0x61>
Mike Kleinfe560a82017-05-01 12:56:35 -040011810 .byte 102,144 // xchg %ax,%ax
11811 .byte 245 // cmc
11812 .byte 255 // (bad)
11813 .byte 255 // (bad)
11814 .byte 255 // (bad)
11815 .byte 237 // in (%dx),%eax
11816 .byte 255 // (bad)
11817 .byte 255 // (bad)
11818 .byte 255,229 // jmpq *%rbp
11819 .byte 255 // (bad)
11820 .byte 255 // (bad)
11821 .byte 255 // (bad)
11822 .byte 221,255 // (bad)
11823 .byte 255 // (bad)
11824 .byte 255,213 // callq *%rbp
11825 .byte 255 // (bad)
11826 .byte 255 // (bad)
11827 .byte 255,205 // dec %ebp
11828 .byte 255 // (bad)
11829 .byte 255 // (bad)
11830 .byte 255,197 // inc %ebp
11831 .byte 255 // (bad)
11832 .byte 255 // (bad)
11833 .byte 255 // .byte 0xff
11834
11835HIDDEN _sk_load_4444_hsw
11836.globl _sk_load_4444_hsw
11837FUNCTION(_sk_load_4444_hsw)
11838_sk_load_4444_hsw:
11839 .byte 72,173 // lods %ds:(%rsi),%rax
11840 .byte 76,139,16 // mov (%rax),%r10
11841 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040011842 .byte 15,133,138,0,0,0 // jne 3054 <_sk_load_4444_hsw+0x98>
Mike Kleinfe560a82017-05-01 12:56:35 -040011843 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
11844 .byte 196,226,125,51,216 // vpmovzxwd %xmm0,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040011845 .byte 196,226,125,88,5,70,27,0,0 // vpbroadcastd 0x1b46(%rip),%ymm0 # 4b24 <_sk_callback_hsw+0x3d7>
Mike Kleinfe560a82017-05-01 12:56:35 -040011846 .byte 197,229,219,192 // vpand %ymm0,%ymm3,%ymm0
11847 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011848 .byte 196,226,125,24,13,57,27,0,0 // vbroadcastss 0x1b39(%rip),%ymm1 # 4b28 <_sk_callback_hsw+0x3db>
Mike Kleinfe560a82017-05-01 12:56:35 -040011849 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011850 .byte 196,226,125,88,13,48,27,0,0 // vpbroadcastd 0x1b30(%rip),%ymm1 # 4b2c <_sk_callback_hsw+0x3df>
Mike Kleinfe560a82017-05-01 12:56:35 -040011851 .byte 197,229,219,201 // vpand %ymm1,%ymm3,%ymm1
11852 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011853 .byte 196,226,125,24,21,35,27,0,0 // vbroadcastss 0x1b23(%rip),%ymm2 # 4b30 <_sk_callback_hsw+0x3e3>
Mike Kleinfe560a82017-05-01 12:56:35 -040011854 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011855 .byte 196,226,125,88,21,26,27,0,0 // vpbroadcastd 0x1b1a(%rip),%ymm2 # 4b34 <_sk_callback_hsw+0x3e7>
Mike Kleinfe560a82017-05-01 12:56:35 -040011856 .byte 197,229,219,210 // vpand %ymm2,%ymm3,%ymm2
11857 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011858 .byte 196,98,125,24,5,13,27,0,0 // vbroadcastss 0x1b0d(%rip),%ymm8 # 4b38 <_sk_callback_hsw+0x3eb>
Mike Kleinfe560a82017-05-01 12:56:35 -040011859 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011860 .byte 196,98,125,88,5,3,27,0,0 // vpbroadcastd 0x1b03(%rip),%ymm8 # 4b3c <_sk_callback_hsw+0x3ef>
Mike Kleinfe560a82017-05-01 12:56:35 -040011861 .byte 196,193,101,219,216 // vpand %ymm8,%ymm3,%ymm3
11862 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040011863 .byte 196,98,125,24,5,245,26,0,0 // vbroadcastss 0x1af5(%rip),%ymm8 # 4b40 <_sk_callback_hsw+0x3f3>
Mike Kleinfe560a82017-05-01 12:56:35 -040011864 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
11865 .byte 72,173 // lods %ds:(%rsi),%rax
11866 .byte 255,224 // jmpq *%rax
11867 .byte 65,137,200 // mov %ecx,%r8d
11868 .byte 65,128,224,7 // and $0x7,%r8b
11869 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
11870 .byte 65,254,200 // dec %r8b
11871 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Klein5d7f2b52017-05-20 13:21:59 -040011872 .byte 15,135,100,255,255,255 // ja 2fd0 <_sk_load_4444_hsw+0x14>
Mike Kleinfe560a82017-05-01 12:56:35 -040011873 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Klein5d7f2b52017-05-20 13:21:59 -040011874 .byte 76,141,13,73,0,0,0 // lea 0x49(%rip),%r9 # 30c0 <_sk_load_4444_hsw+0x104>
Mike Kleinfe560a82017-05-01 12:56:35 -040011875 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
11876 .byte 76,1,200 // add %r9,%rax
11877 .byte 255,224 // jmpq *%rax
11878 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
11879 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
11880 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
11881 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
11882 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
11883 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
11884 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
11885 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Mike Klein5d7f2b52017-05-20 13:21:59 -040011886 .byte 233,16,255,255,255 // jmpq 2fd0 <_sk_load_4444_hsw+0x14>
Mike Klein308e6242017-04-27 13:56:33 -040011887 .byte 244 // hlt
Mike Kleind7e06ae2017-03-29 16:33:06 -040011888 .byte 255 // (bad)
11889 .byte 255 // (bad)
11890 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040011891 .byte 236 // in (%dx),%al
Mike Kleind7e06ae2017-03-29 16:33:06 -040011892 .byte 255 // (bad)
11893 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040011894 .byte 255,228 // jmpq *%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040011895 .byte 255 // (bad)
11896 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040011897 .byte 255 // (bad)
11898 .byte 220,255 // fdivr %st,%st(7)
11899 .byte 255 // (bad)
11900 .byte 255,212 // callq *%rsp
11901 .byte 255 // (bad)
11902 .byte 255 // (bad)
11903 .byte 255,204 // dec %esp
11904 .byte 255 // (bad)
11905 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040011906 .byte 255,192 // inc %eax
Mike Kleinf809fef2017-03-31 13:52:45 -040011907 .byte 255 // (bad)
11908 .byte 255 // (bad)
11909 .byte 255 // .byte 0xff
11910
Mike Klein21bd3e42017-04-06 16:32:29 -040011911HIDDEN _sk_gather_4444_hsw
11912.globl _sk_gather_4444_hsw
Mike Klein86714282017-04-13 17:37:38 -040011913FUNCTION(_sk_gather_4444_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -040011914_sk_gather_4444_hsw:
11915 .byte 65,87 // push %r15
11916 .byte 65,86 // push %r14
11917 .byte 65,84 // push %r12
11918 .byte 83 // push %rbx
11919 .byte 72,173 // lods %ds:(%rsi),%rax
11920 .byte 76,139,0 // mov (%rax),%r8
11921 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
11922 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
11923 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
11924 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
11925 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
11926 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
11927 .byte 65,137,193 // mov %eax,%r9d
11928 .byte 72,193,232,32 // shr $0x20,%rax
11929 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
11930 .byte 69,137,211 // mov %r10d,%r11d
11931 .byte 73,193,234,32 // shr $0x20,%r10
11932 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
11933 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
11934 .byte 65,137,222 // mov %ebx,%r14d
11935 .byte 72,193,235,32 // shr $0x20,%rbx
11936 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
11937 .byte 69,137,252 // mov %r15d,%r12d
11938 .byte 73,193,239,32 // shr $0x20,%r15
11939 .byte 71,15,183,20,80 // movzwl (%r8,%r10,2),%r10d
11940 .byte 71,15,183,28,88 // movzwl (%r8,%r11,2),%r11d
11941 .byte 196,193,121,110,195 // vmovd %r11d,%xmm0
11942 .byte 196,193,121,196,194,1 // vpinsrw $0x1,%r10d,%xmm0,%xmm0
11943 .byte 71,15,183,12,72 // movzwl (%r8,%r9,2),%r9d
11944 .byte 196,193,121,196,193,2 // vpinsrw $0x2,%r9d,%xmm0,%xmm0
11945 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
11946 .byte 197,249,196,192,3 // vpinsrw $0x3,%eax,%xmm0,%xmm0
11947 .byte 67,15,183,4,96 // movzwl (%r8,%r12,2),%eax
11948 .byte 197,249,196,192,4 // vpinsrw $0x4,%eax,%xmm0,%xmm0
11949 .byte 67,15,183,4,120 // movzwl (%r8,%r15,2),%eax
11950 .byte 197,249,196,192,5 // vpinsrw $0x5,%eax,%xmm0,%xmm0
11951 .byte 67,15,183,4,112 // movzwl (%r8,%r14,2),%eax
11952 .byte 197,249,196,192,6 // vpinsrw $0x6,%eax,%xmm0,%xmm0
11953 .byte 65,15,183,4,88 // movzwl (%r8,%rbx,2),%eax
11954 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -040011955 .byte 196,226,125,51,216 // vpmovzxwd %xmm0,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040011956 .byte 196,226,125,88,5,173,25,0,0 // vpbroadcastd 0x19ad(%rip),%ymm0 # 4b44 <_sk_callback_hsw+0x3f7>
Mike Klein308e6242017-04-27 13:56:33 -040011957 .byte 197,229,219,192 // vpand %ymm0,%ymm3,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -040011958 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011959 .byte 196,226,125,24,13,160,25,0,0 // vbroadcastss 0x19a0(%rip),%ymm1 # 4b48 <_sk_callback_hsw+0x3fb>
Mike Klein21bd3e42017-04-06 16:32:29 -040011960 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040011961 .byte 196,226,125,88,13,151,25,0,0 // vpbroadcastd 0x1997(%rip),%ymm1 # 4b4c <_sk_callback_hsw+0x3ff>
Mike Klein308e6242017-04-27 13:56:33 -040011962 .byte 197,229,219,201 // vpand %ymm1,%ymm3,%ymm1
Mike Klein21bd3e42017-04-06 16:32:29 -040011963 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011964 .byte 196,226,125,24,21,138,25,0,0 // vbroadcastss 0x198a(%rip),%ymm2 # 4b50 <_sk_callback_hsw+0x403>
Mike Klein21bd3e42017-04-06 16:32:29 -040011965 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040011966 .byte 196,226,125,88,21,129,25,0,0 // vpbroadcastd 0x1981(%rip),%ymm2 # 4b54 <_sk_callback_hsw+0x407>
Mike Klein308e6242017-04-27 13:56:33 -040011967 .byte 197,229,219,210 // vpand %ymm2,%ymm3,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040011968 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011969 .byte 196,98,125,24,5,116,25,0,0 // vbroadcastss 0x1974(%rip),%ymm8 # 4b58 <_sk_callback_hsw+0x40b>
Mike Kleinfe560a82017-05-01 12:56:35 -040011970 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040011971 .byte 196,98,125,88,5,106,25,0,0 // vpbroadcastd 0x196a(%rip),%ymm8 # 4b5c <_sk_callback_hsw+0x40f>
Mike Klein308e6242017-04-27 13:56:33 -040011972 .byte 196,193,101,219,216 // vpand %ymm8,%ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040011973 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040011974 .byte 196,98,125,24,5,92,25,0,0 // vbroadcastss 0x195c(%rip),%ymm8 # 4b60 <_sk_callback_hsw+0x413>
Mike Kleinfe560a82017-05-01 12:56:35 -040011975 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Klein21bd3e42017-04-06 16:32:29 -040011976 .byte 72,173 // lods %ds:(%rsi),%rax
11977 .byte 91 // pop %rbx
11978 .byte 65,92 // pop %r12
11979 .byte 65,94 // pop %r14
11980 .byte 65,95 // pop %r15
11981 .byte 255,224 // jmpq *%rax
11982
Mike Kleinf809fef2017-03-31 13:52:45 -040011983HIDDEN _sk_store_4444_hsw
11984.globl _sk_store_4444_hsw
Mike Klein86714282017-04-13 17:37:38 -040011985FUNCTION(_sk_store_4444_hsw)
Mike Kleinf809fef2017-03-31 13:52:45 -040011986_sk_store_4444_hsw:
11987 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040011988 .byte 76,139,16 // mov (%rax),%r10
Mike Klein8ca33562017-05-23 08:07:43 -040011989 .byte 196,98,125,24,5,66,25,0,0 // vbroadcastss 0x1942(%rip),%ymm8 # 4b64 <_sk_callback_hsw+0x417>
Mike Kleinfe560a82017-05-01 12:56:35 -040011990 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleinf809fef2017-03-31 13:52:45 -040011991 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
11992 .byte 196,193,53,114,241,12 // vpslld $0xc,%ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040011993 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Kleinf809fef2017-03-31 13:52:45 -040011994 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
11995 .byte 196,193,45,114,242,8 // vpslld $0x8,%ymm10,%ymm10
11996 .byte 196,65,45,235,201 // vpor %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040011997 .byte 196,65,108,89,208 // vmulps %ymm8,%ymm2,%ymm10
Mike Kleinf809fef2017-03-31 13:52:45 -040011998 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
11999 .byte 196,193,45,114,242,4 // vpslld $0x4,%ymm10,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040012000 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleinf809fef2017-03-31 13:52:45 -040012001 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
12002 .byte 196,65,45,235,192 // vpor %ymm8,%ymm10,%ymm8
12003 .byte 196,65,53,235,192 // vpor %ymm8,%ymm9,%ymm8
12004 .byte 196,67,125,57,193,1 // vextracti128 $0x1,%ymm8,%xmm9
12005 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
12006 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012007 .byte 117,10 // jne 3285 <_sk_store_4444_hsw+0x71>
Mike Kleinfe560a82017-05-01 12:56:35 -040012008 .byte 196,65,122,127,4,122 // vmovdqu %xmm8,(%r10,%rdi,2)
Mike Kleinf809fef2017-03-31 13:52:45 -040012009 .byte 72,173 // lods %ds:(%rsi),%rax
12010 .byte 255,224 // jmpq *%rax
12011 .byte 65,137,200 // mov %ecx,%r8d
12012 .byte 65,128,224,7 // and $0x7,%r8b
12013 .byte 65,254,200 // dec %r8b
12014 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Klein5d7f2b52017-05-20 13:21:59 -040012015 .byte 119,236 // ja 3281 <_sk_store_4444_hsw+0x6d>
Mike Kleinfe560a82017-05-01 12:56:35 -040012016 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Klein5d7f2b52017-05-20 13:21:59 -040012017 .byte 76,141,13,68,0,0,0 // lea 0x44(%rip),%r9 # 32e4 <_sk_store_4444_hsw+0xd0>
Mike Kleinfe560a82017-05-01 12:56:35 -040012018 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
12019 .byte 76,1,200 // add %r9,%rax
Mike Kleinf809fef2017-03-31 13:52:45 -040012020 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040012021 .byte 196,67,121,21,68,122,12,6 // vpextrw $0x6,%xmm8,0xc(%r10,%rdi,2)
12022 .byte 196,67,121,21,68,122,10,5 // vpextrw $0x5,%xmm8,0xa(%r10,%rdi,2)
12023 .byte 196,67,121,21,68,122,8,4 // vpextrw $0x4,%xmm8,0x8(%r10,%rdi,2)
12024 .byte 196,67,121,21,68,122,6,3 // vpextrw $0x3,%xmm8,0x6(%r10,%rdi,2)
12025 .byte 196,67,121,21,68,122,4,2 // vpextrw $0x2,%xmm8,0x4(%r10,%rdi,2)
12026 .byte 196,67,121,21,68,122,2,1 // vpextrw $0x1,%xmm8,0x2(%r10,%rdi,2)
12027 .byte 196,67,121,21,4,122,0 // vpextrw $0x0,%xmm8,(%r10,%rdi,2)
Mike Klein5d7f2b52017-05-20 13:21:59 -040012028 .byte 235,159 // jmp 3281 <_sk_store_4444_hsw+0x6d>
Mike Kleinfe560a82017-05-01 12:56:35 -040012029 .byte 102,144 // xchg %ax,%ax
12030 .byte 245 // cmc
Mike Kleinf809fef2017-03-31 13:52:45 -040012031 .byte 255 // (bad)
12032 .byte 255 // (bad)
12033 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040012034 .byte 237 // in (%dx),%eax
Mike Kleinf809fef2017-03-31 13:52:45 -040012035 .byte 255 // (bad)
12036 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040012037 .byte 255,229 // jmpq *%rbp
Mike Kleinf809fef2017-03-31 13:52:45 -040012038 .byte 255 // (bad)
12039 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040012040 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040012041 .byte 221,255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040012042 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040012043 .byte 255,213 // callq *%rbp
Mike Klein308e6242017-04-27 13:56:33 -040012044 .byte 255 // (bad)
12045 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040012046 .byte 255,205 // dec %ebp
Mike Klein308e6242017-04-27 13:56:33 -040012047 .byte 255 // (bad)
12048 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040012049 .byte 255,197 // inc %ebp
Mike Kleinf809fef2017-03-31 13:52:45 -040012050 .byte 255 // (bad)
12051 .byte 255 // (bad)
12052 .byte 255 // .byte 0xff
12053
Mike Klein7c4af542017-03-29 18:21:14 -040012054HIDDEN _sk_load_8888_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012055.globl _sk_load_8888_hsw
Mike Klein86714282017-04-13 17:37:38 -040012056FUNCTION(_sk_load_8888_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012057_sk_load_8888_hsw:
12058 .byte 73,137,200 // mov %rcx,%r8
12059 .byte 72,173 // lods %ds:(%rsi),%rax
12060 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
12061 .byte 76,3,8 // add (%rax),%r9
12062 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040012063 .byte 117,88 // jne 336d <_sk_load_8888_hsw+0x6d>
Brian Osman74fc5932017-05-22 19:25:36 +000012064 .byte 196,193,126,111,25 // vmovdqu (%r9),%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040012065 .byte 197,229,219,5,254,25,0,0 // vpand 0x19fe(%rip),%ymm3,%ymm0 # 4d20 <_sk_callback_hsw+0x5d3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012066 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040012067 .byte 196,98,125,24,5,57,24,0,0 // vbroadcastss 0x1839(%rip),%ymm8 # 4b68 <_sk_callback_hsw+0x41b>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012068 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040012069 .byte 196,226,101,0,13,3,26,0,0 // vpshufb 0x1a03(%rip),%ymm3,%ymm1 # 4d40 <_sk_callback_hsw+0x5f3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012070 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
12071 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040012072 .byte 196,226,101,0,21,17,26,0,0 // vpshufb 0x1a11(%rip),%ymm3,%ymm2 # 4d60 <_sk_callback_hsw+0x613>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012073 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
12074 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
12075 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
12076 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
12077 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
12078 .byte 72,173 // lods %ds:(%rsi),%rax
12079 .byte 76,137,193 // mov %r8,%rcx
12080 .byte 255,224 // jmpq *%rax
12081 .byte 185,8,0,0,0 // mov $0x8,%ecx
12082 .byte 68,41,193 // sub %r8d,%ecx
12083 .byte 192,225,3 // shl $0x3,%cl
12084 .byte 72,199,192,255,255,255,255 // mov $0xffffffffffffffff,%rax
12085 .byte 72,211,232 // shr %cl,%rax
12086 .byte 196,225,249,110,192 // vmovq %rax,%xmm0
12087 .byte 196,226,125,33,192 // vpmovsxbd %xmm0,%ymm0
Brian Osman74fc5932017-05-22 19:25:36 +000012088 .byte 196,194,125,140,25 // vpmaskmovd (%r9),%ymm0,%ymm3
Mike Klein5d7f2b52017-05-20 13:21:59 -040012089 .byte 235,135 // jmp 331a <_sk_load_8888_hsw+0x1a>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012090
Mike Kleindec4ea82017-04-06 15:04:05 -040012091HIDDEN _sk_gather_8888_hsw
12092.globl _sk_gather_8888_hsw
Mike Klein86714282017-04-13 17:37:38 -040012093FUNCTION(_sk_gather_8888_hsw)
Mike Kleindec4ea82017-04-06 15:04:05 -040012094_sk_gather_8888_hsw:
12095 .byte 72,173 // lods %ds:(%rsi),%rax
12096 .byte 76,139,0 // mov (%rax),%r8
12097 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
12098 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
12099 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
12100 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
12101 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
12102 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
12103 .byte 196,194,117,144,28,128 // vpgatherdd %ymm1,(%r8,%ymm0,4),%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040012104 .byte 197,229,219,5,191,25,0,0 // vpand 0x19bf(%rip),%ymm3,%ymm0 # 4d80 <_sk_callback_hsw+0x633>
Mike Kleindec4ea82017-04-06 15:04:05 -040012105 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040012106 .byte 196,98,125,24,5,158,23,0,0 // vbroadcastss 0x179e(%rip),%ymm8 # 4b6c <_sk_callback_hsw+0x41f>
Mike Kleindec4ea82017-04-06 15:04:05 -040012107 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040012108 .byte 196,226,101,0,13,196,25,0,0 // vpshufb 0x19c4(%rip),%ymm3,%ymm1 # 4da0 <_sk_callback_hsw+0x653>
Mike Kleindec4ea82017-04-06 15:04:05 -040012109 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
12110 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040012111 .byte 196,226,101,0,21,210,25,0,0 // vpshufb 0x19d2(%rip),%ymm3,%ymm2 # 4dc0 <_sk_callback_hsw+0x673>
Mike Kleindec4ea82017-04-06 15:04:05 -040012112 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
12113 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
12114 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
12115 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
12116 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
12117 .byte 72,173 // lods %ds:(%rsi),%rax
12118 .byte 255,224 // jmpq *%rax
12119
Mike Klein7c4af542017-03-29 18:21:14 -040012120HIDDEN _sk_store_8888_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012121.globl _sk_store_8888_hsw
Mike Klein86714282017-04-13 17:37:38 -040012122FUNCTION(_sk_store_8888_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012123_sk_store_8888_hsw:
12124 .byte 73,137,200 // mov %rcx,%r8
12125 .byte 72,173 // lods %ds:(%rsi),%rax
12126 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
12127 .byte 76,3,8 // add (%rax),%r9
Mike Klein8ca33562017-05-23 08:07:43 -040012128 .byte 196,98,125,24,5,78,23,0,0 // vbroadcastss 0x174e(%rip),%ymm8 # 4b70 <_sk_callback_hsw+0x423>
Mike Kleinfe560a82017-05-01 12:56:35 -040012129 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040012130 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040012131 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040012132 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
12133 .byte 196,193,45,114,242,8 // vpslld $0x8,%ymm10,%ymm10
12134 .byte 196,65,45,235,201 // vpor %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040012135 .byte 196,65,108,89,208 // vmulps %ymm8,%ymm2,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040012136 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
12137 .byte 196,193,45,114,242,16 // vpslld $0x10,%ymm10,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040012138 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040012139 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
12140 .byte 196,193,61,114,240,24 // vpslld $0x18,%ymm8,%ymm8
12141 .byte 196,65,45,235,192 // vpor %ymm8,%ymm10,%ymm8
12142 .byte 196,65,53,235,192 // vpor %ymm8,%ymm9,%ymm8
12143 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040012144 .byte 117,12 // jne 347c <_sk_store_8888_hsw+0x73>
Brian Osman74fc5932017-05-22 19:25:36 +000012145 .byte 196,65,126,127,1 // vmovdqu %ymm8,(%r9)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012146 .byte 72,173 // lods %ds:(%rsi),%rax
12147 .byte 76,137,193 // mov %r8,%rcx
12148 .byte 255,224 // jmpq *%rax
12149 .byte 185,8,0,0,0 // mov $0x8,%ecx
12150 .byte 68,41,193 // sub %r8d,%ecx
12151 .byte 192,225,3 // shl $0x3,%cl
12152 .byte 72,199,192,255,255,255,255 // mov $0xffffffffffffffff,%rax
12153 .byte 72,211,232 // shr %cl,%rax
12154 .byte 196,97,249,110,200 // vmovq %rax,%xmm9
12155 .byte 196,66,125,33,201 // vpmovsxbd %xmm9,%ymm9
Brian Osman74fc5932017-05-22 19:25:36 +000012156 .byte 196,66,53,142,1 // vpmaskmovd %ymm8,%ymm9,(%r9)
Mike Klein5d7f2b52017-05-20 13:21:59 -040012157 .byte 235,211 // jmp 3475 <_sk_store_8888_hsw+0x6c>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012158
Mike Klein7c4af542017-03-29 18:21:14 -040012159HIDDEN _sk_load_f16_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012160.globl _sk_load_f16_hsw
Mike Klein86714282017-04-13 17:37:38 -040012161FUNCTION(_sk_load_f16_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012162_sk_load_f16_hsw:
12163 .byte 72,173 // lods %ds:(%rsi),%rax
12164 .byte 72,139,0 // mov (%rax),%rax
12165 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012166 .byte 117,97 // jne 350d <_sk_load_f16_hsw+0x6b>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012167 .byte 197,121,16,4,248 // vmovupd (%rax,%rdi,8),%xmm8
12168 .byte 197,249,16,84,248,16 // vmovupd 0x10(%rax,%rdi,8),%xmm2
12169 .byte 197,249,16,92,248,32 // vmovupd 0x20(%rax,%rdi,8),%xmm3
12170 .byte 197,122,111,76,248,48 // vmovdqu 0x30(%rax,%rdi,8),%xmm9
12171 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
12172 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
12173 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
12174 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
12175 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
12176 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
12177 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
12178 .byte 197,241,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm3
12179 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
12180 .byte 196,226,125,19,192 // vcvtph2ps %xmm0,%ymm0
12181 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
12182 .byte 196,226,125,19,201 // vcvtph2ps %xmm1,%ymm1
12183 .byte 197,177,108,211 // vpunpcklqdq %xmm3,%xmm9,%xmm2
12184 .byte 196,226,125,19,210 // vcvtph2ps %xmm2,%ymm2
12185 .byte 197,177,109,219 // vpunpckhqdq %xmm3,%xmm9,%xmm3
12186 .byte 196,226,125,19,219 // vcvtph2ps %xmm3,%ymm3
12187 .byte 72,173 // lods %ds:(%rsi),%rax
12188 .byte 255,224 // jmpq *%rax
12189 .byte 197,123,16,4,248 // vmovsd (%rax,%rdi,8),%xmm8
12190 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
12191 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012192 .byte 116,79 // je 356c <_sk_load_f16_hsw+0xca>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012193 .byte 197,57,22,68,248,8 // vmovhpd 0x8(%rax,%rdi,8),%xmm8,%xmm8
12194 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012195 .byte 114,67 // jb 356c <_sk_load_f16_hsw+0xca>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012196 .byte 197,251,16,84,248,16 // vmovsd 0x10(%rax,%rdi,8),%xmm2
12197 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012198 .byte 116,68 // je 3579 <_sk_load_f16_hsw+0xd7>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012199 .byte 197,233,22,84,248,24 // vmovhpd 0x18(%rax,%rdi,8),%xmm2,%xmm2
12200 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012201 .byte 114,56 // jb 3579 <_sk_load_f16_hsw+0xd7>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012202 .byte 197,251,16,92,248,32 // vmovsd 0x20(%rax,%rdi,8),%xmm3
12203 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012204 .byte 15,132,114,255,255,255 // je 34c3 <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012205 .byte 197,225,22,92,248,40 // vmovhpd 0x28(%rax,%rdi,8),%xmm3,%xmm3
12206 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012207 .byte 15,130,98,255,255,255 // jb 34c3 <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012208 .byte 197,122,126,76,248,48 // vmovq 0x30(%rax,%rdi,8),%xmm9
Mike Klein5d7f2b52017-05-20 13:21:59 -040012209 .byte 233,87,255,255,255 // jmpq 34c3 <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012210 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
12211 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Klein5d7f2b52017-05-20 13:21:59 -040012212 .byte 233,74,255,255,255 // jmpq 34c3 <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012213 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Mike Klein5d7f2b52017-05-20 13:21:59 -040012214 .byte 233,65,255,255,255 // jmpq 34c3 <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012215
Mike Klein5f055f02017-04-06 20:02:11 -040012216HIDDEN _sk_gather_f16_hsw
12217.globl _sk_gather_f16_hsw
Mike Klein86714282017-04-13 17:37:38 -040012218FUNCTION(_sk_gather_f16_hsw)
Mike Klein5f055f02017-04-06 20:02:11 -040012219_sk_gather_f16_hsw:
12220 .byte 72,173 // lods %ds:(%rsi),%rax
12221 .byte 76,139,0 // mov (%rax),%r8
12222 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
12223 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
12224 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
12225 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
12226 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
12227 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
12228 .byte 197,237,118,210 // vpcmpeqd %ymm2,%ymm2,%ymm2
12229 .byte 196,194,237,144,28,192 // vpgatherdq %ymm2,(%r8,%xmm0,8),%ymm3
12230 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
12231 .byte 196,194,245,144,20,192 // vpgatherdq %ymm1,(%r8,%xmm0,8),%ymm2
12232 .byte 196,227,125,57,216,1 // vextracti128 $0x1,%ymm3,%xmm0
12233 .byte 196,227,125,57,209,1 // vextracti128 $0x1,%ymm2,%xmm1
12234 .byte 197,97,97,192 // vpunpcklwd %xmm0,%xmm3,%xmm8
12235 .byte 197,225,105,192 // vpunpckhwd %xmm0,%xmm3,%xmm0
12236 .byte 197,233,97,217 // vpunpcklwd %xmm1,%xmm2,%xmm3
12237 .byte 197,233,105,201 // vpunpckhwd %xmm1,%xmm2,%xmm1
12238 .byte 197,57,97,200 // vpunpcklwd %xmm0,%xmm8,%xmm9
12239 .byte 197,57,105,192 // vpunpckhwd %xmm0,%xmm8,%xmm8
12240 .byte 197,225,97,209 // vpunpcklwd %xmm1,%xmm3,%xmm2
12241 .byte 197,225,105,217 // vpunpckhwd %xmm1,%xmm3,%xmm3
12242 .byte 197,177,108,194 // vpunpcklqdq %xmm2,%xmm9,%xmm0
12243 .byte 196,226,125,19,192 // vcvtph2ps %xmm0,%ymm0
12244 .byte 197,177,109,202 // vpunpckhqdq %xmm2,%xmm9,%xmm1
12245 .byte 196,226,125,19,201 // vcvtph2ps %xmm1,%ymm1
12246 .byte 197,185,108,211 // vpunpcklqdq %xmm3,%xmm8,%xmm2
12247 .byte 196,226,125,19,210 // vcvtph2ps %xmm2,%ymm2
12248 .byte 197,185,109,219 // vpunpckhqdq %xmm3,%xmm8,%xmm3
12249 .byte 196,226,125,19,219 // vcvtph2ps %xmm3,%ymm3
12250 .byte 72,173 // lods %ds:(%rsi),%rax
12251 .byte 255,224 // jmpq *%rax
12252
Mike Klein7c4af542017-03-29 18:21:14 -040012253HIDDEN _sk_store_f16_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012254.globl _sk_store_f16_hsw
Mike Klein86714282017-04-13 17:37:38 -040012255FUNCTION(_sk_store_f16_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012256_sk_store_f16_hsw:
12257 .byte 72,173 // lods %ds:(%rsi),%rax
12258 .byte 72,139,0 // mov (%rax),%rax
12259 .byte 196,195,125,29,192,4 // vcvtps2ph $0x4,%ymm0,%xmm8
12260 .byte 196,195,125,29,201,4 // vcvtps2ph $0x4,%ymm1,%xmm9
12261 .byte 196,195,125,29,210,4 // vcvtps2ph $0x4,%ymm2,%xmm10
12262 .byte 196,195,125,29,219,4 // vcvtps2ph $0x4,%ymm3,%xmm11
12263 .byte 196,65,57,97,225 // vpunpcklwd %xmm9,%xmm8,%xmm12
12264 .byte 196,65,57,105,193 // vpunpckhwd %xmm9,%xmm8,%xmm8
12265 .byte 196,65,41,97,203 // vpunpcklwd %xmm11,%xmm10,%xmm9
12266 .byte 196,65,41,105,235 // vpunpckhwd %xmm11,%xmm10,%xmm13
12267 .byte 196,65,25,98,217 // vpunpckldq %xmm9,%xmm12,%xmm11
12268 .byte 196,65,25,106,209 // vpunpckhdq %xmm9,%xmm12,%xmm10
12269 .byte 196,65,57,98,205 // vpunpckldq %xmm13,%xmm8,%xmm9
12270 .byte 196,65,57,106,197 // vpunpckhdq %xmm13,%xmm8,%xmm8
12271 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012272 .byte 117,27 // jne 3671 <_sk_store_f16_hsw+0x65>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012273 .byte 197,120,17,28,248 // vmovups %xmm11,(%rax,%rdi,8)
12274 .byte 197,120,17,84,248,16 // vmovups %xmm10,0x10(%rax,%rdi,8)
12275 .byte 197,120,17,76,248,32 // vmovups %xmm9,0x20(%rax,%rdi,8)
12276 .byte 197,122,127,68,248,48 // vmovdqu %xmm8,0x30(%rax,%rdi,8)
12277 .byte 72,173 // lods %ds:(%rsi),%rax
12278 .byte 255,224 // jmpq *%rax
12279 .byte 197,121,214,28,248 // vmovq %xmm11,(%rax,%rdi,8)
12280 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012281 .byte 116,241 // je 366d <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012282 .byte 197,121,23,92,248,8 // vmovhpd %xmm11,0x8(%rax,%rdi,8)
12283 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012284 .byte 114,229 // jb 366d <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012285 .byte 197,121,214,84,248,16 // vmovq %xmm10,0x10(%rax,%rdi,8)
Mike Klein5d7f2b52017-05-20 13:21:59 -040012286 .byte 116,221 // je 366d <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012287 .byte 197,121,23,84,248,24 // vmovhpd %xmm10,0x18(%rax,%rdi,8)
12288 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012289 .byte 114,209 // jb 366d <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012290 .byte 197,121,214,76,248,32 // vmovq %xmm9,0x20(%rax,%rdi,8)
Mike Klein5d7f2b52017-05-20 13:21:59 -040012291 .byte 116,201 // je 366d <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012292 .byte 197,121,23,76,248,40 // vmovhpd %xmm9,0x28(%rax,%rdi,8)
12293 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012294 .byte 114,189 // jb 366d <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012295 .byte 197,121,214,68,248,48 // vmovq %xmm8,0x30(%rax,%rdi,8)
Mike Klein5d7f2b52017-05-20 13:21:59 -040012296 .byte 235,181 // jmp 366d <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012297
Mike Klein3146bb92017-04-05 14:45:02 -040012298HIDDEN _sk_load_u16_be_hsw
12299.globl _sk_load_u16_be_hsw
Mike Klein86714282017-04-13 17:37:38 -040012300FUNCTION(_sk_load_u16_be_hsw)
Mike Klein3146bb92017-04-05 14:45:02 -040012301_sk_load_u16_be_hsw:
12302 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3821732017-04-17 10:58:05 -040012303 .byte 76,139,0 // mov (%rax),%r8
12304 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
Mike Klein3146bb92017-04-05 14:45:02 -040012305 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012306 .byte 15,133,204,0,0,0 // jne 379a <_sk_load_u16_be_hsw+0xe2>
Mike Kleinb3821732017-04-17 10:58:05 -040012307 .byte 196,65,121,16,4,64 // vmovupd (%r8,%rax,2),%xmm8
12308 .byte 196,193,121,16,84,64,16 // vmovupd 0x10(%r8,%rax,2),%xmm2
12309 .byte 196,193,121,16,92,64,32 // vmovupd 0x20(%r8,%rax,2),%xmm3
12310 .byte 196,65,122,111,76,64,48 // vmovdqu 0x30(%r8,%rax,2),%xmm9
Mike Klein3146bb92017-04-05 14:45:02 -040012311 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
12312 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
12313 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
12314 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
12315 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
12316 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
12317 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
12318 .byte 197,113,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm11
Mike Klein3146bb92017-04-05 14:45:02 -040012319 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
12320 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
12321 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
12322 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
12323 .byte 196,226,125,51,192 // vpmovzxwd %xmm0,%ymm0
12324 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040012325 .byte 196,98,125,24,21,69,20,0,0 // vbroadcastss 0x1445(%rip),%ymm10 # 4b74 <_sk_callback_hsw+0x427>
Mike Kleinfe560a82017-05-01 12:56:35 -040012326 .byte 196,193,124,89,194 // vmulps %ymm10,%ymm0,%ymm0
Mike Klein3146bb92017-04-05 14:45:02 -040012327 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
12328 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
12329 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
12330 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
12331 .byte 196,226,125,51,201 // vpmovzxwd %xmm1,%ymm1
12332 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040012333 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
Mike Klein3146bb92017-04-05 14:45:02 -040012334 .byte 196,193,49,108,211 // vpunpcklqdq %xmm11,%xmm9,%xmm2
12335 .byte 197,225,113,242,8 // vpsllw $0x8,%xmm2,%xmm3
12336 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
12337 .byte 197,225,235,210 // vpor %xmm2,%xmm3,%xmm2
12338 .byte 196,226,125,51,210 // vpmovzxwd %xmm2,%ymm2
12339 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040012340 .byte 196,193,108,89,210 // vmulps %ymm10,%ymm2,%ymm2
Mike Klein3146bb92017-04-05 14:45:02 -040012341 .byte 196,193,49,109,219 // vpunpckhqdq %xmm11,%xmm9,%xmm3
12342 .byte 197,185,113,243,8 // vpsllw $0x8,%xmm3,%xmm8
12343 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
12344 .byte 197,185,235,219 // vpor %xmm3,%xmm8,%xmm3
12345 .byte 196,226,125,51,219 // vpmovzxwd %xmm3,%ymm3
12346 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040012347 .byte 196,193,100,89,218 // vmulps %ymm10,%ymm3,%ymm3
Mike Klein3146bb92017-04-05 14:45:02 -040012348 .byte 72,173 // lods %ds:(%rsi),%rax
12349 .byte 255,224 // jmpq *%rax
Mike Kleinb3821732017-04-17 10:58:05 -040012350 .byte 196,65,123,16,4,64 // vmovsd (%r8,%rax,2),%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040012351 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
12352 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012353 .byte 116,85 // je 3800 <_sk_load_u16_be_hsw+0x148>
Mike Kleinb3821732017-04-17 10:58:05 -040012354 .byte 196,65,57,22,68,64,8 // vmovhpd 0x8(%r8,%rax,2),%xmm8,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040012355 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012356 .byte 114,72 // jb 3800 <_sk_load_u16_be_hsw+0x148>
Mike Kleinb3821732017-04-17 10:58:05 -040012357 .byte 196,193,123,16,84,64,16 // vmovsd 0x10(%r8,%rax,2),%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040012358 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012359 .byte 116,72 // je 380d <_sk_load_u16_be_hsw+0x155>
Mike Kleinb3821732017-04-17 10:58:05 -040012360 .byte 196,193,105,22,84,64,24 // vmovhpd 0x18(%r8,%rax,2),%xmm2,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040012361 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012362 .byte 114,59 // jb 380d <_sk_load_u16_be_hsw+0x155>
Mike Kleinb3821732017-04-17 10:58:05 -040012363 .byte 196,193,123,16,92,64,32 // vmovsd 0x20(%r8,%rax,2),%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040012364 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012365 .byte 15,132,6,255,255,255 // je 36e9 <_sk_load_u16_be_hsw+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040012366 .byte 196,193,97,22,92,64,40 // vmovhpd 0x28(%r8,%rax,2),%xmm3,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040012367 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012368 .byte 15,130,245,254,255,255 // jb 36e9 <_sk_load_u16_be_hsw+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040012369 .byte 196,65,122,126,76,64,48 // vmovq 0x30(%r8,%rax,2),%xmm9
Mike Klein5d7f2b52017-05-20 13:21:59 -040012370 .byte 233,233,254,255,255 // jmpq 36e9 <_sk_load_u16_be_hsw+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040012371 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
12372 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Klein5d7f2b52017-05-20 13:21:59 -040012373 .byte 233,220,254,255,255 // jmpq 36e9 <_sk_load_u16_be_hsw+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040012374 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Mike Klein5d7f2b52017-05-20 13:21:59 -040012375 .byte 233,211,254,255,255 // jmpq 36e9 <_sk_load_u16_be_hsw+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040012376
12377HIDDEN _sk_load_rgb_u16_be_hsw
12378.globl _sk_load_rgb_u16_be_hsw
12379FUNCTION(_sk_load_rgb_u16_be_hsw)
12380_sk_load_rgb_u16_be_hsw:
12381 .byte 72,173 // lods %ds:(%rsi),%rax
12382 .byte 76,139,0 // mov (%rax),%r8
12383 .byte 72,141,4,127 // lea (%rdi,%rdi,2),%rax
12384 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012385 .byte 15,133,204,0,0,0 // jne 38f4 <_sk_load_rgb_u16_be_hsw+0xde>
Mike Kleinb3821732017-04-17 10:58:05 -040012386 .byte 196,193,122,111,4,64 // vmovdqu (%r8,%rax,2),%xmm0
12387 .byte 196,193,122,111,84,64,12 // vmovdqu 0xc(%r8,%rax,2),%xmm2
12388 .byte 196,193,122,111,76,64,24 // vmovdqu 0x18(%r8,%rax,2),%xmm1
12389 .byte 196,193,122,111,92,64,32 // vmovdqu 0x20(%r8,%rax,2),%xmm3
12390 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
12391 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
12392 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
12393 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
12394 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
12395 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
12396 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
12397 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
12398 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
12399 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
12400 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
12401 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
12402 .byte 197,241,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm3
Mike Kleinb3821732017-04-17 10:58:05 -040012403 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
12404 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
12405 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
12406 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
12407 .byte 196,226,125,51,192 // vpmovzxwd %xmm0,%ymm0
12408 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040012409 .byte 196,98,125,24,21,214,18,0,0 // vbroadcastss 0x12d6(%rip),%ymm10 # 4b78 <_sk_callback_hsw+0x42b>
Mike Kleinfe560a82017-05-01 12:56:35 -040012410 .byte 196,193,124,89,194 // vmulps %ymm10,%ymm0,%ymm0
Mike Kleinb3821732017-04-17 10:58:05 -040012411 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
12412 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
12413 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
12414 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
12415 .byte 196,226,125,51,201 // vpmovzxwd %xmm1,%ymm1
12416 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040012417 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
Mike Kleinb3821732017-04-17 10:58:05 -040012418 .byte 197,177,108,211 // vpunpcklqdq %xmm3,%xmm9,%xmm2
12419 .byte 197,225,113,242,8 // vpsllw $0x8,%xmm2,%xmm3
12420 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
12421 .byte 197,225,235,210 // vpor %xmm2,%xmm3,%xmm2
12422 .byte 196,226,125,51,210 // vpmovzxwd %xmm2,%ymm2
12423 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040012424 .byte 196,193,108,89,210 // vmulps %ymm10,%ymm2,%ymm2
Mike Kleinb3821732017-04-17 10:58:05 -040012425 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040012426 .byte 196,226,125,24,29,138,18,0,0 // vbroadcastss 0x128a(%rip),%ymm3 # 4b7c <_sk_callback_hsw+0x42f>
Mike Kleinb3821732017-04-17 10:58:05 -040012427 .byte 255,224 // jmpq *%rax
12428 .byte 196,193,121,110,4,64 // vmovd (%r8,%rax,2),%xmm0
12429 .byte 196,193,121,196,68,64,4,2 // vpinsrw $0x2,0x4(%r8,%rax,2),%xmm0,%xmm0
12430 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012431 .byte 117,5 // jne 390d <_sk_load_rgb_u16_be_hsw+0xf7>
12432 .byte 233,79,255,255,255 // jmpq 385c <_sk_load_rgb_u16_be_hsw+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040012433 .byte 196,193,121,110,76,64,6 // vmovd 0x6(%r8,%rax,2),%xmm1
12434 .byte 196,65,113,196,68,64,10,2 // vpinsrw $0x2,0xa(%r8,%rax,2),%xmm1,%xmm8
12435 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012436 .byte 114,26 // jb 393c <_sk_load_rgb_u16_be_hsw+0x126>
Mike Kleinb3821732017-04-17 10:58:05 -040012437 .byte 196,193,121,110,76,64,12 // vmovd 0xc(%r8,%rax,2),%xmm1
12438 .byte 196,193,113,196,84,64,16,2 // vpinsrw $0x2,0x10(%r8,%rax,2),%xmm1,%xmm2
12439 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012440 .byte 117,10 // jne 3941 <_sk_load_rgb_u16_be_hsw+0x12b>
12441 .byte 233,32,255,255,255 // jmpq 385c <_sk_load_rgb_u16_be_hsw+0x46>
12442 .byte 233,27,255,255,255 // jmpq 385c <_sk_load_rgb_u16_be_hsw+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040012443 .byte 196,193,121,110,76,64,18 // vmovd 0x12(%r8,%rax,2),%xmm1
12444 .byte 196,65,113,196,76,64,22,2 // vpinsrw $0x2,0x16(%r8,%rax,2),%xmm1,%xmm9
12445 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012446 .byte 114,26 // jb 3970 <_sk_load_rgb_u16_be_hsw+0x15a>
Mike Kleinb3821732017-04-17 10:58:05 -040012447 .byte 196,193,121,110,76,64,24 // vmovd 0x18(%r8,%rax,2),%xmm1
12448 .byte 196,193,113,196,76,64,28,2 // vpinsrw $0x2,0x1c(%r8,%rax,2),%xmm1,%xmm1
12449 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012450 .byte 117,10 // jne 3975 <_sk_load_rgb_u16_be_hsw+0x15f>
12451 .byte 233,236,254,255,255 // jmpq 385c <_sk_load_rgb_u16_be_hsw+0x46>
12452 .byte 233,231,254,255,255 // jmpq 385c <_sk_load_rgb_u16_be_hsw+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040012453 .byte 196,193,121,110,92,64,30 // vmovd 0x1e(%r8,%rax,2),%xmm3
12454 .byte 196,65,97,196,92,64,34,2 // vpinsrw $0x2,0x22(%r8,%rax,2),%xmm3,%xmm11
12455 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012456 .byte 114,20 // jb 399e <_sk_load_rgb_u16_be_hsw+0x188>
Mike Kleinb3821732017-04-17 10:58:05 -040012457 .byte 196,193,121,110,92,64,36 // vmovd 0x24(%r8,%rax,2),%xmm3
12458 .byte 196,193,97,196,92,64,40,2 // vpinsrw $0x2,0x28(%r8,%rax,2),%xmm3,%xmm3
Mike Klein5d7f2b52017-05-20 13:21:59 -040012459 .byte 233,190,254,255,255 // jmpq 385c <_sk_load_rgb_u16_be_hsw+0x46>
12460 .byte 233,185,254,255,255 // jmpq 385c <_sk_load_rgb_u16_be_hsw+0x46>
Mike Klein3146bb92017-04-05 14:45:02 -040012461
12462HIDDEN _sk_store_u16_be_hsw
12463.globl _sk_store_u16_be_hsw
Mike Klein86714282017-04-13 17:37:38 -040012464FUNCTION(_sk_store_u16_be_hsw)
Mike Klein3146bb92017-04-05 14:45:02 -040012465_sk_store_u16_be_hsw:
12466 .byte 72,173 // lods %ds:(%rsi),%rax
12467 .byte 76,139,0 // mov (%rax),%r8
Mike Kleinfe560a82017-05-01 12:56:35 -040012468 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040012469 .byte 196,98,125,24,5,199,17,0,0 // vbroadcastss 0x11c7(%rip),%ymm8 # 4b80 <_sk_callback_hsw+0x433>
Mike Kleinfe560a82017-05-01 12:56:35 -040012470 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Klein3146bb92017-04-05 14:45:02 -040012471 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
12472 .byte 196,67,125,25,202,1 // vextractf128 $0x1,%ymm9,%xmm10
12473 .byte 196,66,49,43,202 // vpackusdw %xmm10,%xmm9,%xmm9
12474 .byte 196,193,41,113,241,8 // vpsllw $0x8,%xmm9,%xmm10
12475 .byte 196,193,49,113,209,8 // vpsrlw $0x8,%xmm9,%xmm9
12476 .byte 196,65,41,235,201 // vpor %xmm9,%xmm10,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040012477 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Klein3146bb92017-04-05 14:45:02 -040012478 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
12479 .byte 196,67,125,25,211,1 // vextractf128 $0x1,%ymm10,%xmm11
12480 .byte 196,66,41,43,211 // vpackusdw %xmm11,%xmm10,%xmm10
12481 .byte 196,193,33,113,242,8 // vpsllw $0x8,%xmm10,%xmm11
12482 .byte 196,193,41,113,210,8 // vpsrlw $0x8,%xmm10,%xmm10
12483 .byte 196,65,33,235,210 // vpor %xmm10,%xmm11,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040012484 .byte 196,65,108,89,216 // vmulps %ymm8,%ymm2,%ymm11
Mike Klein3146bb92017-04-05 14:45:02 -040012485 .byte 196,65,125,91,219 // vcvtps2dq %ymm11,%ymm11
12486 .byte 196,67,125,25,220,1 // vextractf128 $0x1,%ymm11,%xmm12
12487 .byte 196,66,33,43,220 // vpackusdw %xmm12,%xmm11,%xmm11
12488 .byte 196,193,25,113,243,8 // vpsllw $0x8,%xmm11,%xmm12
12489 .byte 196,193,33,113,211,8 // vpsrlw $0x8,%xmm11,%xmm11
12490 .byte 196,65,25,235,219 // vpor %xmm11,%xmm12,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040012491 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Klein3146bb92017-04-05 14:45:02 -040012492 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
12493 .byte 196,67,125,25,196,1 // vextractf128 $0x1,%ymm8,%xmm12
12494 .byte 196,66,57,43,196 // vpackusdw %xmm12,%xmm8,%xmm8
12495 .byte 196,193,25,113,240,8 // vpsllw $0x8,%xmm8,%xmm12
12496 .byte 196,193,57,113,208,8 // vpsrlw $0x8,%xmm8,%xmm8
12497 .byte 196,65,25,235,192 // vpor %xmm8,%xmm12,%xmm8
12498 .byte 196,65,49,97,226 // vpunpcklwd %xmm10,%xmm9,%xmm12
12499 .byte 196,65,49,105,234 // vpunpckhwd %xmm10,%xmm9,%xmm13
12500 .byte 196,65,33,97,200 // vpunpcklwd %xmm8,%xmm11,%xmm9
12501 .byte 196,65,33,105,192 // vpunpckhwd %xmm8,%xmm11,%xmm8
12502 .byte 196,65,25,98,217 // vpunpckldq %xmm9,%xmm12,%xmm11
12503 .byte 196,65,25,106,209 // vpunpckhdq %xmm9,%xmm12,%xmm10
12504 .byte 196,65,17,98,200 // vpunpckldq %xmm8,%xmm13,%xmm9
12505 .byte 196,65,17,106,192 // vpunpckhdq %xmm8,%xmm13,%xmm8
12506 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012507 .byte 117,31 // jne 3a9d <_sk_store_u16_be_hsw+0xfa>
Mike Kleinfe560a82017-05-01 12:56:35 -040012508 .byte 196,65,120,17,28,64 // vmovups %xmm11,(%r8,%rax,2)
12509 .byte 196,65,120,17,84,64,16 // vmovups %xmm10,0x10(%r8,%rax,2)
12510 .byte 196,65,120,17,76,64,32 // vmovups %xmm9,0x20(%r8,%rax,2)
12511 .byte 196,65,122,127,68,64,48 // vmovdqu %xmm8,0x30(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040012512 .byte 72,173 // lods %ds:(%rsi),%rax
12513 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040012514 .byte 196,65,121,214,28,64 // vmovq %xmm11,(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040012515 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012516 .byte 116,240 // je 3a99 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040012517 .byte 196,65,121,23,92,64,8 // vmovhpd %xmm11,0x8(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040012518 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012519 .byte 114,227 // jb 3a99 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040012520 .byte 196,65,121,214,84,64,16 // vmovq %xmm10,0x10(%r8,%rax,2)
Mike Klein5d7f2b52017-05-20 13:21:59 -040012521 .byte 116,218 // je 3a99 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040012522 .byte 196,65,121,23,84,64,24 // vmovhpd %xmm10,0x18(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040012523 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012524 .byte 114,205 // jb 3a99 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040012525 .byte 196,65,121,214,76,64,32 // vmovq %xmm9,0x20(%r8,%rax,2)
Mike Klein5d7f2b52017-05-20 13:21:59 -040012526 .byte 116,196 // je 3a99 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040012527 .byte 196,65,121,23,76,64,40 // vmovhpd %xmm9,0x28(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040012528 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012529 .byte 114,183 // jb 3a99 <_sk_store_u16_be_hsw+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040012530 .byte 196,65,121,214,68,64,48 // vmovq %xmm8,0x30(%r8,%rax,2)
Mike Klein5d7f2b52017-05-20 13:21:59 -040012531 .byte 235,174 // jmp 3a99 <_sk_store_u16_be_hsw+0xf6>
Mike Klein3146bb92017-04-05 14:45:02 -040012532
Mike Klein14987eb2017-04-06 10:22:26 -040012533HIDDEN _sk_load_f32_hsw
12534.globl _sk_load_f32_hsw
Mike Klein86714282017-04-13 17:37:38 -040012535FUNCTION(_sk_load_f32_hsw)
Mike Klein14987eb2017-04-06 10:22:26 -040012536_sk_load_f32_hsw:
12537 .byte 72,173 // lods %ds:(%rsi),%rax
12538 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012539 .byte 119,110 // ja 3b61 <_sk_load_f32_hsw+0x76>
Mike Klein14987eb2017-04-06 10:22:26 -040012540 .byte 76,139,0 // mov (%rax),%r8
12541 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
Mike Klein5d7f2b52017-05-20 13:21:59 -040012542 .byte 76,141,21,135,0,0,0 // lea 0x87(%rip),%r10 # 3b8c <_sk_load_f32_hsw+0xa1>
Mike Klein14987eb2017-04-06 10:22:26 -040012543 .byte 73,99,4,138 // movslq (%r10,%rcx,4),%rax
12544 .byte 76,1,208 // add %r10,%rax
12545 .byte 255,224 // jmpq *%rax
12546 .byte 196,3,125,24,68,136,112,1 // vinsertf128 $0x1,0x70(%r8,%r9,4),%ymm0,%ymm8
12547 .byte 196,131,125,24,92,136,96,1 // vinsertf128 $0x1,0x60(%r8,%r9,4),%ymm0,%ymm3
12548 .byte 196,131,125,24,76,136,80,1 // vinsertf128 $0x1,0x50(%r8,%r9,4),%ymm0,%ymm1
12549 .byte 196,131,125,24,84,136,64,1 // vinsertf128 $0x1,0x40(%r8,%r9,4),%ymm0,%ymm2
12550 .byte 196,129,121,16,68,136,48 // vmovupd 0x30(%r8,%r9,4),%xmm0
12551 .byte 196,195,125,13,192,12 // vblendpd $0xc,%ymm8,%ymm0,%ymm0
12552 .byte 196,1,121,16,68,136,32 // vmovupd 0x20(%r8,%r9,4),%xmm8
12553 .byte 196,99,61,13,203,12 // vblendpd $0xc,%ymm3,%ymm8,%ymm9
12554 .byte 196,129,121,16,92,136,16 // vmovupd 0x10(%r8,%r9,4),%xmm3
12555 .byte 196,99,101,13,209,12 // vblendpd $0xc,%ymm1,%ymm3,%ymm10
12556 .byte 196,129,121,16,12,136 // vmovupd (%r8,%r9,4),%xmm1
12557 .byte 196,227,117,13,202,12 // vblendpd $0xc,%ymm2,%ymm1,%ymm1
12558 .byte 196,193,116,20,210 // vunpcklps %ymm10,%ymm1,%ymm2
12559 .byte 196,193,116,21,218 // vunpckhps %ymm10,%ymm1,%ymm3
12560 .byte 197,180,20,200 // vunpcklps %ymm0,%ymm9,%ymm1
12561 .byte 197,52,21,192 // vunpckhps %ymm0,%ymm9,%ymm8
12562 .byte 197,237,20,193 // vunpcklpd %ymm1,%ymm2,%ymm0
12563 .byte 197,237,21,201 // vunpckhpd %ymm1,%ymm2,%ymm1
12564 .byte 196,193,101,20,208 // vunpcklpd %ymm8,%ymm3,%ymm2
12565 .byte 196,193,101,21,216 // vunpckhpd %ymm8,%ymm3,%ymm3
12566 .byte 72,173 // lods %ds:(%rsi),%rax
12567 .byte 255,224 // jmpq *%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040012568 .byte 15,31,0 // nopl (%rax)
12569 .byte 130 // (bad)
12570 .byte 255 // (bad)
12571 .byte 255 // (bad)
12572 .byte 255,201 // dec %ecx
Mike Klein14987eb2017-04-06 10:22:26 -040012573 .byte 255 // (bad)
12574 .byte 255 // (bad)
12575 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040012576 .byte 188,255,255,255,175 // mov $0xafffffff,%esp
Mike Klein14987eb2017-04-06 10:22:26 -040012577 .byte 255 // (bad)
12578 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040012579 .byte 255,162,255,255,255,154 // jmpq *-0x65000001(%rdx)
Mike Klein14987eb2017-04-06 10:22:26 -040012580 .byte 255 // (bad)
Mike Kleinb3821732017-04-17 10:58:05 -040012581 .byte 255 // (bad)
Mike Klein0aa742f2017-04-27 13:36:57 -040012582 .byte 255,146,255,255,255,138 // callq *-0x75000001(%rdx)
Mike Kleinb3821732017-04-17 10:58:05 -040012583 .byte 255 // (bad)
Mike Klein14987eb2017-04-06 10:22:26 -040012584 .byte 255 // (bad)
12585 .byte 255 // .byte 0xff
12586
Mike Klein7c4af542017-03-29 18:21:14 -040012587HIDDEN _sk_store_f32_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012588.globl _sk_store_f32_hsw
Mike Klein86714282017-04-13 17:37:38 -040012589FUNCTION(_sk_store_f32_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012590_sk_store_f32_hsw:
12591 .byte 72,173 // lods %ds:(%rsi),%rax
12592 .byte 76,139,0 // mov (%rax),%r8
12593 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
12594 .byte 197,124,20,193 // vunpcklps %ymm1,%ymm0,%ymm8
12595 .byte 197,124,21,217 // vunpckhps %ymm1,%ymm0,%ymm11
12596 .byte 197,108,20,203 // vunpcklps %ymm3,%ymm2,%ymm9
12597 .byte 197,108,21,227 // vunpckhps %ymm3,%ymm2,%ymm12
12598 .byte 196,65,61,20,209 // vunpcklpd %ymm9,%ymm8,%ymm10
12599 .byte 196,65,61,21,201 // vunpckhpd %ymm9,%ymm8,%ymm9
12600 .byte 196,65,37,20,196 // vunpcklpd %ymm12,%ymm11,%ymm8
12601 .byte 196,65,37,21,220 // vunpckhpd %ymm12,%ymm11,%ymm11
12602 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012603 .byte 117,55 // jne 3c19 <_sk_store_f32_hsw+0x6d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012604 .byte 196,67,45,24,225,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm12
12605 .byte 196,67,61,24,235,1 // vinsertf128 $0x1,%xmm11,%ymm8,%ymm13
12606 .byte 196,67,45,6,201,49 // vperm2f128 $0x31,%ymm9,%ymm10,%ymm9
12607 .byte 196,67,61,6,195,49 // vperm2f128 $0x31,%ymm11,%ymm8,%ymm8
12608 .byte 196,65,125,17,36,128 // vmovupd %ymm12,(%r8,%rax,4)
12609 .byte 196,65,125,17,108,128,32 // vmovupd %ymm13,0x20(%r8,%rax,4)
12610 .byte 196,65,125,17,76,128,64 // vmovupd %ymm9,0x40(%r8,%rax,4)
12611 .byte 196,65,125,17,68,128,96 // vmovupd %ymm8,0x60(%r8,%rax,4)
12612 .byte 72,173 // lods %ds:(%rsi),%rax
12613 .byte 255,224 // jmpq *%rax
12614 .byte 196,65,121,17,20,128 // vmovupd %xmm10,(%r8,%rax,4)
12615 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012616 .byte 116,240 // je 3c15 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012617 .byte 196,65,121,17,76,128,16 // vmovupd %xmm9,0x10(%r8,%rax,4)
12618 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012619 .byte 114,227 // jb 3c15 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012620 .byte 196,65,121,17,68,128,32 // vmovupd %xmm8,0x20(%r8,%rax,4)
Mike Klein5d7f2b52017-05-20 13:21:59 -040012621 .byte 116,218 // je 3c15 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012622 .byte 196,65,121,17,92,128,48 // vmovupd %xmm11,0x30(%r8,%rax,4)
12623 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012624 .byte 114,205 // jb 3c15 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012625 .byte 196,67,125,25,84,128,64,1 // vextractf128 $0x1,%ymm10,0x40(%r8,%rax,4)
Mike Klein5d7f2b52017-05-20 13:21:59 -040012626 .byte 116,195 // je 3c15 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012627 .byte 196,67,125,25,76,128,80,1 // vextractf128 $0x1,%ymm9,0x50(%r8,%rax,4)
12628 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040012629 .byte 114,181 // jb 3c15 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012630 .byte 196,67,125,25,68,128,96,1 // vextractf128 $0x1,%ymm8,0x60(%r8,%rax,4)
Mike Klein5d7f2b52017-05-20 13:21:59 -040012631 .byte 235,171 // jmp 3c15 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040012632
Mike Klein7c4af542017-03-29 18:21:14 -040012633HIDDEN _sk_clamp_x_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012634.globl _sk_clamp_x_hsw
Mike Klein86714282017-04-13 17:37:38 -040012635FUNCTION(_sk_clamp_x_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012636_sk_clamp_x_hsw:
12637 .byte 72,173 // lods %ds:(%rsi),%rax
12638 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
12639 .byte 197,188,95,192 // vmaxps %ymm0,%ymm8,%ymm0
Mike Kleinfc84dc52017-05-11 15:29:31 -040012640 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040012641 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
12642 .byte 72,173 // lods %ds:(%rsi),%rax
12643 .byte 255,224 // jmpq *%rax
12644
Mike Klein7c4af542017-03-29 18:21:14 -040012645HIDDEN _sk_clamp_y_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012646.globl _sk_clamp_y_hsw
Mike Klein86714282017-04-13 17:37:38 -040012647FUNCTION(_sk_clamp_y_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012648_sk_clamp_y_hsw:
12649 .byte 72,173 // lods %ds:(%rsi),%rax
12650 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
12651 .byte 197,188,95,201 // vmaxps %ymm1,%ymm8,%ymm1
Mike Kleinfc84dc52017-05-11 15:29:31 -040012652 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040012653 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
12654 .byte 72,173 // lods %ds:(%rsi),%rax
12655 .byte 255,224 // jmpq *%rax
12656
Mike Klein7c4af542017-03-29 18:21:14 -040012657HIDDEN _sk_repeat_x_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012658.globl _sk_repeat_x_hsw
Mike Klein86714282017-04-13 17:37:38 -040012659FUNCTION(_sk_repeat_x_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012660_sk_repeat_x_hsw:
12661 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040012662 .byte 196,98,125,24,8 // vbroadcastss (%rax),%ymm9
12663 .byte 196,65,124,94,193 // vdivps %ymm9,%ymm0,%ymm8
12664 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
12665 .byte 196,98,53,172,192 // vfnmadd213ps %ymm0,%ymm9,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040012666 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040012667 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040012668 .byte 255,224 // jmpq *%rax
12669
Mike Klein7c4af542017-03-29 18:21:14 -040012670HIDDEN _sk_repeat_y_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012671.globl _sk_repeat_y_hsw
Mike Klein86714282017-04-13 17:37:38 -040012672FUNCTION(_sk_repeat_y_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012673_sk_repeat_y_hsw:
12674 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040012675 .byte 196,98,125,24,8 // vbroadcastss (%rax),%ymm9
12676 .byte 196,65,116,94,193 // vdivps %ymm9,%ymm1,%ymm8
12677 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
12678 .byte 196,98,53,172,193 // vfnmadd213ps %ymm1,%ymm9,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040012679 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040012680 .byte 197,124,41,193 // vmovaps %ymm8,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040012681 .byte 255,224 // jmpq *%rax
12682
Mike Klein7c4af542017-03-29 18:21:14 -040012683HIDDEN _sk_mirror_x_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012684.globl _sk_mirror_x_hsw
Mike Klein86714282017-04-13 17:37:38 -040012685FUNCTION(_sk_mirror_x_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012686_sk_mirror_x_hsw:
12687 .byte 72,173 // lods %ds:(%rsi),%rax
12688 .byte 197,122,16,0 // vmovss (%rax),%xmm8
12689 .byte 196,66,125,24,200 // vbroadcastss %xmm8,%ymm9
12690 .byte 196,65,124,92,209 // vsubps %ymm9,%ymm0,%ymm10
12691 .byte 196,193,58,88,192 // vaddss %xmm8,%xmm8,%xmm0
12692 .byte 196,226,125,24,192 // vbroadcastss %xmm0,%ymm0
12693 .byte 197,44,94,192 // vdivps %ymm0,%ymm10,%ymm8
12694 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
12695 .byte 196,66,125,172,194 // vfnmadd213ps %ymm10,%ymm0,%ymm8
12696 .byte 196,193,60,92,193 // vsubps %ymm9,%ymm8,%ymm0
12697 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
12698 .byte 197,60,92,192 // vsubps %ymm0,%ymm8,%ymm8
12699 .byte 197,188,84,192 // vandps %ymm0,%ymm8,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040012700 .byte 72,173 // lods %ds:(%rsi),%rax
12701 .byte 255,224 // jmpq *%rax
12702
Mike Klein7c4af542017-03-29 18:21:14 -040012703HIDDEN _sk_mirror_y_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012704.globl _sk_mirror_y_hsw
Mike Klein86714282017-04-13 17:37:38 -040012705FUNCTION(_sk_mirror_y_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012706_sk_mirror_y_hsw:
12707 .byte 72,173 // lods %ds:(%rsi),%rax
12708 .byte 197,122,16,0 // vmovss (%rax),%xmm8
12709 .byte 196,66,125,24,200 // vbroadcastss %xmm8,%ymm9
12710 .byte 196,65,116,92,209 // vsubps %ymm9,%ymm1,%ymm10
12711 .byte 196,193,58,88,200 // vaddss %xmm8,%xmm8,%xmm1
12712 .byte 196,226,125,24,201 // vbroadcastss %xmm1,%ymm1
12713 .byte 197,44,94,193 // vdivps %ymm1,%ymm10,%ymm8
12714 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
12715 .byte 196,66,117,172,194 // vfnmadd213ps %ymm10,%ymm1,%ymm8
12716 .byte 196,193,60,92,201 // vsubps %ymm9,%ymm8,%ymm1
12717 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
12718 .byte 197,60,92,193 // vsubps %ymm1,%ymm8,%ymm8
12719 .byte 197,188,84,201 // vandps %ymm1,%ymm8,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040012720 .byte 72,173 // lods %ds:(%rsi),%rax
12721 .byte 255,224 // jmpq *%rax
12722
Mike Klein9f85d682017-05-23 07:52:01 -040012723HIDDEN _sk_clamp_x_1_hsw
12724.globl _sk_clamp_x_1_hsw
12725FUNCTION(_sk_clamp_x_1_hsw)
12726_sk_clamp_x_1_hsw:
12727 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
12728 .byte 197,188,95,192 // vmaxps %ymm0,%ymm8,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040012729 .byte 196,98,125,24,5,26,14,0,0 // vbroadcastss 0xe1a(%rip),%ymm8 # 4b84 <_sk_callback_hsw+0x437>
Mike Klein9f85d682017-05-23 07:52:01 -040012730 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
12731 .byte 72,173 // lods %ds:(%rsi),%rax
12732 .byte 255,224 // jmpq *%rax
12733
12734HIDDEN _sk_repeat_x_1_hsw
12735.globl _sk_repeat_x_1_hsw
12736FUNCTION(_sk_repeat_x_1_hsw)
12737_sk_repeat_x_1_hsw:
12738 .byte 196,99,125,8,192,1 // vroundps $0x1,%ymm0,%ymm8
12739 .byte 196,193,124,92,192 // vsubps %ymm8,%ymm0,%ymm0
12740 .byte 72,173 // lods %ds:(%rsi),%rax
12741 .byte 255,224 // jmpq *%rax
12742
12743HIDDEN _sk_mirror_x_1_hsw
12744.globl _sk_mirror_x_1_hsw
12745FUNCTION(_sk_mirror_x_1_hsw)
12746_sk_mirror_x_1_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -040012747 .byte 196,98,125,24,5,253,13,0,0 // vbroadcastss 0xdfd(%rip),%ymm8 # 4b88 <_sk_callback_hsw+0x43b>
Mike Klein9f85d682017-05-23 07:52:01 -040012748 .byte 196,193,124,88,192 // vaddps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040012749 .byte 196,98,125,24,13,243,13,0,0 // vbroadcastss 0xdf3(%rip),%ymm9 # 4b8c <_sk_callback_hsw+0x43f>
Mike Klein9f85d682017-05-23 07:52:01 -040012750 .byte 196,65,124,89,201 // vmulps %ymm9,%ymm0,%ymm9
12751 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
12752 .byte 196,65,52,88,201 // vaddps %ymm9,%ymm9,%ymm9
12753 .byte 196,193,124,92,193 // vsubps %ymm9,%ymm0,%ymm0
12754 .byte 196,193,124,88,192 // vaddps %ymm8,%ymm0,%ymm0
12755 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
12756 .byte 197,60,92,192 // vsubps %ymm0,%ymm8,%ymm8
12757 .byte 197,188,84,192 // vandps %ymm0,%ymm8,%ymm0
12758 .byte 72,173 // lods %ds:(%rsi),%rax
12759 .byte 255,224 // jmpq *%rax
12760
Mike Klein7c4af542017-03-29 18:21:14 -040012761HIDDEN _sk_luminance_to_alpha_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012762.globl _sk_luminance_to_alpha_hsw
Mike Klein86714282017-04-13 17:37:38 -040012763FUNCTION(_sk_luminance_to_alpha_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012764_sk_luminance_to_alpha_hsw:
Mike Klein8ca33562017-05-23 08:07:43 -040012765 .byte 196,226,125,24,29,195,13,0,0 // vbroadcastss 0xdc3(%rip),%ymm3 # 4b90 <_sk_callback_hsw+0x443>
12766 .byte 196,98,125,24,5,190,13,0,0 // vbroadcastss 0xdbe(%rip),%ymm8 # 4b94 <_sk_callback_hsw+0x447>
Mike Kleinfe560a82017-05-01 12:56:35 -040012767 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
12768 .byte 196,226,125,184,203 // vfmadd231ps %ymm3,%ymm0,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040012769 .byte 196,226,125,24,29,175,13,0,0 // vbroadcastss 0xdaf(%rip),%ymm3 # 4b98 <_sk_callback_hsw+0x44b>
Mike Kleinfe560a82017-05-01 12:56:35 -040012770 .byte 196,226,109,168,217 // vfmadd213ps %ymm1,%ymm2,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040012771 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040012772 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040012773 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
12774 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
12775 .byte 255,224 // jmpq *%rax
12776
Mike Klein7c4af542017-03-29 18:21:14 -040012777HIDDEN _sk_matrix_2x3_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012778.globl _sk_matrix_2x3_hsw
Mike Klein86714282017-04-13 17:37:38 -040012779FUNCTION(_sk_matrix_2x3_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012780_sk_matrix_2x3_hsw:
12781 .byte 72,173 // lods %ds:(%rsi),%rax
12782 .byte 196,98,125,24,8 // vbroadcastss (%rax),%ymm9
12783 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
12784 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
12785 .byte 196,66,117,184,194 // vfmadd231ps %ymm10,%ymm1,%ymm8
12786 .byte 196,66,125,184,193 // vfmadd231ps %ymm9,%ymm0,%ymm8
12787 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
12788 .byte 196,98,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm11
12789 .byte 196,98,125,24,72,20 // vbroadcastss 0x14(%rax),%ymm9
12790 .byte 196,66,117,184,203 // vfmadd231ps %ymm11,%ymm1,%ymm9
12791 .byte 196,66,125,184,202 // vfmadd231ps %ymm10,%ymm0,%ymm9
12792 .byte 72,173 // lods %ds:(%rsi),%rax
12793 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
12794 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
12795 .byte 255,224 // jmpq *%rax
12796
Mike Klein7c4af542017-03-29 18:21:14 -040012797HIDDEN _sk_matrix_3x4_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012798.globl _sk_matrix_3x4_hsw
Mike Klein86714282017-04-13 17:37:38 -040012799FUNCTION(_sk_matrix_3x4_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012800_sk_matrix_3x4_hsw:
12801 .byte 72,173 // lods %ds:(%rsi),%rax
12802 .byte 196,98,125,24,8 // vbroadcastss (%rax),%ymm9
12803 .byte 196,98,125,24,80,12 // vbroadcastss 0xc(%rax),%ymm10
12804 .byte 196,98,125,24,88,24 // vbroadcastss 0x18(%rax),%ymm11
12805 .byte 196,98,125,24,64,36 // vbroadcastss 0x24(%rax),%ymm8
12806 .byte 196,66,109,184,195 // vfmadd231ps %ymm11,%ymm2,%ymm8
12807 .byte 196,66,117,184,194 // vfmadd231ps %ymm10,%ymm1,%ymm8
12808 .byte 196,66,125,184,193 // vfmadd231ps %ymm9,%ymm0,%ymm8
12809 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
12810 .byte 196,98,125,24,88,16 // vbroadcastss 0x10(%rax),%ymm11
12811 .byte 196,98,125,24,96,28 // vbroadcastss 0x1c(%rax),%ymm12
12812 .byte 196,98,125,24,72,40 // vbroadcastss 0x28(%rax),%ymm9
12813 .byte 196,66,109,184,204 // vfmadd231ps %ymm12,%ymm2,%ymm9
12814 .byte 196,66,117,184,203 // vfmadd231ps %ymm11,%ymm1,%ymm9
12815 .byte 196,66,125,184,202 // vfmadd231ps %ymm10,%ymm0,%ymm9
12816 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
12817 .byte 196,98,125,24,96,20 // vbroadcastss 0x14(%rax),%ymm12
12818 .byte 196,98,125,24,104,32 // vbroadcastss 0x20(%rax),%ymm13
12819 .byte 196,98,125,24,80,44 // vbroadcastss 0x2c(%rax),%ymm10
12820 .byte 196,66,109,184,213 // vfmadd231ps %ymm13,%ymm2,%ymm10
12821 .byte 196,66,117,184,212 // vfmadd231ps %ymm12,%ymm1,%ymm10
12822 .byte 196,66,125,184,211 // vfmadd231ps %ymm11,%ymm0,%ymm10
12823 .byte 72,173 // lods %ds:(%rsi),%rax
12824 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
12825 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
12826 .byte 197,124,41,210 // vmovaps %ymm10,%ymm2
12827 .byte 255,224 // jmpq *%rax
12828
Mike Klein7c4af542017-03-29 18:21:14 -040012829HIDDEN _sk_matrix_4x5_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012830.globl _sk_matrix_4x5_hsw
Mike Klein86714282017-04-13 17:37:38 -040012831FUNCTION(_sk_matrix_4x5_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012832_sk_matrix_4x5_hsw:
12833 .byte 72,173 // lods %ds:(%rsi),%rax
12834 .byte 196,98,125,24,8 // vbroadcastss (%rax),%ymm9
12835 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
12836 .byte 196,98,125,24,88,32 // vbroadcastss 0x20(%rax),%ymm11
12837 .byte 196,98,125,24,96,48 // vbroadcastss 0x30(%rax),%ymm12
12838 .byte 196,98,125,24,64,64 // vbroadcastss 0x40(%rax),%ymm8
12839 .byte 196,66,101,184,196 // vfmadd231ps %ymm12,%ymm3,%ymm8
12840 .byte 196,66,109,184,195 // vfmadd231ps %ymm11,%ymm2,%ymm8
12841 .byte 196,66,117,184,194 // vfmadd231ps %ymm10,%ymm1,%ymm8
12842 .byte 196,66,125,184,193 // vfmadd231ps %ymm9,%ymm0,%ymm8
12843 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
12844 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
12845 .byte 196,98,125,24,96,36 // vbroadcastss 0x24(%rax),%ymm12
12846 .byte 196,98,125,24,104,52 // vbroadcastss 0x34(%rax),%ymm13
12847 .byte 196,98,125,24,72,68 // vbroadcastss 0x44(%rax),%ymm9
12848 .byte 196,66,101,184,205 // vfmadd231ps %ymm13,%ymm3,%ymm9
12849 .byte 196,66,109,184,204 // vfmadd231ps %ymm12,%ymm2,%ymm9
12850 .byte 196,66,117,184,203 // vfmadd231ps %ymm11,%ymm1,%ymm9
12851 .byte 196,66,125,184,202 // vfmadd231ps %ymm10,%ymm0,%ymm9
12852 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
12853 .byte 196,98,125,24,96,24 // vbroadcastss 0x18(%rax),%ymm12
12854 .byte 196,98,125,24,104,40 // vbroadcastss 0x28(%rax),%ymm13
12855 .byte 196,98,125,24,112,56 // vbroadcastss 0x38(%rax),%ymm14
12856 .byte 196,98,125,24,80,72 // vbroadcastss 0x48(%rax),%ymm10
12857 .byte 196,66,101,184,214 // vfmadd231ps %ymm14,%ymm3,%ymm10
12858 .byte 196,66,109,184,213 // vfmadd231ps %ymm13,%ymm2,%ymm10
12859 .byte 196,66,117,184,212 // vfmadd231ps %ymm12,%ymm1,%ymm10
12860 .byte 196,66,125,184,211 // vfmadd231ps %ymm11,%ymm0,%ymm10
12861 .byte 196,98,125,24,96,12 // vbroadcastss 0xc(%rax),%ymm12
12862 .byte 196,98,125,24,104,28 // vbroadcastss 0x1c(%rax),%ymm13
12863 .byte 196,98,125,24,112,44 // vbroadcastss 0x2c(%rax),%ymm14
12864 .byte 196,98,125,24,120,60 // vbroadcastss 0x3c(%rax),%ymm15
12865 .byte 196,98,125,24,88,76 // vbroadcastss 0x4c(%rax),%ymm11
12866 .byte 196,66,101,184,223 // vfmadd231ps %ymm15,%ymm3,%ymm11
12867 .byte 196,66,109,184,222 // vfmadd231ps %ymm14,%ymm2,%ymm11
12868 .byte 196,66,117,184,221 // vfmadd231ps %ymm13,%ymm1,%ymm11
12869 .byte 196,66,125,184,220 // vfmadd231ps %ymm12,%ymm0,%ymm11
12870 .byte 72,173 // lods %ds:(%rsi),%rax
12871 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
12872 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
12873 .byte 197,124,41,210 // vmovaps %ymm10,%ymm2
12874 .byte 197,124,41,219 // vmovaps %ymm11,%ymm3
12875 .byte 255,224 // jmpq *%rax
12876
Mike Reed02640952017-05-19 15:32:13 -040012877HIDDEN _sk_matrix_4x3_hsw
12878.globl _sk_matrix_4x3_hsw
12879FUNCTION(_sk_matrix_4x3_hsw)
12880_sk_matrix_4x3_hsw:
12881 .byte 72,173 // lods %ds:(%rsi),%rax
12882 .byte 196,226,125,24,16 // vbroadcastss (%rax),%ymm2
12883 .byte 196,226,125,24,88,16 // vbroadcastss 0x10(%rax),%ymm3
12884 .byte 196,98,125,24,64,32 // vbroadcastss 0x20(%rax),%ymm8
12885 .byte 196,98,117,184,195 // vfmadd231ps %ymm3,%ymm1,%ymm8
12886 .byte 196,98,125,184,194 // vfmadd231ps %ymm2,%ymm0,%ymm8
12887 .byte 196,226,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm2
12888 .byte 196,226,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm3
12889 .byte 196,98,125,24,72,36 // vbroadcastss 0x24(%rax),%ymm9
12890 .byte 196,98,117,184,203 // vfmadd231ps %ymm3,%ymm1,%ymm9
12891 .byte 196,98,125,184,202 // vfmadd231ps %ymm2,%ymm0,%ymm9
12892 .byte 196,226,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm3
12893 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
12894 .byte 196,226,125,24,80,40 // vbroadcastss 0x28(%rax),%ymm2
12895 .byte 196,194,117,184,210 // vfmadd231ps %ymm10,%ymm1,%ymm2
12896 .byte 196,226,125,184,211 // vfmadd231ps %ymm3,%ymm0,%ymm2
12897 .byte 196,98,125,24,80,12 // vbroadcastss 0xc(%rax),%ymm10
12898 .byte 196,98,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm11
12899 .byte 196,226,125,24,88,44 // vbroadcastss 0x2c(%rax),%ymm3
12900 .byte 196,194,117,184,219 // vfmadd231ps %ymm11,%ymm1,%ymm3
12901 .byte 196,194,125,184,218 // vfmadd231ps %ymm10,%ymm0,%ymm3
12902 .byte 72,173 // lods %ds:(%rsi),%rax
12903 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
12904 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
12905 .byte 255,224 // jmpq *%rax
12906
Mike Klein7c4af542017-03-29 18:21:14 -040012907HIDDEN _sk_matrix_perspective_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040012908.globl _sk_matrix_perspective_hsw
Mike Klein86714282017-04-13 17:37:38 -040012909FUNCTION(_sk_matrix_perspective_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012910_sk_matrix_perspective_hsw:
12911 .byte 72,173 // lods %ds:(%rsi),%rax
12912 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
12913 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
12914 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
12915 .byte 196,66,117,184,209 // vfmadd231ps %ymm9,%ymm1,%ymm10
12916 .byte 196,66,125,184,208 // vfmadd231ps %ymm8,%ymm0,%ymm10
12917 .byte 196,98,125,24,64,12 // vbroadcastss 0xc(%rax),%ymm8
12918 .byte 196,98,125,24,72,16 // vbroadcastss 0x10(%rax),%ymm9
12919 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
12920 .byte 196,66,117,184,217 // vfmadd231ps %ymm9,%ymm1,%ymm11
12921 .byte 196,66,125,184,216 // vfmadd231ps %ymm8,%ymm0,%ymm11
12922 .byte 196,98,125,24,64,24 // vbroadcastss 0x18(%rax),%ymm8
12923 .byte 196,98,125,24,72,28 // vbroadcastss 0x1c(%rax),%ymm9
12924 .byte 196,98,125,24,96,32 // vbroadcastss 0x20(%rax),%ymm12
12925 .byte 196,66,117,184,225 // vfmadd231ps %ymm9,%ymm1,%ymm12
12926 .byte 196,66,125,184,224 // vfmadd231ps %ymm8,%ymm0,%ymm12
12927 .byte 196,193,124,83,204 // vrcpps %ymm12,%ymm1
12928 .byte 197,172,89,193 // vmulps %ymm1,%ymm10,%ymm0
12929 .byte 197,164,89,201 // vmulps %ymm1,%ymm11,%ymm1
12930 .byte 72,173 // lods %ds:(%rsi),%rax
12931 .byte 255,224 // jmpq *%rax
12932
Herb Derby4de13042017-05-15 10:49:39 -040012933HIDDEN _sk_evenly_spaced_gradient_hsw
12934.globl _sk_evenly_spaced_gradient_hsw
12935FUNCTION(_sk_evenly_spaced_gradient_hsw)
12936_sk_evenly_spaced_gradient_hsw:
12937 .byte 72,173 // lods %ds:(%rsi),%rax
12938 .byte 76,139,8 // mov (%rax),%r9
12939 .byte 76,139,64,8 // mov 0x8(%rax),%r8
12940 .byte 77,137,202 // mov %r9,%r10
12941 .byte 73,255,202 // dec %r10
Mike Klein8ca33562017-05-23 08:07:43 -040012942 .byte 120,7 // js 40a1 <_sk_evenly_spaced_gradient_hsw+0x18>
Herb Derby4de13042017-05-15 10:49:39 -040012943 .byte 196,193,242,42,202 // vcvtsi2ss %r10,%xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040012944 .byte 235,22 // jmp 40b7 <_sk_evenly_spaced_gradient_hsw+0x2e>
Herb Derby4de13042017-05-15 10:49:39 -040012945 .byte 77,137,211 // mov %r10,%r11
12946 .byte 73,209,235 // shr %r11
12947 .byte 65,131,226,1 // and $0x1,%r10d
12948 .byte 77,9,218 // or %r11,%r10
12949 .byte 196,193,242,42,202 // vcvtsi2ss %r10,%xmm1,%xmm1
12950 .byte 197,242,88,201 // vaddss %xmm1,%xmm1,%xmm1
12951 .byte 196,226,125,24,201 // vbroadcastss %xmm1,%ymm1
12952 .byte 197,244,89,200 // vmulps %ymm0,%ymm1,%ymm1
12953 .byte 197,126,91,217 // vcvttps2dq %ymm1,%ymm11
12954 .byte 73,131,249,8 // cmp $0x8,%r9
Mike Klein8ca33562017-05-23 08:07:43 -040012955 .byte 119,70 // ja 4110 <_sk_evenly_spaced_gradient_hsw+0x87>
Herb Derby4de13042017-05-15 10:49:39 -040012956 .byte 196,66,37,22,0 // vpermps (%r8),%ymm11,%ymm8
12957 .byte 76,139,64,40 // mov 0x28(%rax),%r8
12958 .byte 196,66,37,22,8 // vpermps (%r8),%ymm11,%ymm9
12959 .byte 76,139,64,16 // mov 0x10(%rax),%r8
12960 .byte 76,139,72,24 // mov 0x18(%rax),%r9
12961 .byte 196,194,37,22,8 // vpermps (%r8),%ymm11,%ymm1
12962 .byte 76,139,64,48 // mov 0x30(%rax),%r8
12963 .byte 196,66,37,22,16 // vpermps (%r8),%ymm11,%ymm10
12964 .byte 196,194,37,22,17 // vpermps (%r9),%ymm11,%ymm2
12965 .byte 76,139,64,56 // mov 0x38(%rax),%r8
12966 .byte 196,66,37,22,32 // vpermps (%r8),%ymm11,%ymm12
12967 .byte 76,139,64,32 // mov 0x20(%rax),%r8
12968 .byte 196,194,37,22,24 // vpermps (%r8),%ymm11,%ymm3
12969 .byte 72,139,64,64 // mov 0x40(%rax),%rax
12970 .byte 196,98,37,22,40 // vpermps (%rax),%ymm11,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040012971 .byte 235,110 // jmp 417e <_sk_evenly_spaced_gradient_hsw+0xf5>
Herb Derby4de13042017-05-15 10:49:39 -040012972 .byte 196,65,13,118,246 // vpcmpeqd %ymm14,%ymm14,%ymm14
12973 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
12974 .byte 196,2,117,146,4,152 // vgatherdps %ymm1,(%r8,%ymm11,4),%ymm8
12975 .byte 76,139,64,40 // mov 0x28(%rax),%r8
12976 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
12977 .byte 196,2,117,146,12,152 // vgatherdps %ymm1,(%r8,%ymm11,4),%ymm9
12978 .byte 76,139,64,16 // mov 0x10(%rax),%r8
12979 .byte 76,139,72,24 // mov 0x18(%rax),%r9
12980 .byte 197,237,118,210 // vpcmpeqd %ymm2,%ymm2,%ymm2
12981 .byte 196,130,109,146,12,152 // vgatherdps %ymm2,(%r8,%ymm11,4),%ymm1
12982 .byte 76,139,64,48 // mov 0x30(%rax),%r8
12983 .byte 197,237,118,210 // vpcmpeqd %ymm2,%ymm2,%ymm2
12984 .byte 196,2,109,146,20,152 // vgatherdps %ymm2,(%r8,%ymm11,4),%ymm10
12985 .byte 197,229,118,219 // vpcmpeqd %ymm3,%ymm3,%ymm3
12986 .byte 196,130,101,146,20,153 // vgatherdps %ymm3,(%r9,%ymm11,4),%ymm2
12987 .byte 76,139,64,56 // mov 0x38(%rax),%r8
12988 .byte 197,229,118,219 // vpcmpeqd %ymm3,%ymm3,%ymm3
12989 .byte 196,2,101,146,36,152 // vgatherdps %ymm3,(%r8,%ymm11,4),%ymm12
12990 .byte 76,139,64,32 // mov 0x20(%rax),%r8
12991 .byte 196,65,21,118,237 // vpcmpeqd %ymm13,%ymm13,%ymm13
12992 .byte 196,130,21,146,28,152 // vgatherdps %ymm13,(%r8,%ymm11,4),%ymm3
12993 .byte 72,139,64,64 // mov 0x40(%rax),%rax
12994 .byte 196,34,13,146,44,152 // vgatherdps %ymm14,(%rax,%ymm11,4),%ymm13
12995 .byte 196,66,125,168,193 // vfmadd213ps %ymm9,%ymm0,%ymm8
12996 .byte 196,194,125,168,202 // vfmadd213ps %ymm10,%ymm0,%ymm1
12997 .byte 196,194,125,168,212 // vfmadd213ps %ymm12,%ymm0,%ymm2
12998 .byte 196,194,125,168,221 // vfmadd213ps %ymm13,%ymm0,%ymm3
12999 .byte 72,173 // lods %ds:(%rsi),%rax
13000 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
13001 .byte 255,224 // jmpq *%rax
13002
Mike Klein5c7960b2017-05-11 10:59:22 -040013003HIDDEN _sk_gradient_hsw
13004.globl _sk_gradient_hsw
13005FUNCTION(_sk_gradient_hsw)
13006_sk_gradient_hsw:
Herb Derby7b4202d2017-04-10 10:52:34 -040013007 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040013008 .byte 76,139,0 // mov (%rax),%r8
Herb Derby4de13042017-05-15 10:49:39 -040013009 .byte 73,131,248,1 // cmp $0x1,%r8
Mike Klein8ca33562017-05-23 08:07:43 -040013010 .byte 15,134,180,0,0,0 // jbe 425d <_sk_gradient_hsw+0xc3>
Herb Derby4de13042017-05-15 10:49:39 -040013011 .byte 76,139,72,72 // mov 0x48(%rax),%r9
Herb Derby7b4202d2017-04-10 10:52:34 -040013012 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
Herb Derby4de13042017-05-15 10:49:39 -040013013 .byte 65,186,1,0,0,0 // mov $0x1,%r10d
Mike Klein8ca33562017-05-23 08:07:43 -040013014 .byte 196,226,125,24,21,220,9,0,0 // vbroadcastss 0x9dc(%rip),%ymm2 # 4b9c <_sk_callback_hsw+0x44f>
Herb Derby4de13042017-05-15 10:49:39 -040013015 .byte 196,65,53,239,201 // vpxor %ymm9,%ymm9,%ymm9
13016 .byte 196,130,125,24,28,145 // vbroadcastss (%r9,%r10,4),%ymm3
13017 .byte 197,228,194,216,2 // vcmpleps %ymm0,%ymm3,%ymm3
13018 .byte 196,227,117,74,218,48 // vblendvps %ymm3,%ymm2,%ymm1,%ymm3
13019 .byte 196,65,101,254,201 // vpaddd %ymm9,%ymm3,%ymm9
13020 .byte 73,255,194 // inc %r10
13021 .byte 77,57,208 // cmp %r10,%r8
Mike Klein8ca33562017-05-23 08:07:43 -040013022 .byte 117,226 // jne 41c5 <_sk_gradient_hsw+0x2b>
Herb Derby4de13042017-05-15 10:49:39 -040013023 .byte 76,139,72,8 // mov 0x8(%rax),%r9
13024 .byte 73,131,248,8 // cmp $0x8,%r8
Mike Klein8ca33562017-05-23 08:07:43 -040013025 .byte 118,121 // jbe 4266 <_sk_gradient_hsw+0xcc>
Herb Derby4de13042017-05-15 10:49:39 -040013026 .byte 196,65,13,118,246 // vpcmpeqd %ymm14,%ymm14,%ymm14
13027 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
13028 .byte 196,2,117,146,4,137 // vgatherdps %ymm1,(%r9,%ymm9,4),%ymm8
13029 .byte 76,139,64,40 // mov 0x28(%rax),%r8
13030 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
13031 .byte 196,2,117,146,20,136 // vgatherdps %ymm1,(%r8,%ymm9,4),%ymm10
13032 .byte 76,139,64,16 // mov 0x10(%rax),%r8
13033 .byte 76,139,72,24 // mov 0x18(%rax),%r9
13034 .byte 197,237,118,210 // vpcmpeqd %ymm2,%ymm2,%ymm2
13035 .byte 196,130,109,146,12,136 // vgatherdps %ymm2,(%r8,%ymm9,4),%ymm1
13036 .byte 76,139,64,48 // mov 0x30(%rax),%r8
13037 .byte 197,237,118,210 // vpcmpeqd %ymm2,%ymm2,%ymm2
13038 .byte 196,2,109,146,28,136 // vgatherdps %ymm2,(%r8,%ymm9,4),%ymm11
13039 .byte 197,229,118,219 // vpcmpeqd %ymm3,%ymm3,%ymm3
13040 .byte 196,130,101,146,20,137 // vgatherdps %ymm3,(%r9,%ymm9,4),%ymm2
13041 .byte 76,139,64,56 // mov 0x38(%rax),%r8
13042 .byte 197,229,118,219 // vpcmpeqd %ymm3,%ymm3,%ymm3
13043 .byte 196,2,101,146,36,136 // vgatherdps %ymm3,(%r8,%ymm9,4),%ymm12
13044 .byte 76,139,64,32 // mov 0x20(%rax),%r8
13045 .byte 196,65,21,118,237 // vpcmpeqd %ymm13,%ymm13,%ymm13
13046 .byte 196,130,21,146,28,136 // vgatherdps %ymm13,(%r8,%ymm9,4),%ymm3
13047 .byte 72,139,64,64 // mov 0x40(%rax),%rax
13048 .byte 196,34,13,146,44,136 // vgatherdps %ymm14,(%rax,%ymm9,4),%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040013049 .byte 235,77 // jmp 42aa <_sk_gradient_hsw+0x110>
Herb Derby4de13042017-05-15 10:49:39 -040013050 .byte 76,139,72,8 // mov 0x8(%rax),%r9
13051 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
13052 .byte 196,66,53,22,1 // vpermps (%r9),%ymm9,%ymm8
13053 .byte 76,139,64,40 // mov 0x28(%rax),%r8
13054 .byte 196,66,53,22,16 // vpermps (%r8),%ymm9,%ymm10
13055 .byte 76,139,64,16 // mov 0x10(%rax),%r8
13056 .byte 76,139,72,24 // mov 0x18(%rax),%r9
13057 .byte 196,194,53,22,8 // vpermps (%r8),%ymm9,%ymm1
13058 .byte 76,139,64,48 // mov 0x30(%rax),%r8
13059 .byte 196,66,53,22,24 // vpermps (%r8),%ymm9,%ymm11
13060 .byte 196,194,53,22,17 // vpermps (%r9),%ymm9,%ymm2
13061 .byte 76,139,64,56 // mov 0x38(%rax),%r8
13062 .byte 196,66,53,22,32 // vpermps (%r8),%ymm9,%ymm12
13063 .byte 76,139,64,32 // mov 0x20(%rax),%r8
13064 .byte 196,194,53,22,24 // vpermps (%r8),%ymm9,%ymm3
13065 .byte 72,139,64,64 // mov 0x40(%rax),%rax
13066 .byte 196,98,53,22,40 // vpermps (%rax),%ymm9,%ymm13
13067 .byte 196,66,125,168,194 // vfmadd213ps %ymm10,%ymm0,%ymm8
Herb Derby7b4202d2017-04-10 10:52:34 -040013068 .byte 196,194,125,168,203 // vfmadd213ps %ymm11,%ymm0,%ymm1
Herb Derby4de13042017-05-15 10:49:39 -040013069 .byte 196,194,125,168,212 // vfmadd213ps %ymm12,%ymm0,%ymm2
13070 .byte 196,194,125,168,221 // vfmadd213ps %ymm13,%ymm0,%ymm3
Herb Derby7b4202d2017-04-10 10:52:34 -040013071 .byte 72,173 // lods %ds:(%rsi),%rax
13072 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
13073 .byte 255,224 // jmpq *%rax
13074
Mike Klein5c7960b2017-05-11 10:59:22 -040013075HIDDEN _sk_evenly_spaced_2_stop_gradient_hsw
13076.globl _sk_evenly_spaced_2_stop_gradient_hsw
13077FUNCTION(_sk_evenly_spaced_2_stop_gradient_hsw)
13078_sk_evenly_spaced_2_stop_gradient_hsw:
Mike Kleind7e06ae2017-03-29 16:33:06 -040013079 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040013080 .byte 196,226,125,24,8 // vbroadcastss (%rax),%ymm1
13081 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040013082 .byte 196,98,125,184,193 // vfmadd231ps %ymm1,%ymm0,%ymm8
Herb Derby7b4202d2017-04-10 10:52:34 -040013083 .byte 196,226,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm2
13084 .byte 196,226,125,24,72,20 // vbroadcastss 0x14(%rax),%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040013085 .byte 196,226,125,184,202 // vfmadd231ps %ymm2,%ymm0,%ymm1
Herb Derby7b4202d2017-04-10 10:52:34 -040013086 .byte 196,226,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm3
13087 .byte 196,226,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040013088 .byte 196,226,125,184,211 // vfmadd231ps %ymm3,%ymm0,%ymm2
Herb Derby7b4202d2017-04-10 10:52:34 -040013089 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
13090 .byte 196,226,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040013091 .byte 196,194,125,184,217 // vfmadd231ps %ymm9,%ymm0,%ymm3
13092 .byte 72,173 // lods %ds:(%rsi),%rax
13093 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
13094 .byte 255,224 // jmpq *%rax
13095
Mike Klein5c7960b2017-05-11 10:59:22 -040013096HIDDEN _sk_xy_to_unit_angle_hsw
13097.globl _sk_xy_to_unit_angle_hsw
13098FUNCTION(_sk_xy_to_unit_angle_hsw)
13099_sk_xy_to_unit_angle_hsw:
Herb Derby7eb86982017-05-02 19:04:39 -040013100 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
13101 .byte 197,60,92,200 // vsubps %ymm0,%ymm8,%ymm9
13102 .byte 197,52,84,200 // vandps %ymm0,%ymm9,%ymm9
13103 .byte 197,60,92,209 // vsubps %ymm1,%ymm8,%ymm10
13104 .byte 197,44,84,209 // vandps %ymm1,%ymm10,%ymm10
13105 .byte 196,65,52,93,218 // vminps %ymm10,%ymm9,%ymm11
13106 .byte 196,65,52,95,226 // vmaxps %ymm10,%ymm9,%ymm12
13107 .byte 196,65,36,94,220 // vdivps %ymm12,%ymm11,%ymm11
13108 .byte 196,65,36,89,227 // vmulps %ymm11,%ymm11,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -040013109 .byte 196,98,125,24,45,91,8,0,0 // vbroadcastss 0x85b(%rip),%ymm13 # 4ba0 <_sk_callback_hsw+0x453>
13110 .byte 196,98,125,24,53,86,8,0,0 // vbroadcastss 0x856(%rip),%ymm14 # 4ba4 <_sk_callback_hsw+0x457>
Herb Derby7eb86982017-05-02 19:04:39 -040013111 .byte 196,66,29,184,245 // vfmadd231ps %ymm13,%ymm12,%ymm14
Mike Klein8ca33562017-05-23 08:07:43 -040013112 .byte 196,98,125,24,45,76,8,0,0 // vbroadcastss 0x84c(%rip),%ymm13 # 4ba8 <_sk_callback_hsw+0x45b>
Herb Derby7eb86982017-05-02 19:04:39 -040013113 .byte 196,66,29,184,238 // vfmadd231ps %ymm14,%ymm12,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040013114 .byte 196,98,125,24,53,66,8,0,0 // vbroadcastss 0x842(%rip),%ymm14 # 4bac <_sk_callback_hsw+0x45f>
Herb Derby7eb86982017-05-02 19:04:39 -040013115 .byte 196,66,29,184,245 // vfmadd231ps %ymm13,%ymm12,%ymm14
13116 .byte 196,65,36,89,222 // vmulps %ymm14,%ymm11,%ymm11
13117 .byte 196,65,52,194,202,1 // vcmpltps %ymm10,%ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040013118 .byte 196,98,125,24,21,45,8,0,0 // vbroadcastss 0x82d(%rip),%ymm10 # 4bb0 <_sk_callback_hsw+0x463>
Herb Derby7eb86982017-05-02 19:04:39 -040013119 .byte 196,65,44,92,211 // vsubps %ymm11,%ymm10,%ymm10
13120 .byte 196,67,37,74,202,144 // vblendvps %ymm9,%ymm10,%ymm11,%ymm9
13121 .byte 196,193,124,194,192,1 // vcmpltps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040013122 .byte 196,98,125,24,21,23,8,0,0 // vbroadcastss 0x817(%rip),%ymm10 # 4bb4 <_sk_callback_hsw+0x467>
Herb Derby7eb86982017-05-02 19:04:39 -040013123 .byte 196,65,44,92,209 // vsubps %ymm9,%ymm10,%ymm10
13124 .byte 196,195,53,74,194,0 // vblendvps %ymm0,%ymm10,%ymm9,%ymm0
13125 .byte 196,65,116,194,200,1 // vcmpltps %ymm8,%ymm1,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040013126 .byte 196,98,125,24,21,1,8,0,0 // vbroadcastss 0x801(%rip),%ymm10 # 4bb8 <_sk_callback_hsw+0x46b>
Herb Derby7eb86982017-05-02 19:04:39 -040013127 .byte 197,44,92,208 // vsubps %ymm0,%ymm10,%ymm10
13128 .byte 196,195,125,74,194,144 // vblendvps %ymm9,%ymm10,%ymm0,%ymm0
13129 .byte 196,65,124,194,200,3 // vcmpunordps %ymm8,%ymm0,%ymm9
13130 .byte 196,195,125,74,192,144 // vblendvps %ymm9,%ymm8,%ymm0,%ymm0
13131 .byte 72,173 // lods %ds:(%rsi),%rax
13132 .byte 255,224 // jmpq *%rax
13133
Herb Derby090fbf82017-05-08 15:10:36 -040013134HIDDEN _sk_xy_to_radius_hsw
13135.globl _sk_xy_to_radius_hsw
13136FUNCTION(_sk_xy_to_radius_hsw)
13137_sk_xy_to_radius_hsw:
13138 .byte 197,116,89,193 // vmulps %ymm1,%ymm1,%ymm8
13139 .byte 196,98,125,184,192 // vfmadd231ps %ymm0,%ymm0,%ymm8
Mike Kleinfd35c742017-05-15 15:55:54 -040013140 .byte 196,193,124,81,192 // vsqrtps %ymm8,%ymm0
Herb Derby090fbf82017-05-08 15:10:36 -040013141 .byte 72,173 // lods %ds:(%rsi),%rax
13142 .byte 255,224 // jmpq *%rax
13143
Mike Klein0a904492017-04-12 12:52:48 -040013144HIDDEN _sk_save_xy_hsw
13145.globl _sk_save_xy_hsw
Mike Klein86714282017-04-13 17:37:38 -040013146FUNCTION(_sk_save_xy_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013147_sk_save_xy_hsw:
13148 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013149 .byte 196,98,125,24,5,206,7,0,0 // vbroadcastss 0x7ce(%rip),%ymm8 # 4bbc <_sk_callback_hsw+0x46f>
Mike Kleinfe560a82017-05-01 12:56:35 -040013150 .byte 196,65,124,88,200 // vaddps %ymm8,%ymm0,%ymm9
Mike Klein0a904492017-04-12 12:52:48 -040013151 .byte 196,67,125,8,209,1 // vroundps $0x1,%ymm9,%ymm10
13152 .byte 196,65,52,92,202 // vsubps %ymm10,%ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040013153 .byte 196,65,116,88,192 // vaddps %ymm8,%ymm1,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040013154 .byte 196,67,125,8,208,1 // vroundps $0x1,%ymm8,%ymm10
13155 .byte 196,65,60,92,194 // vsubps %ymm10,%ymm8,%ymm8
13156 .byte 197,252,17,0 // vmovups %ymm0,(%rax)
13157 .byte 197,252,17,72,32 // vmovups %ymm1,0x20(%rax)
13158 .byte 197,124,17,72,64 // vmovups %ymm9,0x40(%rax)
13159 .byte 197,124,17,64,96 // vmovups %ymm8,0x60(%rax)
13160 .byte 72,173 // lods %ds:(%rsi),%rax
13161 .byte 255,224 // jmpq *%rax
13162
13163HIDDEN _sk_accumulate_hsw
13164.globl _sk_accumulate_hsw
Mike Klein86714282017-04-13 17:37:38 -040013165FUNCTION(_sk_accumulate_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013166_sk_accumulate_hsw:
13167 .byte 72,173 // lods %ds:(%rsi),%rax
13168 .byte 197,124,16,128,128,0,0,0 // vmovups 0x80(%rax),%ymm8
13169 .byte 197,60,89,128,160,0,0,0 // vmulps 0xa0(%rax),%ymm8,%ymm8
13170 .byte 196,226,61,184,224 // vfmadd231ps %ymm0,%ymm8,%ymm4
13171 .byte 196,226,61,184,233 // vfmadd231ps %ymm1,%ymm8,%ymm5
13172 .byte 196,226,61,184,242 // vfmadd231ps %ymm2,%ymm8,%ymm6
13173 .byte 196,98,101,168,199 // vfmadd213ps %ymm7,%ymm3,%ymm8
13174 .byte 72,173 // lods %ds:(%rsi),%rax
13175 .byte 197,124,41,199 // vmovaps %ymm8,%ymm7
13176 .byte 255,224 // jmpq *%rax
13177
13178HIDDEN _sk_bilinear_nx_hsw
13179.globl _sk_bilinear_nx_hsw
Mike Klein86714282017-04-13 17:37:38 -040013180FUNCTION(_sk_bilinear_nx_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013181_sk_bilinear_nx_hsw:
13182 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013183 .byte 196,226,125,24,5,98,7,0,0 // vbroadcastss 0x762(%rip),%ymm0 # 4bc0 <_sk_callback_hsw+0x473>
Mike Klein0a904492017-04-12 12:52:48 -040013184 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040013185 .byte 196,98,125,24,5,89,7,0,0 // vbroadcastss 0x759(%rip),%ymm8 # 4bc4 <_sk_callback_hsw+0x477>
Mike Klein0a904492017-04-12 12:52:48 -040013186 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
13187 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
13188 .byte 72,173 // lods %ds:(%rsi),%rax
13189 .byte 255,224 // jmpq *%rax
13190
13191HIDDEN _sk_bilinear_px_hsw
13192.globl _sk_bilinear_px_hsw
Mike Klein86714282017-04-13 17:37:38 -040013193FUNCTION(_sk_bilinear_px_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013194_sk_bilinear_px_hsw:
13195 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013196 .byte 196,226,125,24,5,65,7,0,0 // vbroadcastss 0x741(%rip),%ymm0 # 4bc8 <_sk_callback_hsw+0x47b>
Mike Klein0a904492017-04-12 12:52:48 -040013197 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
13198 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
13199 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
13200 .byte 72,173 // lods %ds:(%rsi),%rax
13201 .byte 255,224 // jmpq *%rax
13202
13203HIDDEN _sk_bilinear_ny_hsw
13204.globl _sk_bilinear_ny_hsw
Mike Klein86714282017-04-13 17:37:38 -040013205FUNCTION(_sk_bilinear_ny_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013206_sk_bilinear_ny_hsw:
13207 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013208 .byte 196,226,125,24,13,37,7,0,0 // vbroadcastss 0x725(%rip),%ymm1 # 4bcc <_sk_callback_hsw+0x47f>
Mike Klein0a904492017-04-12 12:52:48 -040013209 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040013210 .byte 196,98,125,24,5,27,7,0,0 // vbroadcastss 0x71b(%rip),%ymm8 # 4bd0 <_sk_callback_hsw+0x483>
Mike Klein0a904492017-04-12 12:52:48 -040013211 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
13212 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
13213 .byte 72,173 // lods %ds:(%rsi),%rax
13214 .byte 255,224 // jmpq *%rax
13215
13216HIDDEN _sk_bilinear_py_hsw
13217.globl _sk_bilinear_py_hsw
Mike Klein86714282017-04-13 17:37:38 -040013218FUNCTION(_sk_bilinear_py_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013219_sk_bilinear_py_hsw:
13220 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013221 .byte 196,226,125,24,13,3,7,0,0 // vbroadcastss 0x703(%rip),%ymm1 # 4bd4 <_sk_callback_hsw+0x487>
Mike Klein0a904492017-04-12 12:52:48 -040013222 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
13223 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
13224 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
13225 .byte 72,173 // lods %ds:(%rsi),%rax
13226 .byte 255,224 // jmpq *%rax
13227
13228HIDDEN _sk_bicubic_n3x_hsw
13229.globl _sk_bicubic_n3x_hsw
Mike Klein86714282017-04-13 17:37:38 -040013230FUNCTION(_sk_bicubic_n3x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013231_sk_bicubic_n3x_hsw:
13232 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013233 .byte 196,226,125,24,5,230,6,0,0 // vbroadcastss 0x6e6(%rip),%ymm0 # 4bd8 <_sk_callback_hsw+0x48b>
Mike Klein0a904492017-04-12 12:52:48 -040013234 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040013235 .byte 196,98,125,24,5,221,6,0,0 // vbroadcastss 0x6dd(%rip),%ymm8 # 4bdc <_sk_callback_hsw+0x48f>
Mike Klein0a904492017-04-12 12:52:48 -040013236 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
13237 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040013238 .byte 196,98,125,24,21,206,6,0,0 // vbroadcastss 0x6ce(%rip),%ymm10 # 4be0 <_sk_callback_hsw+0x493>
13239 .byte 196,98,125,24,29,201,6,0,0 // vbroadcastss 0x6c9(%rip),%ymm11 # 4be4 <_sk_callback_hsw+0x497>
Mike Kleinfe560a82017-05-01 12:56:35 -040013240 .byte 196,66,61,168,218 // vfmadd213ps %ymm10,%ymm8,%ymm11
13241 .byte 196,65,36,89,193 // vmulps %ymm9,%ymm11,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040013242 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
13243 .byte 72,173 // lods %ds:(%rsi),%rax
13244 .byte 255,224 // jmpq *%rax
13245
13246HIDDEN _sk_bicubic_n1x_hsw
13247.globl _sk_bicubic_n1x_hsw
Mike Klein86714282017-04-13 17:37:38 -040013248FUNCTION(_sk_bicubic_n1x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013249_sk_bicubic_n1x_hsw:
13250 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013251 .byte 196,226,125,24,5,172,6,0,0 // vbroadcastss 0x6ac(%rip),%ymm0 # 4be8 <_sk_callback_hsw+0x49b>
Mike Klein0a904492017-04-12 12:52:48 -040013252 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040013253 .byte 196,98,125,24,5,163,6,0,0 // vbroadcastss 0x6a3(%rip),%ymm8 # 4bec <_sk_callback_hsw+0x49f>
Mike Klein0a904492017-04-12 12:52:48 -040013254 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040013255 .byte 196,98,125,24,13,153,6,0,0 // vbroadcastss 0x699(%rip),%ymm9 # 4bf0 <_sk_callback_hsw+0x4a3>
13256 .byte 196,98,125,24,21,148,6,0,0 // vbroadcastss 0x694(%rip),%ymm10 # 4bf4 <_sk_callback_hsw+0x4a7>
Mike Kleinfe560a82017-05-01 12:56:35 -040013257 .byte 196,66,61,168,209 // vfmadd213ps %ymm9,%ymm8,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040013258 .byte 196,98,125,24,13,138,6,0,0 // vbroadcastss 0x68a(%rip),%ymm9 # 4bf8 <_sk_callback_hsw+0x4ab>
Mike Klein0a904492017-04-12 12:52:48 -040013259 .byte 196,66,61,184,202 // vfmadd231ps %ymm10,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040013260 .byte 196,98,125,24,21,128,6,0,0 // vbroadcastss 0x680(%rip),%ymm10 # 4bfc <_sk_callback_hsw+0x4af>
Mike Kleinfe560a82017-05-01 12:56:35 -040013261 .byte 196,66,61,184,209 // vfmadd231ps %ymm9,%ymm8,%ymm10
13262 .byte 197,124,17,144,128,0,0,0 // vmovups %ymm10,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040013263 .byte 72,173 // lods %ds:(%rsi),%rax
13264 .byte 255,224 // jmpq *%rax
13265
13266HIDDEN _sk_bicubic_p1x_hsw
13267.globl _sk_bicubic_p1x_hsw
Mike Klein86714282017-04-13 17:37:38 -040013268FUNCTION(_sk_bicubic_p1x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013269_sk_bicubic_p1x_hsw:
13270 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013271 .byte 196,98,125,24,5,104,6,0,0 // vbroadcastss 0x668(%rip),%ymm8 # 4c00 <_sk_callback_hsw+0x4b3>
Mike Klein0a904492017-04-12 12:52:48 -040013272 .byte 197,188,88,0 // vaddps (%rax),%ymm8,%ymm0
13273 .byte 197,124,16,72,64 // vmovups 0x40(%rax),%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040013274 .byte 196,98,125,24,21,90,6,0,0 // vbroadcastss 0x65a(%rip),%ymm10 # 4c04 <_sk_callback_hsw+0x4b7>
13275 .byte 196,98,125,24,29,85,6,0,0 // vbroadcastss 0x655(%rip),%ymm11 # 4c08 <_sk_callback_hsw+0x4bb>
Mike Kleinfe560a82017-05-01 12:56:35 -040013276 .byte 196,66,53,168,218 // vfmadd213ps %ymm10,%ymm9,%ymm11
13277 .byte 196,66,53,168,216 // vfmadd213ps %ymm8,%ymm9,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040013278 .byte 196,98,125,24,5,70,6,0,0 // vbroadcastss 0x646(%rip),%ymm8 # 4c0c <_sk_callback_hsw+0x4bf>
Mike Kleinfe560a82017-05-01 12:56:35 -040013279 .byte 196,66,53,184,195 // vfmadd231ps %ymm11,%ymm9,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040013280 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
13281 .byte 72,173 // lods %ds:(%rsi),%rax
13282 .byte 255,224 // jmpq *%rax
13283
13284HIDDEN _sk_bicubic_p3x_hsw
13285.globl _sk_bicubic_p3x_hsw
Mike Klein86714282017-04-13 17:37:38 -040013286FUNCTION(_sk_bicubic_p3x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013287_sk_bicubic_p3x_hsw:
13288 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013289 .byte 196,226,125,24,5,46,6,0,0 // vbroadcastss 0x62e(%rip),%ymm0 # 4c10 <_sk_callback_hsw+0x4c3>
Mike Klein0a904492017-04-12 12:52:48 -040013290 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
13291 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
13292 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040013293 .byte 196,98,125,24,21,27,6,0,0 // vbroadcastss 0x61b(%rip),%ymm10 # 4c14 <_sk_callback_hsw+0x4c7>
13294 .byte 196,98,125,24,29,22,6,0,0 // vbroadcastss 0x616(%rip),%ymm11 # 4c18 <_sk_callback_hsw+0x4cb>
Mike Kleinfe560a82017-05-01 12:56:35 -040013295 .byte 196,66,61,168,218 // vfmadd213ps %ymm10,%ymm8,%ymm11
13296 .byte 196,65,52,89,195 // vmulps %ymm11,%ymm9,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040013297 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
13298 .byte 72,173 // lods %ds:(%rsi),%rax
13299 .byte 255,224 // jmpq *%rax
13300
13301HIDDEN _sk_bicubic_n3y_hsw
13302.globl _sk_bicubic_n3y_hsw
Mike Klein86714282017-04-13 17:37:38 -040013303FUNCTION(_sk_bicubic_n3y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013304_sk_bicubic_n3y_hsw:
13305 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013306 .byte 196,226,125,24,13,249,5,0,0 // vbroadcastss 0x5f9(%rip),%ymm1 # 4c1c <_sk_callback_hsw+0x4cf>
Mike Klein0a904492017-04-12 12:52:48 -040013307 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040013308 .byte 196,98,125,24,5,239,5,0,0 // vbroadcastss 0x5ef(%rip),%ymm8 # 4c20 <_sk_callback_hsw+0x4d3>
Mike Klein0a904492017-04-12 12:52:48 -040013309 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
13310 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040013311 .byte 196,98,125,24,21,224,5,0,0 // vbroadcastss 0x5e0(%rip),%ymm10 # 4c24 <_sk_callback_hsw+0x4d7>
13312 .byte 196,98,125,24,29,219,5,0,0 // vbroadcastss 0x5db(%rip),%ymm11 # 4c28 <_sk_callback_hsw+0x4db>
Mike Kleinfe560a82017-05-01 12:56:35 -040013313 .byte 196,66,61,168,218 // vfmadd213ps %ymm10,%ymm8,%ymm11
13314 .byte 196,65,36,89,193 // vmulps %ymm9,%ymm11,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040013315 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
13316 .byte 72,173 // lods %ds:(%rsi),%rax
13317 .byte 255,224 // jmpq *%rax
13318
13319HIDDEN _sk_bicubic_n1y_hsw
13320.globl _sk_bicubic_n1y_hsw
Mike Klein86714282017-04-13 17:37:38 -040013321FUNCTION(_sk_bicubic_n1y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013322_sk_bicubic_n1y_hsw:
13323 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013324 .byte 196,226,125,24,13,190,5,0,0 // vbroadcastss 0x5be(%rip),%ymm1 # 4c2c <_sk_callback_hsw+0x4df>
Mike Klein0a904492017-04-12 12:52:48 -040013325 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040013326 .byte 196,98,125,24,5,180,5,0,0 // vbroadcastss 0x5b4(%rip),%ymm8 # 4c30 <_sk_callback_hsw+0x4e3>
Mike Klein0a904492017-04-12 12:52:48 -040013327 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040013328 .byte 196,98,125,24,13,170,5,0,0 // vbroadcastss 0x5aa(%rip),%ymm9 # 4c34 <_sk_callback_hsw+0x4e7>
13329 .byte 196,98,125,24,21,165,5,0,0 // vbroadcastss 0x5a5(%rip),%ymm10 # 4c38 <_sk_callback_hsw+0x4eb>
Mike Kleinfe560a82017-05-01 12:56:35 -040013330 .byte 196,66,61,168,209 // vfmadd213ps %ymm9,%ymm8,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040013331 .byte 196,98,125,24,13,155,5,0,0 // vbroadcastss 0x59b(%rip),%ymm9 # 4c3c <_sk_callback_hsw+0x4ef>
Mike Klein0a904492017-04-12 12:52:48 -040013332 .byte 196,66,61,184,202 // vfmadd231ps %ymm10,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040013333 .byte 196,98,125,24,21,145,5,0,0 // vbroadcastss 0x591(%rip),%ymm10 # 4c40 <_sk_callback_hsw+0x4f3>
Mike Kleinfe560a82017-05-01 12:56:35 -040013334 .byte 196,66,61,184,209 // vfmadd231ps %ymm9,%ymm8,%ymm10
13335 .byte 197,124,17,144,160,0,0,0 // vmovups %ymm10,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040013336 .byte 72,173 // lods %ds:(%rsi),%rax
13337 .byte 255,224 // jmpq *%rax
13338
13339HIDDEN _sk_bicubic_p1y_hsw
13340.globl _sk_bicubic_p1y_hsw
Mike Klein86714282017-04-13 17:37:38 -040013341FUNCTION(_sk_bicubic_p1y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013342_sk_bicubic_p1y_hsw:
13343 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013344 .byte 196,98,125,24,5,121,5,0,0 // vbroadcastss 0x579(%rip),%ymm8 # 4c44 <_sk_callback_hsw+0x4f7>
Mike Klein0a904492017-04-12 12:52:48 -040013345 .byte 197,188,88,72,32 // vaddps 0x20(%rax),%ymm8,%ymm1
13346 .byte 197,124,16,72,96 // vmovups 0x60(%rax),%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040013347 .byte 196,98,125,24,21,106,5,0,0 // vbroadcastss 0x56a(%rip),%ymm10 # 4c48 <_sk_callback_hsw+0x4fb>
13348 .byte 196,98,125,24,29,101,5,0,0 // vbroadcastss 0x565(%rip),%ymm11 # 4c4c <_sk_callback_hsw+0x4ff>
Mike Kleinfe560a82017-05-01 12:56:35 -040013349 .byte 196,66,53,168,218 // vfmadd213ps %ymm10,%ymm9,%ymm11
13350 .byte 196,66,53,168,216 // vfmadd213ps %ymm8,%ymm9,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040013351 .byte 196,98,125,24,5,86,5,0,0 // vbroadcastss 0x556(%rip),%ymm8 # 4c50 <_sk_callback_hsw+0x503>
Mike Kleinfe560a82017-05-01 12:56:35 -040013352 .byte 196,66,53,184,195 // vfmadd231ps %ymm11,%ymm9,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040013353 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
13354 .byte 72,173 // lods %ds:(%rsi),%rax
13355 .byte 255,224 // jmpq *%rax
13356
13357HIDDEN _sk_bicubic_p3y_hsw
13358.globl _sk_bicubic_p3y_hsw
Mike Klein86714282017-04-13 17:37:38 -040013359FUNCTION(_sk_bicubic_p3y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040013360_sk_bicubic_p3y_hsw:
13361 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040013362 .byte 196,226,125,24,13,62,5,0,0 // vbroadcastss 0x53e(%rip),%ymm1 # 4c54 <_sk_callback_hsw+0x507>
Mike Klein0a904492017-04-12 12:52:48 -040013363 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
13364 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
13365 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040013366 .byte 196,98,125,24,21,42,5,0,0 // vbroadcastss 0x52a(%rip),%ymm10 # 4c58 <_sk_callback_hsw+0x50b>
13367 .byte 196,98,125,24,29,37,5,0,0 // vbroadcastss 0x525(%rip),%ymm11 # 4c5c <_sk_callback_hsw+0x50f>
Mike Kleinfe560a82017-05-01 12:56:35 -040013368 .byte 196,66,61,168,218 // vfmadd213ps %ymm10,%ymm8,%ymm11
13369 .byte 196,65,52,89,195 // vmulps %ymm11,%ymm9,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040013370 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
13371 .byte 72,173 // lods %ds:(%rsi),%rax
13372 .byte 255,224 // jmpq *%rax
13373
Mike Klein7fee90c2017-04-07 16:55:09 -040013374HIDDEN _sk_callback_hsw
13375.globl _sk_callback_hsw
13376FUNCTION(_sk_callback_hsw)
13377_sk_callback_hsw:
13378 .byte 65,87 // push %r15
13379 .byte 65,86 // push %r14
Mike Kleinc17dc242017-04-20 16:21:57 -040013380 .byte 65,85 // push %r13
Mike Klein7fee90c2017-04-07 16:55:09 -040013381 .byte 65,84 // push %r12
13382 .byte 83 // push %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040013383 .byte 72,129,236,144,0,0,0 // sub $0x90,%rsp
13384 .byte 197,252,17,124,36,96 // vmovups %ymm7,0x60(%rsp)
13385 .byte 197,252,17,116,36,64 // vmovups %ymm6,0x40(%rsp)
13386 .byte 197,252,17,108,36,32 // vmovups %ymm5,0x20(%rsp)
13387 .byte 197,252,17,36,36 // vmovups %ymm4,(%rsp)
13388 .byte 73,137,205 // mov %rcx,%r13
Mike Klein7fee90c2017-04-07 16:55:09 -040013389 .byte 73,137,214 // mov %rdx,%r14
13390 .byte 73,137,255 // mov %rdi,%r15
13391 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinc17dc242017-04-20 16:21:57 -040013392 .byte 72,137,195 // mov %rax,%rbx
Mike Klein7fee90c2017-04-07 16:55:09 -040013393 .byte 73,137,244 // mov %rsi,%r12
Mike Kleinc17dc242017-04-20 16:21:57 -040013394 .byte 197,252,20,225 // vunpcklps %ymm1,%ymm0,%ymm4
13395 .byte 197,252,21,193 // vunpckhps %ymm1,%ymm0,%ymm0
13396 .byte 197,236,20,203 // vunpcklps %ymm3,%ymm2,%ymm1
13397 .byte 197,236,21,211 // vunpckhps %ymm3,%ymm2,%ymm2
13398 .byte 197,221,20,217 // vunpcklpd %ymm1,%ymm4,%ymm3
13399 .byte 197,221,21,201 // vunpckhpd %ymm1,%ymm4,%ymm1
13400 .byte 197,253,20,226 // vunpcklpd %ymm2,%ymm0,%ymm4
13401 .byte 197,253,21,194 // vunpckhpd %ymm2,%ymm0,%ymm0
13402 .byte 196,227,101,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm3,%ymm2
13403 .byte 196,227,93,24,232,1 // vinsertf128 $0x1,%xmm0,%ymm4,%ymm5
13404 .byte 196,227,101,6,201,49 // vperm2f128 $0x31,%ymm1,%ymm3,%ymm1
13405 .byte 196,227,93,6,192,49 // vperm2f128 $0x31,%ymm0,%ymm4,%ymm0
13406 .byte 197,253,17,83,8 // vmovupd %ymm2,0x8(%rbx)
13407 .byte 197,253,17,107,40 // vmovupd %ymm5,0x28(%rbx)
13408 .byte 197,253,17,75,72 // vmovupd %ymm1,0x48(%rbx)
13409 .byte 197,253,17,67,104 // vmovupd %ymm0,0x68(%rbx)
13410 .byte 77,133,237 // test %r13,%r13
Mike Klein7fee90c2017-04-07 16:55:09 -040013411 .byte 190,8,0,0,0 // mov $0x8,%esi
Mike Kleinc17dc242017-04-20 16:21:57 -040013412 .byte 65,15,69,245 // cmovne %r13d,%esi
13413 .byte 72,137,223 // mov %rbx,%rdi
Mike Klein7fee90c2017-04-07 16:55:09 -040013414 .byte 197,248,119 // vzeroupper
Mike Kleinc17dc242017-04-20 16:21:57 -040013415 .byte 255,19 // callq *(%rbx)
13416 .byte 72,139,131,136,0,0,0 // mov 0x88(%rbx),%rax
13417 .byte 197,248,16,0 // vmovups (%rax),%xmm0
13418 .byte 197,248,16,72,16 // vmovups 0x10(%rax),%xmm1
13419 .byte 197,248,16,80,32 // vmovups 0x20(%rax),%xmm2
13420 .byte 197,248,16,88,48 // vmovups 0x30(%rax),%xmm3
13421 .byte 196,227,101,24,88,112,1 // vinsertf128 $0x1,0x70(%rax),%ymm3,%ymm3
13422 .byte 196,227,109,24,80,96,1 // vinsertf128 $0x1,0x60(%rax),%ymm2,%ymm2
13423 .byte 196,227,117,24,72,80,1 // vinsertf128 $0x1,0x50(%rax),%ymm1,%ymm1
13424 .byte 196,227,125,24,64,64,1 // vinsertf128 $0x1,0x40(%rax),%ymm0,%ymm0
13425 .byte 197,252,20,225 // vunpcklps %ymm1,%ymm0,%ymm4
13426 .byte 197,252,21,233 // vunpckhps %ymm1,%ymm0,%ymm5
13427 .byte 197,236,20,203 // vunpcklps %ymm3,%ymm2,%ymm1
13428 .byte 197,236,21,219 // vunpckhps %ymm3,%ymm2,%ymm3
13429 .byte 197,221,20,193 // vunpcklpd %ymm1,%ymm4,%ymm0
13430 .byte 197,221,21,201 // vunpckhpd %ymm1,%ymm4,%ymm1
13431 .byte 197,213,20,211 // vunpcklpd %ymm3,%ymm5,%ymm2
13432 .byte 197,213,21,219 // vunpckhpd %ymm3,%ymm5,%ymm3
Mike Klein7fee90c2017-04-07 16:55:09 -040013433 .byte 76,137,230 // mov %r12,%rsi
13434 .byte 72,173 // lods %ds:(%rsi),%rax
13435 .byte 76,137,255 // mov %r15,%rdi
13436 .byte 76,137,242 // mov %r14,%rdx
Mike Kleinc17dc242017-04-20 16:21:57 -040013437 .byte 76,137,233 // mov %r13,%rcx
13438 .byte 197,252,16,36,36 // vmovups (%rsp),%ymm4
13439 .byte 197,252,16,108,36,32 // vmovups 0x20(%rsp),%ymm5
13440 .byte 197,252,16,116,36,64 // vmovups 0x40(%rsp),%ymm6
13441 .byte 197,252,16,124,36,96 // vmovups 0x60(%rsp),%ymm7
13442 .byte 72,129,196,144,0,0,0 // add $0x90,%rsp
Mike Klein7fee90c2017-04-07 16:55:09 -040013443 .byte 91 // pop %rbx
13444 .byte 65,92 // pop %r12
Mike Kleinc17dc242017-04-20 16:21:57 -040013445 .byte 65,93 // pop %r13
Mike Klein7fee90c2017-04-07 16:55:09 -040013446 .byte 65,94 // pop %r14
13447 .byte 65,95 // pop %r15
13448 .byte 255,224 // jmpq *%rax
13449
Mike Klein2229b572017-04-21 10:30:29 -040013450BALIGN4
13451 .byte 0,0 // add %al,(%rax)
13452 .byte 0,63 // add %bh,(%rdi)
13453 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040013454 .byte 128,63,1 // cmpb $0x1,(%rdi)
13455 .byte 0,0 // add %al,(%rax)
13456 .byte 0,4,0 // add %al,(%rax,%rax,1)
13457 .byte 0,0 // add %al,(%rax)
13458 .byte 2,0 // add (%rax),%al
13459 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040013460 .byte 0,0 // add %al,(%rax)
Mike Kleindb711c92017-05-03 17:57:48 -040013461 .byte 128,60,0,0 // cmpb $0x0,(%rax,%rax,1)
13462 .byte 252 // cld
13463 .byte 190,0,0,128,63 // mov $0x3f800000,%esi
Mike Klein308e6242017-04-27 13:56:33 -040013464 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013465 .byte 128,63,0 // cmpb $0x0,(%rdi)
13466 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
13467 .byte 63 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040013468 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013469 .byte 128,63,0 // cmpb $0x0,(%rdi)
13470 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
13471 .byte 63 // (bad)
13472 .byte 0,0 // add %al,(%rax)
13473 .byte 128,63,0 // cmpb $0x0,(%rdi)
13474 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
13475 .byte 63 // (bad)
13476 .byte 0,0 // add %al,(%rax)
13477 .byte 128,63,0 // cmpb $0x0,(%rdi)
13478 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
13479 .byte 63 // (bad)
13480 .byte 0,0 // add %al,(%rax)
13481 .byte 128,63,0 // cmpb $0x0,(%rdi)
13482 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
13483 .byte 63 // (bad)
13484 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040013485 .byte 128,63,0 // cmpb $0x0,(%rdi)
13486 .byte 0,128,191,0,0,224 // add %al,-0x1fffff41(%rax)
Mike Klein08aa88d2017-05-12 12:59:24 -040013487 .byte 64,154 // rex (bad)
Mike Kleinbb338332017-05-04 12:42:52 -040013488 .byte 153 // cltd
13489 .byte 153 // cltd
13490 .byte 62,61,10,23,63,174 // ds cmp $0xae3f170a,%eax
Mike Klein8ca33562017-05-23 08:07:43 -040013491 .byte 71,225,61 // rex.RXB loope 4925 <.literal4+0xb1>
Mike Kleinbb338332017-05-04 12:42:52 -040013492 .byte 0,0 // add %al,(%rax)
13493 .byte 128,63,154 // cmpb $0x9a,(%rdi)
13494 .byte 153 // cltd
13495 .byte 153 // cltd
13496 .byte 62,61,10,23,63,174 // ds cmp $0xae3f170a,%eax
Mike Klein8ca33562017-05-23 08:07:43 -040013497 .byte 71,225,61 // rex.RXB loope 4935 <.literal4+0xc1>
Mike Kleinbb338332017-05-04 12:42:52 -040013498 .byte 0,0 // add %al,(%rax)
13499 .byte 128,63,154 // cmpb $0x9a,(%rdi)
13500 .byte 153 // cltd
13501 .byte 153 // cltd
13502 .byte 62,61,10,23,63,174 // ds cmp $0xae3f170a,%eax
Mike Klein8ca33562017-05-23 08:07:43 -040013503 .byte 71,225,61 // rex.RXB loope 4945 <.literal4+0xd1>
Mike Kleinbb338332017-05-04 12:42:52 -040013504 .byte 0,0 // add %al,(%rax)
13505 .byte 128,63,154 // cmpb $0x9a,(%rdi)
13506 .byte 153 // cltd
13507 .byte 153 // cltd
13508 .byte 62,61,10,23,63,174 // ds cmp $0xae3f170a,%eax
Mike Klein8ca33562017-05-23 08:07:43 -040013509 .byte 71,225,61 // rex.RXB loope 4955 <.literal4+0xe1>
Mike Kleinbb338332017-05-04 12:42:52 -040013510 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040013511 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040013512 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
13513 .byte 63 // (bad)
Mike Klein08aa88d2017-05-12 12:59:24 -040013514 .byte 0,0 // add %al,(%rax)
13515 .byte 128,63,145 // cmpb $0x91,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040013516 .byte 131,158,61,92,143,50,63 // sbbl $0x3f,0x328f5c3d(%rsi)
13517 .byte 154 // (bad)
13518 .byte 153 // cltd
13519 .byte 153 // cltd
13520 .byte 62,10,215 // ds or %bh,%dl
13521 .byte 35,59 // and (%rbx),%edi
13522 .byte 174 // scas %es:(%rdi),%al
13523 .byte 71,97 // rex.RXB (bad)
Mike Kleinf45e3d72017-05-15 17:36:59 -040013524 .byte 61,82,184,78,65 // cmp $0x414eb852,%eax
13525 .byte 186,159,98,60,57 // mov $0x393c629f,%edx
13526 .byte 215 // xlat %ds:(%rbx)
13527 .byte 32,187,13,20,145,63 // and %bh,0x3f91140d(%rbx)
13528 .byte 141,158,20,62,168,177 // lea -0x4e57c1ec(%rsi),%ebx
13529 .byte 152 // cwtl
Mike Kleinfe560a82017-05-01 12:56:35 -040013530 .byte 59,0 // cmp (%rax),%eax
13531 .byte 0,128,63,0,0,192 // add %al,-0x3fffffc1(%rax)
13532 .byte 64,0,0 // add %al,(%rax)
13533 .byte 0,64,0 // add %al,0x0(%rax)
13534 .byte 0,128,64,171,170,42 // add %al,0x2aaaab40(%rax)
13535 .byte 62,0,0 // add %al,%ds:(%rax)
13536 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040013537 .byte 0,0 // add %al,(%rax)
Mike Klein5664e652017-05-01 16:01:38 -040013538 .byte 0,63 // add %bh,(%rdi)
13539 .byte 0,0 // add %al,(%rax)
Mike Klein879a08a2017-05-01 15:34:01 -040013540 .byte 0,64,171 // add %al,-0x55(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040013541 .byte 170 // stos %al,%es:(%rdi)
13542 .byte 170 // stos %al,%es:(%rdi)
Mike Klein5664e652017-05-01 16:01:38 -040013543 .byte 62,171 // ds stos %eax,%es:(%rdi)
13544 .byte 170 // stos %al,%es:(%rdi)
13545 .byte 42,63 // sub (%rdi),%bh
13546 .byte 0,0 // add %al,(%rax)
Mike Klein879a08a2017-05-01 15:34:01 -040013547 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
13548 .byte 128,64,171,170 // addb $0xaa,-0x55(%rax)
Mike Klein5664e652017-05-01 16:01:38 -040013549 .byte 42,62 // sub (%rsi),%bh
13550 .byte 171 // stos %eax,%es:(%rdi)
13551 .byte 170 // stos %al,%es:(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040013552 .byte 170 // stos %al,%es:(%rdi)
13553 .byte 190,129,128,128,59 // mov $0x3b808081,%esi
13554 .byte 129,128,128,59,0,248,0,0,8,33 // addl $0x21080000,-0x7ffc480(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013555 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040013556 .byte 224,7 // loopne 49a5 <.literal4+0x131>
Mike Kleinfe560a82017-05-01 12:56:35 -040013557 .byte 0,0 // add %al,(%rax)
13558 .byte 33,8 // and %ecx,(%rax)
13559 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040013560 .byte 31 // (bad)
13561 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013562 .byte 0,8 // add %cl,(%rax)
bungeman6f9f2592017-05-10 13:50:12 -040013563 .byte 33,4,61,129,128,128,59 // and %eax,0x3b808081(,%rdi,1)
13564 .byte 128,0,128 // addb $0x80,(%rax)
13565 .byte 55 // (bad)
13566 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013567 .byte 128,63,0 // cmpb $0x0,(%rdi)
13568 .byte 0,127,67 // add %bh,0x43(%rdi)
13569 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
13570 .byte 0,52,255 // add %dh,(%rdi,%rdi,8)
Mike Kleinb4bbc642017-04-27 08:59:55 -040013571 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013572 .byte 127,0 // jg 49cc <.literal4+0x158>
Mike Kleinb4bbc642017-04-27 08:59:55 -040013573 .byte 0,0 // add %al,(%rax)
13574 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040013575 .byte 119,115 // ja 4a45 <.literal4+0x1d1>
Mike Kleinb4bbc642017-04-27 08:59:55 -040013576 .byte 248 // clc
13577 .byte 194,117,191 // retq $0xbf75
13578 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
13579 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
13580 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
13581 .byte 154 // (bad)
13582 .byte 64,254 // rex (bad)
13583 .byte 210,221 // rcr %cl,%ch
13584 .byte 65,0,0 // add %al,(%r8)
13585 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040013586 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040013587 .byte 52,255 // xor $0xff,%al
13588 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013589 .byte 127,0 // jg 4a00 <.literal4+0x18c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040013590 .byte 0,0 // add %al,(%rax)
13591 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040013592 .byte 119,115 // ja 4a79 <.literal4+0x205>
Mike Kleinb4bbc642017-04-27 08:59:55 -040013593 .byte 248 // clc
13594 .byte 194,117,191 // retq $0xbf75
13595 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
13596 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
13597 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
13598 .byte 154 // (bad)
13599 .byte 64,254 // rex (bad)
13600 .byte 210,221 // rcr %cl,%ch
13601 .byte 65,0,0 // add %al,(%r8)
13602 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040013603 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040013604 .byte 52,255 // xor $0xff,%al
13605 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013606 .byte 127,0 // jg 4a34 <.literal4+0x1c0>
Mike Kleinb4bbc642017-04-27 08:59:55 -040013607 .byte 0,0 // add %al,(%rax)
13608 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040013609 .byte 119,115 // ja 4aad <.literal4+0x239>
Mike Kleinb4bbc642017-04-27 08:59:55 -040013610 .byte 248 // clc
13611 .byte 194,117,191 // retq $0xbf75
13612 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
13613 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
13614 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
13615 .byte 154 // (bad)
13616 .byte 64,254 // rex (bad)
13617 .byte 210,221 // rcr %cl,%ch
13618 .byte 65,0,0 // add %al,(%r8)
13619 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040013620 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040013621 .byte 52,255 // xor $0xff,%al
13622 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013623 .byte 127,0 // jg 4a68 <.literal4+0x1f4>
Mike Kleinb4bbc642017-04-27 08:59:55 -040013624 .byte 0,0 // add %al,(%rax)
13625 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040013626 .byte 119,115 // ja 4ae1 <.literal4+0x26d>
Mike Kleinb4bbc642017-04-27 08:59:55 -040013627 .byte 248 // clc
13628 .byte 194,117,191 // retq $0xbf75
13629 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
13630 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
13631 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
13632 .byte 154 // (bad)
13633 .byte 64,254 // rex (bad)
13634 .byte 210,221 // rcr %cl,%ch
13635 .byte 65,0,0 // add %al,(%r8)
Mike Klein308e6242017-04-27 13:56:33 -040013636 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040013637 .byte 0,128,63,0,0,200 // add %al,-0x37ffffc1(%rax)
13638 .byte 66,0,0 // rex.X add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040013639 .byte 127,67 // jg 4adf <.literal4+0x26b>
Mike Kleinfe560a82017-05-01 12:56:35 -040013640 .byte 0,0 // add %al,(%rax)
13641 .byte 0,195 // add %al,%bl
13642 .byte 0,0 // add %al,(%rax)
13643 .byte 128,65,203,61 // addb $0x3d,-0x35(%rcx)
13644 .byte 13,60,111,18,3 // or $0x3126f3c,%eax
13645 .byte 59,10 // cmp (%rdx),%ecx
13646 .byte 215 // xlat %ds:(%rbx)
13647 .byte 163,59,194,24,17,60,203,61,13 // movabs %eax,0xd3dcb3c1118c23b
13648 .byte 190,80,128,3,62 // mov $0x3e038050,%esi
13649 .byte 31 // (bad)
13650 .byte 215 // xlat %ds:(%rbx)
Mike Klein8ca33562017-05-23 08:07:43 -040013651 .byte 118,63 // jbe 4aff <.literal4+0x28b>
Mike Kleinfe560a82017-05-01 12:56:35 -040013652 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
13653 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040013654 .byte 127,67 // jg 4b13 <.literal4+0x29f>
Mike Kleinfe560a82017-05-01 12:56:35 -040013655 .byte 129,128,128,59,0,0,128,63,129,128 // addl $0x80813f80,0x3b80(%rax)
13656 .byte 128,59,0 // cmpb $0x0,(%rbx)
13657 .byte 0,128,63,129,128,128 // add %al,-0x7f7f7ec1(%rax)
13658 .byte 59,0 // cmp (%rax),%eax
Mike Klein308e6242017-04-27 13:56:33 -040013659 .byte 248 // clc
13660 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013661 .byte 8,33 // or %ah,(%rcx)
13662 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040013663 .byte 224,7 // loopne 4af5 <.literal4+0x281>
Mike Klein308e6242017-04-27 13:56:33 -040013664 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013665 .byte 33,8 // and %ecx,(%rax)
13666 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040013667 .byte 31 // (bad)
13668 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013669 .byte 0,8 // add %cl,(%rax)
13670 .byte 33,4,61,0,0,128,63 // and %eax,0x3f800000(,%rdi,1)
13671 .byte 0,248 // add %bh,%al
Mike Klein308e6242017-04-27 13:56:33 -040013672 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013673 .byte 8,33 // or %ah,(%rcx)
13674 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040013675 .byte 224,7 // loopne 4b11 <.literal4+0x29d>
Mike Klein308e6242017-04-27 13:56:33 -040013676 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013677 .byte 33,8 // and %ecx,(%rax)
13678 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040013679 .byte 31 // (bad)
13680 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013681 .byte 0,8 // add %cl,(%rax)
13682 .byte 33,4,61,0,0,128,63 // and %eax,0x3f800000(,%rdi,1)
Mike Klein308e6242017-04-27 13:56:33 -040013683 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013684 .byte 248 // clc
13685 .byte 65,0,0 // add %al,(%r8)
Mike Klein8ca33562017-05-23 08:07:43 -040013686 .byte 124,66 // jl 4b66 <.literal4+0x2f2>
Mike Kleinfe560a82017-05-01 12:56:35 -040013687 .byte 0,240 // add %dh,%al
Mike Klein308e6242017-04-27 13:56:33 -040013688 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013689 .byte 137,136,136,55,0,15 // mov %ecx,0xf003788(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040013690 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013691 .byte 137,136,136,57,240,0 // mov %ecx,0xf03988(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040013692 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013693 .byte 137,136,136,59,15,0 // mov %ecx,0xf3b88(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040013694 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013695 .byte 137,136,136,61,0,240 // mov %ecx,-0xfffc278(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040013696 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013697 .byte 137,136,136,55,0,15 // mov %ecx,0xf003788(%rax)
13698 .byte 0,0 // add %al,(%rax)
13699 .byte 137,136,136,57,240,0 // mov %ecx,0xf03988(%rax)
13700 .byte 0,0 // add %al,(%rax)
13701 .byte 137,136,136,59,15,0 // mov %ecx,0xf3b88(%rax)
13702 .byte 0,0 // add %al,(%rax)
13703 .byte 137,136,136,61,0,0 // mov %ecx,0x3d88(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040013704 .byte 112,65 // jo 4ba9 <.literal4+0x335>
Mike Kleinfe560a82017-05-01 12:56:35 -040013705 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040013706 .byte 127,67 // jg 4bb7 <.literal4+0x343>
Mike Kleinfe560a82017-05-01 12:56:35 -040013707 .byte 128,0,128 // addb $0x80,(%rax)
13708 .byte 55 // (bad)
13709 .byte 128,0,128 // addb $0x80,(%rax)
13710 .byte 55 // (bad)
13711 .byte 0,0 // add %al,(%rax)
13712 .byte 128,63,0 // cmpb $0x0,(%rdi)
13713 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013714 .byte 127,71 // jg 4bcb <.literal4+0x357>
Mike Klein9f85d682017-05-23 07:52:01 -040013715 .byte 0,0 // add %al,(%rax)
13716 .byte 128,63,0 // cmpb $0x0,(%rdi)
13717 .byte 0,128,191,0,0,0 // add %al,0xbf(%rax)
13718 .byte 63 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040013719 .byte 208 // (bad)
13720 .byte 179,89 // mov $0x59,%bl
13721 .byte 62,89 // ds pop %rcx
13722 .byte 23 // (bad)
13723 .byte 55 // (bad)
13724 .byte 63 // (bad)
13725 .byte 152 // cwtl
Herb Derby4de13042017-05-15 10:49:39 -040013726 .byte 221,147,61,1,0,0 // fstl 0x13d(%rbx)
13727 .byte 0,111,43 // add %ch,0x2b(%rdi)
13728 .byte 231,187 // out %eax,$0xbb
13729 .byte 159 // lahf
13730 .byte 215 // xlat %ds:(%rbx)
13731 .byte 202,60,212 // lret $0xd43c
Herb Derby7eb86982017-05-02 19:04:39 -040013732 .byte 100,84 // fs push %rsp
13733 .byte 189,169,240,34,62 // mov $0x3e22f0a9,%ebp
13734 .byte 0,0 // add %al,(%rax)
13735 .byte 128,62,0 // cmpb $0x0,(%rsi)
13736 .byte 0,0 // add %al,(%rax)
13737 .byte 63 // (bad)
13738 .byte 0,0 // add %al,(%rax)
13739 .byte 128,63,0 // cmpb $0x0,(%rdi)
13740 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040013741 .byte 63 // (bad)
13742 .byte 0,0 // add %al,(%rax)
13743 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
13744 .byte 0,0 // add %al,(%rax)
13745 .byte 0,63 // add %bh,(%rdi)
13746 .byte 0,0 // add %al,(%rax)
13747 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
13748 .byte 0,0 // add %al,(%rax)
13749 .byte 0,63 // add %bh,(%rdi)
13750 .byte 0,0 // add %al,(%rax)
13751 .byte 192,191,0,0,128,63,171 // sarb $0xab,0x3f800000(%rdi)
13752 .byte 170 // stos %al,%es:(%rdi)
13753 .byte 170 // stos %al,%es:(%rdi)
13754 .byte 190,114,28,199,62 // mov $0x3ec71c72,%esi
13755 .byte 0,0 // add %al,(%rax)
13756 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
13757 .byte 0,0 // add %al,(%rax)
13758 .byte 192,63,85 // sarb $0x55,(%rdi)
13759 .byte 85 // push %rbp
13760 .byte 149 // xchg %eax,%ebp
13761 .byte 191,0,0,0,63 // mov $0x3f000000,%edi
13762 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
13763 .byte 0,63 // add %bh,(%rdi)
13764 .byte 0,0 // add %al,(%rax)
13765 .byte 192,63,85 // sarb $0x55,(%rdi)
13766 .byte 85 // push %rbp
13767 .byte 149 // xchg %eax,%ebp
13768 .byte 191,57,142,99,61 // mov $0x3d638e39,%edi
13769 .byte 0,0 // add %al,(%rax)
13770 .byte 192,63,171 // sarb $0xab,(%rdi)
13771 .byte 170 // stos %al,%es:(%rdi)
13772 .byte 170 // stos %al,%es:(%rdi)
13773 .byte 190,114,28,199,62 // mov $0x3ec71c72,%esi
13774 .byte 0,0 // add %al,(%rax)
13775 .byte 192,191,0,0,128,63,171 // sarb $0xab,0x3f800000(%rdi)
13776 .byte 170 // stos %al,%es:(%rdi)
13777 .byte 170 // stos %al,%es:(%rdi)
13778 .byte 190,114,28,199,62 // mov $0x3ec71c72,%esi
13779 .byte 0,0 // add %al,(%rax)
13780 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
13781 .byte 0,0 // add %al,(%rax)
13782 .byte 192,63,85 // sarb $0x55,(%rdi)
13783 .byte 85 // push %rbp
13784 .byte 149 // xchg %eax,%ebp
13785 .byte 191,0,0,0,63 // mov $0x3f000000,%edi
13786 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
13787 .byte 0,63 // add %bh,(%rdi)
13788 .byte 0,0 // add %al,(%rax)
13789 .byte 192,63,85 // sarb $0x55,(%rdi)
13790 .byte 85 // push %rbp
13791 .byte 149 // xchg %eax,%ebp
13792 .byte 191,57,142,99,61 // mov $0x3d638e39,%edi
13793 .byte 0,0 // add %al,(%rax)
13794 .byte 192,63,171 // sarb $0xab,(%rdi)
13795 .byte 170 // stos %al,%es:(%rdi)
13796 .byte 170 // stos %al,%es:(%rdi)
13797 .byte 190,114,28,199,62 // mov $0x3ec71c72,%esi
Mike Klein0aa742f2017-04-27 13:36:57 -040013798
13799BALIGN32
13800 .byte 255,0 // incl (%rax)
13801 .byte 0,0 // add %al,(%rax)
13802 .byte 255,0 // incl (%rax)
13803 .byte 0,0 // add %al,(%rax)
13804 .byte 255,0 // incl (%rax)
13805 .byte 0,0 // add %al,(%rax)
13806 .byte 255,0 // incl (%rax)
13807 .byte 0,0 // add %al,(%rax)
13808 .byte 255,0 // incl (%rax)
13809 .byte 0,0 // add %al,(%rax)
13810 .byte 255,0 // incl (%rax)
13811 .byte 0,0 // add %al,(%rax)
13812 .byte 255,0 // incl (%rax)
13813 .byte 0,0 // add %al,(%rax)
13814 .byte 255,0 // incl (%rax)
13815 .byte 0,0 // add %al,(%rax)
13816 .byte 1,255 // add %edi,%edi
13817 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013818 .byte 255,5,255,255,255,9 // incl 0x9ffffff(%rip) # a004c88 <_sk_callback_hsw+0xa00053b>
Mike Klein0aa742f2017-04-27 13:36:57 -040013819 .byte 255 // (bad)
13820 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013821 .byte 255,13,255,255,255,17 // decl 0x11ffffff(%rip) # 12004c90 <_sk_callback_hsw+0x12000543>
Mike Klein0aa742f2017-04-27 13:36:57 -040013822 .byte 255 // (bad)
13823 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013824 .byte 255,21,255,255,255,25 // callq *0x19ffffff(%rip) # 1a004c98 <_sk_callback_hsw+0x1a00054b>
Mike Klein0aa742f2017-04-27 13:36:57 -040013825 .byte 255 // (bad)
13826 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013827 .byte 255,29,255,255,255,2 // lcall *0x2ffffff(%rip) # 3004ca0 <_sk_callback_hsw+0x3000553>
Mike Klein0aa742f2017-04-27 13:36:57 -040013828 .byte 255 // (bad)
13829 .byte 255 // (bad)
13830 .byte 255,6 // incl (%rsi)
13831 .byte 255 // (bad)
13832 .byte 255 // (bad)
13833 .byte 255,10 // decl (%rdx)
13834 .byte 255 // (bad)
13835 .byte 255 // (bad)
13836 .byte 255,14 // decl (%rsi)
13837 .byte 255 // (bad)
13838 .byte 255 // (bad)
13839 .byte 255,18 // callq *(%rdx)
13840 .byte 255 // (bad)
13841 .byte 255 // (bad)
13842 .byte 255,22 // callq *(%rsi)
13843 .byte 255 // (bad)
13844 .byte 255 // (bad)
13845 .byte 255,26 // lcall *(%rdx)
13846 .byte 255 // (bad)
13847 .byte 255 // (bad)
13848 .byte 255,30 // lcall *(%rsi)
13849 .byte 255 // (bad)
13850 .byte 255 // (bad)
13851 .byte 255 // (bad)
13852 .byte 255,0 // incl (%rax)
13853 .byte 0,0 // add %al,(%rax)
13854 .byte 255,0 // incl (%rax)
13855 .byte 0,0 // add %al,(%rax)
13856 .byte 255,0 // incl (%rax)
13857 .byte 0,0 // add %al,(%rax)
13858 .byte 255,0 // incl (%rax)
13859 .byte 0,0 // add %al,(%rax)
13860 .byte 255,0 // incl (%rax)
13861 .byte 0,0 // add %al,(%rax)
13862 .byte 255,0 // incl (%rax)
13863 .byte 0,0 // add %al,(%rax)
13864 .byte 255,0 // incl (%rax)
13865 .byte 0,0 // add %al,(%rax)
13866 .byte 255,0 // incl (%rax)
13867 .byte 0,0 // add %al,(%rax)
13868 .byte 1,255 // add %edi,%edi
13869 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013870 .byte 255,5,255,255,255,9 // incl 0x9ffffff(%rip) # a004ce8 <_sk_callback_hsw+0xa00059b>
Mike Klein0aa742f2017-04-27 13:36:57 -040013871 .byte 255 // (bad)
13872 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013873 .byte 255,13,255,255,255,17 // decl 0x11ffffff(%rip) # 12004cf0 <_sk_callback_hsw+0x120005a3>
Mike Klein0aa742f2017-04-27 13:36:57 -040013874 .byte 255 // (bad)
13875 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013876 .byte 255,21,255,255,255,25 // callq *0x19ffffff(%rip) # 1a004cf8 <_sk_callback_hsw+0x1a0005ab>
Mike Klein0aa742f2017-04-27 13:36:57 -040013877 .byte 255 // (bad)
13878 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013879 .byte 255,29,255,255,255,2 // lcall *0x2ffffff(%rip) # 3004d00 <_sk_callback_hsw+0x30005b3>
Mike Klein0aa742f2017-04-27 13:36:57 -040013880 .byte 255 // (bad)
13881 .byte 255 // (bad)
13882 .byte 255,6 // incl (%rsi)
13883 .byte 255 // (bad)
13884 .byte 255 // (bad)
13885 .byte 255,10 // decl (%rdx)
13886 .byte 255 // (bad)
13887 .byte 255 // (bad)
13888 .byte 255,14 // decl (%rsi)
13889 .byte 255 // (bad)
13890 .byte 255 // (bad)
13891 .byte 255,18 // callq *(%rdx)
13892 .byte 255 // (bad)
13893 .byte 255 // (bad)
13894 .byte 255,22 // callq *(%rsi)
13895 .byte 255 // (bad)
13896 .byte 255 // (bad)
13897 .byte 255,26 // lcall *(%rdx)
13898 .byte 255 // (bad)
13899 .byte 255 // (bad)
13900 .byte 255,30 // lcall *(%rsi)
13901 .byte 255 // (bad)
13902 .byte 255 // (bad)
13903 .byte 255 // (bad)
13904 .byte 255,0 // incl (%rax)
13905 .byte 0,0 // add %al,(%rax)
13906 .byte 255,0 // incl (%rax)
13907 .byte 0,0 // add %al,(%rax)
13908 .byte 255,0 // incl (%rax)
13909 .byte 0,0 // add %al,(%rax)
13910 .byte 255,0 // incl (%rax)
13911 .byte 0,0 // add %al,(%rax)
13912 .byte 255,0 // incl (%rax)
13913 .byte 0,0 // add %al,(%rax)
13914 .byte 255,0 // incl (%rax)
13915 .byte 0,0 // add %al,(%rax)
13916 .byte 255,0 // incl (%rax)
13917 .byte 0,0 // add %al,(%rax)
13918 .byte 255,0 // incl (%rax)
13919 .byte 0,0 // add %al,(%rax)
13920 .byte 1,255 // add %edi,%edi
13921 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013922 .byte 255,5,255,255,255,9 // incl 0x9ffffff(%rip) # a004d48 <_sk_callback_hsw+0xa0005fb>
Mike Klein0aa742f2017-04-27 13:36:57 -040013923 .byte 255 // (bad)
13924 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013925 .byte 255,13,255,255,255,17 // decl 0x11ffffff(%rip) # 12004d50 <_sk_callback_hsw+0x12000603>
Mike Klein0aa742f2017-04-27 13:36:57 -040013926 .byte 255 // (bad)
13927 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013928 .byte 255,21,255,255,255,25 // callq *0x19ffffff(%rip) # 1a004d58 <_sk_callback_hsw+0x1a00060b>
Mike Klein0aa742f2017-04-27 13:36:57 -040013929 .byte 255 // (bad)
13930 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013931 .byte 255,29,255,255,255,2 // lcall *0x2ffffff(%rip) # 3004d60 <_sk_callback_hsw+0x3000613>
Mike Klein0aa742f2017-04-27 13:36:57 -040013932 .byte 255 // (bad)
13933 .byte 255 // (bad)
13934 .byte 255,6 // incl (%rsi)
13935 .byte 255 // (bad)
13936 .byte 255 // (bad)
13937 .byte 255,10 // decl (%rdx)
13938 .byte 255 // (bad)
13939 .byte 255 // (bad)
13940 .byte 255,14 // decl (%rsi)
13941 .byte 255 // (bad)
13942 .byte 255 // (bad)
13943 .byte 255,18 // callq *(%rdx)
13944 .byte 255 // (bad)
13945 .byte 255 // (bad)
13946 .byte 255,22 // callq *(%rsi)
13947 .byte 255 // (bad)
13948 .byte 255 // (bad)
13949 .byte 255,26 // lcall *(%rdx)
13950 .byte 255 // (bad)
13951 .byte 255 // (bad)
13952 .byte 255,30 // lcall *(%rsi)
13953 .byte 255 // (bad)
13954 .byte 255 // (bad)
13955 .byte 255 // (bad)
13956 .byte 255,0 // incl (%rax)
13957 .byte 0,0 // add %al,(%rax)
13958 .byte 255,0 // incl (%rax)
13959 .byte 0,0 // add %al,(%rax)
13960 .byte 255,0 // incl (%rax)
13961 .byte 0,0 // add %al,(%rax)
13962 .byte 255,0 // incl (%rax)
13963 .byte 0,0 // add %al,(%rax)
13964 .byte 255,0 // incl (%rax)
13965 .byte 0,0 // add %al,(%rax)
13966 .byte 255,0 // incl (%rax)
13967 .byte 0,0 // add %al,(%rax)
13968 .byte 255,0 // incl (%rax)
13969 .byte 0,0 // add %al,(%rax)
13970 .byte 255,0 // incl (%rax)
13971 .byte 0,0 // add %al,(%rax)
13972 .byte 1,255 // add %edi,%edi
13973 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013974 .byte 255,5,255,255,255,9 // incl 0x9ffffff(%rip) # a004da8 <_sk_callback_hsw+0xa00065b>
Mike Klein0aa742f2017-04-27 13:36:57 -040013975 .byte 255 // (bad)
13976 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013977 .byte 255,13,255,255,255,17 // decl 0x11ffffff(%rip) # 12004db0 <_sk_callback_hsw+0x12000663>
Mike Klein0aa742f2017-04-27 13:36:57 -040013978 .byte 255 // (bad)
13979 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013980 .byte 255,21,255,255,255,25 // callq *0x19ffffff(%rip) # 1a004db8 <_sk_callback_hsw+0x1a00066b>
Mike Klein0aa742f2017-04-27 13:36:57 -040013981 .byte 255 // (bad)
13982 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040013983 .byte 255,29,255,255,255,2 // lcall *0x2ffffff(%rip) # 3004dc0 <_sk_callback_hsw+0x3000673>
Mike Klein0aa742f2017-04-27 13:36:57 -040013984 .byte 255 // (bad)
13985 .byte 255 // (bad)
13986 .byte 255,6 // incl (%rsi)
13987 .byte 255 // (bad)
13988 .byte 255 // (bad)
13989 .byte 255,10 // decl (%rdx)
13990 .byte 255 // (bad)
13991 .byte 255 // (bad)
13992 .byte 255,14 // decl (%rsi)
13993 .byte 255 // (bad)
13994 .byte 255 // (bad)
13995 .byte 255,18 // callq *(%rdx)
13996 .byte 255 // (bad)
13997 .byte 255 // (bad)
13998 .byte 255,22 // callq *(%rsi)
13999 .byte 255 // (bad)
14000 .byte 255 // (bad)
14001 .byte 255,26 // lcall *(%rdx)
14002 .byte 255 // (bad)
14003 .byte 255 // (bad)
14004 .byte 255,30 // lcall *(%rsi)
14005 .byte 255 // (bad)
14006 .byte 255 // (bad)
14007 .byte 255 // .byte 0xff
14008
14009BALIGN16
14010 .byte 255,0 // incl (%rax)
14011 .byte 255,0 // incl (%rax)
14012 .byte 255,0 // incl (%rax)
14013 .byte 255,0 // incl (%rax)
14014 .byte 255,0 // incl (%rax)
14015 .byte 255,0 // incl (%rax)
14016 .byte 255,0 // incl (%rax)
14017 .byte 255,0 // incl (%rax)
14018 .byte 255,0 // incl (%rax)
14019 .byte 255,0 // incl (%rax)
14020 .byte 255,0 // incl (%rax)
14021 .byte 255,0 // incl (%rax)
14022 .byte 255,0 // incl (%rax)
14023 .byte 255,0 // incl (%rax)
14024 .byte 255,0 // incl (%rax)
14025 .byte 255,0 // incl (%rax)
Mike Klein67e61712017-04-26 09:52:09 -040014026BALIGN32
Mike Klein2229b572017-04-21 10:30:29 -040014027
Mike Klein7c4af542017-03-29 18:21:14 -040014028HIDDEN _sk_start_pipeline_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014029.globl _sk_start_pipeline_avx
Mike Klein86714282017-04-13 17:37:38 -040014030FUNCTION(_sk_start_pipeline_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014031_sk_start_pipeline_avx:
14032 .byte 65,87 // push %r15
14033 .byte 65,86 // push %r14
14034 .byte 65,85 // push %r13
14035 .byte 65,84 // push %r12
14036 .byte 83 // push %rbx
14037 .byte 73,137,205 // mov %rcx,%r13
14038 .byte 73,137,214 // mov %rdx,%r14
14039 .byte 72,137,251 // mov %rdi,%rbx
14040 .byte 72,173 // lods %ds:(%rsi),%rax
14041 .byte 73,137,199 // mov %rax,%r15
14042 .byte 73,137,244 // mov %rsi,%r12
14043 .byte 72,141,67,8 // lea 0x8(%rbx),%rax
14044 .byte 76,57,232 // cmp %r13,%rax
14045 .byte 118,5 // jbe 28 <_sk_start_pipeline_avx+0x28>
14046 .byte 72,137,223 // mov %rbx,%rdi
14047 .byte 235,65 // jmp 69 <_sk_start_pipeline_avx+0x69>
14048 .byte 185,0,0,0,0 // mov $0x0,%ecx
14049 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
14050 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
14051 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
14052 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
14053 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
14054 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
14055 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
14056 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
14057 .byte 72,137,223 // mov %rbx,%rdi
14058 .byte 76,137,230 // mov %r12,%rsi
14059 .byte 76,137,242 // mov %r14,%rdx
14060 .byte 65,255,215 // callq *%r15
14061 .byte 72,141,123,8 // lea 0x8(%rbx),%rdi
14062 .byte 72,131,195,16 // add $0x10,%rbx
14063 .byte 76,57,235 // cmp %r13,%rbx
14064 .byte 72,137,251 // mov %rdi,%rbx
14065 .byte 118,191 // jbe 28 <_sk_start_pipeline_avx+0x28>
14066 .byte 76,137,233 // mov %r13,%rcx
14067 .byte 72,41,249 // sub %rdi,%rcx
14068 .byte 116,41 // je 9a <_sk_start_pipeline_avx+0x9a>
14069 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
14070 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
14071 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
14072 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
14073 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
14074 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
14075 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
14076 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
14077 .byte 76,137,230 // mov %r12,%rsi
14078 .byte 76,137,242 // mov %r14,%rdx
14079 .byte 65,255,215 // callq *%r15
14080 .byte 76,137,232 // mov %r13,%rax
14081 .byte 91 // pop %rbx
14082 .byte 65,92 // pop %r12
14083 .byte 65,93 // pop %r13
14084 .byte 65,94 // pop %r14
14085 .byte 65,95 // pop %r15
14086 .byte 197,248,119 // vzeroupper
14087 .byte 195 // retq
14088
Mike Klein7c4af542017-03-29 18:21:14 -040014089HIDDEN _sk_just_return_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014090.globl _sk_just_return_avx
Mike Klein86714282017-04-13 17:37:38 -040014091FUNCTION(_sk_just_return_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014092_sk_just_return_avx:
14093 .byte 195 // retq
14094
Mike Klein7c4af542017-03-29 18:21:14 -040014095HIDDEN _sk_seed_shader_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014096.globl _sk_seed_shader_avx
Mike Klein86714282017-04-13 17:37:38 -040014097FUNCTION(_sk_seed_shader_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014098_sk_seed_shader_avx:
14099 .byte 72,173 // lods %ds:(%rsi),%rax
14100 .byte 197,249,110,199 // vmovd %edi,%xmm0
14101 .byte 197,249,112,192,0 // vpshufd $0x0,%xmm0,%xmm0
14102 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
14103 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040014104 .byte 196,226,125,24,13,183,99,0,0 // vbroadcastss 0x63b7(%rip),%ymm1 # 6480 <_sk_callback_avx+0x125>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014105 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
14106 .byte 197,252,88,2 // vaddps (%rdx),%ymm0,%ymm0
14107 .byte 196,226,125,24,16 // vbroadcastss (%rax),%ymm2
14108 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
14109 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040014110 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040014111 .byte 196,226,125,24,21,155,99,0,0 // vbroadcastss 0x639b(%rip),%ymm2 # 6484 <_sk_callback_avx+0x129>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014112 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
14113 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
14114 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
14115 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
14116 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
14117 .byte 255,224 // jmpq *%rax
14118
Mike Klein581e6982017-05-03 13:05:13 -040014119HIDDEN _sk_dither_avx
14120.globl _sk_dither_avx
14121FUNCTION(_sk_dither_avx)
14122_sk_dither_avx:
14123 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein5d7f2b52017-05-20 13:21:59 -040014124 .byte 197,124,16,66,32 // vmovups 0x20(%rdx),%ymm8
14125 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
14126 .byte 197,121,110,215 // vmovd %edi,%xmm10
14127 .byte 196,65,121,112,210,0 // vpshufd $0x0,%xmm10,%xmm10
14128 .byte 196,65,49,254,202 // vpaddd %xmm10,%xmm9,%xmm9
14129 .byte 196,65,57,254,194 // vpaddd %xmm10,%xmm8,%xmm8
14130 .byte 196,67,61,24,193,1 // vinsertf128 $0x1,%xmm9,%ymm8,%ymm8
Mike Klein581e6982017-05-03 13:05:13 -040014131 .byte 76,139,0 // mov (%rax),%r8
14132 .byte 196,66,125,24,8 // vbroadcastss (%r8),%ymm9
14133 .byte 196,65,60,87,209 // vxorps %ymm9,%ymm8,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040014134 .byte 196,98,125,24,29,76,99,0,0 // vbroadcastss 0x634c(%rip),%ymm11 # 6488 <_sk_callback_avx+0x12d>
Mike Klein581e6982017-05-03 13:05:13 -040014135 .byte 196,65,44,84,203 // vandps %ymm11,%ymm10,%ymm9
14136 .byte 196,193,25,114,241,5 // vpslld $0x5,%xmm9,%xmm12
14137 .byte 196,67,125,25,201,1 // vextractf128 $0x1,%ymm9,%xmm9
14138 .byte 196,193,49,114,241,5 // vpslld $0x5,%xmm9,%xmm9
14139 .byte 196,67,29,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm12,%ymm9
14140 .byte 196,65,60,84,219 // vandps %ymm11,%ymm8,%ymm11
14141 .byte 196,193,25,114,243,4 // vpslld $0x4,%xmm11,%xmm12
14142 .byte 196,67,125,25,219,1 // vextractf128 $0x1,%ymm11,%xmm11
14143 .byte 196,193,33,114,243,4 // vpslld $0x4,%xmm11,%xmm11
14144 .byte 196,67,29,24,219,1 // vinsertf128 $0x1,%xmm11,%ymm12,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040014145 .byte 196,98,125,24,37,13,99,0,0 // vbroadcastss 0x630d(%rip),%ymm12 # 648c <_sk_callback_avx+0x131>
14146 .byte 196,98,125,24,45,8,99,0,0 // vbroadcastss 0x6308(%rip),%ymm13 # 6490 <_sk_callback_avx+0x135>
Mike Klein581e6982017-05-03 13:05:13 -040014147 .byte 196,65,44,84,245 // vandps %ymm13,%ymm10,%ymm14
14148 .byte 196,193,1,114,246,2 // vpslld $0x2,%xmm14,%xmm15
14149 .byte 196,67,125,25,246,1 // vextractf128 $0x1,%ymm14,%xmm14
14150 .byte 196,193,9,114,246,2 // vpslld $0x2,%xmm14,%xmm14
14151 .byte 196,67,5,24,246,1 // vinsertf128 $0x1,%xmm14,%ymm15,%ymm14
14152 .byte 196,65,60,84,237 // vandps %ymm13,%ymm8,%ymm13
14153 .byte 196,65,17,254,253 // vpaddd %xmm13,%xmm13,%xmm15
14154 .byte 196,67,125,25,237,1 // vextractf128 $0x1,%ymm13,%xmm13
14155 .byte 196,65,17,254,237 // vpaddd %xmm13,%xmm13,%xmm13
14156 .byte 196,67,5,24,237,1 // vinsertf128 $0x1,%xmm13,%ymm15,%ymm13
14157 .byte 196,65,44,84,212 // vandps %ymm12,%ymm10,%ymm10
14158 .byte 196,193,1,114,210,1 // vpsrld $0x1,%xmm10,%xmm15
14159 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
14160 .byte 196,193,41,114,210,1 // vpsrld $0x1,%xmm10,%xmm10
14161 .byte 196,67,5,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm15,%ymm10
14162 .byte 196,65,60,84,196 // vandps %ymm12,%ymm8,%ymm8
14163 .byte 196,193,25,114,208,2 // vpsrld $0x2,%xmm8,%xmm12
14164 .byte 196,67,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm8
14165 .byte 196,193,57,114,208,2 // vpsrld $0x2,%xmm8,%xmm8
14166 .byte 196,67,29,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm12,%ymm8
14167 .byte 196,65,20,86,219 // vorps %ymm11,%ymm13,%ymm11
14168 .byte 196,65,36,86,192 // vorps %ymm8,%ymm11,%ymm8
Mike Klein581e6982017-05-03 13:05:13 -040014169 .byte 196,65,60,86,193 // vorps %ymm9,%ymm8,%ymm8
Mike Klein5d7f2b52017-05-20 13:21:59 -040014170 .byte 196,65,12,86,202 // vorps %ymm10,%ymm14,%ymm9
14171 .byte 196,65,60,86,193 // vorps %ymm9,%ymm8,%ymm8
Mike Klein581e6982017-05-03 13:05:13 -040014172 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040014173 .byte 196,98,125,24,13,115,98,0,0 // vbroadcastss 0x6273(%rip),%ymm9 # 6494 <_sk_callback_avx+0x139>
Mike Klein581e6982017-05-03 13:05:13 -040014174 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040014175 .byte 196,98,125,24,13,105,98,0,0 // vbroadcastss 0x6269(%rip),%ymm9 # 6498 <_sk_callback_avx+0x13d>
Mike Klein581e6982017-05-03 13:05:13 -040014176 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
14177 .byte 196,98,125,24,72,8 // vbroadcastss 0x8(%rax),%ymm9
14178 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
Mike Klein581e6982017-05-03 13:05:13 -040014179 .byte 197,188,88,192 // vaddps %ymm0,%ymm8,%ymm0
14180 .byte 197,188,88,201 // vaddps %ymm1,%ymm8,%ymm1
14181 .byte 197,188,88,210 // vaddps %ymm2,%ymm8,%ymm2
Mike Klein7e68bc92017-05-16 12:03:15 -040014182 .byte 197,252,93,195 // vminps %ymm3,%ymm0,%ymm0
14183 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
14184 .byte 197,188,95,192 // vmaxps %ymm0,%ymm8,%ymm0
14185 .byte 197,244,93,203 // vminps %ymm3,%ymm1,%ymm1
14186 .byte 197,188,95,201 // vmaxps %ymm1,%ymm8,%ymm1
14187 .byte 197,236,93,211 // vminps %ymm3,%ymm2,%ymm2
14188 .byte 197,188,95,210 // vmaxps %ymm2,%ymm8,%ymm2
Mike Klein581e6982017-05-03 13:05:13 -040014189 .byte 72,173 // lods %ds:(%rsi),%rax
14190 .byte 255,224 // jmpq *%rax
14191
Mike Klein7c4af542017-03-29 18:21:14 -040014192HIDDEN _sk_constant_color_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014193.globl _sk_constant_color_avx
Mike Klein86714282017-04-13 17:37:38 -040014194FUNCTION(_sk_constant_color_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014195_sk_constant_color_avx:
14196 .byte 72,173 // lods %ds:(%rsi),%rax
14197 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
14198 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
14199 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
14200 .byte 196,226,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm3
14201 .byte 72,173 // lods %ds:(%rsi),%rax
14202 .byte 255,224 // jmpq *%rax
14203
Mike Reed9959f722017-05-15 09:34:22 -040014204HIDDEN _sk_load_rgba_avx
14205.globl _sk_load_rgba_avx
14206FUNCTION(_sk_load_rgba_avx)
14207_sk_load_rgba_avx:
14208 .byte 72,173 // lods %ds:(%rsi),%rax
14209 .byte 197,252,16,0 // vmovups (%rax),%ymm0
14210 .byte 197,252,16,72,32 // vmovups 0x20(%rax),%ymm1
14211 .byte 197,252,16,80,64 // vmovups 0x40(%rax),%ymm2
14212 .byte 197,252,16,88,96 // vmovups 0x60(%rax),%ymm3
14213 .byte 72,173 // lods %ds:(%rsi),%rax
14214 .byte 255,224 // jmpq *%rax
14215
14216HIDDEN _sk_store_rgba_avx
14217.globl _sk_store_rgba_avx
14218FUNCTION(_sk_store_rgba_avx)
14219_sk_store_rgba_avx:
14220 .byte 72,173 // lods %ds:(%rsi),%rax
14221 .byte 197,252,17,0 // vmovups %ymm0,(%rax)
14222 .byte 197,252,17,72,32 // vmovups %ymm1,0x20(%rax)
14223 .byte 197,252,17,80,64 // vmovups %ymm2,0x40(%rax)
14224 .byte 197,252,17,88,96 // vmovups %ymm3,0x60(%rax)
14225 .byte 72,173 // lods %ds:(%rsi),%rax
14226 .byte 255,224 // jmpq *%rax
14227
Mike Klein7c4af542017-03-29 18:21:14 -040014228HIDDEN _sk_clear_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014229.globl _sk_clear_avx
Mike Klein86714282017-04-13 17:37:38 -040014230FUNCTION(_sk_clear_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014231_sk_clear_avx:
14232 .byte 72,173 // lods %ds:(%rsi),%rax
14233 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
14234 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
14235 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
14236 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
14237 .byte 255,224 // jmpq *%rax
14238
Mike Kleinaaca1e42017-03-31 09:29:01 -040014239HIDDEN _sk_srcatop_avx
14240.globl _sk_srcatop_avx
Mike Klein86714282017-04-13 17:37:38 -040014241FUNCTION(_sk_srcatop_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040014242_sk_srcatop_avx:
Mike Kleinfe560a82017-05-01 12:56:35 -040014243 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040014244 .byte 196,98,125,24,5,192,97,0,0 // vbroadcastss 0x61c0(%rip),%ymm8 # 649c <_sk_callback_avx+0x141>
Mike Kleinfe560a82017-05-01 12:56:35 -040014245 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
14246 .byte 197,60,89,204 // vmulps %ymm4,%ymm8,%ymm9
14247 .byte 197,180,88,192 // vaddps %ymm0,%ymm9,%ymm0
Mike Kleinaaca1e42017-03-31 09:29:01 -040014248 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040014249 .byte 197,60,89,205 // vmulps %ymm5,%ymm8,%ymm9
14250 .byte 197,180,88,201 // vaddps %ymm1,%ymm9,%ymm1
Mike Kleinaaca1e42017-03-31 09:29:01 -040014251 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040014252 .byte 197,60,89,206 // vmulps %ymm6,%ymm8,%ymm9
14253 .byte 197,180,88,210 // vaddps %ymm2,%ymm9,%ymm2
Mike Kleinaaca1e42017-03-31 09:29:01 -040014254 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040014255 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
Mike Kleinaaca1e42017-03-31 09:29:01 -040014256 .byte 196,193,100,88,216 // vaddps %ymm8,%ymm3,%ymm3
14257 .byte 72,173 // lods %ds:(%rsi),%rax
14258 .byte 255,224 // jmpq *%rax
14259
14260HIDDEN _sk_dstatop_avx
14261.globl _sk_dstatop_avx
Mike Klein86714282017-04-13 17:37:38 -040014262FUNCTION(_sk_dstatop_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040014263_sk_dstatop_avx:
14264 .byte 197,100,89,196 // vmulps %ymm4,%ymm3,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040014265 .byte 196,98,125,24,13,130,97,0,0 // vbroadcastss 0x6182(%rip),%ymm9 # 64a0 <_sk_callback_avx+0x145>
Mike Kleinaaca1e42017-03-31 09:29:01 -040014266 .byte 197,52,92,207 // vsubps %ymm7,%ymm9,%ymm9
14267 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
14268 .byte 197,188,88,192 // vaddps %ymm0,%ymm8,%ymm0
14269 .byte 197,100,89,197 // vmulps %ymm5,%ymm3,%ymm8
14270 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
14271 .byte 197,188,88,201 // vaddps %ymm1,%ymm8,%ymm1
14272 .byte 197,100,89,198 // vmulps %ymm6,%ymm3,%ymm8
14273 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
14274 .byte 197,188,88,210 // vaddps %ymm2,%ymm8,%ymm2
14275 .byte 197,100,89,199 // vmulps %ymm7,%ymm3,%ymm8
14276 .byte 197,180,89,219 // vmulps %ymm3,%ymm9,%ymm3
14277 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14278 .byte 72,173 // lods %ds:(%rsi),%rax
14279 .byte 255,224 // jmpq *%rax
14280
14281HIDDEN _sk_srcin_avx
14282.globl _sk_srcin_avx
Mike Klein86714282017-04-13 17:37:38 -040014283FUNCTION(_sk_srcin_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040014284_sk_srcin_avx:
14285 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
14286 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
14287 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
14288 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
14289 .byte 72,173 // lods %ds:(%rsi),%rax
14290 .byte 255,224 // jmpq *%rax
14291
14292HIDDEN _sk_dstin_avx
14293.globl _sk_dstin_avx
Mike Klein86714282017-04-13 17:37:38 -040014294FUNCTION(_sk_dstin_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040014295_sk_dstin_avx:
14296 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
14297 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
14298 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
14299 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
14300 .byte 72,173 // lods %ds:(%rsi),%rax
14301 .byte 255,224 // jmpq *%rax
14302
14303HIDDEN _sk_srcout_avx
14304.globl _sk_srcout_avx
Mike Klein86714282017-04-13 17:37:38 -040014305FUNCTION(_sk_srcout_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040014306_sk_srcout_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040014307 .byte 196,98,125,24,5,33,97,0,0 // vbroadcastss 0x6121(%rip),%ymm8 # 64a4 <_sk_callback_avx+0x149>
Mike Kleinaaca1e42017-03-31 09:29:01 -040014308 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
14309 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
14310 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
14311 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
14312 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
14313 .byte 72,173 // lods %ds:(%rsi),%rax
14314 .byte 255,224 // jmpq *%rax
14315
14316HIDDEN _sk_dstout_avx
14317.globl _sk_dstout_avx
Mike Klein86714282017-04-13 17:37:38 -040014318FUNCTION(_sk_dstout_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040014319_sk_dstout_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040014320 .byte 196,226,125,24,5,4,97,0,0 // vbroadcastss 0x6104(%rip),%ymm0 # 64a8 <_sk_callback_avx+0x14d>
Mike Kleinaaca1e42017-03-31 09:29:01 -040014321 .byte 197,252,92,219 // vsubps %ymm3,%ymm0,%ymm3
14322 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
14323 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
14324 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
14325 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040014326 .byte 72,173 // lods %ds:(%rsi),%rax
14327 .byte 255,224 // jmpq *%rax
14328
Mike Klein7c4af542017-03-29 18:21:14 -040014329HIDDEN _sk_srcover_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014330.globl _sk_srcover_avx
Mike Klein86714282017-04-13 17:37:38 -040014331FUNCTION(_sk_srcover_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014332_sk_srcover_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040014333 .byte 196,98,125,24,5,231,96,0,0 // vbroadcastss 0x60e7(%rip),%ymm8 # 64ac <_sk_callback_avx+0x151>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014334 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
14335 .byte 197,60,89,204 // vmulps %ymm4,%ymm8,%ymm9
14336 .byte 197,180,88,192 // vaddps %ymm0,%ymm9,%ymm0
14337 .byte 197,60,89,205 // vmulps %ymm5,%ymm8,%ymm9
14338 .byte 197,180,88,201 // vaddps %ymm1,%ymm9,%ymm1
14339 .byte 197,60,89,206 // vmulps %ymm6,%ymm8,%ymm9
14340 .byte 197,180,88,210 // vaddps %ymm2,%ymm9,%ymm2
14341 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
14342 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14343 .byte 72,173 // lods %ds:(%rsi),%rax
14344 .byte 255,224 // jmpq *%rax
14345
Mike Klein7c4af542017-03-29 18:21:14 -040014346HIDDEN _sk_dstover_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014347.globl _sk_dstover_avx
Mike Klein86714282017-04-13 17:37:38 -040014348FUNCTION(_sk_dstover_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014349_sk_dstover_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040014350 .byte 196,98,125,24,5,186,96,0,0 // vbroadcastss 0x60ba(%rip),%ymm8 # 64b0 <_sk_callback_avx+0x155>
Mike Kleind7e06ae2017-03-29 16:33:06 -040014351 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
14352 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
14353 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
14354 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
14355 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
14356 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
14357 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
14358 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
14359 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
14360 .byte 72,173 // lods %ds:(%rsi),%rax
14361 .byte 255,224 // jmpq *%rax
14362
Mike Kleinaaca1e42017-03-31 09:29:01 -040014363HIDDEN _sk_modulate_avx
14364.globl _sk_modulate_avx
Mike Klein86714282017-04-13 17:37:38 -040014365FUNCTION(_sk_modulate_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040014366_sk_modulate_avx:
14367 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
14368 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
14369 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
14370 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
14371 .byte 72,173 // lods %ds:(%rsi),%rax
14372 .byte 255,224 // jmpq *%rax
14373
14374HIDDEN _sk_multiply_avx
14375.globl _sk_multiply_avx
Mike Klein86714282017-04-13 17:37:38 -040014376FUNCTION(_sk_multiply_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040014377_sk_multiply_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040014378 .byte 196,98,125,24,5,121,96,0,0 // vbroadcastss 0x6079(%rip),%ymm8 # 64b4 <_sk_callback_avx+0x159>
Mike Kleinaaca1e42017-03-31 09:29:01 -040014379 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
14380 .byte 197,52,89,208 // vmulps %ymm0,%ymm9,%ymm10
14381 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
14382 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
Mike Kleinfe560a82017-05-01 12:56:35 -040014383 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
Mike Kleinaaca1e42017-03-31 09:29:01 -040014384 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
14385 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
14386 .byte 197,52,89,209 // vmulps %ymm1,%ymm9,%ymm10
14387 .byte 197,60,89,221 // vmulps %ymm5,%ymm8,%ymm11
14388 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
14389 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
14390 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
14391 .byte 197,52,89,210 // vmulps %ymm2,%ymm9,%ymm10
14392 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
14393 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
14394 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
14395 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
14396 .byte 197,52,89,203 // vmulps %ymm3,%ymm9,%ymm9
14397 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
14398 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
14399 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
14400 .byte 196,193,100,88,216 // vaddps %ymm8,%ymm3,%ymm3
14401 .byte 72,173 // lods %ds:(%rsi),%rax
14402 .byte 255,224 // jmpq *%rax
14403
14404HIDDEN _sk_plus__avx
14405.globl _sk_plus__avx
Mike Klein86714282017-04-13 17:37:38 -040014406FUNCTION(_sk_plus__avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040014407_sk_plus__avx:
14408 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
14409 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
14410 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
14411 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
14412 .byte 72,173 // lods %ds:(%rsi),%rax
14413 .byte 255,224 // jmpq *%rax
14414
14415HIDDEN _sk_screen_avx
14416.globl _sk_screen_avx
Mike Klein86714282017-04-13 17:37:38 -040014417FUNCTION(_sk_screen_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040014418_sk_screen_avx:
14419 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
14420 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
14421 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
14422 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
14423 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
14424 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
14425 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
14426 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
14427 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
14428 .byte 197,100,88,199 // vaddps %ymm7,%ymm3,%ymm8
14429 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
14430 .byte 197,188,92,219 // vsubps %ymm3,%ymm8,%ymm3
14431 .byte 72,173 // lods %ds:(%rsi),%rax
14432 .byte 255,224 // jmpq *%rax
14433
14434HIDDEN _sk_xor__avx
14435.globl _sk_xor__avx
Mike Klein86714282017-04-13 17:37:38 -040014436FUNCTION(_sk_xor__avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040014437_sk_xor__avx:
Mike Klein8ca33562017-05-23 08:07:43 -040014438 .byte 196,98,125,24,5,200,95,0,0 // vbroadcastss 0x5fc8(%rip),%ymm8 # 64b8 <_sk_callback_avx+0x15d>
Mike Kleinaaca1e42017-03-31 09:29:01 -040014439 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
14440 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
14441 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
14442 .byte 197,60,89,212 // vmulps %ymm4,%ymm8,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040014443 .byte 197,172,88,192 // vaddps %ymm0,%ymm10,%ymm0
Mike Kleinaaca1e42017-03-31 09:29:01 -040014444 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
14445 .byte 197,60,89,213 // vmulps %ymm5,%ymm8,%ymm10
14446 .byte 197,172,88,201 // vaddps %ymm1,%ymm10,%ymm1
14447 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
14448 .byte 197,60,89,214 // vmulps %ymm6,%ymm8,%ymm10
14449 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
14450 .byte 197,180,89,219 // vmulps %ymm3,%ymm9,%ymm3
14451 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
14452 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14453 .byte 72,173 // lods %ds:(%rsi),%rax
14454 .byte 255,224 // jmpq *%rax
14455
Mike Klein66b09ab2017-03-31 10:29:40 -040014456HIDDEN _sk_darken_avx
14457.globl _sk_darken_avx
Mike Klein86714282017-04-13 17:37:38 -040014458FUNCTION(_sk_darken_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040014459_sk_darken_avx:
14460 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
14461 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
14462 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
14463 .byte 196,193,124,95,193 // vmaxps %ymm9,%ymm0,%ymm0
14464 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
14465 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
14466 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
14467 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
14468 .byte 196,193,116,95,201 // vmaxps %ymm9,%ymm1,%ymm1
14469 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
14470 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
14471 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
14472 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
14473 .byte 196,193,108,95,209 // vmaxps %ymm9,%ymm2,%ymm2
14474 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040014475 .byte 196,98,125,24,5,72,95,0,0 // vbroadcastss 0x5f48(%rip),%ymm8 # 64bc <_sk_callback_avx+0x161>
Mike Klein66b09ab2017-03-31 10:29:40 -040014476 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
14477 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
14478 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14479 .byte 72,173 // lods %ds:(%rsi),%rax
14480 .byte 255,224 // jmpq *%rax
14481
14482HIDDEN _sk_lighten_avx
14483.globl _sk_lighten_avx
Mike Klein86714282017-04-13 17:37:38 -040014484FUNCTION(_sk_lighten_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040014485_sk_lighten_avx:
14486 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
14487 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
14488 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
14489 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
14490 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
14491 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
14492 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
14493 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
14494 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
14495 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
14496 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
14497 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
14498 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
14499 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
14500 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040014501 .byte 196,98,125,24,5,244,94,0,0 // vbroadcastss 0x5ef4(%rip),%ymm8 # 64c0 <_sk_callback_avx+0x165>
Mike Klein66b09ab2017-03-31 10:29:40 -040014502 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
14503 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
14504 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14505 .byte 72,173 // lods %ds:(%rsi),%rax
14506 .byte 255,224 // jmpq *%rax
14507
14508HIDDEN _sk_difference_avx
14509.globl _sk_difference_avx
Mike Klein86714282017-04-13 17:37:38 -040014510FUNCTION(_sk_difference_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040014511_sk_difference_avx:
14512 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
14513 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
14514 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
14515 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
14516 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
14517 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
14518 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
14519 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
14520 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
14521 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
14522 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
14523 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
14524 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
14525 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
14526 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
14527 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
14528 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
14529 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040014530 .byte 196,98,125,24,5,148,94,0,0 // vbroadcastss 0x5e94(%rip),%ymm8 # 64c4 <_sk_callback_avx+0x169>
Mike Klein66b09ab2017-03-31 10:29:40 -040014531 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
14532 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
14533 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14534 .byte 72,173 // lods %ds:(%rsi),%rax
14535 .byte 255,224 // jmpq *%rax
14536
14537HIDDEN _sk_exclusion_avx
14538.globl _sk_exclusion_avx
Mike Klein86714282017-04-13 17:37:38 -040014539FUNCTION(_sk_exclusion_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040014540_sk_exclusion_avx:
14541 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
14542 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
14543 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
14544 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
14545 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
14546 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
14547 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
14548 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
14549 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
14550 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
14551 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
14552 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040014553 .byte 196,98,125,24,5,79,94,0,0 // vbroadcastss 0x5e4f(%rip),%ymm8 # 64c8 <_sk_callback_avx+0x16d>
Mike Klein66b09ab2017-03-31 10:29:40 -040014554 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
14555 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
14556 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14557 .byte 72,173 // lods %ds:(%rsi),%rax
14558 .byte 255,224 // jmpq *%rax
14559
Mike Klein61b84162017-03-31 11:48:14 -040014560HIDDEN _sk_colorburn_avx
14561.globl _sk_colorburn_avx
Mike Klein86714282017-04-13 17:37:38 -040014562FUNCTION(_sk_colorburn_avx)
Mike Klein61b84162017-03-31 11:48:14 -040014563_sk_colorburn_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040014564 .byte 196,98,125,24,5,58,94,0,0 // vbroadcastss 0x5e3a(%rip),%ymm8 # 64cc <_sk_callback_avx+0x171>
Mike Klein61b84162017-03-31 11:48:14 -040014565 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
14566 .byte 197,52,89,216 // vmulps %ymm0,%ymm9,%ymm11
14567 .byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
14568 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
14569 .byte 197,60,89,228 // vmulps %ymm4,%ymm8,%ymm12
14570 .byte 197,68,92,236 // vsubps %ymm4,%ymm7,%ymm13
14571 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
14572 .byte 197,20,94,232 // vdivps %ymm0,%ymm13,%ymm13
14573 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
14574 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
14575 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
Mike Kleinfe560a82017-05-01 12:56:35 -040014576 .byte 196,65,36,88,237 // vaddps %ymm13,%ymm11,%ymm13
Mike Klein61b84162017-03-31 11:48:14 -040014577 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
14578 .byte 197,28,88,224 // vaddps %ymm0,%ymm12,%ymm12
14579 .byte 196,193,124,194,194,0 // vcmpeqps %ymm10,%ymm0,%ymm0
14580 .byte 196,195,21,74,196,0 // vblendvps %ymm0,%ymm12,%ymm13,%ymm0
14581 .byte 197,92,194,231,0 // vcmpeqps %ymm7,%ymm4,%ymm12
14582 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
14583 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
14584 .byte 197,52,89,217 // vmulps %ymm1,%ymm9,%ymm11
14585 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
14586 .byte 197,68,92,237 // vsubps %ymm5,%ymm7,%ymm13
14587 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
14588 .byte 197,20,94,233 // vdivps %ymm1,%ymm13,%ymm13
14589 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
14590 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
14591 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
14592 .byte 196,65,36,88,237 // vaddps %ymm13,%ymm11,%ymm13
14593 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
14594 .byte 197,28,88,225 // vaddps %ymm1,%ymm12,%ymm12
14595 .byte 196,193,116,194,202,0 // vcmpeqps %ymm10,%ymm1,%ymm1
14596 .byte 196,195,21,74,204,16 // vblendvps %ymm1,%ymm12,%ymm13,%ymm1
14597 .byte 197,84,194,231,0 // vcmpeqps %ymm7,%ymm5,%ymm12
14598 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
14599 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
14600 .byte 197,52,89,202 // vmulps %ymm2,%ymm9,%ymm9
14601 .byte 196,65,108,194,210,0 // vcmpeqps %ymm10,%ymm2,%ymm10
14602 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
14603 .byte 197,68,92,230 // vsubps %ymm6,%ymm7,%ymm12
14604 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
14605 .byte 197,28,94,226 // vdivps %ymm2,%ymm12,%ymm12
14606 .byte 197,164,88,210 // vaddps %ymm2,%ymm11,%ymm2
14607 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
14608 .byte 196,65,68,92,228 // vsubps %ymm12,%ymm7,%ymm12
14609 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
14610 .byte 196,65,52,88,228 // vaddps %ymm12,%ymm9,%ymm12
14611 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
14612 .byte 196,227,37,74,210,160 // vblendvps %ymm10,%ymm2,%ymm11,%ymm2
14613 .byte 197,76,194,215,0 // vcmpeqps %ymm7,%ymm6,%ymm10
14614 .byte 197,52,88,206 // vaddps %ymm6,%ymm9,%ymm9
14615 .byte 196,195,109,74,209,160 // vblendvps %ymm10,%ymm9,%ymm2,%ymm2
14616 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
14617 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14618 .byte 72,173 // lods %ds:(%rsi),%rax
14619 .byte 255,224 // jmpq *%rax
14620
14621HIDDEN _sk_colordodge_avx
14622.globl _sk_colordodge_avx
Mike Klein86714282017-04-13 17:37:38 -040014623FUNCTION(_sk_colordodge_avx)
Mike Klein61b84162017-03-31 11:48:14 -040014624_sk_colordodge_avx:
14625 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040014626 .byte 196,98,125,24,13,54,93,0,0 // vbroadcastss 0x5d36(%rip),%ymm9 # 64d0 <_sk_callback_avx+0x175>
Mike Klein61b84162017-03-31 11:48:14 -040014627 .byte 197,52,92,215 // vsubps %ymm7,%ymm9,%ymm10
14628 .byte 197,44,89,216 // vmulps %ymm0,%ymm10,%ymm11
14629 .byte 197,52,92,203 // vsubps %ymm3,%ymm9,%ymm9
14630 .byte 197,100,89,228 // vmulps %ymm4,%ymm3,%ymm12
14631 .byte 197,100,92,232 // vsubps %ymm0,%ymm3,%ymm13
14632 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
14633 .byte 197,52,89,236 // vmulps %ymm4,%ymm9,%ymm13
14634 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
14635 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
Mike Kleinfe560a82017-05-01 12:56:35 -040014636 .byte 196,65,36,88,228 // vaddps %ymm12,%ymm11,%ymm12
Mike Klein61b84162017-03-31 11:48:14 -040014637 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
14638 .byte 197,20,88,232 // vaddps %ymm0,%ymm13,%ymm13
14639 .byte 197,252,194,195,0 // vcmpeqps %ymm3,%ymm0,%ymm0
14640 .byte 196,195,29,74,197,0 // vblendvps %ymm0,%ymm13,%ymm12,%ymm0
14641 .byte 196,65,92,194,224,0 // vcmpeqps %ymm8,%ymm4,%ymm12
14642 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
14643 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
14644 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
14645 .byte 197,100,89,229 // vmulps %ymm5,%ymm3,%ymm12
14646 .byte 197,100,92,233 // vsubps %ymm1,%ymm3,%ymm13
14647 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
14648 .byte 197,52,89,237 // vmulps %ymm5,%ymm9,%ymm13
14649 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
14650 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
Mike Kleinfe560a82017-05-01 12:56:35 -040014651 .byte 196,65,36,88,228 // vaddps %ymm12,%ymm11,%ymm12
Mike Klein61b84162017-03-31 11:48:14 -040014652 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
14653 .byte 197,20,88,233 // vaddps %ymm1,%ymm13,%ymm13
14654 .byte 197,244,194,203,0 // vcmpeqps %ymm3,%ymm1,%ymm1
14655 .byte 196,195,29,74,205,16 // vblendvps %ymm1,%ymm13,%ymm12,%ymm1
14656 .byte 196,65,84,194,224,0 // vcmpeqps %ymm8,%ymm5,%ymm12
14657 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
14658 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
14659 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
14660 .byte 197,100,89,222 // vmulps %ymm6,%ymm3,%ymm11
14661 .byte 197,100,92,226 // vsubps %ymm2,%ymm3,%ymm12
14662 .byte 196,65,36,94,220 // vdivps %ymm12,%ymm11,%ymm11
14663 .byte 197,52,89,230 // vmulps %ymm6,%ymm9,%ymm12
14664 .byte 196,65,68,93,219 // vminps %ymm11,%ymm7,%ymm11
14665 .byte 197,36,89,219 // vmulps %ymm3,%ymm11,%ymm11
14666 .byte 196,65,44,88,219 // vaddps %ymm11,%ymm10,%ymm11
14667 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
14668 .byte 197,28,88,226 // vaddps %ymm2,%ymm12,%ymm12
14669 .byte 197,236,194,211,0 // vcmpeqps %ymm3,%ymm2,%ymm2
14670 .byte 196,195,37,74,212,32 // vblendvps %ymm2,%ymm12,%ymm11,%ymm2
14671 .byte 196,65,76,194,192,0 // vcmpeqps %ymm8,%ymm6,%ymm8
14672 .byte 197,44,88,214 // vaddps %ymm6,%ymm10,%ymm10
14673 .byte 196,195,109,74,210,128 // vblendvps %ymm8,%ymm10,%ymm2,%ymm2
14674 .byte 197,52,89,199 // vmulps %ymm7,%ymm9,%ymm8
14675 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14676 .byte 72,173 // lods %ds:(%rsi),%rax
14677 .byte 255,224 // jmpq *%rax
14678
14679HIDDEN _sk_hardlight_avx
14680.globl _sk_hardlight_avx
Mike Klein86714282017-04-13 17:37:38 -040014681FUNCTION(_sk_hardlight_avx)
Mike Klein61b84162017-03-31 11:48:14 -040014682_sk_hardlight_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040014683 .byte 196,98,125,24,5,72,92,0,0 // vbroadcastss 0x5c48(%rip),%ymm8 # 64d4 <_sk_callback_avx+0x179>
Mike Klein61b84162017-03-31 11:48:14 -040014684 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
14685 .byte 197,44,89,200 // vmulps %ymm0,%ymm10,%ymm9
14686 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
14687 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
Mike Kleinfe560a82017-05-01 12:56:35 -040014688 .byte 196,65,36,88,217 // vaddps %ymm9,%ymm11,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -040014689 .byte 197,124,88,200 // vaddps %ymm0,%ymm0,%ymm9
14690 .byte 197,52,194,227,2 // vcmpleps %ymm3,%ymm9,%ymm12
14691 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
14692 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
14693 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
14694 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
14695 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
14696 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
14697 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
14698 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
14699 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040014700 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -040014701 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
14702 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
14703 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
14704 .byte 197,116,88,225 // vaddps %ymm1,%ymm1,%ymm12
14705 .byte 197,28,194,227,2 // vcmpleps %ymm3,%ymm12,%ymm12
14706 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
14707 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
14708 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
14709 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
14710 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
14711 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
14712 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
14713 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040014714 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -040014715 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
14716 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
14717 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
14718 .byte 197,108,88,218 // vaddps %ymm2,%ymm2,%ymm11
14719 .byte 197,36,194,219,2 // vcmpleps %ymm3,%ymm11,%ymm11
14720 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
14721 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
14722 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
14723 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
14724 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
14725 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
14726 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
14727 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040014728 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -040014729 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
14730 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14731 .byte 72,173 // lods %ds:(%rsi),%rax
14732 .byte 255,224 // jmpq *%rax
14733
14734HIDDEN _sk_overlay_avx
14735.globl _sk_overlay_avx
Mike Klein86714282017-04-13 17:37:38 -040014736FUNCTION(_sk_overlay_avx)
Mike Klein61b84162017-03-31 11:48:14 -040014737_sk_overlay_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040014738 .byte 196,98,125,24,5,113,91,0,0 // vbroadcastss 0x5b71(%rip),%ymm8 # 64d8 <_sk_callback_avx+0x17d>
Mike Klein61b84162017-03-31 11:48:14 -040014739 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
14740 .byte 197,44,89,200 // vmulps %ymm0,%ymm10,%ymm9
14741 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
14742 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
Mike Kleinfe560a82017-05-01 12:56:35 -040014743 .byte 196,65,36,88,217 // vaddps %ymm9,%ymm11,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -040014744 .byte 197,92,88,204 // vaddps %ymm4,%ymm4,%ymm9
14745 .byte 197,52,194,231,2 // vcmpleps %ymm7,%ymm9,%ymm12
14746 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
14747 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
14748 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
14749 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
14750 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
14751 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
14752 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
14753 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
14754 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040014755 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -040014756 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
14757 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
14758 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
14759 .byte 197,84,88,229 // vaddps %ymm5,%ymm5,%ymm12
14760 .byte 197,28,194,231,2 // vcmpleps %ymm7,%ymm12,%ymm12
14761 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
14762 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
14763 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
14764 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
14765 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
14766 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
14767 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
14768 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040014769 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -040014770 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
14771 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
14772 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
14773 .byte 197,76,88,222 // vaddps %ymm6,%ymm6,%ymm11
14774 .byte 197,36,194,223,2 // vcmpleps %ymm7,%ymm11,%ymm11
14775 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
14776 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
14777 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
14778 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
14779 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
14780 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
14781 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
14782 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040014783 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -040014784 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
14785 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14786 .byte 72,173 // lods %ds:(%rsi),%rax
14787 .byte 255,224 // jmpq *%rax
14788
14789HIDDEN _sk_softlight_avx
14790.globl _sk_softlight_avx
Mike Klein86714282017-04-13 17:37:38 -040014791FUNCTION(_sk_softlight_avx)
Mike Klein61b84162017-03-31 11:48:14 -040014792_sk_softlight_avx:
Mike Klein15bf6782017-03-31 12:21:46 -040014793 .byte 197,252,17,84,36,200 // vmovups %ymm2,-0x38(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040014794 .byte 197,252,40,209 // vmovaps %ymm1,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040014795 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -040014796 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
14797 .byte 197,52,194,215,1 // vcmpltps %ymm7,%ymm9,%ymm10
14798 .byte 197,92,94,199 // vdivps %ymm7,%ymm4,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040014799 .byte 196,67,53,74,224,160 // vblendvps %ymm10,%ymm8,%ymm9,%ymm12
14800 .byte 196,65,28,88,196 // vaddps %ymm12,%ymm12,%ymm8
14801 .byte 196,65,60,88,192 // vaddps %ymm8,%ymm8,%ymm8
14802 .byte 196,65,60,89,216 // vmulps %ymm8,%ymm8,%ymm11
14803 .byte 196,65,60,88,195 // vaddps %ymm11,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040014804 .byte 196,98,125,24,29,104,90,0,0 // vbroadcastss 0x5a68(%rip),%ymm11 # 64e0 <_sk_callback_avx+0x185>
Mike Kleinfe560a82017-05-01 12:56:35 -040014805 .byte 196,65,28,88,235 // vaddps %ymm11,%ymm12,%ymm13
14806 .byte 196,65,20,89,192 // vmulps %ymm8,%ymm13,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040014807 .byte 196,98,125,24,45,89,90,0,0 // vbroadcastss 0x5a59(%rip),%ymm13 # 64e4 <_sk_callback_avx+0x189>
Mike Kleinfe560a82017-05-01 12:56:35 -040014808 .byte 196,65,28,89,245 // vmulps %ymm13,%ymm12,%ymm14
14809 .byte 196,65,12,88,192 // vaddps %ymm8,%ymm14,%ymm8
14810 .byte 196,65,124,82,244 // vrsqrtps %ymm12,%ymm14
Mike Klein61b84162017-03-31 11:48:14 -040014811 .byte 196,65,124,83,246 // vrcpps %ymm14,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -040014812 .byte 196,65,12,92,244 // vsubps %ymm12,%ymm14,%ymm14
Mike Klein61b84162017-03-31 11:48:14 -040014813 .byte 197,92,88,252 // vaddps %ymm4,%ymm4,%ymm15
14814 .byte 196,65,4,88,255 // vaddps %ymm15,%ymm15,%ymm15
14815 .byte 197,4,194,255,2 // vcmpleps %ymm7,%ymm15,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -040014816 .byte 196,67,13,74,240,240 // vblendvps %ymm15,%ymm8,%ymm14,%ymm14
14817 .byte 197,116,88,249 // vaddps %ymm1,%ymm1,%ymm15
Mike Klein8ca33562017-05-23 08:07:43 -040014818 .byte 196,98,125,24,5,23,90,0,0 // vbroadcastss 0x5a17(%rip),%ymm8 # 64dc <_sk_callback_avx+0x181>
Mike Kleinfe560a82017-05-01 12:56:35 -040014819 .byte 196,65,60,92,228 // vsubps %ymm12,%ymm8,%ymm12
14820 .byte 197,132,92,195 // vsubps %ymm3,%ymm15,%ymm0
14821 .byte 196,65,124,89,228 // vmulps %ymm12,%ymm0,%ymm12
14822 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
14823 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
14824 .byte 197,100,89,244 // vmulps %ymm4,%ymm3,%ymm14
14825 .byte 197,140,88,192 // vaddps %ymm0,%ymm14,%ymm0
14826 .byte 197,28,88,227 // vaddps %ymm3,%ymm12,%ymm12
14827 .byte 197,28,89,228 // vmulps %ymm4,%ymm12,%ymm12
14828 .byte 197,4,194,243,2 // vcmpleps %ymm3,%ymm15,%ymm14
14829 .byte 196,195,125,74,196,224 // vblendvps %ymm14,%ymm12,%ymm0,%ymm0
14830 .byte 197,252,17,68,36,168 // vmovups %ymm0,-0x58(%rsp)
14831 .byte 197,212,94,199 // vdivps %ymm7,%ymm5,%ymm0
14832 .byte 196,227,53,74,192,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -040014833 .byte 197,124,88,240 // vaddps %ymm0,%ymm0,%ymm14
Mike Klein61b84162017-03-31 11:48:14 -040014834 .byte 196,65,12,88,246 // vaddps %ymm14,%ymm14,%ymm14
14835 .byte 196,65,12,89,254 // vmulps %ymm14,%ymm14,%ymm15
14836 .byte 196,65,12,88,247 // vaddps %ymm15,%ymm14,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -040014837 .byte 196,65,124,88,251 // vaddps %ymm11,%ymm0,%ymm15
Mike Klein61b84162017-03-31 11:48:14 -040014838 .byte 196,65,4,89,246 // vmulps %ymm14,%ymm15,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -040014839 .byte 196,65,124,89,253 // vmulps %ymm13,%ymm0,%ymm15
Mike Klein61b84162017-03-31 11:48:14 -040014840 .byte 196,65,4,88,246 // vaddps %ymm14,%ymm15,%ymm14
Mike Kleinfe560a82017-05-01 12:56:35 -040014841 .byte 197,124,82,248 // vrsqrtps %ymm0,%ymm15
Mike Klein61b84162017-03-31 11:48:14 -040014842 .byte 196,65,124,83,255 // vrcpps %ymm15,%ymm15
Mike Kleinfe560a82017-05-01 12:56:35 -040014843 .byte 197,4,92,248 // vsubps %ymm0,%ymm15,%ymm15
14844 .byte 197,84,88,229 // vaddps %ymm5,%ymm5,%ymm12
Mike Klein61b84162017-03-31 11:48:14 -040014845 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
14846 .byte 197,28,194,231,2 // vcmpleps %ymm7,%ymm12,%ymm12
Mike Kleinfe560a82017-05-01 12:56:35 -040014847 .byte 196,67,5,74,230,192 // vblendvps %ymm12,%ymm14,%ymm15,%ymm12
14848 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
14849 .byte 197,108,88,242 // vaddps %ymm2,%ymm2,%ymm14
14850 .byte 197,12,92,251 // vsubps %ymm3,%ymm14,%ymm15
14851 .byte 197,132,89,192 // vmulps %ymm0,%ymm15,%ymm0
14852 .byte 197,4,89,255 // vmulps %ymm7,%ymm15,%ymm15
14853 .byte 196,65,4,89,228 // vmulps %ymm12,%ymm15,%ymm12
14854 .byte 197,100,89,253 // vmulps %ymm5,%ymm3,%ymm15
14855 .byte 196,65,4,88,228 // vaddps %ymm12,%ymm15,%ymm12
14856 .byte 197,252,88,195 // vaddps %ymm3,%ymm0,%ymm0
14857 .byte 197,252,89,197 // vmulps %ymm5,%ymm0,%ymm0
14858 .byte 197,12,194,243,2 // vcmpleps %ymm3,%ymm14,%ymm14
14859 .byte 196,99,29,74,240,224 // vblendvps %ymm14,%ymm0,%ymm12,%ymm14
14860 .byte 197,204,94,199 // vdivps %ymm7,%ymm6,%ymm0
14861 .byte 196,227,53,74,192,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm0
14862 .byte 197,124,88,200 // vaddps %ymm0,%ymm0,%ymm9
14863 .byte 196,65,52,88,201 // vaddps %ymm9,%ymm9,%ymm9
14864 .byte 196,65,52,89,209 // vmulps %ymm9,%ymm9,%ymm10
14865 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
14866 .byte 196,65,124,88,211 // vaddps %ymm11,%ymm0,%ymm10
14867 .byte 196,65,44,89,201 // vmulps %ymm9,%ymm10,%ymm9
14868 .byte 196,65,124,89,213 // vmulps %ymm13,%ymm0,%ymm10
14869 .byte 196,65,44,88,201 // vaddps %ymm9,%ymm10,%ymm9
14870 .byte 197,124,82,208 // vrsqrtps %ymm0,%ymm10
14871 .byte 196,65,124,83,210 // vrcpps %ymm10,%ymm10
14872 .byte 197,44,92,208 // vsubps %ymm0,%ymm10,%ymm10
14873 .byte 197,76,88,222 // vaddps %ymm6,%ymm6,%ymm11
14874 .byte 196,65,36,88,219 // vaddps %ymm11,%ymm11,%ymm11
14875 .byte 197,36,194,223,2 // vcmpleps %ymm7,%ymm11,%ymm11
Mike Klein61b84162017-03-31 11:48:14 -040014876 .byte 196,67,45,74,201,176 // vblendvps %ymm11,%ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040014877 .byte 197,124,16,100,36,200 // vmovups -0x38(%rsp),%ymm12
14878 .byte 196,65,28,88,212 // vaddps %ymm12,%ymm12,%ymm10
14879 .byte 197,44,92,219 // vsubps %ymm3,%ymm10,%ymm11
14880 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
14881 .byte 197,164,89,192 // vmulps %ymm0,%ymm11,%ymm0
14882 .byte 197,36,89,223 // vmulps %ymm7,%ymm11,%ymm11
14883 .byte 196,65,36,89,201 // vmulps %ymm9,%ymm11,%ymm9
14884 .byte 197,100,89,222 // vmulps %ymm6,%ymm3,%ymm11
14885 .byte 196,65,36,88,201 // vaddps %ymm9,%ymm11,%ymm9
14886 .byte 197,252,88,195 // vaddps %ymm3,%ymm0,%ymm0
14887 .byte 197,252,89,198 // vmulps %ymm6,%ymm0,%ymm0
14888 .byte 197,44,194,211,2 // vcmpleps %ymm3,%ymm10,%ymm10
14889 .byte 196,99,53,74,200,160 // vblendvps %ymm10,%ymm0,%ymm9,%ymm9
Mike Klein61b84162017-03-31 11:48:14 -040014890 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040014891 .byte 197,172,89,193 // vmulps %ymm1,%ymm10,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -040014892 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040014893 .byte 197,188,89,204 // vmulps %ymm4,%ymm8,%ymm1
Mike Klein61b84162017-03-31 11:48:14 -040014894 .byte 197,244,88,192 // vaddps %ymm0,%ymm1,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040014895 .byte 197,252,88,68,36,168 // vaddps -0x58(%rsp),%ymm0,%ymm0
Mike Klein61b84162017-03-31 11:48:14 -040014896 .byte 197,172,89,202 // vmulps %ymm2,%ymm10,%ymm1
14897 .byte 197,188,89,213 // vmulps %ymm5,%ymm8,%ymm2
14898 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040014899 .byte 196,193,116,88,206 // vaddps %ymm14,%ymm1,%ymm1
14900 .byte 196,193,44,89,212 // vmulps %ymm12,%ymm10,%ymm2
Mike Klein61b84162017-03-31 11:48:14 -040014901 .byte 197,60,89,214 // vmulps %ymm6,%ymm8,%ymm10
14902 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
14903 .byte 196,193,108,88,209 // vaddps %ymm9,%ymm2,%ymm2
14904 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
14905 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
14906 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein61b84162017-03-31 11:48:14 -040014907 .byte 255,224 // jmpq *%rax
14908
Mike Kleinbb338332017-05-04 12:42:52 -040014909HIDDEN _sk_hue_avx
14910.globl _sk_hue_avx
14911FUNCTION(_sk_hue_avx)
14912_sk_hue_avx:
Mike Klein08aa88d2017-05-12 12:59:24 -040014913 .byte 197,252,17,84,36,200 // vmovups %ymm2,-0x38(%rsp)
14914 .byte 197,124,40,193 // vmovaps %ymm1,%ymm8
14915 .byte 197,124,17,68,36,168 // vmovups %ymm8,-0x58(%rsp)
14916 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
14917 .byte 197,116,89,203 // vmulps %ymm3,%ymm1,%ymm9
14918 .byte 197,60,89,211 // vmulps %ymm3,%ymm8,%ymm10
14919 .byte 197,108,89,219 // vmulps %ymm3,%ymm2,%ymm11
14920 .byte 197,84,95,198 // vmaxps %ymm6,%ymm5,%ymm8
14921 .byte 196,65,92,95,192 // vmaxps %ymm8,%ymm4,%ymm8
14922 .byte 197,84,93,230 // vminps %ymm6,%ymm5,%ymm12
14923 .byte 196,65,92,93,228 // vminps %ymm12,%ymm4,%ymm12
14924 .byte 196,65,60,92,196 // vsubps %ymm12,%ymm8,%ymm8
14925 .byte 197,60,89,227 // vmulps %ymm3,%ymm8,%ymm12
14926 .byte 196,65,44,93,195 // vminps %ymm11,%ymm10,%ymm8
14927 .byte 196,65,52,93,232 // vminps %ymm8,%ymm9,%ymm13
14928 .byte 196,65,44,95,195 // vmaxps %ymm11,%ymm10,%ymm8
14929 .byte 196,65,52,95,192 // vmaxps %ymm8,%ymm9,%ymm8
14930 .byte 196,65,60,92,245 // vsubps %ymm13,%ymm8,%ymm14
Mike Kleinbb338332017-05-04 12:42:52 -040014931 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Klein08aa88d2017-05-12 12:59:24 -040014932 .byte 196,65,12,194,248,0 // vcmpeqps %ymm8,%ymm14,%ymm15
14933 .byte 196,65,52,92,205 // vsubps %ymm13,%ymm9,%ymm9
14934 .byte 196,65,28,89,201 // vmulps %ymm9,%ymm12,%ymm9
14935 .byte 196,65,52,94,206 // vdivps %ymm14,%ymm9,%ymm9
14936 .byte 196,67,53,74,200,240 // vblendvps %ymm15,%ymm8,%ymm9,%ymm9
14937 .byte 196,65,44,92,213 // vsubps %ymm13,%ymm10,%ymm10
14938 .byte 196,65,28,89,210 // vmulps %ymm10,%ymm12,%ymm10
14939 .byte 196,65,44,94,214 // vdivps %ymm14,%ymm10,%ymm10
14940 .byte 196,67,45,74,208,240 // vblendvps %ymm15,%ymm8,%ymm10,%ymm10
14941 .byte 196,65,36,92,221 // vsubps %ymm13,%ymm11,%ymm11
14942 .byte 196,65,28,89,219 // vmulps %ymm11,%ymm12,%ymm11
14943 .byte 196,65,36,94,222 // vdivps %ymm14,%ymm11,%ymm11
14944 .byte 196,67,37,74,224,240 // vblendvps %ymm15,%ymm8,%ymm11,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -040014945 .byte 196,98,125,24,53,230,87,0,0 // vbroadcastss 0x57e6(%rip),%ymm14 # 64e8 <_sk_callback_avx+0x18d>
Mike Klein08aa88d2017-05-12 12:59:24 -040014946 .byte 196,65,92,89,222 // vmulps %ymm14,%ymm4,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040014947 .byte 196,98,125,24,61,220,87,0,0 // vbroadcastss 0x57dc(%rip),%ymm15 # 64ec <_sk_callback_avx+0x191>
Mike Klein08aa88d2017-05-12 12:59:24 -040014948 .byte 196,65,84,89,239 // vmulps %ymm15,%ymm5,%ymm13
Mike Kleinbb338332017-05-04 12:42:52 -040014949 .byte 196,65,36,88,221 // vaddps %ymm13,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040014950 .byte 196,226,125,24,5,205,87,0,0 // vbroadcastss 0x57cd(%rip),%ymm0 # 64f0 <_sk_callback_avx+0x195>
Mike Klein08aa88d2017-05-12 12:59:24 -040014951 .byte 197,76,89,232 // vmulps %ymm0,%ymm6,%ymm13
14952 .byte 196,65,36,88,221 // vaddps %ymm13,%ymm11,%ymm11
14953 .byte 196,65,52,89,238 // vmulps %ymm14,%ymm9,%ymm13
14954 .byte 196,193,44,89,215 // vmulps %ymm15,%ymm10,%ymm2
14955 .byte 197,148,88,210 // vaddps %ymm2,%ymm13,%ymm2
14956 .byte 197,28,89,232 // vmulps %ymm0,%ymm12,%ymm13
14957 .byte 196,193,108,88,213 // vaddps %ymm13,%ymm2,%ymm2
14958 .byte 197,36,89,219 // vmulps %ymm3,%ymm11,%ymm11
14959 .byte 197,164,92,210 // vsubps %ymm2,%ymm11,%ymm2
14960 .byte 197,52,88,202 // vaddps %ymm2,%ymm9,%ymm9
14961 .byte 197,44,88,218 // vaddps %ymm2,%ymm10,%ymm11
14962 .byte 197,28,88,226 // vaddps %ymm2,%ymm12,%ymm12
14963 .byte 196,193,36,93,212 // vminps %ymm12,%ymm11,%ymm2
14964 .byte 197,52,93,234 // vminps %ymm2,%ymm9,%ymm13
14965 .byte 196,193,52,89,214 // vmulps %ymm14,%ymm9,%ymm2
14966 .byte 196,65,36,89,215 // vmulps %ymm15,%ymm11,%ymm10
14967 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
14968 .byte 197,156,89,192 // vmulps %ymm0,%ymm12,%ymm0
14969 .byte 197,124,88,210 // vaddps %ymm2,%ymm0,%ymm10
14970 .byte 196,193,52,92,194 // vsubps %ymm10,%ymm9,%ymm0
14971 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
14972 .byte 196,193,44,92,213 // vsubps %ymm13,%ymm10,%ymm2
14973 .byte 197,252,94,194 // vdivps %ymm2,%ymm0,%ymm0
14974 .byte 196,65,36,92,242 // vsubps %ymm10,%ymm11,%ymm14
14975 .byte 196,65,44,89,246 // vmulps %ymm14,%ymm10,%ymm14
Mike Kleinbb338332017-05-04 12:42:52 -040014976 .byte 197,12,94,242 // vdivps %ymm2,%ymm14,%ymm14
Mike Klein08aa88d2017-05-12 12:59:24 -040014977 .byte 196,65,28,92,250 // vsubps %ymm10,%ymm12,%ymm15
14978 .byte 196,65,44,89,255 // vmulps %ymm15,%ymm10,%ymm15
Mike Kleinbb338332017-05-04 12:42:52 -040014979 .byte 197,132,94,210 // vdivps %ymm2,%ymm15,%ymm2
Mike Klein08aa88d2017-05-12 12:59:24 -040014980 .byte 196,65,60,194,237,2 // vcmpleps %ymm13,%ymm8,%ymm13
14981 .byte 196,65,44,88,246 // vaddps %ymm14,%ymm10,%ymm14
14982 .byte 196,67,13,74,243,208 // vblendvps %ymm13,%ymm11,%ymm14,%ymm14
14983 .byte 196,65,36,95,220 // vmaxps %ymm12,%ymm11,%ymm11
14984 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
14985 .byte 196,195,109,74,212,208 // vblendvps %ymm13,%ymm12,%ymm2,%ymm2
14986 .byte 197,172,88,192 // vaddps %ymm0,%ymm10,%ymm0
14987 .byte 196,195,125,74,193,208 // vblendvps %ymm13,%ymm9,%ymm0,%ymm0
14988 .byte 197,100,89,231 // vmulps %ymm7,%ymm3,%ymm12
14989 .byte 196,65,52,95,203 // vmaxps %ymm11,%ymm9,%ymm9
14990 .byte 196,65,124,92,218 // vsubps %ymm10,%ymm0,%ymm11
14991 .byte 196,65,28,92,234 // vsubps %ymm10,%ymm12,%ymm13
14992 .byte 196,65,20,89,219 // vmulps %ymm11,%ymm13,%ymm11
14993 .byte 196,65,28,194,249,1 // vcmpltps %ymm9,%ymm12,%ymm15
14994 .byte 196,65,52,92,202 // vsubps %ymm10,%ymm9,%ymm9
14995 .byte 196,65,36,94,217 // vdivps %ymm9,%ymm11,%ymm11
14996 .byte 196,65,44,88,219 // vaddps %ymm11,%ymm10,%ymm11
14997 .byte 196,195,125,74,195,240 // vblendvps %ymm15,%ymm11,%ymm0,%ymm0
14998 .byte 196,65,12,92,218 // vsubps %ymm10,%ymm14,%ymm11
14999 .byte 196,65,20,89,219 // vmulps %ymm11,%ymm13,%ymm11
15000 .byte 196,65,36,94,217 // vdivps %ymm9,%ymm11,%ymm11
15001 .byte 196,65,44,88,219 // vaddps %ymm11,%ymm10,%ymm11
15002 .byte 196,67,13,74,219,240 // vblendvps %ymm15,%ymm11,%ymm14,%ymm11
15003 .byte 196,65,108,92,242 // vsubps %ymm10,%ymm2,%ymm14
15004 .byte 196,65,20,89,238 // vmulps %ymm14,%ymm13,%ymm13
15005 .byte 196,65,20,94,201 // vdivps %ymm9,%ymm13,%ymm9
15006 .byte 196,65,44,88,201 // vaddps %ymm9,%ymm10,%ymm9
15007 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
15008 .byte 196,65,36,95,208 // vmaxps %ymm8,%ymm11,%ymm10
15009 .byte 196,195,109,74,209,240 // vblendvps %ymm15,%ymm9,%ymm2,%ymm2
15010 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040015011 .byte 196,98,125,24,5,166,86,0,0 // vbroadcastss 0x56a6(%rip),%ymm8 # 64f4 <_sk_callback_avx+0x199>
Mike Klein08aa88d2017-05-12 12:59:24 -040015012 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
15013 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
15014 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
15015 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
15016 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
15017 .byte 197,244,88,192 // vaddps %ymm0,%ymm1,%ymm0
15018 .byte 197,180,89,76,36,168 // vmulps -0x58(%rsp),%ymm9,%ymm1
15019 .byte 197,60,89,221 // vmulps %ymm5,%ymm8,%ymm11
15020 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
15021 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
15022 .byte 197,52,89,76,36,200 // vmulps -0x38(%rsp),%ymm9,%ymm9
15023 .byte 197,60,89,198 // vmulps %ymm6,%ymm8,%ymm8
15024 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
15025 .byte 197,188,88,210 // vaddps %ymm2,%ymm8,%ymm2
15026 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
15027 .byte 196,193,100,92,220 // vsubps %ymm12,%ymm3,%ymm3
Mike Kleinbb338332017-05-04 12:42:52 -040015028 .byte 72,173 // lods %ds:(%rsi),%rax
15029 .byte 255,224 // jmpq *%rax
15030
15031HIDDEN _sk_saturation_avx
15032.globl _sk_saturation_avx
15033FUNCTION(_sk_saturation_avx)
15034_sk_saturation_avx:
Mike Klein08aa88d2017-05-12 12:59:24 -040015035 .byte 197,124,40,193 // vmovaps %ymm1,%ymm8
15036 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
15037 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
15038 .byte 197,100,89,213 // vmulps %ymm5,%ymm3,%ymm10
15039 .byte 197,100,89,222 // vmulps %ymm6,%ymm3,%ymm11
15040 .byte 197,252,17,84,36,200 // vmovups %ymm2,-0x38(%rsp)
15041 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
15042 .byte 197,252,17,68,36,168 // vmovups %ymm0,-0x58(%rsp)
15043 .byte 197,124,95,194 // vmaxps %ymm2,%ymm0,%ymm8
15044 .byte 196,65,116,95,192 // vmaxps %ymm8,%ymm1,%ymm8
15045 .byte 197,124,93,226 // vminps %ymm2,%ymm0,%ymm12
15046 .byte 196,65,116,93,228 // vminps %ymm12,%ymm1,%ymm12
15047 .byte 196,65,60,92,196 // vsubps %ymm12,%ymm8,%ymm8
15048 .byte 197,60,89,231 // vmulps %ymm7,%ymm8,%ymm12
15049 .byte 196,65,44,93,195 // vminps %ymm11,%ymm10,%ymm8
15050 .byte 196,65,52,93,232 // vminps %ymm8,%ymm9,%ymm13
15051 .byte 196,65,44,95,195 // vmaxps %ymm11,%ymm10,%ymm8
15052 .byte 196,65,52,95,192 // vmaxps %ymm8,%ymm9,%ymm8
15053 .byte 196,65,60,92,245 // vsubps %ymm13,%ymm8,%ymm14
Mike Kleinbb338332017-05-04 12:42:52 -040015054 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Klein08aa88d2017-05-12 12:59:24 -040015055 .byte 196,65,12,194,248,0 // vcmpeqps %ymm8,%ymm14,%ymm15
15056 .byte 196,65,52,92,205 // vsubps %ymm13,%ymm9,%ymm9
15057 .byte 196,65,28,89,201 // vmulps %ymm9,%ymm12,%ymm9
15058 .byte 196,65,52,94,206 // vdivps %ymm14,%ymm9,%ymm9
15059 .byte 196,67,53,74,200,240 // vblendvps %ymm15,%ymm8,%ymm9,%ymm9
15060 .byte 196,65,44,92,213 // vsubps %ymm13,%ymm10,%ymm10
Mike Kleinbb338332017-05-04 12:42:52 -040015061 .byte 196,65,28,89,210 // vmulps %ymm10,%ymm12,%ymm10
Mike Klein08aa88d2017-05-12 12:59:24 -040015062 .byte 196,65,44,94,214 // vdivps %ymm14,%ymm10,%ymm10
15063 .byte 196,67,45,74,208,240 // vblendvps %ymm15,%ymm8,%ymm10,%ymm10
15064 .byte 196,65,36,92,221 // vsubps %ymm13,%ymm11,%ymm11
15065 .byte 196,65,28,89,219 // vmulps %ymm11,%ymm12,%ymm11
15066 .byte 196,65,36,94,222 // vdivps %ymm14,%ymm11,%ymm11
15067 .byte 196,67,37,74,224,240 // vblendvps %ymm15,%ymm8,%ymm11,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -040015068 .byte 196,98,125,24,53,180,85,0,0 // vbroadcastss 0x55b4(%rip),%ymm14 # 64f8 <_sk_callback_avx+0x19d>
Mike Klein08aa88d2017-05-12 12:59:24 -040015069 .byte 196,65,92,89,222 // vmulps %ymm14,%ymm4,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040015070 .byte 196,98,125,24,61,170,85,0,0 // vbroadcastss 0x55aa(%rip),%ymm15 # 64fc <_sk_callback_avx+0x1a1>
Mike Klein08aa88d2017-05-12 12:59:24 -040015071 .byte 196,65,84,89,239 // vmulps %ymm15,%ymm5,%ymm13
15072 .byte 196,65,36,88,221 // vaddps %ymm13,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040015073 .byte 196,226,125,24,5,155,85,0,0 // vbroadcastss 0x559b(%rip),%ymm0 # 6500 <_sk_callback_avx+0x1a5>
Mike Klein08aa88d2017-05-12 12:59:24 -040015074 .byte 197,76,89,232 // vmulps %ymm0,%ymm6,%ymm13
15075 .byte 196,65,36,88,221 // vaddps %ymm13,%ymm11,%ymm11
15076 .byte 196,65,52,89,238 // vmulps %ymm14,%ymm9,%ymm13
15077 .byte 196,193,44,89,215 // vmulps %ymm15,%ymm10,%ymm2
15078 .byte 197,148,88,210 // vaddps %ymm2,%ymm13,%ymm2
15079 .byte 197,28,89,232 // vmulps %ymm0,%ymm12,%ymm13
15080 .byte 196,193,108,88,213 // vaddps %ymm13,%ymm2,%ymm2
15081 .byte 197,36,89,219 // vmulps %ymm3,%ymm11,%ymm11
15082 .byte 197,164,92,210 // vsubps %ymm2,%ymm11,%ymm2
15083 .byte 197,52,88,202 // vaddps %ymm2,%ymm9,%ymm9
15084 .byte 197,44,88,218 // vaddps %ymm2,%ymm10,%ymm11
15085 .byte 197,28,88,226 // vaddps %ymm2,%ymm12,%ymm12
15086 .byte 196,193,36,93,212 // vminps %ymm12,%ymm11,%ymm2
15087 .byte 197,52,93,234 // vminps %ymm2,%ymm9,%ymm13
15088 .byte 196,193,52,89,214 // vmulps %ymm14,%ymm9,%ymm2
15089 .byte 196,65,36,89,215 // vmulps %ymm15,%ymm11,%ymm10
15090 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
15091 .byte 197,156,89,192 // vmulps %ymm0,%ymm12,%ymm0
15092 .byte 197,124,88,210 // vaddps %ymm2,%ymm0,%ymm10
15093 .byte 196,193,52,92,194 // vsubps %ymm10,%ymm9,%ymm0
15094 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
15095 .byte 196,193,44,92,213 // vsubps %ymm13,%ymm10,%ymm2
15096 .byte 197,252,94,194 // vdivps %ymm2,%ymm0,%ymm0
15097 .byte 196,65,36,92,242 // vsubps %ymm10,%ymm11,%ymm14
15098 .byte 196,65,44,89,246 // vmulps %ymm14,%ymm10,%ymm14
15099 .byte 197,12,94,242 // vdivps %ymm2,%ymm14,%ymm14
15100 .byte 196,65,28,92,250 // vsubps %ymm10,%ymm12,%ymm15
15101 .byte 196,65,44,89,255 // vmulps %ymm15,%ymm10,%ymm15
Mike Kleinbb338332017-05-04 12:42:52 -040015102 .byte 197,132,94,210 // vdivps %ymm2,%ymm15,%ymm2
Mike Klein08aa88d2017-05-12 12:59:24 -040015103 .byte 196,65,60,194,237,2 // vcmpleps %ymm13,%ymm8,%ymm13
15104 .byte 196,65,44,88,246 // vaddps %ymm14,%ymm10,%ymm14
15105 .byte 196,67,13,74,243,208 // vblendvps %ymm13,%ymm11,%ymm14,%ymm14
15106 .byte 196,65,36,95,220 // vmaxps %ymm12,%ymm11,%ymm11
15107 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
15108 .byte 196,195,109,74,212,208 // vblendvps %ymm13,%ymm12,%ymm2,%ymm2
15109 .byte 197,172,88,192 // vaddps %ymm0,%ymm10,%ymm0
15110 .byte 196,195,125,74,193,208 // vblendvps %ymm13,%ymm9,%ymm0,%ymm0
15111 .byte 197,100,89,231 // vmulps %ymm7,%ymm3,%ymm12
15112 .byte 196,65,52,95,203 // vmaxps %ymm11,%ymm9,%ymm9
15113 .byte 196,65,124,92,218 // vsubps %ymm10,%ymm0,%ymm11
15114 .byte 196,65,28,92,234 // vsubps %ymm10,%ymm12,%ymm13
15115 .byte 196,65,20,89,219 // vmulps %ymm11,%ymm13,%ymm11
15116 .byte 196,65,28,194,249,1 // vcmpltps %ymm9,%ymm12,%ymm15
15117 .byte 196,65,52,92,202 // vsubps %ymm10,%ymm9,%ymm9
15118 .byte 196,65,36,94,217 // vdivps %ymm9,%ymm11,%ymm11
15119 .byte 196,65,44,88,219 // vaddps %ymm11,%ymm10,%ymm11
15120 .byte 196,195,125,74,195,240 // vblendvps %ymm15,%ymm11,%ymm0,%ymm0
15121 .byte 196,65,12,92,218 // vsubps %ymm10,%ymm14,%ymm11
15122 .byte 196,65,20,89,219 // vmulps %ymm11,%ymm13,%ymm11
15123 .byte 196,65,36,94,217 // vdivps %ymm9,%ymm11,%ymm11
15124 .byte 196,65,44,88,219 // vaddps %ymm11,%ymm10,%ymm11
15125 .byte 196,67,13,74,219,240 // vblendvps %ymm15,%ymm11,%ymm14,%ymm11
15126 .byte 196,65,108,92,242 // vsubps %ymm10,%ymm2,%ymm14
15127 .byte 196,65,20,89,238 // vmulps %ymm14,%ymm13,%ymm13
15128 .byte 196,65,20,94,201 // vdivps %ymm9,%ymm13,%ymm9
15129 .byte 196,65,44,88,201 // vaddps %ymm9,%ymm10,%ymm9
15130 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
15131 .byte 196,65,36,95,208 // vmaxps %ymm8,%ymm11,%ymm10
15132 .byte 196,195,109,74,209,240 // vblendvps %ymm15,%ymm9,%ymm2,%ymm2
15133 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040015134 .byte 196,98,125,24,5,116,84,0,0 // vbroadcastss 0x5474(%rip),%ymm8 # 6504 <_sk_callback_avx+0x1a9>
Mike Klein08aa88d2017-05-12 12:59:24 -040015135 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
15136 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
15137 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
15138 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
15139 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
15140 .byte 197,244,88,192 // vaddps %ymm0,%ymm1,%ymm0
15141 .byte 197,180,89,76,36,168 // vmulps -0x58(%rsp),%ymm9,%ymm1
15142 .byte 197,60,89,221 // vmulps %ymm5,%ymm8,%ymm11
15143 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
15144 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
15145 .byte 197,52,89,76,36,200 // vmulps -0x38(%rsp),%ymm9,%ymm9
15146 .byte 197,60,89,198 // vmulps %ymm6,%ymm8,%ymm8
15147 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
15148 .byte 197,188,88,210 // vaddps %ymm2,%ymm8,%ymm2
15149 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
15150 .byte 196,193,100,92,220 // vsubps %ymm12,%ymm3,%ymm3
Mike Kleinbb338332017-05-04 12:42:52 -040015151 .byte 72,173 // lods %ds:(%rsi),%rax
15152 .byte 255,224 // jmpq *%rax
15153
15154HIDDEN _sk_color_avx
15155.globl _sk_color_avx
15156FUNCTION(_sk_color_avx)
15157_sk_color_avx:
Mike Klein08aa88d2017-05-12 12:59:24 -040015158 .byte 197,252,17,84,36,136 // vmovups %ymm2,-0x78(%rsp)
15159 .byte 197,252,17,76,36,200 // vmovups %ymm1,-0x38(%rsp)
15160 .byte 197,252,17,68,36,168 // vmovups %ymm0,-0x58(%rsp)
15161 .byte 197,124,89,199 // vmulps %ymm7,%ymm0,%ymm8
15162 .byte 197,116,89,207 // vmulps %ymm7,%ymm1,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040015163 .byte 196,98,125,24,45,10,84,0,0 // vbroadcastss 0x540a(%rip),%ymm13 # 6508 <_sk_callback_avx+0x1ad>
Mike Klein08aa88d2017-05-12 12:59:24 -040015164 .byte 196,65,92,89,213 // vmulps %ymm13,%ymm4,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040015165 .byte 196,98,125,24,53,0,84,0,0 // vbroadcastss 0x5400(%rip),%ymm14 # 650c <_sk_callback_avx+0x1b1>
Mike Klein08aa88d2017-05-12 12:59:24 -040015166 .byte 196,65,84,89,222 // vmulps %ymm14,%ymm5,%ymm11
15167 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040015168 .byte 196,98,125,24,61,241,83,0,0 // vbroadcastss 0x53f1(%rip),%ymm15 # 6510 <_sk_callback_avx+0x1b5>
Mike Klein08aa88d2017-05-12 12:59:24 -040015169 .byte 196,65,76,89,223 // vmulps %ymm15,%ymm6,%ymm11
15170 .byte 196,193,44,88,195 // vaddps %ymm11,%ymm10,%ymm0
15171 .byte 196,65,60,89,221 // vmulps %ymm13,%ymm8,%ymm11
15172 .byte 196,65,52,89,230 // vmulps %ymm14,%ymm9,%ymm12
15173 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
15174 .byte 197,108,89,231 // vmulps %ymm7,%ymm2,%ymm12
15175 .byte 196,65,28,89,215 // vmulps %ymm15,%ymm12,%ymm10
15176 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
15177 .byte 197,252,89,195 // vmulps %ymm3,%ymm0,%ymm0
15178 .byte 196,193,124,92,194 // vsubps %ymm10,%ymm0,%ymm0
15179 .byte 197,60,88,192 // vaddps %ymm0,%ymm8,%ymm8
15180 .byte 197,52,88,208 // vaddps %ymm0,%ymm9,%ymm10
15181 .byte 197,28,88,216 // vaddps %ymm0,%ymm12,%ymm11
15182 .byte 196,193,44,93,195 // vminps %ymm11,%ymm10,%ymm0
15183 .byte 197,60,93,224 // vminps %ymm0,%ymm8,%ymm12
15184 .byte 196,193,60,89,197 // vmulps %ymm13,%ymm8,%ymm0
15185 .byte 196,65,44,89,206 // vmulps %ymm14,%ymm10,%ymm9
15186 .byte 196,193,124,88,193 // vaddps %ymm9,%ymm0,%ymm0
15187 .byte 196,65,36,89,207 // vmulps %ymm15,%ymm11,%ymm9
15188 .byte 197,52,88,200 // vaddps %ymm0,%ymm9,%ymm9
15189 .byte 196,193,60,92,193 // vsubps %ymm9,%ymm8,%ymm0
15190 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
15191 .byte 196,65,52,92,236 // vsubps %ymm12,%ymm9,%ymm13
15192 .byte 196,193,124,94,197 // vdivps %ymm13,%ymm0,%ymm0
15193 .byte 196,65,44,92,241 // vsubps %ymm9,%ymm10,%ymm14
Mike Kleinbb338332017-05-04 12:42:52 -040015194 .byte 196,65,52,89,246 // vmulps %ymm14,%ymm9,%ymm14
Mike Klein08aa88d2017-05-12 12:59:24 -040015195 .byte 196,65,12,94,245 // vdivps %ymm13,%ymm14,%ymm14
15196 .byte 196,65,36,92,249 // vsubps %ymm9,%ymm11,%ymm15
Mike Kleinbb338332017-05-04 12:42:52 -040015197 .byte 196,65,52,89,255 // vmulps %ymm15,%ymm9,%ymm15
Mike Klein08aa88d2017-05-12 12:59:24 -040015198 .byte 196,65,4,94,237 // vdivps %ymm13,%ymm15,%ymm13
15199 .byte 196,65,4,87,255 // vxorps %ymm15,%ymm15,%ymm15
15200 .byte 196,65,4,194,228,2 // vcmpleps %ymm12,%ymm15,%ymm12
15201 .byte 196,65,52,88,246 // vaddps %ymm14,%ymm9,%ymm14
15202 .byte 196,67,13,74,242,192 // vblendvps %ymm12,%ymm10,%ymm14,%ymm14
15203 .byte 196,65,44,95,211 // vmaxps %ymm11,%ymm10,%ymm10
15204 .byte 196,65,52,88,237 // vaddps %ymm13,%ymm9,%ymm13
15205 .byte 196,67,21,74,219,192 // vblendvps %ymm12,%ymm11,%ymm13,%ymm11
15206 .byte 197,180,88,192 // vaddps %ymm0,%ymm9,%ymm0
15207 .byte 196,195,125,74,200,192 // vblendvps %ymm12,%ymm8,%ymm0,%ymm1
15208 .byte 197,100,89,231 // vmulps %ymm7,%ymm3,%ymm12
15209 .byte 196,65,60,95,194 // vmaxps %ymm10,%ymm8,%ymm8
15210 .byte 196,65,116,92,209 // vsubps %ymm9,%ymm1,%ymm10
15211 .byte 196,65,28,92,233 // vsubps %ymm9,%ymm12,%ymm13
15212 .byte 196,65,20,89,210 // vmulps %ymm10,%ymm13,%ymm10
15213 .byte 196,193,28,194,192,1 // vcmpltps %ymm8,%ymm12,%ymm0
15214 .byte 196,65,60,92,193 // vsubps %ymm9,%ymm8,%ymm8
15215 .byte 196,65,44,94,208 // vdivps %ymm8,%ymm10,%ymm10
15216 .byte 196,65,52,88,210 // vaddps %ymm10,%ymm9,%ymm10
15217 .byte 196,195,117,74,202,0 // vblendvps %ymm0,%ymm10,%ymm1,%ymm1
15218 .byte 196,65,12,92,209 // vsubps %ymm9,%ymm14,%ymm10
15219 .byte 196,65,20,89,210 // vmulps %ymm10,%ymm13,%ymm10
15220 .byte 196,65,44,94,208 // vdivps %ymm8,%ymm10,%ymm10
15221 .byte 196,65,52,88,210 // vaddps %ymm10,%ymm9,%ymm10
15222 .byte 196,67,13,74,210,0 // vblendvps %ymm0,%ymm10,%ymm14,%ymm10
15223 .byte 196,65,36,92,241 // vsubps %ymm9,%ymm11,%ymm14
15224 .byte 196,65,20,89,238 // vmulps %ymm14,%ymm13,%ymm13
15225 .byte 196,65,20,94,192 // vdivps %ymm8,%ymm13,%ymm8
15226 .byte 196,65,52,88,192 // vaddps %ymm8,%ymm9,%ymm8
15227 .byte 196,193,116,95,207 // vmaxps %ymm15,%ymm1,%ymm1
15228 .byte 196,65,44,95,207 // vmaxps %ymm15,%ymm10,%ymm9
15229 .byte 196,195,37,74,192,0 // vblendvps %ymm0,%ymm8,%ymm11,%ymm0
15230 .byte 196,65,124,95,199 // vmaxps %ymm15,%ymm0,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040015231 .byte 196,226,125,24,5,184,82,0,0 // vbroadcastss 0x52b8(%rip),%ymm0 # 6514 <_sk_callback_avx+0x1b9>
Mike Klein08aa88d2017-05-12 12:59:24 -040015232 .byte 197,124,92,215 // vsubps %ymm7,%ymm0,%ymm10
15233 .byte 197,172,89,84,36,168 // vmulps -0x58(%rsp),%ymm10,%ymm2
15234 .byte 197,124,92,219 // vsubps %ymm3,%ymm0,%ymm11
15235 .byte 197,164,89,196 // vmulps %ymm4,%ymm11,%ymm0
15236 .byte 197,252,88,194 // vaddps %ymm2,%ymm0,%ymm0
15237 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
15238 .byte 197,172,89,76,36,200 // vmulps -0x38(%rsp),%ymm10,%ymm1
15239 .byte 197,164,89,213 // vmulps %ymm5,%ymm11,%ymm2
15240 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
15241 .byte 196,193,116,88,201 // vaddps %ymm9,%ymm1,%ymm1
15242 .byte 197,172,89,84,36,136 // vmulps -0x78(%rsp),%ymm10,%ymm2
15243 .byte 197,36,89,206 // vmulps %ymm6,%ymm11,%ymm9
15244 .byte 197,180,88,210 // vaddps %ymm2,%ymm9,%ymm2
15245 .byte 196,193,108,88,208 // vaddps %ymm8,%ymm2,%ymm2
15246 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
15247 .byte 196,193,100,92,220 // vsubps %ymm12,%ymm3,%ymm3
Mike Kleinbb338332017-05-04 12:42:52 -040015248 .byte 72,173 // lods %ds:(%rsi),%rax
15249 .byte 255,224 // jmpq *%rax
15250
15251HIDDEN _sk_luminosity_avx
15252.globl _sk_luminosity_avx
15253FUNCTION(_sk_luminosity_avx)
15254_sk_luminosity_avx:
Mike Klein08aa88d2017-05-12 12:59:24 -040015255 .byte 197,124,40,226 // vmovaps %ymm2,%ymm12
15256 .byte 197,124,17,100,36,168 // vmovups %ymm12,-0x58(%rsp)
15257 .byte 197,252,17,76,36,200 // vmovups %ymm1,-0x38(%rsp)
15258 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
15259 .byte 197,100,89,196 // vmulps %ymm4,%ymm3,%ymm8
15260 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040015261 .byte 196,98,125,24,45,74,82,0,0 // vbroadcastss 0x524a(%rip),%ymm13 # 6518 <_sk_callback_avx+0x1bd>
Mike Klein08aa88d2017-05-12 12:59:24 -040015262 .byte 196,65,108,89,213 // vmulps %ymm13,%ymm2,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040015263 .byte 196,98,125,24,53,64,82,0,0 // vbroadcastss 0x5240(%rip),%ymm14 # 651c <_sk_callback_avx+0x1c1>
Mike Klein08aa88d2017-05-12 12:59:24 -040015264 .byte 196,65,116,89,222 // vmulps %ymm14,%ymm1,%ymm11
15265 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040015266 .byte 196,98,125,24,61,49,82,0,0 // vbroadcastss 0x5231(%rip),%ymm15 # 6520 <_sk_callback_avx+0x1c5>
Mike Klein08aa88d2017-05-12 12:59:24 -040015267 .byte 196,65,28,89,223 // vmulps %ymm15,%ymm12,%ymm11
15268 .byte 196,193,44,88,195 // vaddps %ymm11,%ymm10,%ymm0
15269 .byte 196,65,60,89,221 // vmulps %ymm13,%ymm8,%ymm11
15270 .byte 196,65,52,89,230 // vmulps %ymm14,%ymm9,%ymm12
15271 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
15272 .byte 197,100,89,230 // vmulps %ymm6,%ymm3,%ymm12
15273 .byte 196,65,28,89,215 // vmulps %ymm15,%ymm12,%ymm10
15274 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
15275 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
15276 .byte 196,193,124,92,194 // vsubps %ymm10,%ymm0,%ymm0
15277 .byte 197,60,88,192 // vaddps %ymm0,%ymm8,%ymm8
15278 .byte 197,52,88,208 // vaddps %ymm0,%ymm9,%ymm10
Mike Kleinbb338332017-05-04 12:42:52 -040015279 .byte 197,28,88,216 // vaddps %ymm0,%ymm12,%ymm11
Mike Klein08aa88d2017-05-12 12:59:24 -040015280 .byte 196,193,44,93,195 // vminps %ymm11,%ymm10,%ymm0
15281 .byte 197,60,93,224 // vminps %ymm0,%ymm8,%ymm12
15282 .byte 196,193,60,89,197 // vmulps %ymm13,%ymm8,%ymm0
15283 .byte 196,65,44,89,206 // vmulps %ymm14,%ymm10,%ymm9
15284 .byte 196,193,124,88,193 // vaddps %ymm9,%ymm0,%ymm0
15285 .byte 196,65,36,89,207 // vmulps %ymm15,%ymm11,%ymm9
15286 .byte 197,52,88,200 // vaddps %ymm0,%ymm9,%ymm9
15287 .byte 196,193,60,92,193 // vsubps %ymm9,%ymm8,%ymm0
15288 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
15289 .byte 196,65,52,92,236 // vsubps %ymm12,%ymm9,%ymm13
15290 .byte 196,193,124,94,197 // vdivps %ymm13,%ymm0,%ymm0
15291 .byte 196,65,44,92,241 // vsubps %ymm9,%ymm10,%ymm14
15292 .byte 196,65,52,89,246 // vmulps %ymm14,%ymm9,%ymm14
15293 .byte 196,65,12,94,245 // vdivps %ymm13,%ymm14,%ymm14
15294 .byte 196,65,36,92,249 // vsubps %ymm9,%ymm11,%ymm15
Mike Kleinbb338332017-05-04 12:42:52 -040015295 .byte 196,65,52,89,255 // vmulps %ymm15,%ymm9,%ymm15
Mike Klein08aa88d2017-05-12 12:59:24 -040015296 .byte 196,65,4,94,237 // vdivps %ymm13,%ymm15,%ymm13
15297 .byte 196,65,4,87,255 // vxorps %ymm15,%ymm15,%ymm15
15298 .byte 196,65,4,194,228,2 // vcmpleps %ymm12,%ymm15,%ymm12
15299 .byte 196,65,52,88,246 // vaddps %ymm14,%ymm9,%ymm14
15300 .byte 196,67,13,74,242,192 // vblendvps %ymm12,%ymm10,%ymm14,%ymm14
15301 .byte 196,65,44,95,211 // vmaxps %ymm11,%ymm10,%ymm10
15302 .byte 196,65,52,88,237 // vaddps %ymm13,%ymm9,%ymm13
15303 .byte 196,67,21,74,219,192 // vblendvps %ymm12,%ymm11,%ymm13,%ymm11
15304 .byte 197,180,88,192 // vaddps %ymm0,%ymm9,%ymm0
15305 .byte 196,195,125,74,200,192 // vblendvps %ymm12,%ymm8,%ymm0,%ymm1
15306 .byte 197,100,89,231 // vmulps %ymm7,%ymm3,%ymm12
15307 .byte 196,65,60,95,194 // vmaxps %ymm10,%ymm8,%ymm8
15308 .byte 196,65,116,92,209 // vsubps %ymm9,%ymm1,%ymm10
15309 .byte 196,65,28,92,233 // vsubps %ymm9,%ymm12,%ymm13
15310 .byte 196,65,20,89,210 // vmulps %ymm10,%ymm13,%ymm10
15311 .byte 196,193,28,194,192,1 // vcmpltps %ymm8,%ymm12,%ymm0
15312 .byte 196,65,60,92,193 // vsubps %ymm9,%ymm8,%ymm8
15313 .byte 196,65,44,94,208 // vdivps %ymm8,%ymm10,%ymm10
15314 .byte 196,65,52,88,210 // vaddps %ymm10,%ymm9,%ymm10
15315 .byte 196,195,117,74,202,0 // vblendvps %ymm0,%ymm10,%ymm1,%ymm1
15316 .byte 196,65,12,92,209 // vsubps %ymm9,%ymm14,%ymm10
15317 .byte 196,65,20,89,210 // vmulps %ymm10,%ymm13,%ymm10
15318 .byte 196,65,44,94,208 // vdivps %ymm8,%ymm10,%ymm10
15319 .byte 196,65,52,88,210 // vaddps %ymm10,%ymm9,%ymm10
15320 .byte 196,67,13,74,210,0 // vblendvps %ymm0,%ymm10,%ymm14,%ymm10
15321 .byte 196,65,36,92,241 // vsubps %ymm9,%ymm11,%ymm14
15322 .byte 196,65,20,89,238 // vmulps %ymm14,%ymm13,%ymm13
15323 .byte 196,65,20,94,192 // vdivps %ymm8,%ymm13,%ymm8
15324 .byte 196,65,52,88,192 // vaddps %ymm8,%ymm9,%ymm8
15325 .byte 196,193,116,95,207 // vmaxps %ymm15,%ymm1,%ymm1
15326 .byte 196,65,44,95,207 // vmaxps %ymm15,%ymm10,%ymm9
15327 .byte 196,195,37,74,192,0 // vblendvps %ymm0,%ymm8,%ymm11,%ymm0
15328 .byte 196,65,124,95,199 // vmaxps %ymm15,%ymm0,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040015329 .byte 196,226,125,24,5,248,80,0,0 // vbroadcastss 0x50f8(%rip),%ymm0 # 6524 <_sk_callback_avx+0x1c9>
Mike Klein08aa88d2017-05-12 12:59:24 -040015330 .byte 197,124,92,215 // vsubps %ymm7,%ymm0,%ymm10
15331 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
15332 .byte 197,124,92,219 // vsubps %ymm3,%ymm0,%ymm11
15333 .byte 197,164,89,196 // vmulps %ymm4,%ymm11,%ymm0
15334 .byte 197,252,88,194 // vaddps %ymm2,%ymm0,%ymm0
15335 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
15336 .byte 197,172,89,76,36,200 // vmulps -0x38(%rsp),%ymm10,%ymm1
15337 .byte 197,164,89,213 // vmulps %ymm5,%ymm11,%ymm2
15338 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
Mike Kleinbb338332017-05-04 12:42:52 -040015339 .byte 196,193,116,88,201 // vaddps %ymm9,%ymm1,%ymm1
Mike Klein08aa88d2017-05-12 12:59:24 -040015340 .byte 197,172,89,84,36,168 // vmulps -0x58(%rsp),%ymm10,%ymm2
15341 .byte 197,36,89,206 // vmulps %ymm6,%ymm11,%ymm9
15342 .byte 197,180,88,210 // vaddps %ymm2,%ymm9,%ymm2
15343 .byte 196,193,108,88,208 // vaddps %ymm8,%ymm2,%ymm2
15344 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
15345 .byte 196,193,100,92,220 // vsubps %ymm12,%ymm3,%ymm3
Mike Kleinbb338332017-05-04 12:42:52 -040015346 .byte 72,173 // lods %ds:(%rsi),%rax
15347 .byte 255,224 // jmpq *%rax
15348
Mike Klein7c4af542017-03-29 18:21:14 -040015349HIDDEN _sk_clamp_0_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015350.globl _sk_clamp_0_avx
Mike Klein86714282017-04-13 17:37:38 -040015351FUNCTION(_sk_clamp_0_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015352_sk_clamp_0_avx:
15353 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
15354 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
15355 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
15356 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
15357 .byte 196,193,100,95,216 // vmaxps %ymm8,%ymm3,%ymm3
15358 .byte 72,173 // lods %ds:(%rsi),%rax
15359 .byte 255,224 // jmpq *%rax
15360
Mike Klein7c4af542017-03-29 18:21:14 -040015361HIDDEN _sk_clamp_1_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015362.globl _sk_clamp_1_avx
Mike Klein86714282017-04-13 17:37:38 -040015363FUNCTION(_sk_clamp_1_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015364_sk_clamp_1_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040015365 .byte 196,98,125,24,5,139,80,0,0 // vbroadcastss 0x508b(%rip),%ymm8 # 6528 <_sk_callback_avx+0x1cd>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015366 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
15367 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
15368 .byte 196,193,108,93,208 // vminps %ymm8,%ymm2,%ymm2
15369 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
15370 .byte 72,173 // lods %ds:(%rsi),%rax
15371 .byte 255,224 // jmpq *%rax
15372
Mike Klein7c4af542017-03-29 18:21:14 -040015373HIDDEN _sk_clamp_a_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015374.globl _sk_clamp_a_avx
Mike Klein86714282017-04-13 17:37:38 -040015375FUNCTION(_sk_clamp_a_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015376_sk_clamp_a_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040015377 .byte 196,98,125,24,5,110,80,0,0 // vbroadcastss 0x506e(%rip),%ymm8 # 652c <_sk_callback_avx+0x1d1>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015378 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
15379 .byte 197,252,93,195 // vminps %ymm3,%ymm0,%ymm0
15380 .byte 197,244,93,203 // vminps %ymm3,%ymm1,%ymm1
15381 .byte 197,236,93,211 // vminps %ymm3,%ymm2,%ymm2
15382 .byte 72,173 // lods %ds:(%rsi),%rax
15383 .byte 255,224 // jmpq *%rax
15384
Mike Klein7c4af542017-03-29 18:21:14 -040015385HIDDEN _sk_set_rgb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015386.globl _sk_set_rgb_avx
Mike Klein86714282017-04-13 17:37:38 -040015387FUNCTION(_sk_set_rgb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015388_sk_set_rgb_avx:
15389 .byte 72,173 // lods %ds:(%rsi),%rax
15390 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
15391 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
15392 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
15393 .byte 72,173 // lods %ds:(%rsi),%rax
15394 .byte 255,224 // jmpq *%rax
15395
Mike Klein7c4af542017-03-29 18:21:14 -040015396HIDDEN _sk_swap_rb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015397.globl _sk_swap_rb_avx
Mike Klein86714282017-04-13 17:37:38 -040015398FUNCTION(_sk_swap_rb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015399_sk_swap_rb_avx:
15400 .byte 197,124,40,192 // vmovaps %ymm0,%ymm8
15401 .byte 72,173 // lods %ds:(%rsi),%rax
15402 .byte 197,252,40,194 // vmovaps %ymm2,%ymm0
15403 .byte 197,124,41,194 // vmovaps %ymm8,%ymm2
15404 .byte 255,224 // jmpq *%rax
15405
Mike Klein7c4af542017-03-29 18:21:14 -040015406HIDDEN _sk_swap_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015407.globl _sk_swap_avx
Mike Klein86714282017-04-13 17:37:38 -040015408FUNCTION(_sk_swap_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015409_sk_swap_avx:
15410 .byte 197,124,40,195 // vmovaps %ymm3,%ymm8
15411 .byte 197,124,40,202 // vmovaps %ymm2,%ymm9
15412 .byte 197,124,40,209 // vmovaps %ymm1,%ymm10
15413 .byte 197,124,40,216 // vmovaps %ymm0,%ymm11
15414 .byte 72,173 // lods %ds:(%rsi),%rax
15415 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
15416 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
15417 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
15418 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
15419 .byte 197,124,41,220 // vmovaps %ymm11,%ymm4
15420 .byte 197,124,41,213 // vmovaps %ymm10,%ymm5
15421 .byte 197,124,41,206 // vmovaps %ymm9,%ymm6
15422 .byte 197,124,41,199 // vmovaps %ymm8,%ymm7
15423 .byte 255,224 // jmpq *%rax
15424
Mike Klein7c4af542017-03-29 18:21:14 -040015425HIDDEN _sk_move_src_dst_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015426.globl _sk_move_src_dst_avx
Mike Klein86714282017-04-13 17:37:38 -040015427FUNCTION(_sk_move_src_dst_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015428_sk_move_src_dst_avx:
15429 .byte 72,173 // lods %ds:(%rsi),%rax
15430 .byte 197,252,40,224 // vmovaps %ymm0,%ymm4
15431 .byte 197,252,40,233 // vmovaps %ymm1,%ymm5
15432 .byte 197,252,40,242 // vmovaps %ymm2,%ymm6
15433 .byte 197,252,40,251 // vmovaps %ymm3,%ymm7
15434 .byte 255,224 // jmpq *%rax
15435
Mike Klein7c4af542017-03-29 18:21:14 -040015436HIDDEN _sk_move_dst_src_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015437.globl _sk_move_dst_src_avx
Mike Klein86714282017-04-13 17:37:38 -040015438FUNCTION(_sk_move_dst_src_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015439_sk_move_dst_src_avx:
15440 .byte 72,173 // lods %ds:(%rsi),%rax
15441 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
15442 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
15443 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
15444 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
15445 .byte 255,224 // jmpq *%rax
15446
Mike Klein7c4af542017-03-29 18:21:14 -040015447HIDDEN _sk_premul_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015448.globl _sk_premul_avx
Mike Klein86714282017-04-13 17:37:38 -040015449FUNCTION(_sk_premul_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015450_sk_premul_avx:
15451 .byte 197,252,89,195 // vmulps %ymm3,%ymm0,%ymm0
15452 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
15453 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
15454 .byte 72,173 // lods %ds:(%rsi),%rax
15455 .byte 255,224 // jmpq *%rax
15456
Mike Klein7c4af542017-03-29 18:21:14 -040015457HIDDEN _sk_unpremul_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015458.globl _sk_unpremul_avx
Mike Klein86714282017-04-13 17:37:38 -040015459FUNCTION(_sk_unpremul_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015460_sk_unpremul_avx:
15461 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
15462 .byte 196,65,100,194,200,0 // vcmpeqps %ymm8,%ymm3,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040015463 .byte 196,98,125,24,21,182,79,0,0 // vbroadcastss 0x4fb6(%rip),%ymm10 # 6530 <_sk_callback_avx+0x1d5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015464 .byte 197,44,94,211 // vdivps %ymm3,%ymm10,%ymm10
15465 .byte 196,67,45,74,192,144 // vblendvps %ymm9,%ymm8,%ymm10,%ymm8
15466 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
15467 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
15468 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
15469 .byte 72,173 // lods %ds:(%rsi),%rax
15470 .byte 255,224 // jmpq *%rax
15471
Mike Klein7c4af542017-03-29 18:21:14 -040015472HIDDEN _sk_from_srgb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015473.globl _sk_from_srgb_avx
Mike Klein86714282017-04-13 17:37:38 -040015474FUNCTION(_sk_from_srgb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015475_sk_from_srgb_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040015476 .byte 196,98,125,24,5,151,79,0,0 // vbroadcastss 0x4f97(%rip),%ymm8 # 6534 <_sk_callback_avx+0x1d9>
Mike Kleinfe560a82017-05-01 12:56:35 -040015477 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040015478 .byte 197,124,89,208 // vmulps %ymm0,%ymm0,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040015479 .byte 196,98,125,24,29,137,79,0,0 // vbroadcastss 0x4f89(%rip),%ymm11 # 6538 <_sk_callback_avx+0x1dd>
Mike Kleinfe560a82017-05-01 12:56:35 -040015480 .byte 196,65,124,89,227 // vmulps %ymm11,%ymm0,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -040015481 .byte 196,98,125,24,45,127,79,0,0 // vbroadcastss 0x4f7f(%rip),%ymm13 # 653c <_sk_callback_avx+0x1e1>
Mike Kleinfe560a82017-05-01 12:56:35 -040015482 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
15483 .byte 196,65,44,89,212 // vmulps %ymm12,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040015484 .byte 196,98,125,24,37,112,79,0,0 // vbroadcastss 0x4f70(%rip),%ymm12 # 6540 <_sk_callback_avx+0x1e5>
Mike Kleinfe560a82017-05-01 12:56:35 -040015485 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040015486 .byte 196,98,125,24,53,102,79,0,0 // vbroadcastss 0x4f66(%rip),%ymm14 # 6544 <_sk_callback_avx+0x1e9>
Mike Kleinfe560a82017-05-01 12:56:35 -040015487 .byte 196,193,124,194,198,1 // vcmpltps %ymm14,%ymm0,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040015488 .byte 196,195,45,74,193,0 // vblendvps %ymm0,%ymm9,%ymm10,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040015489 .byte 196,65,116,89,200 // vmulps %ymm8,%ymm1,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040015490 .byte 197,116,89,209 // vmulps %ymm1,%ymm1,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040015491 .byte 196,65,116,89,251 // vmulps %ymm11,%ymm1,%ymm15
15492 .byte 196,65,4,88,253 // vaddps %ymm13,%ymm15,%ymm15
Mike Kleind7e06ae2017-03-29 16:33:06 -040015493 .byte 196,65,44,89,215 // vmulps %ymm15,%ymm10,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040015494 .byte 196,65,44,88,212 // vaddps %ymm12,%ymm10,%ymm10
15495 .byte 196,193,116,194,206,1 // vcmpltps %ymm14,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040015496 .byte 196,195,45,74,201,16 // vblendvps %ymm1,%ymm9,%ymm10,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040015497 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040015498 .byte 197,108,89,202 // vmulps %ymm2,%ymm2,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015499 .byte 196,65,108,89,211 // vmulps %ymm11,%ymm2,%ymm10
15500 .byte 196,65,44,88,213 // vaddps %ymm13,%ymm10,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040015501 .byte 196,65,52,89,202 // vmulps %ymm10,%ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015502 .byte 196,65,52,88,204 // vaddps %ymm12,%ymm9,%ymm9
15503 .byte 196,193,108,194,214,1 // vcmpltps %ymm14,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040015504 .byte 196,195,53,74,208,32 // vblendvps %ymm2,%ymm8,%ymm9,%ymm2
15505 .byte 72,173 // lods %ds:(%rsi),%rax
15506 .byte 255,224 // jmpq *%rax
15507
Mike Klein7c4af542017-03-29 18:21:14 -040015508HIDDEN _sk_to_srgb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015509.globl _sk_to_srgb_avx
Mike Klein86714282017-04-13 17:37:38 -040015510FUNCTION(_sk_to_srgb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015511_sk_to_srgb_avx:
Mike Kleinf45e3d72017-05-15 17:36:59 -040015512 .byte 197,124,82,200 // vrsqrtps %ymm0,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040015513 .byte 196,98,125,24,5,251,78,0,0 // vbroadcastss 0x4efb(%rip),%ymm8 # 6548 <_sk_callback_avx+0x1ed>
Mike Kleinf45e3d72017-05-15 17:36:59 -040015514 .byte 196,65,124,89,208 // vmulps %ymm8,%ymm0,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040015515 .byte 196,98,125,24,29,241,78,0,0 // vbroadcastss 0x4ef1(%rip),%ymm11 # 654c <_sk_callback_avx+0x1f1>
Mike Kleinf45e3d72017-05-15 17:36:59 -040015516 .byte 196,65,52,89,227 // vmulps %ymm11,%ymm9,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -040015517 .byte 196,98,125,24,45,231,78,0,0 // vbroadcastss 0x4ee7(%rip),%ymm13 # 6550 <_sk_callback_avx+0x1f5>
Mike Kleinf45e3d72017-05-15 17:36:59 -040015518 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
15519 .byte 196,65,52,89,228 // vmulps %ymm12,%ymm9,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -040015520 .byte 196,98,125,24,53,216,78,0,0 // vbroadcastss 0x4ed8(%rip),%ymm14 # 6554 <_sk_callback_avx+0x1f9>
Mike Kleinf45e3d72017-05-15 17:36:59 -040015521 .byte 196,65,28,88,230 // vaddps %ymm14,%ymm12,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -040015522 .byte 196,98,125,24,61,206,78,0,0 // vbroadcastss 0x4ece(%rip),%ymm15 # 6558 <_sk_callback_avx+0x1fd>
Mike Kleinf45e3d72017-05-15 17:36:59 -040015523 .byte 196,65,52,88,207 // vaddps %ymm15,%ymm9,%ymm9
15524 .byte 196,65,124,83,201 // vrcpps %ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015525 .byte 196,65,52,89,204 // vmulps %ymm12,%ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040015526 .byte 196,98,125,24,37,186,78,0,0 // vbroadcastss 0x4eba(%rip),%ymm12 # 655c <_sk_callback_avx+0x201>
Mike Kleinf45e3d72017-05-15 17:36:59 -040015527 .byte 196,193,124,194,196,1 // vcmpltps %ymm12,%ymm0,%ymm0
15528 .byte 196,195,53,74,194,0 // vblendvps %ymm0,%ymm10,%ymm9,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040015529 .byte 197,124,82,201 // vrsqrtps %ymm1,%ymm9
Mike Kleinf45e3d72017-05-15 17:36:59 -040015530 .byte 196,65,52,89,211 // vmulps %ymm11,%ymm9,%ymm10
15531 .byte 196,65,44,88,213 // vaddps %ymm13,%ymm10,%ymm10
15532 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
15533 .byte 196,65,44,88,214 // vaddps %ymm14,%ymm10,%ymm10
15534 .byte 196,65,52,88,207 // vaddps %ymm15,%ymm9,%ymm9
15535 .byte 196,65,124,83,201 // vrcpps %ymm9,%ymm9
15536 .byte 196,65,52,89,202 // vmulps %ymm10,%ymm9,%ymm9
15537 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
15538 .byte 196,193,116,194,204,1 // vcmpltps %ymm12,%ymm1,%ymm1
15539 .byte 196,195,53,74,202,16 // vblendvps %ymm1,%ymm10,%ymm9,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040015540 .byte 197,124,82,202 // vrsqrtps %ymm2,%ymm9
Mike Kleinf45e3d72017-05-15 17:36:59 -040015541 .byte 196,65,52,89,211 // vmulps %ymm11,%ymm9,%ymm10
15542 .byte 196,65,44,88,213 // vaddps %ymm13,%ymm10,%ymm10
15543 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
15544 .byte 196,65,44,88,214 // vaddps %ymm14,%ymm10,%ymm10
15545 .byte 196,65,52,88,207 // vaddps %ymm15,%ymm9,%ymm9
15546 .byte 196,65,124,83,201 // vrcpps %ymm9,%ymm9
15547 .byte 196,65,52,89,202 // vmulps %ymm10,%ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015548 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
Mike Kleinf45e3d72017-05-15 17:36:59 -040015549 .byte 196,193,108,194,212,1 // vcmpltps %ymm12,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040015550 .byte 196,195,53,74,208,32 // vblendvps %ymm2,%ymm8,%ymm9,%ymm2
15551 .byte 72,173 // lods %ds:(%rsi),%rax
15552 .byte 255,224 // jmpq *%rax
15553
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015554HIDDEN _sk_rgb_to_hsl_avx
15555.globl _sk_rgb_to_hsl_avx
Mike Klein86714282017-04-13 17:37:38 -040015556FUNCTION(_sk_rgb_to_hsl_avx)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015557_sk_rgb_to_hsl_avx:
15558 .byte 197,124,95,193 // vmaxps %ymm1,%ymm0,%ymm8
15559 .byte 197,60,95,194 // vmaxps %ymm2,%ymm8,%ymm8
15560 .byte 197,124,93,201 // vminps %ymm1,%ymm0,%ymm9
15561 .byte 197,52,93,202 // vminps %ymm2,%ymm9,%ymm9
15562 .byte 196,65,60,92,209 // vsubps %ymm9,%ymm8,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040015563 .byte 196,98,125,24,29,32,78,0,0 // vbroadcastss 0x4e20(%rip),%ymm11 # 6560 <_sk_callback_avx+0x205>
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015564 .byte 196,65,36,94,218 // vdivps %ymm10,%ymm11,%ymm11
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015565 .byte 197,116,92,226 // vsubps %ymm2,%ymm1,%ymm12
15566 .byte 196,65,28,89,227 // vmulps %ymm11,%ymm12,%ymm12
Mike Kleinfe560a82017-05-01 12:56:35 -040015567 .byte 197,116,194,234,1 // vcmpltps %ymm2,%ymm1,%ymm13
15568 .byte 197,60,194,241,0 // vcmpeqps %ymm1,%ymm8,%ymm14
15569 .byte 197,236,92,208 // vsubps %ymm0,%ymm2,%ymm2
15570 .byte 196,193,108,89,211 // vmulps %ymm11,%ymm2,%ymm2
15571 .byte 197,252,92,201 // vsubps %ymm1,%ymm0,%ymm1
15572 .byte 196,193,116,89,203 // vmulps %ymm11,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040015573 .byte 196,98,125,24,29,249,77,0,0 // vbroadcastss 0x4df9(%rip),%ymm11 # 656c <_sk_callback_avx+0x211>
Mike Kleinfe560a82017-05-01 12:56:35 -040015574 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040015575 .byte 196,98,125,24,29,231,77,0,0 // vbroadcastss 0x4de7(%rip),%ymm11 # 6568 <_sk_callback_avx+0x20d>
Mike Kleinfe560a82017-05-01 12:56:35 -040015576 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
15577 .byte 196,227,117,74,202,224 // vblendvps %ymm14,%ymm2,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040015578 .byte 196,226,125,24,21,207,77,0,0 // vbroadcastss 0x4dcf(%rip),%ymm2 # 6564 <_sk_callback_avx+0x209>
Mike Kleinfe560a82017-05-01 12:56:35 -040015579 .byte 196,65,12,87,246 // vxorps %ymm14,%ymm14,%ymm14
15580 .byte 196,227,13,74,210,208 // vblendvps %ymm13,%ymm2,%ymm14,%ymm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015581 .byte 197,188,194,192,0 // vcmpeqps %ymm0,%ymm8,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040015582 .byte 196,193,108,88,212 // vaddps %ymm12,%ymm2,%ymm2
15583 .byte 196,227,117,74,194,0 // vblendvps %ymm0,%ymm2,%ymm1,%ymm0
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015584 .byte 196,193,60,88,201 // vaddps %ymm9,%ymm8,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040015585 .byte 196,98,125,24,37,182,77,0,0 // vbroadcastss 0x4db6(%rip),%ymm12 # 6574 <_sk_callback_avx+0x219>
Mike Kleinfe560a82017-05-01 12:56:35 -040015586 .byte 196,193,116,89,212 // vmulps %ymm12,%ymm1,%ymm2
15587 .byte 197,28,194,226,1 // vcmpltps %ymm2,%ymm12,%ymm12
15588 .byte 196,65,36,92,216 // vsubps %ymm8,%ymm11,%ymm11
15589 .byte 196,65,36,92,217 // vsubps %ymm9,%ymm11,%ymm11
15590 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015591 .byte 196,65,60,194,193,0 // vcmpeqps %ymm9,%ymm8,%ymm8
15592 .byte 197,172,94,201 // vdivps %ymm1,%ymm10,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040015593 .byte 196,195,125,74,198,128 // vblendvps %ymm8,%ymm14,%ymm0,%ymm0
15594 .byte 196,195,117,74,206,128 // vblendvps %ymm8,%ymm14,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040015595 .byte 196,98,125,24,5,121,77,0,0 // vbroadcastss 0x4d79(%rip),%ymm8 # 6570 <_sk_callback_avx+0x215>
Mike Kleinfe560a82017-05-01 12:56:35 -040015596 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015597 .byte 72,173 // lods %ds:(%rsi),%rax
15598 .byte 255,224 // jmpq *%rax
15599
15600HIDDEN _sk_hsl_to_rgb_avx
15601.globl _sk_hsl_to_rgb_avx
Mike Klein86714282017-04-13 17:37:38 -040015602FUNCTION(_sk_hsl_to_rgb_avx)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015603_sk_hsl_to_rgb_avx:
Mike Klein879a08a2017-05-01 15:34:01 -040015604 .byte 72,131,236,56 // sub $0x38,%rsp
15605 .byte 197,252,17,60,36 // vmovups %ymm7,(%rsp)
15606 .byte 197,252,17,116,36,224 // vmovups %ymm6,-0x20(%rsp)
15607 .byte 197,252,17,108,36,192 // vmovups %ymm5,-0x40(%rsp)
15608 .byte 197,252,17,100,36,160 // vmovups %ymm4,-0x60(%rsp)
15609 .byte 197,252,17,92,36,128 // vmovups %ymm3,-0x80(%rsp)
Mike Klein5664e652017-05-01 16:01:38 -040015610 .byte 197,252,40,225 // vmovaps %ymm1,%ymm4
15611 .byte 197,252,40,216 // vmovaps %ymm0,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040015612 .byte 196,98,125,24,5,70,77,0,0 // vbroadcastss 0x4d46(%rip),%ymm8 # 6578 <_sk_callback_avx+0x21d>
Mike Klein5664e652017-05-01 16:01:38 -040015613 .byte 197,60,194,202,2 // vcmpleps %ymm2,%ymm8,%ymm9
15614 .byte 197,92,89,210 // vmulps %ymm2,%ymm4,%ymm10
15615 .byte 196,65,92,92,218 // vsubps %ymm10,%ymm4,%ymm11
15616 .byte 196,67,45,74,203,144 // vblendvps %ymm9,%ymm11,%ymm10,%ymm9
Mike Klein879a08a2017-05-01 15:34:01 -040015617 .byte 197,52,88,210 // vaddps %ymm2,%ymm9,%ymm10
15618 .byte 197,108,88,202 // vaddps %ymm2,%ymm2,%ymm9
15619 .byte 196,65,52,92,202 // vsubps %ymm10,%ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040015620 .byte 196,98,125,24,29,32,77,0,0 // vbroadcastss 0x4d20(%rip),%ymm11 # 657c <_sk_callback_avx+0x221>
Mike Klein5664e652017-05-01 16:01:38 -040015621 .byte 196,65,100,88,219 // vaddps %ymm11,%ymm3,%ymm11
15622 .byte 196,67,125,8,227,1 // vroundps $0x1,%ymm11,%ymm12
15623 .byte 196,65,36,92,252 // vsubps %ymm12,%ymm11,%ymm15
Mike Klein879a08a2017-05-01 15:34:01 -040015624 .byte 196,65,44,92,217 // vsubps %ymm9,%ymm10,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040015625 .byte 196,98,125,24,37,10,77,0,0 // vbroadcastss 0x4d0a(%rip),%ymm12 # 6584 <_sk_callback_avx+0x229>
Mike Klein5664e652017-05-01 16:01:38 -040015626 .byte 196,193,4,89,196 // vmulps %ymm12,%ymm15,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040015627 .byte 196,98,125,24,45,0,77,0,0 // vbroadcastss 0x4d00(%rip),%ymm13 # 6588 <_sk_callback_avx+0x22d>
Mike Klein5664e652017-05-01 16:01:38 -040015628 .byte 197,20,92,240 // vsubps %ymm0,%ymm13,%ymm14
15629 .byte 196,65,36,89,246 // vmulps %ymm14,%ymm11,%ymm14
15630 .byte 196,65,52,88,246 // vaddps %ymm14,%ymm9,%ymm14
Mike Klein8ca33562017-05-23 08:07:43 -040015631 .byte 196,226,125,24,13,225,76,0,0 // vbroadcastss 0x4ce1(%rip),%ymm1 # 6580 <_sk_callback_avx+0x225>
Mike Klein5664e652017-05-01 16:01:38 -040015632 .byte 196,193,116,194,255,2 // vcmpleps %ymm15,%ymm1,%ymm7
15633 .byte 196,195,13,74,249,112 // vblendvps %ymm7,%ymm9,%ymm14,%ymm7
15634 .byte 196,65,60,194,247,2 // vcmpleps %ymm15,%ymm8,%ymm14
15635 .byte 196,227,45,74,255,224 // vblendvps %ymm14,%ymm7,%ymm10,%ymm7
Mike Klein8ca33562017-05-23 08:07:43 -040015636 .byte 196,98,125,24,53,204,76,0,0 // vbroadcastss 0x4ccc(%rip),%ymm14 # 658c <_sk_callback_avx+0x231>
Mike Klein5664e652017-05-01 16:01:38 -040015637 .byte 196,65,12,194,255,2 // vcmpleps %ymm15,%ymm14,%ymm15
15638 .byte 196,193,124,89,195 // vmulps %ymm11,%ymm0,%ymm0
Mike Klein879a08a2017-05-01 15:34:01 -040015639 .byte 197,180,88,192 // vaddps %ymm0,%ymm9,%ymm0
Mike Klein5664e652017-05-01 16:01:38 -040015640 .byte 196,99,125,74,255,240 // vblendvps %ymm15,%ymm7,%ymm0,%ymm15
15641 .byte 196,227,125,8,195,1 // vroundps $0x1,%ymm3,%ymm0
15642 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
15643 .byte 196,193,124,89,252 // vmulps %ymm12,%ymm0,%ymm7
15644 .byte 197,148,92,247 // vsubps %ymm7,%ymm13,%ymm6
15645 .byte 197,164,89,246 // vmulps %ymm6,%ymm11,%ymm6
15646 .byte 197,180,88,246 // vaddps %ymm6,%ymm9,%ymm6
15647 .byte 197,244,194,232,2 // vcmpleps %ymm0,%ymm1,%ymm5
15648 .byte 196,195,77,74,233,80 // vblendvps %ymm5,%ymm9,%ymm6,%ymm5
15649 .byte 197,188,194,240,2 // vcmpleps %ymm0,%ymm8,%ymm6
15650 .byte 196,227,45,74,237,96 // vblendvps %ymm6,%ymm5,%ymm10,%ymm5
15651 .byte 197,140,194,192,2 // vcmpleps %ymm0,%ymm14,%ymm0
15652 .byte 197,164,89,247 // vmulps %ymm7,%ymm11,%ymm6
15653 .byte 197,180,88,246 // vaddps %ymm6,%ymm9,%ymm6
15654 .byte 196,227,77,74,237,0 // vblendvps %ymm0,%ymm5,%ymm6,%ymm5
Mike Klein8ca33562017-05-23 08:07:43 -040015655 .byte 196,226,125,24,5,110,76,0,0 // vbroadcastss 0x4c6e(%rip),%ymm0 # 6590 <_sk_callback_avx+0x235>
Mike Klein5664e652017-05-01 16:01:38 -040015656 .byte 197,228,88,192 // vaddps %ymm0,%ymm3,%ymm0
15657 .byte 196,227,125,8,216,1 // vroundps $0x1,%ymm0,%ymm3
15658 .byte 197,252,92,195 // vsubps %ymm3,%ymm0,%ymm0
15659 .byte 197,244,194,200,2 // vcmpleps %ymm0,%ymm1,%ymm1
15660 .byte 196,193,124,89,220 // vmulps %ymm12,%ymm0,%ymm3
15661 .byte 197,148,92,243 // vsubps %ymm3,%ymm13,%ymm6
15662 .byte 197,164,89,246 // vmulps %ymm6,%ymm11,%ymm6
15663 .byte 197,180,88,246 // vaddps %ymm6,%ymm9,%ymm6
15664 .byte 196,195,77,74,201,16 // vblendvps %ymm1,%ymm9,%ymm6,%ymm1
15665 .byte 197,188,194,240,2 // vcmpleps %ymm0,%ymm8,%ymm6
15666 .byte 196,227,45,74,201,96 // vblendvps %ymm6,%ymm1,%ymm10,%ymm1
15667 .byte 197,140,194,192,2 // vcmpleps %ymm0,%ymm14,%ymm0
15668 .byte 197,164,89,219 // vmulps %ymm3,%ymm11,%ymm3
15669 .byte 197,180,88,219 // vaddps %ymm3,%ymm9,%ymm3
15670 .byte 196,227,101,74,217,0 // vblendvps %ymm0,%ymm1,%ymm3,%ymm3
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015671 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
Mike Klein5664e652017-05-01 16:01:38 -040015672 .byte 197,220,194,224,0 // vcmpeqps %ymm0,%ymm4,%ymm4
15673 .byte 196,227,5,74,194,64 // vblendvps %ymm4,%ymm2,%ymm15,%ymm0
15674 .byte 196,227,85,74,202,64 // vblendvps %ymm4,%ymm2,%ymm5,%ymm1
15675 .byte 196,227,101,74,210,64 // vblendvps %ymm4,%ymm2,%ymm3,%ymm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015676 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein879a08a2017-05-01 15:34:01 -040015677 .byte 197,252,16,92,36,128 // vmovups -0x80(%rsp),%ymm3
15678 .byte 197,252,16,100,36,160 // vmovups -0x60(%rsp),%ymm4
15679 .byte 197,252,16,108,36,192 // vmovups -0x40(%rsp),%ymm5
15680 .byte 197,252,16,116,36,224 // vmovups -0x20(%rsp),%ymm6
15681 .byte 197,252,16,60,36 // vmovups (%rsp),%ymm7
15682 .byte 72,131,196,56 // add $0x38,%rsp
Mike Kleindb1cbcb2017-04-12 08:35:41 -040015683 .byte 255,224 // jmpq *%rax
15684
Mike Klein7c4af542017-03-29 18:21:14 -040015685HIDDEN _sk_scale_1_float_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015686.globl _sk_scale_1_float_avx
Mike Klein86714282017-04-13 17:37:38 -040015687FUNCTION(_sk_scale_1_float_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015688_sk_scale_1_float_avx:
15689 .byte 72,173 // lods %ds:(%rsi),%rax
15690 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
15691 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
15692 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
15693 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
15694 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
15695 .byte 72,173 // lods %ds:(%rsi),%rax
15696 .byte 255,224 // jmpq *%rax
15697
Mike Klein7c4af542017-03-29 18:21:14 -040015698HIDDEN _sk_scale_u8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015699.globl _sk_scale_u8_avx
Mike Klein86714282017-04-13 17:37:38 -040015700FUNCTION(_sk_scale_u8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015701_sk_scale_u8_avx:
15702 .byte 73,137,200 // mov %rcx,%r8
15703 .byte 72,173 // lods %ds:(%rsi),%rax
15704 .byte 72,139,0 // mov (%rax),%rax
15705 .byte 72,1,248 // add %rdi,%rax
15706 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040015707 .byte 117,68 // jne 1a19 <_sk_scale_u8_avx+0x54>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015708 .byte 197,122,126,0 // vmovq (%rax),%xmm8
15709 .byte 196,66,121,49,200 // vpmovzxbd %xmm8,%xmm9
15710 .byte 196,67,121,4,192,229 // vpermilps $0xe5,%xmm8,%xmm8
15711 .byte 196,66,121,49,192 // vpmovzxbd %xmm8,%xmm8
15712 .byte 196,67,53,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm9,%ymm8
15713 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040015714 .byte 196,98,125,24,13,151,75,0,0 // vbroadcastss 0x4b97(%rip),%ymm9 # 6594 <_sk_callback_avx+0x239>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015715 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
15716 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
15717 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
15718 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
15719 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
15720 .byte 72,173 // lods %ds:(%rsi),%rax
15721 .byte 76,137,193 // mov %r8,%rcx
15722 .byte 255,224 // jmpq *%rax
15723 .byte 49,201 // xor %ecx,%ecx
15724 .byte 77,137,194 // mov %r8,%r10
15725 .byte 69,49,201 // xor %r9d,%r9d
15726 .byte 68,15,182,24 // movzbl (%rax),%r11d
15727 .byte 72,255,192 // inc %rax
15728 .byte 73,211,227 // shl %cl,%r11
15729 .byte 77,9,217 // or %r11,%r9
15730 .byte 72,131,193,8 // add $0x8,%rcx
15731 .byte 73,255,202 // dec %r10
Mike Klein5d7f2b52017-05-20 13:21:59 -040015732 .byte 117,234 // jne 1a21 <_sk_scale_u8_avx+0x5c>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015733 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Klein5d7f2b52017-05-20 13:21:59 -040015734 .byte 235,155 // jmp 19d9 <_sk_scale_u8_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015735
Mike Klein7c4af542017-03-29 18:21:14 -040015736HIDDEN _sk_lerp_1_float_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015737.globl _sk_lerp_1_float_avx
Mike Klein86714282017-04-13 17:37:38 -040015738FUNCTION(_sk_lerp_1_float_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015739_sk_lerp_1_float_avx:
15740 .byte 72,173 // lods %ds:(%rsi),%rax
15741 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
15742 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
15743 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
15744 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
15745 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
15746 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
15747 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
15748 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
15749 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
15750 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
15751 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
15752 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
15753 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
15754 .byte 72,173 // lods %ds:(%rsi),%rax
15755 .byte 255,224 // jmpq *%rax
15756
Mike Klein7c4af542017-03-29 18:21:14 -040015757HIDDEN _sk_lerp_u8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015758.globl _sk_lerp_u8_avx
Mike Klein86714282017-04-13 17:37:38 -040015759FUNCTION(_sk_lerp_u8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015760_sk_lerp_u8_avx:
15761 .byte 73,137,200 // mov %rcx,%r8
15762 .byte 72,173 // lods %ds:(%rsi),%rax
15763 .byte 72,139,0 // mov (%rax),%rax
15764 .byte 72,1,248 // add %rdi,%rax
15765 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040015766 .byte 117,104 // jne 1af5 <_sk_lerp_u8_avx+0x78>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015767 .byte 197,122,126,0 // vmovq (%rax),%xmm8
15768 .byte 196,66,121,49,200 // vpmovzxbd %xmm8,%xmm9
15769 .byte 196,67,121,4,192,229 // vpermilps $0xe5,%xmm8,%xmm8
15770 .byte 196,66,121,49,192 // vpmovzxbd %xmm8,%xmm8
15771 .byte 196,67,53,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm9,%ymm8
15772 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040015773 .byte 196,98,125,24,13,227,74,0,0 // vbroadcastss 0x4ae3(%rip),%ymm9 # 6598 <_sk_callback_avx+0x23d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015774 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
15775 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
15776 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
15777 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
15778 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
15779 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
15780 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
15781 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
15782 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
15783 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
15784 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
15785 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
15786 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
15787 .byte 72,173 // lods %ds:(%rsi),%rax
15788 .byte 76,137,193 // mov %r8,%rcx
15789 .byte 255,224 // jmpq *%rax
15790 .byte 49,201 // xor %ecx,%ecx
15791 .byte 77,137,194 // mov %r8,%r10
15792 .byte 69,49,201 // xor %r9d,%r9d
15793 .byte 68,15,182,24 // movzbl (%rax),%r11d
15794 .byte 72,255,192 // inc %rax
15795 .byte 73,211,227 // shl %cl,%r11
15796 .byte 77,9,217 // or %r11,%r9
15797 .byte 72,131,193,8 // add $0x8,%rcx
15798 .byte 73,255,202 // dec %r10
Mike Klein5d7f2b52017-05-20 13:21:59 -040015799 .byte 117,234 // jne 1afd <_sk_lerp_u8_avx+0x80>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015800 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Klein5d7f2b52017-05-20 13:21:59 -040015801 .byte 233,116,255,255,255 // jmpq 1a91 <_sk_lerp_u8_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015802
Mike Klein7c4af542017-03-29 18:21:14 -040015803HIDDEN _sk_lerp_565_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015804.globl _sk_lerp_565_avx
Mike Klein86714282017-04-13 17:37:38 -040015805FUNCTION(_sk_lerp_565_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015806_sk_lerp_565_avx:
15807 .byte 72,173 // lods %ds:(%rsi),%rax
15808 .byte 76,139,16 // mov (%rax),%r10
15809 .byte 72,133,201 // test %rcx,%rcx
Mike Klein5d7f2b52017-05-20 13:21:59 -040015810 .byte 15,133,208,0,0,0 // jne 1bfb <_sk_lerp_565_avx+0xde>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015811 .byte 196,65,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm8
bungeman6f9f2592017-05-10 13:50:12 -040015812 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
15813 .byte 196,65,57,105,201 // vpunpckhwd %xmm9,%xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040015814 .byte 196,66,121,51,192 // vpmovzxwd %xmm8,%xmm8
bungeman6f9f2592017-05-10 13:50:12 -040015815 .byte 196,67,61,24,193,1 // vinsertf128 $0x1,%xmm9,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040015816 .byte 196,98,125,24,13,77,74,0,0 // vbroadcastss 0x4a4d(%rip),%ymm9 # 659c <_sk_callback_avx+0x241>
bungeman6f9f2592017-05-10 13:50:12 -040015817 .byte 196,65,60,84,201 // vandps %ymm9,%ymm8,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040015818 .byte 196,65,124,91,201 // vcvtdq2ps %ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040015819 .byte 196,98,125,24,21,62,74,0,0 // vbroadcastss 0x4a3e(%rip),%ymm10 # 65a0 <_sk_callback_avx+0x245>
Mike Kleinfe560a82017-05-01 12:56:35 -040015820 .byte 196,65,52,89,202 // vmulps %ymm10,%ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040015821 .byte 196,98,125,24,21,52,74,0,0 // vbroadcastss 0x4a34(%rip),%ymm10 # 65a4 <_sk_callback_avx+0x249>
bungeman6f9f2592017-05-10 13:50:12 -040015822 .byte 196,65,60,84,210 // vandps %ymm10,%ymm8,%ymm10
15823 .byte 196,65,124,91,210 // vcvtdq2ps %ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040015824 .byte 196,98,125,24,29,37,74,0,0 // vbroadcastss 0x4a25(%rip),%ymm11 # 65a8 <_sk_callback_avx+0x24d>
bungeman6f9f2592017-05-10 13:50:12 -040015825 .byte 196,65,44,89,211 // vmulps %ymm11,%ymm10,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040015826 .byte 196,98,125,24,29,27,74,0,0 // vbroadcastss 0x4a1b(%rip),%ymm11 # 65ac <_sk_callback_avx+0x251>
bungeman6f9f2592017-05-10 13:50:12 -040015827 .byte 196,65,60,84,195 // vandps %ymm11,%ymm8,%ymm8
15828 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040015829 .byte 196,98,125,24,29,12,74,0,0 // vbroadcastss 0x4a0c(%rip),%ymm11 # 65b0 <_sk_callback_avx+0x255>
bungeman6f9f2592017-05-10 13:50:12 -040015830 .byte 196,65,60,89,195 // vmulps %ymm11,%ymm8,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040015831 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
bungeman6f9f2592017-05-10 13:50:12 -040015832 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040015833 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
15834 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
bungeman6f9f2592017-05-10 13:50:12 -040015835 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040015836 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
15837 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
bungeman6f9f2592017-05-10 13:50:12 -040015838 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040015839 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
bungeman6f9f2592017-05-10 13:50:12 -040015840 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
15841 .byte 196,65,100,89,201 // vmulps %ymm9,%ymm3,%ymm9
15842 .byte 197,52,88,207 // vaddps %ymm7,%ymm9,%ymm9
15843 .byte 196,65,100,89,210 // vmulps %ymm10,%ymm3,%ymm10
15844 .byte 197,44,88,215 // vaddps %ymm7,%ymm10,%ymm10
15845 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
15846 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
15847 .byte 197,172,95,219 // vmaxps %ymm3,%ymm10,%ymm3
15848 .byte 197,180,95,219 // vmaxps %ymm3,%ymm9,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040015849 .byte 72,173 // lods %ds:(%rsi),%rax
15850 .byte 255,224 // jmpq *%rax
15851 .byte 65,137,200 // mov %ecx,%r8d
15852 .byte 65,128,224,7 // and $0x7,%r8b
15853 .byte 196,65,57,239,192 // vpxor %xmm8,%xmm8,%xmm8
15854 .byte 65,254,200 // dec %r8b
15855 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Klein5d7f2b52017-05-20 13:21:59 -040015856 .byte 15,135,29,255,255,255 // ja 1b31 <_sk_lerp_565_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015857 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Klein5d7f2b52017-05-20 13:21:59 -040015858 .byte 76,141,13,77,0,0,0 // lea 0x4d(%rip),%r9 # 1c6c <_sk_lerp_565_avx+0x14f>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015859 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
15860 .byte 76,1,200 // add %r9,%rax
15861 .byte 255,224 // jmpq *%rax
bungeman6f9f2592017-05-10 13:50:12 -040015862 .byte 196,65,57,239,192 // vpxor %xmm8,%xmm8,%xmm8
15863 .byte 196,65,57,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm8,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040015864 .byte 196,65,57,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm8,%xmm8
15865 .byte 196,65,57,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm8,%xmm8
15866 .byte 196,65,57,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm8,%xmm8
15867 .byte 196,65,57,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm8,%xmm8
15868 .byte 196,65,57,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm8,%xmm8
15869 .byte 196,65,57,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm8,%xmm8
Mike Klein5d7f2b52017-05-20 13:21:59 -040015870 .byte 233,200,254,255,255 // jmpq 1b31 <_sk_lerp_565_avx+0x14>
15871 .byte 15,31,0 // nopl (%rax)
15872 .byte 241 // icebp
Mike Kleind7e06ae2017-03-29 16:33:06 -040015873 .byte 255 // (bad)
15874 .byte 255 // (bad)
15875 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040015876 .byte 233,255,255,255,225 // jmpq ffffffffe2001c74 <_sk_callback_avx+0xffffffffe1ffb919>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015877 .byte 255 // (bad)
15878 .byte 255 // (bad)
15879 .byte 255 // (bad)
Mike Klein5d7f2b52017-05-20 13:21:59 -040015880 .byte 217,255 // fcos
15881 .byte 255 // (bad)
15882 .byte 255,209 // callq *%rcx
15883 .byte 255 // (bad)
15884 .byte 255 // (bad)
15885 .byte 255,201 // dec %ecx
15886 .byte 255 // (bad)
15887 .byte 255 // (bad)
15888 .byte 255 // (bad)
15889 .byte 188 // .byte 0xbc
Mike Kleind7e06ae2017-03-29 16:33:06 -040015890 .byte 255 // (bad)
15891 .byte 255 // (bad)
15892 .byte 255 // .byte 0xff
15893
Mike Klein7c4af542017-03-29 18:21:14 -040015894HIDDEN _sk_load_tables_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015895.globl _sk_load_tables_avx
Mike Klein86714282017-04-13 17:37:38 -040015896FUNCTION(_sk_load_tables_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015897_sk_load_tables_avx:
Mike Klein0aa742f2017-04-27 13:36:57 -040015898 .byte 72,173 // lods %ds:(%rsi),%rax
Brian Osman74fc5932017-05-22 19:25:36 +000015899 .byte 76,139,0 // mov (%rax),%r8
15900 .byte 72,133,201 // test %rcx,%rcx
15901 .byte 15,133,26,2,0,0 // jne 1eb0 <_sk_load_tables_avx+0x228>
15902 .byte 196,65,124,16,4,184 // vmovups (%r8,%rdi,4),%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040015903 .byte 85 // push %rbp
15904 .byte 65,87 // push %r15
15905 .byte 65,86 // push %r14
15906 .byte 65,85 // push %r13
15907 .byte 65,84 // push %r12
15908 .byte 83 // push %rbx
Mike Klein8ca33562017-05-23 08:07:43 -040015909 .byte 197,124,40,13,242,75,0,0 // vmovaps 0x4bf2(%rip),%ymm9 # 68a0 <_sk_callback_avx+0x545>
Brian Osman74fc5932017-05-22 19:25:36 +000015910 .byte 196,193,60,84,193 // vandps %ymm9,%ymm8,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040015911 .byte 196,193,249,126,193 // vmovq %xmm0,%r9
15912 .byte 69,137,203 // mov %r9d,%r11d
15913 .byte 196,195,249,22,194,1 // vpextrq $0x1,%xmm0,%r10
15914 .byte 69,137,214 // mov %r10d,%r14d
15915 .byte 73,193,234,32 // shr $0x20,%r10
15916 .byte 73,193,233,32 // shr $0x20,%r9
15917 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
Brian Osman74fc5932017-05-22 19:25:36 +000015918 .byte 196,193,249,126,196 // vmovq %xmm0,%r12
15919 .byte 69,137,231 // mov %r12d,%r15d
15920 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
15921 .byte 65,137,221 // mov %ebx,%r13d
Mike Kleind7e06ae2017-03-29 16:33:06 -040015922 .byte 72,193,235,32 // shr $0x20,%rbx
Brian Osman74fc5932017-05-22 19:25:36 +000015923 .byte 73,193,236,32 // shr $0x20,%r12
Mike Kleind7e06ae2017-03-29 16:33:06 -040015924 .byte 72,139,104,8 // mov 0x8(%rax),%rbp
Brian Osman74fc5932017-05-22 19:25:36 +000015925 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Kleind7e06ae2017-03-29 16:33:06 -040015926 .byte 196,161,122,16,68,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm0
Brian Osman74fc5932017-05-22 19:25:36 +000015927 .byte 196,163,121,33,68,165,0,16 // vinsertps $0x10,0x0(%rbp,%r12,4),%xmm0,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040015928 .byte 196,163,121,33,68,173,0,32 // vinsertps $0x20,0x0(%rbp,%r13,4),%xmm0,%xmm0
Brian Osman74fc5932017-05-22 19:25:36 +000015929 .byte 196,227,121,33,68,157,0,48 // vinsertps $0x30,0x0(%rbp,%rbx,4),%xmm0,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040015930 .byte 196,161,122,16,76,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm1
15931 .byte 196,163,113,33,76,141,0,16 // vinsertps $0x10,0x0(%rbp,%r9,4),%xmm1,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040015932 .byte 196,163,113,33,76,181,0,32 // vinsertps $0x20,0x0(%rbp,%r14,4),%xmm1,%xmm1
15933 .byte 196,163,113,33,76,149,0,48 // vinsertps $0x30,0x0(%rbp,%r10,4),%xmm1,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040015934 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
Brian Osman74fc5932017-05-22 19:25:36 +000015935 .byte 196,193,113,114,208,8 // vpsrld $0x8,%xmm8,%xmm1
15936 .byte 196,67,125,25,194,1 // vextractf128 $0x1,%ymm8,%xmm10
15937 .byte 196,193,105,114,210,8 // vpsrld $0x8,%xmm10,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040015938 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
Mike Klein0aa742f2017-04-27 13:36:57 -040015939 .byte 196,193,116,84,201 // vandps %ymm9,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040015940 .byte 196,193,249,126,201 // vmovq %xmm1,%r9
15941 .byte 69,137,203 // mov %r9d,%r11d
15942 .byte 196,195,249,22,202,1 // vpextrq $0x1,%xmm1,%r10
15943 .byte 69,137,214 // mov %r10d,%r14d
15944 .byte 73,193,234,32 // shr $0x20,%r10
15945 .byte 73,193,233,32 // shr $0x20,%r9
15946 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
Brian Osman74fc5932017-05-22 19:25:36 +000015947 .byte 196,225,249,126,205 // vmovq %xmm1,%rbp
15948 .byte 65,137,239 // mov %ebp,%r15d
15949 .byte 196,227,249,22,203,1 // vpextrq $0x1,%xmm1,%rbx
15950 .byte 65,137,220 // mov %ebx,%r12d
Mike Klein139e4632017-05-22 10:28:27 -040015951 .byte 72,193,235,32 // shr $0x20,%rbx
Brian Osman74fc5932017-05-22 19:25:36 +000015952 .byte 72,193,237,32 // shr $0x20,%rbp
15953 .byte 196,129,122,16,12,184 // vmovss (%r8,%r15,4),%xmm1
15954 .byte 196,195,113,33,12,168,16 // vinsertps $0x10,(%r8,%rbp,4),%xmm1,%xmm1
15955 .byte 196,129,122,16,20,160 // vmovss (%r8,%r12,4),%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040015956 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
Brian Osman74fc5932017-05-22 19:25:36 +000015957 .byte 196,193,122,16,20,152 // vmovss (%r8,%rbx,4),%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040015958 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
Brian Osman74fc5932017-05-22 19:25:36 +000015959 .byte 196,129,122,16,20,152 // vmovss (%r8,%r11,4),%xmm2
15960 .byte 196,131,105,33,20,136,16 // vinsertps $0x10,(%r8,%r9,4),%xmm2,%xmm2
15961 .byte 196,129,122,16,28,176 // vmovss (%r8,%r14,4),%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040015962 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
Brian Osman74fc5932017-05-22 19:25:36 +000015963 .byte 196,129,122,16,28,144 // vmovss (%r8,%r10,4),%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040015964 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
15965 .byte 196,227,109,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm1
15966 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Brian Osman74fc5932017-05-22 19:25:36 +000015967 .byte 196,193,105,114,208,16 // vpsrld $0x10,%xmm8,%xmm2
15968 .byte 196,193,97,114,210,16 // vpsrld $0x10,%xmm10,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040015969 .byte 196,227,109,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm2,%ymm2
Mike Klein0aa742f2017-04-27 13:36:57 -040015970 .byte 196,193,108,84,209 // vandps %ymm9,%ymm2,%ymm2
Brian Osman74fc5932017-05-22 19:25:36 +000015971 .byte 196,193,249,126,208 // vmovq %xmm2,%r8
15972 .byte 69,137,194 // mov %r8d,%r10d
15973 .byte 196,195,249,22,209,1 // vpextrq $0x1,%xmm2,%r9
15974 .byte 69,137,203 // mov %r9d,%r11d
Mike Kleind7e06ae2017-03-29 16:33:06 -040015975 .byte 73,193,233,32 // shr $0x20,%r9
Brian Osman74fc5932017-05-22 19:25:36 +000015976 .byte 73,193,232,32 // shr $0x20,%r8
Mike Kleind7e06ae2017-03-29 16:33:06 -040015977 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
15978 .byte 196,225,249,126,213 // vmovq %xmm2,%rbp
15979 .byte 65,137,238 // mov %ebp,%r14d
15980 .byte 196,227,249,22,211,1 // vpextrq $0x1,%xmm2,%rbx
15981 .byte 65,137,223 // mov %ebx,%r15d
15982 .byte 72,193,235,32 // shr $0x20,%rbx
15983 .byte 72,193,237,32 // shr $0x20,%rbp
15984 .byte 196,161,122,16,20,176 // vmovss (%rax,%r14,4),%xmm2
15985 .byte 196,227,105,33,20,168,16 // vinsertps $0x10,(%rax,%rbp,4),%xmm2,%xmm2
15986 .byte 196,161,122,16,28,184 // vmovss (%rax,%r15,4),%xmm3
15987 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
15988 .byte 197,250,16,28,152 // vmovss (%rax,%rbx,4),%xmm3
15989 .byte 196,99,105,33,203,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm9
15990 .byte 196,161,122,16,28,144 // vmovss (%rax,%r10,4),%xmm3
Brian Osman74fc5932017-05-22 19:25:36 +000015991 .byte 196,163,97,33,28,128,16 // vinsertps $0x10,(%rax,%r8,4),%xmm3,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040015992 .byte 196,161,122,16,20,152 // vmovss (%rax,%r11,4),%xmm2
15993 .byte 196,227,97,33,210,32 // vinsertps $0x20,%xmm2,%xmm3,%xmm2
Brian Osman74fc5932017-05-22 19:25:36 +000015994 .byte 196,161,122,16,28,136 // vmovss (%rax,%r9,4),%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040015995 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
15996 .byte 196,195,109,24,209,1 // vinsertf128 $0x1,%xmm9,%ymm2,%ymm2
Brian Osman74fc5932017-05-22 19:25:36 +000015997 .byte 196,193,57,114,208,24 // vpsrld $0x18,%xmm8,%xmm8
15998 .byte 196,193,97,114,210,24 // vpsrld $0x18,%xmm10,%xmm3
15999 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040016000 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040016001 .byte 196,98,125,24,5,23,71,0,0 // vbroadcastss 0x4717(%rip),%ymm8 # 65b4 <_sk_callback_avx+0x259>
Mike Kleinfe560a82017-05-01 12:56:35 -040016002 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040016003 .byte 72,173 // lods %ds:(%rsi),%rax
16004 .byte 91 // pop %rbx
16005 .byte 65,92 // pop %r12
16006 .byte 65,93 // pop %r13
16007 .byte 65,94 // pop %r14
16008 .byte 65,95 // pop %r15
16009 .byte 93 // pop %rbp
16010 .byte 255,224 // jmpq *%rax
Brian Osman74fc5932017-05-22 19:25:36 +000016011 .byte 65,137,201 // mov %ecx,%r9d
16012 .byte 65,128,225,7 // and $0x7,%r9b
16013 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
16014 .byte 65,254,201 // dec %r9b
16015 .byte 65,128,249,6 // cmp $0x6,%r9b
16016 .byte 15,135,211,253,255,255 // ja 1c9c <_sk_load_tables_avx+0x14>
16017 .byte 69,15,182,201 // movzbl %r9b,%r9d
16018 .byte 76,141,21,140,0,0,0 // lea 0x8c(%rip),%r10 # 1f60 <_sk_load_tables_avx+0x2d8>
16019 .byte 79,99,12,138 // movslq (%r10,%r9,4),%r9
16020 .byte 77,1,209 // add %r10,%r9
16021 .byte 65,255,225 // jmpq *%r9
16022 .byte 196,193,121,110,68,184,24 // vmovd 0x18(%r8,%rdi,4),%xmm0
16023 .byte 197,249,112,192,68 // vpshufd $0x44,%xmm0,%xmm0
16024 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
16025 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
16026 .byte 196,99,117,12,192,64 // vblendps $0x40,%ymm0,%ymm1,%ymm8
16027 .byte 196,99,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm0
16028 .byte 196,195,121,34,68,184,20,1 // vpinsrd $0x1,0x14(%r8,%rdi,4),%xmm0,%xmm0
16029 .byte 196,99,61,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm8,%ymm8
16030 .byte 196,99,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm0
16031 .byte 196,195,121,34,68,184,16,0 // vpinsrd $0x0,0x10(%r8,%rdi,4),%xmm0,%xmm0
16032 .byte 196,99,61,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm8,%ymm8
16033 .byte 196,195,57,34,68,184,12,3 // vpinsrd $0x3,0xc(%r8,%rdi,4),%xmm8,%xmm0
16034 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
16035 .byte 196,195,57,34,68,184,8,2 // vpinsrd $0x2,0x8(%r8,%rdi,4),%xmm8,%xmm0
16036 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
16037 .byte 196,195,57,34,68,184,4,1 // vpinsrd $0x1,0x4(%r8,%rdi,4),%xmm8,%xmm0
16038 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
16039 .byte 196,195,57,34,4,184,0 // vpinsrd $0x0,(%r8,%rdi,4),%xmm8,%xmm0
16040 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
16041 .byte 233,62,253,255,255 // jmpq 1c9c <_sk_load_tables_avx+0x14>
16042 .byte 102,144 // xchg %ax,%ax
16043 .byte 236 // in (%dx),%al
16044 .byte 255 // (bad)
16045 .byte 255 // (bad)
16046 .byte 255 // (bad)
16047 .byte 222,255 // fdivrp %st,%st(7)
16048 .byte 255 // (bad)
16049 .byte 255,208 // callq *%rax
16050 .byte 255 // (bad)
16051 .byte 255 // (bad)
16052 .byte 255,194 // inc %edx
16053 .byte 255 // (bad)
16054 .byte 255 // (bad)
16055 .byte 255,174,255,255,255,154 // ljmp *-0x65000001(%rsi)
16056 .byte 255 // (bad)
16057 .byte 255 // (bad)
16058 .byte 255 // (bad)
16059 .byte 126,255 // jle 1f79 <_sk_load_tables_avx+0x2f1>
16060 .byte 255 // (bad)
16061 .byte 255 // .byte 0xff
Mike Kleind7e06ae2017-03-29 16:33:06 -040016062
Mike Kleina3735cd2017-04-17 13:19:05 -040016063HIDDEN _sk_load_tables_u16_be_avx
16064.globl _sk_load_tables_u16_be_avx
16065FUNCTION(_sk_load_tables_u16_be_avx)
16066_sk_load_tables_u16_be_avx:
16067 .byte 72,173 // lods %ds:(%rsi),%rax
16068 .byte 76,139,0 // mov (%rax),%r8
16069 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
16070 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016071 .byte 15,133,113,2,0,0 // jne 2203 <_sk_load_tables_u16_be_avx+0x287>
Mike Kleina3735cd2017-04-17 13:19:05 -040016072 .byte 196,1,121,16,4,72 // vmovupd (%r8,%r9,2),%xmm8
16073 .byte 196,129,121,16,84,72,16 // vmovupd 0x10(%r8,%r9,2),%xmm2
16074 .byte 196,129,121,16,92,72,32 // vmovupd 0x20(%r8,%r9,2),%xmm3
16075 .byte 196,1,122,111,76,72,48 // vmovdqu 0x30(%r8,%r9,2),%xmm9
16076 .byte 85 // push %rbp
16077 .byte 65,87 // push %r15
16078 .byte 65,86 // push %r14
16079 .byte 65,85 // push %r13
16080 .byte 65,84 // push %r12
16081 .byte 83 // push %rbx
16082 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
16083 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
16084 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
16085 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
Mike Klein0aa742f2017-04-27 13:36:57 -040016086 .byte 197,121,97,202 // vpunpcklwd %xmm2,%xmm0,%xmm9
16087 .byte 197,121,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm8
16088 .byte 197,241,97,195 // vpunpcklwd %xmm3,%xmm1,%xmm0
16089 .byte 197,113,105,227 // vpunpckhwd %xmm3,%xmm1,%xmm12
16090 .byte 197,177,108,208 // vpunpcklqdq %xmm0,%xmm9,%xmm2
16091 .byte 197,177,109,200 // vpunpckhqdq %xmm0,%xmm9,%xmm1
16092 .byte 196,65,57,108,212 // vpunpcklqdq %xmm12,%xmm8,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040016093 .byte 197,121,111,29,50,73,0,0 // vmovdqa 0x4932(%rip),%xmm11 # 6920 <_sk_callback_avx+0x5c5>
Mike Klein0aa742f2017-04-27 13:36:57 -040016094 .byte 196,193,105,219,195 // vpand %xmm11,%xmm2,%xmm0
16095 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
16096 .byte 196,193,121,105,209 // vpunpckhwd %xmm9,%xmm0,%xmm2
16097 .byte 196,195,249,22,208,1 // vpextrq $0x1,%xmm2,%r8
16098 .byte 69,137,193 // mov %r8d,%r9d
16099 .byte 77,137,194 // mov %r8,%r10
Mike Kleina3735cd2017-04-17 13:19:05 -040016100 .byte 73,193,234,32 // shr $0x20,%r10
Mike Klein0aa742f2017-04-27 13:36:57 -040016101 .byte 196,193,249,126,208 // vmovq %xmm2,%r8
16102 .byte 69,137,195 // mov %r8d,%r11d
16103 .byte 77,137,198 // mov %r8,%r14
16104 .byte 73,193,238,32 // shr $0x20,%r14
16105 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
16106 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
16107 .byte 65,137,223 // mov %ebx,%r15d
16108 .byte 72,193,235,30 // shr $0x1e,%rbx
16109 .byte 196,195,249,22,196,1 // vpextrq $0x1,%xmm0,%r12
16110 .byte 69,137,229 // mov %r12d,%r13d
16111 .byte 73,193,236,30 // shr $0x1e,%r12
Mike Kleina3735cd2017-04-17 13:19:05 -040016112 .byte 72,139,104,8 // mov 0x8(%rax),%rbp
16113 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040016114 .byte 196,161,122,16,68,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm0
16115 .byte 196,163,121,33,68,181,0,16 // vinsertps $0x10,0x0(%rbp,%r14,4),%xmm0,%xmm0
16116 .byte 196,161,122,16,84,141,0 // vmovss 0x0(%rbp,%r9,4),%xmm2
16117 .byte 196,227,121,33,194,32 // vinsertps $0x20,%xmm2,%xmm0,%xmm0
16118 .byte 196,161,122,16,84,149,0 // vmovss 0x0(%rbp,%r10,4),%xmm2
16119 .byte 196,227,121,33,194,48 // vinsertps $0x30,%xmm2,%xmm0,%xmm0
16120 .byte 196,161,122,16,84,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm2
16121 .byte 196,227,105,33,84,29,0,16 // vinsertps $0x10,0x0(%rbp,%rbx,1),%xmm2,%xmm2
16122 .byte 196,161,122,16,92,173,0 // vmovss 0x0(%rbp,%r13,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016123 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040016124 .byte 196,161,122,16,92,37,0 // vmovss 0x0(%rbp,%r12,1),%xmm3
16125 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
16126 .byte 196,227,109,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm2,%ymm0
16127 .byte 196,193,113,219,203 // vpand %xmm11,%xmm1,%xmm1
16128 .byte 196,193,113,105,209 // vpunpckhwd %xmm9,%xmm1,%xmm2
16129 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
16130 .byte 65,137,233 // mov %ebp,%r9d
16131 .byte 72,193,237,32 // shr $0x20,%rbp
16132 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
16133 .byte 65,137,218 // mov %ebx,%r10d
16134 .byte 72,193,235,32 // shr $0x20,%rbx
16135 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
16136 .byte 196,193,249,126,203 // vmovq %xmm1,%r11
16137 .byte 69,137,222 // mov %r11d,%r14d
16138 .byte 73,193,235,30 // shr $0x1e,%r11
16139 .byte 196,195,249,22,207,1 // vpextrq $0x1,%xmm1,%r15
16140 .byte 69,137,252 // mov %r15d,%r12d
16141 .byte 73,193,239,30 // shr $0x1e,%r15
16142 .byte 196,129,122,16,12,144 // vmovss (%r8,%r10,4),%xmm1
16143 .byte 196,195,113,33,12,152,16 // vinsertps $0x10,(%r8,%rbx,4),%xmm1,%xmm1
16144 .byte 196,129,122,16,20,136 // vmovss (%r8,%r9,4),%xmm2
16145 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
16146 .byte 196,193,122,16,20,168 // vmovss (%r8,%rbp,4),%xmm2
16147 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
16148 .byte 196,129,122,16,20,176 // vmovss (%r8,%r14,4),%xmm2
16149 .byte 196,131,105,33,20,24,16 // vinsertps $0x10,(%r8,%r11,1),%xmm2,%xmm2
16150 .byte 196,129,122,16,28,160 // vmovss (%r8,%r12,4),%xmm3
16151 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
16152 .byte 196,129,122,16,28,56 // vmovss (%r8,%r15,1),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016153 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
16154 .byte 196,227,109,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm1
Mike Klein0aa742f2017-04-27 13:36:57 -040016155 .byte 76,139,80,24 // mov 0x18(%rax),%r10
16156 .byte 196,193,41,219,211 // vpand %xmm11,%xmm10,%xmm2
16157 .byte 196,193,105,105,217 // vpunpckhwd %xmm9,%xmm2,%xmm3
16158 .byte 196,227,249,22,221,1 // vpextrq $0x1,%xmm3,%rbp
16159 .byte 65,137,232 // mov %ebp,%r8d
Mike Kleina3735cd2017-04-17 13:19:05 -040016160 .byte 72,193,237,32 // shr $0x20,%rbp
Mike Klein0aa742f2017-04-27 13:36:57 -040016161 .byte 196,225,249,126,219 // vmovq %xmm3,%rbx
16162 .byte 65,137,217 // mov %ebx,%r9d
16163 .byte 72,193,235,32 // shr $0x20,%rbx
16164 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
16165 .byte 196,225,249,126,208 // vmovq %xmm2,%rax
16166 .byte 65,137,195 // mov %eax,%r11d
16167 .byte 72,193,232,30 // shr $0x1e,%rax
16168 .byte 196,195,249,22,214,1 // vpextrq $0x1,%xmm2,%r14
16169 .byte 69,137,247 // mov %r14d,%r15d
16170 .byte 73,193,238,30 // shr $0x1e,%r14
16171 .byte 196,129,122,16,20,138 // vmovss (%r10,%r9,4),%xmm2
16172 .byte 196,195,105,33,20,154,16 // vinsertps $0x10,(%r10,%rbx,4),%xmm2,%xmm2
16173 .byte 196,129,122,16,28,130 // vmovss (%r10,%r8,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016174 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040016175 .byte 196,193,122,16,28,170 // vmovss (%r10,%rbp,4),%xmm3
16176 .byte 196,99,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm10
16177 .byte 196,129,122,16,28,154 // vmovss (%r10,%r11,4),%xmm3
16178 .byte 196,195,97,33,28,2,16 // vinsertps $0x10,(%r10,%rax,1),%xmm3,%xmm3
16179 .byte 196,129,122,16,20,186 // vmovss (%r10,%r15,4),%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040016180 .byte 196,227,97,33,210,32 // vinsertps $0x20,%xmm2,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040016181 .byte 196,129,122,16,28,50 // vmovss (%r10,%r14,1),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016182 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040016183 .byte 196,195,109,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm2,%ymm2
Mike Klein0aa742f2017-04-27 13:36:57 -040016184 .byte 196,193,57,109,220 // vpunpckhqdq %xmm12,%xmm8,%xmm3
16185 .byte 197,185,113,243,8 // vpsllw $0x8,%xmm3,%xmm8
Mike Kleina3735cd2017-04-17 13:19:05 -040016186 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
Mike Klein0aa742f2017-04-27 13:36:57 -040016187 .byte 197,185,235,219 // vpor %xmm3,%xmm8,%xmm3
16188 .byte 196,65,97,105,193 // vpunpckhwd %xmm9,%xmm3,%xmm8
Mike Kleina3735cd2017-04-17 13:19:05 -040016189 .byte 196,226,121,51,219 // vpmovzxwd %xmm3,%xmm3
16190 .byte 196,195,101,24,216,1 // vinsertf128 $0x1,%xmm8,%ymm3,%ymm3
16191 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040016192 .byte 196,98,125,24,5,200,67,0,0 // vbroadcastss 0x43c8(%rip),%ymm8 # 65b8 <_sk_callback_avx+0x25d>
Mike Kleinfe560a82017-05-01 12:56:35 -040016193 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016194 .byte 72,173 // lods %ds:(%rsi),%rax
16195 .byte 91 // pop %rbx
16196 .byte 65,92 // pop %r12
16197 .byte 65,93 // pop %r13
16198 .byte 65,94 // pop %r14
16199 .byte 65,95 // pop %r15
16200 .byte 93 // pop %rbp
16201 .byte 255,224 // jmpq *%rax
16202 .byte 196,1,123,16,4,72 // vmovsd (%r8,%r9,2),%xmm8
16203 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
16204 .byte 72,131,249,1 // cmp $0x1,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016205 .byte 116,85 // je 2269 <_sk_load_tables_u16_be_avx+0x2ed>
Mike Kleina3735cd2017-04-17 13:19:05 -040016206 .byte 196,1,57,22,68,72,8 // vmovhpd 0x8(%r8,%r9,2),%xmm8,%xmm8
16207 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016208 .byte 114,72 // jb 2269 <_sk_load_tables_u16_be_avx+0x2ed>
Mike Kleina3735cd2017-04-17 13:19:05 -040016209 .byte 196,129,123,16,84,72,16 // vmovsd 0x10(%r8,%r9,2),%xmm2
16210 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016211 .byte 116,72 // je 2276 <_sk_load_tables_u16_be_avx+0x2fa>
Mike Kleina3735cd2017-04-17 13:19:05 -040016212 .byte 196,129,105,22,84,72,24 // vmovhpd 0x18(%r8,%r9,2),%xmm2,%xmm2
16213 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016214 .byte 114,59 // jb 2276 <_sk_load_tables_u16_be_avx+0x2fa>
Mike Kleina3735cd2017-04-17 13:19:05 -040016215 .byte 196,129,123,16,92,72,32 // vmovsd 0x20(%r8,%r9,2),%xmm3
16216 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016217 .byte 15,132,97,253,255,255 // je 1fad <_sk_load_tables_u16_be_avx+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040016218 .byte 196,129,97,22,92,72,40 // vmovhpd 0x28(%r8,%r9,2),%xmm3,%xmm3
16219 .byte 72,131,249,7 // cmp $0x7,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016220 .byte 15,130,80,253,255,255 // jb 1fad <_sk_load_tables_u16_be_avx+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040016221 .byte 196,1,122,126,76,72,48 // vmovq 0x30(%r8,%r9,2),%xmm9
Brian Osman74fc5932017-05-22 19:25:36 +000016222 .byte 233,68,253,255,255 // jmpq 1fad <_sk_load_tables_u16_be_avx+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040016223 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
16224 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Brian Osman74fc5932017-05-22 19:25:36 +000016225 .byte 233,55,253,255,255 // jmpq 1fad <_sk_load_tables_u16_be_avx+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040016226 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Brian Osman74fc5932017-05-22 19:25:36 +000016227 .byte 233,46,253,255,255 // jmpq 1fad <_sk_load_tables_u16_be_avx+0x31>
Mike Kleina3735cd2017-04-17 13:19:05 -040016228
16229HIDDEN _sk_load_tables_rgb_u16_be_avx
16230.globl _sk_load_tables_rgb_u16_be_avx
16231FUNCTION(_sk_load_tables_rgb_u16_be_avx)
16232_sk_load_tables_rgb_u16_be_avx:
16233 .byte 72,173 // lods %ds:(%rsi),%rax
16234 .byte 76,139,0 // mov (%rax),%r8
16235 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
16236 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016237 .byte 15,133,93,2,0,0 // jne 24ee <_sk_load_tables_rgb_u16_be_avx+0x26f>
Mike Kleina3735cd2017-04-17 13:19:05 -040016238 .byte 196,129,122,111,4,72 // vmovdqu (%r8,%r9,2),%xmm0
16239 .byte 196,129,122,111,84,72,12 // vmovdqu 0xc(%r8,%r9,2),%xmm2
16240 .byte 196,129,122,111,76,72,24 // vmovdqu 0x18(%r8,%r9,2),%xmm1
16241 .byte 196,129,122,111,92,72,32 // vmovdqu 0x20(%r8,%r9,2),%xmm3
16242 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
16243 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
16244 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
16245 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
16246 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
16247 .byte 85 // push %rbp
16248 .byte 65,87 // push %r15
16249 .byte 65,86 // push %r14
16250 .byte 65,85 // push %r13
16251 .byte 65,84 // push %r12
16252 .byte 83 // push %rbx
16253 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
16254 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
16255 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
16256 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
Mike Klein0aa742f2017-04-27 13:36:57 -040016257 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
16258 .byte 197,249,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040016259 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040016260 .byte 197,241,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm3
16261 .byte 197,185,108,202 // vpunpcklqdq %xmm2,%xmm8,%xmm1
16262 .byte 197,185,109,210 // vpunpckhqdq %xmm2,%xmm8,%xmm2
16263 .byte 197,121,108,195 // vpunpcklqdq %xmm3,%xmm0,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040016264 .byte 197,121,111,13,43,70,0,0 // vmovdqa 0x462b(%rip),%xmm9 # 6930 <_sk_callback_avx+0x5d5>
Mike Klein0aa742f2017-04-27 13:36:57 -040016265 .byte 196,193,113,219,193 // vpand %xmm9,%xmm1,%xmm0
16266 .byte 196,65,41,239,210 // vpxor %xmm10,%xmm10,%xmm10
16267 .byte 196,193,121,105,202 // vpunpckhwd %xmm10,%xmm0,%xmm1
16268 .byte 196,195,249,22,200,1 // vpextrq $0x1,%xmm1,%r8
16269 .byte 69,137,193 // mov %r8d,%r9d
16270 .byte 77,137,194 // mov %r8,%r10
Mike Kleina3735cd2017-04-17 13:19:05 -040016271 .byte 73,193,234,32 // shr $0x20,%r10
Mike Klein0aa742f2017-04-27 13:36:57 -040016272 .byte 196,193,249,126,200 // vmovq %xmm1,%r8
16273 .byte 69,137,195 // mov %r8d,%r11d
16274 .byte 77,137,198 // mov %r8,%r14
16275 .byte 73,193,238,32 // shr $0x20,%r14
16276 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
16277 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
16278 .byte 65,137,223 // mov %ebx,%r15d
16279 .byte 72,193,235,30 // shr $0x1e,%rbx
16280 .byte 196,195,249,22,196,1 // vpextrq $0x1,%xmm0,%r12
16281 .byte 69,137,229 // mov %r12d,%r13d
16282 .byte 73,193,236,30 // shr $0x1e,%r12
Mike Kleina3735cd2017-04-17 13:19:05 -040016283 .byte 72,139,104,8 // mov 0x8(%rax),%rbp
16284 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040016285 .byte 196,161,122,16,68,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm0
16286 .byte 196,163,121,33,68,181,0,16 // vinsertps $0x10,0x0(%rbp,%r14,4),%xmm0,%xmm0
16287 .byte 196,161,122,16,76,141,0 // vmovss 0x0(%rbp,%r9,4),%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040016288 .byte 196,227,121,33,193,32 // vinsertps $0x20,%xmm1,%xmm0,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040016289 .byte 196,161,122,16,76,149,0 // vmovss 0x0(%rbp,%r10,4),%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040016290 .byte 196,227,121,33,193,48 // vinsertps $0x30,%xmm1,%xmm0,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040016291 .byte 196,161,122,16,76,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm1
16292 .byte 196,227,113,33,76,29,0,16 // vinsertps $0x10,0x0(%rbp,%rbx,1),%xmm1,%xmm1
16293 .byte 196,161,122,16,92,173,0 // vmovss 0x0(%rbp,%r13,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016294 .byte 196,227,113,33,203,32 // vinsertps $0x20,%xmm3,%xmm1,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040016295 .byte 196,161,122,16,92,37,0 // vmovss 0x0(%rbp,%r12,1),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016296 .byte 196,227,113,33,203,48 // vinsertps $0x30,%xmm3,%xmm1,%xmm1
16297 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
Mike Klein0aa742f2017-04-27 13:36:57 -040016298 .byte 196,193,105,219,201 // vpand %xmm9,%xmm2,%xmm1
16299 .byte 196,193,113,105,210 // vpunpckhwd %xmm10,%xmm1,%xmm2
16300 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
16301 .byte 65,137,233 // mov %ebp,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040016302 .byte 72,193,237,32 // shr $0x20,%rbp
Mike Klein0aa742f2017-04-27 13:36:57 -040016303 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
16304 .byte 65,137,218 // mov %ebx,%r10d
16305 .byte 72,193,235,32 // shr $0x20,%rbx
16306 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
16307 .byte 196,193,249,126,203 // vmovq %xmm1,%r11
16308 .byte 69,137,222 // mov %r11d,%r14d
16309 .byte 73,193,235,30 // shr $0x1e,%r11
16310 .byte 196,195,249,22,207,1 // vpextrq $0x1,%xmm1,%r15
16311 .byte 69,137,252 // mov %r15d,%r12d
16312 .byte 73,193,239,30 // shr $0x1e,%r15
16313 .byte 196,129,122,16,12,144 // vmovss (%r8,%r10,4),%xmm1
16314 .byte 196,195,113,33,12,152,16 // vinsertps $0x10,(%r8,%rbx,4),%xmm1,%xmm1
16315 .byte 196,129,122,16,20,136 // vmovss (%r8,%r9,4),%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040016316 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040016317 .byte 196,193,122,16,20,168 // vmovss (%r8,%rbp,4),%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040016318 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040016319 .byte 196,129,122,16,20,176 // vmovss (%r8,%r14,4),%xmm2
16320 .byte 196,131,105,33,20,24,16 // vinsertps $0x10,(%r8,%r11,1),%xmm2,%xmm2
16321 .byte 196,129,122,16,28,160 // vmovss (%r8,%r12,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016322 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040016323 .byte 196,129,122,16,28,56 // vmovss (%r8,%r15,1),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016324 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
16325 .byte 196,227,109,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm1
Mike Klein0aa742f2017-04-27 13:36:57 -040016326 .byte 76,139,80,24 // mov 0x18(%rax),%r10
16327 .byte 196,193,57,219,209 // vpand %xmm9,%xmm8,%xmm2
16328 .byte 196,193,105,105,218 // vpunpckhwd %xmm10,%xmm2,%xmm3
16329 .byte 196,227,249,22,221,1 // vpextrq $0x1,%xmm3,%rbp
16330 .byte 65,137,232 // mov %ebp,%r8d
Mike Kleina3735cd2017-04-17 13:19:05 -040016331 .byte 72,193,237,32 // shr $0x20,%rbp
Mike Klein0aa742f2017-04-27 13:36:57 -040016332 .byte 196,225,249,126,219 // vmovq %xmm3,%rbx
16333 .byte 65,137,217 // mov %ebx,%r9d
16334 .byte 72,193,235,32 // shr $0x20,%rbx
16335 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
16336 .byte 196,225,249,126,208 // vmovq %xmm2,%rax
16337 .byte 65,137,195 // mov %eax,%r11d
16338 .byte 72,193,232,30 // shr $0x1e,%rax
16339 .byte 196,195,249,22,214,1 // vpextrq $0x1,%xmm2,%r14
16340 .byte 69,137,247 // mov %r14d,%r15d
16341 .byte 73,193,238,30 // shr $0x1e,%r14
16342 .byte 196,129,122,16,20,138 // vmovss (%r10,%r9,4),%xmm2
16343 .byte 196,195,105,33,20,154,16 // vinsertps $0x10,(%r10,%rbx,4),%xmm2,%xmm2
16344 .byte 196,129,122,16,28,130 // vmovss (%r10,%r8,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016345 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040016346 .byte 196,193,122,16,28,170 // vmovss (%r10,%rbp,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016347 .byte 196,99,105,33,195,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm8
Mike Klein0aa742f2017-04-27 13:36:57 -040016348 .byte 196,129,122,16,28,154 // vmovss (%r10,%r11,4),%xmm3
16349 .byte 196,195,97,33,28,2,16 // vinsertps $0x10,(%r10,%rax,1),%xmm3,%xmm3
16350 .byte 196,129,122,16,20,186 // vmovss (%r10,%r15,4),%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040016351 .byte 196,227,97,33,210,32 // vinsertps $0x20,%xmm2,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040016352 .byte 196,129,122,16,28,50 // vmovss (%r10,%r14,1),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040016353 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
16354 .byte 196,195,109,24,208,1 // vinsertf128 $0x1,%xmm8,%ymm2,%ymm2
Mike Kleina3735cd2017-04-17 13:19:05 -040016355 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040016356 .byte 196,226,125,24,29,218,64,0,0 // vbroadcastss 0x40da(%rip),%ymm3 # 65bc <_sk_callback_avx+0x261>
Mike Kleina3735cd2017-04-17 13:19:05 -040016357 .byte 91 // pop %rbx
16358 .byte 65,92 // pop %r12
16359 .byte 65,93 // pop %r13
16360 .byte 65,94 // pop %r14
16361 .byte 65,95 // pop %r15
16362 .byte 93 // pop %rbp
16363 .byte 255,224 // jmpq *%rax
16364 .byte 196,129,121,110,4,72 // vmovd (%r8,%r9,2),%xmm0
16365 .byte 196,129,121,196,68,72,4,2 // vpinsrw $0x2,0x4(%r8,%r9,2),%xmm0,%xmm0
16366 .byte 72,131,249,1 // cmp $0x1,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016367 .byte 117,5 // jne 2507 <_sk_load_tables_rgb_u16_be_avx+0x288>
16368 .byte 233,190,253,255,255 // jmpq 22c5 <_sk_load_tables_rgb_u16_be_avx+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040016369 .byte 196,129,121,110,76,72,6 // vmovd 0x6(%r8,%r9,2),%xmm1
16370 .byte 196,1,113,196,68,72,10,2 // vpinsrw $0x2,0xa(%r8,%r9,2),%xmm1,%xmm8
16371 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016372 .byte 114,26 // jb 2536 <_sk_load_tables_rgb_u16_be_avx+0x2b7>
Mike Kleina3735cd2017-04-17 13:19:05 -040016373 .byte 196,129,121,110,76,72,12 // vmovd 0xc(%r8,%r9,2),%xmm1
16374 .byte 196,129,113,196,84,72,16,2 // vpinsrw $0x2,0x10(%r8,%r9,2),%xmm1,%xmm2
16375 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016376 .byte 117,10 // jne 253b <_sk_load_tables_rgb_u16_be_avx+0x2bc>
16377 .byte 233,143,253,255,255 // jmpq 22c5 <_sk_load_tables_rgb_u16_be_avx+0x46>
16378 .byte 233,138,253,255,255 // jmpq 22c5 <_sk_load_tables_rgb_u16_be_avx+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040016379 .byte 196,129,121,110,76,72,18 // vmovd 0x12(%r8,%r9,2),%xmm1
16380 .byte 196,1,113,196,76,72,22,2 // vpinsrw $0x2,0x16(%r8,%r9,2),%xmm1,%xmm9
16381 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016382 .byte 114,26 // jb 256a <_sk_load_tables_rgb_u16_be_avx+0x2eb>
Mike Kleina3735cd2017-04-17 13:19:05 -040016383 .byte 196,129,121,110,76,72,24 // vmovd 0x18(%r8,%r9,2),%xmm1
16384 .byte 196,129,113,196,76,72,28,2 // vpinsrw $0x2,0x1c(%r8,%r9,2),%xmm1,%xmm1
16385 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016386 .byte 117,10 // jne 256f <_sk_load_tables_rgb_u16_be_avx+0x2f0>
16387 .byte 233,91,253,255,255 // jmpq 22c5 <_sk_load_tables_rgb_u16_be_avx+0x46>
16388 .byte 233,86,253,255,255 // jmpq 22c5 <_sk_load_tables_rgb_u16_be_avx+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040016389 .byte 196,129,121,110,92,72,30 // vmovd 0x1e(%r8,%r9,2),%xmm3
16390 .byte 196,1,97,196,92,72,34,2 // vpinsrw $0x2,0x22(%r8,%r9,2),%xmm3,%xmm11
16391 .byte 72,131,249,7 // cmp $0x7,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000016392 .byte 114,20 // jb 2598 <_sk_load_tables_rgb_u16_be_avx+0x319>
Mike Kleina3735cd2017-04-17 13:19:05 -040016393 .byte 196,129,121,110,92,72,36 // vmovd 0x24(%r8,%r9,2),%xmm3
16394 .byte 196,129,97,196,92,72,40,2 // vpinsrw $0x2,0x28(%r8,%r9,2),%xmm3,%xmm3
Brian Osman74fc5932017-05-22 19:25:36 +000016395 .byte 233,45,253,255,255 // jmpq 22c5 <_sk_load_tables_rgb_u16_be_avx+0x46>
16396 .byte 233,40,253,255,255 // jmpq 22c5 <_sk_load_tables_rgb_u16_be_avx+0x46>
Mike Kleina3735cd2017-04-17 13:19:05 -040016397
Mike Klein40de6da2017-04-07 13:09:29 -040016398HIDDEN _sk_byte_tables_avx
16399.globl _sk_byte_tables_avx
Mike Klein86714282017-04-13 17:37:38 -040016400FUNCTION(_sk_byte_tables_avx)
Mike Klein40de6da2017-04-07 13:09:29 -040016401_sk_byte_tables_avx:
16402 .byte 85 // push %rbp
16403 .byte 65,87 // push %r15
16404 .byte 65,86 // push %r14
16405 .byte 65,85 // push %r13
16406 .byte 65,84 // push %r12
16407 .byte 83 // push %rbx
16408 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040016409 .byte 196,98,125,24,5,14,64,0,0 // vbroadcastss 0x400e(%rip),%ymm8 # 65c0 <_sk_callback_avx+0x265>
Mike Kleinfe560a82017-05-01 12:56:35 -040016410 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Klein40de6da2017-04-07 13:09:29 -040016411 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
16412 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
16413 .byte 68,137,197 // mov %r8d,%ebp
16414 .byte 77,137,194 // mov %r8,%r10
16415 .byte 73,193,234,32 // shr $0x20,%r10
16416 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
16417 .byte 69,137,195 // mov %r8d,%r11d
16418 .byte 77,137,199 // mov %r8,%r15
16419 .byte 73,193,239,32 // shr $0x20,%r15
16420 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
16421 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
16422 .byte 69,137,198 // mov %r8d,%r14d
16423 .byte 77,137,196 // mov %r8,%r12
16424 .byte 73,193,236,32 // shr $0x20,%r12
16425 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
16426 .byte 65,137,221 // mov %ebx,%r13d
16427 .byte 72,193,235,32 // shr $0x20,%rbx
16428 .byte 76,139,8 // mov (%rax),%r9
16429 .byte 76,139,64,8 // mov 0x8(%rax),%r8
16430 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
16431 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
16432 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
16433 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
16434 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
16435 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
16436 .byte 196,98,121,49,200 // vpmovzxbd %xmm0,%xmm9
16437 .byte 196,131,121,32,4,41,0 // vpinsrb $0x0,(%r9,%r13,1),%xmm0,%xmm0
16438 .byte 196,195,121,32,4,25,1 // vpinsrb $0x1,(%r9,%rbx,1),%xmm0,%xmm0
16439 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
16440 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
16441 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
16442 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
16443 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
16444 .byte 196,227,53,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040016445 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040016446 .byte 196,98,125,24,13,92,63,0,0 // vbroadcastss 0x3f5c(%rip),%ymm9 # 65c4 <_sk_callback_avx+0x269>
Mike Kleinfe560a82017-05-01 12:56:35 -040016447 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
16448 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -040016449 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
16450 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
16451 .byte 65,137,233 // mov %ebp,%r9d
16452 .byte 72,193,237,32 // shr $0x20,%rbp
16453 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
16454 .byte 65,137,218 // mov %ebx,%r10d
16455 .byte 72,193,235,32 // shr $0x20,%rbx
16456 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
16457 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
16458 .byte 69,137,222 // mov %r11d,%r14d
16459 .byte 73,193,235,32 // shr $0x20,%r11
16460 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
16461 .byte 69,137,252 // mov %r15d,%r12d
16462 .byte 73,193,239,32 // shr $0x20,%r15
16463 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
16464 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
16465 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
16466 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
16467 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
16468 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
16469 .byte 196,98,121,49,209 // vpmovzxbd %xmm1,%xmm10
16470 .byte 196,131,121,32,12,32,0 // vpinsrb $0x0,(%r8,%r12,1),%xmm0,%xmm1
16471 .byte 196,131,113,32,12,56,1 // vpinsrb $0x1,(%r8,%r15,1),%xmm1,%xmm1
16472 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
16473 .byte 196,227,113,32,205,2 // vpinsrb $0x2,%ebp,%xmm1,%xmm1
16474 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
16475 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
16476 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
16477 .byte 196,227,45,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm10,%ymm1
16478 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040016479 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -040016480 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Kleinfe560a82017-05-01 12:56:35 -040016481 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -040016482 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
16483 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
16484 .byte 65,137,233 // mov %ebp,%r9d
16485 .byte 72,193,237,32 // shr $0x20,%rbp
16486 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
16487 .byte 65,137,218 // mov %ebx,%r10d
16488 .byte 72,193,235,32 // shr $0x20,%rbx
16489 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
16490 .byte 196,195,249,22,211,1 // vpextrq $0x1,%xmm2,%r11
16491 .byte 69,137,222 // mov %r11d,%r14d
16492 .byte 73,193,235,32 // shr $0x20,%r11
16493 .byte 196,193,249,126,215 // vmovq %xmm2,%r15
16494 .byte 69,137,252 // mov %r15d,%r12d
16495 .byte 73,193,239,32 // shr $0x20,%r15
16496 .byte 196,131,121,32,20,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm2
16497 .byte 196,195,105,32,20,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm2,%xmm2
16498 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
16499 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
16500 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
16501 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
16502 .byte 196,98,121,49,210 // vpmovzxbd %xmm2,%xmm10
16503 .byte 196,131,121,32,20,32,0 // vpinsrb $0x0,(%r8,%r12,1),%xmm0,%xmm2
16504 .byte 196,131,105,32,20,56,1 // vpinsrb $0x1,(%r8,%r15,1),%xmm2,%xmm2
16505 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
16506 .byte 196,227,105,32,213,2 // vpinsrb $0x2,%ebp,%xmm2,%xmm2
16507 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
16508 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
16509 .byte 196,226,121,49,210 // vpmovzxbd %xmm2,%xmm2
16510 .byte 196,227,45,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm10,%ymm2
16511 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040016512 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -040016513 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040016514 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Klein40de6da2017-04-07 13:09:29 -040016515 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
16516 .byte 196,227,249,22,221,1 // vpextrq $0x1,%xmm3,%rbp
16517 .byte 65,137,232 // mov %ebp,%r8d
16518 .byte 72,193,237,32 // shr $0x20,%rbp
16519 .byte 196,225,249,126,219 // vmovq %xmm3,%rbx
16520 .byte 65,137,217 // mov %ebx,%r9d
16521 .byte 72,193,235,32 // shr $0x20,%rbx
16522 .byte 196,227,125,25,219,1 // vextractf128 $0x1,%ymm3,%xmm3
16523 .byte 196,195,249,22,218,1 // vpextrq $0x1,%xmm3,%r10
16524 .byte 69,137,211 // mov %r10d,%r11d
16525 .byte 73,193,234,32 // shr $0x20,%r10
16526 .byte 196,193,249,126,222 // vmovq %xmm3,%r14
16527 .byte 69,137,247 // mov %r14d,%r15d
16528 .byte 73,193,238,32 // shr $0x20,%r14
16529 .byte 196,163,121,32,28,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm3
16530 .byte 196,227,97,32,28,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm3,%xmm3
16531 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
16532 .byte 196,227,97,32,219,2 // vpinsrb $0x2,%ebx,%xmm3,%xmm3
16533 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
16534 .byte 196,227,97,32,221,3 // vpinsrb $0x3,%ebp,%xmm3,%xmm3
16535 .byte 196,98,121,49,195 // vpmovzxbd %xmm3,%xmm8
16536 .byte 196,163,121,32,28,56,0 // vpinsrb $0x0,(%rax,%r15,1),%xmm0,%xmm3
16537 .byte 196,163,97,32,28,48,1 // vpinsrb $0x1,(%rax,%r14,1),%xmm3,%xmm3
16538 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
16539 .byte 196,227,97,32,221,2 // vpinsrb $0x2,%ebp,%xmm3,%xmm3
16540 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
16541 .byte 196,227,97,32,216,3 // vpinsrb $0x3,%eax,%xmm3,%xmm3
16542 .byte 196,226,121,49,219 // vpmovzxbd %xmm3,%xmm3
16543 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
16544 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040016545 .byte 196,193,100,89,217 // vmulps %ymm9,%ymm3,%ymm3
Mike Klein40de6da2017-04-07 13:09:29 -040016546 .byte 72,173 // lods %ds:(%rsi),%rax
16547 .byte 91 // pop %rbx
16548 .byte 65,92 // pop %r12
16549 .byte 65,93 // pop %r13
16550 .byte 65,94 // pop %r14
16551 .byte 65,95 // pop %r15
16552 .byte 93 // pop %rbp
16553 .byte 255,224 // jmpq *%rax
16554
16555HIDDEN _sk_byte_tables_rgb_avx
16556.globl _sk_byte_tables_rgb_avx
Mike Klein86714282017-04-13 17:37:38 -040016557FUNCTION(_sk_byte_tables_rgb_avx)
Mike Klein40de6da2017-04-07 13:09:29 -040016558_sk_byte_tables_rgb_avx:
16559 .byte 85 // push %rbp
16560 .byte 65,87 // push %r15
16561 .byte 65,86 // push %r14
16562 .byte 65,85 // push %r13
16563 .byte 65,84 // push %r12
16564 .byte 83 // push %rbx
16565 .byte 72,173 // lods %ds:(%rsi),%rax
16566 .byte 68,139,64,24 // mov 0x18(%rax),%r8d
16567 .byte 65,255,200 // dec %r8d
16568 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
16569 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
16570 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
16571 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
16572 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
16573 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
16574 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
16575 .byte 68,137,197 // mov %r8d,%ebp
16576 .byte 77,137,194 // mov %r8,%r10
16577 .byte 73,193,234,32 // shr $0x20,%r10
16578 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
16579 .byte 69,137,195 // mov %r8d,%r11d
16580 .byte 77,137,199 // mov %r8,%r15
16581 .byte 73,193,239,32 // shr $0x20,%r15
16582 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
16583 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
16584 .byte 69,137,198 // mov %r8d,%r14d
16585 .byte 77,137,196 // mov %r8,%r12
16586 .byte 73,193,236,32 // shr $0x20,%r12
16587 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
16588 .byte 65,137,221 // mov %ebx,%r13d
16589 .byte 72,193,235,32 // shr $0x20,%rbx
16590 .byte 76,139,8 // mov (%rax),%r9
16591 .byte 76,139,64,8 // mov 0x8(%rax),%r8
16592 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
16593 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
16594 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
16595 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
16596 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
16597 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
16598 .byte 196,98,121,49,200 // vpmovzxbd %xmm0,%xmm9
16599 .byte 196,131,121,32,4,41,0 // vpinsrb $0x0,(%r9,%r13,1),%xmm0,%xmm0
16600 .byte 196,195,121,32,4,25,1 // vpinsrb $0x1,(%r9,%rbx,1),%xmm0,%xmm0
16601 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
16602 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
16603 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
16604 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
16605 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
16606 .byte 196,227,53,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040016607 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040016608 .byte 196,98,125,24,13,130,60,0,0 // vbroadcastss 0x3c82(%rip),%ymm9 # 65c8 <_sk_callback_avx+0x26d>
Mike Kleinfe560a82017-05-01 12:56:35 -040016609 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
Mike Klein40de6da2017-04-07 13:09:29 -040016610 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
16611 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
16612 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
16613 .byte 65,137,233 // mov %ebp,%r9d
16614 .byte 72,193,237,32 // shr $0x20,%rbp
16615 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
16616 .byte 65,137,218 // mov %ebx,%r10d
16617 .byte 72,193,235,32 // shr $0x20,%rbx
16618 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
16619 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
16620 .byte 69,137,222 // mov %r11d,%r14d
16621 .byte 73,193,235,32 // shr $0x20,%r11
16622 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
16623 .byte 69,137,252 // mov %r15d,%r12d
16624 .byte 73,193,239,32 // shr $0x20,%r15
16625 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
16626 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
16627 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
16628 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
16629 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
16630 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
16631 .byte 196,98,121,49,209 // vpmovzxbd %xmm1,%xmm10
16632 .byte 196,131,121,32,12,32,0 // vpinsrb $0x0,(%r8,%r12,1),%xmm0,%xmm1
16633 .byte 196,131,113,32,12,56,1 // vpinsrb $0x1,(%r8,%r15,1),%xmm1,%xmm1
16634 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
16635 .byte 196,227,113,32,205,2 // vpinsrb $0x2,%ebp,%xmm1,%xmm1
16636 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
16637 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
16638 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
16639 .byte 196,227,45,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm10,%ymm1
16640 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040016641 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein40de6da2017-04-07 13:09:29 -040016642 .byte 72,139,64,16 // mov 0x10(%rax),%rax
16643 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
16644 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
16645 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
16646 .byte 65,137,232 // mov %ebp,%r8d
16647 .byte 72,193,237,32 // shr $0x20,%rbp
16648 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
16649 .byte 65,137,217 // mov %ebx,%r9d
16650 .byte 72,193,235,32 // shr $0x20,%rbx
16651 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
16652 .byte 196,195,249,22,210,1 // vpextrq $0x1,%xmm2,%r10
16653 .byte 69,137,211 // mov %r10d,%r11d
16654 .byte 73,193,234,32 // shr $0x20,%r10
16655 .byte 196,193,249,126,214 // vmovq %xmm2,%r14
16656 .byte 69,137,247 // mov %r14d,%r15d
16657 .byte 73,193,238,32 // shr $0x20,%r14
16658 .byte 196,163,121,32,20,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm2
16659 .byte 196,227,105,32,20,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm2,%xmm2
16660 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
16661 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
16662 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
16663 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
16664 .byte 196,98,121,49,194 // vpmovzxbd %xmm2,%xmm8
16665 .byte 196,163,121,32,20,56,0 // vpinsrb $0x0,(%rax,%r15,1),%xmm0,%xmm2
16666 .byte 196,163,105,32,20,48,1 // vpinsrb $0x1,(%rax,%r14,1),%xmm2,%xmm2
16667 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
16668 .byte 196,227,105,32,213,2 // vpinsrb $0x2,%ebp,%xmm2,%xmm2
16669 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
16670 .byte 196,227,105,32,208,3 // vpinsrb $0x3,%eax,%xmm2,%xmm2
16671 .byte 196,226,121,49,210 // vpmovzxbd %xmm2,%xmm2
16672 .byte 196,227,61,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm8,%ymm2
16673 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040016674 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
Mike Klein40de6da2017-04-07 13:09:29 -040016675 .byte 72,173 // lods %ds:(%rsi),%rax
16676 .byte 91 // pop %rbx
16677 .byte 65,92 // pop %r12
16678 .byte 65,93 // pop %r13
16679 .byte 65,94 // pop %r14
16680 .byte 65,95 // pop %r15
16681 .byte 93 // pop %rbp
16682 .byte 255,224 // jmpq *%rax
16683
Mike Kleinc7d9c0b2017-04-17 14:43:59 -040016684HIDDEN _sk_table_r_avx
16685.globl _sk_table_r_avx
16686FUNCTION(_sk_table_r_avx)
16687_sk_table_r_avx:
16688 .byte 65,87 // push %r15
16689 .byte 65,86 // push %r14
16690 .byte 65,84 // push %r12
16691 .byte 83 // push %rbx
16692 .byte 72,173 // lods %ds:(%rsi),%rax
16693 .byte 76,139,0 // mov (%rax),%r8
16694 .byte 139,64,8 // mov 0x8(%rax),%eax
16695 .byte 255,200 // dec %eax
16696 .byte 197,121,110,192 // vmovd %eax,%xmm8
16697 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
16698 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
16699 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
16700 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
16701 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
16702 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
16703 .byte 65,137,193 // mov %eax,%r9d
16704 .byte 72,193,232,32 // shr $0x20,%rax
16705 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
16706 .byte 69,137,211 // mov %r10d,%r11d
16707 .byte 73,193,234,32 // shr $0x20,%r10
16708 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
16709 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
16710 .byte 65,137,222 // mov %ebx,%r14d
16711 .byte 72,193,235,32 // shr $0x20,%rbx
16712 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
16713 .byte 69,137,252 // mov %r15d,%r12d
16714 .byte 73,193,239,32 // shr $0x20,%r15
16715 .byte 196,129,122,16,4,160 // vmovss (%r8,%r12,4),%xmm0
16716 .byte 196,3,121,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm0,%xmm8
16717 .byte 196,129,122,16,4,176 // vmovss (%r8,%r14,4),%xmm0
16718 .byte 196,99,57,33,192,32 // vinsertps $0x20,%xmm0,%xmm8,%xmm8
16719 .byte 196,193,122,16,4,152 // vmovss (%r8,%rbx,4),%xmm0
16720 .byte 196,99,57,33,192,48 // vinsertps $0x30,%xmm0,%xmm8,%xmm8
16721 .byte 196,129,122,16,4,152 // vmovss (%r8,%r11,4),%xmm0
16722 .byte 196,3,121,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm0,%xmm9
16723 .byte 196,129,122,16,4,136 // vmovss (%r8,%r9,4),%xmm0
16724 .byte 196,99,49,33,200,32 // vinsertps $0x20,%xmm0,%xmm9,%xmm9
16725 .byte 196,193,122,16,4,128 // vmovss (%r8,%rax,4),%xmm0
16726 .byte 196,227,49,33,192,48 // vinsertps $0x30,%xmm0,%xmm9,%xmm0
16727 .byte 196,195,125,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm0,%ymm0
16728 .byte 72,173 // lods %ds:(%rsi),%rax
16729 .byte 91 // pop %rbx
16730 .byte 65,92 // pop %r12
16731 .byte 65,94 // pop %r14
16732 .byte 65,95 // pop %r15
16733 .byte 255,224 // jmpq *%rax
16734
16735HIDDEN _sk_table_g_avx
16736.globl _sk_table_g_avx
16737FUNCTION(_sk_table_g_avx)
16738_sk_table_g_avx:
16739 .byte 65,87 // push %r15
16740 .byte 65,86 // push %r14
16741 .byte 65,84 // push %r12
16742 .byte 83 // push %rbx
16743 .byte 72,173 // lods %ds:(%rsi),%rax
16744 .byte 76,139,0 // mov (%rax),%r8
16745 .byte 139,64,8 // mov 0x8(%rax),%eax
16746 .byte 255,200 // dec %eax
16747 .byte 197,121,110,192 // vmovd %eax,%xmm8
16748 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
16749 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
16750 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
16751 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
16752 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
16753 .byte 196,227,249,22,200,1 // vpextrq $0x1,%xmm1,%rax
16754 .byte 65,137,193 // mov %eax,%r9d
16755 .byte 72,193,232,32 // shr $0x20,%rax
16756 .byte 196,193,249,126,202 // vmovq %xmm1,%r10
16757 .byte 69,137,211 // mov %r10d,%r11d
16758 .byte 73,193,234,32 // shr $0x20,%r10
16759 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
16760 .byte 196,227,249,22,203,1 // vpextrq $0x1,%xmm1,%rbx
16761 .byte 65,137,222 // mov %ebx,%r14d
16762 .byte 72,193,235,32 // shr $0x20,%rbx
16763 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
16764 .byte 69,137,252 // mov %r15d,%r12d
16765 .byte 73,193,239,32 // shr $0x20,%r15
16766 .byte 196,129,122,16,12,160 // vmovss (%r8,%r12,4),%xmm1
16767 .byte 196,3,113,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm1,%xmm8
16768 .byte 196,129,122,16,12,176 // vmovss (%r8,%r14,4),%xmm1
16769 .byte 196,99,57,33,193,32 // vinsertps $0x20,%xmm1,%xmm8,%xmm8
16770 .byte 196,193,122,16,12,152 // vmovss (%r8,%rbx,4),%xmm1
16771 .byte 196,99,57,33,193,48 // vinsertps $0x30,%xmm1,%xmm8,%xmm8
16772 .byte 196,129,122,16,12,152 // vmovss (%r8,%r11,4),%xmm1
16773 .byte 196,3,113,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm1,%xmm9
16774 .byte 196,129,122,16,12,136 // vmovss (%r8,%r9,4),%xmm1
16775 .byte 196,99,49,33,201,32 // vinsertps $0x20,%xmm1,%xmm9,%xmm9
16776 .byte 196,193,122,16,12,128 // vmovss (%r8,%rax,4),%xmm1
16777 .byte 196,227,49,33,201,48 // vinsertps $0x30,%xmm1,%xmm9,%xmm1
16778 .byte 196,195,117,24,200,1 // vinsertf128 $0x1,%xmm8,%ymm1,%ymm1
16779 .byte 72,173 // lods %ds:(%rsi),%rax
16780 .byte 91 // pop %rbx
16781 .byte 65,92 // pop %r12
16782 .byte 65,94 // pop %r14
16783 .byte 65,95 // pop %r15
16784 .byte 255,224 // jmpq *%rax
16785
16786HIDDEN _sk_table_b_avx
16787.globl _sk_table_b_avx
16788FUNCTION(_sk_table_b_avx)
16789_sk_table_b_avx:
16790 .byte 65,87 // push %r15
16791 .byte 65,86 // push %r14
16792 .byte 65,84 // push %r12
16793 .byte 83 // push %rbx
16794 .byte 72,173 // lods %ds:(%rsi),%rax
16795 .byte 76,139,0 // mov (%rax),%r8
16796 .byte 139,64,8 // mov 0x8(%rax),%eax
16797 .byte 255,200 // dec %eax
16798 .byte 197,121,110,192 // vmovd %eax,%xmm8
16799 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
16800 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
16801 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
16802 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
16803 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
16804 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
16805 .byte 65,137,193 // mov %eax,%r9d
16806 .byte 72,193,232,32 // shr $0x20,%rax
16807 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
16808 .byte 69,137,211 // mov %r10d,%r11d
16809 .byte 73,193,234,32 // shr $0x20,%r10
16810 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
16811 .byte 196,227,249,22,211,1 // vpextrq $0x1,%xmm2,%rbx
16812 .byte 65,137,222 // mov %ebx,%r14d
16813 .byte 72,193,235,32 // shr $0x20,%rbx
16814 .byte 196,193,249,126,215 // vmovq %xmm2,%r15
16815 .byte 69,137,252 // mov %r15d,%r12d
16816 .byte 73,193,239,32 // shr $0x20,%r15
16817 .byte 196,129,122,16,20,160 // vmovss (%r8,%r12,4),%xmm2
16818 .byte 196,3,105,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm2,%xmm8
16819 .byte 196,129,122,16,20,176 // vmovss (%r8,%r14,4),%xmm2
16820 .byte 196,99,57,33,194,32 // vinsertps $0x20,%xmm2,%xmm8,%xmm8
16821 .byte 196,193,122,16,20,152 // vmovss (%r8,%rbx,4),%xmm2
16822 .byte 196,99,57,33,194,48 // vinsertps $0x30,%xmm2,%xmm8,%xmm8
16823 .byte 196,129,122,16,20,152 // vmovss (%r8,%r11,4),%xmm2
16824 .byte 196,3,105,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm2,%xmm9
16825 .byte 196,129,122,16,20,136 // vmovss (%r8,%r9,4),%xmm2
16826 .byte 196,99,49,33,202,32 // vinsertps $0x20,%xmm2,%xmm9,%xmm9
16827 .byte 196,193,122,16,20,128 // vmovss (%r8,%rax,4),%xmm2
16828 .byte 196,227,49,33,210,48 // vinsertps $0x30,%xmm2,%xmm9,%xmm2
16829 .byte 196,195,109,24,208,1 // vinsertf128 $0x1,%xmm8,%ymm2,%ymm2
16830 .byte 72,173 // lods %ds:(%rsi),%rax
16831 .byte 91 // pop %rbx
16832 .byte 65,92 // pop %r12
16833 .byte 65,94 // pop %r14
16834 .byte 65,95 // pop %r15
16835 .byte 255,224 // jmpq *%rax
16836
16837HIDDEN _sk_table_a_avx
16838.globl _sk_table_a_avx
16839FUNCTION(_sk_table_a_avx)
16840_sk_table_a_avx:
16841 .byte 65,87 // push %r15
16842 .byte 65,86 // push %r14
16843 .byte 65,84 // push %r12
16844 .byte 83 // push %rbx
16845 .byte 72,173 // lods %ds:(%rsi),%rax
16846 .byte 76,139,0 // mov (%rax),%r8
16847 .byte 139,64,8 // mov 0x8(%rax),%eax
16848 .byte 255,200 // dec %eax
16849 .byte 197,121,110,192 // vmovd %eax,%xmm8
16850 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
16851 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
16852 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
16853 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
16854 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
16855 .byte 196,227,249,22,216,1 // vpextrq $0x1,%xmm3,%rax
16856 .byte 65,137,193 // mov %eax,%r9d
16857 .byte 72,193,232,32 // shr $0x20,%rax
16858 .byte 196,193,249,126,218 // vmovq %xmm3,%r10
16859 .byte 69,137,211 // mov %r10d,%r11d
16860 .byte 73,193,234,32 // shr $0x20,%r10
16861 .byte 196,227,125,25,219,1 // vextractf128 $0x1,%ymm3,%xmm3
16862 .byte 196,227,249,22,219,1 // vpextrq $0x1,%xmm3,%rbx
16863 .byte 65,137,222 // mov %ebx,%r14d
16864 .byte 72,193,235,32 // shr $0x20,%rbx
16865 .byte 196,193,249,126,223 // vmovq %xmm3,%r15
16866 .byte 69,137,252 // mov %r15d,%r12d
16867 .byte 73,193,239,32 // shr $0x20,%r15
16868 .byte 196,129,122,16,28,160 // vmovss (%r8,%r12,4),%xmm3
16869 .byte 196,3,97,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm3,%xmm8
16870 .byte 196,129,122,16,28,176 // vmovss (%r8,%r14,4),%xmm3
16871 .byte 196,99,57,33,195,32 // vinsertps $0x20,%xmm3,%xmm8,%xmm8
16872 .byte 196,193,122,16,28,152 // vmovss (%r8,%rbx,4),%xmm3
16873 .byte 196,99,57,33,195,48 // vinsertps $0x30,%xmm3,%xmm8,%xmm8
16874 .byte 196,129,122,16,28,152 // vmovss (%r8,%r11,4),%xmm3
16875 .byte 196,3,97,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm3,%xmm9
16876 .byte 196,129,122,16,28,136 // vmovss (%r8,%r9,4),%xmm3
16877 .byte 196,99,49,33,203,32 // vinsertps $0x20,%xmm3,%xmm9,%xmm9
16878 .byte 196,193,122,16,28,128 // vmovss (%r8,%rax,4),%xmm3
16879 .byte 196,227,49,33,219,48 // vinsertps $0x30,%xmm3,%xmm9,%xmm3
16880 .byte 196,195,101,24,216,1 // vinsertf128 $0x1,%xmm8,%ymm3,%ymm3
16881 .byte 72,173 // lods %ds:(%rsi),%rax
16882 .byte 91 // pop %rbx
16883 .byte 65,92 // pop %r12
16884 .byte 65,94 // pop %r14
16885 .byte 65,95 // pop %r15
16886 .byte 255,224 // jmpq *%rax
16887
Mike Klein44375172017-04-17 19:32:05 -040016888HIDDEN _sk_parametric_r_avx
16889.globl _sk_parametric_r_avx
16890FUNCTION(_sk_parametric_r_avx)
16891_sk_parametric_r_avx:
16892 .byte 72,173 // lods %ds:(%rsi),%rax
16893 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
16894 .byte 196,65,124,194,192,2 // vcmpleps %ymm8,%ymm0,%ymm8
16895 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
16896 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
16897 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
16898 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
16899 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
16900 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
16901 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040016902 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
16903 .byte 196,98,125,24,16 // vbroadcastss (%rax),%ymm10
16904 .byte 197,124,91,216 // vcvtdq2ps %ymm0,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040016905 .byte 196,98,125,24,37,224,55,0,0 // vbroadcastss 0x37e0(%rip),%ymm12 # 65cc <_sk_callback_avx+0x271>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016906 .byte 196,65,36,89,220 // vmulps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040016907 .byte 196,98,125,24,37,214,55,0,0 // vbroadcastss 0x37d6(%rip),%ymm12 # 65d0 <_sk_callback_avx+0x275>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016908 .byte 196,193,124,84,196 // vandps %ymm12,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040016909 .byte 196,98,125,24,37,204,55,0,0 // vbroadcastss 0x37cc(%rip),%ymm12 # 65d4 <_sk_callback_avx+0x279>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016910 .byte 196,193,124,86,196 // vorps %ymm12,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040016911 .byte 196,98,125,24,37,194,55,0,0 // vbroadcastss 0x37c2(%rip),%ymm12 # 65d8 <_sk_callback_avx+0x27d>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016912 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040016913 .byte 196,98,125,24,37,184,55,0,0 // vbroadcastss 0x37b8(%rip),%ymm12 # 65dc <_sk_callback_avx+0x281>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016914 .byte 196,65,124,89,228 // vmulps %ymm12,%ymm0,%ymm12
16915 .byte 196,65,36,92,220 // vsubps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040016916 .byte 196,98,125,24,37,169,55,0,0 // vbroadcastss 0x37a9(%rip),%ymm12 # 65e0 <_sk_callback_avx+0x285>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016917 .byte 196,193,124,88,196 // vaddps %ymm12,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040016918 .byte 196,98,125,24,37,159,55,0,0 // vbroadcastss 0x379f(%rip),%ymm12 # 65e4 <_sk_callback_avx+0x289>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016919 .byte 197,156,94,192 // vdivps %ymm0,%ymm12,%ymm0
Mike Kleinda164342017-04-19 14:33:58 -040016920 .byte 197,164,92,192 // vsubps %ymm0,%ymm11,%ymm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040016921 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
16922 .byte 196,99,125,8,208,1 // vroundps $0x1,%ymm0,%ymm10
16923 .byte 196,65,124,92,210 // vsubps %ymm10,%ymm0,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040016924 .byte 196,98,125,24,29,131,55,0,0 // vbroadcastss 0x3783(%rip),%ymm11 # 65e8 <_sk_callback_avx+0x28d>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016925 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040016926 .byte 196,98,125,24,29,121,55,0,0 // vbroadcastss 0x3779(%rip),%ymm11 # 65ec <_sk_callback_avx+0x291>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016927 .byte 196,65,44,89,219 // vmulps %ymm11,%ymm10,%ymm11
16928 .byte 196,193,124,92,195 // vsubps %ymm11,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040016929 .byte 196,98,125,24,29,106,55,0,0 // vbroadcastss 0x376a(%rip),%ymm11 # 65f0 <_sk_callback_avx+0x295>
Mike Klein44375172017-04-17 19:32:05 -040016930 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040016931 .byte 196,98,125,24,29,96,55,0,0 // vbroadcastss 0x3760(%rip),%ymm11 # 65f4 <_sk_callback_avx+0x299>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016932 .byte 196,65,36,94,210 // vdivps %ymm10,%ymm11,%ymm10
16933 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040016934 .byte 196,98,125,24,21,81,55,0,0 // vbroadcastss 0x3751(%rip),%ymm10 # 65f8 <_sk_callback_avx+0x29d>
Mike Klein44375172017-04-17 19:32:05 -040016935 .byte 196,193,124,89,194 // vmulps %ymm10,%ymm0,%ymm0
Mike Klein44375172017-04-17 19:32:05 -040016936 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
16937 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
16938 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
16939 .byte 196,195,125,74,193,128 // vblendvps %ymm8,%ymm9,%ymm0,%ymm0
16940 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040016941 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040016942 .byte 196,98,125,24,5,40,55,0,0 // vbroadcastss 0x3728(%rip),%ymm8 # 65fc <_sk_callback_avx+0x2a1>
Mike Kleinfe560a82017-05-01 12:56:35 -040016943 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
Mike Klein44375172017-04-17 19:32:05 -040016944 .byte 72,173 // lods %ds:(%rsi),%rax
16945 .byte 255,224 // jmpq *%rax
16946
16947HIDDEN _sk_parametric_g_avx
16948.globl _sk_parametric_g_avx
16949FUNCTION(_sk_parametric_g_avx)
16950_sk_parametric_g_avx:
16951 .byte 72,173 // lods %ds:(%rsi),%rax
16952 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
16953 .byte 196,65,116,194,192,2 // vcmpleps %ymm8,%ymm1,%ymm8
16954 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
16955 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
16956 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
16957 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
16958 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
16959 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
16960 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040016961 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
16962 .byte 196,98,125,24,16 // vbroadcastss (%rax),%ymm10
16963 .byte 197,124,91,217 // vcvtdq2ps %ymm1,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040016964 .byte 196,98,125,24,37,217,54,0,0 // vbroadcastss 0x36d9(%rip),%ymm12 # 6600 <_sk_callback_avx+0x2a5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016965 .byte 196,65,36,89,220 // vmulps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040016966 .byte 196,98,125,24,37,207,54,0,0 // vbroadcastss 0x36cf(%rip),%ymm12 # 6604 <_sk_callback_avx+0x2a9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016967 .byte 196,193,116,84,204 // vandps %ymm12,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040016968 .byte 196,98,125,24,37,197,54,0,0 // vbroadcastss 0x36c5(%rip),%ymm12 # 6608 <_sk_callback_avx+0x2ad>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016969 .byte 196,193,116,86,204 // vorps %ymm12,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040016970 .byte 196,98,125,24,37,187,54,0,0 // vbroadcastss 0x36bb(%rip),%ymm12 # 660c <_sk_callback_avx+0x2b1>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016971 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040016972 .byte 196,98,125,24,37,177,54,0,0 // vbroadcastss 0x36b1(%rip),%ymm12 # 6610 <_sk_callback_avx+0x2b5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016973 .byte 196,65,116,89,228 // vmulps %ymm12,%ymm1,%ymm12
16974 .byte 196,65,36,92,220 // vsubps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040016975 .byte 196,98,125,24,37,162,54,0,0 // vbroadcastss 0x36a2(%rip),%ymm12 # 6614 <_sk_callback_avx+0x2b9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016976 .byte 196,193,116,88,204 // vaddps %ymm12,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040016977 .byte 196,98,125,24,37,152,54,0,0 // vbroadcastss 0x3698(%rip),%ymm12 # 6618 <_sk_callback_avx+0x2bd>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016978 .byte 197,156,94,201 // vdivps %ymm1,%ymm12,%ymm1
Mike Kleinda164342017-04-19 14:33:58 -040016979 .byte 197,164,92,201 // vsubps %ymm1,%ymm11,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040016980 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
16981 .byte 196,99,125,8,209,1 // vroundps $0x1,%ymm1,%ymm10
16982 .byte 196,65,116,92,210 // vsubps %ymm10,%ymm1,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040016983 .byte 196,98,125,24,29,124,54,0,0 // vbroadcastss 0x367c(%rip),%ymm11 # 661c <_sk_callback_avx+0x2c1>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016984 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040016985 .byte 196,98,125,24,29,114,54,0,0 // vbroadcastss 0x3672(%rip),%ymm11 # 6620 <_sk_callback_avx+0x2c5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016986 .byte 196,65,44,89,219 // vmulps %ymm11,%ymm10,%ymm11
16987 .byte 196,193,116,92,203 // vsubps %ymm11,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040016988 .byte 196,98,125,24,29,99,54,0,0 // vbroadcastss 0x3663(%rip),%ymm11 # 6624 <_sk_callback_avx+0x2c9>
Mike Klein44375172017-04-17 19:32:05 -040016989 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040016990 .byte 196,98,125,24,29,89,54,0,0 // vbroadcastss 0x3659(%rip),%ymm11 # 6628 <_sk_callback_avx+0x2cd>
Mike Kleinb4bbc642017-04-27 08:59:55 -040016991 .byte 196,65,36,94,210 // vdivps %ymm10,%ymm11,%ymm10
16992 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040016993 .byte 196,98,125,24,21,74,54,0,0 // vbroadcastss 0x364a(%rip),%ymm10 # 662c <_sk_callback_avx+0x2d1>
Mike Klein44375172017-04-17 19:32:05 -040016994 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
Mike Klein44375172017-04-17 19:32:05 -040016995 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
16996 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
16997 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
16998 .byte 196,195,117,74,201,128 // vblendvps %ymm8,%ymm9,%ymm1,%ymm1
16999 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040017000 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017001 .byte 196,98,125,24,5,33,54,0,0 // vbroadcastss 0x3621(%rip),%ymm8 # 6630 <_sk_callback_avx+0x2d5>
Mike Kleinfe560a82017-05-01 12:56:35 -040017002 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
Mike Klein44375172017-04-17 19:32:05 -040017003 .byte 72,173 // lods %ds:(%rsi),%rax
17004 .byte 255,224 // jmpq *%rax
17005
17006HIDDEN _sk_parametric_b_avx
17007.globl _sk_parametric_b_avx
17008FUNCTION(_sk_parametric_b_avx)
17009_sk_parametric_b_avx:
17010 .byte 72,173 // lods %ds:(%rsi),%rax
17011 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
17012 .byte 196,65,108,194,192,2 // vcmpleps %ymm8,%ymm2,%ymm8
17013 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
17014 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
17015 .byte 197,52,89,202 // vmulps %ymm2,%ymm9,%ymm9
17016 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
17017 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
17018 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
17019 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040017020 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
17021 .byte 196,98,125,24,16 // vbroadcastss (%rax),%ymm10
17022 .byte 197,124,91,218 // vcvtdq2ps %ymm2,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040017023 .byte 196,98,125,24,37,210,53,0,0 // vbroadcastss 0x35d2(%rip),%ymm12 # 6634 <_sk_callback_avx+0x2d9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017024 .byte 196,65,36,89,220 // vmulps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040017025 .byte 196,98,125,24,37,200,53,0,0 // vbroadcastss 0x35c8(%rip),%ymm12 # 6638 <_sk_callback_avx+0x2dd>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017026 .byte 196,193,108,84,212 // vandps %ymm12,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017027 .byte 196,98,125,24,37,190,53,0,0 // vbroadcastss 0x35be(%rip),%ymm12 # 663c <_sk_callback_avx+0x2e1>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017028 .byte 196,193,108,86,212 // vorps %ymm12,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017029 .byte 196,98,125,24,37,180,53,0,0 // vbroadcastss 0x35b4(%rip),%ymm12 # 6640 <_sk_callback_avx+0x2e5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017030 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040017031 .byte 196,98,125,24,37,170,53,0,0 // vbroadcastss 0x35aa(%rip),%ymm12 # 6644 <_sk_callback_avx+0x2e9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017032 .byte 196,65,108,89,228 // vmulps %ymm12,%ymm2,%ymm12
17033 .byte 196,65,36,92,220 // vsubps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040017034 .byte 196,98,125,24,37,155,53,0,0 // vbroadcastss 0x359b(%rip),%ymm12 # 6648 <_sk_callback_avx+0x2ed>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017035 .byte 196,193,108,88,212 // vaddps %ymm12,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017036 .byte 196,98,125,24,37,145,53,0,0 // vbroadcastss 0x3591(%rip),%ymm12 # 664c <_sk_callback_avx+0x2f1>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017037 .byte 197,156,94,210 // vdivps %ymm2,%ymm12,%ymm2
Mike Kleinda164342017-04-19 14:33:58 -040017038 .byte 197,164,92,210 // vsubps %ymm2,%ymm11,%ymm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040017039 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
17040 .byte 196,99,125,8,210,1 // vroundps $0x1,%ymm2,%ymm10
17041 .byte 196,65,108,92,210 // vsubps %ymm10,%ymm2,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040017042 .byte 196,98,125,24,29,117,53,0,0 // vbroadcastss 0x3575(%rip),%ymm11 # 6650 <_sk_callback_avx+0x2f5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017043 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017044 .byte 196,98,125,24,29,107,53,0,0 // vbroadcastss 0x356b(%rip),%ymm11 # 6654 <_sk_callback_avx+0x2f9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017045 .byte 196,65,44,89,219 // vmulps %ymm11,%ymm10,%ymm11
17046 .byte 196,193,108,92,211 // vsubps %ymm11,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017047 .byte 196,98,125,24,29,92,53,0,0 // vbroadcastss 0x355c(%rip),%ymm11 # 6658 <_sk_callback_avx+0x2fd>
Mike Klein44375172017-04-17 19:32:05 -040017048 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040017049 .byte 196,98,125,24,29,82,53,0,0 // vbroadcastss 0x3552(%rip),%ymm11 # 665c <_sk_callback_avx+0x301>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017050 .byte 196,65,36,94,210 // vdivps %ymm10,%ymm11,%ymm10
17051 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017052 .byte 196,98,125,24,21,67,53,0,0 // vbroadcastss 0x3543(%rip),%ymm10 # 6660 <_sk_callback_avx+0x305>
Mike Klein44375172017-04-17 19:32:05 -040017053 .byte 196,193,108,89,210 // vmulps %ymm10,%ymm2,%ymm2
Mike Klein44375172017-04-17 19:32:05 -040017054 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
17055 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
17056 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
17057 .byte 196,195,109,74,209,128 // vblendvps %ymm8,%ymm9,%ymm2,%ymm2
17058 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040017059 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017060 .byte 196,98,125,24,5,26,53,0,0 // vbroadcastss 0x351a(%rip),%ymm8 # 6664 <_sk_callback_avx+0x309>
Mike Kleinfe560a82017-05-01 12:56:35 -040017061 .byte 196,193,108,93,208 // vminps %ymm8,%ymm2,%ymm2
Mike Klein44375172017-04-17 19:32:05 -040017062 .byte 72,173 // lods %ds:(%rsi),%rax
17063 .byte 255,224 // jmpq *%rax
17064
17065HIDDEN _sk_parametric_a_avx
17066.globl _sk_parametric_a_avx
17067FUNCTION(_sk_parametric_a_avx)
17068_sk_parametric_a_avx:
17069 .byte 72,173 // lods %ds:(%rsi),%rax
17070 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
17071 .byte 196,65,100,194,192,2 // vcmpleps %ymm8,%ymm3,%ymm8
17072 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
17073 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
17074 .byte 197,52,89,203 // vmulps %ymm3,%ymm9,%ymm9
17075 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
17076 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
17077 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
17078 .byte 197,172,89,219 // vmulps %ymm3,%ymm10,%ymm3
Mike Kleinb4bbc642017-04-27 08:59:55 -040017079 .byte 196,193,100,88,219 // vaddps %ymm11,%ymm3,%ymm3
17080 .byte 196,98,125,24,16 // vbroadcastss (%rax),%ymm10
17081 .byte 197,124,91,219 // vcvtdq2ps %ymm3,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040017082 .byte 196,98,125,24,37,203,52,0,0 // vbroadcastss 0x34cb(%rip),%ymm12 # 6668 <_sk_callback_avx+0x30d>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017083 .byte 196,65,36,89,220 // vmulps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040017084 .byte 196,98,125,24,37,193,52,0,0 // vbroadcastss 0x34c1(%rip),%ymm12 # 666c <_sk_callback_avx+0x311>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017085 .byte 196,193,100,84,220 // vandps %ymm12,%ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040017086 .byte 196,98,125,24,37,183,52,0,0 // vbroadcastss 0x34b7(%rip),%ymm12 # 6670 <_sk_callback_avx+0x315>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017087 .byte 196,193,100,86,220 // vorps %ymm12,%ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040017088 .byte 196,98,125,24,37,173,52,0,0 // vbroadcastss 0x34ad(%rip),%ymm12 # 6674 <_sk_callback_avx+0x319>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017089 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040017090 .byte 196,98,125,24,37,163,52,0,0 // vbroadcastss 0x34a3(%rip),%ymm12 # 6678 <_sk_callback_avx+0x31d>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017091 .byte 196,65,100,89,228 // vmulps %ymm12,%ymm3,%ymm12
17092 .byte 196,65,36,92,220 // vsubps %ymm12,%ymm11,%ymm11
Mike Klein8ca33562017-05-23 08:07:43 -040017093 .byte 196,98,125,24,37,148,52,0,0 // vbroadcastss 0x3494(%rip),%ymm12 # 667c <_sk_callback_avx+0x321>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017094 .byte 196,193,100,88,220 // vaddps %ymm12,%ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040017095 .byte 196,98,125,24,37,138,52,0,0 // vbroadcastss 0x348a(%rip),%ymm12 # 6680 <_sk_callback_avx+0x325>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017096 .byte 197,156,94,219 // vdivps %ymm3,%ymm12,%ymm3
Mike Kleinda164342017-04-19 14:33:58 -040017097 .byte 197,164,92,219 // vsubps %ymm3,%ymm11,%ymm3
Mike Kleinb4bbc642017-04-27 08:59:55 -040017098 .byte 197,172,89,219 // vmulps %ymm3,%ymm10,%ymm3
17099 .byte 196,99,125,8,211,1 // vroundps $0x1,%ymm3,%ymm10
17100 .byte 196,65,100,92,210 // vsubps %ymm10,%ymm3,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040017101 .byte 196,98,125,24,29,110,52,0,0 // vbroadcastss 0x346e(%rip),%ymm11 # 6684 <_sk_callback_avx+0x329>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017102 .byte 196,193,100,88,219 // vaddps %ymm11,%ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040017103 .byte 196,98,125,24,29,100,52,0,0 // vbroadcastss 0x3464(%rip),%ymm11 # 6688 <_sk_callback_avx+0x32d>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017104 .byte 196,65,44,89,219 // vmulps %ymm11,%ymm10,%ymm11
17105 .byte 196,193,100,92,219 // vsubps %ymm11,%ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040017106 .byte 196,98,125,24,29,85,52,0,0 // vbroadcastss 0x3455(%rip),%ymm11 # 668c <_sk_callback_avx+0x331>
Mike Klein44375172017-04-17 19:32:05 -040017107 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040017108 .byte 196,98,125,24,29,75,52,0,0 // vbroadcastss 0x344b(%rip),%ymm11 # 6690 <_sk_callback_avx+0x335>
Mike Kleinb4bbc642017-04-27 08:59:55 -040017109 .byte 196,65,36,94,210 // vdivps %ymm10,%ymm11,%ymm10
17110 .byte 196,193,100,88,218 // vaddps %ymm10,%ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040017111 .byte 196,98,125,24,21,60,52,0,0 // vbroadcastss 0x343c(%rip),%ymm10 # 6694 <_sk_callback_avx+0x339>
Mike Klein44375172017-04-17 19:32:05 -040017112 .byte 196,193,100,89,218 // vmulps %ymm10,%ymm3,%ymm3
Mike Klein44375172017-04-17 19:32:05 -040017113 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
17114 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
17115 .byte 196,193,100,88,218 // vaddps %ymm10,%ymm3,%ymm3
17116 .byte 196,195,101,74,217,128 // vblendvps %ymm8,%ymm9,%ymm3,%ymm3
17117 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040017118 .byte 196,193,100,95,216 // vmaxps %ymm8,%ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040017119 .byte 196,98,125,24,5,19,52,0,0 // vbroadcastss 0x3413(%rip),%ymm8 # 6698 <_sk_callback_avx+0x33d>
Mike Kleinfe560a82017-05-01 12:56:35 -040017120 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
Mike Klein44375172017-04-17 19:32:05 -040017121 .byte 72,173 // lods %ds:(%rsi),%rax
17122 .byte 255,224 // jmpq *%rax
17123
Mike Klein4e3e9f82017-04-20 11:04:29 -040017124HIDDEN _sk_lab_to_xyz_avx
17125.globl _sk_lab_to_xyz_avx
17126FUNCTION(_sk_lab_to_xyz_avx)
17127_sk_lab_to_xyz_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040017128 .byte 196,98,125,24,5,5,52,0,0 // vbroadcastss 0x3405(%rip),%ymm8 # 669c <_sk_callback_avx+0x341>
Mike Kleinfe560a82017-05-01 12:56:35 -040017129 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017130 .byte 196,98,125,24,5,251,51,0,0 // vbroadcastss 0x33fb(%rip),%ymm8 # 66a0 <_sk_callback_avx+0x345>
Mike Kleinfe560a82017-05-01 12:56:35 -040017131 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017132 .byte 196,98,125,24,13,241,51,0,0 // vbroadcastss 0x33f1(%rip),%ymm9 # 66a4 <_sk_callback_avx+0x349>
Mike Kleinfe560a82017-05-01 12:56:35 -040017133 .byte 196,193,116,88,201 // vaddps %ymm9,%ymm1,%ymm1
17134 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
17135 .byte 196,193,108,88,209 // vaddps %ymm9,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017136 .byte 196,98,125,24,5,221,51,0,0 // vbroadcastss 0x33dd(%rip),%ymm8 # 66a8 <_sk_callback_avx+0x34d>
Mike Kleinfe560a82017-05-01 12:56:35 -040017137 .byte 196,193,124,88,192 // vaddps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017138 .byte 196,98,125,24,5,211,51,0,0 // vbroadcastss 0x33d3(%rip),%ymm8 # 66ac <_sk_callback_avx+0x351>
Mike Kleinfe560a82017-05-01 12:56:35 -040017139 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017140 .byte 196,98,125,24,5,201,51,0,0 // vbroadcastss 0x33c9(%rip),%ymm8 # 66b0 <_sk_callback_avx+0x355>
Mike Kleinfe560a82017-05-01 12:56:35 -040017141 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
17142 .byte 197,252,88,201 // vaddps %ymm1,%ymm0,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017143 .byte 196,98,125,24,5,187,51,0,0 // vbroadcastss 0x33bb(%rip),%ymm8 # 66b4 <_sk_callback_avx+0x359>
Mike Kleinfe560a82017-05-01 12:56:35 -040017144 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
17145 .byte 197,252,92,210 // vsubps %ymm2,%ymm0,%ymm2
17146 .byte 197,116,89,193 // vmulps %ymm1,%ymm1,%ymm8
17147 .byte 196,65,116,89,192 // vmulps %ymm8,%ymm1,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040017148 .byte 196,98,125,24,13,164,51,0,0 // vbroadcastss 0x33a4(%rip),%ymm9 # 66b8 <_sk_callback_avx+0x35d>
Mike Kleinfe560a82017-05-01 12:56:35 -040017149 .byte 196,65,52,194,208,1 // vcmpltps %ymm8,%ymm9,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040017150 .byte 196,98,125,24,29,153,51,0,0 // vbroadcastss 0x3399(%rip),%ymm11 # 66bc <_sk_callback_avx+0x361>
Mike Kleinfe560a82017-05-01 12:56:35 -040017151 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017152 .byte 196,98,125,24,37,143,51,0,0 // vbroadcastss 0x338f(%rip),%ymm12 # 66c0 <_sk_callback_avx+0x365>
Mike Kleinfe560a82017-05-01 12:56:35 -040017153 .byte 196,193,116,89,204 // vmulps %ymm12,%ymm1,%ymm1
17154 .byte 196,67,117,74,192,160 // vblendvps %ymm10,%ymm8,%ymm1,%ymm8
Mike Klein4e3e9f82017-04-20 11:04:29 -040017155 .byte 197,252,89,200 // vmulps %ymm0,%ymm0,%ymm1
17156 .byte 197,252,89,201 // vmulps %ymm1,%ymm0,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040017157 .byte 197,52,194,209,1 // vcmpltps %ymm1,%ymm9,%ymm10
17158 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
17159 .byte 196,193,124,89,196 // vmulps %ymm12,%ymm0,%ymm0
17160 .byte 196,227,125,74,201,160 // vblendvps %ymm10,%ymm1,%ymm0,%ymm1
17161 .byte 197,236,89,194 // vmulps %ymm2,%ymm2,%ymm0
17162 .byte 197,236,89,192 // vmulps %ymm0,%ymm2,%ymm0
17163 .byte 197,52,194,200,1 // vcmpltps %ymm0,%ymm9,%ymm9
17164 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
17165 .byte 196,193,108,89,212 // vmulps %ymm12,%ymm2,%ymm2
17166 .byte 196,227,109,74,208,144 // vblendvps %ymm9,%ymm0,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017167 .byte 196,226,125,24,5,69,51,0,0 // vbroadcastss 0x3345(%rip),%ymm0 # 66c4 <_sk_callback_avx+0x369>
Mike Klein4e3e9f82017-04-20 11:04:29 -040017168 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017169 .byte 196,98,125,24,5,60,51,0,0 // vbroadcastss 0x333c(%rip),%ymm8 # 66c8 <_sk_callback_avx+0x36d>
Mike Kleinfe560a82017-05-01 12:56:35 -040017170 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein4e3e9f82017-04-20 11:04:29 -040017171 .byte 72,173 // lods %ds:(%rsi),%rax
17172 .byte 255,224 // jmpq *%rax
17173
Mike Klein7c4af542017-03-29 18:21:14 -040017174HIDDEN _sk_load_a8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017175.globl _sk_load_a8_avx
Mike Klein86714282017-04-13 17:37:38 -040017176FUNCTION(_sk_load_a8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017177_sk_load_a8_avx:
17178 .byte 73,137,200 // mov %rcx,%r8
17179 .byte 72,173 // lods %ds:(%rsi),%rax
17180 .byte 72,139,0 // mov (%rax),%rax
17181 .byte 72,1,248 // add %rdi,%rax
17182 .byte 77,133,192 // test %r8,%r8
Brian Osman74fc5932017-05-22 19:25:36 +000017183 .byte 117,62 // jne 33e3 <_sk_load_a8_avx+0x4e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017184 .byte 197,250,126,0 // vmovq (%rax),%xmm0
17185 .byte 196,226,121,49,200 // vpmovzxbd %xmm0,%xmm1
17186 .byte 196,227,121,4,192,229 // vpermilps $0xe5,%xmm0,%xmm0
17187 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
17188 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
17189 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017190 .byte 196,226,125,24,13,0,51,0,0 // vbroadcastss 0x3300(%rip),%ymm1 # 66cc <_sk_callback_avx+0x371>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017191 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
17192 .byte 72,173 // lods %ds:(%rsi),%rax
17193 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
17194 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
17195 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
17196 .byte 76,137,193 // mov %r8,%rcx
17197 .byte 255,224 // jmpq *%rax
17198 .byte 49,201 // xor %ecx,%ecx
17199 .byte 77,137,194 // mov %r8,%r10
17200 .byte 69,49,201 // xor %r9d,%r9d
17201 .byte 68,15,182,24 // movzbl (%rax),%r11d
17202 .byte 72,255,192 // inc %rax
17203 .byte 73,211,227 // shl %cl,%r11
17204 .byte 77,9,217 // or %r11,%r9
17205 .byte 72,131,193,8 // add $0x8,%rcx
17206 .byte 73,255,202 // dec %r10
Brian Osman74fc5932017-05-22 19:25:36 +000017207 .byte 117,234 // jne 33eb <_sk_load_a8_avx+0x56>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017208 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Brian Osman74fc5932017-05-22 19:25:36 +000017209 .byte 235,161 // jmp 33a9 <_sk_load_a8_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017210
Mike Klein21bd3e42017-04-06 16:32:29 -040017211HIDDEN _sk_gather_a8_avx
17212.globl _sk_gather_a8_avx
Mike Klein86714282017-04-13 17:37:38 -040017213FUNCTION(_sk_gather_a8_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040017214_sk_gather_a8_avx:
17215 .byte 65,87 // push %r15
17216 .byte 65,86 // push %r14
17217 .byte 65,84 // push %r12
17218 .byte 83 // push %rbx
17219 .byte 72,173 // lods %ds:(%rsi),%rax
17220 .byte 76,139,0 // mov (%rax),%r8
17221 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
17222 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
17223 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
17224 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
17225 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
17226 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
17227 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
17228 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
17229 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
17230 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
17231 .byte 65,137,193 // mov %eax,%r9d
17232 .byte 72,193,232,32 // shr $0x20,%rax
17233 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
17234 .byte 69,137,211 // mov %r10d,%r11d
17235 .byte 73,193,234,32 // shr $0x20,%r10
17236 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
17237 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
17238 .byte 65,137,222 // mov %ebx,%r14d
17239 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
17240 .byte 69,137,252 // mov %r15d,%r12d
17241 .byte 73,193,239,32 // shr $0x20,%r15
17242 .byte 72,193,235,32 // shr $0x20,%rbx
17243 .byte 196,131,121,32,4,48,0 // vpinsrb $0x0,(%r8,%r14,1),%xmm0,%xmm0
17244 .byte 196,195,121,32,4,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm0,%xmm0
17245 .byte 67,15,182,28,32 // movzbl (%r8,%r12,1),%ebx
17246 .byte 196,227,121,32,195,2 // vpinsrb $0x2,%ebx,%xmm0,%xmm0
17247 .byte 67,15,182,28,56 // movzbl (%r8,%r15,1),%ebx
17248 .byte 196,227,121,32,195,3 // vpinsrb $0x3,%ebx,%xmm0,%xmm0
17249 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
17250 .byte 196,131,121,32,12,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm1
17251 .byte 196,131,113,32,12,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm1,%xmm1
17252 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
17253 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
17254 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
17255 .byte 196,227,113,32,200,3 // vpinsrb $0x3,%eax,%xmm1,%xmm1
17256 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
17257 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
17258 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017259 .byte 196,226,125,24,13,245,49,0,0 // vbroadcastss 0x31f5(%rip),%ymm1 # 66d0 <_sk_callback_avx+0x375>
Mike Klein21bd3e42017-04-06 16:32:29 -040017260 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
17261 .byte 72,173 // lods %ds:(%rsi),%rax
17262 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
17263 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
17264 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
17265 .byte 91 // pop %rbx
17266 .byte 65,92 // pop %r12
17267 .byte 65,94 // pop %r14
17268 .byte 65,95 // pop %r15
17269 .byte 255,224 // jmpq *%rax
17270
Mike Klein7c4af542017-03-29 18:21:14 -040017271HIDDEN _sk_store_a8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017272.globl _sk_store_a8_avx
Mike Klein86714282017-04-13 17:37:38 -040017273FUNCTION(_sk_store_a8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017274_sk_store_a8_avx:
17275 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040017276 .byte 76,139,16 // mov (%rax),%r10
Mike Klein8ca33562017-05-23 08:07:43 -040017277 .byte 196,98,125,24,5,208,49,0,0 // vbroadcastss 0x31d0(%rip),%ymm8 # 66d4 <_sk_callback_avx+0x379>
Mike Kleinfe560a82017-05-01 12:56:35 -040017278 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040017279 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
17280 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
17281 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
17282 .byte 196,65,57,103,192 // vpackuswb %xmm8,%xmm8,%xmm8
17283 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000017284 .byte 117,10 // jne 352d <_sk_store_a8_avx+0x37>
Mike Kleinfe560a82017-05-01 12:56:35 -040017285 .byte 196,65,123,17,4,58 // vmovsd %xmm8,(%r10,%rdi,1)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017286 .byte 72,173 // lods %ds:(%rsi),%rax
17287 .byte 255,224 // jmpq *%rax
17288 .byte 65,137,200 // mov %ecx,%r8d
17289 .byte 65,128,224,7 // and $0x7,%r8b
17290 .byte 65,254,200 // dec %r8b
17291 .byte 65,128,248,6 // cmp $0x6,%r8b
Brian Osman74fc5932017-05-22 19:25:36 +000017292 .byte 119,236 // ja 3529 <_sk_store_a8_avx+0x33>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017293 .byte 196,66,121,48,192 // vpmovzxbw %xmm8,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040017294 .byte 69,15,182,192 // movzbl %r8b,%r8d
Brian Osman74fc5932017-05-22 19:25:36 +000017295 .byte 76,141,13,67,0,0,0 // lea 0x43(%rip),%r9 # 3590 <_sk_store_a8_avx+0x9a>
Mike Kleinfe560a82017-05-01 12:56:35 -040017296 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
17297 .byte 76,1,200 // add %r9,%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040017298 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040017299 .byte 196,67,121,20,68,58,6,12 // vpextrb $0xc,%xmm8,0x6(%r10,%rdi,1)
17300 .byte 196,67,121,20,68,58,5,10 // vpextrb $0xa,%xmm8,0x5(%r10,%rdi,1)
17301 .byte 196,67,121,20,68,58,4,8 // vpextrb $0x8,%xmm8,0x4(%r10,%rdi,1)
17302 .byte 196,67,121,20,68,58,3,6 // vpextrb $0x6,%xmm8,0x3(%r10,%rdi,1)
17303 .byte 196,67,121,20,68,58,2,4 // vpextrb $0x4,%xmm8,0x2(%r10,%rdi,1)
17304 .byte 196,67,121,20,68,58,1,2 // vpextrb $0x2,%xmm8,0x1(%r10,%rdi,1)
17305 .byte 196,67,121,20,4,58,0 // vpextrb $0x0,%xmm8,(%r10,%rdi,1)
Brian Osman74fc5932017-05-22 19:25:36 +000017306 .byte 235,154 // jmp 3529 <_sk_store_a8_avx+0x33>
17307 .byte 144 // nop
17308 .byte 246,255 // idiv %bh
17309 .byte 255 // (bad)
17310 .byte 255 // (bad)
17311 .byte 238 // out %al,(%dx)
17312 .byte 255 // (bad)
17313 .byte 255 // (bad)
17314 .byte 255,230 // jmpq *%rsi
Mike Kleind7e06ae2017-03-29 16:33:06 -040017315 .byte 255 // (bad)
17316 .byte 255 // (bad)
17317 .byte 255 // (bad)
Brian Osman74fc5932017-05-22 19:25:36 +000017318 .byte 222,255 // fdivrp %st,%st(7)
17319 .byte 255 // (bad)
17320 .byte 255,214 // callq *%rsi
Mike Kleind7e06ae2017-03-29 16:33:06 -040017321 .byte 255 // (bad)
17322 .byte 255 // (bad)
Brian Osman74fc5932017-05-22 19:25:36 +000017323 .byte 255,206 // dec %esi
Mike Kleind7e06ae2017-03-29 16:33:06 -040017324 .byte 255 // (bad)
17325 .byte 255 // (bad)
Brian Osman74fc5932017-05-22 19:25:36 +000017326 .byte 255,198 // inc %esi
Mike Kleind7e06ae2017-03-29 16:33:06 -040017327 .byte 255 // (bad)
17328 .byte 255 // (bad)
17329 .byte 255 // .byte 0xff
17330
Mike Kleinf809fef2017-03-31 13:52:45 -040017331HIDDEN _sk_load_g8_avx
17332.globl _sk_load_g8_avx
Mike Klein86714282017-04-13 17:37:38 -040017333FUNCTION(_sk_load_g8_avx)
Mike Kleinf809fef2017-03-31 13:52:45 -040017334_sk_load_g8_avx:
17335 .byte 73,137,200 // mov %rcx,%r8
17336 .byte 72,173 // lods %ds:(%rsi),%rax
17337 .byte 72,139,0 // mov (%rax),%rax
17338 .byte 72,1,248 // add %rdi,%rax
17339 .byte 77,133,192 // test %r8,%r8
Brian Osman74fc5932017-05-22 19:25:36 +000017340 .byte 117,67 // jne 35ff <_sk_load_g8_avx+0x53>
Mike Kleinf809fef2017-03-31 13:52:45 -040017341 .byte 197,250,126,0 // vmovq (%rax),%xmm0
17342 .byte 196,226,121,49,200 // vpmovzxbd %xmm0,%xmm1
17343 .byte 196,227,121,4,192,229 // vpermilps $0xe5,%xmm0,%xmm0
17344 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
17345 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
17346 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017347 .byte 196,226,125,24,13,245,48,0,0 // vbroadcastss 0x30f5(%rip),%ymm1 # 66d8 <_sk_callback_avx+0x37d>
Mike Kleinf809fef2017-03-31 13:52:45 -040017348 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Kleinf809fef2017-03-31 13:52:45 -040017349 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040017350 .byte 196,226,125,24,29,234,48,0,0 // vbroadcastss 0x30ea(%rip),%ymm3 # 66dc <_sk_callback_avx+0x381>
Mike Kleinf809fef2017-03-31 13:52:45 -040017351 .byte 76,137,193 // mov %r8,%rcx
17352 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
17353 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
17354 .byte 255,224 // jmpq *%rax
17355 .byte 49,201 // xor %ecx,%ecx
17356 .byte 77,137,194 // mov %r8,%r10
17357 .byte 69,49,201 // xor %r9d,%r9d
17358 .byte 68,15,182,24 // movzbl (%rax),%r11d
17359 .byte 72,255,192 // inc %rax
17360 .byte 73,211,227 // shl %cl,%r11
17361 .byte 77,9,217 // or %r11,%r9
17362 .byte 72,131,193,8 // add $0x8,%rcx
17363 .byte 73,255,202 // dec %r10
Brian Osman74fc5932017-05-22 19:25:36 +000017364 .byte 117,234 // jne 3607 <_sk_load_g8_avx+0x5b>
Mike Kleinf809fef2017-03-31 13:52:45 -040017365 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Brian Osman74fc5932017-05-22 19:25:36 +000017366 .byte 235,156 // jmp 35c0 <_sk_load_g8_avx+0x14>
Mike Klein21bd3e42017-04-06 16:32:29 -040017367
17368HIDDEN _sk_gather_g8_avx
17369.globl _sk_gather_g8_avx
Mike Klein86714282017-04-13 17:37:38 -040017370FUNCTION(_sk_gather_g8_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040017371_sk_gather_g8_avx:
17372 .byte 65,87 // push %r15
17373 .byte 65,86 // push %r14
17374 .byte 65,84 // push %r12
17375 .byte 83 // push %rbx
17376 .byte 72,173 // lods %ds:(%rsi),%rax
17377 .byte 76,139,0 // mov (%rax),%r8
17378 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
17379 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
17380 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
17381 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
17382 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
17383 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
17384 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
17385 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
17386 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
17387 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
17388 .byte 65,137,193 // mov %eax,%r9d
17389 .byte 72,193,232,32 // shr $0x20,%rax
17390 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
17391 .byte 69,137,211 // mov %r10d,%r11d
17392 .byte 73,193,234,32 // shr $0x20,%r10
17393 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
17394 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
17395 .byte 65,137,222 // mov %ebx,%r14d
17396 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
17397 .byte 69,137,252 // mov %r15d,%r12d
17398 .byte 73,193,239,32 // shr $0x20,%r15
17399 .byte 72,193,235,32 // shr $0x20,%rbx
17400 .byte 196,131,121,32,4,48,0 // vpinsrb $0x0,(%r8,%r14,1),%xmm0,%xmm0
17401 .byte 196,195,121,32,4,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm0,%xmm0
17402 .byte 67,15,182,28,32 // movzbl (%r8,%r12,1),%ebx
17403 .byte 196,227,121,32,195,2 // vpinsrb $0x2,%ebx,%xmm0,%xmm0
17404 .byte 67,15,182,28,56 // movzbl (%r8,%r15,1),%ebx
17405 .byte 196,227,121,32,195,3 // vpinsrb $0x3,%ebx,%xmm0,%xmm0
17406 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
17407 .byte 196,131,121,32,12,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm1
17408 .byte 196,131,113,32,12,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm1,%xmm1
17409 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
17410 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
17411 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
17412 .byte 196,227,113,32,200,3 // vpinsrb $0x3,%eax,%xmm1,%xmm1
17413 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
17414 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
17415 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017416 .byte 196,226,125,24,13,233,47,0,0 // vbroadcastss 0x2fe9(%rip),%ymm1 # 66e0 <_sk_callback_avx+0x385>
Mike Klein21bd3e42017-04-06 16:32:29 -040017417 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -040017418 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040017419 .byte 196,226,125,24,29,222,47,0,0 // vbroadcastss 0x2fde(%rip),%ymm3 # 66e4 <_sk_callback_avx+0x389>
Mike Klein21bd3e42017-04-06 16:32:29 -040017420 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
17421 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
17422 .byte 91 // pop %rbx
17423 .byte 65,92 // pop %r12
17424 .byte 65,94 // pop %r14
17425 .byte 65,95 // pop %r15
17426 .byte 255,224 // jmpq *%rax
Mike Kleinf809fef2017-03-31 13:52:45 -040017427
Mike Klein7d3d8722017-04-06 17:53:18 -040017428HIDDEN _sk_gather_i8_avx
17429.globl _sk_gather_i8_avx
Mike Klein86714282017-04-13 17:37:38 -040017430FUNCTION(_sk_gather_i8_avx)
Mike Klein7d3d8722017-04-06 17:53:18 -040017431_sk_gather_i8_avx:
17432 .byte 72,173 // lods %ds:(%rsi),%rax
17433 .byte 73,137,192 // mov %rax,%r8
17434 .byte 77,133,192 // test %r8,%r8
Brian Osman74fc5932017-05-22 19:25:36 +000017435 .byte 116,5 // je 3726 <_sk_gather_i8_avx+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -040017436 .byte 76,137,192 // mov %r8,%rax
Brian Osman74fc5932017-05-22 19:25:36 +000017437 .byte 235,2 // jmp 3728 <_sk_gather_i8_avx+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -040017438 .byte 72,173 // lods %ds:(%rsi),%rax
17439 .byte 65,87 // push %r15
17440 .byte 65,86 // push %r14
17441 .byte 65,85 // push %r13
17442 .byte 65,84 // push %r12
17443 .byte 83 // push %rbx
17444 .byte 76,139,8 // mov (%rax),%r9
17445 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
17446 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
17447 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
17448 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
17449 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
17450 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
17451 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
17452 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
17453 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
17454 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
17455 .byte 65,137,194 // mov %eax,%r10d
17456 .byte 72,193,232,32 // shr $0x20,%rax
17457 .byte 196,193,249,126,211 // vmovq %xmm2,%r11
17458 .byte 69,137,222 // mov %r11d,%r14d
17459 .byte 73,193,235,32 // shr $0x20,%r11
17460 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
17461 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
17462 .byte 65,137,223 // mov %ebx,%r15d
17463 .byte 196,195,249,22,196,1 // vpextrq $0x1,%xmm0,%r12
17464 .byte 69,137,229 // mov %r12d,%r13d
17465 .byte 73,193,236,32 // shr $0x20,%r12
17466 .byte 72,193,235,32 // shr $0x20,%rbx
17467 .byte 196,131,121,32,4,49,0 // vpinsrb $0x0,(%r9,%r14,1),%xmm0,%xmm0
17468 .byte 196,131,121,32,4,25,1 // vpinsrb $0x1,(%r9,%r11,1),%xmm0,%xmm0
17469 .byte 196,131,121,32,4,17,2 // vpinsrb $0x2,(%r9,%r10,1),%xmm0,%xmm0
17470 .byte 196,195,121,32,4,1,3 // vpinsrb $0x3,(%r9,%rax,1),%xmm0,%xmm0
17471 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
17472 .byte 196,195,249,22,194,1 // vpextrq $0x1,%xmm0,%r10
17473 .byte 196,193,249,126,195 // vmovq %xmm0,%r11
17474 .byte 196,131,121,32,4,57,0 // vpinsrb $0x0,(%r9,%r15,1),%xmm0,%xmm0
17475 .byte 196,195,121,32,4,25,1 // vpinsrb $0x1,(%r9,%rbx,1),%xmm0,%xmm0
17476 .byte 196,131,121,32,4,41,2 // vpinsrb $0x2,(%r9,%r13,1),%xmm0,%xmm0
17477 .byte 196,131,121,32,4,33,3 // vpinsrb $0x3,(%r9,%r12,1),%xmm0,%xmm0
17478 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
17479 .byte 73,139,88,8 // mov 0x8(%r8),%rbx
17480 .byte 196,193,249,126,193 // vmovq %xmm0,%r9
17481 .byte 69,137,200 // mov %r9d,%r8d
17482 .byte 73,193,233,30 // shr $0x1e,%r9
17483 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
17484 .byte 65,137,198 // mov %eax,%r14d
17485 .byte 72,193,232,30 // shr $0x1e,%rax
17486 .byte 69,137,223 // mov %r11d,%r15d
17487 .byte 73,193,235,30 // shr $0x1e,%r11
17488 .byte 69,137,212 // mov %r10d,%r12d
17489 .byte 73,193,234,30 // shr $0x1e,%r10
17490 .byte 196,161,121,110,4,131 // vmovd (%rbx,%r8,4),%xmm0
17491 .byte 196,163,121,34,4,11,1 // vpinsrd $0x1,(%rbx,%r9,1),%xmm0,%xmm0
17492 .byte 196,163,121,34,4,179,2 // vpinsrd $0x2,(%rbx,%r14,4),%xmm0,%xmm0
17493 .byte 196,99,121,34,4,3,3 // vpinsrd $0x3,(%rbx,%rax,1),%xmm0,%xmm8
17494 .byte 196,161,121,110,4,187 // vmovd (%rbx,%r15,4),%xmm0
17495 .byte 196,163,121,34,4,27,1 // vpinsrd $0x1,(%rbx,%r11,1),%xmm0,%xmm0
17496 .byte 196,163,121,34,4,163,2 // vpinsrd $0x2,(%rbx,%r12,4),%xmm0,%xmm0
17497 .byte 196,163,121,34,28,19,3 // vpinsrd $0x3,(%rbx,%r10,1),%xmm0,%xmm3
17498 .byte 196,227,61,24,195,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017499 .byte 197,124,40,21,110,48,0,0 // vmovaps 0x306e(%rip),%ymm10 # 68c0 <_sk_callback_avx+0x565>
Mike Klein0aa742f2017-04-27 13:36:57 -040017500 .byte 196,193,124,84,194 // vandps %ymm10,%ymm0,%ymm0
Mike Klein7d3d8722017-04-06 17:53:18 -040017501 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017502 .byte 196,98,125,24,13,132,46,0,0 // vbroadcastss 0x2e84(%rip),%ymm9 # 66e8 <_sk_callback_avx+0x38d>
Mike Klein7d3d8722017-04-06 17:53:18 -040017503 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
Mike Klein0aa742f2017-04-27 13:36:57 -040017504 .byte 196,193,113,114,208,8 // vpsrld $0x8,%xmm8,%xmm1
17505 .byte 197,233,114,211,8 // vpsrld $0x8,%xmm3,%xmm2
17506 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
17507 .byte 196,193,116,84,202 // vandps %ymm10,%ymm1,%ymm1
Mike Klein7d3d8722017-04-06 17:53:18 -040017508 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
17509 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein0aa742f2017-04-27 13:36:57 -040017510 .byte 196,193,33,114,208,16 // vpsrld $0x10,%xmm8,%xmm11
Mike Klein7d3d8722017-04-06 17:53:18 -040017511 .byte 197,233,114,211,16 // vpsrld $0x10,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040017512 .byte 196,227,37,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm11,%ymm2
17513 .byte 196,193,108,84,210 // vandps %ymm10,%ymm2,%ymm2
Mike Klein7d3d8722017-04-06 17:53:18 -040017514 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
17515 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
17516 .byte 196,193,57,114,208,24 // vpsrld $0x18,%xmm8,%xmm8
17517 .byte 197,225,114,211,24 // vpsrld $0x18,%xmm3,%xmm3
17518 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
17519 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
17520 .byte 196,193,100,89,217 // vmulps %ymm9,%ymm3,%ymm3
17521 .byte 72,173 // lods %ds:(%rsi),%rax
17522 .byte 91 // pop %rbx
17523 .byte 65,92 // pop %r12
17524 .byte 65,93 // pop %r13
17525 .byte 65,94 // pop %r14
17526 .byte 65,95 // pop %r15
17527 .byte 255,224 // jmpq *%rax
17528
Mike Klein7c4af542017-03-29 18:21:14 -040017529HIDDEN _sk_load_565_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017530.globl _sk_load_565_avx
Mike Klein86714282017-04-13 17:37:38 -040017531FUNCTION(_sk_load_565_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017532_sk_load_565_avx:
17533 .byte 72,173 // lods %ds:(%rsi),%rax
17534 .byte 76,139,16 // mov (%rax),%r10
17535 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000017536 .byte 15,133,128,0,0,0 // jne 395c <_sk_load_565_avx+0x8e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017537 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
17538 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
17539 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
17540 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
17541 .byte 196,227,125,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017542 .byte 196,226,125,24,5,238,45,0,0 // vbroadcastss 0x2dee(%rip),%ymm0 # 66ec <_sk_callback_avx+0x391>
Mike Klein308e6242017-04-27 13:56:33 -040017543 .byte 197,236,84,192 // vandps %ymm0,%ymm2,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040017544 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017545 .byte 196,226,125,24,13,225,45,0,0 // vbroadcastss 0x2de1(%rip),%ymm1 # 66f0 <_sk_callback_avx+0x395>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017546 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017547 .byte 196,226,125,24,13,216,45,0,0 // vbroadcastss 0x2dd8(%rip),%ymm1 # 66f4 <_sk_callback_avx+0x399>
Mike Klein308e6242017-04-27 13:56:33 -040017548 .byte 197,236,84,201 // vandps %ymm1,%ymm2,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040017549 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017550 .byte 196,226,125,24,29,203,45,0,0 // vbroadcastss 0x2dcb(%rip),%ymm3 # 66f8 <_sk_callback_avx+0x39d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017551 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017552 .byte 196,226,125,24,29,194,45,0,0 // vbroadcastss 0x2dc2(%rip),%ymm3 # 66fc <_sk_callback_avx+0x3a1>
Mike Klein308e6242017-04-27 13:56:33 -040017553 .byte 197,236,84,211 // vandps %ymm3,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040017554 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017555 .byte 196,226,125,24,29,181,45,0,0 // vbroadcastss 0x2db5(%rip),%ymm3 # 6700 <_sk_callback_avx+0x3a5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017556 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040017557 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040017558 .byte 196,226,125,24,29,170,45,0,0 // vbroadcastss 0x2daa(%rip),%ymm3 # 6704 <_sk_callback_avx+0x3a9>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017559 .byte 255,224 // jmpq *%rax
17560 .byte 65,137,200 // mov %ecx,%r8d
17561 .byte 65,128,224,7 // and $0x7,%r8b
17562 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
17563 .byte 65,254,200 // dec %r8b
17564 .byte 65,128,248,6 // cmp $0x6,%r8b
Brian Osman74fc5932017-05-22 19:25:36 +000017565 .byte 15,135,110,255,255,255 // ja 38e2 <_sk_load_565_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017566 .byte 69,15,182,192 // movzbl %r8b,%r8d
Brian Osman74fc5932017-05-22 19:25:36 +000017567 .byte 76,141,13,73,0,0,0 // lea 0x49(%rip),%r9 # 39c8 <_sk_load_565_avx+0xfa>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017568 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
17569 .byte 76,1,200 // add %r9,%rax
17570 .byte 255,224 // jmpq *%rax
17571 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
17572 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
17573 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
17574 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
17575 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
17576 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
17577 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
17578 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Brian Osman74fc5932017-05-22 19:25:36 +000017579 .byte 233,26,255,255,255 // jmpq 38e2 <_sk_load_565_avx+0x14>
Mike Klein308e6242017-04-27 13:56:33 -040017580 .byte 244 // hlt
Mike Kleind7e06ae2017-03-29 16:33:06 -040017581 .byte 255 // (bad)
17582 .byte 255 // (bad)
17583 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040017584 .byte 236 // in (%dx),%al
17585 .byte 255 // (bad)
17586 .byte 255 // (bad)
17587 .byte 255,228 // jmpq *%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040017588 .byte 255 // (bad)
17589 .byte 255 // (bad)
17590 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040017591 .byte 220,255 // fdivr %st,%st(7)
Mike Klein0aa742f2017-04-27 13:36:57 -040017592 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040017593 .byte 255,212 // callq *%rsp
Mike Klein0aa742f2017-04-27 13:36:57 -040017594 .byte 255 // (bad)
17595 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040017596 .byte 255,204 // dec %esp
Mike Klein0aa742f2017-04-27 13:36:57 -040017597 .byte 255 // (bad)
17598 .byte 255 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040017599 .byte 255,192 // inc %eax
Mike Kleind7e06ae2017-03-29 16:33:06 -040017600 .byte 255 // (bad)
17601 .byte 255 // (bad)
17602 .byte 255 // .byte 0xff
17603
Mike Klein21bd3e42017-04-06 16:32:29 -040017604HIDDEN _sk_gather_565_avx
17605.globl _sk_gather_565_avx
Mike Klein86714282017-04-13 17:37:38 -040017606FUNCTION(_sk_gather_565_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040017607_sk_gather_565_avx:
17608 .byte 85 // push %rbp
17609 .byte 65,87 // push %r15
17610 .byte 65,86 // push %r14
17611 .byte 65,84 // push %r12
17612 .byte 83 // push %rbx
17613 .byte 72,173 // lods %ds:(%rsi),%rax
17614 .byte 76,139,0 // mov (%rax),%r8
17615 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
17616 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
17617 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
17618 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
17619 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
17620 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
17621 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
17622 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
17623 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
17624 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
17625 .byte 65,137,193 // mov %eax,%r9d
17626 .byte 72,193,232,32 // shr $0x20,%rax
17627 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
17628 .byte 69,137,211 // mov %r10d,%r11d
17629 .byte 73,193,234,32 // shr $0x20,%r10
17630 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
17631 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
17632 .byte 65,137,222 // mov %ebx,%r14d
17633 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
17634 .byte 69,137,252 // mov %r15d,%r12d
17635 .byte 73,193,239,32 // shr $0x20,%r15
17636 .byte 72,193,235,32 // shr $0x20,%rbx
17637 .byte 65,15,183,28,88 // movzwl (%r8,%rbx,2),%ebx
17638 .byte 67,15,183,44,112 // movzwl (%r8,%r14,2),%ebp
17639 .byte 197,249,110,197 // vmovd %ebp,%xmm0
17640 .byte 197,249,196,195,1 // vpinsrw $0x1,%ebx,%xmm0,%xmm0
17641 .byte 67,15,183,28,96 // movzwl (%r8,%r12,2),%ebx
17642 .byte 197,249,196,195,2 // vpinsrw $0x2,%ebx,%xmm0,%xmm0
17643 .byte 67,15,183,28,120 // movzwl (%r8,%r15,2),%ebx
17644 .byte 197,249,196,195,3 // vpinsrw $0x3,%ebx,%xmm0,%xmm0
17645 .byte 67,15,183,44,88 // movzwl (%r8,%r11,2),%ebp
17646 .byte 197,249,196,197,4 // vpinsrw $0x4,%ebp,%xmm0,%xmm0
17647 .byte 67,15,183,44,80 // movzwl (%r8,%r10,2),%ebp
17648 .byte 197,249,196,197,5 // vpinsrw $0x5,%ebp,%xmm0,%xmm0
17649 .byte 67,15,183,44,72 // movzwl (%r8,%r9,2),%ebp
17650 .byte 197,249,196,197,6 // vpinsrw $0x6,%ebp,%xmm0,%xmm0
17651 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
17652 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
17653 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
17654 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
17655 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
17656 .byte 196,227,125,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017657 .byte 196,226,125,24,5,74,44,0,0 // vbroadcastss 0x2c4a(%rip),%ymm0 # 6708 <_sk_callback_avx+0x3ad>
Mike Klein308e6242017-04-27 13:56:33 -040017658 .byte 197,236,84,192 // vandps %ymm0,%ymm2,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -040017659 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017660 .byte 196,226,125,24,13,61,44,0,0 // vbroadcastss 0x2c3d(%rip),%ymm1 # 670c <_sk_callback_avx+0x3b1>
Mike Klein21bd3e42017-04-06 16:32:29 -040017661 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017662 .byte 196,226,125,24,13,52,44,0,0 // vbroadcastss 0x2c34(%rip),%ymm1 # 6710 <_sk_callback_avx+0x3b5>
Mike Klein308e6242017-04-27 13:56:33 -040017663 .byte 197,236,84,201 // vandps %ymm1,%ymm2,%ymm1
Mike Klein21bd3e42017-04-06 16:32:29 -040017664 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017665 .byte 196,226,125,24,29,39,44,0,0 // vbroadcastss 0x2c27(%rip),%ymm3 # 6714 <_sk_callback_avx+0x3b9>
Mike Klein21bd3e42017-04-06 16:32:29 -040017666 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017667 .byte 196,226,125,24,29,30,44,0,0 // vbroadcastss 0x2c1e(%rip),%ymm3 # 6718 <_sk_callback_avx+0x3bd>
Mike Klein308e6242017-04-27 13:56:33 -040017668 .byte 197,236,84,211 // vandps %ymm3,%ymm2,%ymm2
Mike Klein21bd3e42017-04-06 16:32:29 -040017669 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017670 .byte 196,226,125,24,29,17,44,0,0 // vbroadcastss 0x2c11(%rip),%ymm3 # 671c <_sk_callback_avx+0x3c1>
Mike Klein21bd3e42017-04-06 16:32:29 -040017671 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
Mike Klein21bd3e42017-04-06 16:32:29 -040017672 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040017673 .byte 196,226,125,24,29,6,44,0,0 // vbroadcastss 0x2c06(%rip),%ymm3 # 6720 <_sk_callback_avx+0x3c5>
Mike Klein21bd3e42017-04-06 16:32:29 -040017674 .byte 91 // pop %rbx
17675 .byte 65,92 // pop %r12
17676 .byte 65,94 // pop %r14
17677 .byte 65,95 // pop %r15
17678 .byte 93 // pop %rbp
17679 .byte 255,224 // jmpq *%rax
17680
Mike Klein7c4af542017-03-29 18:21:14 -040017681HIDDEN _sk_store_565_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017682.globl _sk_store_565_avx
Mike Klein86714282017-04-13 17:37:38 -040017683FUNCTION(_sk_store_565_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017684_sk_store_565_avx:
17685 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040017686 .byte 76,139,16 // mov (%rax),%r10
Mike Klein8ca33562017-05-23 08:07:43 -040017687 .byte 196,98,125,24,5,242,43,0,0 // vbroadcastss 0x2bf2(%rip),%ymm8 # 6724 <_sk_callback_avx+0x3c9>
Mike Kleinfe560a82017-05-01 12:56:35 -040017688 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040017689 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
17690 .byte 196,193,41,114,241,11 // vpslld $0xb,%xmm9,%xmm10
17691 .byte 196,67,125,25,201,1 // vextractf128 $0x1,%ymm9,%xmm9
17692 .byte 196,193,49,114,241,11 // vpslld $0xb,%xmm9,%xmm9
17693 .byte 196,67,45,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040017694 .byte 196,98,125,24,21,203,43,0,0 // vbroadcastss 0x2bcb(%rip),%ymm10 # 6728 <_sk_callback_avx+0x3cd>
Mike Kleinfe560a82017-05-01 12:56:35 -040017695 .byte 196,65,116,89,210 // vmulps %ymm10,%ymm1,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040017696 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
17697 .byte 196,193,33,114,242,5 // vpslld $0x5,%xmm10,%xmm11
17698 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
17699 .byte 196,193,41,114,242,5 // vpslld $0x5,%xmm10,%xmm10
17700 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
17701 .byte 196,65,45,86,201 // vorpd %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040017702 .byte 196,65,108,89,192 // vmulps %ymm8,%ymm2,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040017703 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
17704 .byte 196,65,53,86,192 // vorpd %ymm8,%ymm9,%ymm8
17705 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
17706 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
17707 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000017708 .byte 117,10 // jne 3bad <_sk_store_565_avx+0x89>
Mike Kleinfe560a82017-05-01 12:56:35 -040017709 .byte 196,65,122,127,4,122 // vmovdqu %xmm8,(%r10,%rdi,2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017710 .byte 72,173 // lods %ds:(%rsi),%rax
17711 .byte 255,224 // jmpq *%rax
17712 .byte 65,137,200 // mov %ecx,%r8d
17713 .byte 65,128,224,7 // and $0x7,%r8b
17714 .byte 65,254,200 // dec %r8b
17715 .byte 65,128,248,6 // cmp $0x6,%r8b
Brian Osman74fc5932017-05-22 19:25:36 +000017716 .byte 119,236 // ja 3ba9 <_sk_store_565_avx+0x85>
Mike Kleinfe560a82017-05-01 12:56:35 -040017717 .byte 69,15,182,192 // movzbl %r8b,%r8d
Brian Osman74fc5932017-05-22 19:25:36 +000017718 .byte 76,141,13,68,0,0,0 // lea 0x44(%rip),%r9 # 3c0c <_sk_store_565_avx+0xe8>
Mike Kleinfe560a82017-05-01 12:56:35 -040017719 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
17720 .byte 76,1,200 // add %r9,%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040017721 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040017722 .byte 196,67,121,21,68,122,12,6 // vpextrw $0x6,%xmm8,0xc(%r10,%rdi,2)
17723 .byte 196,67,121,21,68,122,10,5 // vpextrw $0x5,%xmm8,0xa(%r10,%rdi,2)
17724 .byte 196,67,121,21,68,122,8,4 // vpextrw $0x4,%xmm8,0x8(%r10,%rdi,2)
17725 .byte 196,67,121,21,68,122,6,3 // vpextrw $0x3,%xmm8,0x6(%r10,%rdi,2)
17726 .byte 196,67,121,21,68,122,4,2 // vpextrw $0x2,%xmm8,0x4(%r10,%rdi,2)
17727 .byte 196,67,121,21,68,122,2,1 // vpextrw $0x1,%xmm8,0x2(%r10,%rdi,2)
17728 .byte 196,67,121,21,4,122,0 // vpextrw $0x0,%xmm8,(%r10,%rdi,2)
Brian Osman74fc5932017-05-22 19:25:36 +000017729 .byte 235,159 // jmp 3ba9 <_sk_store_565_avx+0x85>
Mike Kleinfe560a82017-05-01 12:56:35 -040017730 .byte 102,144 // xchg %ax,%ax
17731 .byte 245 // cmc
Mike Kleind7e06ae2017-03-29 16:33:06 -040017732 .byte 255 // (bad)
17733 .byte 255 // (bad)
17734 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040017735 .byte 237 // in (%dx),%eax
Mike Kleind7e06ae2017-03-29 16:33:06 -040017736 .byte 255 // (bad)
17737 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040017738 .byte 255,229 // jmpq *%rbp
Mike Kleind7e06ae2017-03-29 16:33:06 -040017739 .byte 255 // (bad)
17740 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040017741 .byte 255 // (bad)
17742 .byte 221,255 // (bad)
17743 .byte 255 // (bad)
17744 .byte 255,213 // callq *%rbp
17745 .byte 255 // (bad)
17746 .byte 255 // (bad)
17747 .byte 255,205 // dec %ebp
17748 .byte 255 // (bad)
17749 .byte 255 // (bad)
17750 .byte 255,197 // inc %ebp
Mike Kleind7e06ae2017-03-29 16:33:06 -040017751 .byte 255 // (bad)
17752 .byte 255 // (bad)
17753 .byte 255 // .byte 0xff
17754
Mike Kleinf809fef2017-03-31 13:52:45 -040017755HIDDEN _sk_load_4444_avx
17756.globl _sk_load_4444_avx
Mike Klein86714282017-04-13 17:37:38 -040017757FUNCTION(_sk_load_4444_avx)
Mike Kleinf809fef2017-03-31 13:52:45 -040017758_sk_load_4444_avx:
17759 .byte 72,173 // lods %ds:(%rsi),%rax
17760 .byte 76,139,16 // mov (%rax),%r10
17761 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000017762 .byte 15,133,152,0,0,0 // jne 3cce <_sk_load_4444_avx+0xa6>
Mike Kleinf809fef2017-03-31 13:52:45 -040017763 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
17764 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
17765 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
17766 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -040017767 .byte 196,227,125,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040017768 .byte 196,226,125,24,5,212,42,0,0 // vbroadcastss 0x2ad4(%rip),%ymm0 # 672c <_sk_callback_avx+0x3d1>
Mike Klein308e6242017-04-27 13:56:33 -040017769 .byte 197,228,84,192 // vandps %ymm0,%ymm3,%ymm0
Mike Kleinf809fef2017-03-31 13:52:45 -040017770 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017771 .byte 196,226,125,24,13,199,42,0,0 // vbroadcastss 0x2ac7(%rip),%ymm1 # 6730 <_sk_callback_avx+0x3d5>
Mike Kleinf809fef2017-03-31 13:52:45 -040017772 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017773 .byte 196,226,125,24,13,190,42,0,0 // vbroadcastss 0x2abe(%rip),%ymm1 # 6734 <_sk_callback_avx+0x3d9>
Mike Klein308e6242017-04-27 13:56:33 -040017774 .byte 197,228,84,201 // vandps %ymm1,%ymm3,%ymm1
Mike Kleinf809fef2017-03-31 13:52:45 -040017775 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017776 .byte 196,226,125,24,21,177,42,0,0 // vbroadcastss 0x2ab1(%rip),%ymm2 # 6738 <_sk_callback_avx+0x3dd>
Mike Kleinf809fef2017-03-31 13:52:45 -040017777 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017778 .byte 196,226,125,24,21,168,42,0,0 // vbroadcastss 0x2aa8(%rip),%ymm2 # 673c <_sk_callback_avx+0x3e1>
Mike Klein308e6242017-04-27 13:56:33 -040017779 .byte 197,228,84,210 // vandps %ymm2,%ymm3,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040017780 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017781 .byte 196,98,125,24,5,155,42,0,0 // vbroadcastss 0x2a9b(%rip),%ymm8 # 6740 <_sk_callback_avx+0x3e5>
Mike Kleinfe560a82017-05-01 12:56:35 -040017782 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017783 .byte 196,98,125,24,5,145,42,0,0 // vbroadcastss 0x2a91(%rip),%ymm8 # 6744 <_sk_callback_avx+0x3e9>
Mike Klein308e6242017-04-27 13:56:33 -040017784 .byte 196,193,100,84,216 // vandps %ymm8,%ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040017785 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040017786 .byte 196,98,125,24,5,131,42,0,0 // vbroadcastss 0x2a83(%rip),%ymm8 # 6748 <_sk_callback_avx+0x3ed>
Mike Kleinfe560a82017-05-01 12:56:35 -040017787 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Kleinf809fef2017-03-31 13:52:45 -040017788 .byte 72,173 // lods %ds:(%rsi),%rax
17789 .byte 255,224 // jmpq *%rax
17790 .byte 65,137,200 // mov %ecx,%r8d
17791 .byte 65,128,224,7 // and $0x7,%r8b
17792 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
17793 .byte 65,254,200 // dec %r8b
17794 .byte 65,128,248,6 // cmp $0x6,%r8b
Brian Osman74fc5932017-05-22 19:25:36 +000017795 .byte 15,135,86,255,255,255 // ja 3c3c <_sk_load_4444_avx+0x14>
Mike Kleinf809fef2017-03-31 13:52:45 -040017796 .byte 69,15,182,192 // movzbl %r8b,%r8d
Brian Osman74fc5932017-05-22 19:25:36 +000017797 .byte 76,141,13,75,0,0,0 // lea 0x4b(%rip),%r9 # 3d3c <_sk_load_4444_avx+0x114>
Mike Kleinf809fef2017-03-31 13:52:45 -040017798 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
17799 .byte 76,1,200 // add %r9,%rax
17800 .byte 255,224 // jmpq *%rax
17801 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
17802 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
17803 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
17804 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
17805 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
17806 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
17807 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
17808 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Brian Osman74fc5932017-05-22 19:25:36 +000017809 .byte 233,2,255,255,255 // jmpq 3c3c <_sk_load_4444_avx+0x14>
Mike Kleinfe560a82017-05-01 12:56:35 -040017810 .byte 102,144 // xchg %ax,%ax
17811 .byte 242,255 // repnz (bad)
17812 .byte 255 // (bad)
17813 .byte 255 // (bad)
17814 .byte 234 // (bad)
17815 .byte 255 // (bad)
17816 .byte 255 // (bad)
17817 .byte 255,226 // jmpq *%rdx
Mike Kleinf809fef2017-03-31 13:52:45 -040017818 .byte 255 // (bad)
17819 .byte 255 // (bad)
17820 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040017821 .byte 218,255 // (bad)
17822 .byte 255 // (bad)
17823 .byte 255,210 // callq *%rdx
Mike Kleinf809fef2017-03-31 13:52:45 -040017824 .byte 255 // (bad)
17825 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040017826 .byte 255,202 // dec %edx
Mike Kleinf809fef2017-03-31 13:52:45 -040017827 .byte 255 // (bad)
17828 .byte 255 // (bad)
17829 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040017830 .byte 190 // .byte 0xbe
Mike Kleinf809fef2017-03-31 13:52:45 -040017831 .byte 255 // (bad)
17832 .byte 255 // (bad)
17833 .byte 255 // .byte 0xff
17834
Mike Klein21bd3e42017-04-06 16:32:29 -040017835HIDDEN _sk_gather_4444_avx
17836.globl _sk_gather_4444_avx
Mike Klein86714282017-04-13 17:37:38 -040017837FUNCTION(_sk_gather_4444_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040017838_sk_gather_4444_avx:
17839 .byte 85 // push %rbp
17840 .byte 65,87 // push %r15
17841 .byte 65,86 // push %r14
17842 .byte 65,84 // push %r12
17843 .byte 83 // push %rbx
17844 .byte 72,173 // lods %ds:(%rsi),%rax
17845 .byte 76,139,0 // mov (%rax),%r8
17846 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
17847 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
17848 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
17849 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
17850 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
17851 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
17852 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
17853 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
17854 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
17855 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
17856 .byte 65,137,193 // mov %eax,%r9d
17857 .byte 72,193,232,32 // shr $0x20,%rax
17858 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
17859 .byte 69,137,211 // mov %r10d,%r11d
17860 .byte 73,193,234,32 // shr $0x20,%r10
17861 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
17862 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
17863 .byte 65,137,222 // mov %ebx,%r14d
17864 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
17865 .byte 69,137,252 // mov %r15d,%r12d
17866 .byte 73,193,239,32 // shr $0x20,%r15
17867 .byte 72,193,235,32 // shr $0x20,%rbx
17868 .byte 65,15,183,28,88 // movzwl (%r8,%rbx,2),%ebx
17869 .byte 67,15,183,44,112 // movzwl (%r8,%r14,2),%ebp
17870 .byte 197,249,110,197 // vmovd %ebp,%xmm0
17871 .byte 197,249,196,195,1 // vpinsrw $0x1,%ebx,%xmm0,%xmm0
17872 .byte 67,15,183,28,96 // movzwl (%r8,%r12,2),%ebx
17873 .byte 197,249,196,195,2 // vpinsrw $0x2,%ebx,%xmm0,%xmm0
17874 .byte 67,15,183,28,120 // movzwl (%r8,%r15,2),%ebx
17875 .byte 197,249,196,195,3 // vpinsrw $0x3,%ebx,%xmm0,%xmm0
17876 .byte 67,15,183,44,88 // movzwl (%r8,%r11,2),%ebp
17877 .byte 197,249,196,197,4 // vpinsrw $0x4,%ebp,%xmm0,%xmm0
17878 .byte 67,15,183,44,80 // movzwl (%r8,%r10,2),%ebp
17879 .byte 197,249,196,197,5 // vpinsrw $0x5,%ebp,%xmm0,%xmm0
17880 .byte 67,15,183,44,72 // movzwl (%r8,%r9,2),%ebp
17881 .byte 197,249,196,197,6 // vpinsrw $0x6,%ebp,%xmm0,%xmm0
17882 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
17883 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
17884 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
17885 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
17886 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -040017887 .byte 196,227,125,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040017888 .byte 196,226,125,24,5,26,41,0,0 // vbroadcastss 0x291a(%rip),%ymm0 # 674c <_sk_callback_avx+0x3f1>
Mike Klein308e6242017-04-27 13:56:33 -040017889 .byte 197,228,84,192 // vandps %ymm0,%ymm3,%ymm0
Mike Klein21bd3e42017-04-06 16:32:29 -040017890 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017891 .byte 196,226,125,24,13,13,41,0,0 // vbroadcastss 0x290d(%rip),%ymm1 # 6750 <_sk_callback_avx+0x3f5>
Mike Klein21bd3e42017-04-06 16:32:29 -040017892 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040017893 .byte 196,226,125,24,13,4,41,0,0 // vbroadcastss 0x2904(%rip),%ymm1 # 6754 <_sk_callback_avx+0x3f9>
Mike Klein308e6242017-04-27 13:56:33 -040017894 .byte 197,228,84,201 // vandps %ymm1,%ymm3,%ymm1
Mike Klein21bd3e42017-04-06 16:32:29 -040017895 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017896 .byte 196,226,125,24,21,247,40,0,0 // vbroadcastss 0x28f7(%rip),%ymm2 # 6758 <_sk_callback_avx+0x3fd>
Mike Klein21bd3e42017-04-06 16:32:29 -040017897 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040017898 .byte 196,226,125,24,21,238,40,0,0 // vbroadcastss 0x28ee(%rip),%ymm2 # 675c <_sk_callback_avx+0x401>
Mike Klein308e6242017-04-27 13:56:33 -040017899 .byte 197,228,84,210 // vandps %ymm2,%ymm3,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040017900 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017901 .byte 196,98,125,24,5,225,40,0,0 // vbroadcastss 0x28e1(%rip),%ymm8 # 6760 <_sk_callback_avx+0x405>
Mike Kleinfe560a82017-05-01 12:56:35 -040017902 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Mike Klein8ca33562017-05-23 08:07:43 -040017903 .byte 196,98,125,24,5,215,40,0,0 // vbroadcastss 0x28d7(%rip),%ymm8 # 6764 <_sk_callback_avx+0x409>
Mike Klein308e6242017-04-27 13:56:33 -040017904 .byte 196,193,100,84,216 // vandps %ymm8,%ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040017905 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Klein8ca33562017-05-23 08:07:43 -040017906 .byte 196,98,125,24,5,201,40,0,0 // vbroadcastss 0x28c9(%rip),%ymm8 # 6768 <_sk_callback_avx+0x40d>
Mike Kleinfe560a82017-05-01 12:56:35 -040017907 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
Mike Klein21bd3e42017-04-06 16:32:29 -040017908 .byte 72,173 // lods %ds:(%rsi),%rax
17909 .byte 91 // pop %rbx
17910 .byte 65,92 // pop %r12
17911 .byte 65,94 // pop %r14
17912 .byte 65,95 // pop %r15
17913 .byte 93 // pop %rbp
17914 .byte 255,224 // jmpq *%rax
17915
Mike Kleinf809fef2017-03-31 13:52:45 -040017916HIDDEN _sk_store_4444_avx
17917.globl _sk_store_4444_avx
Mike Klein86714282017-04-13 17:37:38 -040017918FUNCTION(_sk_store_4444_avx)
Mike Kleinf809fef2017-03-31 13:52:45 -040017919_sk_store_4444_avx:
17920 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040017921 .byte 76,139,16 // mov (%rax),%r10
Mike Klein8ca33562017-05-23 08:07:43 -040017922 .byte 196,98,125,24,5,174,40,0,0 // vbroadcastss 0x28ae(%rip),%ymm8 # 676c <_sk_callback_avx+0x411>
Mike Kleinfe560a82017-05-01 12:56:35 -040017923 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleinf809fef2017-03-31 13:52:45 -040017924 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
17925 .byte 196,193,41,114,241,12 // vpslld $0xc,%xmm9,%xmm10
17926 .byte 196,67,125,25,201,1 // vextractf128 $0x1,%ymm9,%xmm9
17927 .byte 196,193,49,114,241,12 // vpslld $0xc,%xmm9,%xmm9
17928 .byte 196,67,45,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040017929 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Kleinf809fef2017-03-31 13:52:45 -040017930 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
17931 .byte 196,193,33,114,242,8 // vpslld $0x8,%xmm10,%xmm11
17932 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
17933 .byte 196,193,41,114,242,8 // vpslld $0x8,%xmm10,%xmm10
17934 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
17935 .byte 196,65,45,86,201 // vorpd %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040017936 .byte 196,65,108,89,208 // vmulps %ymm8,%ymm2,%ymm10
Mike Kleinf809fef2017-03-31 13:52:45 -040017937 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
17938 .byte 196,193,33,114,242,4 // vpslld $0x4,%xmm10,%xmm11
17939 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
17940 .byte 196,193,41,114,242,4 // vpslld $0x4,%xmm10,%xmm10
17941 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040017942 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleinf809fef2017-03-31 13:52:45 -040017943 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
17944 .byte 196,65,45,86,192 // vorpd %ymm8,%ymm10,%ymm8
17945 .byte 196,65,53,86,192 // vorpd %ymm8,%ymm9,%ymm8
17946 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
17947 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
17948 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000017949 .byte 117,10 // jne 3f57 <_sk_store_4444_avx+0xa7>
Mike Kleinfe560a82017-05-01 12:56:35 -040017950 .byte 196,65,122,127,4,122 // vmovdqu %xmm8,(%r10,%rdi,2)
Mike Kleinf809fef2017-03-31 13:52:45 -040017951 .byte 72,173 // lods %ds:(%rsi),%rax
17952 .byte 255,224 // jmpq *%rax
17953 .byte 65,137,200 // mov %ecx,%r8d
17954 .byte 65,128,224,7 // and $0x7,%r8b
17955 .byte 65,254,200 // dec %r8b
17956 .byte 65,128,248,6 // cmp $0x6,%r8b
Brian Osman74fc5932017-05-22 19:25:36 +000017957 .byte 119,236 // ja 3f53 <_sk_store_4444_avx+0xa3>
Mike Kleinfe560a82017-05-01 12:56:35 -040017958 .byte 69,15,182,192 // movzbl %r8b,%r8d
Brian Osman74fc5932017-05-22 19:25:36 +000017959 .byte 76,141,13,66,0,0,0 // lea 0x42(%rip),%r9 # 3fb4 <_sk_store_4444_avx+0x104>
Mike Kleinfe560a82017-05-01 12:56:35 -040017960 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
17961 .byte 76,1,200 // add %r9,%rax
Mike Kleinf809fef2017-03-31 13:52:45 -040017962 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040017963 .byte 196,67,121,21,68,122,12,6 // vpextrw $0x6,%xmm8,0xc(%r10,%rdi,2)
17964 .byte 196,67,121,21,68,122,10,5 // vpextrw $0x5,%xmm8,0xa(%r10,%rdi,2)
17965 .byte 196,67,121,21,68,122,8,4 // vpextrw $0x4,%xmm8,0x8(%r10,%rdi,2)
17966 .byte 196,67,121,21,68,122,6,3 // vpextrw $0x3,%xmm8,0x6(%r10,%rdi,2)
17967 .byte 196,67,121,21,68,122,4,2 // vpextrw $0x2,%xmm8,0x4(%r10,%rdi,2)
17968 .byte 196,67,121,21,68,122,2,1 // vpextrw $0x1,%xmm8,0x2(%r10,%rdi,2)
17969 .byte 196,67,121,21,4,122,0 // vpextrw $0x0,%xmm8,(%r10,%rdi,2)
Brian Osman74fc5932017-05-22 19:25:36 +000017970 .byte 235,159 // jmp 3f53 <_sk_store_4444_avx+0xa3>
Mike Kleinfe560a82017-05-01 12:56:35 -040017971 .byte 247,255 // idiv %edi
17972 .byte 255 // (bad)
17973 .byte 255 // (bad)
17974 .byte 239 // out %eax,(%dx)
17975 .byte 255 // (bad)
17976 .byte 255 // (bad)
17977 .byte 255,231 // jmpq *%rdi
Mike Kleinf809fef2017-03-31 13:52:45 -040017978 .byte 255 // (bad)
17979 .byte 255 // (bad)
17980 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040017981 .byte 223,255 // (bad)
17982 .byte 255 // (bad)
17983 .byte 255,215 // callq *%rdi
Mike Kleinf809fef2017-03-31 13:52:45 -040017984 .byte 255 // (bad)
17985 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040017986 .byte 255,207 // dec %edi
Mike Kleinf809fef2017-03-31 13:52:45 -040017987 .byte 255 // (bad)
17988 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040017989 .byte 255,199 // inc %edi
Mike Kleinf809fef2017-03-31 13:52:45 -040017990 .byte 255 // (bad)
17991 .byte 255 // (bad)
17992 .byte 255 // .byte 0xff
17993
Mike Klein7c4af542017-03-29 18:21:14 -040017994HIDDEN _sk_load_8888_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017995.globl _sk_load_8888_avx
Mike Klein86714282017-04-13 17:37:38 -040017996FUNCTION(_sk_load_8888_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017997_sk_load_8888_avx:
17998 .byte 72,173 // lods %ds:(%rsi),%rax
Brian Osman74fc5932017-05-22 19:25:36 +000017999 .byte 76,139,16 // mov (%rax),%r10
18000 .byte 72,133,201 // test %rcx,%rcx
18001 .byte 15,133,135,0,0,0 // jne 4065 <_sk_load_8888_avx+0x95>
18002 .byte 196,65,124,16,12,186 // vmovups (%r10,%rdi,4),%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040018003 .byte 197,124,40,21,244,40,0,0 // vmovaps 0x28f4(%rip),%ymm10 # 68e0 <_sk_callback_avx+0x585>
Brian Osman74fc5932017-05-22 19:25:36 +000018004 .byte 196,193,52,84,194 // vandps %ymm10,%ymm9,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040018005 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040018006 .byte 196,98,125,24,5,114,39,0,0 // vbroadcastss 0x2772(%rip),%ymm8 # 6770 <_sk_callback_avx+0x415>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018007 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
Brian Osman74fc5932017-05-22 19:25:36 +000018008 .byte 196,193,113,114,209,8 // vpsrld $0x8,%xmm9,%xmm1
18009 .byte 196,99,125,25,203,1 // vextractf128 $0x1,%ymm9,%xmm3
18010 .byte 197,233,114,211,8 // vpsrld $0x8,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040018011 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
18012 .byte 196,193,116,84,202 // vandps %ymm10,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040018013 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
18014 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
Brian Osman74fc5932017-05-22 19:25:36 +000018015 .byte 196,193,33,114,209,16 // vpsrld $0x10,%xmm9,%xmm11
18016 .byte 197,233,114,211,16 // vpsrld $0x10,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040018017 .byte 196,227,37,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm11,%ymm2
18018 .byte 196,193,108,84,210 // vandps %ymm10,%ymm2,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040018019 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
18020 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
Brian Osman74fc5932017-05-22 19:25:36 +000018021 .byte 196,193,49,114,209,24 // vpsrld $0x18,%xmm9,%xmm9
18022 .byte 197,225,114,211,24 // vpsrld $0x18,%xmm3,%xmm3
18023 .byte 196,227,53,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm9,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040018024 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
18025 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
18026 .byte 72,173 // lods %ds:(%rsi),%rax
18027 .byte 255,224 // jmpq *%rax
Brian Osman74fc5932017-05-22 19:25:36 +000018028 .byte 65,137,200 // mov %ecx,%r8d
18029 .byte 65,128,224,7 // and $0x7,%r8b
18030 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
18031 .byte 65,254,200 // dec %r8b
18032 .byte 65,128,248,6 // cmp $0x6,%r8b
18033 .byte 15,135,102,255,255,255 // ja 3fe4 <_sk_load_8888_avx+0x14>
18034 .byte 69,15,182,192 // movzbl %r8b,%r8d
18035 .byte 76,141,13,139,0,0,0 // lea 0x8b(%rip),%r9 # 4114 <_sk_load_8888_avx+0x144>
18036 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
18037 .byte 76,1,200 // add %r9,%rax
18038 .byte 255,224 // jmpq *%rax
18039 .byte 196,193,121,110,68,186,24 // vmovd 0x18(%r10,%rdi,4),%xmm0
18040 .byte 197,249,112,192,68 // vpshufd $0x44,%xmm0,%xmm0
18041 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
18042 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
18043 .byte 196,99,117,12,200,64 // vblendps $0x40,%ymm0,%ymm1,%ymm9
18044 .byte 196,99,125,25,200,1 // vextractf128 $0x1,%ymm9,%xmm0
18045 .byte 196,195,121,34,68,186,20,1 // vpinsrd $0x1,0x14(%r10,%rdi,4),%xmm0,%xmm0
18046 .byte 196,99,53,24,200,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm9
18047 .byte 196,99,125,25,200,1 // vextractf128 $0x1,%ymm9,%xmm0
18048 .byte 196,195,121,34,68,186,16,0 // vpinsrd $0x0,0x10(%r10,%rdi,4),%xmm0,%xmm0
18049 .byte 196,99,53,24,200,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm9
18050 .byte 196,195,49,34,68,186,12,3 // vpinsrd $0x3,0xc(%r10,%rdi,4),%xmm9,%xmm0
18051 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
18052 .byte 196,195,49,34,68,186,8,2 // vpinsrd $0x2,0x8(%r10,%rdi,4),%xmm9,%xmm0
18053 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
18054 .byte 196,195,49,34,68,186,4,1 // vpinsrd $0x1,0x4(%r10,%rdi,4),%xmm9,%xmm0
18055 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
18056 .byte 196,195,49,34,4,186,0 // vpinsrd $0x0,(%r10,%rdi,4),%xmm9,%xmm0
18057 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
18058 .byte 233,210,254,255,255 // jmpq 3fe4 <_sk_load_8888_avx+0x14>
18059 .byte 102,144 // xchg %ax,%ax
18060 .byte 236 // in (%dx),%al
18061 .byte 255 // (bad)
18062 .byte 255 // (bad)
18063 .byte 255 // (bad)
18064 .byte 222,255 // fdivrp %st,%st(7)
18065 .byte 255 // (bad)
18066 .byte 255,208 // callq *%rax
18067 .byte 255 // (bad)
18068 .byte 255 // (bad)
18069 .byte 255,194 // inc %edx
18070 .byte 255 // (bad)
18071 .byte 255 // (bad)
18072 .byte 255,174,255,255,255,154 // ljmp *-0x65000001(%rsi)
18073 .byte 255 // (bad)
18074 .byte 255 // (bad)
18075 .byte 255 // (bad)
18076 .byte 126,255 // jle 412d <_sk_load_8888_avx+0x15d>
18077 .byte 255 // (bad)
18078 .byte 255 // .byte 0xff
Mike Kleind7e06ae2017-03-29 16:33:06 -040018079
Mike Kleindec4ea82017-04-06 15:04:05 -040018080HIDDEN _sk_gather_8888_avx
18081.globl _sk_gather_8888_avx
Mike Klein86714282017-04-13 17:37:38 -040018082FUNCTION(_sk_gather_8888_avx)
Mike Kleindec4ea82017-04-06 15:04:05 -040018083_sk_gather_8888_avx:
18084 .byte 65,87 // push %r15
18085 .byte 65,86 // push %r14
18086 .byte 65,84 // push %r12
18087 .byte 83 // push %rbx
18088 .byte 72,173 // lods %ds:(%rsi),%rax
18089 .byte 76,139,0 // mov (%rax),%r8
18090 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
18091 .byte 197,249,110,80,16 // vmovd 0x10(%rax),%xmm2
18092 .byte 197,249,112,210,0 // vpshufd $0x0,%xmm2,%xmm2
18093 .byte 196,226,105,64,217 // vpmulld %xmm1,%xmm2,%xmm3
18094 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
18095 .byte 196,226,105,64,201 // vpmulld %xmm1,%xmm2,%xmm1
18096 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
18097 .byte 196,227,125,25,194,1 // vextractf128 $0x1,%ymm0,%xmm2
18098 .byte 197,241,254,202 // vpaddd %xmm2,%xmm1,%xmm1
18099 .byte 196,225,249,126,200 // vmovq %xmm1,%rax
18100 .byte 65,137,193 // mov %eax,%r9d
18101 .byte 72,193,232,32 // shr $0x20,%rax
18102 .byte 196,195,249,22,202,1 // vpextrq $0x1,%xmm1,%r10
18103 .byte 69,137,211 // mov %r10d,%r11d
18104 .byte 73,193,234,32 // shr $0x20,%r10
18105 .byte 197,225,254,192 // vpaddd %xmm0,%xmm3,%xmm0
18106 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
18107 .byte 65,137,222 // mov %ebx,%r14d
18108 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
18109 .byte 69,137,252 // mov %r15d,%r12d
18110 .byte 72,193,235,32 // shr $0x20,%rbx
18111 .byte 73,193,239,32 // shr $0x20,%r15
18112 .byte 196,129,121,110,4,176 // vmovd (%r8,%r14,4),%xmm0
18113 .byte 196,195,121,34,4,152,1 // vpinsrd $0x1,(%r8,%rbx,4),%xmm0,%xmm0
18114 .byte 196,131,121,34,4,160,2 // vpinsrd $0x2,(%r8,%r12,4),%xmm0,%xmm0
18115 .byte 196,3,121,34,4,184,3 // vpinsrd $0x3,(%r8,%r15,4),%xmm0,%xmm8
18116 .byte 196,129,121,110,4,136 // vmovd (%r8,%r9,4),%xmm0
18117 .byte 196,195,121,34,4,128,1 // vpinsrd $0x1,(%r8,%rax,4),%xmm0,%xmm0
18118 .byte 196,131,121,34,4,152,2 // vpinsrd $0x2,(%r8,%r11,4),%xmm0,%xmm0
18119 .byte 196,131,121,34,28,144,3 // vpinsrd $0x3,(%r8,%r10,4),%xmm0,%xmm3
18120 .byte 196,227,61,24,195,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040018121 .byte 197,124,40,21,30,39,0,0 // vmovaps 0x271e(%rip),%ymm10 # 6900 <_sk_callback_avx+0x5a5>
Mike Klein0aa742f2017-04-27 13:36:57 -040018122 .byte 196,193,124,84,194 // vandps %ymm10,%ymm0,%ymm0
Mike Kleindec4ea82017-04-06 15:04:05 -040018123 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040018124 .byte 196,98,125,24,13,128,37,0,0 // vbroadcastss 0x2580(%rip),%ymm9 # 6774 <_sk_callback_avx+0x419>
Mike Kleindec4ea82017-04-06 15:04:05 -040018125 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
Mike Klein0aa742f2017-04-27 13:36:57 -040018126 .byte 196,193,113,114,208,8 // vpsrld $0x8,%xmm8,%xmm1
18127 .byte 197,233,114,211,8 // vpsrld $0x8,%xmm3,%xmm2
18128 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
18129 .byte 196,193,116,84,202 // vandps %ymm10,%ymm1,%ymm1
Mike Kleindec4ea82017-04-06 15:04:05 -040018130 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
18131 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
Mike Klein0aa742f2017-04-27 13:36:57 -040018132 .byte 196,193,33,114,208,16 // vpsrld $0x10,%xmm8,%xmm11
Mike Kleindec4ea82017-04-06 15:04:05 -040018133 .byte 197,233,114,211,16 // vpsrld $0x10,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040018134 .byte 196,227,37,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm11,%ymm2
18135 .byte 196,193,108,84,210 // vandps %ymm10,%ymm2,%ymm2
Mike Kleindec4ea82017-04-06 15:04:05 -040018136 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
18137 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
18138 .byte 196,193,57,114,208,24 // vpsrld $0x18,%xmm8,%xmm8
18139 .byte 197,225,114,211,24 // vpsrld $0x18,%xmm3,%xmm3
18140 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
18141 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
18142 .byte 196,193,100,89,217 // vmulps %ymm9,%ymm3,%ymm3
18143 .byte 72,173 // lods %ds:(%rsi),%rax
18144 .byte 91 // pop %rbx
18145 .byte 65,92 // pop %r12
18146 .byte 65,94 // pop %r14
18147 .byte 65,95 // pop %r15
18148 .byte 255,224 // jmpq *%rax
18149
Mike Klein7c4af542017-03-29 18:21:14 -040018150HIDDEN _sk_store_8888_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040018151.globl _sk_store_8888_avx
Mike Klein86714282017-04-13 17:37:38 -040018152FUNCTION(_sk_store_8888_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018153_sk_store_8888_avx:
18154 .byte 72,173 // lods %ds:(%rsi),%rax
Brian Osman74fc5932017-05-22 19:25:36 +000018155 .byte 76,139,16 // mov (%rax),%r10
Mike Klein8ca33562017-05-23 08:07:43 -040018156 .byte 196,98,125,24,5,14,37,0,0 // vbroadcastss 0x250e(%rip),%ymm8 # 6778 <_sk_callback_avx+0x41d>
Mike Kleinfe560a82017-05-01 12:56:35 -040018157 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040018158 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040018159 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040018160 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
18161 .byte 196,193,33,114,242,8 // vpslld $0x8,%xmm10,%xmm11
18162 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
18163 .byte 196,193,41,114,242,8 // vpslld $0x8,%xmm10,%xmm10
18164 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
18165 .byte 196,65,45,86,201 // vorpd %ymm9,%ymm10,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040018166 .byte 196,65,108,89,208 // vmulps %ymm8,%ymm2,%ymm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040018167 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
18168 .byte 196,193,33,114,242,16 // vpslld $0x10,%xmm10,%xmm11
18169 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
18170 .byte 196,193,41,114,242,16 // vpslld $0x10,%xmm10,%xmm10
18171 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
Mike Kleinfe560a82017-05-01 12:56:35 -040018172 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040018173 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
18174 .byte 196,193,33,114,240,24 // vpslld $0x18,%xmm8,%xmm11
18175 .byte 196,67,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm8
18176 .byte 196,193,57,114,240,24 // vpslld $0x18,%xmm8,%xmm8
18177 .byte 196,67,37,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm11,%ymm8
18178 .byte 196,65,45,86,192 // vorpd %ymm8,%ymm10,%ymm8
18179 .byte 196,65,53,86,192 // vorpd %ymm8,%ymm9,%ymm8
Brian Osman74fc5932017-05-22 19:25:36 +000018180 .byte 72,133,201 // test %rcx,%rcx
18181 .byte 117,10 // jne 42f8 <_sk_store_8888_avx+0x9c>
18182 .byte 196,65,124,17,4,186 // vmovups %ymm8,(%r10,%rdi,4)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018183 .byte 72,173 // lods %ds:(%rsi),%rax
18184 .byte 255,224 // jmpq *%rax
Brian Osman74fc5932017-05-22 19:25:36 +000018185 .byte 65,137,200 // mov %ecx,%r8d
18186 .byte 65,128,224,7 // and $0x7,%r8b
18187 .byte 65,254,200 // dec %r8b
18188 .byte 65,128,248,6 // cmp $0x6,%r8b
18189 .byte 119,236 // ja 42f4 <_sk_store_8888_avx+0x98>
18190 .byte 69,15,182,192 // movzbl %r8b,%r8d
18191 .byte 76,141,13,85,0,0,0 // lea 0x55(%rip),%r9 # 4368 <_sk_store_8888_avx+0x10c>
18192 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
18193 .byte 76,1,200 // add %r9,%rax
18194 .byte 255,224 // jmpq *%rax
18195 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
18196 .byte 196,67,121,22,76,186,24,2 // vpextrd $0x2,%xmm9,0x18(%r10,%rdi,4)
18197 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
18198 .byte 196,67,121,22,76,186,20,1 // vpextrd $0x1,%xmm9,0x14(%r10,%rdi,4)
18199 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
18200 .byte 196,65,122,17,76,186,16 // vmovss %xmm9,0x10(%r10,%rdi,4)
18201 .byte 196,67,121,22,68,186,12,3 // vpextrd $0x3,%xmm8,0xc(%r10,%rdi,4)
18202 .byte 196,67,121,22,68,186,8,2 // vpextrd $0x2,%xmm8,0x8(%r10,%rdi,4)
18203 .byte 196,67,121,22,68,186,4,1 // vpextrd $0x1,%xmm8,0x4(%r10,%rdi,4)
18204 .byte 196,65,121,126,4,186 // vmovd %xmm8,(%r10,%rdi,4)
18205 .byte 235,143 // jmp 42f4 <_sk_store_8888_avx+0x98>
18206 .byte 15,31,0 // nopl (%rax)
18207 .byte 245 // cmc
18208 .byte 255 // (bad)
18209 .byte 255 // (bad)
18210 .byte 255 // (bad)
18211 .byte 237 // in (%dx),%eax
18212 .byte 255 // (bad)
18213 .byte 255 // (bad)
18214 .byte 255,229 // jmpq *%rbp
18215 .byte 255 // (bad)
18216 .byte 255 // (bad)
18217 .byte 255 // (bad)
18218 .byte 221,255 // (bad)
18219 .byte 255 // (bad)
18220 .byte 255,208 // callq *%rax
18221 .byte 255 // (bad)
18222 .byte 255 // (bad)
18223 .byte 255,194 // inc %edx
18224 .byte 255 // (bad)
18225 .byte 255 // (bad)
18226 .byte 255 // .byte 0xff
18227 .byte 180,255 // mov $0xff,%ah
18228 .byte 255 // (bad)
18229 .byte 255 // .byte 0xff
Mike Kleind7e06ae2017-03-29 16:33:06 -040018230
Mike Klein7c4af542017-03-29 18:21:14 -040018231HIDDEN _sk_load_f16_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040018232.globl _sk_load_f16_avx
Mike Klein86714282017-04-13 17:37:38 -040018233FUNCTION(_sk_load_f16_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018234_sk_load_f16_avx:
Mike Kleinb4bbc642017-04-27 08:59:55 -040018235 .byte 72,131,236,24 // sub $0x18,%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040018236 .byte 72,173 // lods %ds:(%rsi),%rax
18237 .byte 72,139,0 // mov (%rax),%rax
18238 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinb4bbc642017-04-27 08:59:55 -040018239 .byte 197,252,17,124,36,224 // vmovups %ymm7,-0x20(%rsp)
18240 .byte 197,252,17,116,36,192 // vmovups %ymm6,-0x40(%rsp)
18241 .byte 197,252,17,108,36,160 // vmovups %ymm5,-0x60(%rsp)
18242 .byte 197,254,127,100,36,128 // vmovdqu %ymm4,-0x80(%rsp)
Brian Osman74fc5932017-05-22 19:25:36 +000018243 .byte 15,133,141,2,0,0 // jne 463b <_sk_load_f16_avx+0x2b7>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018244 .byte 197,121,16,4,248 // vmovupd (%rax,%rdi,8),%xmm8
18245 .byte 197,249,16,84,248,16 // vmovupd 0x10(%rax,%rdi,8),%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018246 .byte 197,249,16,76,248,32 // vmovupd 0x20(%rax,%rdi,8),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040018247 .byte 197,122,111,76,248,48 // vmovdqu 0x30(%rax,%rdi,8),%xmm9
18248 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
18249 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018250 .byte 196,193,113,97,217 // vpunpcklwd %xmm9,%xmm1,%xmm3
18251 .byte 196,193,113,105,201 // vpunpckhwd %xmm9,%xmm1,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040018252 .byte 197,121,97,250 // vpunpcklwd %xmm2,%xmm0,%xmm15
Mike Klein114e6b32017-04-03 22:21:15 -040018253 .byte 197,121,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040018254 .byte 197,225,97,209 // vpunpcklwd %xmm1,%xmm3,%xmm2
18255 .byte 197,97,105,201 // vpunpckhwd %xmm1,%xmm3,%xmm9
18256 .byte 197,129,108,194 // vpunpcklqdq %xmm2,%xmm15,%xmm0
18257 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
18258 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040018259 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
18260 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040018261 .byte 196,98,125,24,37,117,35,0,0 // vbroadcastss 0x2375(%rip),%ymm12 # 677c <_sk_callback_avx+0x421>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018262 .byte 196,193,124,84,204 // vandps %ymm12,%ymm0,%ymm1
Mike Kleind0ce1482017-04-19 17:19:30 -040018263 .byte 197,252,87,193 // vxorps %ymm1,%ymm0,%ymm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040018264 .byte 196,195,125,25,198,1 // vextractf128 $0x1,%ymm0,%xmm14
Mike Klein8ca33562017-05-23 08:07:43 -040018265 .byte 196,98,121,24,29,97,35,0,0 // vbroadcastss 0x2361(%rip),%xmm11 # 6780 <_sk_callback_avx+0x425>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018266 .byte 196,193,8,87,219 // vxorps %xmm11,%xmm14,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040018267 .byte 196,98,121,24,45,87,35,0,0 // vbroadcastss 0x2357(%rip),%xmm13 # 6784 <_sk_callback_avx+0x429>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018268 .byte 197,145,102,219 // vpcmpgtd %xmm3,%xmm13,%xmm3
18269 .byte 196,65,120,87,211 // vxorps %xmm11,%xmm0,%xmm10
18270 .byte 196,65,17,102,210 // vpcmpgtd %xmm10,%xmm13,%xmm10
18271 .byte 196,99,45,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm10,%ymm10
18272 .byte 197,225,114,241,16 // vpslld $0x10,%xmm1,%xmm3
18273 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040018274 .byte 197,241,114,241,16 // vpslld $0x10,%xmm1,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040018275 .byte 196,227,101,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm3,%ymm1
Mike Kleind0ce1482017-04-19 17:19:30 -040018276 .byte 197,249,114,240,13 // vpslld $0xd,%xmm0,%xmm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040018277 .byte 196,193,97,114,246,13 // vpslld $0xd,%xmm14,%xmm3
18278 .byte 196,227,125,24,195,1 // vinsertf128 $0x1,%xmm3,%ymm0,%ymm0
18279 .byte 197,252,86,193 // vorps %ymm1,%ymm0,%ymm0
18280 .byte 196,227,125,25,193,1 // vextractf128 $0x1,%ymm0,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040018281 .byte 196,226,121,24,29,13,35,0,0 // vbroadcastss 0x230d(%rip),%xmm3 # 6788 <_sk_callback_avx+0x42d>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018282 .byte 197,241,254,203 // vpaddd %xmm3,%xmm1,%xmm1
18283 .byte 197,249,254,195 // vpaddd %xmm3,%xmm0,%xmm0
18284 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
18285 .byte 196,65,12,87,246 // vxorps %ymm14,%ymm14,%ymm14
18286 .byte 196,195,125,74,198,160 // vblendvps %ymm10,%ymm14,%ymm0,%ymm0
18287 .byte 197,129,109,202 // vpunpckhqdq %xmm2,%xmm15,%xmm1
18288 .byte 197,217,239,228 // vpxor %xmm4,%xmm4,%xmm4
18289 .byte 197,241,105,212 // vpunpckhwd %xmm4,%xmm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018290 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
18291 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040018292 .byte 196,193,116,84,212 // vandps %ymm12,%ymm1,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018293 .byte 197,244,87,202 // vxorps %ymm2,%ymm1,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040018294 .byte 196,195,125,25,202,1 // vextractf128 $0x1,%ymm1,%xmm10
18295 .byte 196,193,40,87,251 // vxorps %xmm11,%xmm10,%xmm7
18296 .byte 197,145,102,255 // vpcmpgtd %xmm7,%xmm13,%xmm7
18297 .byte 196,193,112,87,243 // vxorps %xmm11,%xmm1,%xmm6
18298 .byte 197,145,102,246 // vpcmpgtd %xmm6,%xmm13,%xmm6
18299 .byte 196,227,77,24,247,1 // vinsertf128 $0x1,%xmm7,%ymm6,%ymm6
18300 .byte 197,193,114,242,16 // vpslld $0x10,%xmm2,%xmm7
18301 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018302 .byte 197,233,114,242,16 // vpslld $0x10,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040018303 .byte 196,227,69,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm7,%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040018304 .byte 197,241,114,241,13 // vpslld $0xd,%xmm1,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040018305 .byte 196,193,65,114,242,13 // vpslld $0xd,%xmm10,%xmm7
18306 .byte 196,227,117,24,207,1 // vinsertf128 $0x1,%xmm7,%ymm1,%ymm1
18307 .byte 197,244,86,202 // vorps %ymm2,%ymm1,%ymm1
18308 .byte 196,227,125,25,202,1 // vextractf128 $0x1,%ymm1,%xmm2
18309 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
18310 .byte 197,241,254,203 // vpaddd %xmm3,%xmm1,%xmm1
18311 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
18312 .byte 196,195,117,74,206,96 // vblendvps %ymm6,%ymm14,%ymm1,%ymm1
18313 .byte 196,193,57,108,209 // vpunpcklqdq %xmm9,%xmm8,%xmm2
18314 .byte 197,233,105,244 // vpunpckhwd %xmm4,%xmm2,%xmm6
18315 .byte 196,65,41,239,210 // vpxor %xmm10,%xmm10,%xmm10
Mike Kleind0ce1482017-04-19 17:19:30 -040018316 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
18317 .byte 196,227,109,24,214,1 // vinsertf128 $0x1,%xmm6,%ymm2,%ymm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040018318 .byte 196,193,108,84,244 // vandps %ymm12,%ymm2,%ymm6
Mike Klein097d0932017-04-20 09:11:53 -040018319 .byte 197,236,87,214 // vxorps %ymm6,%ymm2,%ymm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040018320 .byte 196,227,125,25,215,1 // vextractf128 $0x1,%ymm2,%xmm7
18321 .byte 196,193,64,87,235 // vxorps %xmm11,%xmm7,%xmm5
18322 .byte 197,145,102,237 // vpcmpgtd %xmm5,%xmm13,%xmm5
18323 .byte 196,193,104,87,227 // vxorps %xmm11,%xmm2,%xmm4
18324 .byte 197,145,102,228 // vpcmpgtd %xmm4,%xmm13,%xmm4
18325 .byte 196,227,93,24,229,1 // vinsertf128 $0x1,%xmm5,%ymm4,%ymm4
18326 .byte 197,209,114,246,16 // vpslld $0x10,%xmm6,%xmm5
18327 .byte 196,227,125,25,246,1 // vextractf128 $0x1,%ymm6,%xmm6
Mike Klein097d0932017-04-20 09:11:53 -040018328 .byte 197,201,114,246,16 // vpslld $0x10,%xmm6,%xmm6
Mike Kleinb4bbc642017-04-27 08:59:55 -040018329 .byte 196,227,85,24,238,1 // vinsertf128 $0x1,%xmm6,%ymm5,%ymm5
Mike Klein097d0932017-04-20 09:11:53 -040018330 .byte 197,233,114,242,13 // vpslld $0xd,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040018331 .byte 197,201,114,247,13 // vpslld $0xd,%xmm7,%xmm6
18332 .byte 196,227,109,24,214,1 // vinsertf128 $0x1,%xmm6,%ymm2,%ymm2
18333 .byte 197,236,86,213 // vorps %ymm5,%ymm2,%ymm2
18334 .byte 196,227,125,25,213,1 // vextractf128 $0x1,%ymm2,%xmm5
18335 .byte 197,209,254,235 // vpaddd %xmm3,%xmm5,%xmm5
18336 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
18337 .byte 196,227,109,24,213,1 // vinsertf128 $0x1,%xmm5,%ymm2,%ymm2
18338 .byte 196,195,109,74,214,64 // vblendvps %ymm4,%ymm14,%ymm2,%ymm2
18339 .byte 196,193,57,109,225 // vpunpckhqdq %xmm9,%xmm8,%xmm4
18340 .byte 196,193,89,105,234 // vpunpckhwd %xmm10,%xmm4,%xmm5
18341 .byte 196,226,121,51,228 // vpmovzxwd %xmm4,%xmm4
18342 .byte 196,227,93,24,229,1 // vinsertf128 $0x1,%xmm5,%ymm4,%ymm4
18343 .byte 196,193,92,84,236 // vandps %ymm12,%ymm4,%ymm5
18344 .byte 197,220,87,229 // vxorps %ymm5,%ymm4,%ymm4
18345 .byte 196,227,125,25,230,1 // vextractf128 $0x1,%ymm4,%xmm6
18346 .byte 196,193,72,87,251 // vxorps %xmm11,%xmm6,%xmm7
18347 .byte 197,17,102,199 // vpcmpgtd %xmm7,%xmm13,%xmm8
18348 .byte 196,193,88,87,251 // vxorps %xmm11,%xmm4,%xmm7
18349 .byte 197,145,102,255 // vpcmpgtd %xmm7,%xmm13,%xmm7
18350 .byte 196,195,69,24,248,1 // vinsertf128 $0x1,%xmm8,%ymm7,%ymm7
18351 .byte 197,185,114,245,16 // vpslld $0x10,%xmm5,%xmm8
18352 .byte 196,227,125,25,237,1 // vextractf128 $0x1,%ymm5,%xmm5
18353 .byte 197,209,114,245,16 // vpslld $0x10,%xmm5,%xmm5
18354 .byte 196,227,61,24,237,1 // vinsertf128 $0x1,%xmm5,%ymm8,%ymm5
18355 .byte 197,217,114,244,13 // vpslld $0xd,%xmm4,%xmm4
18356 .byte 197,201,114,246,13 // vpslld $0xd,%xmm6,%xmm6
18357 .byte 196,227,93,24,230,1 // vinsertf128 $0x1,%xmm6,%ymm4,%ymm4
18358 .byte 197,220,86,229 // vorps %ymm5,%ymm4,%ymm4
18359 .byte 196,227,125,25,229,1 // vextractf128 $0x1,%ymm4,%xmm5
18360 .byte 197,209,254,235 // vpaddd %xmm3,%xmm5,%xmm5
18361 .byte 197,217,254,219 // vpaddd %xmm3,%xmm4,%xmm3
18362 .byte 196,227,101,24,221,1 // vinsertf128 $0x1,%xmm5,%ymm3,%ymm3
18363 .byte 196,195,101,74,222,112 // vblendvps %ymm7,%ymm14,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040018364 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb4bbc642017-04-27 08:59:55 -040018365 .byte 197,252,16,100,36,128 // vmovups -0x80(%rsp),%ymm4
18366 .byte 197,252,16,108,36,160 // vmovups -0x60(%rsp),%ymm5
18367 .byte 197,252,16,116,36,192 // vmovups -0x40(%rsp),%ymm6
18368 .byte 197,252,16,124,36,224 // vmovups -0x20(%rsp),%ymm7
18369 .byte 72,131,196,24 // add $0x18,%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040018370 .byte 255,224 // jmpq *%rax
18371 .byte 197,123,16,4,248 // vmovsd (%rax,%rdi,8),%xmm8
18372 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
18373 .byte 72,131,249,1 // cmp $0x1,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018374 .byte 116,79 // je 469a <_sk_load_f16_avx+0x316>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018375 .byte 197,57,22,68,248,8 // vmovhpd 0x8(%rax,%rdi,8),%xmm8,%xmm8
18376 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018377 .byte 114,67 // jb 469a <_sk_load_f16_avx+0x316>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018378 .byte 197,251,16,84,248,16 // vmovsd 0x10(%rax,%rdi,8),%xmm2
18379 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018380 .byte 116,68 // je 46a7 <_sk_load_f16_avx+0x323>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018381 .byte 197,233,22,84,248,24 // vmovhpd 0x18(%rax,%rdi,8),%xmm2,%xmm2
18382 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018383 .byte 114,56 // jb 46a7 <_sk_load_f16_avx+0x323>
Mike Kleind0ce1482017-04-19 17:19:30 -040018384 .byte 197,251,16,76,248,32 // vmovsd 0x20(%rax,%rdi,8),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040018385 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018386 .byte 15,132,70,253,255,255 // je 43c5 <_sk_load_f16_avx+0x41>
Mike Kleind0ce1482017-04-19 17:19:30 -040018387 .byte 197,241,22,76,248,40 // vmovhpd 0x28(%rax,%rdi,8),%xmm1,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040018388 .byte 72,131,249,7 // cmp $0x7,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018389 .byte 15,130,54,253,255,255 // jb 43c5 <_sk_load_f16_avx+0x41>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018390 .byte 197,122,126,76,248,48 // vmovq 0x30(%rax,%rdi,8),%xmm9
Brian Osman74fc5932017-05-22 19:25:36 +000018391 .byte 233,43,253,255,255 // jmpq 43c5 <_sk_load_f16_avx+0x41>
Mike Kleind0ce1482017-04-19 17:19:30 -040018392 .byte 197,241,87,201 // vxorpd %xmm1,%xmm1,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040018393 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Brian Osman74fc5932017-05-22 19:25:36 +000018394 .byte 233,30,253,255,255 // jmpq 43c5 <_sk_load_f16_avx+0x41>
Mike Kleind0ce1482017-04-19 17:19:30 -040018395 .byte 197,241,87,201 // vxorpd %xmm1,%xmm1,%xmm1
Brian Osman74fc5932017-05-22 19:25:36 +000018396 .byte 233,21,253,255,255 // jmpq 43c5 <_sk_load_f16_avx+0x41>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018397
Mike Klein5f055f02017-04-06 20:02:11 -040018398HIDDEN _sk_gather_f16_avx
18399.globl _sk_gather_f16_avx
Mike Klein86714282017-04-13 17:37:38 -040018400FUNCTION(_sk_gather_f16_avx)
Mike Klein5f055f02017-04-06 20:02:11 -040018401_sk_gather_f16_avx:
18402 .byte 65,87 // push %r15
18403 .byte 65,86 // push %r14
18404 .byte 65,84 // push %r12
18405 .byte 83 // push %rbx
Mike Kleind0ce1482017-04-19 17:19:30 -040018406 .byte 72,131,236,24 // sub $0x18,%rsp
18407 .byte 197,252,17,124,36,224 // vmovups %ymm7,-0x20(%rsp)
18408 .byte 197,252,17,116,36,192 // vmovups %ymm6,-0x40(%rsp)
18409 .byte 197,252,17,108,36,160 // vmovups %ymm5,-0x60(%rsp)
Mike Kleinb4bbc642017-04-27 08:59:55 -040018410 .byte 197,254,127,100,36,128 // vmovdqu %ymm4,-0x80(%rsp)
Mike Klein5f055f02017-04-06 20:02:11 -040018411 .byte 72,173 // lods %ds:(%rsi),%rax
18412 .byte 76,139,0 // mov (%rax),%r8
18413 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
18414 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
18415 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
18416 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
18417 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
18418 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
18419 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
18420 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
18421 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
18422 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
18423 .byte 65,137,193 // mov %eax,%r9d
18424 .byte 72,193,232,32 // shr $0x20,%rax
18425 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
18426 .byte 69,137,211 // mov %r10d,%r11d
18427 .byte 73,193,234,32 // shr $0x20,%r10
18428 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
18429 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
18430 .byte 65,137,222 // mov %ebx,%r14d
18431 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
18432 .byte 69,137,252 // mov %r15d,%r12d
18433 .byte 73,193,239,32 // shr $0x20,%r15
18434 .byte 72,193,235,32 // shr $0x20,%rbx
18435 .byte 196,193,122,126,4,216 // vmovq (%r8,%rbx,8),%xmm0
18436 .byte 196,129,122,126,12,240 // vmovq (%r8,%r14,8),%xmm1
18437 .byte 197,113,108,200 // vpunpcklqdq %xmm0,%xmm1,%xmm9
18438 .byte 196,129,122,126,12,248 // vmovq (%r8,%r15,8),%xmm1
18439 .byte 196,129,122,126,20,224 // vmovq (%r8,%r12,8),%xmm2
18440 .byte 197,233,108,201 // vpunpcklqdq %xmm1,%xmm2,%xmm1
18441 .byte 196,129,122,126,20,208 // vmovq (%r8,%r10,8),%xmm2
18442 .byte 196,129,122,126,28,216 // vmovq (%r8,%r11,8),%xmm3
18443 .byte 197,97,108,210 // vpunpcklqdq %xmm2,%xmm3,%xmm10
18444 .byte 196,65,122,126,4,192 // vmovq (%r8,%rax,8),%xmm8
18445 .byte 196,129,122,126,28,200 // vmovq (%r8,%r9,8),%xmm3
18446 .byte 196,193,97,108,216 // vpunpcklqdq %xmm8,%xmm3,%xmm3
18447 .byte 197,177,97,193 // vpunpcklwd %xmm1,%xmm9,%xmm0
18448 .byte 197,177,105,201 // vpunpckhwd %xmm1,%xmm9,%xmm1
18449 .byte 197,169,97,211 // vpunpcklwd %xmm3,%xmm10,%xmm2
18450 .byte 197,169,105,219 // vpunpckhwd %xmm3,%xmm10,%xmm3
Mike Kleinb4bbc642017-04-27 08:59:55 -040018451 .byte 197,121,97,249 // vpunpcklwd %xmm1,%xmm0,%xmm15
Mike Klein5f055f02017-04-06 20:02:11 -040018452 .byte 197,121,105,193 // vpunpckhwd %xmm1,%xmm0,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040018453 .byte 197,233,97,203 // vpunpcklwd %xmm3,%xmm2,%xmm1
18454 .byte 197,105,105,203 // vpunpckhwd %xmm3,%xmm2,%xmm9
18455 .byte 197,129,108,193 // vpunpcklqdq %xmm1,%xmm15,%xmm0
18456 .byte 197,233,239,210 // vpxor %xmm2,%xmm2,%xmm2
18457 .byte 197,249,105,210 // vpunpckhwd %xmm2,%xmm0,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018458 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
18459 .byte 196,227,125,24,194,1 // vinsertf128 $0x1,%xmm2,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040018460 .byte 196,98,125,24,37,209,31,0,0 // vbroadcastss 0x1fd1(%rip),%ymm12 # 678c <_sk_callback_avx+0x431>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018461 .byte 196,193,124,84,212 // vandps %ymm12,%ymm0,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018462 .byte 197,252,87,194 // vxorps %ymm2,%ymm0,%ymm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040018463 .byte 196,195,125,25,198,1 // vextractf128 $0x1,%ymm0,%xmm14
Mike Klein8ca33562017-05-23 08:07:43 -040018464 .byte 196,98,121,24,29,189,31,0,0 // vbroadcastss 0x1fbd(%rip),%xmm11 # 6790 <_sk_callback_avx+0x435>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018465 .byte 196,193,8,87,219 // vxorps %xmm11,%xmm14,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040018466 .byte 196,98,121,24,45,179,31,0,0 // vbroadcastss 0x1fb3(%rip),%xmm13 # 6794 <_sk_callback_avx+0x439>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018467 .byte 197,145,102,219 // vpcmpgtd %xmm3,%xmm13,%xmm3
18468 .byte 196,65,120,87,211 // vxorps %xmm11,%xmm0,%xmm10
18469 .byte 196,65,17,102,210 // vpcmpgtd %xmm10,%xmm13,%xmm10
18470 .byte 196,99,45,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm10,%ymm10
18471 .byte 197,225,114,242,16 // vpslld $0x10,%xmm2,%xmm3
18472 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018473 .byte 197,233,114,242,16 // vpslld $0x10,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040018474 .byte 196,227,101,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm3,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018475 .byte 197,249,114,240,13 // vpslld $0xd,%xmm0,%xmm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040018476 .byte 196,193,97,114,246,13 // vpslld $0xd,%xmm14,%xmm3
18477 .byte 196,227,125,24,195,1 // vinsertf128 $0x1,%xmm3,%ymm0,%ymm0
18478 .byte 197,252,86,194 // vorps %ymm2,%ymm0,%ymm0
18479 .byte 196,227,125,25,194,1 // vextractf128 $0x1,%ymm0,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040018480 .byte 196,226,121,24,29,105,31,0,0 // vbroadcastss 0x1f69(%rip),%xmm3 # 6798 <_sk_callback_avx+0x43d>
Mike Kleind0ce1482017-04-19 17:19:30 -040018481 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040018482 .byte 197,249,254,195 // vpaddd %xmm3,%xmm0,%xmm0
18483 .byte 196,227,125,24,194,1 // vinsertf128 $0x1,%xmm2,%ymm0,%ymm0
18484 .byte 196,65,12,87,246 // vxorps %ymm14,%ymm14,%ymm14
18485 .byte 196,195,125,74,198,160 // vblendvps %ymm10,%ymm14,%ymm0,%ymm0
18486 .byte 197,129,109,201 // vpunpckhqdq %xmm1,%xmm15,%xmm1
18487 .byte 197,217,239,228 // vpxor %xmm4,%xmm4,%xmm4
18488 .byte 197,241,105,212 // vpunpckhwd %xmm4,%xmm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018489 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
18490 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040018491 .byte 196,193,116,84,212 // vandps %ymm12,%ymm1,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018492 .byte 197,244,87,202 // vxorps %ymm2,%ymm1,%ymm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040018493 .byte 196,195,125,25,202,1 // vextractf128 $0x1,%ymm1,%xmm10
18494 .byte 196,193,40,87,251 // vxorps %xmm11,%xmm10,%xmm7
18495 .byte 197,145,102,255 // vpcmpgtd %xmm7,%xmm13,%xmm7
18496 .byte 196,193,112,87,243 // vxorps %xmm11,%xmm1,%xmm6
18497 .byte 197,145,102,246 // vpcmpgtd %xmm6,%xmm13,%xmm6
18498 .byte 196,227,77,24,247,1 // vinsertf128 $0x1,%xmm7,%ymm6,%ymm6
18499 .byte 197,193,114,242,16 // vpslld $0x10,%xmm2,%xmm7
18500 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018501 .byte 197,233,114,242,16 // vpslld $0x10,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040018502 .byte 196,227,69,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm7,%ymm2
Mike Klein5f055f02017-04-06 20:02:11 -040018503 .byte 197,241,114,241,13 // vpslld $0xd,%xmm1,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040018504 .byte 196,193,65,114,242,13 // vpslld $0xd,%xmm10,%xmm7
18505 .byte 196,227,117,24,207,1 // vinsertf128 $0x1,%xmm7,%ymm1,%ymm1
18506 .byte 197,244,86,202 // vorps %ymm2,%ymm1,%ymm1
18507 .byte 196,227,125,25,202,1 // vextractf128 $0x1,%ymm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018508 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040018509 .byte 197,241,254,203 // vpaddd %xmm3,%xmm1,%xmm1
18510 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
18511 .byte 196,195,117,74,206,96 // vblendvps %ymm6,%ymm14,%ymm1,%ymm1
18512 .byte 196,193,57,108,209 // vpunpcklqdq %xmm9,%xmm8,%xmm2
18513 .byte 197,233,105,244 // vpunpckhwd %xmm4,%xmm2,%xmm6
18514 .byte 196,65,41,239,210 // vpxor %xmm10,%xmm10,%xmm10
Mike Kleind0ce1482017-04-19 17:19:30 -040018515 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040018516 .byte 196,227,109,24,214,1 // vinsertf128 $0x1,%xmm6,%ymm2,%ymm2
18517 .byte 196,193,108,84,244 // vandps %ymm12,%ymm2,%ymm6
18518 .byte 197,236,87,214 // vxorps %ymm6,%ymm2,%ymm2
18519 .byte 196,227,125,25,215,1 // vextractf128 $0x1,%ymm2,%xmm7
18520 .byte 196,193,64,87,235 // vxorps %xmm11,%xmm7,%xmm5
18521 .byte 197,145,102,237 // vpcmpgtd %xmm5,%xmm13,%xmm5
18522 .byte 196,193,104,87,227 // vxorps %xmm11,%xmm2,%xmm4
18523 .byte 197,145,102,228 // vpcmpgtd %xmm4,%xmm13,%xmm4
18524 .byte 196,227,93,24,229,1 // vinsertf128 $0x1,%xmm5,%ymm4,%ymm4
18525 .byte 197,209,114,246,16 // vpslld $0x10,%xmm6,%xmm5
18526 .byte 196,227,125,25,246,1 // vextractf128 $0x1,%ymm6,%xmm6
18527 .byte 197,201,114,246,16 // vpslld $0x10,%xmm6,%xmm6
18528 .byte 196,227,85,24,238,1 // vinsertf128 $0x1,%xmm6,%ymm5,%ymm5
Mike Klein5f055f02017-04-06 20:02:11 -040018529 .byte 197,233,114,242,13 // vpslld $0xd,%xmm2,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040018530 .byte 197,201,114,247,13 // vpslld $0xd,%xmm7,%xmm6
18531 .byte 196,227,109,24,214,1 // vinsertf128 $0x1,%xmm6,%ymm2,%ymm2
18532 .byte 197,236,86,213 // vorps %ymm5,%ymm2,%ymm2
18533 .byte 196,227,125,25,213,1 // vextractf128 $0x1,%ymm2,%xmm5
18534 .byte 197,209,254,235 // vpaddd %xmm3,%xmm5,%xmm5
18535 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040018536 .byte 196,227,109,24,213,1 // vinsertf128 $0x1,%xmm5,%ymm2,%ymm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040018537 .byte 196,195,109,74,214,64 // vblendvps %ymm4,%ymm14,%ymm2,%ymm2
18538 .byte 196,193,57,109,225 // vpunpckhqdq %xmm9,%xmm8,%xmm4
18539 .byte 196,193,89,105,234 // vpunpckhwd %xmm10,%xmm4,%xmm5
Mike Kleind0ce1482017-04-19 17:19:30 -040018540 .byte 196,226,121,51,228 // vpmovzxwd %xmm4,%xmm4
18541 .byte 196,227,93,24,229,1 // vinsertf128 $0x1,%xmm5,%ymm4,%ymm4
Mike Kleinb4bbc642017-04-27 08:59:55 -040018542 .byte 196,193,92,84,236 // vandps %ymm12,%ymm4,%ymm5
Mike Klein097d0932017-04-20 09:11:53 -040018543 .byte 197,220,87,229 // vxorps %ymm5,%ymm4,%ymm4
Mike Kleind0ce1482017-04-19 17:19:30 -040018544 .byte 196,227,125,25,230,1 // vextractf128 $0x1,%ymm4,%xmm6
Mike Kleinb4bbc642017-04-27 08:59:55 -040018545 .byte 196,193,72,87,251 // vxorps %xmm11,%xmm6,%xmm7
18546 .byte 197,17,102,199 // vpcmpgtd %xmm7,%xmm13,%xmm8
18547 .byte 196,193,88,87,251 // vxorps %xmm11,%xmm4,%xmm7
18548 .byte 197,145,102,255 // vpcmpgtd %xmm7,%xmm13,%xmm7
18549 .byte 196,195,69,24,248,1 // vinsertf128 $0x1,%xmm8,%ymm7,%ymm7
18550 .byte 197,185,114,245,16 // vpslld $0x10,%xmm5,%xmm8
18551 .byte 196,227,125,25,237,1 // vextractf128 $0x1,%ymm5,%xmm5
Mike Klein097d0932017-04-20 09:11:53 -040018552 .byte 197,209,114,245,16 // vpslld $0x10,%xmm5,%xmm5
Mike Kleinb4bbc642017-04-27 08:59:55 -040018553 .byte 196,227,61,24,237,1 // vinsertf128 $0x1,%xmm5,%ymm8,%ymm5
Mike Kleind0ce1482017-04-19 17:19:30 -040018554 .byte 197,217,114,244,13 // vpslld $0xd,%xmm4,%xmm4
Mike Kleinb4bbc642017-04-27 08:59:55 -040018555 .byte 197,201,114,246,13 // vpslld $0xd,%xmm6,%xmm6
18556 .byte 196,227,93,24,230,1 // vinsertf128 $0x1,%xmm6,%ymm4,%ymm4
18557 .byte 197,220,86,229 // vorps %ymm5,%ymm4,%ymm4
18558 .byte 196,227,125,25,229,1 // vextractf128 $0x1,%ymm4,%xmm5
18559 .byte 197,209,254,235 // vpaddd %xmm3,%xmm5,%xmm5
18560 .byte 197,217,254,219 // vpaddd %xmm3,%xmm4,%xmm3
18561 .byte 196,227,101,24,221,1 // vinsertf128 $0x1,%xmm5,%ymm3,%ymm3
18562 .byte 196,195,101,74,222,112 // vblendvps %ymm7,%ymm14,%ymm3,%ymm3
Mike Klein5f055f02017-04-06 20:02:11 -040018563 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleind0ce1482017-04-19 17:19:30 -040018564 .byte 197,252,16,100,36,128 // vmovups -0x80(%rsp),%ymm4
18565 .byte 197,252,16,108,36,160 // vmovups -0x60(%rsp),%ymm5
18566 .byte 197,252,16,116,36,192 // vmovups -0x40(%rsp),%ymm6
18567 .byte 197,252,16,124,36,224 // vmovups -0x20(%rsp),%ymm7
18568 .byte 72,131,196,24 // add $0x18,%rsp
Mike Klein5f055f02017-04-06 20:02:11 -040018569 .byte 91 // pop %rbx
18570 .byte 65,92 // pop %r12
18571 .byte 65,94 // pop %r14
18572 .byte 65,95 // pop %r15
18573 .byte 255,224 // jmpq *%rax
18574
Mike Klein7c4af542017-03-29 18:21:14 -040018575HIDDEN _sk_store_f16_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040018576.globl _sk_store_f16_avx
Mike Klein86714282017-04-13 17:37:38 -040018577FUNCTION(_sk_store_f16_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018578_sk_store_f16_avx:
Mike Kleind0ce1482017-04-19 17:19:30 -040018579 .byte 72,131,236,88 // sub $0x58,%rsp
18580 .byte 197,252,17,124,36,32 // vmovups %ymm7,0x20(%rsp)
18581 .byte 197,252,17,52,36 // vmovups %ymm6,(%rsp)
18582 .byte 197,252,17,108,36,224 // vmovups %ymm5,-0x20(%rsp)
18583 .byte 197,252,17,100,36,192 // vmovups %ymm4,-0x40(%rsp)
Mike Klein8ca33562017-05-23 08:07:43 -040018584 .byte 196,98,125,24,13,130,29,0,0 // vbroadcastss 0x1d82(%rip),%ymm9 # 679c <_sk_callback_avx+0x441>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018585 .byte 196,65,124,84,209 // vandps %ymm9,%ymm0,%ymm10
18586 .byte 197,252,17,68,36,128 // vmovups %ymm0,-0x80(%rsp)
Mike Kleind0ce1482017-04-19 17:19:30 -040018587 .byte 196,65,124,87,218 // vxorps %ymm10,%ymm0,%ymm11
Mike Klein097d0932017-04-20 09:11:53 -040018588 .byte 196,67,125,25,220,1 // vextractf128 $0x1,%ymm11,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040018589 .byte 196,98,121,24,5,103,29,0,0 // vbroadcastss 0x1d67(%rip),%xmm8 # 67a0 <_sk_callback_avx+0x445>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018590 .byte 196,65,57,102,236 // vpcmpgtd %xmm12,%xmm8,%xmm13
18591 .byte 196,65,57,102,243 // vpcmpgtd %xmm11,%xmm8,%xmm14
Mike Klein097d0932017-04-20 09:11:53 -040018592 .byte 196,67,13,24,237,1 // vinsertf128 $0x1,%xmm13,%ymm14,%ymm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040018593 .byte 196,193,9,114,210,16 // vpsrld $0x10,%xmm10,%xmm14
18594 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
18595 .byte 196,193,41,114,210,16 // vpsrld $0x10,%xmm10,%xmm10
18596 .byte 196,67,13,24,242,1 // vinsertf128 $0x1,%xmm10,%ymm14,%ymm14
Mike Klein097d0932017-04-20 09:11:53 -040018597 .byte 196,193,33,114,211,13 // vpsrld $0xd,%xmm11,%xmm11
18598 .byte 196,193,25,114,212,13 // vpsrld $0xd,%xmm12,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040018599 .byte 196,98,125,24,21,46,29,0,0 // vbroadcastss 0x1d2e(%rip),%ymm10 # 67a4 <_sk_callback_avx+0x449>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018600 .byte 196,65,12,86,242 // vorps %ymm10,%ymm14,%ymm14
Mike Klein097d0932017-04-20 09:11:53 -040018601 .byte 196,67,125,25,247,1 // vextractf128 $0x1,%ymm14,%xmm15
Mike Kleinb4bbc642017-04-27 08:59:55 -040018602 .byte 196,65,1,254,228 // vpaddd %xmm12,%xmm15,%xmm12
18603 .byte 196,65,9,254,219 // vpaddd %xmm11,%xmm14,%xmm11
18604 .byte 196,67,37,24,228,1 // vinsertf128 $0x1,%xmm12,%ymm11,%ymm12
18605 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
18606 .byte 196,99,29,74,224,208 // vblendvps %ymm13,%ymm0,%ymm12,%ymm12
18607 .byte 196,65,116,84,233 // vandps %ymm9,%ymm1,%ymm13
18608 .byte 197,252,17,76,36,160 // vmovups %ymm1,-0x60(%rsp)
18609 .byte 196,65,116,87,245 // vxorps %ymm13,%ymm1,%ymm14
18610 .byte 196,67,125,25,247,1 // vextractf128 $0x1,%ymm14,%xmm15
18611 .byte 196,193,57,102,255 // vpcmpgtd %xmm15,%xmm8,%xmm7
18612 .byte 196,65,57,102,222 // vpcmpgtd %xmm14,%xmm8,%xmm11
18613 .byte 196,227,37,24,255,1 // vinsertf128 $0x1,%xmm7,%ymm11,%ymm7
18614 .byte 196,193,33,114,213,16 // vpsrld $0x10,%xmm13,%xmm11
Mike Klein097d0932017-04-20 09:11:53 -040018615 .byte 196,99,125,25,238,1 // vextractf128 $0x1,%ymm13,%xmm6
Mike Kleind0ce1482017-04-19 17:19:30 -040018616 .byte 197,201,114,214,16 // vpsrld $0x10,%xmm6,%xmm6
Mike Kleinb4bbc642017-04-27 08:59:55 -040018617 .byte 196,227,37,24,246,1 // vinsertf128 $0x1,%xmm6,%ymm11,%ymm6
18618 .byte 196,193,33,114,215,13 // vpsrld $0xd,%xmm15,%xmm11
18619 .byte 196,193,76,86,242 // vorps %ymm10,%ymm6,%ymm6
Mike Klein097d0932017-04-20 09:11:53 -040018620 .byte 196,227,125,25,245,1 // vextractf128 $0x1,%ymm6,%xmm5
Mike Kleinb4bbc642017-04-27 08:59:55 -040018621 .byte 196,193,81,254,235 // vpaddd %xmm11,%xmm5,%xmm5
18622 .byte 196,193,89,114,214,13 // vpsrld $0xd,%xmm14,%xmm4
18623 .byte 197,201,254,228 // vpaddd %xmm4,%xmm6,%xmm4
18624 .byte 196,227,93,24,229,1 // vinsertf128 $0x1,%xmm5,%ymm4,%ymm4
18625 .byte 196,99,93,74,232,112 // vblendvps %ymm7,%ymm0,%ymm4,%ymm13
18626 .byte 196,193,108,84,225 // vandps %ymm9,%ymm2,%ymm4
18627 .byte 197,236,87,236 // vxorps %ymm4,%ymm2,%ymm5
18628 .byte 196,227,125,25,238,1 // vextractf128 $0x1,%ymm5,%xmm6
18629 .byte 197,185,102,254 // vpcmpgtd %xmm6,%xmm8,%xmm7
18630 .byte 197,57,102,221 // vpcmpgtd %xmm5,%xmm8,%xmm11
18631 .byte 196,227,37,24,255,1 // vinsertf128 $0x1,%xmm7,%ymm11,%ymm7
18632 .byte 197,161,114,212,16 // vpsrld $0x10,%xmm4,%xmm11
18633 .byte 196,227,125,25,228,1 // vextractf128 $0x1,%ymm4,%xmm4
18634 .byte 197,217,114,212,16 // vpsrld $0x10,%xmm4,%xmm4
18635 .byte 196,227,37,24,228,1 // vinsertf128 $0x1,%xmm4,%ymm11,%ymm4
Mike Klein097d0932017-04-20 09:11:53 -040018636 .byte 197,201,114,214,13 // vpsrld $0xd,%xmm6,%xmm6
Mike Kleinb4bbc642017-04-27 08:59:55 -040018637 .byte 196,193,92,86,226 // vorps %ymm10,%ymm4,%ymm4
18638 .byte 196,227,125,25,225,1 // vextractf128 $0x1,%ymm4,%xmm1
18639 .byte 197,241,254,206 // vpaddd %xmm6,%xmm1,%xmm1
18640 .byte 197,209,114,213,13 // vpsrld $0xd,%xmm5,%xmm5
18641 .byte 197,217,254,229 // vpaddd %xmm5,%xmm4,%xmm4
18642 .byte 196,227,93,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm4,%ymm1
18643 .byte 196,99,117,74,216,112 // vblendvps %ymm7,%ymm0,%ymm1,%ymm11
18644 .byte 196,193,100,84,225 // vandps %ymm9,%ymm3,%ymm4
18645 .byte 197,228,87,236 // vxorps %ymm4,%ymm3,%ymm5
18646 .byte 196,227,125,25,238,1 // vextractf128 $0x1,%ymm5,%xmm6
18647 .byte 197,185,102,254 // vpcmpgtd %xmm6,%xmm8,%xmm7
18648 .byte 197,57,102,197 // vpcmpgtd %xmm5,%xmm8,%xmm8
18649 .byte 196,227,61,24,255,1 // vinsertf128 $0x1,%xmm7,%ymm8,%ymm7
18650 .byte 197,185,114,212,16 // vpsrld $0x10,%xmm4,%xmm8
18651 .byte 196,227,125,25,228,1 // vextractf128 $0x1,%ymm4,%xmm4
18652 .byte 197,217,114,212,16 // vpsrld $0x10,%xmm4,%xmm4
18653 .byte 196,227,61,24,228,1 // vinsertf128 $0x1,%xmm4,%ymm8,%ymm4
18654 .byte 196,193,92,86,226 // vorps %ymm10,%ymm4,%ymm4
18655 .byte 197,201,114,214,13 // vpsrld $0xd,%xmm6,%xmm6
18656 .byte 196,227,125,25,225,1 // vextractf128 $0x1,%ymm4,%xmm1
18657 .byte 197,241,254,206 // vpaddd %xmm6,%xmm1,%xmm1
18658 .byte 197,209,114,213,13 // vpsrld $0xd,%xmm5,%xmm5
18659 .byte 197,217,254,229 // vpaddd %xmm5,%xmm4,%xmm4
18660 .byte 196,227,93,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm4,%ymm1
18661 .byte 196,227,117,74,200,112 // vblendvps %ymm7,%ymm0,%ymm1,%ymm1
18662 .byte 196,99,125,25,224,1 // vextractf128 $0x1,%ymm12,%xmm0
18663 .byte 196,226,25,43,192 // vpackusdw %xmm0,%xmm12,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040018664 .byte 196,99,125,25,236,1 // vextractf128 $0x1,%ymm13,%xmm4
18665 .byte 196,226,17,43,228 // vpackusdw %xmm4,%xmm13,%xmm4
18666 .byte 196,99,125,25,221,1 // vextractf128 $0x1,%ymm11,%xmm5
Mike Kleinb4bbc642017-04-27 08:59:55 -040018667 .byte 196,226,33,43,245 // vpackusdw %xmm5,%xmm11,%xmm6
18668 .byte 196,227,125,25,205,1 // vextractf128 $0x1,%ymm1,%xmm5
18669 .byte 196,226,113,43,205 // vpackusdw %xmm5,%xmm1,%xmm1
18670 .byte 197,249,97,236 // vpunpcklwd %xmm4,%xmm0,%xmm5
18671 .byte 197,249,105,196 // vpunpckhwd %xmm4,%xmm0,%xmm0
18672 .byte 197,201,97,225 // vpunpcklwd %xmm1,%xmm6,%xmm4
18673 .byte 197,201,105,201 // vpunpckhwd %xmm1,%xmm6,%xmm1
18674 .byte 197,81,98,220 // vpunpckldq %xmm4,%xmm5,%xmm11
18675 .byte 197,81,106,212 // vpunpckhdq %xmm4,%xmm5,%xmm10
18676 .byte 197,121,98,201 // vpunpckldq %xmm1,%xmm0,%xmm9
18677 .byte 197,121,106,193 // vpunpckhdq %xmm1,%xmm0,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040018678 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb4bbc642017-04-27 08:59:55 -040018679 .byte 72,139,0 // mov (%rax),%rax
18680 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018681 .byte 117,66 // jne 4c54 <_sk_store_f16_avx+0x25e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018682 .byte 197,120,17,28,248 // vmovups %xmm11,(%rax,%rdi,8)
18683 .byte 197,120,17,84,248,16 // vmovups %xmm10,0x10(%rax,%rdi,8)
18684 .byte 197,120,17,76,248,32 // vmovups %xmm9,0x20(%rax,%rdi,8)
18685 .byte 197,122,127,68,248,48 // vmovdqu %xmm8,0x30(%rax,%rdi,8)
18686 .byte 72,173 // lods %ds:(%rsi),%rax
18687 .byte 197,252,16,68,36,128 // vmovups -0x80(%rsp),%ymm0
18688 .byte 197,252,16,76,36,160 // vmovups -0x60(%rsp),%ymm1
Mike Kleind0ce1482017-04-19 17:19:30 -040018689 .byte 197,252,16,100,36,192 // vmovups -0x40(%rsp),%ymm4
18690 .byte 197,252,16,108,36,224 // vmovups -0x20(%rsp),%ymm5
18691 .byte 197,252,16,52,36 // vmovups (%rsp),%ymm6
18692 .byte 197,252,16,124,36,32 // vmovups 0x20(%rsp),%ymm7
18693 .byte 72,131,196,88 // add $0x58,%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040018694 .byte 255,224 // jmpq *%rax
Mike Kleinb4bbc642017-04-27 08:59:55 -040018695 .byte 197,121,214,28,248 // vmovq %xmm11,(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018696 .byte 72,131,249,1 // cmp $0x1,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018697 .byte 116,202 // je 4c29 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018698 .byte 197,121,23,92,248,8 // vmovhpd %xmm11,0x8(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018699 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018700 .byte 114,190 // jb 4c29 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018701 .byte 197,121,214,84,248,16 // vmovq %xmm10,0x10(%rax,%rdi,8)
Brian Osman74fc5932017-05-22 19:25:36 +000018702 .byte 116,182 // je 4c29 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018703 .byte 197,121,23,84,248,24 // vmovhpd %xmm10,0x18(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018704 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018705 .byte 114,170 // jb 4c29 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018706 .byte 197,121,214,76,248,32 // vmovq %xmm9,0x20(%rax,%rdi,8)
Brian Osman74fc5932017-05-22 19:25:36 +000018707 .byte 116,162 // je 4c29 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018708 .byte 197,121,23,76,248,40 // vmovhpd %xmm9,0x28(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018709 .byte 72,131,249,7 // cmp $0x7,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018710 .byte 114,150 // jb 4c29 <_sk_store_f16_avx+0x233>
Mike Kleinb4bbc642017-04-27 08:59:55 -040018711 .byte 197,121,214,68,248,48 // vmovq %xmm8,0x30(%rax,%rdi,8)
Brian Osman74fc5932017-05-22 19:25:36 +000018712 .byte 235,142 // jmp 4c29 <_sk_store_f16_avx+0x233>
Mike Kleind7e06ae2017-03-29 16:33:06 -040018713
Mike Klein3146bb92017-04-05 14:45:02 -040018714HIDDEN _sk_load_u16_be_avx
18715.globl _sk_load_u16_be_avx
Mike Klein86714282017-04-13 17:37:38 -040018716FUNCTION(_sk_load_u16_be_avx)
Mike Klein3146bb92017-04-05 14:45:02 -040018717_sk_load_u16_be_avx:
18718 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3821732017-04-17 10:58:05 -040018719 .byte 76,139,0 // mov (%rax),%r8
18720 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
Mike Klein3146bb92017-04-05 14:45:02 -040018721 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018722 .byte 15,133,253,0,0,0 // jne 4dae <_sk_load_u16_be_avx+0x113>
Mike Kleinb3821732017-04-17 10:58:05 -040018723 .byte 196,65,121,16,4,64 // vmovupd (%r8,%rax,2),%xmm8
18724 .byte 196,193,121,16,84,64,16 // vmovupd 0x10(%r8,%rax,2),%xmm2
18725 .byte 196,193,121,16,92,64,32 // vmovupd 0x20(%r8,%rax,2),%xmm3
18726 .byte 196,65,122,111,76,64,48 // vmovdqu 0x30(%r8,%rax,2),%xmm9
Mike Klein3146bb92017-04-05 14:45:02 -040018727 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
18728 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
18729 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
18730 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040018731 .byte 197,121,97,202 // vpunpcklwd %xmm2,%xmm0,%xmm9
Mike Klein3146bb92017-04-05 14:45:02 -040018732 .byte 197,121,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm8
18733 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018734 .byte 197,113,105,227 // vpunpckhwd %xmm3,%xmm1,%xmm12
18735 .byte 197,177,108,194 // vpunpcklqdq %xmm2,%xmm9,%xmm0
Mike Klein3146bb92017-04-05 14:45:02 -040018736 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
18737 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
18738 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040018739 .byte 196,65,41,239,210 // vpxor %xmm10,%xmm10,%xmm10
18740 .byte 196,193,121,105,202 // vpunpckhwd %xmm10,%xmm0,%xmm1
Mike Klein3146bb92017-04-05 14:45:02 -040018741 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
18742 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
18743 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040018744 .byte 196,98,125,24,29,134,26,0,0 // vbroadcastss 0x1a86(%rip),%ymm11 # 67a8 <_sk_callback_avx+0x44d>
Mike Kleinfe560a82017-05-01 12:56:35 -040018745 .byte 196,193,124,89,195 // vmulps %ymm11,%ymm0,%ymm0
18746 .byte 197,177,109,202 // vpunpckhqdq %xmm2,%xmm9,%xmm1
Mike Klein3146bb92017-04-05 14:45:02 -040018747 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
18748 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
18749 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040018750 .byte 196,193,113,105,210 // vpunpckhwd %xmm10,%xmm1,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040018751 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
18752 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
18753 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040018754 .byte 196,193,116,89,203 // vmulps %ymm11,%ymm1,%ymm1
18755 .byte 196,193,57,108,212 // vpunpcklqdq %xmm12,%xmm8,%xmm2
18756 .byte 197,225,113,242,8 // vpsllw $0x8,%xmm2,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040018757 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018758 .byte 197,225,235,210 // vpor %xmm2,%xmm3,%xmm2
18759 .byte 196,193,105,105,218 // vpunpckhwd %xmm10,%xmm2,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040018760 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018761 .byte 196,227,109,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm2,%ymm2
Mike Klein3146bb92017-04-05 14:45:02 -040018762 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018763 .byte 196,193,108,89,211 // vmulps %ymm11,%ymm2,%ymm2
18764 .byte 196,193,57,109,220 // vpunpckhqdq %xmm12,%xmm8,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040018765 .byte 197,185,113,243,8 // vpsllw $0x8,%xmm3,%xmm8
18766 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
18767 .byte 197,185,235,219 // vpor %xmm3,%xmm8,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040018768 .byte 196,65,97,105,194 // vpunpckhwd %xmm10,%xmm3,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040018769 .byte 196,226,121,51,219 // vpmovzxwd %xmm3,%xmm3
18770 .byte 196,195,101,24,216,1 // vinsertf128 $0x1,%xmm8,%ymm3,%ymm3
18771 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
Mike Kleinfe560a82017-05-01 12:56:35 -040018772 .byte 196,193,100,89,219 // vmulps %ymm11,%ymm3,%ymm3
Mike Klein3146bb92017-04-05 14:45:02 -040018773 .byte 72,173 // lods %ds:(%rsi),%rax
18774 .byte 255,224 // jmpq *%rax
Mike Kleinb3821732017-04-17 10:58:05 -040018775 .byte 196,65,123,16,4,64 // vmovsd (%r8,%rax,2),%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040018776 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
18777 .byte 72,131,249,1 // cmp $0x1,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018778 .byte 116,85 // je 4e14 <_sk_load_u16_be_avx+0x179>
Mike Kleinb3821732017-04-17 10:58:05 -040018779 .byte 196,65,57,22,68,64,8 // vmovhpd 0x8(%r8,%rax,2),%xmm8,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040018780 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018781 .byte 114,72 // jb 4e14 <_sk_load_u16_be_avx+0x179>
Mike Kleinb3821732017-04-17 10:58:05 -040018782 .byte 196,193,123,16,84,64,16 // vmovsd 0x10(%r8,%rax,2),%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040018783 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018784 .byte 116,72 // je 4e21 <_sk_load_u16_be_avx+0x186>
Mike Kleinb3821732017-04-17 10:58:05 -040018785 .byte 196,193,105,22,84,64,24 // vmovhpd 0x18(%r8,%rax,2),%xmm2,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040018786 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018787 .byte 114,59 // jb 4e21 <_sk_load_u16_be_avx+0x186>
Mike Kleinb3821732017-04-17 10:58:05 -040018788 .byte 196,193,123,16,92,64,32 // vmovsd 0x20(%r8,%rax,2),%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040018789 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018790 .byte 15,132,213,254,255,255 // je 4ccc <_sk_load_u16_be_avx+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040018791 .byte 196,193,97,22,92,64,40 // vmovhpd 0x28(%r8,%rax,2),%xmm3,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040018792 .byte 72,131,249,7 // cmp $0x7,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018793 .byte 15,130,196,254,255,255 // jb 4ccc <_sk_load_u16_be_avx+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040018794 .byte 196,65,122,126,76,64,48 // vmovq 0x30(%r8,%rax,2),%xmm9
Brian Osman74fc5932017-05-22 19:25:36 +000018795 .byte 233,184,254,255,255 // jmpq 4ccc <_sk_load_u16_be_avx+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040018796 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
18797 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Brian Osman74fc5932017-05-22 19:25:36 +000018798 .byte 233,171,254,255,255 // jmpq 4ccc <_sk_load_u16_be_avx+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040018799 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Brian Osman74fc5932017-05-22 19:25:36 +000018800 .byte 233,162,254,255,255 // jmpq 4ccc <_sk_load_u16_be_avx+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040018801
18802HIDDEN _sk_load_rgb_u16_be_avx
18803.globl _sk_load_rgb_u16_be_avx
18804FUNCTION(_sk_load_rgb_u16_be_avx)
18805_sk_load_rgb_u16_be_avx:
18806 .byte 72,173 // lods %ds:(%rsi),%rax
18807 .byte 76,139,0 // mov (%rax),%r8
18808 .byte 72,141,4,127 // lea (%rdi,%rdi,2),%rax
18809 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018810 .byte 15,133,243,0,0,0 // jne 4f2f <_sk_load_rgb_u16_be_avx+0x105>
Mike Kleinb3821732017-04-17 10:58:05 -040018811 .byte 196,193,122,111,4,64 // vmovdqu (%r8,%rax,2),%xmm0
18812 .byte 196,193,122,111,84,64,12 // vmovdqu 0xc(%r8,%rax,2),%xmm2
18813 .byte 196,193,122,111,76,64,24 // vmovdqu 0x18(%r8,%rax,2),%xmm1
18814 .byte 196,193,122,111,92,64,32 // vmovdqu 0x20(%r8,%rax,2),%xmm3
18815 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
18816 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
18817 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
18818 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
18819 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
18820 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
18821 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
18822 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
18823 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
18824 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
18825 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
18826 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018827 .byte 197,113,105,211 // vpunpckhwd %xmm3,%xmm1,%xmm10
Mike Kleinb3821732017-04-17 10:58:05 -040018828 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
18829 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
18830 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
18831 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
18832 .byte 196,65,25,239,228 // vpxor %xmm12,%xmm12,%xmm12
18833 .byte 196,193,121,105,204 // vpunpckhwd %xmm12,%xmm0,%xmm1
18834 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
18835 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
18836 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040018837 .byte 196,98,125,24,29,230,24,0,0 // vbroadcastss 0x18e6(%rip),%ymm11 # 67ac <_sk_callback_avx+0x451>
Mike Kleinfe560a82017-05-01 12:56:35 -040018838 .byte 196,193,124,89,195 // vmulps %ymm11,%ymm0,%ymm0
Mike Kleinb3821732017-04-17 10:58:05 -040018839 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
18840 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
18841 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
18842 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
18843 .byte 196,193,113,105,212 // vpunpckhwd %xmm12,%xmm1,%xmm2
18844 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
18845 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
18846 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040018847 .byte 196,193,116,89,203 // vmulps %ymm11,%ymm1,%ymm1
18848 .byte 196,193,49,108,210 // vpunpcklqdq %xmm10,%xmm9,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040018849 .byte 197,225,113,242,8 // vpsllw $0x8,%xmm2,%xmm3
18850 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
18851 .byte 197,225,235,210 // vpor %xmm2,%xmm3,%xmm2
18852 .byte 196,193,105,105,220 // vpunpckhwd %xmm12,%xmm2,%xmm3
18853 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
18854 .byte 196,227,109,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm2,%ymm2
18855 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
Mike Kleinfe560a82017-05-01 12:56:35 -040018856 .byte 196,193,108,89,211 // vmulps %ymm11,%ymm2,%ymm2
Mike Kleinb3821732017-04-17 10:58:05 -040018857 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040018858 .byte 196,226,125,24,29,131,24,0,0 // vbroadcastss 0x1883(%rip),%ymm3 # 67b0 <_sk_callback_avx+0x455>
Mike Kleinb3821732017-04-17 10:58:05 -040018859 .byte 255,224 // jmpq *%rax
18860 .byte 196,193,121,110,4,64 // vmovd (%r8,%rax,2),%xmm0
18861 .byte 196,193,121,196,68,64,4,2 // vpinsrw $0x2,0x4(%r8,%rax,2),%xmm0,%xmm0
18862 .byte 72,131,249,1 // cmp $0x1,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018863 .byte 117,5 // jne 4f48 <_sk_load_rgb_u16_be_avx+0x11e>
18864 .byte 233,40,255,255,255 // jmpq 4e70 <_sk_load_rgb_u16_be_avx+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040018865 .byte 196,193,121,110,76,64,6 // vmovd 0x6(%r8,%rax,2),%xmm1
18866 .byte 196,65,113,196,68,64,10,2 // vpinsrw $0x2,0xa(%r8,%rax,2),%xmm1,%xmm8
18867 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018868 .byte 114,26 // jb 4f77 <_sk_load_rgb_u16_be_avx+0x14d>
Mike Kleinb3821732017-04-17 10:58:05 -040018869 .byte 196,193,121,110,76,64,12 // vmovd 0xc(%r8,%rax,2),%xmm1
18870 .byte 196,193,113,196,84,64,16,2 // vpinsrw $0x2,0x10(%r8,%rax,2),%xmm1,%xmm2
18871 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018872 .byte 117,10 // jne 4f7c <_sk_load_rgb_u16_be_avx+0x152>
18873 .byte 233,249,254,255,255 // jmpq 4e70 <_sk_load_rgb_u16_be_avx+0x46>
18874 .byte 233,244,254,255,255 // jmpq 4e70 <_sk_load_rgb_u16_be_avx+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040018875 .byte 196,193,121,110,76,64,18 // vmovd 0x12(%r8,%rax,2),%xmm1
18876 .byte 196,65,113,196,76,64,22,2 // vpinsrw $0x2,0x16(%r8,%rax,2),%xmm1,%xmm9
18877 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018878 .byte 114,26 // jb 4fab <_sk_load_rgb_u16_be_avx+0x181>
Mike Kleinb3821732017-04-17 10:58:05 -040018879 .byte 196,193,121,110,76,64,24 // vmovd 0x18(%r8,%rax,2),%xmm1
18880 .byte 196,193,113,196,76,64,28,2 // vpinsrw $0x2,0x1c(%r8,%rax,2),%xmm1,%xmm1
18881 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018882 .byte 117,10 // jne 4fb0 <_sk_load_rgb_u16_be_avx+0x186>
18883 .byte 233,197,254,255,255 // jmpq 4e70 <_sk_load_rgb_u16_be_avx+0x46>
18884 .byte 233,192,254,255,255 // jmpq 4e70 <_sk_load_rgb_u16_be_avx+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040018885 .byte 196,193,121,110,92,64,30 // vmovd 0x1e(%r8,%rax,2),%xmm3
18886 .byte 196,65,97,196,92,64,34,2 // vpinsrw $0x2,0x22(%r8,%rax,2),%xmm3,%xmm11
18887 .byte 72,131,249,7 // cmp $0x7,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018888 .byte 114,20 // jb 4fd9 <_sk_load_rgb_u16_be_avx+0x1af>
Mike Kleinb3821732017-04-17 10:58:05 -040018889 .byte 196,193,121,110,92,64,36 // vmovd 0x24(%r8,%rax,2),%xmm3
18890 .byte 196,193,97,196,92,64,40,2 // vpinsrw $0x2,0x28(%r8,%rax,2),%xmm3,%xmm3
Brian Osman74fc5932017-05-22 19:25:36 +000018891 .byte 233,151,254,255,255 // jmpq 4e70 <_sk_load_rgb_u16_be_avx+0x46>
18892 .byte 233,146,254,255,255 // jmpq 4e70 <_sk_load_rgb_u16_be_avx+0x46>
Mike Klein3146bb92017-04-05 14:45:02 -040018893
18894HIDDEN _sk_store_u16_be_avx
18895.globl _sk_store_u16_be_avx
Mike Klein86714282017-04-13 17:37:38 -040018896FUNCTION(_sk_store_u16_be_avx)
Mike Klein3146bb92017-04-05 14:45:02 -040018897_sk_store_u16_be_avx:
18898 .byte 72,173 // lods %ds:(%rsi),%rax
18899 .byte 76,139,0 // mov (%rax),%r8
Mike Kleinfe560a82017-05-01 12:56:35 -040018900 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040018901 .byte 196,98,125,24,5,192,23,0,0 // vbroadcastss 0x17c0(%rip),%ymm8 # 67b4 <_sk_callback_avx+0x459>
Mike Kleinfe560a82017-05-01 12:56:35 -040018902 .byte 196,65,124,89,200 // vmulps %ymm8,%ymm0,%ymm9
Mike Klein3146bb92017-04-05 14:45:02 -040018903 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
18904 .byte 196,67,125,25,202,1 // vextractf128 $0x1,%ymm9,%xmm10
18905 .byte 196,66,49,43,202 // vpackusdw %xmm10,%xmm9,%xmm9
18906 .byte 196,193,41,113,241,8 // vpsllw $0x8,%xmm9,%xmm10
18907 .byte 196,193,49,113,209,8 // vpsrlw $0x8,%xmm9,%xmm9
18908 .byte 196,65,41,235,201 // vpor %xmm9,%xmm10,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040018909 .byte 196,65,116,89,208 // vmulps %ymm8,%ymm1,%ymm10
Mike Klein3146bb92017-04-05 14:45:02 -040018910 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
18911 .byte 196,67,125,25,211,1 // vextractf128 $0x1,%ymm10,%xmm11
18912 .byte 196,66,41,43,211 // vpackusdw %xmm11,%xmm10,%xmm10
18913 .byte 196,193,33,113,242,8 // vpsllw $0x8,%xmm10,%xmm11
18914 .byte 196,193,41,113,210,8 // vpsrlw $0x8,%xmm10,%xmm10
18915 .byte 196,65,33,235,210 // vpor %xmm10,%xmm11,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040018916 .byte 196,65,108,89,216 // vmulps %ymm8,%ymm2,%ymm11
Mike Klein3146bb92017-04-05 14:45:02 -040018917 .byte 196,65,125,91,219 // vcvtps2dq %ymm11,%ymm11
18918 .byte 196,67,125,25,220,1 // vextractf128 $0x1,%ymm11,%xmm12
18919 .byte 196,66,33,43,220 // vpackusdw %xmm12,%xmm11,%xmm11
18920 .byte 196,193,25,113,243,8 // vpsllw $0x8,%xmm11,%xmm12
18921 .byte 196,193,33,113,211,8 // vpsrlw $0x8,%xmm11,%xmm11
18922 .byte 196,65,25,235,219 // vpor %xmm11,%xmm12,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040018923 .byte 196,65,100,89,192 // vmulps %ymm8,%ymm3,%ymm8
Mike Klein3146bb92017-04-05 14:45:02 -040018924 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
18925 .byte 196,67,125,25,196,1 // vextractf128 $0x1,%ymm8,%xmm12
18926 .byte 196,66,57,43,196 // vpackusdw %xmm12,%xmm8,%xmm8
18927 .byte 196,193,25,113,240,8 // vpsllw $0x8,%xmm8,%xmm12
18928 .byte 196,193,57,113,208,8 // vpsrlw $0x8,%xmm8,%xmm8
18929 .byte 196,65,25,235,192 // vpor %xmm8,%xmm12,%xmm8
18930 .byte 196,65,49,97,226 // vpunpcklwd %xmm10,%xmm9,%xmm12
18931 .byte 196,65,49,105,234 // vpunpckhwd %xmm10,%xmm9,%xmm13
18932 .byte 196,65,33,97,200 // vpunpcklwd %xmm8,%xmm11,%xmm9
18933 .byte 196,65,33,105,192 // vpunpckhwd %xmm8,%xmm11,%xmm8
18934 .byte 196,65,25,98,217 // vpunpckldq %xmm9,%xmm12,%xmm11
18935 .byte 196,65,25,106,209 // vpunpckhdq %xmm9,%xmm12,%xmm10
18936 .byte 196,65,17,98,200 // vpunpckldq %xmm8,%xmm13,%xmm9
18937 .byte 196,65,17,106,192 // vpunpckhdq %xmm8,%xmm13,%xmm8
18938 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018939 .byte 117,31 // jne 50d8 <_sk_store_u16_be_avx+0xfa>
Mike Kleinfe560a82017-05-01 12:56:35 -040018940 .byte 196,65,120,17,28,64 // vmovups %xmm11,(%r8,%rax,2)
18941 .byte 196,65,120,17,84,64,16 // vmovups %xmm10,0x10(%r8,%rax,2)
18942 .byte 196,65,120,17,76,64,32 // vmovups %xmm9,0x20(%r8,%rax,2)
18943 .byte 196,65,122,127,68,64,48 // vmovdqu %xmm8,0x30(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040018944 .byte 72,173 // lods %ds:(%rsi),%rax
18945 .byte 255,224 // jmpq *%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040018946 .byte 196,65,121,214,28,64 // vmovq %xmm11,(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040018947 .byte 72,131,249,1 // cmp $0x1,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018948 .byte 116,240 // je 50d4 <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040018949 .byte 196,65,121,23,92,64,8 // vmovhpd %xmm11,0x8(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040018950 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018951 .byte 114,227 // jb 50d4 <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040018952 .byte 196,65,121,214,84,64,16 // vmovq %xmm10,0x10(%r8,%rax,2)
Brian Osman74fc5932017-05-22 19:25:36 +000018953 .byte 116,218 // je 50d4 <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040018954 .byte 196,65,121,23,84,64,24 // vmovhpd %xmm10,0x18(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040018955 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018956 .byte 114,205 // jb 50d4 <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040018957 .byte 196,65,121,214,76,64,32 // vmovq %xmm9,0x20(%r8,%rax,2)
Brian Osman74fc5932017-05-22 19:25:36 +000018958 .byte 116,196 // je 50d4 <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040018959 .byte 196,65,121,23,76,64,40 // vmovhpd %xmm9,0x28(%r8,%rax,2)
Mike Klein3146bb92017-04-05 14:45:02 -040018960 .byte 72,131,249,7 // cmp $0x7,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018961 .byte 114,183 // jb 50d4 <_sk_store_u16_be_avx+0xf6>
Mike Kleinfe560a82017-05-01 12:56:35 -040018962 .byte 196,65,121,214,68,64,48 // vmovq %xmm8,0x30(%r8,%rax,2)
Brian Osman74fc5932017-05-22 19:25:36 +000018963 .byte 235,174 // jmp 50d4 <_sk_store_u16_be_avx+0xf6>
Mike Klein3146bb92017-04-05 14:45:02 -040018964
Mike Klein14987eb2017-04-06 10:22:26 -040018965HIDDEN _sk_load_f32_avx
18966.globl _sk_load_f32_avx
Mike Klein86714282017-04-13 17:37:38 -040018967FUNCTION(_sk_load_f32_avx)
Mike Klein14987eb2017-04-06 10:22:26 -040018968_sk_load_f32_avx:
18969 .byte 72,173 // lods %ds:(%rsi),%rax
18970 .byte 72,131,249,7 // cmp $0x7,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000018971 .byte 119,110 // ja 519c <_sk_load_f32_avx+0x76>
Mike Klein14987eb2017-04-06 10:22:26 -040018972 .byte 76,139,0 // mov (%rax),%r8
18973 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
Brian Osman74fc5932017-05-22 19:25:36 +000018974 .byte 76,141,21,132,0,0,0 // lea 0x84(%rip),%r10 # 51c4 <_sk_load_f32_avx+0x9e>
Mike Klein14987eb2017-04-06 10:22:26 -040018975 .byte 73,99,4,138 // movslq (%r10,%rcx,4),%rax
18976 .byte 76,1,208 // add %r10,%rax
18977 .byte 255,224 // jmpq *%rax
18978 .byte 196,3,125,24,68,136,112,1 // vinsertf128 $0x1,0x70(%r8,%r9,4),%ymm0,%ymm8
18979 .byte 196,131,125,24,92,136,96,1 // vinsertf128 $0x1,0x60(%r8,%r9,4),%ymm0,%ymm3
18980 .byte 196,131,125,24,76,136,80,1 // vinsertf128 $0x1,0x50(%r8,%r9,4),%ymm0,%ymm1
18981 .byte 196,131,125,24,84,136,64,1 // vinsertf128 $0x1,0x40(%r8,%r9,4),%ymm0,%ymm2
18982 .byte 196,129,121,16,68,136,48 // vmovupd 0x30(%r8,%r9,4),%xmm0
18983 .byte 196,195,125,13,192,12 // vblendpd $0xc,%ymm8,%ymm0,%ymm0
18984 .byte 196,1,121,16,68,136,32 // vmovupd 0x20(%r8,%r9,4),%xmm8
18985 .byte 196,99,61,13,203,12 // vblendpd $0xc,%ymm3,%ymm8,%ymm9
18986 .byte 196,129,121,16,92,136,16 // vmovupd 0x10(%r8,%r9,4),%xmm3
18987 .byte 196,99,101,13,209,12 // vblendpd $0xc,%ymm1,%ymm3,%ymm10
18988 .byte 196,129,121,16,12,136 // vmovupd (%r8,%r9,4),%xmm1
18989 .byte 196,227,117,13,202,12 // vblendpd $0xc,%ymm2,%ymm1,%ymm1
18990 .byte 196,193,116,20,210 // vunpcklps %ymm10,%ymm1,%ymm2
18991 .byte 196,193,116,21,218 // vunpckhps %ymm10,%ymm1,%ymm3
18992 .byte 197,180,20,200 // vunpcklps %ymm0,%ymm9,%ymm1
18993 .byte 197,52,21,192 // vunpckhps %ymm0,%ymm9,%ymm8
18994 .byte 197,237,20,193 // vunpcklpd %ymm1,%ymm2,%ymm0
18995 .byte 197,237,21,201 // vunpckhpd %ymm1,%ymm2,%ymm1
18996 .byte 196,193,101,20,208 // vunpcklpd %ymm8,%ymm3,%ymm2
18997 .byte 196,193,101,21,216 // vunpckhpd %ymm8,%ymm3,%ymm3
18998 .byte 72,173 // lods %ds:(%rsi),%rax
18999 .byte 255,224 // jmpq *%rax
Brian Osman74fc5932017-05-22 19:25:36 +000019000 .byte 133,255 // test %edi,%edi
19001 .byte 255 // (bad)
19002 .byte 255,204 // dec %esp
Mike Klein14987eb2017-04-06 10:22:26 -040019003 .byte 255 // (bad)
19004 .byte 255 // (bad)
19005 .byte 255 // (bad)
Brian Osman74fc5932017-05-22 19:25:36 +000019006 .byte 191,255,255,255,178 // mov $0xb2ffffff,%edi
Mike Klein14987eb2017-04-06 10:22:26 -040019007 .byte 255 // (bad)
19008 .byte 255 // (bad)
Brian Osman74fc5932017-05-22 19:25:36 +000019009 .byte 255,165,255,255,255,157 // jmpq *-0x62000001(%rbp)
Mike Klein14987eb2017-04-06 10:22:26 -040019010 .byte 255 // (bad)
19011 .byte 255 // (bad)
Brian Osman74fc5932017-05-22 19:25:36 +000019012 .byte 255,149,255,255,255,141 // callq *-0x72000001(%rbp)
Mike Klein14987eb2017-04-06 10:22:26 -040019013 .byte 255 // (bad)
19014 .byte 255 // (bad)
19015 .byte 255 // .byte 0xff
19016
Mike Klein7c4af542017-03-29 18:21:14 -040019017HIDDEN _sk_store_f32_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019018.globl _sk_store_f32_avx
Mike Klein86714282017-04-13 17:37:38 -040019019FUNCTION(_sk_store_f32_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019020_sk_store_f32_avx:
19021 .byte 72,173 // lods %ds:(%rsi),%rax
19022 .byte 76,139,0 // mov (%rax),%r8
19023 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
19024 .byte 197,124,20,193 // vunpcklps %ymm1,%ymm0,%ymm8
19025 .byte 197,124,21,217 // vunpckhps %ymm1,%ymm0,%ymm11
19026 .byte 197,108,20,203 // vunpcklps %ymm3,%ymm2,%ymm9
19027 .byte 197,108,21,227 // vunpckhps %ymm3,%ymm2,%ymm12
19028 .byte 196,65,61,20,209 // vunpcklpd %ymm9,%ymm8,%ymm10
19029 .byte 196,65,61,21,201 // vunpckhpd %ymm9,%ymm8,%ymm9
19030 .byte 196,65,37,20,196 // vunpcklpd %ymm12,%ymm11,%ymm8
19031 .byte 196,65,37,21,220 // vunpckhpd %ymm12,%ymm11,%ymm11
19032 .byte 72,133,201 // test %rcx,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000019033 .byte 117,55 // jne 5251 <_sk_store_f32_avx+0x6d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019034 .byte 196,67,45,24,225,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm12
19035 .byte 196,67,61,24,235,1 // vinsertf128 $0x1,%xmm11,%ymm8,%ymm13
19036 .byte 196,67,45,6,201,49 // vperm2f128 $0x31,%ymm9,%ymm10,%ymm9
19037 .byte 196,67,61,6,195,49 // vperm2f128 $0x31,%ymm11,%ymm8,%ymm8
19038 .byte 196,65,125,17,36,128 // vmovupd %ymm12,(%r8,%rax,4)
19039 .byte 196,65,125,17,108,128,32 // vmovupd %ymm13,0x20(%r8,%rax,4)
19040 .byte 196,65,125,17,76,128,64 // vmovupd %ymm9,0x40(%r8,%rax,4)
19041 .byte 196,65,125,17,68,128,96 // vmovupd %ymm8,0x60(%r8,%rax,4)
19042 .byte 72,173 // lods %ds:(%rsi),%rax
19043 .byte 255,224 // jmpq *%rax
19044 .byte 196,65,121,17,20,128 // vmovupd %xmm10,(%r8,%rax,4)
19045 .byte 72,131,249,1 // cmp $0x1,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000019046 .byte 116,240 // je 524d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019047 .byte 196,65,121,17,76,128,16 // vmovupd %xmm9,0x10(%r8,%rax,4)
19048 .byte 72,131,249,3 // cmp $0x3,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000019049 .byte 114,227 // jb 524d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019050 .byte 196,65,121,17,68,128,32 // vmovupd %xmm8,0x20(%r8,%rax,4)
Brian Osman74fc5932017-05-22 19:25:36 +000019051 .byte 116,218 // je 524d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019052 .byte 196,65,121,17,92,128,48 // vmovupd %xmm11,0x30(%r8,%rax,4)
19053 .byte 72,131,249,5 // cmp $0x5,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000019054 .byte 114,205 // jb 524d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019055 .byte 196,67,125,25,84,128,64,1 // vextractf128 $0x1,%ymm10,0x40(%r8,%rax,4)
Brian Osman74fc5932017-05-22 19:25:36 +000019056 .byte 116,195 // je 524d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019057 .byte 196,67,125,25,76,128,80,1 // vextractf128 $0x1,%ymm9,0x50(%r8,%rax,4)
19058 .byte 72,131,249,7 // cmp $0x7,%rcx
Brian Osman74fc5932017-05-22 19:25:36 +000019059 .byte 114,181 // jb 524d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019060 .byte 196,67,125,25,68,128,96,1 // vextractf128 $0x1,%ymm8,0x60(%r8,%rax,4)
Brian Osman74fc5932017-05-22 19:25:36 +000019061 .byte 235,171 // jmp 524d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040019062
Mike Klein7c4af542017-03-29 18:21:14 -040019063HIDDEN _sk_clamp_x_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019064.globl _sk_clamp_x_avx
Mike Klein86714282017-04-13 17:37:38 -040019065FUNCTION(_sk_clamp_x_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019066_sk_clamp_x_avx:
19067 .byte 72,173 // lods %ds:(%rsi),%rax
19068 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfc84dc52017-05-11 15:29:31 -040019069 .byte 197,188,95,192 // vmaxps %ymm0,%ymm8,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040019070 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
Mike Kleinfc84dc52017-05-11 15:29:31 -040019071 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040019072 .byte 72,173 // lods %ds:(%rsi),%rax
19073 .byte 255,224 // jmpq *%rax
19074
Mike Klein7c4af542017-03-29 18:21:14 -040019075HIDDEN _sk_clamp_y_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019076.globl _sk_clamp_y_avx
Mike Klein86714282017-04-13 17:37:38 -040019077FUNCTION(_sk_clamp_y_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019078_sk_clamp_y_avx:
19079 .byte 72,173 // lods %ds:(%rsi),%rax
19080 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
Mike Kleinfc84dc52017-05-11 15:29:31 -040019081 .byte 197,188,95,201 // vmaxps %ymm1,%ymm8,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040019082 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
Mike Kleinfc84dc52017-05-11 15:29:31 -040019083 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040019084 .byte 72,173 // lods %ds:(%rsi),%rax
19085 .byte 255,224 // jmpq *%rax
19086
Mike Klein7c4af542017-03-29 18:21:14 -040019087HIDDEN _sk_repeat_x_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019088.globl _sk_repeat_x_avx
Mike Klein86714282017-04-13 17:37:38 -040019089FUNCTION(_sk_repeat_x_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019090_sk_repeat_x_avx:
19091 .byte 72,173 // lods %ds:(%rsi),%rax
19092 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
19093 .byte 196,65,124,94,200 // vdivps %ymm8,%ymm0,%ymm9
19094 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040019095 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
19096 .byte 196,193,124,92,192 // vsubps %ymm8,%ymm0,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040019097 .byte 72,173 // lods %ds:(%rsi),%rax
19098 .byte 255,224 // jmpq *%rax
19099
Mike Klein7c4af542017-03-29 18:21:14 -040019100HIDDEN _sk_repeat_y_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019101.globl _sk_repeat_y_avx
Mike Klein86714282017-04-13 17:37:38 -040019102FUNCTION(_sk_repeat_y_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019103_sk_repeat_y_avx:
19104 .byte 72,173 // lods %ds:(%rsi),%rax
19105 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
19106 .byte 196,65,116,94,200 // vdivps %ymm8,%ymm1,%ymm9
19107 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040019108 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
19109 .byte 196,193,116,92,200 // vsubps %ymm8,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040019110 .byte 72,173 // lods %ds:(%rsi),%rax
19111 .byte 255,224 // jmpq *%rax
19112
Mike Klein7c4af542017-03-29 18:21:14 -040019113HIDDEN _sk_mirror_x_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019114.globl _sk_mirror_x_avx
Mike Klein86714282017-04-13 17:37:38 -040019115FUNCTION(_sk_mirror_x_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019116_sk_mirror_x_avx:
19117 .byte 72,173 // lods %ds:(%rsi),%rax
19118 .byte 197,121,110,0 // vmovd (%rax),%xmm8
19119 .byte 196,65,121,112,200,0 // vpshufd $0x0,%xmm8,%xmm9
19120 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
19121 .byte 196,65,124,92,209 // vsubps %ymm9,%ymm0,%ymm10
19122 .byte 196,193,58,88,192 // vaddss %xmm8,%xmm8,%xmm0
19123 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
19124 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
19125 .byte 197,44,94,192 // vdivps %ymm0,%ymm10,%ymm8
19126 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
19127 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
19128 .byte 197,172,92,192 // vsubps %ymm0,%ymm10,%ymm0
19129 .byte 196,193,124,92,193 // vsubps %ymm9,%ymm0,%ymm0
19130 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
19131 .byte 197,60,92,192 // vsubps %ymm0,%ymm8,%ymm8
Mike Kleinfc84dc52017-05-11 15:29:31 -040019132 .byte 197,188,84,192 // vandps %ymm0,%ymm8,%ymm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040019133 .byte 72,173 // lods %ds:(%rsi),%rax
19134 .byte 255,224 // jmpq *%rax
19135
Mike Klein7c4af542017-03-29 18:21:14 -040019136HIDDEN _sk_mirror_y_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019137.globl _sk_mirror_y_avx
Mike Klein86714282017-04-13 17:37:38 -040019138FUNCTION(_sk_mirror_y_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019139_sk_mirror_y_avx:
19140 .byte 72,173 // lods %ds:(%rsi),%rax
19141 .byte 197,121,110,0 // vmovd (%rax),%xmm8
19142 .byte 196,65,121,112,200,0 // vpshufd $0x0,%xmm8,%xmm9
19143 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
19144 .byte 196,65,116,92,209 // vsubps %ymm9,%ymm1,%ymm10
19145 .byte 196,193,58,88,200 // vaddss %xmm8,%xmm8,%xmm1
19146 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
19147 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
19148 .byte 197,44,94,193 // vdivps %ymm1,%ymm10,%ymm8
19149 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
19150 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
19151 .byte 197,172,92,201 // vsubps %ymm1,%ymm10,%ymm1
19152 .byte 196,193,116,92,201 // vsubps %ymm9,%ymm1,%ymm1
19153 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
19154 .byte 197,60,92,193 // vsubps %ymm1,%ymm8,%ymm8
Mike Kleinfc84dc52017-05-11 15:29:31 -040019155 .byte 197,188,84,201 // vandps %ymm1,%ymm8,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040019156 .byte 72,173 // lods %ds:(%rsi),%rax
19157 .byte 255,224 // jmpq *%rax
19158
Mike Klein9f85d682017-05-23 07:52:01 -040019159HIDDEN _sk_clamp_x_1_avx
19160.globl _sk_clamp_x_1_avx
19161FUNCTION(_sk_clamp_x_1_avx)
19162_sk_clamp_x_1_avx:
19163 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
19164 .byte 197,188,95,192 // vmaxps %ymm0,%ymm8,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040019165 .byte 196,98,125,24,5,242,19,0,0 // vbroadcastss 0x13f2(%rip),%ymm8 # 67b8 <_sk_callback_avx+0x45d>
Mike Klein9f85d682017-05-23 07:52:01 -040019166 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
19167 .byte 72,173 // lods %ds:(%rsi),%rax
19168 .byte 255,224 // jmpq *%rax
19169
19170HIDDEN _sk_repeat_x_1_avx
19171.globl _sk_repeat_x_1_avx
19172FUNCTION(_sk_repeat_x_1_avx)
19173_sk_repeat_x_1_avx:
19174 .byte 196,99,125,8,192,1 // vroundps $0x1,%ymm0,%ymm8
19175 .byte 196,193,124,92,192 // vsubps %ymm8,%ymm0,%ymm0
19176 .byte 72,173 // lods %ds:(%rsi),%rax
19177 .byte 255,224 // jmpq *%rax
19178
19179HIDDEN _sk_mirror_x_1_avx
19180.globl _sk_mirror_x_1_avx
19181FUNCTION(_sk_mirror_x_1_avx)
19182_sk_mirror_x_1_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040019183 .byte 196,98,125,24,5,213,19,0,0 // vbroadcastss 0x13d5(%rip),%ymm8 # 67bc <_sk_callback_avx+0x461>
Mike Klein9f85d682017-05-23 07:52:01 -040019184 .byte 196,193,124,88,192 // vaddps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040019185 .byte 196,98,125,24,13,203,19,0,0 // vbroadcastss 0x13cb(%rip),%ymm9 # 67c0 <_sk_callback_avx+0x465>
Mike Klein9f85d682017-05-23 07:52:01 -040019186 .byte 196,65,124,89,201 // vmulps %ymm9,%ymm0,%ymm9
19187 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
19188 .byte 196,65,52,88,201 // vaddps %ymm9,%ymm9,%ymm9
19189 .byte 196,193,124,92,193 // vsubps %ymm9,%ymm0,%ymm0
19190 .byte 196,193,124,88,192 // vaddps %ymm8,%ymm0,%ymm0
19191 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
19192 .byte 197,60,92,192 // vsubps %ymm0,%ymm8,%ymm8
19193 .byte 197,188,84,192 // vandps %ymm0,%ymm8,%ymm0
19194 .byte 72,173 // lods %ds:(%rsi),%rax
19195 .byte 255,224 // jmpq *%rax
19196
Mike Klein7c4af542017-03-29 18:21:14 -040019197HIDDEN _sk_luminance_to_alpha_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019198.globl _sk_luminance_to_alpha_avx
Mike Klein86714282017-04-13 17:37:38 -040019199FUNCTION(_sk_luminance_to_alpha_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019200_sk_luminance_to_alpha_avx:
Mike Klein8ca33562017-05-23 08:07:43 -040019201 .byte 196,226,125,24,29,155,19,0,0 // vbroadcastss 0x139b(%rip),%ymm3 # 67c4 <_sk_callback_avx+0x469>
Mike Kleinfe560a82017-05-01 12:56:35 -040019202 .byte 197,252,89,195 // vmulps %ymm3,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040019203 .byte 196,226,125,24,29,146,19,0,0 // vbroadcastss 0x1392(%rip),%ymm3 # 67c8 <_sk_callback_avx+0x46d>
Mike Kleinfe560a82017-05-01 12:56:35 -040019204 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040019205 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040019206 .byte 196,226,125,24,13,133,19,0,0 // vbroadcastss 0x1385(%rip),%ymm1 # 67cc <_sk_callback_avx+0x471>
Mike Kleinfe560a82017-05-01 12:56:35 -040019207 .byte 197,236,89,201 // vmulps %ymm1,%ymm2,%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040019208 .byte 197,252,88,217 // vaddps %ymm1,%ymm0,%ymm3
19209 .byte 72,173 // lods %ds:(%rsi),%rax
19210 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
19211 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
19212 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
19213 .byte 255,224 // jmpq *%rax
19214
Mike Klein7c4af542017-03-29 18:21:14 -040019215HIDDEN _sk_matrix_2x3_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019216.globl _sk_matrix_2x3_avx
Mike Klein86714282017-04-13 17:37:38 -040019217FUNCTION(_sk_matrix_2x3_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019218_sk_matrix_2x3_avx:
19219 .byte 72,173 // lods %ds:(%rsi),%rax
19220 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
19221 .byte 196,98,125,24,72,8 // vbroadcastss 0x8(%rax),%ymm9
19222 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
19223 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
19224 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
19225 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
19226 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
19227 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
19228 .byte 196,98,125,24,80,12 // vbroadcastss 0xc(%rax),%ymm10
19229 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
19230 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
19231 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
19232 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
19233 .byte 197,252,88,201 // vaddps %ymm1,%ymm0,%ymm1
19234 .byte 72,173 // lods %ds:(%rsi),%rax
19235 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
19236 .byte 255,224 // jmpq *%rax
19237
Mike Klein7c4af542017-03-29 18:21:14 -040019238HIDDEN _sk_matrix_3x4_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019239.globl _sk_matrix_3x4_avx
Mike Klein86714282017-04-13 17:37:38 -040019240FUNCTION(_sk_matrix_3x4_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019241_sk_matrix_3x4_avx:
19242 .byte 72,173 // lods %ds:(%rsi),%rax
19243 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
19244 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
19245 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
19246 .byte 196,98,125,24,88,36 // vbroadcastss 0x24(%rax),%ymm11
19247 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
19248 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
19249 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
19250 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
19251 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
19252 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
19253 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
19254 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
19255 .byte 196,98,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm11
19256 .byte 196,98,125,24,96,40 // vbroadcastss 0x28(%rax),%ymm12
19257 .byte 197,36,89,218 // vmulps %ymm2,%ymm11,%ymm11
19258 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
19259 .byte 197,44,89,209 // vmulps %ymm1,%ymm10,%ymm10
19260 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
19261 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
19262 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
19263 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
19264 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
19265 .byte 196,98,125,24,96,32 // vbroadcastss 0x20(%rax),%ymm12
19266 .byte 196,98,125,24,104,44 // vbroadcastss 0x2c(%rax),%ymm13
19267 .byte 197,156,89,210 // vmulps %ymm2,%ymm12,%ymm2
19268 .byte 196,193,108,88,213 // vaddps %ymm13,%ymm2,%ymm2
19269 .byte 197,164,89,201 // vmulps %ymm1,%ymm11,%ymm1
19270 .byte 197,244,88,202 // vaddps %ymm2,%ymm1,%ymm1
19271 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
19272 .byte 197,252,88,209 // vaddps %ymm1,%ymm0,%ymm2
19273 .byte 72,173 // lods %ds:(%rsi),%rax
19274 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
19275 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
19276 .byte 255,224 // jmpq *%rax
19277
Mike Klein7c4af542017-03-29 18:21:14 -040019278HIDDEN _sk_matrix_4x5_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019279.globl _sk_matrix_4x5_avx
Mike Klein86714282017-04-13 17:37:38 -040019280FUNCTION(_sk_matrix_4x5_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019281_sk_matrix_4x5_avx:
19282 .byte 72,173 // lods %ds:(%rsi),%rax
19283 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
19284 .byte 196,98,125,24,72,16 // vbroadcastss 0x10(%rax),%ymm9
19285 .byte 196,98,125,24,80,32 // vbroadcastss 0x20(%rax),%ymm10
19286 .byte 196,98,125,24,88,48 // vbroadcastss 0x30(%rax),%ymm11
19287 .byte 196,98,125,24,96,64 // vbroadcastss 0x40(%rax),%ymm12
19288 .byte 197,36,89,219 // vmulps %ymm3,%ymm11,%ymm11
19289 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
19290 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
19291 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
19292 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
19293 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
19294 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
19295 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
19296 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
19297 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
19298 .byte 196,98,125,24,88,36 // vbroadcastss 0x24(%rax),%ymm11
19299 .byte 196,98,125,24,96,52 // vbroadcastss 0x34(%rax),%ymm12
19300 .byte 196,98,125,24,104,68 // vbroadcastss 0x44(%rax),%ymm13
19301 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
19302 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
19303 .byte 197,36,89,218 // vmulps %ymm2,%ymm11,%ymm11
19304 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
19305 .byte 197,44,89,209 // vmulps %ymm1,%ymm10,%ymm10
19306 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
19307 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
19308 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
19309 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
19310 .byte 196,98,125,24,88,24 // vbroadcastss 0x18(%rax),%ymm11
19311 .byte 196,98,125,24,96,40 // vbroadcastss 0x28(%rax),%ymm12
19312 .byte 196,98,125,24,104,56 // vbroadcastss 0x38(%rax),%ymm13
19313 .byte 196,98,125,24,112,72 // vbroadcastss 0x48(%rax),%ymm14
19314 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
19315 .byte 196,65,20,88,238 // vaddps %ymm14,%ymm13,%ymm13
19316 .byte 197,28,89,226 // vmulps %ymm2,%ymm12,%ymm12
19317 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
19318 .byte 197,36,89,217 // vmulps %ymm1,%ymm11,%ymm11
19319 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
19320 .byte 197,44,89,208 // vmulps %ymm0,%ymm10,%ymm10
19321 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
19322 .byte 196,98,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm11
19323 .byte 196,98,125,24,96,28 // vbroadcastss 0x1c(%rax),%ymm12
19324 .byte 196,98,125,24,104,44 // vbroadcastss 0x2c(%rax),%ymm13
19325 .byte 196,98,125,24,112,60 // vbroadcastss 0x3c(%rax),%ymm14
19326 .byte 196,98,125,24,120,76 // vbroadcastss 0x4c(%rax),%ymm15
19327 .byte 197,140,89,219 // vmulps %ymm3,%ymm14,%ymm3
19328 .byte 196,193,100,88,223 // vaddps %ymm15,%ymm3,%ymm3
19329 .byte 197,148,89,210 // vmulps %ymm2,%ymm13,%ymm2
19330 .byte 197,236,88,211 // vaddps %ymm3,%ymm2,%ymm2
19331 .byte 197,156,89,201 // vmulps %ymm1,%ymm12,%ymm1
19332 .byte 197,244,88,202 // vaddps %ymm2,%ymm1,%ymm1
19333 .byte 197,164,89,192 // vmulps %ymm0,%ymm11,%ymm0
19334 .byte 197,252,88,217 // vaddps %ymm1,%ymm0,%ymm3
19335 .byte 72,173 // lods %ds:(%rsi),%rax
19336 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
19337 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
19338 .byte 197,124,41,210 // vmovaps %ymm10,%ymm2
19339 .byte 255,224 // jmpq *%rax
19340
Mike Reed02640952017-05-19 15:32:13 -040019341HIDDEN _sk_matrix_4x3_avx
19342.globl _sk_matrix_4x3_avx
19343FUNCTION(_sk_matrix_4x3_avx)
19344_sk_matrix_4x3_avx:
19345 .byte 72,173 // lods %ds:(%rsi),%rax
19346 .byte 196,226,125,24,16 // vbroadcastss (%rax),%ymm2
19347 .byte 196,226,125,24,88,16 // vbroadcastss 0x10(%rax),%ymm3
19348 .byte 196,98,125,24,64,32 // vbroadcastss 0x20(%rax),%ymm8
19349 .byte 197,228,89,217 // vmulps %ymm1,%ymm3,%ymm3
19350 .byte 196,193,100,88,216 // vaddps %ymm8,%ymm3,%ymm3
19351 .byte 197,236,89,208 // vmulps %ymm0,%ymm2,%ymm2
19352 .byte 197,108,88,195 // vaddps %ymm3,%ymm2,%ymm8
19353 .byte 196,226,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm2
19354 .byte 196,226,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm3
19355 .byte 196,98,125,24,72,36 // vbroadcastss 0x24(%rax),%ymm9
19356 .byte 197,228,89,217 // vmulps %ymm1,%ymm3,%ymm3
19357 .byte 196,193,100,88,217 // vaddps %ymm9,%ymm3,%ymm3
19358 .byte 197,236,89,208 // vmulps %ymm0,%ymm2,%ymm2
19359 .byte 197,108,88,203 // vaddps %ymm3,%ymm2,%ymm9
19360 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
19361 .byte 196,226,125,24,88,24 // vbroadcastss 0x18(%rax),%ymm3
19362 .byte 196,98,125,24,80,40 // vbroadcastss 0x28(%rax),%ymm10
19363 .byte 197,228,89,217 // vmulps %ymm1,%ymm3,%ymm3
19364 .byte 196,193,100,88,218 // vaddps %ymm10,%ymm3,%ymm3
19365 .byte 197,236,89,208 // vmulps %ymm0,%ymm2,%ymm2
19366 .byte 197,236,88,211 // vaddps %ymm3,%ymm2,%ymm2
19367 .byte 196,226,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm3
19368 .byte 196,98,125,24,80,28 // vbroadcastss 0x1c(%rax),%ymm10
19369 .byte 196,98,125,24,88,44 // vbroadcastss 0x2c(%rax),%ymm11
19370 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
19371 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
19372 .byte 197,228,89,192 // vmulps %ymm0,%ymm3,%ymm0
19373 .byte 197,252,88,217 // vaddps %ymm1,%ymm0,%ymm3
19374 .byte 72,173 // lods %ds:(%rsi),%rax
19375 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
19376 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
19377 .byte 255,224 // jmpq *%rax
19378
Mike Klein7c4af542017-03-29 18:21:14 -040019379HIDDEN _sk_matrix_perspective_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040019380.globl _sk_matrix_perspective_avx
Mike Klein86714282017-04-13 17:37:38 -040019381FUNCTION(_sk_matrix_perspective_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019382_sk_matrix_perspective_avx:
19383 .byte 72,173 // lods %ds:(%rsi),%rax
19384 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
19385 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
19386 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
19387 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
19388 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
19389 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
19390 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
19391 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
19392 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
19393 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
19394 .byte 197,44,89,209 // vmulps %ymm1,%ymm10,%ymm10
19395 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
19396 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
19397 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
19398 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
19399 .byte 196,98,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm11
19400 .byte 196,98,125,24,96,32 // vbroadcastss 0x20(%rax),%ymm12
19401 .byte 197,164,89,201 // vmulps %ymm1,%ymm11,%ymm1
19402 .byte 196,193,116,88,204 // vaddps %ymm12,%ymm1,%ymm1
19403 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
19404 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
19405 .byte 197,252,83,200 // vrcpps %ymm0,%ymm1
19406 .byte 197,188,89,193 // vmulps %ymm1,%ymm8,%ymm0
19407 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
19408 .byte 72,173 // lods %ds:(%rsi),%rax
19409 .byte 255,224 // jmpq *%rax
19410
Herb Derby4de13042017-05-15 10:49:39 -040019411HIDDEN _sk_evenly_spaced_gradient_avx
19412.globl _sk_evenly_spaced_gradient_avx
19413FUNCTION(_sk_evenly_spaced_gradient_avx)
19414_sk_evenly_spaced_gradient_avx:
19415 .byte 85 // push %rbp
19416 .byte 65,87 // push %r15
19417 .byte 65,86 // push %r14
19418 .byte 65,85 // push %r13
19419 .byte 65,84 // push %r12
19420 .byte 83 // push %rbx
19421 .byte 72,173 // lods %ds:(%rsi),%rax
19422 .byte 72,139,24 // mov (%rax),%rbx
19423 .byte 72,139,104,8 // mov 0x8(%rax),%rbp
19424 .byte 72,255,203 // dec %rbx
Mike Klein8ca33562017-05-23 08:07:43 -040019425 .byte 120,7 // js 579d <_sk_evenly_spaced_gradient_avx+0x1f>
Herb Derby4de13042017-05-15 10:49:39 -040019426 .byte 196,225,242,42,203 // vcvtsi2ss %rbx,%xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040019427 .byte 235,21 // jmp 57b2 <_sk_evenly_spaced_gradient_avx+0x34>
Herb Derby4de13042017-05-15 10:49:39 -040019428 .byte 73,137,216 // mov %rbx,%r8
19429 .byte 73,209,232 // shr %r8
19430 .byte 131,227,1 // and $0x1,%ebx
19431 .byte 76,9,195 // or %r8,%rbx
19432 .byte 196,225,242,42,203 // vcvtsi2ss %rbx,%xmm1,%xmm1
19433 .byte 197,242,88,201 // vaddss %xmm1,%xmm1,%xmm1
19434 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
19435 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
19436 .byte 197,244,89,200 // vmulps %ymm0,%ymm1,%ymm1
19437 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
19438 .byte 196,195,249,22,200,1 // vpextrq $0x1,%xmm1,%r8
19439 .byte 69,137,193 // mov %r8d,%r9d
19440 .byte 73,193,232,32 // shr $0x20,%r8
19441 .byte 196,193,249,126,202 // vmovq %xmm1,%r10
19442 .byte 69,137,211 // mov %r10d,%r11d
19443 .byte 73,193,234,32 // shr $0x20,%r10
19444 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
19445 .byte 196,195,249,22,207,1 // vpextrq $0x1,%xmm1,%r15
19446 .byte 69,137,254 // mov %r15d,%r14d
19447 .byte 73,193,239,32 // shr $0x20,%r15
19448 .byte 196,193,249,126,205 // vmovq %xmm1,%r13
19449 .byte 69,137,236 // mov %r13d,%r12d
19450 .byte 73,193,237,32 // shr $0x20,%r13
19451 .byte 196,161,122,16,76,165,0 // vmovss 0x0(%rbp,%r12,4),%xmm1
19452 .byte 196,163,113,33,76,173,0,16 // vinsertps $0x10,0x0(%rbp,%r13,4),%xmm1,%xmm1
19453 .byte 196,161,122,16,84,181,0 // vmovss 0x0(%rbp,%r14,4),%xmm2
19454 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19455 .byte 196,161,122,16,84,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm2
19456 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19457 .byte 196,161,122,16,84,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm2
19458 .byte 196,163,105,33,84,149,0,16 // vinsertps $0x10,0x0(%rbp,%r10,4),%xmm2,%xmm2
19459 .byte 196,161,122,16,92,141,0 // vmovss 0x0(%rbp,%r9,4),%xmm3
19460 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19461 .byte 196,161,122,16,92,133,0 // vmovss 0x0(%rbp,%r8,4),%xmm3
19462 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19463 .byte 196,99,109,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm8
19464 .byte 72,139,88,40 // mov 0x28(%rax),%rbx
19465 .byte 196,161,122,16,20,163 // vmovss (%rbx,%r12,4),%xmm2
19466 .byte 196,163,105,33,20,171,16 // vinsertps $0x10,(%rbx,%r13,4),%xmm2,%xmm2
19467 .byte 196,161,122,16,28,179 // vmovss (%rbx,%r14,4),%xmm3
19468 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19469 .byte 196,161,122,16,28,187 // vmovss (%rbx,%r15,4),%xmm3
19470 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19471 .byte 196,161,122,16,28,155 // vmovss (%rbx,%r11,4),%xmm3
19472 .byte 196,163,97,33,28,147,16 // vinsertps $0x10,(%rbx,%r10,4),%xmm3,%xmm3
19473 .byte 196,161,122,16,12,139 // vmovss (%rbx,%r9,4),%xmm1
19474 .byte 196,227,97,33,201,32 // vinsertps $0x20,%xmm1,%xmm3,%xmm1
19475 .byte 196,161,122,16,28,131 // vmovss (%rbx,%r8,4),%xmm3
19476 .byte 196,227,113,33,203,48 // vinsertps $0x30,%xmm3,%xmm1,%xmm1
19477 .byte 196,99,117,24,226,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm12
19478 .byte 72,139,88,16 // mov 0x10(%rax),%rbx
19479 .byte 196,161,122,16,12,163 // vmovss (%rbx,%r12,4),%xmm1
19480 .byte 196,163,113,33,12,171,16 // vinsertps $0x10,(%rbx,%r13,4),%xmm1,%xmm1
19481 .byte 196,161,122,16,28,179 // vmovss (%rbx,%r14,4),%xmm3
19482 .byte 196,227,113,33,203,32 // vinsertps $0x20,%xmm3,%xmm1,%xmm1
19483 .byte 196,161,122,16,28,187 // vmovss (%rbx,%r15,4),%xmm3
19484 .byte 196,227,113,33,203,48 // vinsertps $0x30,%xmm3,%xmm1,%xmm1
19485 .byte 196,161,122,16,28,155 // vmovss (%rbx,%r11,4),%xmm3
19486 .byte 196,163,97,33,28,147,16 // vinsertps $0x10,(%rbx,%r10,4),%xmm3,%xmm3
19487 .byte 196,161,122,16,20,139 // vmovss (%rbx,%r9,4),%xmm2
19488 .byte 196,227,97,33,210,32 // vinsertps $0x20,%xmm2,%xmm3,%xmm2
19489 .byte 196,161,122,16,28,131 // vmovss (%rbx,%r8,4),%xmm3
19490 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19491 .byte 196,99,109,24,233,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm13
19492 .byte 72,139,88,48 // mov 0x30(%rax),%rbx
19493 .byte 196,161,122,16,12,163 // vmovss (%rbx,%r12,4),%xmm1
19494 .byte 196,163,113,33,12,171,16 // vinsertps $0x10,(%rbx,%r13,4),%xmm1,%xmm1
19495 .byte 196,161,122,16,20,179 // vmovss (%rbx,%r14,4),%xmm2
19496 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19497 .byte 196,161,122,16,20,187 // vmovss (%rbx,%r15,4),%xmm2
19498 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19499 .byte 196,161,122,16,20,155 // vmovss (%rbx,%r11,4),%xmm2
19500 .byte 196,163,105,33,20,147,16 // vinsertps $0x10,(%rbx,%r10,4),%xmm2,%xmm2
19501 .byte 196,161,122,16,28,139 // vmovss (%rbx,%r9,4),%xmm3
19502 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19503 .byte 196,161,122,16,28,131 // vmovss (%rbx,%r8,4),%xmm3
19504 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19505 .byte 196,99,109,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm9
19506 .byte 72,139,88,24 // mov 0x18(%rax),%rbx
19507 .byte 196,161,122,16,12,163 // vmovss (%rbx,%r12,4),%xmm1
19508 .byte 196,163,113,33,12,171,16 // vinsertps $0x10,(%rbx,%r13,4),%xmm1,%xmm1
19509 .byte 196,161,122,16,20,179 // vmovss (%rbx,%r14,4),%xmm2
19510 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19511 .byte 196,161,122,16,20,187 // vmovss (%rbx,%r15,4),%xmm2
19512 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19513 .byte 196,161,122,16,20,155 // vmovss (%rbx,%r11,4),%xmm2
19514 .byte 196,163,105,33,20,147,16 // vinsertps $0x10,(%rbx,%r10,4),%xmm2,%xmm2
19515 .byte 196,161,122,16,28,139 // vmovss (%rbx,%r9,4),%xmm3
19516 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19517 .byte 196,161,122,16,28,131 // vmovss (%rbx,%r8,4),%xmm3
19518 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19519 .byte 196,99,109,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm10
19520 .byte 72,139,88,56 // mov 0x38(%rax),%rbx
19521 .byte 196,161,122,16,12,163 // vmovss (%rbx,%r12,4),%xmm1
19522 .byte 196,163,113,33,12,171,16 // vinsertps $0x10,(%rbx,%r13,4),%xmm1,%xmm1
19523 .byte 196,161,122,16,20,179 // vmovss (%rbx,%r14,4),%xmm2
19524 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19525 .byte 196,161,122,16,20,187 // vmovss (%rbx,%r15,4),%xmm2
19526 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19527 .byte 196,161,122,16,20,155 // vmovss (%rbx,%r11,4),%xmm2
19528 .byte 196,163,105,33,20,147,16 // vinsertps $0x10,(%rbx,%r10,4),%xmm2,%xmm2
19529 .byte 196,161,122,16,28,139 // vmovss (%rbx,%r9,4),%xmm3
19530 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19531 .byte 196,161,122,16,28,131 // vmovss (%rbx,%r8,4),%xmm3
19532 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19533 .byte 196,99,109,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm11
19534 .byte 72,139,88,32 // mov 0x20(%rax),%rbx
19535 .byte 196,161,122,16,12,163 // vmovss (%rbx,%r12,4),%xmm1
19536 .byte 196,163,113,33,12,171,16 // vinsertps $0x10,(%rbx,%r13,4),%xmm1,%xmm1
19537 .byte 196,161,122,16,20,179 // vmovss (%rbx,%r14,4),%xmm2
19538 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19539 .byte 196,161,122,16,20,187 // vmovss (%rbx,%r15,4),%xmm2
19540 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19541 .byte 196,161,122,16,20,155 // vmovss (%rbx,%r11,4),%xmm2
19542 .byte 196,163,105,33,20,147,16 // vinsertps $0x10,(%rbx,%r10,4),%xmm2,%xmm2
19543 .byte 196,161,122,16,28,139 // vmovss (%rbx,%r9,4),%xmm3
19544 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19545 .byte 196,161,122,16,28,131 // vmovss (%rbx,%r8,4),%xmm3
19546 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19547 .byte 196,99,109,24,241,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm14
19548 .byte 72,139,64,64 // mov 0x40(%rax),%rax
19549 .byte 196,161,122,16,12,160 // vmovss (%rax,%r12,4),%xmm1
19550 .byte 196,163,113,33,12,168,16 // vinsertps $0x10,(%rax,%r13,4),%xmm1,%xmm1
19551 .byte 196,161,122,16,20,176 // vmovss (%rax,%r14,4),%xmm2
19552 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19553 .byte 196,161,122,16,20,184 // vmovss (%rax,%r15,4),%xmm2
19554 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19555 .byte 196,161,122,16,20,152 // vmovss (%rax,%r11,4),%xmm2
19556 .byte 196,163,105,33,20,144,16 // vinsertps $0x10,(%rax,%r10,4),%xmm2,%xmm2
19557 .byte 196,161,122,16,28,136 // vmovss (%rax,%r9,4),%xmm3
19558 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19559 .byte 196,161,122,16,28,128 // vmovss (%rax,%r8,4),%xmm3
19560 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19561 .byte 196,227,109,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm3
19562 .byte 197,188,89,200 // vmulps %ymm0,%ymm8,%ymm1
19563 .byte 196,65,116,88,196 // vaddps %ymm12,%ymm1,%ymm8
19564 .byte 197,148,89,200 // vmulps %ymm0,%ymm13,%ymm1
19565 .byte 196,193,116,88,201 // vaddps %ymm9,%ymm1,%ymm1
19566 .byte 197,172,89,208 // vmulps %ymm0,%ymm10,%ymm2
19567 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
19568 .byte 197,140,89,192 // vmulps %ymm0,%ymm14,%ymm0
19569 .byte 197,252,88,219 // vaddps %ymm3,%ymm0,%ymm3
19570 .byte 72,173 // lods %ds:(%rsi),%rax
19571 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
19572 .byte 91 // pop %rbx
19573 .byte 65,92 // pop %r12
19574 .byte 65,93 // pop %r13
19575 .byte 65,94 // pop %r14
19576 .byte 65,95 // pop %r15
19577 .byte 93 // pop %rbp
19578 .byte 255,224 // jmpq *%rax
19579
Mike Klein5c7960b2017-05-11 10:59:22 -040019580HIDDEN _sk_gradient_avx
19581.globl _sk_gradient_avx
19582FUNCTION(_sk_gradient_avx)
19583_sk_gradient_avx:
Herb Derby4de13042017-05-15 10:49:39 -040019584 .byte 85 // push %rbp
19585 .byte 65,87 // push %r15
19586 .byte 65,86 // push %r14
19587 .byte 65,85 // push %r13
19588 .byte 65,84 // push %r12
19589 .byte 83 // push %rbx
Herb Derby7b4202d2017-04-10 10:52:34 -040019590 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040019591 .byte 76,139,0 // mov (%rax),%r8
Herb Derby4de13042017-05-15 10:49:39 -040019592 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
19593 .byte 73,131,248,2 // cmp $0x2,%r8
Mike Klein8ca33562017-05-23 08:07:43 -040019594 .byte 114,80 // jb 5b40 <_sk_gradient_avx+0x69>
Herb Derby4de13042017-05-15 10:49:39 -040019595 .byte 72,139,88,72 // mov 0x48(%rax),%rbx
Herb Derby7b4202d2017-04-10 10:52:34 -040019596 .byte 73,255,200 // dec %r8
Herb Derby4de13042017-05-15 10:49:39 -040019597 .byte 72,131,195,4 // add $0x4,%rbx
Herb Derby7b4202d2017-04-10 10:52:34 -040019598 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040019599 .byte 196,98,125,24,21,199,12,0,0 // vbroadcastss 0xcc7(%rip),%ymm10 # 67d0 <_sk_callback_avx+0x475>
Herb Derby4de13042017-05-15 10:49:39 -040019600 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
19601 .byte 196,98,125,24,3 // vbroadcastss (%rbx),%ymm8
19602 .byte 197,60,194,192,2 // vcmpleps %ymm0,%ymm8,%ymm8
19603 .byte 196,67,53,74,194,128 // vblendvps %ymm8,%ymm10,%ymm9,%ymm8
19604 .byte 196,99,125,25,194,1 // vextractf128 $0x1,%ymm8,%xmm2
19605 .byte 196,227,125,25,203,1 // vextractf128 $0x1,%ymm1,%xmm3
19606 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
19607 .byte 197,185,254,201 // vpaddd %xmm1,%xmm8,%xmm1
19608 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
19609 .byte 72,131,195,4 // add $0x4,%rbx
19610 .byte 73,255,200 // dec %r8
Mike Klein8ca33562017-05-23 08:07:43 -040019611 .byte 117,205 // jne 5b0d <_sk_gradient_avx+0x36>
Herb Derby4de13042017-05-15 10:49:39 -040019612 .byte 196,195,249,22,200,1 // vpextrq $0x1,%xmm1,%r8
19613 .byte 69,137,193 // mov %r8d,%r9d
19614 .byte 73,193,232,32 // shr $0x20,%r8
19615 .byte 196,193,249,126,202 // vmovq %xmm1,%r10
19616 .byte 69,137,211 // mov %r10d,%r11d
19617 .byte 73,193,234,32 // shr $0x20,%r10
19618 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
19619 .byte 196,195,249,22,207,1 // vpextrq $0x1,%xmm1,%r15
19620 .byte 69,137,254 // mov %r15d,%r14d
19621 .byte 73,193,239,32 // shr $0x20,%r15
19622 .byte 196,193,249,126,205 // vmovq %xmm1,%r13
19623 .byte 69,137,236 // mov %r13d,%r12d
19624 .byte 73,193,237,32 // shr $0x20,%r13
19625 .byte 72,139,104,8 // mov 0x8(%rax),%rbp
19626 .byte 72,139,88,16 // mov 0x10(%rax),%rbx
19627 .byte 196,161,122,16,76,165,0 // vmovss 0x0(%rbp,%r12,4),%xmm1
19628 .byte 196,163,113,33,76,173,0,16 // vinsertps $0x10,0x0(%rbp,%r13,4),%xmm1,%xmm1
19629 .byte 196,161,122,16,84,181,0 // vmovss 0x0(%rbp,%r14,4),%xmm2
19630 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19631 .byte 196,161,122,16,84,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm2
19632 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19633 .byte 196,161,122,16,84,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm2
19634 .byte 196,163,105,33,84,149,0,16 // vinsertps $0x10,0x0(%rbp,%r10,4),%xmm2,%xmm2
19635 .byte 196,161,122,16,92,141,0 // vmovss 0x0(%rbp,%r9,4),%xmm3
19636 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19637 .byte 196,161,122,16,92,133,0 // vmovss 0x0(%rbp,%r8,4),%xmm3
19638 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19639 .byte 196,99,109,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm8
19640 .byte 72,139,104,40 // mov 0x28(%rax),%rbp
19641 .byte 196,161,122,16,84,165,0 // vmovss 0x0(%rbp,%r12,4),%xmm2
19642 .byte 196,163,105,33,84,173,0,16 // vinsertps $0x10,0x0(%rbp,%r13,4),%xmm2,%xmm2
19643 .byte 196,161,122,16,92,181,0 // vmovss 0x0(%rbp,%r14,4),%xmm3
19644 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19645 .byte 196,161,122,16,92,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm3
19646 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19647 .byte 196,161,122,16,92,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm3
19648 .byte 196,163,97,33,92,149,0,16 // vinsertps $0x10,0x0(%rbp,%r10,4),%xmm3,%xmm3
19649 .byte 196,161,122,16,76,141,0 // vmovss 0x0(%rbp,%r9,4),%xmm1
19650 .byte 196,227,97,33,201,32 // vinsertps $0x20,%xmm1,%xmm3,%xmm1
19651 .byte 196,161,122,16,92,133,0 // vmovss 0x0(%rbp,%r8,4),%xmm3
19652 .byte 196,227,113,33,203,48 // vinsertps $0x30,%xmm3,%xmm1,%xmm1
19653 .byte 196,99,117,24,226,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm12
19654 .byte 196,161,122,16,12,163 // vmovss (%rbx,%r12,4),%xmm1
19655 .byte 196,163,113,33,12,171,16 // vinsertps $0x10,(%rbx,%r13,4),%xmm1,%xmm1
19656 .byte 196,161,122,16,28,179 // vmovss (%rbx,%r14,4),%xmm3
19657 .byte 196,227,113,33,203,32 // vinsertps $0x20,%xmm3,%xmm1,%xmm1
19658 .byte 196,161,122,16,28,187 // vmovss (%rbx,%r15,4),%xmm3
19659 .byte 196,227,113,33,203,48 // vinsertps $0x30,%xmm3,%xmm1,%xmm1
19660 .byte 196,161,122,16,28,155 // vmovss (%rbx,%r11,4),%xmm3
19661 .byte 196,163,97,33,28,147,16 // vinsertps $0x10,(%rbx,%r10,4),%xmm3,%xmm3
19662 .byte 196,161,122,16,20,139 // vmovss (%rbx,%r9,4),%xmm2
19663 .byte 196,227,97,33,210,32 // vinsertps $0x20,%xmm2,%xmm3,%xmm2
19664 .byte 196,161,122,16,28,131 // vmovss (%rbx,%r8,4),%xmm3
19665 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19666 .byte 196,99,109,24,233,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm13
19667 .byte 72,139,88,48 // mov 0x30(%rax),%rbx
19668 .byte 196,161,122,16,12,163 // vmovss (%rbx,%r12,4),%xmm1
19669 .byte 196,163,113,33,12,171,16 // vinsertps $0x10,(%rbx,%r13,4),%xmm1,%xmm1
19670 .byte 196,161,122,16,20,179 // vmovss (%rbx,%r14,4),%xmm2
19671 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19672 .byte 196,161,122,16,20,187 // vmovss (%rbx,%r15,4),%xmm2
19673 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19674 .byte 196,161,122,16,20,155 // vmovss (%rbx,%r11,4),%xmm2
19675 .byte 196,163,105,33,20,147,16 // vinsertps $0x10,(%rbx,%r10,4),%xmm2,%xmm2
19676 .byte 196,161,122,16,28,139 // vmovss (%rbx,%r9,4),%xmm3
19677 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19678 .byte 196,161,122,16,28,131 // vmovss (%rbx,%r8,4),%xmm3
19679 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19680 .byte 196,99,109,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm9
19681 .byte 72,139,88,24 // mov 0x18(%rax),%rbx
19682 .byte 196,161,122,16,12,163 // vmovss (%rbx,%r12,4),%xmm1
19683 .byte 196,163,113,33,12,171,16 // vinsertps $0x10,(%rbx,%r13,4),%xmm1,%xmm1
19684 .byte 196,161,122,16,20,179 // vmovss (%rbx,%r14,4),%xmm2
19685 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19686 .byte 196,161,122,16,20,187 // vmovss (%rbx,%r15,4),%xmm2
19687 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19688 .byte 196,161,122,16,20,155 // vmovss (%rbx,%r11,4),%xmm2
19689 .byte 196,163,105,33,20,147,16 // vinsertps $0x10,(%rbx,%r10,4),%xmm2,%xmm2
19690 .byte 196,161,122,16,28,139 // vmovss (%rbx,%r9,4),%xmm3
19691 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19692 .byte 196,161,122,16,28,131 // vmovss (%rbx,%r8,4),%xmm3
19693 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19694 .byte 196,99,109,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm10
19695 .byte 72,139,88,56 // mov 0x38(%rax),%rbx
19696 .byte 196,161,122,16,12,163 // vmovss (%rbx,%r12,4),%xmm1
19697 .byte 196,163,113,33,12,171,16 // vinsertps $0x10,(%rbx,%r13,4),%xmm1,%xmm1
19698 .byte 196,161,122,16,20,179 // vmovss (%rbx,%r14,4),%xmm2
19699 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19700 .byte 196,161,122,16,20,187 // vmovss (%rbx,%r15,4),%xmm2
19701 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19702 .byte 196,161,122,16,20,155 // vmovss (%rbx,%r11,4),%xmm2
19703 .byte 196,163,105,33,20,147,16 // vinsertps $0x10,(%rbx,%r10,4),%xmm2,%xmm2
19704 .byte 196,161,122,16,28,139 // vmovss (%rbx,%r9,4),%xmm3
19705 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19706 .byte 196,161,122,16,28,131 // vmovss (%rbx,%r8,4),%xmm3
19707 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19708 .byte 196,99,109,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm11
19709 .byte 72,139,88,32 // mov 0x20(%rax),%rbx
19710 .byte 196,161,122,16,12,163 // vmovss (%rbx,%r12,4),%xmm1
19711 .byte 196,163,113,33,12,171,16 // vinsertps $0x10,(%rbx,%r13,4),%xmm1,%xmm1
19712 .byte 196,161,122,16,20,179 // vmovss (%rbx,%r14,4),%xmm2
19713 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19714 .byte 196,161,122,16,20,187 // vmovss (%rbx,%r15,4),%xmm2
19715 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19716 .byte 196,161,122,16,20,155 // vmovss (%rbx,%r11,4),%xmm2
19717 .byte 196,163,105,33,20,147,16 // vinsertps $0x10,(%rbx,%r10,4),%xmm2,%xmm2
19718 .byte 196,161,122,16,28,139 // vmovss (%rbx,%r9,4),%xmm3
19719 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19720 .byte 196,161,122,16,28,131 // vmovss (%rbx,%r8,4),%xmm3
19721 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19722 .byte 196,99,109,24,241,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm14
19723 .byte 72,139,64,64 // mov 0x40(%rax),%rax
19724 .byte 196,161,122,16,12,160 // vmovss (%rax,%r12,4),%xmm1
19725 .byte 196,163,113,33,12,168,16 // vinsertps $0x10,(%rax,%r13,4),%xmm1,%xmm1
19726 .byte 196,161,122,16,20,176 // vmovss (%rax,%r14,4),%xmm2
19727 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
19728 .byte 196,161,122,16,20,184 // vmovss (%rax,%r15,4),%xmm2
19729 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
19730 .byte 196,161,122,16,20,152 // vmovss (%rax,%r11,4),%xmm2
19731 .byte 196,163,105,33,20,144,16 // vinsertps $0x10,(%rax,%r10,4),%xmm2,%xmm2
19732 .byte 196,161,122,16,28,136 // vmovss (%rax,%r9,4),%xmm3
19733 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
19734 .byte 196,161,122,16,28,128 // vmovss (%rax,%r8,4),%xmm3
19735 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
19736 .byte 196,227,109,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm3
19737 .byte 197,188,89,200 // vmulps %ymm0,%ymm8,%ymm1
19738 .byte 196,65,116,88,196 // vaddps %ymm12,%ymm1,%ymm8
19739 .byte 197,148,89,200 // vmulps %ymm0,%ymm13,%ymm1
19740 .byte 196,193,116,88,201 // vaddps %ymm9,%ymm1,%ymm1
19741 .byte 197,172,89,208 // vmulps %ymm0,%ymm10,%ymm2
19742 .byte 196,193,108,88,211 // vaddps %ymm11,%ymm2,%ymm2
19743 .byte 197,140,89,192 // vmulps %ymm0,%ymm14,%ymm0
Herb Derby7b4202d2017-04-10 10:52:34 -040019744 .byte 197,252,88,219 // vaddps %ymm3,%ymm0,%ymm3
19745 .byte 72,173 // lods %ds:(%rsi),%rax
19746 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
Herb Derby4de13042017-05-15 10:49:39 -040019747 .byte 91 // pop %rbx
19748 .byte 65,92 // pop %r12
19749 .byte 65,93 // pop %r13
19750 .byte 65,94 // pop %r14
19751 .byte 65,95 // pop %r15
19752 .byte 93 // pop %rbp
Herb Derby7b4202d2017-04-10 10:52:34 -040019753 .byte 255,224 // jmpq *%rax
19754
Mike Klein5c7960b2017-05-11 10:59:22 -040019755HIDDEN _sk_evenly_spaced_2_stop_gradient_avx
19756.globl _sk_evenly_spaced_2_stop_gradient_avx
19757FUNCTION(_sk_evenly_spaced_2_stop_gradient_avx)
19758_sk_evenly_spaced_2_stop_gradient_avx:
Mike Kleind7e06ae2017-03-29 16:33:06 -040019759 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040019760 .byte 196,226,125,24,8 // vbroadcastss (%rax),%ymm1
19761 .byte 196,226,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040019762 .byte 197,244,89,200 // vmulps %ymm0,%ymm1,%ymm1
Mike Klein8a823fa2017-04-05 17:29:26 -040019763 .byte 197,116,88,194 // vaddps %ymm2,%ymm1,%ymm8
Herb Derby7b4202d2017-04-10 10:52:34 -040019764 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
19765 .byte 196,226,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040019766 .byte 197,244,89,200 // vmulps %ymm0,%ymm1,%ymm1
Mike Klein8a823fa2017-04-05 17:29:26 -040019767 .byte 197,244,88,202 // vaddps %ymm2,%ymm1,%ymm1
Herb Derby7b4202d2017-04-10 10:52:34 -040019768 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
19769 .byte 196,226,125,24,88,24 // vbroadcastss 0x18(%rax),%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040019770 .byte 197,236,89,208 // vmulps %ymm0,%ymm2,%ymm2
Mike Klein8a823fa2017-04-05 17:29:26 -040019771 .byte 197,236,88,211 // vaddps %ymm3,%ymm2,%ymm2
Herb Derby7b4202d2017-04-10 10:52:34 -040019772 .byte 196,226,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm3
19773 .byte 196,98,125,24,72,28 // vbroadcastss 0x1c(%rax),%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040019774 .byte 197,228,89,192 // vmulps %ymm0,%ymm3,%ymm0
Mike Klein8a823fa2017-04-05 17:29:26 -040019775 .byte 196,193,124,88,217 // vaddps %ymm9,%ymm0,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040019776 .byte 72,173 // lods %ds:(%rsi),%rax
19777 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
19778 .byte 255,224 // jmpq *%rax
19779
Mike Klein5c7960b2017-05-11 10:59:22 -040019780HIDDEN _sk_xy_to_unit_angle_avx
19781.globl _sk_xy_to_unit_angle_avx
19782FUNCTION(_sk_xy_to_unit_angle_avx)
19783_sk_xy_to_unit_angle_avx:
Herb Derby7eb86982017-05-02 19:04:39 -040019784 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
19785 .byte 197,60,92,200 // vsubps %ymm0,%ymm8,%ymm9
19786 .byte 197,52,84,200 // vandps %ymm0,%ymm9,%ymm9
19787 .byte 197,60,92,209 // vsubps %ymm1,%ymm8,%ymm10
19788 .byte 197,44,84,209 // vandps %ymm1,%ymm10,%ymm10
19789 .byte 196,65,52,93,218 // vminps %ymm10,%ymm9,%ymm11
19790 .byte 196,65,52,95,226 // vmaxps %ymm10,%ymm9,%ymm12
19791 .byte 196,65,36,94,220 // vdivps %ymm12,%ymm11,%ymm11
19792 .byte 196,65,36,89,227 // vmulps %ymm11,%ymm11,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -040019793 .byte 196,98,125,24,45,235,8,0,0 // vbroadcastss 0x8eb(%rip),%ymm13 # 67d4 <_sk_callback_avx+0x479>
Herb Derby7eb86982017-05-02 19:04:39 -040019794 .byte 196,65,28,89,237 // vmulps %ymm13,%ymm12,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040019795 .byte 196,98,125,24,53,225,8,0,0 // vbroadcastss 0x8e1(%rip),%ymm14 # 67d8 <_sk_callback_avx+0x47d>
Herb Derby7eb86982017-05-02 19:04:39 -040019796 .byte 196,65,20,88,238 // vaddps %ymm14,%ymm13,%ymm13
19797 .byte 196,65,28,89,237 // vmulps %ymm13,%ymm12,%ymm13
Mike Klein8ca33562017-05-23 08:07:43 -040019798 .byte 196,98,125,24,53,210,8,0,0 // vbroadcastss 0x8d2(%rip),%ymm14 # 67dc <_sk_callback_avx+0x481>
Herb Derby7eb86982017-05-02 19:04:39 -040019799 .byte 196,65,20,88,238 // vaddps %ymm14,%ymm13,%ymm13
19800 .byte 196,65,28,89,229 // vmulps %ymm13,%ymm12,%ymm12
Mike Klein8ca33562017-05-23 08:07:43 -040019801 .byte 196,98,125,24,45,195,8,0,0 // vbroadcastss 0x8c3(%rip),%ymm13 # 67e0 <_sk_callback_avx+0x485>
Herb Derby7eb86982017-05-02 19:04:39 -040019802 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
19803 .byte 196,65,36,89,220 // vmulps %ymm12,%ymm11,%ymm11
19804 .byte 196,65,52,194,202,1 // vcmpltps %ymm10,%ymm9,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040019805 .byte 196,98,125,24,21,174,8,0,0 // vbroadcastss 0x8ae(%rip),%ymm10 # 67e4 <_sk_callback_avx+0x489>
Herb Derby7eb86982017-05-02 19:04:39 -040019806 .byte 196,65,44,92,211 // vsubps %ymm11,%ymm10,%ymm10
19807 .byte 196,67,37,74,202,144 // vblendvps %ymm9,%ymm10,%ymm11,%ymm9
19808 .byte 196,193,124,194,192,1 // vcmpltps %ymm8,%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040019809 .byte 196,98,125,24,21,152,8,0,0 // vbroadcastss 0x898(%rip),%ymm10 # 67e8 <_sk_callback_avx+0x48d>
Herb Derby7eb86982017-05-02 19:04:39 -040019810 .byte 196,65,44,92,209 // vsubps %ymm9,%ymm10,%ymm10
19811 .byte 196,195,53,74,194,0 // vblendvps %ymm0,%ymm10,%ymm9,%ymm0
19812 .byte 196,65,116,194,200,1 // vcmpltps %ymm8,%ymm1,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040019813 .byte 196,98,125,24,21,130,8,0,0 // vbroadcastss 0x882(%rip),%ymm10 # 67ec <_sk_callback_avx+0x491>
Herb Derby7eb86982017-05-02 19:04:39 -040019814 .byte 197,44,92,208 // vsubps %ymm0,%ymm10,%ymm10
19815 .byte 196,195,125,74,194,144 // vblendvps %ymm9,%ymm10,%ymm0,%ymm0
19816 .byte 196,65,124,194,200,3 // vcmpunordps %ymm8,%ymm0,%ymm9
19817 .byte 196,195,125,74,192,144 // vblendvps %ymm9,%ymm8,%ymm0,%ymm0
19818 .byte 72,173 // lods %ds:(%rsi),%rax
19819 .byte 255,224 // jmpq *%rax
19820
Herb Derby090fbf82017-05-08 15:10:36 -040019821HIDDEN _sk_xy_to_radius_avx
19822.globl _sk_xy_to_radius_avx
19823FUNCTION(_sk_xy_to_radius_avx)
19824_sk_xy_to_radius_avx:
19825 .byte 197,252,89,192 // vmulps %ymm0,%ymm0,%ymm0
19826 .byte 197,116,89,193 // vmulps %ymm1,%ymm1,%ymm8
19827 .byte 196,193,124,88,192 // vaddps %ymm8,%ymm0,%ymm0
Mike Kleinfd35c742017-05-15 15:55:54 -040019828 .byte 197,252,81,192 // vsqrtps %ymm0,%ymm0
Herb Derby090fbf82017-05-08 15:10:36 -040019829 .byte 72,173 // lods %ds:(%rsi),%rax
19830 .byte 255,224 // jmpq *%rax
19831
Mike Klein0a904492017-04-12 12:52:48 -040019832HIDDEN _sk_save_xy_avx
19833.globl _sk_save_xy_avx
Mike Klein86714282017-04-13 17:37:38 -040019834FUNCTION(_sk_save_xy_avx)
Mike Klein0a904492017-04-12 12:52:48 -040019835_sk_save_xy_avx:
19836 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040019837 .byte 196,98,125,24,5,76,8,0,0 // vbroadcastss 0x84c(%rip),%ymm8 # 67f0 <_sk_callback_avx+0x495>
Mike Kleinfe560a82017-05-01 12:56:35 -040019838 .byte 196,65,124,88,200 // vaddps %ymm8,%ymm0,%ymm9
Mike Klein0a904492017-04-12 12:52:48 -040019839 .byte 196,67,125,8,209,1 // vroundps $0x1,%ymm9,%ymm10
19840 .byte 196,65,52,92,202 // vsubps %ymm10,%ymm9,%ymm9
Mike Kleinfe560a82017-05-01 12:56:35 -040019841 .byte 196,65,116,88,192 // vaddps %ymm8,%ymm1,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040019842 .byte 196,67,125,8,208,1 // vroundps $0x1,%ymm8,%ymm10
19843 .byte 196,65,60,92,194 // vsubps %ymm10,%ymm8,%ymm8
19844 .byte 197,252,17,0 // vmovups %ymm0,(%rax)
19845 .byte 197,252,17,72,32 // vmovups %ymm1,0x20(%rax)
19846 .byte 197,124,17,72,64 // vmovups %ymm9,0x40(%rax)
19847 .byte 197,124,17,64,96 // vmovups %ymm8,0x60(%rax)
19848 .byte 72,173 // lods %ds:(%rsi),%rax
19849 .byte 255,224 // jmpq *%rax
19850
19851HIDDEN _sk_accumulate_avx
19852.globl _sk_accumulate_avx
Mike Klein86714282017-04-13 17:37:38 -040019853FUNCTION(_sk_accumulate_avx)
Mike Klein0a904492017-04-12 12:52:48 -040019854_sk_accumulate_avx:
19855 .byte 72,173 // lods %ds:(%rsi),%rax
19856 .byte 197,124,16,128,128,0,0,0 // vmovups 0x80(%rax),%ymm8
19857 .byte 197,60,89,128,160,0,0,0 // vmulps 0xa0(%rax),%ymm8,%ymm8
19858 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
19859 .byte 197,180,88,228 // vaddps %ymm4,%ymm9,%ymm4
19860 .byte 197,60,89,201 // vmulps %ymm1,%ymm8,%ymm9
19861 .byte 197,180,88,237 // vaddps %ymm5,%ymm9,%ymm5
19862 .byte 197,60,89,202 // vmulps %ymm2,%ymm8,%ymm9
19863 .byte 197,180,88,246 // vaddps %ymm6,%ymm9,%ymm6
19864 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
19865 .byte 197,188,88,255 // vaddps %ymm7,%ymm8,%ymm7
19866 .byte 72,173 // lods %ds:(%rsi),%rax
19867 .byte 255,224 // jmpq *%rax
19868
19869HIDDEN _sk_bilinear_nx_avx
19870.globl _sk_bilinear_nx_avx
Mike Klein86714282017-04-13 17:37:38 -040019871FUNCTION(_sk_bilinear_nx_avx)
Mike Klein0a904492017-04-12 12:52:48 -040019872_sk_bilinear_nx_avx:
19873 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040019874 .byte 196,226,125,24,5,216,7,0,0 // vbroadcastss 0x7d8(%rip),%ymm0 # 67f4 <_sk_callback_avx+0x499>
Mike Klein0a904492017-04-12 12:52:48 -040019875 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040019876 .byte 196,98,125,24,5,207,7,0,0 // vbroadcastss 0x7cf(%rip),%ymm8 # 67f8 <_sk_callback_avx+0x49d>
Mike Klein0a904492017-04-12 12:52:48 -040019877 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
19878 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
19879 .byte 72,173 // lods %ds:(%rsi),%rax
19880 .byte 255,224 // jmpq *%rax
19881
19882HIDDEN _sk_bilinear_px_avx
19883.globl _sk_bilinear_px_avx
Mike Klein86714282017-04-13 17:37:38 -040019884FUNCTION(_sk_bilinear_px_avx)
Mike Klein0a904492017-04-12 12:52:48 -040019885_sk_bilinear_px_avx:
19886 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040019887 .byte 196,226,125,24,5,183,7,0,0 // vbroadcastss 0x7b7(%rip),%ymm0 # 67fc <_sk_callback_avx+0x4a1>
Mike Klein0a904492017-04-12 12:52:48 -040019888 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Kleinfe560a82017-05-01 12:56:35 -040019889 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040019890 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
19891 .byte 72,173 // lods %ds:(%rsi),%rax
19892 .byte 255,224 // jmpq *%rax
19893
19894HIDDEN _sk_bilinear_ny_avx
19895.globl _sk_bilinear_ny_avx
Mike Klein86714282017-04-13 17:37:38 -040019896FUNCTION(_sk_bilinear_ny_avx)
Mike Klein0a904492017-04-12 12:52:48 -040019897_sk_bilinear_ny_avx:
19898 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040019899 .byte 196,226,125,24,13,155,7,0,0 // vbroadcastss 0x79b(%rip),%ymm1 # 6800 <_sk_callback_avx+0x4a5>
Mike Klein0a904492017-04-12 12:52:48 -040019900 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040019901 .byte 196,98,125,24,5,145,7,0,0 // vbroadcastss 0x791(%rip),%ymm8 # 6804 <_sk_callback_avx+0x4a9>
Mike Klein0a904492017-04-12 12:52:48 -040019902 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
19903 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
19904 .byte 72,173 // lods %ds:(%rsi),%rax
19905 .byte 255,224 // jmpq *%rax
19906
19907HIDDEN _sk_bilinear_py_avx
19908.globl _sk_bilinear_py_avx
Mike Klein86714282017-04-13 17:37:38 -040019909FUNCTION(_sk_bilinear_py_avx)
Mike Klein0a904492017-04-12 12:52:48 -040019910_sk_bilinear_py_avx:
19911 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040019912 .byte 196,226,125,24,13,121,7,0,0 // vbroadcastss 0x779(%rip),%ymm1 # 6808 <_sk_callback_avx+0x4ad>
Mike Klein0a904492017-04-12 12:52:48 -040019913 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Kleinfe560a82017-05-01 12:56:35 -040019914 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040019915 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
19916 .byte 72,173 // lods %ds:(%rsi),%rax
19917 .byte 255,224 // jmpq *%rax
19918
19919HIDDEN _sk_bicubic_n3x_avx
19920.globl _sk_bicubic_n3x_avx
Mike Klein86714282017-04-13 17:37:38 -040019921FUNCTION(_sk_bicubic_n3x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040019922_sk_bicubic_n3x_avx:
19923 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040019924 .byte 196,226,125,24,5,92,7,0,0 // vbroadcastss 0x75c(%rip),%ymm0 # 680c <_sk_callback_avx+0x4b1>
Mike Klein0a904492017-04-12 12:52:48 -040019925 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040019926 .byte 196,98,125,24,5,83,7,0,0 // vbroadcastss 0x753(%rip),%ymm8 # 6810 <_sk_callback_avx+0x4b5>
Mike Klein0a904492017-04-12 12:52:48 -040019927 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
19928 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040019929 .byte 196,98,125,24,21,68,7,0,0 // vbroadcastss 0x744(%rip),%ymm10 # 6814 <_sk_callback_avx+0x4b9>
Mike Kleinfe560a82017-05-01 12:56:35 -040019930 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040019931 .byte 196,98,125,24,21,58,7,0,0 // vbroadcastss 0x73a(%rip),%ymm10 # 6818 <_sk_callback_avx+0x4bd>
Mike Kleinfe560a82017-05-01 12:56:35 -040019932 .byte 196,65,60,88,194 // vaddps %ymm10,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040019933 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
19934 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
19935 .byte 72,173 // lods %ds:(%rsi),%rax
19936 .byte 255,224 // jmpq *%rax
19937
19938HIDDEN _sk_bicubic_n1x_avx
19939.globl _sk_bicubic_n1x_avx
Mike Klein86714282017-04-13 17:37:38 -040019940FUNCTION(_sk_bicubic_n1x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040019941_sk_bicubic_n1x_avx:
19942 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040019943 .byte 196,226,125,24,5,29,7,0,0 // vbroadcastss 0x71d(%rip),%ymm0 # 681c <_sk_callback_avx+0x4c1>
Mike Klein0a904492017-04-12 12:52:48 -040019944 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
Mike Klein8ca33562017-05-23 08:07:43 -040019945 .byte 196,98,125,24,5,20,7,0,0 // vbroadcastss 0x714(%rip),%ymm8 # 6820 <_sk_callback_avx+0x4c5>
Mike Klein0a904492017-04-12 12:52:48 -040019946 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040019947 .byte 196,98,125,24,13,10,7,0,0 // vbroadcastss 0x70a(%rip),%ymm9 # 6824 <_sk_callback_avx+0x4c9>
Mike Klein0a904492017-04-12 12:52:48 -040019948 .byte 196,65,60,89,201 // vmulps %ymm9,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040019949 .byte 196,98,125,24,21,0,7,0,0 // vbroadcastss 0x700(%rip),%ymm10 # 6828 <_sk_callback_avx+0x4cd>
Mike Kleinfe560a82017-05-01 12:56:35 -040019950 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
19951 .byte 196,65,60,89,201 // vmulps %ymm9,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040019952 .byte 196,98,125,24,21,241,6,0,0 // vbroadcastss 0x6f1(%rip),%ymm10 # 682c <_sk_callback_avx+0x4d1>
Mike Kleinfe560a82017-05-01 12:56:35 -040019953 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
Mike Klein0a904492017-04-12 12:52:48 -040019954 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040019955 .byte 196,98,125,24,13,226,6,0,0 // vbroadcastss 0x6e2(%rip),%ymm9 # 6830 <_sk_callback_avx+0x4d5>
Mike Kleinfe560a82017-05-01 12:56:35 -040019956 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040019957 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
19958 .byte 72,173 // lods %ds:(%rsi),%rax
19959 .byte 255,224 // jmpq *%rax
19960
19961HIDDEN _sk_bicubic_p1x_avx
19962.globl _sk_bicubic_p1x_avx
Mike Klein86714282017-04-13 17:37:38 -040019963FUNCTION(_sk_bicubic_p1x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040019964_sk_bicubic_p1x_avx:
19965 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040019966 .byte 196,98,125,24,5,202,6,0,0 // vbroadcastss 0x6ca(%rip),%ymm8 # 6834 <_sk_callback_avx+0x4d9>
Mike Klein0a904492017-04-12 12:52:48 -040019967 .byte 197,188,88,0 // vaddps (%rax),%ymm8,%ymm0
19968 .byte 197,124,16,72,64 // vmovups 0x40(%rax),%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040019969 .byte 196,98,125,24,21,188,6,0,0 // vbroadcastss 0x6bc(%rip),%ymm10 # 6838 <_sk_callback_avx+0x4dd>
Mike Klein0a904492017-04-12 12:52:48 -040019970 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040019971 .byte 196,98,125,24,29,178,6,0,0 // vbroadcastss 0x6b2(%rip),%ymm11 # 683c <_sk_callback_avx+0x4e1>
Mike Klein0a904492017-04-12 12:52:48 -040019972 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
19973 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
Mike Klein0a904492017-04-12 12:52:48 -040019974 .byte 196,65,44,88,192 // vaddps %ymm8,%ymm10,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040019975 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040019976 .byte 196,98,125,24,13,153,6,0,0 // vbroadcastss 0x699(%rip),%ymm9 # 6840 <_sk_callback_avx+0x4e5>
Mike Kleinfe560a82017-05-01 12:56:35 -040019977 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040019978 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
19979 .byte 72,173 // lods %ds:(%rsi),%rax
19980 .byte 255,224 // jmpq *%rax
19981
19982HIDDEN _sk_bicubic_p3x_avx
19983.globl _sk_bicubic_p3x_avx
Mike Klein86714282017-04-13 17:37:38 -040019984FUNCTION(_sk_bicubic_p3x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040019985_sk_bicubic_p3x_avx:
19986 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040019987 .byte 196,226,125,24,5,129,6,0,0 // vbroadcastss 0x681(%rip),%ymm0 # 6844 <_sk_callback_avx+0x4e9>
Mike Klein0a904492017-04-12 12:52:48 -040019988 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
19989 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
19990 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040019991 .byte 196,98,125,24,21,110,6,0,0 // vbroadcastss 0x66e(%rip),%ymm10 # 6848 <_sk_callback_avx+0x4ed>
Mike Klein0a904492017-04-12 12:52:48 -040019992 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040019993 .byte 196,98,125,24,21,100,6,0,0 // vbroadcastss 0x664(%rip),%ymm10 # 684c <_sk_callback_avx+0x4f1>
Mike Kleinfe560a82017-05-01 12:56:35 -040019994 .byte 196,65,60,88,194 // vaddps %ymm10,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040019995 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
19996 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
19997 .byte 72,173 // lods %ds:(%rsi),%rax
19998 .byte 255,224 // jmpq *%rax
19999
20000HIDDEN _sk_bicubic_n3y_avx
20001.globl _sk_bicubic_n3y_avx
Mike Klein86714282017-04-13 17:37:38 -040020002FUNCTION(_sk_bicubic_n3y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040020003_sk_bicubic_n3y_avx:
20004 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040020005 .byte 196,226,125,24,13,71,6,0,0 // vbroadcastss 0x647(%rip),%ymm1 # 6850 <_sk_callback_avx+0x4f5>
Mike Klein0a904492017-04-12 12:52:48 -040020006 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040020007 .byte 196,98,125,24,5,61,6,0,0 // vbroadcastss 0x63d(%rip),%ymm8 # 6854 <_sk_callback_avx+0x4f9>
Mike Klein0a904492017-04-12 12:52:48 -040020008 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
20009 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040020010 .byte 196,98,125,24,21,46,6,0,0 // vbroadcastss 0x62e(%rip),%ymm10 # 6858 <_sk_callback_avx+0x4fd>
Mike Kleinfe560a82017-05-01 12:56:35 -040020011 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040020012 .byte 196,98,125,24,21,36,6,0,0 // vbroadcastss 0x624(%rip),%ymm10 # 685c <_sk_callback_avx+0x501>
Mike Kleinfe560a82017-05-01 12:56:35 -040020013 .byte 196,65,60,88,194 // vaddps %ymm10,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040020014 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
20015 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
20016 .byte 72,173 // lods %ds:(%rsi),%rax
20017 .byte 255,224 // jmpq *%rax
20018
20019HIDDEN _sk_bicubic_n1y_avx
20020.globl _sk_bicubic_n1y_avx
Mike Klein86714282017-04-13 17:37:38 -040020021FUNCTION(_sk_bicubic_n1y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040020022_sk_bicubic_n1y_avx:
20023 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040020024 .byte 196,226,125,24,13,7,6,0,0 // vbroadcastss 0x607(%rip),%ymm1 # 6860 <_sk_callback_avx+0x505>
Mike Klein0a904492017-04-12 12:52:48 -040020025 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
Mike Klein8ca33562017-05-23 08:07:43 -040020026 .byte 196,98,125,24,5,253,5,0,0 // vbroadcastss 0x5fd(%rip),%ymm8 # 6864 <_sk_callback_avx+0x509>
Mike Klein0a904492017-04-12 12:52:48 -040020027 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040020028 .byte 196,98,125,24,13,243,5,0,0 // vbroadcastss 0x5f3(%rip),%ymm9 # 6868 <_sk_callback_avx+0x50d>
Mike Klein0a904492017-04-12 12:52:48 -040020029 .byte 196,65,60,89,201 // vmulps %ymm9,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040020030 .byte 196,98,125,24,21,233,5,0,0 // vbroadcastss 0x5e9(%rip),%ymm10 # 686c <_sk_callback_avx+0x511>
Mike Kleinfe560a82017-05-01 12:56:35 -040020031 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
20032 .byte 196,65,60,89,201 // vmulps %ymm9,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040020033 .byte 196,98,125,24,21,218,5,0,0 // vbroadcastss 0x5da(%rip),%ymm10 # 6870 <_sk_callback_avx+0x515>
Mike Kleinfe560a82017-05-01 12:56:35 -040020034 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
Mike Klein0a904492017-04-12 12:52:48 -040020035 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040020036 .byte 196,98,125,24,13,203,5,0,0 // vbroadcastss 0x5cb(%rip),%ymm9 # 6874 <_sk_callback_avx+0x519>
Mike Kleinfe560a82017-05-01 12:56:35 -040020037 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040020038 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
20039 .byte 72,173 // lods %ds:(%rsi),%rax
20040 .byte 255,224 // jmpq *%rax
20041
20042HIDDEN _sk_bicubic_p1y_avx
20043.globl _sk_bicubic_p1y_avx
Mike Klein86714282017-04-13 17:37:38 -040020044FUNCTION(_sk_bicubic_p1y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040020045_sk_bicubic_p1y_avx:
20046 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040020047 .byte 196,98,125,24,5,179,5,0,0 // vbroadcastss 0x5b3(%rip),%ymm8 # 6878 <_sk_callback_avx+0x51d>
Mike Klein0a904492017-04-12 12:52:48 -040020048 .byte 197,188,88,72,32 // vaddps 0x20(%rax),%ymm8,%ymm1
20049 .byte 197,124,16,72,96 // vmovups 0x60(%rax),%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040020050 .byte 196,98,125,24,21,164,5,0,0 // vbroadcastss 0x5a4(%rip),%ymm10 # 687c <_sk_callback_avx+0x521>
Mike Klein0a904492017-04-12 12:52:48 -040020051 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
Mike Klein8ca33562017-05-23 08:07:43 -040020052 .byte 196,98,125,24,29,154,5,0,0 // vbroadcastss 0x59a(%rip),%ymm11 # 6880 <_sk_callback_avx+0x525>
Mike Klein0a904492017-04-12 12:52:48 -040020053 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
20054 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
Mike Klein0a904492017-04-12 12:52:48 -040020055 .byte 196,65,44,88,192 // vaddps %ymm8,%ymm10,%ymm8
Mike Kleinfe560a82017-05-01 12:56:35 -040020056 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040020057 .byte 196,98,125,24,13,129,5,0,0 // vbroadcastss 0x581(%rip),%ymm9 # 6884 <_sk_callback_avx+0x529>
Mike Kleinfe560a82017-05-01 12:56:35 -040020058 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040020059 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
20060 .byte 72,173 // lods %ds:(%rsi),%rax
20061 .byte 255,224 // jmpq *%rax
20062
20063HIDDEN _sk_bicubic_p3y_avx
20064.globl _sk_bicubic_p3y_avx
Mike Klein86714282017-04-13 17:37:38 -040020065FUNCTION(_sk_bicubic_p3y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040020066_sk_bicubic_p3y_avx:
20067 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040020068 .byte 196,226,125,24,13,105,5,0,0 // vbroadcastss 0x569(%rip),%ymm1 # 6888 <_sk_callback_avx+0x52d>
Mike Klein0a904492017-04-12 12:52:48 -040020069 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
20070 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
20071 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
Mike Klein8ca33562017-05-23 08:07:43 -040020072 .byte 196,98,125,24,21,85,5,0,0 // vbroadcastss 0x555(%rip),%ymm10 # 688c <_sk_callback_avx+0x531>
Mike Klein0a904492017-04-12 12:52:48 -040020073 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
Mike Klein8ca33562017-05-23 08:07:43 -040020074 .byte 196,98,125,24,21,75,5,0,0 // vbroadcastss 0x54b(%rip),%ymm10 # 6890 <_sk_callback_avx+0x535>
Mike Kleinfe560a82017-05-01 12:56:35 -040020075 .byte 196,65,60,88,194 // vaddps %ymm10,%ymm8,%ymm8
Mike Klein0a904492017-04-12 12:52:48 -040020076 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
20077 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
20078 .byte 72,173 // lods %ds:(%rsi),%rax
20079 .byte 255,224 // jmpq *%rax
20080
Mike Klein7fee90c2017-04-07 16:55:09 -040020081HIDDEN _sk_callback_avx
20082.globl _sk_callback_avx
20083FUNCTION(_sk_callback_avx)
20084_sk_callback_avx:
20085 .byte 65,87 // push %r15
20086 .byte 65,86 // push %r14
Mike Kleinc17dc242017-04-20 16:21:57 -040020087 .byte 65,85 // push %r13
Mike Klein7fee90c2017-04-07 16:55:09 -040020088 .byte 65,84 // push %r12
20089 .byte 83 // push %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040020090 .byte 72,129,236,144,0,0,0 // sub $0x90,%rsp
20091 .byte 197,252,17,124,36,96 // vmovups %ymm7,0x60(%rsp)
20092 .byte 197,252,17,116,36,64 // vmovups %ymm6,0x40(%rsp)
20093 .byte 197,252,17,108,36,32 // vmovups %ymm5,0x20(%rsp)
20094 .byte 197,252,17,36,36 // vmovups %ymm4,(%rsp)
20095 .byte 73,137,205 // mov %rcx,%r13
Mike Klein7fee90c2017-04-07 16:55:09 -040020096 .byte 73,137,214 // mov %rdx,%r14
20097 .byte 73,137,255 // mov %rdi,%r15
20098 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinc17dc242017-04-20 16:21:57 -040020099 .byte 72,137,195 // mov %rax,%rbx
Mike Klein7fee90c2017-04-07 16:55:09 -040020100 .byte 73,137,244 // mov %rsi,%r12
Mike Kleinc17dc242017-04-20 16:21:57 -040020101 .byte 197,252,20,225 // vunpcklps %ymm1,%ymm0,%ymm4
20102 .byte 197,252,21,193 // vunpckhps %ymm1,%ymm0,%ymm0
20103 .byte 197,236,20,203 // vunpcklps %ymm3,%ymm2,%ymm1
20104 .byte 197,236,21,211 // vunpckhps %ymm3,%ymm2,%ymm2
20105 .byte 197,221,20,217 // vunpcklpd %ymm1,%ymm4,%ymm3
20106 .byte 197,221,21,201 // vunpckhpd %ymm1,%ymm4,%ymm1
20107 .byte 197,253,20,226 // vunpcklpd %ymm2,%ymm0,%ymm4
20108 .byte 197,253,21,194 // vunpckhpd %ymm2,%ymm0,%ymm0
20109 .byte 196,227,101,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm3,%ymm2
20110 .byte 196,227,93,24,232,1 // vinsertf128 $0x1,%xmm0,%ymm4,%ymm5
20111 .byte 196,227,101,6,201,49 // vperm2f128 $0x31,%ymm1,%ymm3,%ymm1
20112 .byte 196,227,93,6,192,49 // vperm2f128 $0x31,%ymm0,%ymm4,%ymm0
20113 .byte 197,253,17,83,8 // vmovupd %ymm2,0x8(%rbx)
20114 .byte 197,253,17,107,40 // vmovupd %ymm5,0x28(%rbx)
20115 .byte 197,253,17,75,72 // vmovupd %ymm1,0x48(%rbx)
20116 .byte 197,253,17,67,104 // vmovupd %ymm0,0x68(%rbx)
20117 .byte 77,133,237 // test %r13,%r13
Mike Klein7fee90c2017-04-07 16:55:09 -040020118 .byte 190,8,0,0,0 // mov $0x8,%esi
Mike Kleinc17dc242017-04-20 16:21:57 -040020119 .byte 65,15,69,245 // cmovne %r13d,%esi
20120 .byte 72,137,223 // mov %rbx,%rdi
Mike Klein7fee90c2017-04-07 16:55:09 -040020121 .byte 197,248,119 // vzeroupper
Mike Kleinc17dc242017-04-20 16:21:57 -040020122 .byte 255,19 // callq *(%rbx)
20123 .byte 72,139,131,136,0,0,0 // mov 0x88(%rbx),%rax
20124 .byte 197,248,16,0 // vmovups (%rax),%xmm0
20125 .byte 197,248,16,72,16 // vmovups 0x10(%rax),%xmm1
20126 .byte 197,248,16,80,32 // vmovups 0x20(%rax),%xmm2
20127 .byte 197,248,16,88,48 // vmovups 0x30(%rax),%xmm3
20128 .byte 196,227,101,24,88,112,1 // vinsertf128 $0x1,0x70(%rax),%ymm3,%ymm3
20129 .byte 196,227,109,24,80,96,1 // vinsertf128 $0x1,0x60(%rax),%ymm2,%ymm2
20130 .byte 196,227,117,24,72,80,1 // vinsertf128 $0x1,0x50(%rax),%ymm1,%ymm1
20131 .byte 196,227,125,24,64,64,1 // vinsertf128 $0x1,0x40(%rax),%ymm0,%ymm0
20132 .byte 197,252,20,225 // vunpcklps %ymm1,%ymm0,%ymm4
20133 .byte 197,252,21,233 // vunpckhps %ymm1,%ymm0,%ymm5
20134 .byte 197,236,20,203 // vunpcklps %ymm3,%ymm2,%ymm1
20135 .byte 197,236,21,219 // vunpckhps %ymm3,%ymm2,%ymm3
20136 .byte 197,221,20,193 // vunpcklpd %ymm1,%ymm4,%ymm0
20137 .byte 197,221,21,201 // vunpckhpd %ymm1,%ymm4,%ymm1
20138 .byte 197,213,20,211 // vunpcklpd %ymm3,%ymm5,%ymm2
20139 .byte 197,213,21,219 // vunpckhpd %ymm3,%ymm5,%ymm3
Mike Klein7fee90c2017-04-07 16:55:09 -040020140 .byte 76,137,230 // mov %r12,%rsi
20141 .byte 72,173 // lods %ds:(%rsi),%rax
20142 .byte 76,137,255 // mov %r15,%rdi
20143 .byte 76,137,242 // mov %r14,%rdx
Mike Kleinc17dc242017-04-20 16:21:57 -040020144 .byte 76,137,233 // mov %r13,%rcx
20145 .byte 197,252,16,36,36 // vmovups (%rsp),%ymm4
20146 .byte 197,252,16,108,36,32 // vmovups 0x20(%rsp),%ymm5
20147 .byte 197,252,16,116,36,64 // vmovups 0x40(%rsp),%ymm6
20148 .byte 197,252,16,124,36,96 // vmovups 0x60(%rsp),%ymm7
20149 .byte 72,129,196,144,0,0,0 // add $0x90,%rsp
Mike Klein7fee90c2017-04-07 16:55:09 -040020150 .byte 91 // pop %rbx
20151 .byte 65,92 // pop %r12
Mike Kleinc17dc242017-04-20 16:21:57 -040020152 .byte 65,93 // pop %r13
Mike Klein7fee90c2017-04-07 16:55:09 -040020153 .byte 65,94 // pop %r14
20154 .byte 65,95 // pop %r15
20155 .byte 255,224 // jmpq *%rax
20156
Mike Klein2229b572017-04-21 10:30:29 -040020157BALIGN4
20158 .byte 0,0 // add %al,(%rax)
20159 .byte 0,63 // add %bh,(%rdi)
20160 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040020161 .byte 128,63,1 // cmpb $0x1,(%rdi)
20162 .byte 0,0 // add %al,(%rax)
20163 .byte 0,4,0 // add %al,(%rax,%rax,1)
20164 .byte 0,0 // add %al,(%rax)
20165 .byte 2,0 // add (%rax),%al
20166 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040020167 .byte 0,0 // add %al,(%rax)
Mike Kleindb711c92017-05-03 17:57:48 -040020168 .byte 128,60,0,0 // cmpb $0x0,(%rax,%rax,1)
20169 .byte 252 // cld
20170 .byte 190,0,0,128,63 // mov $0x3f800000,%esi
Mike Klein308e6242017-04-27 13:56:33 -040020171 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020172 .byte 128,63,0 // cmpb $0x0,(%rdi)
20173 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
20174 .byte 63 // (bad)
Mike Klein308e6242017-04-27 13:56:33 -040020175 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020176 .byte 128,63,0 // cmpb $0x0,(%rdi)
20177 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
20178 .byte 63 // (bad)
20179 .byte 0,0 // add %al,(%rax)
20180 .byte 128,63,0 // cmpb $0x0,(%rdi)
20181 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
20182 .byte 63 // (bad)
20183 .byte 0,0 // add %al,(%rax)
20184 .byte 128,63,0 // cmpb $0x0,(%rdi)
20185 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
20186 .byte 63 // (bad)
20187 .byte 0,0 // add %al,(%rax)
20188 .byte 128,63,0 // cmpb $0x0,(%rdi)
20189 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
20190 .byte 63 // (bad)
20191 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040020192 .byte 128,63,0 // cmpb $0x0,(%rdi)
20193 .byte 0,128,191,0,0,224 // add %al,-0x1fffff41(%rax)
Mike Klein08aa88d2017-05-12 12:59:24 -040020194 .byte 64,154 // rex (bad)
Mike Kleinbb338332017-05-04 12:42:52 -040020195 .byte 153 // cltd
20196 .byte 153 // cltd
20197 .byte 62,61,10,23,63,174 // ds cmp $0xae3f170a,%eax
Mike Klein8ca33562017-05-23 08:07:43 -040020198 .byte 71,225,61 // rex.RXB loope 6531 <.literal4+0xb1>
Mike Kleinbb338332017-05-04 12:42:52 -040020199 .byte 0,0 // add %al,(%rax)
20200 .byte 128,63,154 // cmpb $0x9a,(%rdi)
20201 .byte 153 // cltd
20202 .byte 153 // cltd
20203 .byte 62,61,10,23,63,174 // ds cmp $0xae3f170a,%eax
Mike Klein8ca33562017-05-23 08:07:43 -040020204 .byte 71,225,61 // rex.RXB loope 6541 <.literal4+0xc1>
Mike Kleinbb338332017-05-04 12:42:52 -040020205 .byte 0,0 // add %al,(%rax)
20206 .byte 128,63,154 // cmpb $0x9a,(%rdi)
20207 .byte 153 // cltd
20208 .byte 153 // cltd
20209 .byte 62,61,10,23,63,174 // ds cmp $0xae3f170a,%eax
Mike Klein8ca33562017-05-23 08:07:43 -040020210 .byte 71,225,61 // rex.RXB loope 6551 <.literal4+0xd1>
Mike Kleinbb338332017-05-04 12:42:52 -040020211 .byte 0,0 // add %al,(%rax)
20212 .byte 128,63,154 // cmpb $0x9a,(%rdi)
20213 .byte 153 // cltd
20214 .byte 153 // cltd
20215 .byte 62,61,10,23,63,174 // ds cmp $0xae3f170a,%eax
Mike Klein8ca33562017-05-23 08:07:43 -040020216 .byte 71,225,61 // rex.RXB loope 6561 <.literal4+0xe1>
Mike Kleinbb338332017-05-04 12:42:52 -040020217 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040020218 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040020219 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
20220 .byte 63 // (bad)
Mike Klein08aa88d2017-05-12 12:59:24 -040020221 .byte 0,0 // add %al,(%rax)
20222 .byte 128,63,145 // cmpb $0x91,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040020223 .byte 131,158,61,154,153,153,62 // sbbl $0x3e,-0x666665c3(%rsi)
20224 .byte 92 // pop %rsp
20225 .byte 143 // (bad)
20226 .byte 50,63 // xor (%rdi),%bh
20227 .byte 10,215 // or %bh,%dl
20228 .byte 35,59 // and (%rbx),%edi
20229 .byte 174 // scas %es:(%rdi),%al
20230 .byte 71,97 // rex.RXB (bad)
Mike Kleinf45e3d72017-05-15 17:36:59 -040020231 .byte 61,82,184,78,65 // cmp $0x414eb852,%eax
20232 .byte 57,215 // cmp %edx,%edi
20233 .byte 32,187,186,159,98,60 // and %bh,0x3c629fba(%rbx)
20234 .byte 13,20,145,63,141 // or $0x8d3f9114,%eax
20235 .byte 158 // sahf
20236 .byte 20,62 // adc $0x3e,%al
20237 .byte 168,177 // test $0xb1,%al
20238 .byte 152 // cwtl
Mike Kleinfe560a82017-05-01 12:56:35 -040020239 .byte 59,0 // cmp (%rax),%eax
20240 .byte 0,128,63,0,0,192 // add %al,-0x3fffffc1(%rax)
20241 .byte 64,0,0 // add %al,(%rax)
20242 .byte 0,64,0 // add %al,0x0(%rax)
20243 .byte 0,128,64,171,170,42 // add %al,0x2aaaab40(%rax)
20244 .byte 62,0,0 // add %al,%ds:(%rax)
20245 .byte 0,63 // add %bh,(%rdi)
Mike Klein5664e652017-05-01 16:01:38 -040020246 .byte 0,0 // add %al,(%rax)
20247 .byte 0,63 // add %bh,(%rdi)
Mike Klein879a08a2017-05-01 15:34:01 -040020248 .byte 171 // stos %eax,%es:(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040020249 .byte 170 // stos %al,%es:(%rdi)
20250 .byte 170 // stos %al,%es:(%rdi)
Mike Klein5664e652017-05-01 16:01:38 -040020251 .byte 62,171 // ds stos %eax,%es:(%rdi)
20252 .byte 170 // stos %al,%es:(%rdi)
20253 .byte 42,63 // sub (%rdi),%bh
20254 .byte 0,0 // add %al,(%rax)
Mike Klein879a08a2017-05-01 15:34:01 -040020255 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
20256 .byte 128,64,171,170 // addb $0xaa,-0x55(%rax)
Mike Klein5664e652017-05-01 16:01:38 -040020257 .byte 42,62 // sub (%rsi),%bh
20258 .byte 171 // stos %eax,%es:(%rdi)
20259 .byte 170 // stos %al,%es:(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040020260 .byte 170 // stos %al,%es:(%rdi)
20261 .byte 190,129,128,128,59 // mov $0x3b808081,%esi
20262 .byte 129,128,128,59,0,248,0,0,8,33 // addl $0x21080000,-0x7ffc480(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020263 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040020264 .byte 224,7 // loopne 65ad <.literal4+0x12d>
Mike Kleinfe560a82017-05-01 12:56:35 -040020265 .byte 0,0 // add %al,(%rax)
20266 .byte 33,8 // and %ecx,(%rax)
20267 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040020268 .byte 31 // (bad)
20269 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020270 .byte 0,8 // add %cl,(%rax)
bungeman6f9f2592017-05-10 13:50:12 -040020271 .byte 33,4,61,129,128,128,59 // and %eax,0x3b808081(,%rdi,1)
20272 .byte 128,0,128 // addb $0x80,(%rax)
20273 .byte 55 // (bad)
20274 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020275 .byte 128,63,0 // cmpb $0x0,(%rdi)
20276 .byte 0,127,67 // add %bh,0x43(%rdi)
20277 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
20278 .byte 0,52,255 // add %dh,(%rdi,%rdi,8)
Mike Kleinb4bbc642017-04-27 08:59:55 -040020279 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040020280 .byte 127,0 // jg 65d4 <.literal4+0x154>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020281 .byte 0,0 // add %al,(%rax)
20282 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040020283 .byte 119,115 // ja 664d <.literal4+0x1cd>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020284 .byte 248 // clc
20285 .byte 194,117,191 // retq $0xbf75
20286 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
20287 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
20288 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
20289 .byte 154 // (bad)
20290 .byte 64,254 // rex (bad)
20291 .byte 210,221 // rcr %cl,%ch
20292 .byte 65,0,0 // add %al,(%r8)
20293 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040020294 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040020295 .byte 52,255 // xor $0xff,%al
20296 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040020297 .byte 127,0 // jg 6608 <.literal4+0x188>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020298 .byte 0,0 // add %al,(%rax)
20299 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040020300 .byte 119,115 // ja 6681 <.literal4+0x201>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020301 .byte 248 // clc
20302 .byte 194,117,191 // retq $0xbf75
20303 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
20304 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
20305 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
20306 .byte 154 // (bad)
20307 .byte 64,254 // rex (bad)
20308 .byte 210,221 // rcr %cl,%ch
20309 .byte 65,0,0 // add %al,(%r8)
20310 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040020311 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040020312 .byte 52,255 // xor $0xff,%al
20313 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040020314 .byte 127,0 // jg 663c <.literal4+0x1bc>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020315 .byte 0,0 // add %al,(%rax)
20316 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040020317 .byte 119,115 // ja 66b5 <.literal4+0x235>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020318 .byte 248 // clc
20319 .byte 194,117,191 // retq $0xbf75
20320 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
20321 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
20322 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
20323 .byte 154 // (bad)
20324 .byte 64,254 // rex (bad)
20325 .byte 210,221 // rcr %cl,%ch
20326 .byte 65,0,0 // add %al,(%r8)
20327 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040020328 .byte 0,128,63,0,0,0 // add %al,0x3f(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040020329 .byte 52,255 // xor $0xff,%al
20330 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040020331 .byte 127,0 // jg 6670 <.literal4+0x1f0>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020332 .byte 0,0 // add %al,(%rax)
20333 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040020334 .byte 119,115 // ja 66e9 <.literal4+0x269>
Mike Kleinb4bbc642017-04-27 08:59:55 -040020335 .byte 248 // clc
20336 .byte 194,117,191 // retq $0xbf75
20337 .byte 191,63,249,68,180 // mov $0xb444f93f,%edi
20338 .byte 62,163,233,220,63,81,140,242,66,141 // movabs %eax,%ds:0x8d42f28c513fdce9
20339 .byte 188,190,63,248,245 // mov $0xf5f83fbe,%esp
20340 .byte 154 // (bad)
20341 .byte 64,254 // rex (bad)
20342 .byte 210,221 // rcr %cl,%ch
20343 .byte 65,0,0 // add %al,(%r8)
20344 .byte 0,75,0 // add %cl,0x0(%rbx)
Mike Kleinfe560a82017-05-01 12:56:35 -040020345 .byte 0,128,63,0,0,200 // add %al,-0x37ffffc1(%rax)
20346 .byte 66,0,0 // rex.X add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040020347 .byte 127,67 // jg 66e7 <.literal4+0x267>
Mike Kleinfe560a82017-05-01 12:56:35 -040020348 .byte 0,0 // add %al,(%rax)
20349 .byte 0,195 // add %al,%bl
20350 .byte 0,0 // add %al,(%rax)
20351 .byte 128,65,203,61 // addb $0x3d,-0x35(%rcx)
20352 .byte 13,60,111,18,3 // or $0x3126f3c,%eax
20353 .byte 59,10 // cmp (%rdx),%ecx
20354 .byte 215 // xlat %ds:(%rbx)
20355 .byte 163,59,194,24,17,60,203,61,13 // movabs %eax,0xd3dcb3c1118c23b
20356 .byte 190,80,128,3,62 // mov $0x3e038050,%esi
20357 .byte 31 // (bad)
20358 .byte 215 // xlat %ds:(%rbx)
Mike Klein8ca33562017-05-23 08:07:43 -040020359 .byte 118,63 // jbe 6707 <.literal4+0x287>
Mike Kleinfe560a82017-05-01 12:56:35 -040020360 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
20361 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040020362 .byte 127,67 // jg 671b <.literal4+0x29b>
Mike Kleinfe560a82017-05-01 12:56:35 -040020363 .byte 129,128,128,59,0,0,128,63,129,128 // addl $0x80813f80,0x3b80(%rax)
20364 .byte 128,59,0 // cmpb $0x0,(%rbx)
20365 .byte 0,128,63,129,128,128 // add %al,-0x7f7f7ec1(%rax)
20366 .byte 59,0 // cmp (%rax),%eax
Mike Klein308e6242017-04-27 13:56:33 -040020367 .byte 248 // clc
20368 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020369 .byte 8,33 // or %ah,(%rcx)
20370 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040020371 .byte 224,7 // loopne 66fd <.literal4+0x27d>
Mike Klein308e6242017-04-27 13:56:33 -040020372 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020373 .byte 33,8 // and %ecx,(%rax)
20374 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040020375 .byte 31 // (bad)
20376 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020377 .byte 0,8 // add %cl,(%rax)
20378 .byte 33,4,61,0,0,128,63 // and %eax,0x3f800000(,%rdi,1)
20379 .byte 0,248 // add %bh,%al
Mike Klein308e6242017-04-27 13:56:33 -040020380 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020381 .byte 8,33 // or %ah,(%rcx)
20382 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040020383 .byte 224,7 // loopne 6719 <.literal4+0x299>
Mike Klein308e6242017-04-27 13:56:33 -040020384 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020385 .byte 33,8 // and %ecx,(%rax)
20386 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040020387 .byte 31 // (bad)
20388 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020389 .byte 0,8 // add %cl,(%rax)
20390 .byte 33,4,61,0,0,128,63 // and %eax,0x3f800000(,%rdi,1)
Mike Klein308e6242017-04-27 13:56:33 -040020391 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020392 .byte 248 // clc
20393 .byte 65,0,0 // add %al,(%r8)
Mike Klein8ca33562017-05-23 08:07:43 -040020394 .byte 124,66 // jl 676e <.literal4+0x2ee>
Mike Kleinfe560a82017-05-01 12:56:35 -040020395 .byte 0,240 // add %dh,%al
Mike Klein308e6242017-04-27 13:56:33 -040020396 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020397 .byte 137,136,136,55,0,15 // mov %ecx,0xf003788(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040020398 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020399 .byte 137,136,136,57,240,0 // mov %ecx,0xf03988(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040020400 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020401 .byte 137,136,136,59,15,0 // mov %ecx,0xf3b88(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040020402 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020403 .byte 137,136,136,61,0,240 // mov %ecx,-0xfffc278(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040020404 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020405 .byte 137,136,136,55,0,15 // mov %ecx,0xf003788(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040020406 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020407 .byte 137,136,136,57,240,0 // mov %ecx,0xf03988(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040020408 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020409 .byte 137,136,136,59,15,0 // mov %ecx,0xf3b88(%rax)
20410 .byte 0,0 // add %al,(%rax)
20411 .byte 137,136,136,61,0,0 // mov %ecx,0x3d88(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040020412 .byte 112,65 // jo 67b1 <.literal4+0x331>
Mike Kleinfe560a82017-05-01 12:56:35 -040020413 .byte 129,128,128,59,129,128,128,59,0,0 // addl $0x3b80,-0x7f7ec480(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040020414 .byte 127,67 // jg 67bf <.literal4+0x33f>
Mike Kleinfe560a82017-05-01 12:56:35 -040020415 .byte 0,128,0,0,0,0 // add %al,0x0(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040020416 .byte 0,128,0,4,0,128 // add %al,-0x7ffffc00(%rax)
20417 .byte 0,0 // add %al,(%rax)
20418 .byte 0,56 // add %bh,(%rax)
20419 .byte 0,128,0,0,0,0 // add %al,0x0(%rax)
20420 .byte 0,128,0,4,0,128 // add %al,-0x7ffffc00(%rax)
20421 .byte 0,0 // add %al,(%rax)
20422 .byte 0,56 // add %bh,(%rax)
20423 .byte 0,0 // add %al,(%rax)
20424 .byte 0,128,0,0,128,56 // add %al,0x38800000(%rax)
20425 .byte 0,64,254 // add %al,-0x2(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020426 .byte 255,128,0,128,55,128 // incl -0x7fc88000(%rax)
20427 .byte 0,128,55,0,0,128 // add %al,-0x7fffffc9(%rax)
20428 .byte 63 // (bad)
20429 .byte 0,255 // add %bh,%bh
Mike Klein8ca33562017-05-23 08:07:43 -040020430 .byte 127,71 // jg 67ff <.literal4+0x37f>
Mike Klein9f85d682017-05-23 07:52:01 -040020431 .byte 0,0 // add %al,(%rax)
20432 .byte 128,63,0 // cmpb $0x0,(%rdi)
20433 .byte 0,128,191,0,0,0 // add %al,0xbf(%rax)
20434 .byte 63 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040020435 .byte 208 // (bad)
20436 .byte 179,89 // mov $0x59,%bl
20437 .byte 62,89 // ds pop %rcx
20438 .byte 23 // (bad)
20439 .byte 55 // (bad)
20440 .byte 63 // (bad)
20441 .byte 152 // cwtl
Herb Derby4de13042017-05-15 10:49:39 -040020442 .byte 221,147,61,1,0,0 // fstl 0x13d(%rbx)
20443 .byte 0,111,43 // add %ch,0x2b(%rdi)
20444 .byte 231,187 // out %eax,$0xbb
20445 .byte 159 // lahf
20446 .byte 215 // xlat %ds:(%rbx)
20447 .byte 202,60,212 // lret $0xd43c
Herb Derby7eb86982017-05-02 19:04:39 -040020448 .byte 100,84 // fs push %rsp
20449 .byte 189,169,240,34,62 // mov $0x3e22f0a9,%ebp
20450 .byte 0,0 // add %al,(%rax)
20451 .byte 128,62,0 // cmpb $0x0,(%rsi)
20452 .byte 0,0 // add %al,(%rax)
20453 .byte 63 // (bad)
20454 .byte 0,0 // add %al,(%rax)
20455 .byte 128,63,0 // cmpb $0x0,(%rdi)
20456 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040020457 .byte 63 // (bad)
20458 .byte 0,0 // add %al,(%rax)
20459 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
20460 .byte 0,0 // add %al,(%rax)
20461 .byte 0,63 // add %bh,(%rdi)
20462 .byte 0,0 // add %al,(%rax)
20463 .byte 0,191,0,0,128,63 // add %bh,0x3f800000(%rdi)
20464 .byte 0,0 // add %al,(%rax)
20465 .byte 0,63 // add %bh,(%rdi)
20466 .byte 0,0 // add %al,(%rax)
20467 .byte 192,191,0,0,128,63,114 // sarb $0x72,0x3f800000(%rdi)
20468 .byte 28,199 // sbb $0xc7,%al
20469 .byte 62,171 // ds stos %eax,%es:(%rdi)
20470 .byte 170 // stos %al,%es:(%rdi)
20471 .byte 170 // stos %al,%es:(%rdi)
20472 .byte 190,0,0,0,191 // mov $0xbf000000,%esi
20473 .byte 0,0 // add %al,(%rax)
20474 .byte 128,63,85 // cmpb $0x55,(%rdi)
20475 .byte 85 // push %rbp
20476 .byte 149 // xchg %eax,%ebp
20477 .byte 191,0,0,192,63 // mov $0x3fc00000,%edi
20478 .byte 0,0 // add %al,(%rax)
20479 .byte 0,63 // add %bh,(%rdi)
20480 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
20481 .byte 0,63 // add %bh,(%rdi)
20482 .byte 85 // push %rbp
20483 .byte 85 // push %rbp
20484 .byte 149 // xchg %eax,%ebp
20485 .byte 191,0,0,192,63 // mov $0x3fc00000,%edi
20486 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
20487 .byte 192,63,114 // sarb $0x72,(%rdi)
20488 .byte 28,199 // sbb $0xc7,%al
20489 .byte 62,171 // ds stos %eax,%es:(%rdi)
20490 .byte 170 // stos %al,%es:(%rdi)
20491 .byte 170 // stos %al,%es:(%rdi)
20492 .byte 190,0,0,192,191 // mov $0xbfc00000,%esi
20493 .byte 0,0 // add %al,(%rax)
20494 .byte 128,63,114 // cmpb $0x72,(%rdi)
20495 .byte 28,199 // sbb $0xc7,%al
20496 .byte 62,171 // ds stos %eax,%es:(%rdi)
20497 .byte 170 // stos %al,%es:(%rdi)
20498 .byte 170 // stos %al,%es:(%rdi)
20499 .byte 190,0,0,0,191 // mov $0xbf000000,%esi
20500 .byte 0,0 // add %al,(%rax)
20501 .byte 128,63,85 // cmpb $0x55,(%rdi)
20502 .byte 85 // push %rbp
20503 .byte 149 // xchg %eax,%ebp
20504 .byte 191,0,0,192,63 // mov $0x3fc00000,%edi
20505 .byte 0,0 // add %al,(%rax)
20506 .byte 0,63 // add %bh,(%rdi)
20507 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
20508 .byte 0,63 // add %bh,(%rdi)
20509 .byte 85 // push %rbp
20510 .byte 85 // push %rbp
20511 .byte 149 // xchg %eax,%ebp
20512 .byte 191,0,0,192,63 // mov $0x3fc00000,%edi
20513 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
20514 .byte 192,63,114 // sarb $0x72,(%rdi)
20515 .byte 28,199 // sbb $0xc7,%al
20516 .byte 62,171 // ds stos %eax,%es:(%rdi)
20517 .byte 170 // stos %al,%es:(%rdi)
20518 .byte 170 // stos %al,%es:(%rdi)
20519 .byte 190 // .byte 0xbe
Mike Klein0aa742f2017-04-27 13:36:57 -040020520
20521BALIGN32
20522 .byte 255,0 // incl (%rax)
20523 .byte 0,0 // add %al,(%rax)
20524 .byte 255,0 // incl (%rax)
20525 .byte 0,0 // add %al,(%rax)
20526 .byte 255,0 // incl (%rax)
20527 .byte 0,0 // add %al,(%rax)
20528 .byte 255,0 // incl (%rax)
20529 .byte 0,0 // add %al,(%rax)
20530 .byte 255,0 // incl (%rax)
20531 .byte 0,0 // add %al,(%rax)
20532 .byte 255,0 // incl (%rax)
20533 .byte 0,0 // add %al,(%rax)
20534 .byte 255,0 // incl (%rax)
20535 .byte 0,0 // add %al,(%rax)
20536 .byte 255,0 // incl (%rax)
20537 .byte 0,0 // add %al,(%rax)
20538 .byte 255,0 // incl (%rax)
20539 .byte 0,0 // add %al,(%rax)
20540 .byte 255,0 // incl (%rax)
20541 .byte 0,0 // add %al,(%rax)
20542 .byte 255,0 // incl (%rax)
20543 .byte 0,0 // add %al,(%rax)
20544 .byte 255,0 // incl (%rax)
20545 .byte 0,0 // add %al,(%rax)
20546 .byte 255,0 // incl (%rax)
20547 .byte 0,0 // add %al,(%rax)
20548 .byte 255,0 // incl (%rax)
20549 .byte 0,0 // add %al,(%rax)
20550 .byte 255,0 // incl (%rax)
20551 .byte 0,0 // add %al,(%rax)
20552 .byte 255,0 // incl (%rax)
20553 .byte 0,0 // add %al,(%rax)
20554 .byte 255,0 // incl (%rax)
20555 .byte 0,0 // add %al,(%rax)
20556 .byte 255,0 // incl (%rax)
20557 .byte 0,0 // add %al,(%rax)
20558 .byte 255,0 // incl (%rax)
20559 .byte 0,0 // add %al,(%rax)
20560 .byte 255,0 // incl (%rax)
20561 .byte 0,0 // add %al,(%rax)
20562 .byte 255,0 // incl (%rax)
20563 .byte 0,0 // add %al,(%rax)
20564 .byte 255,0 // incl (%rax)
20565 .byte 0,0 // add %al,(%rax)
20566 .byte 255,0 // incl (%rax)
20567 .byte 0,0 // add %al,(%rax)
20568 .byte 255,0 // incl (%rax)
20569 .byte 0,0 // add %al,(%rax)
20570 .byte 255,0 // incl (%rax)
20571 .byte 0,0 // add %al,(%rax)
20572 .byte 255,0 // incl (%rax)
20573 .byte 0,0 // add %al,(%rax)
20574 .byte 255,0 // incl (%rax)
20575 .byte 0,0 // add %al,(%rax)
20576 .byte 255,0 // incl (%rax)
20577 .byte 0,0 // add %al,(%rax)
20578 .byte 255,0 // incl (%rax)
20579 .byte 0,0 // add %al,(%rax)
20580 .byte 255,0 // incl (%rax)
20581 .byte 0,0 // add %al,(%rax)
20582 .byte 255,0 // incl (%rax)
20583 .byte 0,0 // add %al,(%rax)
20584 .byte 255,0 // incl (%rax)
20585 .byte 0,0 // add %al,(%rax)
Brian Osman74fc5932017-05-22 19:25:36 +000020586
20587BALIGN16
20588 .byte 255,0 // incl (%rax)
20589 .byte 255,0 // incl (%rax)
20590 .byte 255,0 // incl (%rax)
20591 .byte 255,0 // incl (%rax)
20592 .byte 255,0 // incl (%rax)
20593 .byte 255,0 // incl (%rax)
20594 .byte 255,0 // incl (%rax)
20595 .byte 255,0 // incl (%rax)
20596 .byte 255,0 // incl (%rax)
20597 .byte 255,0 // incl (%rax)
20598 .byte 255,0 // incl (%rax)
20599 .byte 255,0 // incl (%rax)
20600 .byte 255,0 // incl (%rax)
20601 .byte 255,0 // incl (%rax)
20602 .byte 255,0 // incl (%rax)
20603 .byte 255,0 // incl (%rax)
Mike Klein67e61712017-04-26 09:52:09 -040020604BALIGN32
Mike Klein2229b572017-04-21 10:30:29 -040020605
Mike Klein7c4af542017-03-29 18:21:14 -040020606HIDDEN _sk_start_pipeline_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020607.globl _sk_start_pipeline_sse41
Mike Klein86714282017-04-13 17:37:38 -040020608FUNCTION(_sk_start_pipeline_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020609_sk_start_pipeline_sse41:
20610 .byte 65,87 // push %r15
20611 .byte 65,86 // push %r14
20612 .byte 65,85 // push %r13
20613 .byte 65,84 // push %r12
20614 .byte 83 // push %rbx
20615 .byte 73,137,207 // mov %rcx,%r15
20616 .byte 73,137,214 // mov %rdx,%r14
20617 .byte 72,137,251 // mov %rdi,%rbx
20618 .byte 72,173 // lods %ds:(%rsi),%rax
20619 .byte 73,137,196 // mov %rax,%r12
20620 .byte 73,137,245 // mov %rsi,%r13
20621 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
20622 .byte 76,57,248 // cmp %r15,%rax
20623 .byte 118,5 // jbe 28 <_sk_start_pipeline_sse41+0x28>
20624 .byte 72,137,216 // mov %rbx,%rax
20625 .byte 235,52 // jmp 5c <_sk_start_pipeline_sse41+0x5c>
20626 .byte 15,87,192 // xorps %xmm0,%xmm0
20627 .byte 15,87,201 // xorps %xmm1,%xmm1
20628 .byte 15,87,210 // xorps %xmm2,%xmm2
20629 .byte 15,87,219 // xorps %xmm3,%xmm3
20630 .byte 15,87,228 // xorps %xmm4,%xmm4
20631 .byte 15,87,237 // xorps %xmm5,%xmm5
20632 .byte 15,87,246 // xorps %xmm6,%xmm6
20633 .byte 15,87,255 // xorps %xmm7,%xmm7
20634 .byte 72,137,223 // mov %rbx,%rdi
20635 .byte 76,137,238 // mov %r13,%rsi
20636 .byte 76,137,242 // mov %r14,%rdx
20637 .byte 65,255,212 // callq *%r12
20638 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
20639 .byte 72,131,195,8 // add $0x8,%rbx
20640 .byte 76,57,251 // cmp %r15,%rbx
20641 .byte 72,137,195 // mov %rax,%rbx
20642 .byte 118,204 // jbe 28 <_sk_start_pipeline_sse41+0x28>
20643 .byte 91 // pop %rbx
20644 .byte 65,92 // pop %r12
20645 .byte 65,93 // pop %r13
20646 .byte 65,94 // pop %r14
20647 .byte 65,95 // pop %r15
20648 .byte 195 // retq
20649
Mike Klein7c4af542017-03-29 18:21:14 -040020650HIDDEN _sk_just_return_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020651.globl _sk_just_return_sse41
Mike Klein86714282017-04-13 17:37:38 -040020652FUNCTION(_sk_just_return_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020653_sk_just_return_sse41:
20654 .byte 195 // retq
20655
Mike Klein7c4af542017-03-29 18:21:14 -040020656HIDDEN _sk_seed_shader_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020657.globl _sk_seed_shader_sse41
Mike Klein86714282017-04-13 17:37:38 -040020658FUNCTION(_sk_seed_shader_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020659_sk_seed_shader_sse41:
20660 .byte 72,173 // lods %ds:(%rsi),%rax
20661 .byte 102,15,110,199 // movd %edi,%xmm0
20662 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
20663 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040020664 .byte 15,40,21,164,71,0,0 // movaps 0x47a4(%rip),%xmm2 # 4820 <_sk_callback_sse41+0xde>
Mike Kleind7e06ae2017-03-29 16:33:06 -040020665 .byte 15,88,202 // addps %xmm2,%xmm1
20666 .byte 15,16,2 // movups (%rdx),%xmm0
20667 .byte 15,88,193 // addps %xmm1,%xmm0
20668 .byte 102,15,110,8 // movd (%rax),%xmm1
20669 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
20670 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
20671 .byte 15,88,202 // addps %xmm2,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040020672 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040020673 .byte 15,40,21,147,71,0,0 // movaps 0x4793(%rip),%xmm2 # 4830 <_sk_callback_sse41+0xee>
Mike Kleind7e06ae2017-03-29 16:33:06 -040020674 .byte 15,87,219 // xorps %xmm3,%xmm3
20675 .byte 15,87,228 // xorps %xmm4,%xmm4
20676 .byte 15,87,237 // xorps %xmm5,%xmm5
20677 .byte 15,87,246 // xorps %xmm6,%xmm6
20678 .byte 15,87,255 // xorps %xmm7,%xmm7
20679 .byte 255,224 // jmpq *%rax
20680
Mike Klein581e6982017-05-03 13:05:13 -040020681HIDDEN _sk_dither_sse41
20682.globl _sk_dither_sse41
20683FUNCTION(_sk_dither_sse41)
20684_sk_dither_sse41:
20685 .byte 72,173 // lods %ds:(%rsi),%rax
20686 .byte 102,68,15,110,199 // movd %edi,%xmm8
20687 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
Mike Klein5d7f2b52017-05-20 13:21:59 -040020688 .byte 243,68,15,111,74,32 // movdqu 0x20(%rdx),%xmm9
20689 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
Mike Klein581e6982017-05-03 13:05:13 -040020690 .byte 72,139,8 // mov (%rax),%rcx
20691 .byte 102,68,15,110,1 // movd (%rcx),%xmm8
20692 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
20693 .byte 102,69,15,239,193 // pxor %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040020694 .byte 102,68,15,111,21,94,71,0,0 // movdqa 0x475e(%rip),%xmm10 # 4840 <_sk_callback_sse41+0xfe>
Mike Klein581e6982017-05-03 13:05:13 -040020695 .byte 102,69,15,111,216 // movdqa %xmm8,%xmm11
20696 .byte 102,69,15,219,218 // pand %xmm10,%xmm11
20697 .byte 102,65,15,114,243,5 // pslld $0x5,%xmm11
20698 .byte 102,69,15,219,209 // pand %xmm9,%xmm10
20699 .byte 102,65,15,114,242,4 // pslld $0x4,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040020700 .byte 102,68,15,111,37,74,71,0,0 // movdqa 0x474a(%rip),%xmm12 # 4850 <_sk_callback_sse41+0x10e>
20701 .byte 102,68,15,111,45,81,71,0,0 // movdqa 0x4751(%rip),%xmm13 # 4860 <_sk_callback_sse41+0x11e>
Mike Klein581e6982017-05-03 13:05:13 -040020702 .byte 102,69,15,111,240 // movdqa %xmm8,%xmm14
20703 .byte 102,69,15,219,245 // pand %xmm13,%xmm14
20704 .byte 102,65,15,114,246,2 // pslld $0x2,%xmm14
20705 .byte 102,69,15,219,233 // pand %xmm9,%xmm13
20706 .byte 102,69,15,254,237 // paddd %xmm13,%xmm13
20707 .byte 102,69,15,219,196 // pand %xmm12,%xmm8
20708 .byte 102,65,15,114,208,1 // psrld $0x1,%xmm8
20709 .byte 102,69,15,219,204 // pand %xmm12,%xmm9
20710 .byte 102,65,15,114,209,2 // psrld $0x2,%xmm9
20711 .byte 102,69,15,235,234 // por %xmm10,%xmm13
20712 .byte 102,69,15,235,233 // por %xmm9,%xmm13
Mike Klein5d7f2b52017-05-20 13:21:59 -040020713 .byte 102,69,15,235,235 // por %xmm11,%xmm13
20714 .byte 102,69,15,235,198 // por %xmm14,%xmm8
20715 .byte 102,69,15,235,197 // por %xmm13,%xmm8
20716 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040020717 .byte 68,15,89,5,12,71,0,0 // mulps 0x470c(%rip),%xmm8 # 4870 <_sk_callback_sse41+0x12e>
20718 .byte 68,15,88,5,20,71,0,0 // addps 0x4714(%rip),%xmm8 # 4880 <_sk_callback_sse41+0x13e>
Mike Klein7e68bc92017-05-16 12:03:15 -040020719 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
20720 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20721 .byte 69,15,89,208 // mulps %xmm8,%xmm10
20722 .byte 65,15,88,194 // addps %xmm10,%xmm0
20723 .byte 65,15,88,202 // addps %xmm10,%xmm1
20724 .byte 68,15,88,210 // addps %xmm2,%xmm10
20725 .byte 15,93,195 // minps %xmm3,%xmm0
20726 .byte 15,87,210 // xorps %xmm2,%xmm2
20727 .byte 69,15,87,192 // xorps %xmm8,%xmm8
20728 .byte 68,15,95,192 // maxps %xmm0,%xmm8
20729 .byte 15,93,203 // minps %xmm3,%xmm1
20730 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
20731 .byte 68,15,95,201 // maxps %xmm1,%xmm9
20732 .byte 68,15,93,211 // minps %xmm3,%xmm10
20733 .byte 65,15,95,210 // maxps %xmm10,%xmm2
Mike Klein581e6982017-05-03 13:05:13 -040020734 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein7e68bc92017-05-16 12:03:15 -040020735 .byte 65,15,40,192 // movaps %xmm8,%xmm0
20736 .byte 65,15,40,201 // movaps %xmm9,%xmm1
Mike Klein581e6982017-05-03 13:05:13 -040020737 .byte 255,224 // jmpq *%rax
20738
Mike Klein7c4af542017-03-29 18:21:14 -040020739HIDDEN _sk_constant_color_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020740.globl _sk_constant_color_sse41
Mike Klein86714282017-04-13 17:37:38 -040020741FUNCTION(_sk_constant_color_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020742_sk_constant_color_sse41:
20743 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8a823fa2017-04-05 17:29:26 -040020744 .byte 243,15,16,0 // movss (%rax),%xmm0
20745 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040020746 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040020747 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20748 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
20749 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20750 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
20751 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040020752 .byte 72,173 // lods %ds:(%rsi),%rax
20753 .byte 255,224 // jmpq *%rax
20754
Mike Reed9959f722017-05-15 09:34:22 -040020755HIDDEN _sk_load_rgba_sse41
20756.globl _sk_load_rgba_sse41
20757FUNCTION(_sk_load_rgba_sse41)
20758_sk_load_rgba_sse41:
20759 .byte 72,173 // lods %ds:(%rsi),%rax
20760 .byte 15,16,0 // movups (%rax),%xmm0
20761 .byte 15,16,72,16 // movups 0x10(%rax),%xmm1
20762 .byte 15,16,80,32 // movups 0x20(%rax),%xmm2
20763 .byte 15,16,88,48 // movups 0x30(%rax),%xmm3
20764 .byte 72,173 // lods %ds:(%rsi),%rax
20765 .byte 255,224 // jmpq *%rax
20766
20767HIDDEN _sk_store_rgba_sse41
20768.globl _sk_store_rgba_sse41
20769FUNCTION(_sk_store_rgba_sse41)
20770_sk_store_rgba_sse41:
20771 .byte 72,173 // lods %ds:(%rsi),%rax
20772 .byte 15,17,0 // movups %xmm0,(%rax)
20773 .byte 15,17,72,16 // movups %xmm1,0x10(%rax)
20774 .byte 15,17,80,32 // movups %xmm2,0x20(%rax)
20775 .byte 15,17,88,48 // movups %xmm3,0x30(%rax)
20776 .byte 72,173 // lods %ds:(%rsi),%rax
20777 .byte 255,224 // jmpq *%rax
20778
Mike Klein7c4af542017-03-29 18:21:14 -040020779HIDDEN _sk_clear_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020780.globl _sk_clear_sse41
Mike Klein86714282017-04-13 17:37:38 -040020781FUNCTION(_sk_clear_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020782_sk_clear_sse41:
20783 .byte 72,173 // lods %ds:(%rsi),%rax
20784 .byte 15,87,192 // xorps %xmm0,%xmm0
20785 .byte 15,87,201 // xorps %xmm1,%xmm1
20786 .byte 15,87,210 // xorps %xmm2,%xmm2
20787 .byte 15,87,219 // xorps %xmm3,%xmm3
20788 .byte 255,224 // jmpq *%rax
20789
Mike Kleinaaca1e42017-03-31 09:29:01 -040020790HIDDEN _sk_srcatop_sse41
20791.globl _sk_srcatop_sse41
Mike Klein86714282017-04-13 17:37:38 -040020792FUNCTION(_sk_srcatop_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040020793_sk_srcatop_sse41:
20794 .byte 15,89,199 // mulps %xmm7,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040020795 .byte 68,15,40,5,109,70,0,0 // movaps 0x466d(%rip),%xmm8 # 4890 <_sk_callback_sse41+0x14e>
Mike Kleinaaca1e42017-03-31 09:29:01 -040020796 .byte 68,15,92,195 // subps %xmm3,%xmm8
20797 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20798 .byte 68,15,89,204 // mulps %xmm4,%xmm9
20799 .byte 65,15,88,193 // addps %xmm9,%xmm0
20800 .byte 15,89,207 // mulps %xmm7,%xmm1
20801 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20802 .byte 68,15,89,205 // mulps %xmm5,%xmm9
20803 .byte 65,15,88,201 // addps %xmm9,%xmm1
20804 .byte 15,89,215 // mulps %xmm7,%xmm2
20805 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20806 .byte 68,15,89,206 // mulps %xmm6,%xmm9
20807 .byte 65,15,88,209 // addps %xmm9,%xmm2
20808 .byte 15,89,223 // mulps %xmm7,%xmm3
20809 .byte 68,15,89,199 // mulps %xmm7,%xmm8
20810 .byte 65,15,88,216 // addps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040020811 .byte 72,173 // lods %ds:(%rsi),%rax
20812 .byte 255,224 // jmpq *%rax
20813
Mike Kleinaaca1e42017-03-31 09:29:01 -040020814HIDDEN _sk_dstatop_sse41
20815.globl _sk_dstatop_sse41
Mike Klein86714282017-04-13 17:37:38 -040020816FUNCTION(_sk_dstatop_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040020817_sk_dstatop_sse41:
20818 .byte 68,15,40,195 // movaps %xmm3,%xmm8
20819 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040020820 .byte 68,15,40,13,48,70,0,0 // movaps 0x4630(%rip),%xmm9 # 48a0 <_sk_callback_sse41+0x15e>
Mike Kleinaaca1e42017-03-31 09:29:01 -040020821 .byte 68,15,92,207 // subps %xmm7,%xmm9
20822 .byte 65,15,89,193 // mulps %xmm9,%xmm0
20823 .byte 65,15,88,192 // addps %xmm8,%xmm0
20824 .byte 68,15,40,195 // movaps %xmm3,%xmm8
20825 .byte 68,15,89,197 // mulps %xmm5,%xmm8
20826 .byte 65,15,89,201 // mulps %xmm9,%xmm1
20827 .byte 65,15,88,200 // addps %xmm8,%xmm1
20828 .byte 68,15,40,195 // movaps %xmm3,%xmm8
20829 .byte 68,15,89,198 // mulps %xmm6,%xmm8
20830 .byte 65,15,89,209 // mulps %xmm9,%xmm2
20831 .byte 65,15,88,208 // addps %xmm8,%xmm2
20832 .byte 68,15,89,203 // mulps %xmm3,%xmm9
20833 .byte 15,89,223 // mulps %xmm7,%xmm3
20834 .byte 65,15,88,217 // addps %xmm9,%xmm3
20835 .byte 72,173 // lods %ds:(%rsi),%rax
20836 .byte 255,224 // jmpq *%rax
20837
20838HIDDEN _sk_srcin_sse41
20839.globl _sk_srcin_sse41
Mike Klein86714282017-04-13 17:37:38 -040020840FUNCTION(_sk_srcin_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040020841_sk_srcin_sse41:
20842 .byte 15,89,199 // mulps %xmm7,%xmm0
20843 .byte 15,89,207 // mulps %xmm7,%xmm1
20844 .byte 15,89,215 // mulps %xmm7,%xmm2
20845 .byte 15,89,223 // mulps %xmm7,%xmm3
20846 .byte 72,173 // lods %ds:(%rsi),%rax
20847 .byte 255,224 // jmpq *%rax
20848
20849HIDDEN _sk_dstin_sse41
20850.globl _sk_dstin_sse41
Mike Klein86714282017-04-13 17:37:38 -040020851FUNCTION(_sk_dstin_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040020852_sk_dstin_sse41:
20853 .byte 15,40,195 // movaps %xmm3,%xmm0
20854 .byte 15,89,196 // mulps %xmm4,%xmm0
20855 .byte 15,40,203 // movaps %xmm3,%xmm1
20856 .byte 15,89,205 // mulps %xmm5,%xmm1
20857 .byte 15,40,211 // movaps %xmm3,%xmm2
20858 .byte 15,89,214 // mulps %xmm6,%xmm2
20859 .byte 15,89,223 // mulps %xmm7,%xmm3
20860 .byte 72,173 // lods %ds:(%rsi),%rax
20861 .byte 255,224 // jmpq *%rax
20862
20863HIDDEN _sk_srcout_sse41
20864.globl _sk_srcout_sse41
Mike Klein86714282017-04-13 17:37:38 -040020865FUNCTION(_sk_srcout_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040020866_sk_srcout_sse41:
Mike Klein8ca33562017-05-23 08:07:43 -040020867 .byte 68,15,40,5,212,69,0,0 // movaps 0x45d4(%rip),%xmm8 # 48b0 <_sk_callback_sse41+0x16e>
Mike Kleinaaca1e42017-03-31 09:29:01 -040020868 .byte 68,15,92,199 // subps %xmm7,%xmm8
20869 .byte 65,15,89,192 // mulps %xmm8,%xmm0
20870 .byte 65,15,89,200 // mulps %xmm8,%xmm1
20871 .byte 65,15,89,208 // mulps %xmm8,%xmm2
20872 .byte 65,15,89,216 // mulps %xmm8,%xmm3
20873 .byte 72,173 // lods %ds:(%rsi),%rax
20874 .byte 255,224 // jmpq *%rax
20875
20876HIDDEN _sk_dstout_sse41
20877.globl _sk_dstout_sse41
Mike Klein86714282017-04-13 17:37:38 -040020878FUNCTION(_sk_dstout_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040020879_sk_dstout_sse41:
Mike Klein8ca33562017-05-23 08:07:43 -040020880 .byte 68,15,40,5,196,69,0,0 // movaps 0x45c4(%rip),%xmm8 # 48c0 <_sk_callback_sse41+0x17e>
Mike Kleinaaca1e42017-03-31 09:29:01 -040020881 .byte 68,15,92,195 // subps %xmm3,%xmm8
20882 .byte 65,15,40,192 // movaps %xmm8,%xmm0
20883 .byte 15,89,196 // mulps %xmm4,%xmm0
20884 .byte 65,15,40,200 // movaps %xmm8,%xmm1
20885 .byte 15,89,205 // mulps %xmm5,%xmm1
20886 .byte 65,15,40,208 // movaps %xmm8,%xmm2
20887 .byte 15,89,214 // mulps %xmm6,%xmm2
20888 .byte 68,15,89,199 // mulps %xmm7,%xmm8
20889 .byte 72,173 // lods %ds:(%rsi),%rax
20890 .byte 65,15,40,216 // movaps %xmm8,%xmm3
20891 .byte 255,224 // jmpq *%rax
20892
Mike Klein7c4af542017-03-29 18:21:14 -040020893HIDDEN _sk_srcover_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020894.globl _sk_srcover_sse41
Mike Klein86714282017-04-13 17:37:38 -040020895FUNCTION(_sk_srcover_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020896_sk_srcover_sse41:
Mike Klein8ca33562017-05-23 08:07:43 -040020897 .byte 68,15,40,5,167,69,0,0 // movaps 0x45a7(%rip),%xmm8 # 48d0 <_sk_callback_sse41+0x18e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040020898 .byte 68,15,92,195 // subps %xmm3,%xmm8
20899 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20900 .byte 68,15,89,204 // mulps %xmm4,%xmm9
20901 .byte 65,15,88,193 // addps %xmm9,%xmm0
20902 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20903 .byte 68,15,89,205 // mulps %xmm5,%xmm9
20904 .byte 65,15,88,201 // addps %xmm9,%xmm1
20905 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20906 .byte 68,15,89,206 // mulps %xmm6,%xmm9
20907 .byte 65,15,88,209 // addps %xmm9,%xmm2
20908 .byte 68,15,89,199 // mulps %xmm7,%xmm8
20909 .byte 65,15,88,216 // addps %xmm8,%xmm3
20910 .byte 72,173 // lods %ds:(%rsi),%rax
20911 .byte 255,224 // jmpq *%rax
20912
Mike Klein7c4af542017-03-29 18:21:14 -040020913HIDDEN _sk_dstover_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020914.globl _sk_dstover_sse41
Mike Klein86714282017-04-13 17:37:38 -040020915FUNCTION(_sk_dstover_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020916_sk_dstover_sse41:
Mike Klein8ca33562017-05-23 08:07:43 -040020917 .byte 68,15,40,5,123,69,0,0 // movaps 0x457b(%rip),%xmm8 # 48e0 <_sk_callback_sse41+0x19e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040020918 .byte 68,15,92,199 // subps %xmm7,%xmm8
20919 .byte 65,15,89,192 // mulps %xmm8,%xmm0
20920 .byte 15,88,196 // addps %xmm4,%xmm0
20921 .byte 65,15,89,200 // mulps %xmm8,%xmm1
20922 .byte 15,88,205 // addps %xmm5,%xmm1
20923 .byte 65,15,89,208 // mulps %xmm8,%xmm2
20924 .byte 15,88,214 // addps %xmm6,%xmm2
20925 .byte 65,15,89,216 // mulps %xmm8,%xmm3
20926 .byte 15,88,223 // addps %xmm7,%xmm3
20927 .byte 72,173 // lods %ds:(%rsi),%rax
20928 .byte 255,224 // jmpq *%rax
20929
Mike Kleinaaca1e42017-03-31 09:29:01 -040020930HIDDEN _sk_modulate_sse41
20931.globl _sk_modulate_sse41
Mike Klein86714282017-04-13 17:37:38 -040020932FUNCTION(_sk_modulate_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040020933_sk_modulate_sse41:
20934 .byte 15,89,196 // mulps %xmm4,%xmm0
20935 .byte 15,89,205 // mulps %xmm5,%xmm1
20936 .byte 15,89,214 // mulps %xmm6,%xmm2
20937 .byte 15,89,223 // mulps %xmm7,%xmm3
20938 .byte 72,173 // lods %ds:(%rsi),%rax
20939 .byte 255,224 // jmpq *%rax
20940
20941HIDDEN _sk_multiply_sse41
20942.globl _sk_multiply_sse41
Mike Klein86714282017-04-13 17:37:38 -040020943FUNCTION(_sk_multiply_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040020944_sk_multiply_sse41:
Mike Klein8ca33562017-05-23 08:07:43 -040020945 .byte 68,15,40,5,79,69,0,0 // movaps 0x454f(%rip),%xmm8 # 48f0 <_sk_callback_sse41+0x1ae>
Mike Kleinaaca1e42017-03-31 09:29:01 -040020946 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20947 .byte 68,15,92,207 // subps %xmm7,%xmm9
20948 .byte 69,15,40,209 // movaps %xmm9,%xmm10
20949 .byte 68,15,89,208 // mulps %xmm0,%xmm10
20950 .byte 68,15,92,195 // subps %xmm3,%xmm8
20951 .byte 69,15,40,216 // movaps %xmm8,%xmm11
20952 .byte 68,15,89,220 // mulps %xmm4,%xmm11
20953 .byte 69,15,88,218 // addps %xmm10,%xmm11
20954 .byte 15,89,196 // mulps %xmm4,%xmm0
20955 .byte 65,15,88,195 // addps %xmm11,%xmm0
20956 .byte 69,15,40,209 // movaps %xmm9,%xmm10
20957 .byte 68,15,89,209 // mulps %xmm1,%xmm10
20958 .byte 69,15,40,216 // movaps %xmm8,%xmm11
20959 .byte 68,15,89,221 // mulps %xmm5,%xmm11
20960 .byte 69,15,88,218 // addps %xmm10,%xmm11
20961 .byte 15,89,205 // mulps %xmm5,%xmm1
20962 .byte 65,15,88,203 // addps %xmm11,%xmm1
20963 .byte 69,15,40,209 // movaps %xmm9,%xmm10
20964 .byte 68,15,89,210 // mulps %xmm2,%xmm10
20965 .byte 69,15,40,216 // movaps %xmm8,%xmm11
20966 .byte 68,15,89,222 // mulps %xmm6,%xmm11
20967 .byte 69,15,88,218 // addps %xmm10,%xmm11
20968 .byte 15,89,214 // mulps %xmm6,%xmm2
20969 .byte 65,15,88,211 // addps %xmm11,%xmm2
20970 .byte 68,15,89,203 // mulps %xmm3,%xmm9
20971 .byte 68,15,89,199 // mulps %xmm7,%xmm8
20972 .byte 69,15,88,193 // addps %xmm9,%xmm8
20973 .byte 15,89,223 // mulps %xmm7,%xmm3
20974 .byte 65,15,88,216 // addps %xmm8,%xmm3
20975 .byte 72,173 // lods %ds:(%rsi),%rax
20976 .byte 255,224 // jmpq *%rax
20977
20978HIDDEN _sk_plus__sse41
20979.globl _sk_plus__sse41
Mike Klein86714282017-04-13 17:37:38 -040020980FUNCTION(_sk_plus__sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040020981_sk_plus__sse41:
20982 .byte 15,88,196 // addps %xmm4,%xmm0
20983 .byte 15,88,205 // addps %xmm5,%xmm1
20984 .byte 15,88,214 // addps %xmm6,%xmm2
20985 .byte 15,88,223 // addps %xmm7,%xmm3
20986 .byte 72,173 // lods %ds:(%rsi),%rax
20987 .byte 255,224 // jmpq *%rax
20988
20989HIDDEN _sk_screen_sse41
20990.globl _sk_screen_sse41
Mike Klein86714282017-04-13 17:37:38 -040020991FUNCTION(_sk_screen_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040020992_sk_screen_sse41:
20993 .byte 68,15,40,192 // movaps %xmm0,%xmm8
20994 .byte 68,15,88,196 // addps %xmm4,%xmm8
20995 .byte 15,89,196 // mulps %xmm4,%xmm0
20996 .byte 68,15,92,192 // subps %xmm0,%xmm8
20997 .byte 68,15,40,201 // movaps %xmm1,%xmm9
20998 .byte 68,15,88,205 // addps %xmm5,%xmm9
20999 .byte 15,89,205 // mulps %xmm5,%xmm1
21000 .byte 68,15,92,201 // subps %xmm1,%xmm9
21001 .byte 68,15,40,210 // movaps %xmm2,%xmm10
21002 .byte 68,15,88,214 // addps %xmm6,%xmm10
21003 .byte 15,89,214 // mulps %xmm6,%xmm2
21004 .byte 68,15,92,210 // subps %xmm2,%xmm10
21005 .byte 68,15,40,219 // movaps %xmm3,%xmm11
21006 .byte 68,15,88,223 // addps %xmm7,%xmm11
21007 .byte 15,89,223 // mulps %xmm7,%xmm3
21008 .byte 68,15,92,219 // subps %xmm3,%xmm11
21009 .byte 72,173 // lods %ds:(%rsi),%rax
21010 .byte 65,15,40,192 // movaps %xmm8,%xmm0
21011 .byte 65,15,40,201 // movaps %xmm9,%xmm1
21012 .byte 65,15,40,210 // movaps %xmm10,%xmm2
21013 .byte 65,15,40,219 // movaps %xmm11,%xmm3
21014 .byte 255,224 // jmpq *%rax
21015
21016HIDDEN _sk_xor__sse41
21017.globl _sk_xor__sse41
Mike Klein86714282017-04-13 17:37:38 -040021018FUNCTION(_sk_xor__sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040021019_sk_xor__sse41:
21020 .byte 68,15,40,195 // movaps %xmm3,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040021021 .byte 15,40,29,128,68,0,0 // movaps 0x4480(%rip),%xmm3 # 4900 <_sk_callback_sse41+0x1be>
Mike Kleinaaca1e42017-03-31 09:29:01 -040021022 .byte 68,15,40,203 // movaps %xmm3,%xmm9
21023 .byte 68,15,92,207 // subps %xmm7,%xmm9
21024 .byte 65,15,89,193 // mulps %xmm9,%xmm0
21025 .byte 65,15,92,216 // subps %xmm8,%xmm3
21026 .byte 68,15,40,211 // movaps %xmm3,%xmm10
21027 .byte 68,15,89,212 // mulps %xmm4,%xmm10
21028 .byte 65,15,88,194 // addps %xmm10,%xmm0
21029 .byte 65,15,89,201 // mulps %xmm9,%xmm1
21030 .byte 68,15,40,211 // movaps %xmm3,%xmm10
21031 .byte 68,15,89,213 // mulps %xmm5,%xmm10
21032 .byte 65,15,88,202 // addps %xmm10,%xmm1
21033 .byte 65,15,89,209 // mulps %xmm9,%xmm2
21034 .byte 68,15,40,211 // movaps %xmm3,%xmm10
21035 .byte 68,15,89,214 // mulps %xmm6,%xmm10
21036 .byte 65,15,88,210 // addps %xmm10,%xmm2
21037 .byte 69,15,89,200 // mulps %xmm8,%xmm9
21038 .byte 15,89,223 // mulps %xmm7,%xmm3
21039 .byte 65,15,88,217 // addps %xmm9,%xmm3
21040 .byte 72,173 // lods %ds:(%rsi),%rax
21041 .byte 255,224 // jmpq *%rax
21042
Mike Klein66b09ab2017-03-31 10:29:40 -040021043HIDDEN _sk_darken_sse41
21044.globl _sk_darken_sse41
Mike Klein86714282017-04-13 17:37:38 -040021045FUNCTION(_sk_darken_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040021046_sk_darken_sse41:
21047 .byte 68,15,40,193 // movaps %xmm1,%xmm8
21048 .byte 68,15,40,200 // movaps %xmm0,%xmm9
21049 .byte 15,88,196 // addps %xmm4,%xmm0
21050 .byte 68,15,89,207 // mulps %xmm7,%xmm9
21051 .byte 15,40,203 // movaps %xmm3,%xmm1
21052 .byte 15,89,204 // mulps %xmm4,%xmm1
21053 .byte 68,15,95,201 // maxps %xmm1,%xmm9
21054 .byte 65,15,92,193 // subps %xmm9,%xmm0
21055 .byte 65,15,40,200 // movaps %xmm8,%xmm1
21056 .byte 15,88,205 // addps %xmm5,%xmm1
21057 .byte 68,15,89,199 // mulps %xmm7,%xmm8
21058 .byte 68,15,40,203 // movaps %xmm3,%xmm9
21059 .byte 68,15,89,205 // mulps %xmm5,%xmm9
21060 .byte 69,15,95,193 // maxps %xmm9,%xmm8
21061 .byte 65,15,92,200 // subps %xmm8,%xmm1
21062 .byte 68,15,40,194 // movaps %xmm2,%xmm8
21063 .byte 68,15,88,198 // addps %xmm6,%xmm8
21064 .byte 15,89,215 // mulps %xmm7,%xmm2
21065 .byte 68,15,40,203 // movaps %xmm3,%xmm9
21066 .byte 68,15,89,206 // mulps %xmm6,%xmm9
21067 .byte 65,15,95,209 // maxps %xmm9,%xmm2
21068 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040021069 .byte 15,40,21,235,67,0,0 // movaps 0x43eb(%rip),%xmm2 # 4910 <_sk_callback_sse41+0x1ce>
Mike Klein66b09ab2017-03-31 10:29:40 -040021070 .byte 15,92,211 // subps %xmm3,%xmm2
21071 .byte 15,89,215 // mulps %xmm7,%xmm2
21072 .byte 15,88,218 // addps %xmm2,%xmm3
21073 .byte 72,173 // lods %ds:(%rsi),%rax
21074 .byte 65,15,40,208 // movaps %xmm8,%xmm2
21075 .byte 255,224 // jmpq *%rax
21076
21077HIDDEN _sk_lighten_sse41
21078.globl _sk_lighten_sse41
Mike Klein86714282017-04-13 17:37:38 -040021079FUNCTION(_sk_lighten_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040021080_sk_lighten_sse41:
21081 .byte 68,15,40,193 // movaps %xmm1,%xmm8
21082 .byte 68,15,40,200 // movaps %xmm0,%xmm9
21083 .byte 15,88,196 // addps %xmm4,%xmm0
21084 .byte 68,15,89,207 // mulps %xmm7,%xmm9
21085 .byte 15,40,203 // movaps %xmm3,%xmm1
21086 .byte 15,89,204 // mulps %xmm4,%xmm1
21087 .byte 68,15,93,201 // minps %xmm1,%xmm9
21088 .byte 65,15,92,193 // subps %xmm9,%xmm0
21089 .byte 65,15,40,200 // movaps %xmm8,%xmm1
21090 .byte 15,88,205 // addps %xmm5,%xmm1
21091 .byte 68,15,89,199 // mulps %xmm7,%xmm8
21092 .byte 68,15,40,203 // movaps %xmm3,%xmm9
21093 .byte 68,15,89,205 // mulps %xmm5,%xmm9
21094 .byte 69,15,93,193 // minps %xmm9,%xmm8
21095 .byte 65,15,92,200 // subps %xmm8,%xmm1
21096 .byte 68,15,40,194 // movaps %xmm2,%xmm8
21097 .byte 68,15,88,198 // addps %xmm6,%xmm8
21098 .byte 15,89,215 // mulps %xmm7,%xmm2
21099 .byte 68,15,40,203 // movaps %xmm3,%xmm9
21100 .byte 68,15,89,206 // mulps %xmm6,%xmm9
21101 .byte 65,15,93,209 // minps %xmm9,%xmm2
21102 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040021103 .byte 15,40,21,144,67,0,0 // movaps 0x4390(%rip),%xmm2 # 4920 <_sk_callback_sse41+0x1de>
Mike Klein66b09ab2017-03-31 10:29:40 -040021104 .byte 15,92,211 // subps %xmm3,%xmm2
21105 .byte 15,89,215 // mulps %xmm7,%xmm2
21106 .byte 15,88,218 // addps %xmm2,%xmm3
21107 .byte 72,173 // lods %ds:(%rsi),%rax
21108 .byte 65,15,40,208 // movaps %xmm8,%xmm2
21109 .byte 255,224 // jmpq *%rax
21110
21111HIDDEN _sk_difference_sse41
21112.globl _sk_difference_sse41
Mike Klein86714282017-04-13 17:37:38 -040021113FUNCTION(_sk_difference_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040021114_sk_difference_sse41:
21115 .byte 68,15,40,193 // movaps %xmm1,%xmm8
21116 .byte 68,15,40,200 // movaps %xmm0,%xmm9
21117 .byte 15,88,196 // addps %xmm4,%xmm0
21118 .byte 68,15,89,207 // mulps %xmm7,%xmm9
21119 .byte 15,40,203 // movaps %xmm3,%xmm1
21120 .byte 15,89,204 // mulps %xmm4,%xmm1
21121 .byte 68,15,93,201 // minps %xmm1,%xmm9
21122 .byte 69,15,88,201 // addps %xmm9,%xmm9
21123 .byte 65,15,92,193 // subps %xmm9,%xmm0
21124 .byte 65,15,40,200 // movaps %xmm8,%xmm1
21125 .byte 15,88,205 // addps %xmm5,%xmm1
21126 .byte 68,15,89,199 // mulps %xmm7,%xmm8
21127 .byte 68,15,40,203 // movaps %xmm3,%xmm9
21128 .byte 68,15,89,205 // mulps %xmm5,%xmm9
21129 .byte 69,15,93,193 // minps %xmm9,%xmm8
21130 .byte 69,15,88,192 // addps %xmm8,%xmm8
21131 .byte 65,15,92,200 // subps %xmm8,%xmm1
21132 .byte 68,15,40,194 // movaps %xmm2,%xmm8
21133 .byte 68,15,88,198 // addps %xmm6,%xmm8
21134 .byte 15,89,215 // mulps %xmm7,%xmm2
21135 .byte 68,15,40,203 // movaps %xmm3,%xmm9
21136 .byte 68,15,89,206 // mulps %xmm6,%xmm9
21137 .byte 65,15,93,209 // minps %xmm9,%xmm2
21138 .byte 15,88,210 // addps %xmm2,%xmm2
21139 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040021140 .byte 15,40,21,42,67,0,0 // movaps 0x432a(%rip),%xmm2 # 4930 <_sk_callback_sse41+0x1ee>
Mike Klein66b09ab2017-03-31 10:29:40 -040021141 .byte 15,92,211 // subps %xmm3,%xmm2
21142 .byte 15,89,215 // mulps %xmm7,%xmm2
21143 .byte 15,88,218 // addps %xmm2,%xmm3
21144 .byte 72,173 // lods %ds:(%rsi),%rax
21145 .byte 65,15,40,208 // movaps %xmm8,%xmm2
21146 .byte 255,224 // jmpq *%rax
21147
21148HIDDEN _sk_exclusion_sse41
21149.globl _sk_exclusion_sse41
Mike Klein86714282017-04-13 17:37:38 -040021150FUNCTION(_sk_exclusion_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040021151_sk_exclusion_sse41:
Mike Kleinfe560a82017-05-01 12:56:35 -040021152 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Klein66b09ab2017-03-31 10:29:40 -040021153 .byte 15,88,196 // addps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021154 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Klein66b09ab2017-03-31 10:29:40 -040021155 .byte 69,15,88,192 // addps %xmm8,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040021156 .byte 65,15,92,192 // subps %xmm8,%xmm0
21157 .byte 68,15,40,193 // movaps %xmm1,%xmm8
21158 .byte 68,15,88,197 // addps %xmm5,%xmm8
21159 .byte 15,89,205 // mulps %xmm5,%xmm1
21160 .byte 15,88,201 // addps %xmm1,%xmm1
21161 .byte 68,15,92,193 // subps %xmm1,%xmm8
21162 .byte 68,15,40,202 // movaps %xmm2,%xmm9
21163 .byte 68,15,88,206 // addps %xmm6,%xmm9
Mike Klein66b09ab2017-03-31 10:29:40 -040021164 .byte 15,89,214 // mulps %xmm6,%xmm2
21165 .byte 15,88,210 // addps %xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040021166 .byte 68,15,92,202 // subps %xmm2,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040021167 .byte 15,40,13,235,66,0,0 // movaps 0x42eb(%rip),%xmm1 # 4940 <_sk_callback_sse41+0x1fe>
Mike Kleinfe560a82017-05-01 12:56:35 -040021168 .byte 15,92,203 // subps %xmm3,%xmm1
21169 .byte 15,89,207 // mulps %xmm7,%xmm1
21170 .byte 15,88,217 // addps %xmm1,%xmm3
Mike Klein66b09ab2017-03-31 10:29:40 -040021171 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040021172 .byte 65,15,40,200 // movaps %xmm8,%xmm1
21173 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Klein66b09ab2017-03-31 10:29:40 -040021174 .byte 255,224 // jmpq *%rax
21175
Mike Klein61b84162017-03-31 11:48:14 -040021176HIDDEN _sk_colorburn_sse41
21177.globl _sk_colorburn_sse41
Mike Klein86714282017-04-13 17:37:38 -040021178FUNCTION(_sk_colorburn_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040021179_sk_colorburn_sse41:
Mike Kleinfe560a82017-05-01 12:56:35 -040021180 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040021181 .byte 68,15,40,21,218,66,0,0 // movaps 0x42da(%rip),%xmm10 # 4950 <_sk_callback_sse41+0x20e>
Mike Klein61b84162017-03-31 11:48:14 -040021182 .byte 69,15,40,218 // movaps %xmm10,%xmm11
21183 .byte 68,15,92,223 // subps %xmm7,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040021184 .byte 69,15,40,203 // movaps %xmm11,%xmm9
21185 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Klein61b84162017-03-31 11:48:14 -040021186 .byte 15,40,199 // movaps %xmm7,%xmm0
21187 .byte 15,92,196 // subps %xmm4,%xmm0
21188 .byte 15,89,195 // mulps %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021189 .byte 65,15,94,192 // divps %xmm8,%xmm0
21190 .byte 68,15,40,231 // movaps %xmm7,%xmm12
21191 .byte 68,15,93,224 // minps %xmm0,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040021192 .byte 68,15,40,239 // movaps %xmm7,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040021193 .byte 69,15,92,236 // subps %xmm12,%xmm13
21194 .byte 68,15,89,235 // mulps %xmm3,%xmm13
21195 .byte 69,15,88,233 // addps %xmm9,%xmm13
21196 .byte 69,15,40,225 // movaps %xmm9,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040021197 .byte 68,15,88,228 // addps %xmm4,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040021198 .byte 69,15,87,201 // xorps %xmm9,%xmm9
21199 .byte 65,15,40,192 // movaps %xmm8,%xmm0
21200 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
21201 .byte 68,15,92,211 // subps %xmm3,%xmm10
21202 .byte 102,69,15,56,20,232 // blendvps %xmm0,%xmm8,%xmm13
21203 .byte 69,15,40,194 // movaps %xmm10,%xmm8
21204 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040021205 .byte 15,40,196 // movaps %xmm4,%xmm0
21206 .byte 15,194,199,0 // cmpeqps %xmm7,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021207 .byte 69,15,88,197 // addps %xmm13,%xmm8
21208 .byte 102,69,15,56,20,196 // blendvps %xmm0,%xmm12,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040021209 .byte 69,15,40,227 // movaps %xmm11,%xmm12
21210 .byte 68,15,89,225 // mulps %xmm1,%xmm12
21211 .byte 15,40,199 // movaps %xmm7,%xmm0
21212 .byte 15,92,197 // subps %xmm5,%xmm0
21213 .byte 15,89,195 // mulps %xmm3,%xmm0
21214 .byte 15,94,193 // divps %xmm1,%xmm0
21215 .byte 68,15,40,239 // movaps %xmm7,%xmm13
21216 .byte 68,15,93,232 // minps %xmm0,%xmm13
21217 .byte 68,15,40,247 // movaps %xmm7,%xmm14
21218 .byte 69,15,92,245 // subps %xmm13,%xmm14
21219 .byte 15,40,193 // movaps %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021220 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040021221 .byte 68,15,89,243 // mulps %xmm3,%xmm14
21222 .byte 69,15,88,244 // addps %xmm12,%xmm14
21223 .byte 102,68,15,56,20,241 // blendvps %xmm0,%xmm1,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040021224 .byte 68,15,88,229 // addps %xmm5,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040021225 .byte 65,15,40,202 // movaps %xmm10,%xmm1
21226 .byte 15,89,205 // mulps %xmm5,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040021227 .byte 65,15,88,206 // addps %xmm14,%xmm1
21228 .byte 15,40,197 // movaps %xmm5,%xmm0
21229 .byte 15,194,199,0 // cmpeqps %xmm7,%xmm0
21230 .byte 102,65,15,56,20,204 // blendvps %xmm0,%xmm12,%xmm1
21231 .byte 15,40,199 // movaps %xmm7,%xmm0
21232 .byte 15,92,198 // subps %xmm6,%xmm0
21233 .byte 15,89,195 // mulps %xmm3,%xmm0
21234 .byte 15,94,194 // divps %xmm2,%xmm0
21235 .byte 68,15,40,231 // movaps %xmm7,%xmm12
21236 .byte 68,15,93,224 // minps %xmm0,%xmm12
21237 .byte 68,15,40,239 // movaps %xmm7,%xmm13
21238 .byte 69,15,92,236 // subps %xmm12,%xmm13
21239 .byte 68,15,89,218 // mulps %xmm2,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040021240 .byte 68,15,194,202,0 // cmpeqps %xmm2,%xmm9
Mike Klein61b84162017-03-31 11:48:14 -040021241 .byte 68,15,89,235 // mulps %xmm3,%xmm13
21242 .byte 69,15,88,235 // addps %xmm11,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040021243 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040021244 .byte 102,68,15,56,20,234 // blendvps %xmm0,%xmm2,%xmm13
21245 .byte 68,15,88,222 // addps %xmm6,%xmm11
21246 .byte 65,15,40,210 // movaps %xmm10,%xmm2
21247 .byte 15,89,214 // mulps %xmm6,%xmm2
21248 .byte 65,15,88,213 // addps %xmm13,%xmm2
21249 .byte 15,40,198 // movaps %xmm6,%xmm0
21250 .byte 15,194,199,0 // cmpeqps %xmm7,%xmm0
21251 .byte 102,65,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm2
21252 .byte 68,15,89,215 // mulps %xmm7,%xmm10
21253 .byte 65,15,88,218 // addps %xmm10,%xmm3
21254 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040021255 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040021256 .byte 255,224 // jmpq *%rax
21257
21258HIDDEN _sk_colordodge_sse41
21259.globl _sk_colordodge_sse41
Mike Klein86714282017-04-13 17:37:38 -040021260FUNCTION(_sk_colordodge_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040021261_sk_colordodge_sse41:
21262 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040021263 .byte 68,15,40,21,184,65,0,0 // movaps 0x41b8(%rip),%xmm10 # 4960 <_sk_callback_sse41+0x21e>
Mike Klein61b84162017-03-31 11:48:14 -040021264 .byte 69,15,40,218 // movaps %xmm10,%xmm11
21265 .byte 68,15,92,223 // subps %xmm7,%xmm11
21266 .byte 69,15,40,227 // movaps %xmm11,%xmm12
21267 .byte 69,15,89,224 // mulps %xmm8,%xmm12
21268 .byte 68,15,40,203 // movaps %xmm3,%xmm9
21269 .byte 68,15,89,204 // mulps %xmm4,%xmm9
21270 .byte 15,40,195 // movaps %xmm3,%xmm0
21271 .byte 65,15,92,192 // subps %xmm8,%xmm0
21272 .byte 68,15,94,200 // divps %xmm0,%xmm9
21273 .byte 68,15,40,239 // movaps %xmm7,%xmm13
21274 .byte 68,15,40,247 // movaps %xmm7,%xmm14
21275 .byte 69,15,93,241 // minps %xmm9,%xmm14
21276 .byte 65,15,40,192 // movaps %xmm8,%xmm0
21277 .byte 15,194,195,0 // cmpeqps %xmm3,%xmm0
21278 .byte 68,15,89,243 // mulps %xmm3,%xmm14
21279 .byte 69,15,88,244 // addps %xmm12,%xmm14
21280 .byte 102,69,15,56,20,240 // blendvps %xmm0,%xmm8,%xmm14
21281 .byte 69,15,87,201 // xorps %xmm9,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040021282 .byte 68,15,88,228 // addps %xmm4,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040021283 .byte 68,15,92,211 // subps %xmm3,%xmm10
21284 .byte 69,15,40,194 // movaps %xmm10,%xmm8
21285 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040021286 .byte 69,15,88,198 // addps %xmm14,%xmm8
21287 .byte 15,40,196 // movaps %xmm4,%xmm0
21288 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
21289 .byte 102,69,15,56,20,196 // blendvps %xmm0,%xmm12,%xmm8
21290 .byte 68,15,40,227 // movaps %xmm3,%xmm12
21291 .byte 68,15,89,229 // mulps %xmm5,%xmm12
21292 .byte 15,40,195 // movaps %xmm3,%xmm0
21293 .byte 15,92,193 // subps %xmm1,%xmm0
21294 .byte 68,15,94,224 // divps %xmm0,%xmm12
21295 .byte 69,15,40,243 // movaps %xmm11,%xmm14
21296 .byte 68,15,89,241 // mulps %xmm1,%xmm14
21297 .byte 69,15,93,236 // minps %xmm12,%xmm13
21298 .byte 15,40,193 // movaps %xmm1,%xmm0
21299 .byte 15,194,195,0 // cmpeqps %xmm3,%xmm0
21300 .byte 68,15,89,235 // mulps %xmm3,%xmm13
21301 .byte 69,15,88,238 // addps %xmm14,%xmm13
21302 .byte 102,68,15,56,20,233 // blendvps %xmm0,%xmm1,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040021303 .byte 68,15,88,245 // addps %xmm5,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040021304 .byte 65,15,40,202 // movaps %xmm10,%xmm1
21305 .byte 15,89,205 // mulps %xmm5,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040021306 .byte 65,15,88,205 // addps %xmm13,%xmm1
21307 .byte 15,40,197 // movaps %xmm5,%xmm0
21308 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
21309 .byte 102,65,15,56,20,206 // blendvps %xmm0,%xmm14,%xmm1
21310 .byte 68,15,40,227 // movaps %xmm3,%xmm12
21311 .byte 68,15,89,230 // mulps %xmm6,%xmm12
21312 .byte 15,40,195 // movaps %xmm3,%xmm0
21313 .byte 15,92,194 // subps %xmm2,%xmm0
21314 .byte 68,15,94,224 // divps %xmm0,%xmm12
21315 .byte 68,15,40,239 // movaps %xmm7,%xmm13
21316 .byte 68,15,89,218 // mulps %xmm2,%xmm11
21317 .byte 69,15,93,236 // minps %xmm12,%xmm13
21318 .byte 15,40,194 // movaps %xmm2,%xmm0
21319 .byte 15,194,195,0 // cmpeqps %xmm3,%xmm0
21320 .byte 68,15,89,235 // mulps %xmm3,%xmm13
21321 .byte 69,15,88,235 // addps %xmm11,%xmm13
21322 .byte 102,68,15,56,20,234 // blendvps %xmm0,%xmm2,%xmm13
21323 .byte 65,15,40,210 // movaps %xmm10,%xmm2
21324 .byte 15,89,214 // mulps %xmm6,%xmm2
21325 .byte 65,15,88,213 // addps %xmm13,%xmm2
21326 .byte 68,15,194,206,0 // cmpeqps %xmm6,%xmm9
21327 .byte 68,15,88,222 // addps %xmm6,%xmm11
21328 .byte 65,15,40,193 // movaps %xmm9,%xmm0
21329 .byte 102,65,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm2
21330 .byte 68,15,89,215 // mulps %xmm7,%xmm10
21331 .byte 65,15,88,218 // addps %xmm10,%xmm3
21332 .byte 72,173 // lods %ds:(%rsi),%rax
21333 .byte 65,15,40,192 // movaps %xmm8,%xmm0
21334 .byte 255,224 // jmpq *%rax
21335
21336HIDDEN _sk_hardlight_sse41
21337.globl _sk_hardlight_sse41
Mike Klein86714282017-04-13 17:37:38 -040021338FUNCTION(_sk_hardlight_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040021339_sk_hardlight_sse41:
Mike Klein15bf6782017-03-31 12:21:46 -040021340 .byte 15,41,116,36,232 // movaps %xmm6,-0x18(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040021341 .byte 68,15,40,229 // movaps %xmm5,%xmm12
21342 .byte 15,40,244 // movaps %xmm4,%xmm6
21343 .byte 15,40,227 // movaps %xmm3,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040021344 .byte 68,15,40,200 // movaps %xmm0,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040021345 .byte 68,15,40,21,145,64,0,0 // movaps 0x4091(%rip),%xmm10 # 4970 <_sk_callback_sse41+0x22e>
Mike Kleinfe560a82017-05-01 12:56:35 -040021346 .byte 65,15,40,234 // movaps %xmm10,%xmm5
21347 .byte 15,92,239 // subps %xmm7,%xmm5
21348 .byte 15,40,197 // movaps %xmm5,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040021349 .byte 65,15,89,193 // mulps %xmm9,%xmm0
21350 .byte 68,15,92,212 // subps %xmm4,%xmm10
21351 .byte 69,15,40,194 // movaps %xmm10,%xmm8
21352 .byte 68,15,89,198 // mulps %xmm6,%xmm8
21353 .byte 68,15,88,192 // addps %xmm0,%xmm8
21354 .byte 68,15,40,252 // movaps %xmm4,%xmm15
21355 .byte 69,15,92,249 // subps %xmm9,%xmm15
21356 .byte 15,89,223 // mulps %xmm7,%xmm3
21357 .byte 68,15,40,239 // movaps %xmm7,%xmm13
21358 .byte 68,15,40,247 // movaps %xmm7,%xmm14
21359 .byte 15,40,199 // movaps %xmm7,%xmm0
21360 .byte 15,92,198 // subps %xmm6,%xmm0
21361 .byte 65,15,89,199 // mulps %xmm15,%xmm0
21362 .byte 15,88,192 // addps %xmm0,%xmm0
21363 .byte 68,15,40,251 // movaps %xmm3,%xmm15
21364 .byte 68,15,92,248 // subps %xmm0,%xmm15
21365 .byte 65,15,40,193 // movaps %xmm9,%xmm0
21366 .byte 15,88,192 // addps %xmm0,%xmm0
21367 .byte 15,194,196,2 // cmpleps %xmm4,%xmm0
21368 .byte 68,15,89,206 // mulps %xmm6,%xmm9
21369 .byte 69,15,88,201 // addps %xmm9,%xmm9
21370 .byte 102,69,15,56,20,249 // blendvps %xmm0,%xmm9,%xmm15
Mike Kleinfe560a82017-05-01 12:56:35 -040021371 .byte 68,15,40,221 // movaps %xmm5,%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040021372 .byte 68,15,89,217 // mulps %xmm1,%xmm11
21373 .byte 15,40,196 // movaps %xmm4,%xmm0
21374 .byte 15,92,193 // subps %xmm1,%xmm0
21375 .byte 69,15,40,204 // movaps %xmm12,%xmm9
21376 .byte 69,15,92,233 // subps %xmm9,%xmm13
21377 .byte 68,15,89,232 // mulps %xmm0,%xmm13
21378 .byte 69,15,88,237 // addps %xmm13,%xmm13
21379 .byte 68,15,40,227 // movaps %xmm3,%xmm12
21380 .byte 69,15,92,229 // subps %xmm13,%xmm12
21381 .byte 15,40,193 // movaps %xmm1,%xmm0
21382 .byte 15,88,192 // addps %xmm0,%xmm0
21383 .byte 15,194,196,2 // cmpleps %xmm4,%xmm0
21384 .byte 65,15,89,201 // mulps %xmm9,%xmm1
21385 .byte 69,15,40,233 // movaps %xmm9,%xmm13
21386 .byte 15,88,201 // addps %xmm1,%xmm1
21387 .byte 102,68,15,56,20,225 // blendvps %xmm0,%xmm1,%xmm12
21388 .byte 65,15,40,202 // movaps %xmm10,%xmm1
21389 .byte 69,15,40,202 // movaps %xmm10,%xmm9
21390 .byte 68,15,89,215 // mulps %xmm7,%xmm10
21391 .byte 69,15,88,199 // addps %xmm15,%xmm8
21392 .byte 65,15,89,205 // mulps %xmm13,%xmm1
21393 .byte 65,15,88,203 // addps %xmm11,%xmm1
21394 .byte 65,15,88,204 // addps %xmm12,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040021395 .byte 15,89,234 // mulps %xmm2,%xmm5
Mike Klein15bf6782017-03-31 12:21:46 -040021396 .byte 68,15,40,92,36,232 // movaps -0x18(%rsp),%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040021397 .byte 69,15,89,203 // mulps %xmm11,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040021398 .byte 68,15,88,205 // addps %xmm5,%xmm9
21399 .byte 15,40,194 // movaps %xmm2,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040021400 .byte 15,88,192 // addps %xmm0,%xmm0
21401 .byte 15,194,196,2 // cmpleps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021402 .byte 15,40,236 // movaps %xmm4,%xmm5
21403 .byte 15,92,234 // subps %xmm2,%xmm5
21404 .byte 65,15,89,211 // mulps %xmm11,%xmm2
21405 .byte 15,88,210 // addps %xmm2,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040021406 .byte 69,15,92,243 // subps %xmm11,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040021407 .byte 68,15,89,245 // mulps %xmm5,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040021408 .byte 69,15,88,246 // addps %xmm14,%xmm14
21409 .byte 65,15,92,222 // subps %xmm14,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040021410 .byte 102,15,56,20,218 // blendvps %xmm0,%xmm2,%xmm3
Mike Klein61b84162017-03-31 11:48:14 -040021411 .byte 68,15,88,203 // addps %xmm3,%xmm9
21412 .byte 65,15,88,226 // addps %xmm10,%xmm4
21413 .byte 72,173 // lods %ds:(%rsi),%rax
21414 .byte 65,15,40,192 // movaps %xmm8,%xmm0
21415 .byte 65,15,40,209 // movaps %xmm9,%xmm2
21416 .byte 15,40,220 // movaps %xmm4,%xmm3
21417 .byte 15,40,230 // movaps %xmm6,%xmm4
21418 .byte 65,15,40,237 // movaps %xmm13,%xmm5
21419 .byte 65,15,40,243 // movaps %xmm11,%xmm6
Mike Klein61b84162017-03-31 11:48:14 -040021420 .byte 255,224 // jmpq *%rax
21421
21422HIDDEN _sk_overlay_sse41
21423.globl _sk_overlay_sse41
Mike Klein86714282017-04-13 17:37:38 -040021424FUNCTION(_sk_overlay_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040021425_sk_overlay_sse41:
21426 .byte 68,15,40,201 // movaps %xmm1,%xmm9
21427 .byte 68,15,40,240 // movaps %xmm0,%xmm14
Mike Klein8ca33562017-05-23 08:07:43 -040021428 .byte 68,15,40,21,118,63,0,0 // movaps 0x3f76(%rip),%xmm10 # 4980 <_sk_callback_sse41+0x23e>
Mike Klein61b84162017-03-31 11:48:14 -040021429 .byte 69,15,40,218 // movaps %xmm10,%xmm11
21430 .byte 68,15,92,223 // subps %xmm7,%xmm11
21431 .byte 65,15,40,195 // movaps %xmm11,%xmm0
21432 .byte 65,15,89,198 // mulps %xmm14,%xmm0
21433 .byte 68,15,92,211 // subps %xmm3,%xmm10
21434 .byte 69,15,40,194 // movaps %xmm10,%xmm8
21435 .byte 68,15,89,196 // mulps %xmm4,%xmm8
21436 .byte 68,15,88,192 // addps %xmm0,%xmm8
21437 .byte 68,15,40,235 // movaps %xmm3,%xmm13
21438 .byte 69,15,92,238 // subps %xmm14,%xmm13
21439 .byte 68,15,89,244 // mulps %xmm4,%xmm14
21440 .byte 15,40,207 // movaps %xmm7,%xmm1
21441 .byte 15,92,204 // subps %xmm4,%xmm1
21442 .byte 15,40,196 // movaps %xmm4,%xmm0
21443 .byte 15,88,192 // addps %xmm0,%xmm0
21444 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
21445 .byte 69,15,88,246 // addps %xmm14,%xmm14
21446 .byte 68,15,40,227 // movaps %xmm3,%xmm12
21447 .byte 68,15,89,231 // mulps %xmm7,%xmm12
21448 .byte 65,15,89,205 // mulps %xmm13,%xmm1
21449 .byte 15,88,201 // addps %xmm1,%xmm1
21450 .byte 69,15,40,236 // movaps %xmm12,%xmm13
21451 .byte 68,15,92,233 // subps %xmm1,%xmm13
21452 .byte 102,69,15,56,20,238 // blendvps %xmm0,%xmm14,%xmm13
21453 .byte 69,15,88,197 // addps %xmm13,%xmm8
21454 .byte 65,15,40,195 // movaps %xmm11,%xmm0
21455 .byte 65,15,89,193 // mulps %xmm9,%xmm0
21456 .byte 65,15,40,202 // movaps %xmm10,%xmm1
21457 .byte 15,89,205 // mulps %xmm5,%xmm1
21458 .byte 15,88,200 // addps %xmm0,%xmm1
21459 .byte 68,15,40,235 // movaps %xmm3,%xmm13
21460 .byte 69,15,92,233 // subps %xmm9,%xmm13
21461 .byte 68,15,89,205 // mulps %xmm5,%xmm9
21462 .byte 68,15,40,247 // movaps %xmm7,%xmm14
21463 .byte 68,15,92,245 // subps %xmm5,%xmm14
21464 .byte 15,40,197 // movaps %xmm5,%xmm0
21465 .byte 15,88,192 // addps %xmm0,%xmm0
21466 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
21467 .byte 69,15,88,201 // addps %xmm9,%xmm9
21468 .byte 69,15,89,245 // mulps %xmm13,%xmm14
21469 .byte 69,15,88,246 // addps %xmm14,%xmm14
21470 .byte 69,15,40,236 // movaps %xmm12,%xmm13
21471 .byte 69,15,92,238 // subps %xmm14,%xmm13
21472 .byte 102,69,15,56,20,233 // blendvps %xmm0,%xmm9,%xmm13
21473 .byte 65,15,88,205 // addps %xmm13,%xmm1
21474 .byte 68,15,89,218 // mulps %xmm2,%xmm11
21475 .byte 69,15,40,202 // movaps %xmm10,%xmm9
21476 .byte 68,15,89,206 // mulps %xmm6,%xmm9
21477 .byte 69,15,88,203 // addps %xmm11,%xmm9
21478 .byte 68,15,40,219 // movaps %xmm3,%xmm11
21479 .byte 68,15,92,218 // subps %xmm2,%xmm11
21480 .byte 15,89,214 // mulps %xmm6,%xmm2
21481 .byte 68,15,40,239 // movaps %xmm7,%xmm13
21482 .byte 68,15,92,238 // subps %xmm6,%xmm13
21483 .byte 15,40,198 // movaps %xmm6,%xmm0
21484 .byte 15,88,192 // addps %xmm0,%xmm0
21485 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
21486 .byte 15,88,210 // addps %xmm2,%xmm2
21487 .byte 69,15,89,235 // mulps %xmm11,%xmm13
21488 .byte 69,15,88,237 // addps %xmm13,%xmm13
21489 .byte 69,15,92,229 // subps %xmm13,%xmm12
21490 .byte 102,68,15,56,20,226 // blendvps %xmm0,%xmm2,%xmm12
21491 .byte 69,15,88,204 // addps %xmm12,%xmm9
21492 .byte 68,15,89,215 // mulps %xmm7,%xmm10
21493 .byte 65,15,88,218 // addps %xmm10,%xmm3
21494 .byte 72,173 // lods %ds:(%rsi),%rax
21495 .byte 65,15,40,192 // movaps %xmm8,%xmm0
21496 .byte 65,15,40,209 // movaps %xmm9,%xmm2
21497 .byte 255,224 // jmpq *%rax
21498
21499HIDDEN _sk_softlight_sse41
21500.globl _sk_softlight_sse41
Mike Klein86714282017-04-13 17:37:38 -040021501FUNCTION(_sk_softlight_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040021502_sk_softlight_sse41:
Mike Klein15bf6782017-03-31 12:21:46 -040021503 .byte 15,41,116,36,216 // movaps %xmm6,-0x28(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040021504 .byte 15,40,244 // movaps %xmm4,%xmm6
Mike Klein15bf6782017-03-31 12:21:46 -040021505 .byte 15,41,84,36,232 // movaps %xmm2,-0x18(%rsp)
Mike Kleinfe560a82017-05-01 12:56:35 -040021506 .byte 15,41,76,36,200 // movaps %xmm1,-0x38(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040021507 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040021508 .byte 69,15,87,201 // xorps %xmm9,%xmm9
21509 .byte 68,15,194,207,1 // cmpltps %xmm7,%xmm9
Mike Klein61b84162017-03-31 11:48:14 -040021510 .byte 15,40,198 // movaps %xmm6,%xmm0
21511 .byte 15,94,199 // divps %xmm7,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021512 .byte 65,15,84,193 // andps %xmm9,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040021513 .byte 15,40,13,77,62,0,0 // movaps 0x3e4d(%rip),%xmm1 # 4990 <_sk_callback_sse41+0x24e>
Mike Klein61b84162017-03-31 11:48:14 -040021514 .byte 68,15,40,209 // movaps %xmm1,%xmm10
21515 .byte 68,15,92,208 // subps %xmm0,%xmm10
21516 .byte 68,15,40,240 // movaps %xmm0,%xmm14
21517 .byte 68,15,40,248 // movaps %xmm0,%xmm15
21518 .byte 15,82,208 // rsqrtps %xmm0,%xmm2
21519 .byte 68,15,83,218 // rcpps %xmm2,%xmm11
21520 .byte 68,15,92,216 // subps %xmm0,%xmm11
21521 .byte 15,88,192 // addps %xmm0,%xmm0
21522 .byte 15,88,192 // addps %xmm0,%xmm0
21523 .byte 15,40,208 // movaps %xmm0,%xmm2
21524 .byte 15,89,210 // mulps %xmm2,%xmm2
21525 .byte 15,88,208 // addps %xmm0,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040021526 .byte 68,15,40,45,43,62,0,0 // movaps 0x3e2b(%rip),%xmm13 # 49a0 <_sk_callback_sse41+0x25e>
Mike Kleinfe560a82017-05-01 12:56:35 -040021527 .byte 69,15,88,245 // addps %xmm13,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040021528 .byte 68,15,89,242 // mulps %xmm2,%xmm14
Mike Klein8ca33562017-05-23 08:07:43 -040021529 .byte 68,15,40,37,43,62,0,0 // movaps 0x3e2b(%rip),%xmm12 # 49b0 <_sk_callback_sse41+0x26e>
Mike Kleinfe560a82017-05-01 12:56:35 -040021530 .byte 69,15,89,252 // mulps %xmm12,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040021531 .byte 69,15,88,254 // addps %xmm14,%xmm15
21532 .byte 15,40,198 // movaps %xmm6,%xmm0
21533 .byte 15,88,192 // addps %xmm0,%xmm0
21534 .byte 15,88,192 // addps %xmm0,%xmm0
21535 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
21536 .byte 102,69,15,56,20,223 // blendvps %xmm0,%xmm15,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040021537 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040021538 .byte 15,88,192 // addps %xmm0,%xmm0
21539 .byte 15,40,208 // movaps %xmm0,%xmm2
21540 .byte 15,92,211 // subps %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040021541 .byte 68,15,89,210 // mulps %xmm2,%xmm10
21542 .byte 68,15,88,211 // addps %xmm3,%xmm10
21543 .byte 68,15,89,214 // mulps %xmm6,%xmm10
Mike Klein61b84162017-03-31 11:48:14 -040021544 .byte 15,89,215 // mulps %xmm7,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040021545 .byte 68,15,89,218 // mulps %xmm2,%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040021546 .byte 15,40,211 // movaps %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040021547 .byte 15,89,214 // mulps %xmm6,%xmm2
21548 .byte 68,15,88,218 // addps %xmm2,%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040021549 .byte 15,194,195,2 // cmpleps %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021550 .byte 102,69,15,56,20,218 // blendvps %xmm0,%xmm10,%xmm11
21551 .byte 68,15,40,213 // movaps %xmm5,%xmm10
21552 .byte 68,15,94,215 // divps %xmm7,%xmm10
21553 .byte 69,15,84,209 // andps %xmm9,%xmm10
21554 .byte 65,15,40,194 // movaps %xmm10,%xmm0
21555 .byte 15,88,192 // addps %xmm0,%xmm0
21556 .byte 15,88,192 // addps %xmm0,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040021557 .byte 15,40,208 // movaps %xmm0,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040021558 .byte 15,89,210 // mulps %xmm2,%xmm2
21559 .byte 15,88,208 // addps %xmm0,%xmm2
21560 .byte 65,15,40,194 // movaps %xmm10,%xmm0
21561 .byte 65,15,88,197 // addps %xmm13,%xmm0
21562 .byte 15,89,194 // mulps %xmm2,%xmm0
21563 .byte 65,15,40,210 // movaps %xmm10,%xmm2
21564 .byte 65,15,89,212 // mulps %xmm12,%xmm2
21565 .byte 15,88,208 // addps %xmm0,%xmm2
21566 .byte 65,15,82,194 // rsqrtps %xmm10,%xmm0
21567 .byte 68,15,83,240 // rcpps %xmm0,%xmm14
21568 .byte 69,15,92,242 // subps %xmm10,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040021569 .byte 15,40,197 // movaps %xmm5,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021570 .byte 15,40,229 // movaps %xmm5,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040021571 .byte 15,88,192 // addps %xmm0,%xmm0
21572 .byte 15,88,192 // addps %xmm0,%xmm0
21573 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021574 .byte 102,68,15,56,20,242 // blendvps %xmm0,%xmm2,%xmm14
21575 .byte 68,15,40,249 // movaps %xmm1,%xmm15
21576 .byte 69,15,92,250 // subps %xmm10,%xmm15
21577 .byte 15,40,108,36,200 // movaps -0x38(%rsp),%xmm5
21578 .byte 15,40,197 // movaps %xmm5,%xmm0
21579 .byte 15,88,192 // addps %xmm0,%xmm0
21580 .byte 15,40,208 // movaps %xmm0,%xmm2
21581 .byte 15,92,211 // subps %xmm3,%xmm2
21582 .byte 68,15,89,250 // mulps %xmm2,%xmm15
21583 .byte 15,89,215 // mulps %xmm7,%xmm2
21584 .byte 68,15,89,242 // mulps %xmm2,%xmm14
21585 .byte 15,40,211 // movaps %xmm3,%xmm2
21586 .byte 15,41,100,36,184 // movaps %xmm4,-0x48(%rsp)
21587 .byte 15,89,212 // mulps %xmm4,%xmm2
21588 .byte 68,15,88,242 // addps %xmm2,%xmm14
21589 .byte 68,15,88,251 // addps %xmm3,%xmm15
21590 .byte 68,15,89,252 // mulps %xmm4,%xmm15
21591 .byte 15,194,195,2 // cmpleps %xmm3,%xmm0
21592 .byte 102,69,15,56,20,247 // blendvps %xmm0,%xmm15,%xmm14
21593 .byte 68,15,40,249 // movaps %xmm1,%xmm15
21594 .byte 15,40,100,36,216 // movaps -0x28(%rsp),%xmm4
21595 .byte 15,40,196 // movaps %xmm4,%xmm0
21596 .byte 15,94,199 // divps %xmm7,%xmm0
21597 .byte 65,15,84,193 // andps %xmm9,%xmm0
21598 .byte 68,15,40,209 // movaps %xmm1,%xmm10
21599 .byte 15,92,200 // subps %xmm0,%xmm1
21600 .byte 68,15,88,232 // addps %xmm0,%xmm13
21601 .byte 68,15,89,224 // mulps %xmm0,%xmm12
21602 .byte 15,82,208 // rsqrtps %xmm0,%xmm2
21603 .byte 68,15,83,202 // rcpps %xmm2,%xmm9
21604 .byte 68,15,92,200 // subps %xmm0,%xmm9
21605 .byte 15,88,192 // addps %xmm0,%xmm0
21606 .byte 15,88,192 // addps %xmm0,%xmm0
21607 .byte 15,40,208 // movaps %xmm0,%xmm2
21608 .byte 15,89,210 // mulps %xmm2,%xmm2
21609 .byte 15,88,208 // addps %xmm0,%xmm2
21610 .byte 68,15,89,234 // mulps %xmm2,%xmm13
21611 .byte 69,15,88,229 // addps %xmm13,%xmm12
21612 .byte 15,40,196 // movaps %xmm4,%xmm0
21613 .byte 15,88,192 // addps %xmm0,%xmm0
21614 .byte 15,88,192 // addps %xmm0,%xmm0
21615 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
21616 .byte 102,69,15,56,20,204 // blendvps %xmm0,%xmm12,%xmm9
21617 .byte 68,15,40,100,36,232 // movaps -0x18(%rsp),%xmm12
21618 .byte 65,15,40,196 // movaps %xmm12,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040021619 .byte 15,88,192 // addps %xmm0,%xmm0
21620 .byte 15,40,208 // movaps %xmm0,%xmm2
21621 .byte 15,92,211 // subps %xmm3,%xmm2
21622 .byte 15,89,202 // mulps %xmm2,%xmm1
21623 .byte 15,89,215 // mulps %xmm7,%xmm2
21624 .byte 68,15,89,202 // mulps %xmm2,%xmm9
21625 .byte 15,40,211 // movaps %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040021626 .byte 15,89,212 // mulps %xmm4,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040021627 .byte 68,15,88,202 // addps %xmm2,%xmm9
21628 .byte 15,88,203 // addps %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040021629 .byte 15,89,204 // mulps %xmm4,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040021630 .byte 15,194,195,2 // cmpleps %xmm3,%xmm0
21631 .byte 102,68,15,56,20,201 // blendvps %xmm0,%xmm1,%xmm9
21632 .byte 68,15,92,255 // subps %xmm7,%xmm15
21633 .byte 69,15,89,199 // mulps %xmm15,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040021634 .byte 15,40,205 // movaps %xmm5,%xmm1
21635 .byte 65,15,89,207 // mulps %xmm15,%xmm1
21636 .byte 69,15,89,252 // mulps %xmm12,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040021637 .byte 68,15,92,211 // subps %xmm3,%xmm10
21638 .byte 65,15,40,194 // movaps %xmm10,%xmm0
21639 .byte 15,89,198 // mulps %xmm6,%xmm0
21640 .byte 68,15,88,192 // addps %xmm0,%xmm8
21641 .byte 69,15,88,195 // addps %xmm11,%xmm8
21642 .byte 65,15,40,194 // movaps %xmm10,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021643 .byte 15,40,108,36,184 // movaps -0x48(%rsp),%xmm5
Mike Klein61b84162017-03-31 11:48:14 -040021644 .byte 15,89,197 // mulps %xmm5,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021645 .byte 15,88,200 // addps %xmm0,%xmm1
21646 .byte 65,15,88,206 // addps %xmm14,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040021647 .byte 65,15,40,194 // movaps %xmm10,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040021648 .byte 15,89,196 // mulps %xmm4,%xmm0
21649 .byte 15,40,212 // movaps %xmm4,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040021650 .byte 65,15,88,199 // addps %xmm15,%xmm0
21651 .byte 68,15,88,200 // addps %xmm0,%xmm9
21652 .byte 68,15,89,215 // mulps %xmm7,%xmm10
21653 .byte 65,15,88,218 // addps %xmm10,%xmm3
21654 .byte 72,173 // lods %ds:(%rsi),%rax
21655 .byte 15,40,230 // movaps %xmm6,%xmm4
21656 .byte 15,40,242 // movaps %xmm2,%xmm6
21657 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040021658 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040021659 .byte 255,224 // jmpq *%rax
21660
Mike Kleinbb338332017-05-04 12:42:52 -040021661HIDDEN _sk_hue_sse41
21662.globl _sk_hue_sse41
21663FUNCTION(_sk_hue_sse41)
21664_sk_hue_sse41:
Mike Klein08aa88d2017-05-12 12:59:24 -040021665 .byte 15,41,124,36,152 // movaps %xmm7,-0x68(%rsp)
21666 .byte 68,15,40,246 // movaps %xmm6,%xmm14
21667 .byte 15,40,244 // movaps %xmm4,%xmm6
21668 .byte 68,15,40,195 // movaps %xmm3,%xmm8
21669 .byte 15,41,84,36,232 // movaps %xmm2,-0x18(%rsp)
21670 .byte 15,41,76,36,216 // movaps %xmm1,-0x28(%rsp)
21671 .byte 68,15,40,208 // movaps %xmm0,%xmm10
21672 .byte 68,15,41,84,36,200 // movaps %xmm10,-0x38(%rsp)
21673 .byte 69,15,89,208 // mulps %xmm8,%xmm10
21674 .byte 65,15,89,200 // mulps %xmm8,%xmm1
21675 .byte 68,15,40,234 // movaps %xmm2,%xmm13
21676 .byte 69,15,89,232 // mulps %xmm8,%xmm13
21677 .byte 68,15,40,205 // movaps %xmm5,%xmm9
21678 .byte 68,15,40,221 // movaps %xmm5,%xmm11
21679 .byte 15,41,108,36,184 // movaps %xmm5,-0x48(%rsp)
21680 .byte 69,15,95,222 // maxps %xmm14,%xmm11
21681 .byte 15,40,254 // movaps %xmm6,%xmm7
21682 .byte 68,15,40,230 // movaps %xmm6,%xmm12
21683 .byte 15,40,214 // movaps %xmm6,%xmm2
21684 .byte 65,15,95,211 // maxps %xmm11,%xmm2
21685 .byte 65,15,40,230 // movaps %xmm14,%xmm4
21686 .byte 15,41,100,36,168 // movaps %xmm4,-0x58(%rsp)
21687 .byte 68,15,93,204 // minps %xmm4,%xmm9
21688 .byte 65,15,93,249 // minps %xmm9,%xmm7
21689 .byte 15,92,215 // subps %xmm7,%xmm2
21690 .byte 15,40,249 // movaps %xmm1,%xmm7
21691 .byte 65,15,93,253 // minps %xmm13,%xmm7
21692 .byte 65,15,40,218 // movaps %xmm10,%xmm3
21693 .byte 15,93,223 // minps %xmm7,%xmm3
21694 .byte 15,40,249 // movaps %xmm1,%xmm7
21695 .byte 65,15,95,253 // maxps %xmm13,%xmm7
Mike Kleinbb338332017-05-04 12:42:52 -040021696 .byte 65,15,40,194 // movaps %xmm10,%xmm0
Mike Klein08aa88d2017-05-12 12:59:24 -040021697 .byte 15,95,199 // maxps %xmm7,%xmm0
21698 .byte 15,40,253 // movaps %xmm5,%xmm7
Mike Kleinbb338332017-05-04 12:42:52 -040021699 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Klein08aa88d2017-05-12 12:59:24 -040021700 .byte 15,92,195 // subps %xmm3,%xmm0
21701 .byte 68,15,92,211 // subps %xmm3,%xmm10
21702 .byte 15,92,203 // subps %xmm3,%xmm1
21703 .byte 68,15,92,235 // subps %xmm3,%xmm13
21704 .byte 15,87,219 // xorps %xmm3,%xmm3
21705 .byte 68,15,89,210 // mulps %xmm2,%xmm10
21706 .byte 68,15,94,208 // divps %xmm0,%xmm10
21707 .byte 15,89,202 // mulps %xmm2,%xmm1
21708 .byte 15,94,200 // divps %xmm0,%xmm1
21709 .byte 68,15,89,234 // mulps %xmm2,%xmm13
21710 .byte 68,15,94,232 // divps %xmm0,%xmm13
21711 .byte 15,194,195,4 // cmpneqps %xmm3,%xmm0
21712 .byte 68,15,84,208 // andps %xmm0,%xmm10
21713 .byte 15,84,200 // andps %xmm0,%xmm1
21714 .byte 68,15,84,232 // andps %xmm0,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040021715 .byte 15,40,5,150,59,0,0 // movaps 0x3b96(%rip),%xmm0 # 49c0 <_sk_callback_sse41+0x27e>
Mike Klein08aa88d2017-05-12 12:59:24 -040021716 .byte 68,15,89,224 // mulps %xmm0,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040021717 .byte 15,40,21,155,59,0,0 // movaps 0x3b9b(%rip),%xmm2 # 49d0 <_sk_callback_sse41+0x28e>
Mike Klein08aa88d2017-05-12 12:59:24 -040021718 .byte 15,89,250 // mulps %xmm2,%xmm7
21719 .byte 65,15,88,252 // addps %xmm12,%xmm7
Mike Klein8ca33562017-05-23 08:07:43 -040021720 .byte 68,15,40,53,156,59,0,0 // movaps 0x3b9c(%rip),%xmm14 # 49e0 <_sk_callback_sse41+0x29e>
Mike Klein08aa88d2017-05-12 12:59:24 -040021721 .byte 68,15,40,252 // movaps %xmm4,%xmm15
21722 .byte 69,15,89,254 // mulps %xmm14,%xmm15
21723 .byte 68,15,88,255 // addps %xmm7,%xmm15
21724 .byte 65,15,40,218 // movaps %xmm10,%xmm3
21725 .byte 15,89,216 // mulps %xmm0,%xmm3
21726 .byte 15,40,249 // movaps %xmm1,%xmm7
21727 .byte 15,89,250 // mulps %xmm2,%xmm7
21728 .byte 15,88,251 // addps %xmm3,%xmm7
21729 .byte 65,15,40,221 // movaps %xmm13,%xmm3
21730 .byte 65,15,89,222 // mulps %xmm14,%xmm3
21731 .byte 15,88,223 // addps %xmm7,%xmm3
21732 .byte 69,15,89,248 // mulps %xmm8,%xmm15
21733 .byte 68,15,92,251 // subps %xmm3,%xmm15
21734 .byte 69,15,88,215 // addps %xmm15,%xmm10
21735 .byte 65,15,88,207 // addps %xmm15,%xmm1
21736 .byte 69,15,88,253 // addps %xmm13,%xmm15
21737 .byte 15,40,217 // movaps %xmm1,%xmm3
21738 .byte 65,15,93,223 // minps %xmm15,%xmm3
21739 .byte 65,15,40,250 // movaps %xmm10,%xmm7
21740 .byte 15,93,251 // minps %xmm3,%xmm7
21741 .byte 65,15,89,194 // mulps %xmm10,%xmm0
21742 .byte 15,89,209 // mulps %xmm1,%xmm2
21743 .byte 15,88,208 // addps %xmm0,%xmm2
21744 .byte 69,15,89,247 // mulps %xmm15,%xmm14
21745 .byte 68,15,88,242 // addps %xmm2,%xmm14
21746 .byte 69,15,87,201 // xorps %xmm9,%xmm9
21747 .byte 68,15,194,207,2 // cmpleps %xmm7,%xmm9
21748 .byte 65,15,40,222 // movaps %xmm14,%xmm3
21749 .byte 15,92,223 // subps %xmm7,%xmm3
21750 .byte 69,15,40,234 // movaps %xmm10,%xmm13
21751 .byte 69,15,92,238 // subps %xmm14,%xmm13
21752 .byte 69,15,89,238 // mulps %xmm14,%xmm13
21753 .byte 68,15,94,235 // divps %xmm3,%xmm13
21754 .byte 69,15,88,238 // addps %xmm14,%xmm13
Mike Kleinbb338332017-05-04 12:42:52 -040021755 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Klein08aa88d2017-05-12 12:59:24 -040021756 .byte 102,69,15,56,20,234 // blendvps %xmm0,%xmm10,%xmm13
21757 .byte 15,40,193 // movaps %xmm1,%xmm0
21758 .byte 65,15,95,199 // maxps %xmm15,%xmm0
21759 .byte 68,15,95,208 // maxps %xmm0,%xmm10
21760 .byte 65,15,40,248 // movaps %xmm8,%xmm7
21761 .byte 15,40,108,36,152 // movaps -0x68(%rsp),%xmm5
21762 .byte 15,89,253 // mulps %xmm5,%xmm7
21763 .byte 15,40,231 // movaps %xmm7,%xmm4
21764 .byte 65,15,194,226,1 // cmpltps %xmm10,%xmm4
21765 .byte 65,15,40,213 // movaps %xmm13,%xmm2
21766 .byte 65,15,92,214 // subps %xmm14,%xmm2
21767 .byte 68,15,40,223 // movaps %xmm7,%xmm11
21768 .byte 69,15,92,222 // subps %xmm14,%xmm11
21769 .byte 65,15,89,211 // mulps %xmm11,%xmm2
21770 .byte 69,15,92,214 // subps %xmm14,%xmm10
21771 .byte 65,15,94,210 // divps %xmm10,%xmm2
21772 .byte 65,15,88,214 // addps %xmm14,%xmm2
21773 .byte 15,40,196 // movaps %xmm4,%xmm0
21774 .byte 102,68,15,56,20,234 // blendvps %xmm0,%xmm2,%xmm13
21775 .byte 68,15,40,225 // movaps %xmm1,%xmm12
21776 .byte 69,15,92,230 // subps %xmm14,%xmm12
21777 .byte 69,15,89,230 // mulps %xmm14,%xmm12
21778 .byte 68,15,94,227 // divps %xmm3,%xmm12
21779 .byte 69,15,88,230 // addps %xmm14,%xmm12
21780 .byte 65,15,40,193 // movaps %xmm9,%xmm0
21781 .byte 102,68,15,56,20,225 // blendvps %xmm0,%xmm1,%xmm12
21782 .byte 65,15,40,204 // movaps %xmm12,%xmm1
21783 .byte 65,15,92,206 // subps %xmm14,%xmm1
21784 .byte 65,15,89,203 // mulps %xmm11,%xmm1
21785 .byte 65,15,94,202 // divps %xmm10,%xmm1
21786 .byte 65,15,88,206 // addps %xmm14,%xmm1
21787 .byte 15,40,196 // movaps %xmm4,%xmm0
21788 .byte 102,68,15,56,20,225 // blendvps %xmm0,%xmm1,%xmm12
21789 .byte 65,15,40,207 // movaps %xmm15,%xmm1
21790 .byte 65,15,92,206 // subps %xmm14,%xmm1
21791 .byte 65,15,89,206 // mulps %xmm14,%xmm1
21792 .byte 15,94,203 // divps %xmm3,%xmm1
21793 .byte 65,15,88,206 // addps %xmm14,%xmm1
21794 .byte 65,15,40,193 // movaps %xmm9,%xmm0
21795 .byte 102,65,15,56,20,207 // blendvps %xmm0,%xmm15,%xmm1
21796 .byte 15,40,209 // movaps %xmm1,%xmm2
21797 .byte 65,15,92,214 // subps %xmm14,%xmm2
21798 .byte 65,15,89,211 // mulps %xmm11,%xmm2
21799 .byte 65,15,94,210 // divps %xmm10,%xmm2
21800 .byte 65,15,88,214 // addps %xmm14,%xmm2
21801 .byte 15,40,196 // movaps %xmm4,%xmm0
21802 .byte 102,15,56,20,202 // blendvps %xmm0,%xmm2,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040021803 .byte 68,15,40,13,96,58,0,0 // movaps 0x3a60(%rip),%xmm9 # 49f0 <_sk_callback_sse41+0x2ae>
Mike Klein08aa88d2017-05-12 12:59:24 -040021804 .byte 65,15,40,225 // movaps %xmm9,%xmm4
21805 .byte 15,92,229 // subps %xmm5,%xmm4
21806 .byte 15,40,68,36,200 // movaps -0x38(%rsp),%xmm0
21807 .byte 15,89,196 // mulps %xmm4,%xmm0
21808 .byte 15,40,92,36,216 // movaps -0x28(%rsp),%xmm3
21809 .byte 15,89,220 // mulps %xmm4,%xmm3
21810 .byte 15,89,100,36,232 // mulps -0x18(%rsp),%xmm4
21811 .byte 69,15,92,200 // subps %xmm8,%xmm9
21812 .byte 68,15,88,197 // addps %xmm5,%xmm8
21813 .byte 68,15,40,213 // movaps %xmm5,%xmm10
21814 .byte 68,15,92,199 // subps %xmm7,%xmm8
21815 .byte 15,87,210 // xorps %xmm2,%xmm2
21816 .byte 68,15,95,234 // maxps %xmm2,%xmm13
21817 .byte 68,15,95,226 // maxps %xmm2,%xmm12
21818 .byte 15,95,202 // maxps %xmm2,%xmm1
21819 .byte 65,15,40,209 // movaps %xmm9,%xmm2
21820 .byte 15,89,214 // mulps %xmm6,%xmm2
21821 .byte 15,88,194 // addps %xmm2,%xmm0
21822 .byte 65,15,88,197 // addps %xmm13,%xmm0
21823 .byte 65,15,40,209 // movaps %xmm9,%xmm2
21824 .byte 15,40,108,36,184 // movaps -0x48(%rsp),%xmm5
21825 .byte 15,89,213 // mulps %xmm5,%xmm2
21826 .byte 15,88,218 // addps %xmm2,%xmm3
21827 .byte 65,15,88,220 // addps %xmm12,%xmm3
21828 .byte 15,40,211 // movaps %xmm3,%xmm2
21829 .byte 15,40,92,36,168 // movaps -0x58(%rsp),%xmm3
21830 .byte 68,15,89,203 // mulps %xmm3,%xmm9
21831 .byte 68,15,88,204 // addps %xmm4,%xmm9
21832 .byte 68,15,88,201 // addps %xmm1,%xmm9
21833 .byte 72,173 // lods %ds:(%rsi),%rax
21834 .byte 15,40,230 // movaps %xmm6,%xmm4
21835 .byte 15,40,243 // movaps %xmm3,%xmm6
21836 .byte 15,40,202 // movaps %xmm2,%xmm1
21837 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Kleinbb338332017-05-04 12:42:52 -040021838 .byte 65,15,40,216 // movaps %xmm8,%xmm3
21839 .byte 65,15,40,250 // movaps %xmm10,%xmm7
21840 .byte 255,224 // jmpq *%rax
21841
21842HIDDEN _sk_saturation_sse41
21843.globl _sk_saturation_sse41
21844FUNCTION(_sk_saturation_sse41)
21845_sk_saturation_sse41:
Mike Klein08aa88d2017-05-12 12:59:24 -040021846 .byte 68,15,40,206 // movaps %xmm6,%xmm9
21847 .byte 15,40,245 // movaps %xmm5,%xmm6
21848 .byte 15,40,236 // movaps %xmm4,%xmm5
21849 .byte 15,40,227 // movaps %xmm3,%xmm4
21850 .byte 15,41,76,36,216 // movaps %xmm1,-0x28(%rsp)
21851 .byte 15,41,68,36,200 // movaps %xmm0,-0x38(%rsp)
21852 .byte 68,15,40,212 // movaps %xmm4,%xmm10
21853 .byte 68,15,89,213 // mulps %xmm5,%xmm10
Mike Kleinbb338332017-05-04 12:42:52 -040021854 .byte 68,15,40,220 // movaps %xmm4,%xmm11
Mike Klein08aa88d2017-05-12 12:59:24 -040021855 .byte 68,15,89,222 // mulps %xmm6,%xmm11
21856 .byte 68,15,40,196 // movaps %xmm4,%xmm8
21857 .byte 69,15,89,193 // mulps %xmm9,%xmm8
21858 .byte 69,15,40,241 // movaps %xmm9,%xmm14
21859 .byte 68,15,41,116,36,184 // movaps %xmm14,-0x48(%rsp)
21860 .byte 15,40,217 // movaps %xmm1,%xmm3
21861 .byte 68,15,40,202 // movaps %xmm2,%xmm9
21862 .byte 68,15,41,76,36,232 // movaps %xmm9,-0x18(%rsp)
21863 .byte 65,15,95,217 // maxps %xmm9,%xmm3
21864 .byte 15,40,208 // movaps %xmm0,%xmm2
21865 .byte 15,95,211 // maxps %xmm3,%xmm2
21866 .byte 68,15,40,225 // movaps %xmm1,%xmm12
21867 .byte 69,15,93,225 // minps %xmm9,%xmm12
Mike Kleinbb338332017-05-04 12:42:52 -040021868 .byte 15,40,216 // movaps %xmm0,%xmm3
Mike Klein08aa88d2017-05-12 12:59:24 -040021869 .byte 65,15,93,220 // minps %xmm12,%xmm3
21870 .byte 15,92,211 // subps %xmm3,%xmm2
21871 .byte 15,89,215 // mulps %xmm7,%xmm2
21872 .byte 68,15,40,231 // movaps %xmm7,%xmm12
21873 .byte 68,15,41,100,36,168 // movaps %xmm12,-0x58(%rsp)
21874 .byte 65,15,40,195 // movaps %xmm11,%xmm0
Mike Kleinbb338332017-05-04 12:42:52 -040021875 .byte 65,15,93,192 // minps %xmm8,%xmm0
Mike Klein08aa88d2017-05-12 12:59:24 -040021876 .byte 65,15,40,218 // movaps %xmm10,%xmm3
21877 .byte 15,93,216 // minps %xmm0,%xmm3
21878 .byte 65,15,40,195 // movaps %xmm11,%xmm0
Mike Kleinbb338332017-05-04 12:42:52 -040021879 .byte 65,15,95,192 // maxps %xmm8,%xmm0
Mike Klein08aa88d2017-05-12 12:59:24 -040021880 .byte 65,15,40,250 // movaps %xmm10,%xmm7
21881 .byte 15,95,248 // maxps %xmm0,%xmm7
21882 .byte 15,92,251 // subps %xmm3,%xmm7
Mike Kleinbb338332017-05-04 12:42:52 -040021883 .byte 15,87,192 // xorps %xmm0,%xmm0
Mike Klein08aa88d2017-05-12 12:59:24 -040021884 .byte 68,15,92,211 // subps %xmm3,%xmm10
21885 .byte 68,15,89,210 // mulps %xmm2,%xmm10
21886 .byte 68,15,94,215 // divps %xmm7,%xmm10
21887 .byte 68,15,92,219 // subps %xmm3,%xmm11
21888 .byte 68,15,89,218 // mulps %xmm2,%xmm11
21889 .byte 68,15,94,223 // divps %xmm7,%xmm11
21890 .byte 68,15,92,195 // subps %xmm3,%xmm8
21891 .byte 68,15,89,194 // mulps %xmm2,%xmm8
21892 .byte 68,15,94,199 // divps %xmm7,%xmm8
21893 .byte 15,194,248,4 // cmpneqps %xmm0,%xmm7
21894 .byte 68,15,84,215 // andps %xmm7,%xmm10
21895 .byte 68,15,84,223 // andps %xmm7,%xmm11
21896 .byte 68,15,84,199 // andps %xmm7,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040021897 .byte 15,40,21,26,57,0,0 // movaps 0x391a(%rip),%xmm2 # 4a00 <_sk_callback_sse41+0x2be>
Mike Klein08aa88d2017-05-12 12:59:24 -040021898 .byte 15,40,221 // movaps %xmm5,%xmm3
21899 .byte 15,89,218 // mulps %xmm2,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040021900 .byte 15,40,13,29,57,0,0 // movaps 0x391d(%rip),%xmm1 # 4a10 <_sk_callback_sse41+0x2ce>
Mike Klein08aa88d2017-05-12 12:59:24 -040021901 .byte 15,40,254 // movaps %xmm6,%xmm7
21902 .byte 15,89,249 // mulps %xmm1,%xmm7
21903 .byte 15,88,251 // addps %xmm3,%xmm7
Mike Klein8ca33562017-05-23 08:07:43 -040021904 .byte 68,15,40,45,28,57,0,0 // movaps 0x391c(%rip),%xmm13 # 4a20 <_sk_callback_sse41+0x2de>
Mike Klein08aa88d2017-05-12 12:59:24 -040021905 .byte 69,15,89,245 // mulps %xmm13,%xmm14
21906 .byte 68,15,88,247 // addps %xmm7,%xmm14
21907 .byte 65,15,40,218 // movaps %xmm10,%xmm3
21908 .byte 15,89,218 // mulps %xmm2,%xmm3
21909 .byte 65,15,40,251 // movaps %xmm11,%xmm7
21910 .byte 15,89,249 // mulps %xmm1,%xmm7
21911 .byte 15,88,251 // addps %xmm3,%xmm7
Mike Kleinbb338332017-05-04 12:42:52 -040021912 .byte 65,15,40,216 // movaps %xmm8,%xmm3
Mike Klein08aa88d2017-05-12 12:59:24 -040021913 .byte 65,15,89,221 // mulps %xmm13,%xmm3
21914 .byte 15,88,223 // addps %xmm7,%xmm3
21915 .byte 68,15,89,244 // mulps %xmm4,%xmm14
21916 .byte 68,15,92,243 // subps %xmm3,%xmm14
21917 .byte 69,15,88,214 // addps %xmm14,%xmm10
21918 .byte 69,15,88,222 // addps %xmm14,%xmm11
21919 .byte 69,15,88,240 // addps %xmm8,%xmm14
21920 .byte 65,15,40,195 // movaps %xmm11,%xmm0
21921 .byte 65,15,93,198 // minps %xmm14,%xmm0
21922 .byte 65,15,40,218 // movaps %xmm10,%xmm3
21923 .byte 15,93,216 // minps %xmm0,%xmm3
21924 .byte 65,15,89,210 // mulps %xmm10,%xmm2
21925 .byte 65,15,89,203 // mulps %xmm11,%xmm1
21926 .byte 15,88,202 // addps %xmm2,%xmm1
21927 .byte 69,15,89,238 // mulps %xmm14,%xmm13
21928 .byte 68,15,88,233 // addps %xmm1,%xmm13
21929 .byte 69,15,87,201 // xorps %xmm9,%xmm9
21930 .byte 68,15,194,203,2 // cmpleps %xmm3,%xmm9
21931 .byte 65,15,40,253 // movaps %xmm13,%xmm7
21932 .byte 15,92,251 // subps %xmm3,%xmm7
21933 .byte 69,15,40,250 // movaps %xmm10,%xmm15
21934 .byte 69,15,92,253 // subps %xmm13,%xmm15
21935 .byte 69,15,89,253 // mulps %xmm13,%xmm15
21936 .byte 68,15,94,255 // divps %xmm7,%xmm15
21937 .byte 69,15,88,253 // addps %xmm13,%xmm15
21938 .byte 65,15,40,193 // movaps %xmm9,%xmm0
21939 .byte 102,69,15,56,20,250 // blendvps %xmm0,%xmm10,%xmm15
21940 .byte 65,15,40,195 // movaps %xmm11,%xmm0
21941 .byte 65,15,95,198 // maxps %xmm14,%xmm0
21942 .byte 68,15,95,208 // maxps %xmm0,%xmm10
21943 .byte 15,40,212 // movaps %xmm4,%xmm2
21944 .byte 65,15,89,212 // mulps %xmm12,%xmm2
21945 .byte 68,15,40,194 // movaps %xmm2,%xmm8
21946 .byte 69,15,194,194,1 // cmpltps %xmm10,%xmm8
21947 .byte 65,15,40,223 // movaps %xmm15,%xmm3
21948 .byte 65,15,92,221 // subps %xmm13,%xmm3
21949 .byte 15,40,202 // movaps %xmm2,%xmm1
21950 .byte 65,15,92,205 // subps %xmm13,%xmm1
21951 .byte 15,89,217 // mulps %xmm1,%xmm3
21952 .byte 69,15,92,213 // subps %xmm13,%xmm10
21953 .byte 65,15,94,218 // divps %xmm10,%xmm3
21954 .byte 65,15,88,221 // addps %xmm13,%xmm3
21955 .byte 65,15,40,192 // movaps %xmm8,%xmm0
21956 .byte 102,68,15,56,20,251 // blendvps %xmm0,%xmm3,%xmm15
21957 .byte 69,15,40,227 // movaps %xmm11,%xmm12
21958 .byte 69,15,92,229 // subps %xmm13,%xmm12
21959 .byte 69,15,89,229 // mulps %xmm13,%xmm12
21960 .byte 68,15,94,231 // divps %xmm7,%xmm12
21961 .byte 69,15,88,229 // addps %xmm13,%xmm12
21962 .byte 65,15,40,193 // movaps %xmm9,%xmm0
21963 .byte 102,69,15,56,20,227 // blendvps %xmm0,%xmm11,%xmm12
21964 .byte 65,15,40,220 // movaps %xmm12,%xmm3
21965 .byte 65,15,92,221 // subps %xmm13,%xmm3
21966 .byte 15,89,217 // mulps %xmm1,%xmm3
21967 .byte 65,15,94,218 // divps %xmm10,%xmm3
21968 .byte 65,15,88,221 // addps %xmm13,%xmm3
21969 .byte 65,15,40,192 // movaps %xmm8,%xmm0
21970 .byte 102,68,15,56,20,227 // blendvps %xmm0,%xmm3,%xmm12
21971 .byte 69,15,40,222 // movaps %xmm14,%xmm11
21972 .byte 69,15,92,221 // subps %xmm13,%xmm11
21973 .byte 69,15,89,221 // mulps %xmm13,%xmm11
21974 .byte 68,15,94,223 // divps %xmm7,%xmm11
21975 .byte 69,15,88,221 // addps %xmm13,%xmm11
21976 .byte 65,15,40,193 // movaps %xmm9,%xmm0
21977 .byte 102,69,15,56,20,222 // blendvps %xmm0,%xmm14,%xmm11
21978 .byte 65,15,40,251 // movaps %xmm11,%xmm7
21979 .byte 65,15,92,253 // subps %xmm13,%xmm7
21980 .byte 15,89,249 // mulps %xmm1,%xmm7
21981 .byte 65,15,94,250 // divps %xmm10,%xmm7
21982 .byte 65,15,88,253 // addps %xmm13,%xmm7
21983 .byte 65,15,40,192 // movaps %xmm8,%xmm0
21984 .byte 102,68,15,56,20,223 // blendvps %xmm0,%xmm7,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040021985 .byte 68,15,40,13,226,55,0,0 // movaps 0x37e2(%rip),%xmm9 # 4a30 <_sk_callback_sse41+0x2ee>
Mike Klein08aa88d2017-05-12 12:59:24 -040021986 .byte 69,15,40,193 // movaps %xmm9,%xmm8
21987 .byte 68,15,92,204 // subps %xmm4,%xmm9
21988 .byte 15,40,124,36,168 // movaps -0x58(%rsp),%xmm7
21989 .byte 15,88,231 // addps %xmm7,%xmm4
21990 .byte 15,92,226 // subps %xmm2,%xmm4
21991 .byte 15,40,220 // movaps %xmm4,%xmm3
21992 .byte 15,87,192 // xorps %xmm0,%xmm0
21993 .byte 68,15,95,248 // maxps %xmm0,%xmm15
21994 .byte 68,15,95,224 // maxps %xmm0,%xmm12
21995 .byte 68,15,95,216 // maxps %xmm0,%xmm11
21996 .byte 65,15,40,201 // movaps %xmm9,%xmm1
21997 .byte 15,89,205 // mulps %xmm5,%xmm1
21998 .byte 68,15,92,199 // subps %xmm7,%xmm8
21999 .byte 15,40,68,36,200 // movaps -0x38(%rsp),%xmm0
22000 .byte 65,15,89,192 // mulps %xmm8,%xmm0
22001 .byte 15,88,193 // addps %xmm1,%xmm0
22002 .byte 65,15,88,199 // addps %xmm15,%xmm0
22003 .byte 65,15,40,201 // movaps %xmm9,%xmm1
22004 .byte 15,89,206 // mulps %xmm6,%xmm1
22005 .byte 15,40,84,36,216 // movaps -0x28(%rsp),%xmm2
22006 .byte 65,15,89,208 // mulps %xmm8,%xmm2
22007 .byte 15,88,209 // addps %xmm1,%xmm2
22008 .byte 65,15,88,212 // addps %xmm12,%xmm2
22009 .byte 15,40,202 // movaps %xmm2,%xmm1
22010 .byte 68,15,89,68,36,232 // mulps -0x18(%rsp),%xmm8
22011 .byte 15,40,84,36,184 // movaps -0x48(%rsp),%xmm2
22012 .byte 68,15,89,202 // mulps %xmm2,%xmm9
22013 .byte 69,15,88,200 // addps %xmm8,%xmm9
22014 .byte 69,15,88,203 // addps %xmm11,%xmm9
22015 .byte 72,173 // lods %ds:(%rsi),%rax
22016 .byte 15,40,229 // movaps %xmm5,%xmm4
22017 .byte 15,40,238 // movaps %xmm6,%xmm5
22018 .byte 15,40,242 // movaps %xmm2,%xmm6
22019 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Kleinbb338332017-05-04 12:42:52 -040022020 .byte 255,224 // jmpq *%rax
22021
22022HIDDEN _sk_color_sse41
22023.globl _sk_color_sse41
22024FUNCTION(_sk_color_sse41)
22025_sk_color_sse41:
Mike Klein08aa88d2017-05-12 12:59:24 -040022026 .byte 68,15,40,230 // movaps %xmm6,%xmm12
22027 .byte 68,15,41,100,36,200 // movaps %xmm12,-0x38(%rsp)
Mike Kleinbb338332017-05-04 12:42:52 -040022028 .byte 68,15,40,221 // movaps %xmm5,%xmm11
Mike Klein08aa88d2017-05-12 12:59:24 -040022029 .byte 68,15,41,92,36,216 // movaps %xmm11,-0x28(%rsp)
22030 .byte 68,15,40,212 // movaps %xmm4,%xmm10
22031 .byte 68,15,41,84,36,232 // movaps %xmm10,-0x18(%rsp)
22032 .byte 15,40,243 // movaps %xmm3,%xmm6
22033 .byte 15,41,84,36,184 // movaps %xmm2,-0x48(%rsp)
22034 .byte 15,40,233 // movaps %xmm1,%xmm5
Mike Kleinbb338332017-05-04 12:42:52 -040022035 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Klein08aa88d2017-05-12 12:59:24 -040022036 .byte 69,15,40,240 // movaps %xmm8,%xmm14
22037 .byte 15,40,231 // movaps %xmm7,%xmm4
22038 .byte 68,15,89,244 // mulps %xmm4,%xmm14
22039 .byte 15,89,204 // mulps %xmm4,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040022040 .byte 68,15,40,13,45,55,0,0 // movaps 0x372d(%rip),%xmm9 # 4a40 <_sk_callback_sse41+0x2fe>
Mike Klein08aa88d2017-05-12 12:59:24 -040022041 .byte 65,15,40,250 // movaps %xmm10,%xmm7
22042 .byte 65,15,89,249 // mulps %xmm9,%xmm7
Mike Klein8ca33562017-05-23 08:07:43 -040022043 .byte 68,15,40,21,45,55,0,0 // movaps 0x372d(%rip),%xmm10 # 4a50 <_sk_callback_sse41+0x30e>
Mike Klein08aa88d2017-05-12 12:59:24 -040022044 .byte 65,15,40,219 // movaps %xmm11,%xmm3
22045 .byte 65,15,89,218 // mulps %xmm10,%xmm3
22046 .byte 15,88,223 // addps %xmm7,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040022047 .byte 68,15,40,29,42,55,0,0 // movaps 0x372a(%rip),%xmm11 # 4a60 <_sk_callback_sse41+0x31e>
Mike Klein08aa88d2017-05-12 12:59:24 -040022048 .byte 69,15,40,236 // movaps %xmm12,%xmm13
22049 .byte 69,15,89,235 // mulps %xmm11,%xmm13
22050 .byte 68,15,88,235 // addps %xmm3,%xmm13
22051 .byte 65,15,40,222 // movaps %xmm14,%xmm3
22052 .byte 65,15,89,217 // mulps %xmm9,%xmm3
22053 .byte 15,40,249 // movaps %xmm1,%xmm7
22054 .byte 65,15,89,250 // mulps %xmm10,%xmm7
22055 .byte 15,88,251 // addps %xmm3,%xmm7
22056 .byte 15,40,194 // movaps %xmm2,%xmm0
22057 .byte 15,89,196 // mulps %xmm4,%xmm0
22058 .byte 15,40,216 // movaps %xmm0,%xmm3
22059 .byte 65,15,89,219 // mulps %xmm11,%xmm3
22060 .byte 15,88,223 // addps %xmm7,%xmm3
22061 .byte 68,15,89,238 // mulps %xmm6,%xmm13
22062 .byte 68,15,92,235 // subps %xmm3,%xmm13
22063 .byte 69,15,88,245 // addps %xmm13,%xmm14
22064 .byte 65,15,88,205 // addps %xmm13,%xmm1
22065 .byte 68,15,88,232 // addps %xmm0,%xmm13
Mike Kleinbb338332017-05-04 12:42:52 -040022066 .byte 15,40,193 // movaps %xmm1,%xmm0
Mike Klein08aa88d2017-05-12 12:59:24 -040022067 .byte 65,15,93,197 // minps %xmm13,%xmm0
22068 .byte 65,15,40,222 // movaps %xmm14,%xmm3
22069 .byte 15,93,216 // minps %xmm0,%xmm3
22070 .byte 69,15,89,206 // mulps %xmm14,%xmm9
Mike Kleinbb338332017-05-04 12:42:52 -040022071 .byte 68,15,89,209 // mulps %xmm1,%xmm10
22072 .byte 69,15,88,209 // addps %xmm9,%xmm10
Mike Klein08aa88d2017-05-12 12:59:24 -040022073 .byte 69,15,89,221 // mulps %xmm13,%xmm11
22074 .byte 69,15,88,218 // addps %xmm10,%xmm11
22075 .byte 69,15,87,201 // xorps %xmm9,%xmm9
22076 .byte 68,15,194,203,2 // cmpleps %xmm3,%xmm9
22077 .byte 69,15,40,230 // movaps %xmm14,%xmm12
22078 .byte 69,15,92,227 // subps %xmm11,%xmm12
22079 .byte 69,15,89,227 // mulps %xmm11,%xmm12
22080 .byte 65,15,40,251 // movaps %xmm11,%xmm7
22081 .byte 15,92,251 // subps %xmm3,%xmm7
22082 .byte 68,15,94,231 // divps %xmm7,%xmm12
22083 .byte 69,15,88,227 // addps %xmm11,%xmm12
Mike Kleinbb338332017-05-04 12:42:52 -040022084 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Klein08aa88d2017-05-12 12:59:24 -040022085 .byte 102,69,15,56,20,230 // blendvps %xmm0,%xmm14,%xmm12
22086 .byte 15,40,193 // movaps %xmm1,%xmm0
22087 .byte 65,15,95,197 // maxps %xmm13,%xmm0
22088 .byte 65,15,40,214 // movaps %xmm14,%xmm2
22089 .byte 15,95,208 // maxps %xmm0,%xmm2
22090 .byte 15,40,222 // movaps %xmm6,%xmm3
22091 .byte 15,89,220 // mulps %xmm4,%xmm3
22092 .byte 68,15,40,211 // movaps %xmm3,%xmm10
22093 .byte 68,15,194,210,1 // cmpltps %xmm2,%xmm10
22094 .byte 69,15,40,244 // movaps %xmm12,%xmm14
22095 .byte 69,15,92,243 // subps %xmm11,%xmm14
22096 .byte 68,15,40,251 // movaps %xmm3,%xmm15
22097 .byte 69,15,92,251 // subps %xmm11,%xmm15
22098 .byte 69,15,89,247 // mulps %xmm15,%xmm14
22099 .byte 65,15,92,211 // subps %xmm11,%xmm2
22100 .byte 68,15,94,242 // divps %xmm2,%xmm14
22101 .byte 69,15,88,243 // addps %xmm11,%xmm14
22102 .byte 65,15,40,194 // movaps %xmm10,%xmm0
22103 .byte 102,69,15,56,20,230 // blendvps %xmm0,%xmm14,%xmm12
22104 .byte 68,15,40,241 // movaps %xmm1,%xmm14
22105 .byte 69,15,92,243 // subps %xmm11,%xmm14
22106 .byte 69,15,89,243 // mulps %xmm11,%xmm14
22107 .byte 68,15,94,247 // divps %xmm7,%xmm14
22108 .byte 69,15,88,243 // addps %xmm11,%xmm14
22109 .byte 65,15,40,193 // movaps %xmm9,%xmm0
22110 .byte 102,68,15,56,20,241 // blendvps %xmm0,%xmm1,%xmm14
22111 .byte 65,15,40,206 // movaps %xmm14,%xmm1
22112 .byte 65,15,92,203 // subps %xmm11,%xmm1
22113 .byte 65,15,89,207 // mulps %xmm15,%xmm1
22114 .byte 15,94,202 // divps %xmm2,%xmm1
22115 .byte 65,15,88,203 // addps %xmm11,%xmm1
22116 .byte 65,15,40,194 // movaps %xmm10,%xmm0
22117 .byte 102,68,15,56,20,241 // blendvps %xmm0,%xmm1,%xmm14
22118 .byte 65,15,40,205 // movaps %xmm13,%xmm1
22119 .byte 65,15,92,203 // subps %xmm11,%xmm1
22120 .byte 65,15,89,203 // mulps %xmm11,%xmm1
22121 .byte 15,94,207 // divps %xmm7,%xmm1
22122 .byte 65,15,88,203 // addps %xmm11,%xmm1
22123 .byte 65,15,40,193 // movaps %xmm9,%xmm0
22124 .byte 102,65,15,56,20,205 // blendvps %xmm0,%xmm13,%xmm1
22125 .byte 15,40,249 // movaps %xmm1,%xmm7
22126 .byte 65,15,92,251 // subps %xmm11,%xmm7
22127 .byte 65,15,89,255 // mulps %xmm15,%xmm7
22128 .byte 15,94,250 // divps %xmm2,%xmm7
22129 .byte 65,15,88,251 // addps %xmm11,%xmm7
22130 .byte 65,15,40,194 // movaps %xmm10,%xmm0
22131 .byte 102,15,56,20,207 // blendvps %xmm0,%xmm7,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040022132 .byte 68,15,40,13,230,53,0,0 // movaps 0x35e6(%rip),%xmm9 # 4a70 <_sk_callback_sse41+0x32e>
Mike Klein08aa88d2017-05-12 12:59:24 -040022133 .byte 65,15,40,193 // movaps %xmm9,%xmm0
22134 .byte 15,92,196 // subps %xmm4,%xmm0
22135 .byte 68,15,89,192 // mulps %xmm0,%xmm8
22136 .byte 15,89,232 // mulps %xmm0,%xmm5
22137 .byte 15,89,68,36,184 // mulps -0x48(%rsp),%xmm0
22138 .byte 68,15,92,206 // subps %xmm6,%xmm9
22139 .byte 15,88,244 // addps %xmm4,%xmm6
22140 .byte 15,40,252 // movaps %xmm4,%xmm7
22141 .byte 15,92,243 // subps %xmm3,%xmm6
22142 .byte 15,40,222 // movaps %xmm6,%xmm3
22143 .byte 15,87,210 // xorps %xmm2,%xmm2
22144 .byte 68,15,95,226 // maxps %xmm2,%xmm12
22145 .byte 68,15,95,242 // maxps %xmm2,%xmm14
22146 .byte 15,95,202 // maxps %xmm2,%xmm1
22147 .byte 65,15,40,209 // movaps %xmm9,%xmm2
22148 .byte 15,40,100,36,232 // movaps -0x18(%rsp),%xmm4
22149 .byte 15,89,212 // mulps %xmm4,%xmm2
22150 .byte 68,15,88,194 // addps %xmm2,%xmm8
22151 .byte 69,15,88,196 // addps %xmm12,%xmm8
22152 .byte 65,15,40,209 // movaps %xmm9,%xmm2
22153 .byte 15,40,116,36,216 // movaps -0x28(%rsp),%xmm6
22154 .byte 15,89,214 // mulps %xmm6,%xmm2
22155 .byte 68,15,40,213 // movaps %xmm5,%xmm10
22156 .byte 68,15,88,210 // addps %xmm2,%xmm10
22157 .byte 69,15,88,214 // addps %xmm14,%xmm10
22158 .byte 15,40,84,36,200 // movaps -0x38(%rsp),%xmm2
22159 .byte 68,15,89,202 // mulps %xmm2,%xmm9
22160 .byte 68,15,88,200 // addps %xmm0,%xmm9
22161 .byte 68,15,88,201 // addps %xmm1,%xmm9
22162 .byte 72,173 // lods %ds:(%rsi),%rax
22163 .byte 15,40,238 // movaps %xmm6,%xmm5
22164 .byte 15,40,242 // movaps %xmm2,%xmm6
22165 .byte 65,15,40,192 // movaps %xmm8,%xmm0
22166 .byte 65,15,40,202 // movaps %xmm10,%xmm1
22167 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Kleinbb338332017-05-04 12:42:52 -040022168 .byte 255,224 // jmpq *%rax
22169
22170HIDDEN _sk_luminosity_sse41
22171.globl _sk_luminosity_sse41
22172FUNCTION(_sk_luminosity_sse41)
22173_sk_luminosity_sse41:
Mike Klein08aa88d2017-05-12 12:59:24 -040022174 .byte 15,41,116,36,200 // movaps %xmm6,-0x38(%rsp)
22175 .byte 15,41,108,36,232 // movaps %xmm5,-0x18(%rsp)
22176 .byte 68,15,40,196 // movaps %xmm4,%xmm8
22177 .byte 68,15,41,68,36,216 // movaps %xmm8,-0x28(%rsp)
22178 .byte 15,41,84,36,184 // movaps %xmm2,-0x48(%rsp)
22179 .byte 15,40,224 // movaps %xmm0,%xmm4
Mike Kleinbb338332017-05-04 12:42:52 -040022180 .byte 68,15,40,219 // movaps %xmm3,%xmm11
Mike Klein08aa88d2017-05-12 12:59:24 -040022181 .byte 69,15,89,216 // mulps %xmm8,%xmm11
22182 .byte 68,15,40,203 // movaps %xmm3,%xmm9
22183 .byte 68,15,89,205 // mulps %xmm5,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040022184 .byte 68,15,40,5,62,53,0,0 // movaps 0x353e(%rip),%xmm8 # 4a80 <_sk_callback_sse41+0x33e>
Mike Kleinbb338332017-05-04 12:42:52 -040022185 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040022186 .byte 68,15,40,21,66,53,0,0 // movaps 0x3542(%rip),%xmm10 # 4a90 <_sk_callback_sse41+0x34e>
Mike Klein08aa88d2017-05-12 12:59:24 -040022187 .byte 15,40,233 // movaps %xmm1,%xmm5
22188 .byte 65,15,89,234 // mulps %xmm10,%xmm5
22189 .byte 15,88,232 // addps %xmm0,%xmm5
Mike Klein8ca33562017-05-23 08:07:43 -040022190 .byte 68,15,40,37,64,53,0,0 // movaps 0x3540(%rip),%xmm12 # 4aa0 <_sk_callback_sse41+0x35e>
Mike Klein08aa88d2017-05-12 12:59:24 -040022191 .byte 68,15,40,242 // movaps %xmm2,%xmm14
22192 .byte 69,15,89,244 // mulps %xmm12,%xmm14
22193 .byte 68,15,88,245 // addps %xmm5,%xmm14
22194 .byte 65,15,40,235 // movaps %xmm11,%xmm5
22195 .byte 65,15,89,232 // mulps %xmm8,%xmm5
22196 .byte 65,15,40,209 // movaps %xmm9,%xmm2
22197 .byte 65,15,89,210 // mulps %xmm10,%xmm2
22198 .byte 15,88,213 // addps %xmm5,%xmm2
Mike Kleinbb338332017-05-04 12:42:52 -040022199 .byte 15,40,195 // movaps %xmm3,%xmm0
Mike Klein08aa88d2017-05-12 12:59:24 -040022200 .byte 15,89,198 // mulps %xmm6,%xmm0
22201 .byte 15,40,232 // movaps %xmm0,%xmm5
22202 .byte 65,15,89,236 // mulps %xmm12,%xmm5
22203 .byte 15,88,234 // addps %xmm2,%xmm5
22204 .byte 68,15,89,247 // mulps %xmm7,%xmm14
22205 .byte 68,15,92,245 // subps %xmm5,%xmm14
Mike Kleinbb338332017-05-04 12:42:52 -040022206 .byte 69,15,88,222 // addps %xmm14,%xmm11
Mike Klein08aa88d2017-05-12 12:59:24 -040022207 .byte 69,15,88,206 // addps %xmm14,%xmm9
22208 .byte 68,15,88,240 // addps %xmm0,%xmm14
22209 .byte 65,15,40,193 // movaps %xmm9,%xmm0
22210 .byte 65,15,93,198 // minps %xmm14,%xmm0
22211 .byte 65,15,40,235 // movaps %xmm11,%xmm5
22212 .byte 15,93,232 // minps %xmm0,%xmm5
22213 .byte 69,15,89,195 // mulps %xmm11,%xmm8
22214 .byte 69,15,89,209 // mulps %xmm9,%xmm10
22215 .byte 69,15,88,208 // addps %xmm8,%xmm10
22216 .byte 69,15,89,230 // mulps %xmm14,%xmm12
22217 .byte 69,15,88,226 // addps %xmm10,%xmm12
22218 .byte 69,15,87,210 // xorps %xmm10,%xmm10
22219 .byte 68,15,194,213,2 // cmpleps %xmm5,%xmm10
22220 .byte 69,15,40,235 // movaps %xmm11,%xmm13
22221 .byte 69,15,92,236 // subps %xmm12,%xmm13
22222 .byte 69,15,89,236 // mulps %xmm12,%xmm13
22223 .byte 65,15,40,244 // movaps %xmm12,%xmm6
22224 .byte 15,92,245 // subps %xmm5,%xmm6
22225 .byte 68,15,94,238 // divps %xmm6,%xmm13
22226 .byte 69,15,88,236 // addps %xmm12,%xmm13
Mike Kleinbb338332017-05-04 12:42:52 -040022227 .byte 65,15,40,194 // movaps %xmm10,%xmm0
Mike Klein08aa88d2017-05-12 12:59:24 -040022228 .byte 102,69,15,56,20,235 // blendvps %xmm0,%xmm11,%xmm13
22229 .byte 65,15,40,193 // movaps %xmm9,%xmm0
22230 .byte 65,15,95,198 // maxps %xmm14,%xmm0
Mike Kleinbb338332017-05-04 12:42:52 -040022231 .byte 65,15,40,211 // movaps %xmm11,%xmm2
Mike Klein08aa88d2017-05-12 12:59:24 -040022232 .byte 15,95,208 // maxps %xmm0,%xmm2
22233 .byte 15,40,235 // movaps %xmm3,%xmm5
22234 .byte 15,89,239 // mulps %xmm7,%xmm5
22235 .byte 68,15,40,221 // movaps %xmm5,%xmm11
22236 .byte 68,15,194,218,1 // cmpltps %xmm2,%xmm11
22237 .byte 69,15,40,197 // movaps %xmm13,%xmm8
22238 .byte 69,15,92,196 // subps %xmm12,%xmm8
22239 .byte 68,15,40,253 // movaps %xmm5,%xmm15
22240 .byte 69,15,92,252 // subps %xmm12,%xmm15
22241 .byte 69,15,89,199 // mulps %xmm15,%xmm8
22242 .byte 65,15,92,212 // subps %xmm12,%xmm2
22243 .byte 68,15,94,194 // divps %xmm2,%xmm8
22244 .byte 69,15,88,196 // addps %xmm12,%xmm8
22245 .byte 65,15,40,195 // movaps %xmm11,%xmm0
22246 .byte 102,69,15,56,20,232 // blendvps %xmm0,%xmm8,%xmm13
22247 .byte 69,15,40,193 // movaps %xmm9,%xmm8
22248 .byte 69,15,92,196 // subps %xmm12,%xmm8
22249 .byte 69,15,89,196 // mulps %xmm12,%xmm8
22250 .byte 68,15,94,198 // divps %xmm6,%xmm8
22251 .byte 69,15,88,196 // addps %xmm12,%xmm8
22252 .byte 65,15,40,194 // movaps %xmm10,%xmm0
22253 .byte 102,69,15,56,20,193 // blendvps %xmm0,%xmm9,%xmm8
22254 .byte 69,15,40,200 // movaps %xmm8,%xmm9
22255 .byte 69,15,92,204 // subps %xmm12,%xmm9
22256 .byte 69,15,89,207 // mulps %xmm15,%xmm9
22257 .byte 68,15,94,202 // divps %xmm2,%xmm9
22258 .byte 69,15,88,204 // addps %xmm12,%xmm9
22259 .byte 65,15,40,195 // movaps %xmm11,%xmm0
22260 .byte 102,69,15,56,20,193 // blendvps %xmm0,%xmm9,%xmm8
22261 .byte 69,15,40,206 // movaps %xmm14,%xmm9
22262 .byte 69,15,92,204 // subps %xmm12,%xmm9
22263 .byte 69,15,89,204 // mulps %xmm12,%xmm9
22264 .byte 68,15,94,206 // divps %xmm6,%xmm9
22265 .byte 69,15,88,204 // addps %xmm12,%xmm9
22266 .byte 65,15,40,194 // movaps %xmm10,%xmm0
22267 .byte 102,69,15,56,20,206 // blendvps %xmm0,%xmm14,%xmm9
22268 .byte 65,15,40,241 // movaps %xmm9,%xmm6
22269 .byte 65,15,92,244 // subps %xmm12,%xmm6
22270 .byte 65,15,89,247 // mulps %xmm15,%xmm6
22271 .byte 15,94,242 // divps %xmm2,%xmm6
22272 .byte 65,15,88,244 // addps %xmm12,%xmm6
22273 .byte 65,15,40,195 // movaps %xmm11,%xmm0
22274 .byte 102,68,15,56,20,206 // blendvps %xmm0,%xmm6,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040022275 .byte 15,40,5,246,51,0,0 // movaps 0x33f6(%rip),%xmm0 # 4ab0 <_sk_callback_sse41+0x36e>
Mike Klein08aa88d2017-05-12 12:59:24 -040022276 .byte 15,40,208 // movaps %xmm0,%xmm2
22277 .byte 15,92,215 // subps %xmm7,%xmm2
22278 .byte 15,89,226 // mulps %xmm2,%xmm4
22279 .byte 15,89,202 // mulps %xmm2,%xmm1
22280 .byte 15,89,84,36,184 // mulps -0x48(%rsp),%xmm2
22281 .byte 15,92,195 // subps %xmm3,%xmm0
22282 .byte 15,88,223 // addps %xmm7,%xmm3
22283 .byte 15,92,221 // subps %xmm5,%xmm3
22284 .byte 15,87,237 // xorps %xmm5,%xmm5
22285 .byte 68,15,95,237 // maxps %xmm5,%xmm13
22286 .byte 68,15,95,197 // maxps %xmm5,%xmm8
22287 .byte 68,15,95,205 // maxps %xmm5,%xmm9
22288 .byte 15,40,232 // movaps %xmm0,%xmm5
22289 .byte 68,15,40,84,36,216 // movaps -0x28(%rsp),%xmm10
22290 .byte 65,15,89,234 // mulps %xmm10,%xmm5
22291 .byte 15,88,229 // addps %xmm5,%xmm4
22292 .byte 65,15,88,229 // addps %xmm13,%xmm4
22293 .byte 15,40,240 // movaps %xmm0,%xmm6
Mike Kleinbb338332017-05-04 12:42:52 -040022294 .byte 15,40,108,36,232 // movaps -0x18(%rsp),%xmm5
Mike Klein08aa88d2017-05-12 12:59:24 -040022295 .byte 15,89,245 // mulps %xmm5,%xmm6
22296 .byte 15,88,206 // addps %xmm6,%xmm1
22297 .byte 65,15,88,200 // addps %xmm8,%xmm1
22298 .byte 15,40,116,36,200 // movaps -0x38(%rsp),%xmm6
22299 .byte 15,89,198 // mulps %xmm6,%xmm0
22300 .byte 15,88,194 // addps %xmm2,%xmm0
22301 .byte 68,15,88,200 // addps %xmm0,%xmm9
22302 .byte 72,173 // lods %ds:(%rsi),%rax
22303 .byte 15,40,196 // movaps %xmm4,%xmm0
22304 .byte 65,15,40,209 // movaps %xmm9,%xmm2
22305 .byte 65,15,40,226 // movaps %xmm10,%xmm4
Mike Kleinbb338332017-05-04 12:42:52 -040022306 .byte 255,224 // jmpq *%rax
22307
Mike Klein7c4af542017-03-29 18:21:14 -040022308HIDDEN _sk_clamp_0_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022309.globl _sk_clamp_0_sse41
Mike Klein86714282017-04-13 17:37:38 -040022310FUNCTION(_sk_clamp_0_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022311_sk_clamp_0_sse41:
22312 .byte 69,15,87,192 // xorps %xmm8,%xmm8
22313 .byte 65,15,95,192 // maxps %xmm8,%xmm0
22314 .byte 65,15,95,200 // maxps %xmm8,%xmm1
22315 .byte 65,15,95,208 // maxps %xmm8,%xmm2
22316 .byte 65,15,95,216 // maxps %xmm8,%xmm3
22317 .byte 72,173 // lods %ds:(%rsi),%rax
22318 .byte 255,224 // jmpq *%rax
22319
Mike Klein7c4af542017-03-29 18:21:14 -040022320HIDDEN _sk_clamp_1_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022321.globl _sk_clamp_1_sse41
Mike Klein86714282017-04-13 17:37:38 -040022322FUNCTION(_sk_clamp_1_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022323_sk_clamp_1_sse41:
Mike Klein8ca33562017-05-23 08:07:43 -040022324 .byte 68,15,40,5,121,51,0,0 // movaps 0x3379(%rip),%xmm8 # 4ac0 <_sk_callback_sse41+0x37e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040022325 .byte 65,15,93,192 // minps %xmm8,%xmm0
22326 .byte 65,15,93,200 // minps %xmm8,%xmm1
22327 .byte 65,15,93,208 // minps %xmm8,%xmm2
22328 .byte 65,15,93,216 // minps %xmm8,%xmm3
22329 .byte 72,173 // lods %ds:(%rsi),%rax
22330 .byte 255,224 // jmpq *%rax
22331
Mike Klein7c4af542017-03-29 18:21:14 -040022332HIDDEN _sk_clamp_a_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022333.globl _sk_clamp_a_sse41
Mike Klein86714282017-04-13 17:37:38 -040022334FUNCTION(_sk_clamp_a_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022335_sk_clamp_a_sse41:
Mike Klein8ca33562017-05-23 08:07:43 -040022336 .byte 15,93,29,110,51,0,0 // minps 0x336e(%rip),%xmm3 # 4ad0 <_sk_callback_sse41+0x38e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040022337 .byte 15,93,195 // minps %xmm3,%xmm0
22338 .byte 15,93,203 // minps %xmm3,%xmm1
22339 .byte 15,93,211 // minps %xmm3,%xmm2
22340 .byte 72,173 // lods %ds:(%rsi),%rax
22341 .byte 255,224 // jmpq *%rax
22342
Mike Klein7c4af542017-03-29 18:21:14 -040022343HIDDEN _sk_set_rgb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022344.globl _sk_set_rgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040022345FUNCTION(_sk_set_rgb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022346_sk_set_rgb_sse41:
22347 .byte 72,173 // lods %ds:(%rsi),%rax
22348 .byte 243,15,16,0 // movss (%rax),%xmm0
22349 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
22350 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
22351 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
22352 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
22353 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
22354 .byte 72,173 // lods %ds:(%rsi),%rax
22355 .byte 255,224 // jmpq *%rax
22356
Mike Klein7c4af542017-03-29 18:21:14 -040022357HIDDEN _sk_swap_rb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022358.globl _sk_swap_rb_sse41
Mike Klein86714282017-04-13 17:37:38 -040022359FUNCTION(_sk_swap_rb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022360_sk_swap_rb_sse41:
22361 .byte 68,15,40,192 // movaps %xmm0,%xmm8
22362 .byte 72,173 // lods %ds:(%rsi),%rax
22363 .byte 15,40,194 // movaps %xmm2,%xmm0
22364 .byte 65,15,40,208 // movaps %xmm8,%xmm2
22365 .byte 255,224 // jmpq *%rax
22366
Mike Klein7c4af542017-03-29 18:21:14 -040022367HIDDEN _sk_swap_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022368.globl _sk_swap_sse41
Mike Klein86714282017-04-13 17:37:38 -040022369FUNCTION(_sk_swap_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022370_sk_swap_sse41:
22371 .byte 68,15,40,195 // movaps %xmm3,%xmm8
22372 .byte 68,15,40,202 // movaps %xmm2,%xmm9
22373 .byte 68,15,40,209 // movaps %xmm1,%xmm10
22374 .byte 68,15,40,216 // movaps %xmm0,%xmm11
22375 .byte 72,173 // lods %ds:(%rsi),%rax
22376 .byte 15,40,196 // movaps %xmm4,%xmm0
22377 .byte 15,40,205 // movaps %xmm5,%xmm1
22378 .byte 15,40,214 // movaps %xmm6,%xmm2
22379 .byte 15,40,223 // movaps %xmm7,%xmm3
22380 .byte 65,15,40,227 // movaps %xmm11,%xmm4
22381 .byte 65,15,40,234 // movaps %xmm10,%xmm5
22382 .byte 65,15,40,241 // movaps %xmm9,%xmm6
22383 .byte 65,15,40,248 // movaps %xmm8,%xmm7
22384 .byte 255,224 // jmpq *%rax
22385
Mike Klein7c4af542017-03-29 18:21:14 -040022386HIDDEN _sk_move_src_dst_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022387.globl _sk_move_src_dst_sse41
Mike Klein86714282017-04-13 17:37:38 -040022388FUNCTION(_sk_move_src_dst_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022389_sk_move_src_dst_sse41:
22390 .byte 72,173 // lods %ds:(%rsi),%rax
22391 .byte 15,40,224 // movaps %xmm0,%xmm4
22392 .byte 15,40,233 // movaps %xmm1,%xmm5
22393 .byte 15,40,242 // movaps %xmm2,%xmm6
22394 .byte 15,40,251 // movaps %xmm3,%xmm7
22395 .byte 255,224 // jmpq *%rax
22396
Mike Klein7c4af542017-03-29 18:21:14 -040022397HIDDEN _sk_move_dst_src_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022398.globl _sk_move_dst_src_sse41
Mike Klein86714282017-04-13 17:37:38 -040022399FUNCTION(_sk_move_dst_src_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022400_sk_move_dst_src_sse41:
22401 .byte 72,173 // lods %ds:(%rsi),%rax
22402 .byte 15,40,196 // movaps %xmm4,%xmm0
22403 .byte 15,40,205 // movaps %xmm5,%xmm1
22404 .byte 15,40,214 // movaps %xmm6,%xmm2
22405 .byte 15,40,223 // movaps %xmm7,%xmm3
22406 .byte 255,224 // jmpq *%rax
22407
Mike Klein7c4af542017-03-29 18:21:14 -040022408HIDDEN _sk_premul_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022409.globl _sk_premul_sse41
Mike Klein86714282017-04-13 17:37:38 -040022410FUNCTION(_sk_premul_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022411_sk_premul_sse41:
22412 .byte 15,89,195 // mulps %xmm3,%xmm0
22413 .byte 15,89,203 // mulps %xmm3,%xmm1
22414 .byte 15,89,211 // mulps %xmm3,%xmm2
22415 .byte 72,173 // lods %ds:(%rsi),%rax
22416 .byte 255,224 // jmpq *%rax
22417
Mike Klein7c4af542017-03-29 18:21:14 -040022418HIDDEN _sk_unpremul_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022419.globl _sk_unpremul_sse41
Mike Klein86714282017-04-13 17:37:38 -040022420FUNCTION(_sk_unpremul_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022421_sk_unpremul_sse41:
22422 .byte 69,15,87,192 // xorps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022423 .byte 68,15,40,13,217,50,0,0 // movaps 0x32d9(%rip),%xmm9 # 4ae0 <_sk_callback_sse41+0x39e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040022424 .byte 68,15,94,203 // divps %xmm3,%xmm9
22425 .byte 68,15,194,195,4 // cmpneqps %xmm3,%xmm8
22426 .byte 69,15,84,193 // andps %xmm9,%xmm8
22427 .byte 65,15,89,192 // mulps %xmm8,%xmm0
22428 .byte 65,15,89,200 // mulps %xmm8,%xmm1
22429 .byte 65,15,89,208 // mulps %xmm8,%xmm2
22430 .byte 72,173 // lods %ds:(%rsi),%rax
22431 .byte 255,224 // jmpq *%rax
22432
Mike Klein7c4af542017-03-29 18:21:14 -040022433HIDDEN _sk_from_srgb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022434.globl _sk_from_srgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040022435FUNCTION(_sk_from_srgb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022436_sk_from_srgb_sse41:
Mike Klein8ca33562017-05-23 08:07:43 -040022437 .byte 68,15,40,29,196,50,0,0 // movaps 0x32c4(%rip),%xmm11 # 4af0 <_sk_callback_sse41+0x3ae>
Mike Kleinfe560a82017-05-01 12:56:35 -040022438 .byte 68,15,40,200 // movaps %xmm0,%xmm9
22439 .byte 69,15,89,203 // mulps %xmm11,%xmm9
22440 .byte 68,15,40,208 // movaps %xmm0,%xmm10
22441 .byte 69,15,89,210 // mulps %xmm10,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040022442 .byte 68,15,40,37,188,50,0,0 // movaps 0x32bc(%rip),%xmm12 # 4b00 <_sk_callback_sse41+0x3be>
Mike Kleinfe560a82017-05-01 12:56:35 -040022443 .byte 68,15,40,192 // movaps %xmm0,%xmm8
22444 .byte 69,15,89,196 // mulps %xmm12,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022445 .byte 68,15,40,45,188,50,0,0 // movaps 0x32bc(%rip),%xmm13 # 4b10 <_sk_callback_sse41+0x3ce>
Mike Kleind7e06ae2017-03-29 16:33:06 -040022446 .byte 69,15,88,197 // addps %xmm13,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040022447 .byte 69,15,89,194 // mulps %xmm10,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022448 .byte 68,15,40,53,188,50,0,0 // movaps 0x32bc(%rip),%xmm14 # 4b20 <_sk_callback_sse41+0x3de>
Mike Kleinfe560a82017-05-01 12:56:35 -040022449 .byte 69,15,88,198 // addps %xmm14,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022450 .byte 68,15,40,61,192,50,0,0 // movaps 0x32c0(%rip),%xmm15 # 4b30 <_sk_callback_sse41+0x3ee>
Mike Kleinfe560a82017-05-01 12:56:35 -040022451 .byte 65,15,194,199,1 // cmpltps %xmm15,%xmm0
22452 .byte 102,69,15,56,20,193 // blendvps %xmm0,%xmm9,%xmm8
22453 .byte 68,15,40,209 // movaps %xmm1,%xmm10
22454 .byte 69,15,89,211 // mulps %xmm11,%xmm10
22455 .byte 15,40,193 // movaps %xmm1,%xmm0
22456 .byte 15,89,192 // mulps %xmm0,%xmm0
22457 .byte 68,15,40,201 // movaps %xmm1,%xmm9
22458 .byte 69,15,89,204 // mulps %xmm12,%xmm9
22459 .byte 69,15,88,205 // addps %xmm13,%xmm9
22460 .byte 68,15,89,200 // mulps %xmm0,%xmm9
22461 .byte 69,15,88,206 // addps %xmm14,%xmm9
22462 .byte 65,15,194,207,1 // cmpltps %xmm15,%xmm1
22463 .byte 15,40,193 // movaps %xmm1,%xmm0
22464 .byte 102,69,15,56,20,202 // blendvps %xmm0,%xmm10,%xmm9
22465 .byte 68,15,89,218 // mulps %xmm2,%xmm11
22466 .byte 68,15,40,210 // movaps %xmm2,%xmm10
22467 .byte 69,15,89,210 // mulps %xmm10,%xmm10
22468 .byte 68,15,89,226 // mulps %xmm2,%xmm12
22469 .byte 69,15,88,229 // addps %xmm13,%xmm12
22470 .byte 69,15,89,212 // mulps %xmm12,%xmm10
22471 .byte 69,15,88,214 // addps %xmm14,%xmm10
22472 .byte 65,15,194,215,1 // cmpltps %xmm15,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022473 .byte 15,40,194 // movaps %xmm2,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040022474 .byte 102,69,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040022475 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040022476 .byte 65,15,40,192 // movaps %xmm8,%xmm0
22477 .byte 65,15,40,201 // movaps %xmm9,%xmm1
22478 .byte 65,15,40,210 // movaps %xmm10,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022479 .byte 255,224 // jmpq *%rax
22480
Mike Klein7c4af542017-03-29 18:21:14 -040022481HIDDEN _sk_to_srgb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022482.globl _sk_to_srgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040022483FUNCTION(_sk_to_srgb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022484_sk_to_srgb_sse41:
Mike Klein15bf6782017-03-31 12:21:46 -040022485 .byte 15,41,124,36,232 // movaps %xmm7,-0x18(%rsp)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022486 .byte 15,40,254 // movaps %xmm6,%xmm7
22487 .byte 15,40,245 // movaps %xmm5,%xmm6
22488 .byte 15,40,236 // movaps %xmm4,%xmm5
22489 .byte 15,40,227 // movaps %xmm3,%xmm4
22490 .byte 15,40,218 // movaps %xmm2,%xmm3
22491 .byte 15,40,209 // movaps %xmm1,%xmm2
22492 .byte 68,15,82,192 // rsqrtps %xmm0,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022493 .byte 68,15,40,29,56,50,0,0 // movaps 0x3238(%rip),%xmm11 # 4b40 <_sk_callback_sse41+0x3fe>
Mike Kleinf45e3d72017-05-15 17:36:59 -040022494 .byte 68,15,40,200 // movaps %xmm0,%xmm9
22495 .byte 69,15,89,203 // mulps %xmm11,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040022496 .byte 68,15,40,37,56,50,0,0 // movaps 0x3238(%rip),%xmm12 # 4b50 <_sk_callback_sse41+0x40e>
Mike Kleinf45e3d72017-05-15 17:36:59 -040022497 .byte 69,15,40,248 // movaps %xmm8,%xmm15
22498 .byte 69,15,89,252 // mulps %xmm12,%xmm15
Mike Klein8ca33562017-05-23 08:07:43 -040022499 .byte 68,15,40,21,56,50,0,0 // movaps 0x3238(%rip),%xmm10 # 4b60 <_sk_callback_sse41+0x41e>
Mike Kleinf45e3d72017-05-15 17:36:59 -040022500 .byte 69,15,88,250 // addps %xmm10,%xmm15
22501 .byte 69,15,89,248 // mulps %xmm8,%xmm15
Mike Klein8ca33562017-05-23 08:07:43 -040022502 .byte 68,15,40,45,56,50,0,0 // movaps 0x3238(%rip),%xmm13 # 4b70 <_sk_callback_sse41+0x42e>
Mike Kleinf45e3d72017-05-15 17:36:59 -040022503 .byte 69,15,88,253 // addps %xmm13,%xmm15
Mike Klein8ca33562017-05-23 08:07:43 -040022504 .byte 68,15,40,53,60,50,0,0 // movaps 0x323c(%rip),%xmm14 # 4b80 <_sk_callback_sse41+0x43e>
Mike Kleinf45e3d72017-05-15 17:36:59 -040022505 .byte 69,15,88,198 // addps %xmm14,%xmm8
22506 .byte 69,15,83,192 // rcpps %xmm8,%xmm8
22507 .byte 69,15,89,199 // mulps %xmm15,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022508 .byte 68,15,40,61,56,50,0,0 // movaps 0x3238(%rip),%xmm15 # 4b90 <_sk_callback_sse41+0x44e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040022509 .byte 65,15,194,199,1 // cmpltps %xmm15,%xmm0
Mike Kleinf45e3d72017-05-15 17:36:59 -040022510 .byte 102,69,15,56,20,193 // blendvps %xmm0,%xmm9,%xmm8
22511 .byte 68,15,82,202 // rsqrtps %xmm2,%xmm9
22512 .byte 65,15,40,193 // movaps %xmm9,%xmm0
22513 .byte 65,15,89,196 // mulps %xmm12,%xmm0
22514 .byte 65,15,88,194 // addps %xmm10,%xmm0
22515 .byte 65,15,89,193 // mulps %xmm9,%xmm0
22516 .byte 65,15,88,197 // addps %xmm13,%xmm0
22517 .byte 69,15,88,206 // addps %xmm14,%xmm9
22518 .byte 69,15,83,201 // rcpps %xmm9,%xmm9
22519 .byte 68,15,89,200 // mulps %xmm0,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040022520 .byte 65,15,89,203 // mulps %xmm11,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040022521 .byte 65,15,194,215,1 // cmpltps %xmm15,%xmm2
22522 .byte 15,40,194 // movaps %xmm2,%xmm0
Mike Kleinf45e3d72017-05-15 17:36:59 -040022523 .byte 102,68,15,56,20,201 // blendvps %xmm0,%xmm1,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040022524 .byte 15,82,195 // rsqrtps %xmm3,%xmm0
Mike Kleinf45e3d72017-05-15 17:36:59 -040022525 .byte 68,15,89,224 // mulps %xmm0,%xmm12
22526 .byte 69,15,88,226 // addps %xmm10,%xmm12
22527 .byte 68,15,89,224 // mulps %xmm0,%xmm12
22528 .byte 69,15,88,229 // addps %xmm13,%xmm12
22529 .byte 65,15,88,198 // addps %xmm14,%xmm0
22530 .byte 68,15,83,208 // rcpps %xmm0,%xmm10
22531 .byte 69,15,89,212 // mulps %xmm12,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040022532 .byte 68,15,89,219 // mulps %xmm3,%xmm11
22533 .byte 65,15,194,223,1 // cmpltps %xmm15,%xmm3
22534 .byte 15,40,195 // movaps %xmm3,%xmm0
Mike Kleinf45e3d72017-05-15 17:36:59 -040022535 .byte 102,69,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040022536 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinf45e3d72017-05-15 17:36:59 -040022537 .byte 65,15,40,192 // movaps %xmm8,%xmm0
22538 .byte 65,15,40,201 // movaps %xmm9,%xmm1
22539 .byte 65,15,40,210 // movaps %xmm10,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022540 .byte 15,40,220 // movaps %xmm4,%xmm3
22541 .byte 15,40,229 // movaps %xmm5,%xmm4
22542 .byte 15,40,238 // movaps %xmm6,%xmm5
22543 .byte 15,40,247 // movaps %xmm7,%xmm6
Mike Klein15bf6782017-03-31 12:21:46 -040022544 .byte 15,40,124,36,232 // movaps -0x18(%rsp),%xmm7
Mike Kleind7e06ae2017-03-29 16:33:06 -040022545 .byte 255,224 // jmpq *%rax
22546
Mike Kleindb1cbcb2017-04-12 08:35:41 -040022547HIDDEN _sk_rgb_to_hsl_sse41
22548.globl _sk_rgb_to_hsl_sse41
Mike Klein86714282017-04-13 17:37:38 -040022549FUNCTION(_sk_rgb_to_hsl_sse41)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040022550_sk_rgb_to_hsl_sse41:
Mike Kleinfe560a82017-05-01 12:56:35 -040022551 .byte 68,15,40,201 // movaps %xmm1,%xmm9
22552 .byte 68,15,40,192 // movaps %xmm0,%xmm8
22553 .byte 69,15,40,216 // movaps %xmm8,%xmm11
22554 .byte 69,15,95,217 // maxps %xmm9,%xmm11
22555 .byte 68,15,95,218 // maxps %xmm2,%xmm11
22556 .byte 69,15,40,224 // movaps %xmm8,%xmm12
22557 .byte 69,15,93,225 // minps %xmm9,%xmm12
22558 .byte 68,15,93,226 // minps %xmm2,%xmm12
22559 .byte 65,15,40,203 // movaps %xmm11,%xmm1
Mike Kleindb1cbcb2017-04-12 08:35:41 -040022560 .byte 65,15,92,204 // subps %xmm12,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040022561 .byte 68,15,40,53,133,49,0,0 // movaps 0x3185(%rip),%xmm14 # 4ba0 <_sk_callback_sse41+0x45e>
Mike Kleinfe560a82017-05-01 12:56:35 -040022562 .byte 68,15,94,241 // divps %xmm1,%xmm14
22563 .byte 69,15,40,211 // movaps %xmm11,%xmm10
22564 .byte 69,15,194,208,0 // cmpeqps %xmm8,%xmm10
22565 .byte 65,15,40,193 // movaps %xmm9,%xmm0
22566 .byte 15,92,194 // subps %xmm2,%xmm0
22567 .byte 65,15,89,198 // mulps %xmm14,%xmm0
22568 .byte 69,15,40,249 // movaps %xmm9,%xmm15
22569 .byte 68,15,194,250,1 // cmpltps %xmm2,%xmm15
Mike Klein8ca33562017-05-23 08:07:43 -040022570 .byte 68,15,84,61,108,49,0,0 // andps 0x316c(%rip),%xmm15 # 4bb0 <_sk_callback_sse41+0x46e>
Mike Kleinfe560a82017-05-01 12:56:35 -040022571 .byte 68,15,88,248 // addps %xmm0,%xmm15
22572 .byte 65,15,40,195 // movaps %xmm11,%xmm0
22573 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
22574 .byte 65,15,92,208 // subps %xmm8,%xmm2
22575 .byte 65,15,89,214 // mulps %xmm14,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040022576 .byte 68,15,40,45,95,49,0,0 // movaps 0x315f(%rip),%xmm13 # 4bc0 <_sk_callback_sse41+0x47e>
Mike Kleinfe560a82017-05-01 12:56:35 -040022577 .byte 65,15,88,213 // addps %xmm13,%xmm2
22578 .byte 69,15,92,193 // subps %xmm9,%xmm8
22579 .byte 69,15,89,198 // mulps %xmm14,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022580 .byte 68,15,88,5,91,49,0,0 // addps 0x315b(%rip),%xmm8 # 4bd0 <_sk_callback_sse41+0x48e>
Mike Kleinfe560a82017-05-01 12:56:35 -040022581 .byte 102,68,15,56,20,194 // blendvps %xmm0,%xmm2,%xmm8
Mike Kleindb1cbcb2017-04-12 08:35:41 -040022582 .byte 65,15,40,194 // movaps %xmm10,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040022583 .byte 102,69,15,56,20,199 // blendvps %xmm0,%xmm15,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022584 .byte 68,15,89,5,83,49,0,0 // mulps 0x3153(%rip),%xmm8 # 4be0 <_sk_callback_sse41+0x49e>
Mike Kleinfe560a82017-05-01 12:56:35 -040022585 .byte 69,15,40,203 // movaps %xmm11,%xmm9
22586 .byte 69,15,194,204,4 // cmpneqps %xmm12,%xmm9
22587 .byte 69,15,84,193 // andps %xmm9,%xmm8
22588 .byte 69,15,92,235 // subps %xmm11,%xmm13
22589 .byte 69,15,88,220 // addps %xmm12,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040022590 .byte 15,40,5,71,49,0,0 // movaps 0x3147(%rip),%xmm0 # 4bf0 <_sk_callback_sse41+0x4ae>
Mike Kleinfe560a82017-05-01 12:56:35 -040022591 .byte 65,15,40,211 // movaps %xmm11,%xmm2
22592 .byte 15,89,208 // mulps %xmm0,%xmm2
22593 .byte 15,194,194,1 // cmpltps %xmm2,%xmm0
22594 .byte 69,15,92,236 // subps %xmm12,%xmm13
22595 .byte 102,69,15,56,20,221 // blendvps %xmm0,%xmm13,%xmm11
22596 .byte 65,15,94,203 // divps %xmm11,%xmm1
22597 .byte 65,15,84,201 // andps %xmm9,%xmm1
Mike Kleindb1cbcb2017-04-12 08:35:41 -040022598 .byte 72,173 // lods %ds:(%rsi),%rax
22599 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Kleindb1cbcb2017-04-12 08:35:41 -040022600 .byte 255,224 // jmpq *%rax
22601
22602HIDDEN _sk_hsl_to_rgb_sse41
22603.globl _sk_hsl_to_rgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040022604FUNCTION(_sk_hsl_to_rgb_sse41)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040022605_sk_hsl_to_rgb_sse41:
Mike Klein5664e652017-05-01 16:01:38 -040022606 .byte 15,41,124,36,232 // movaps %xmm7,-0x18(%rsp)
22607 .byte 15,41,116,36,216 // movaps %xmm6,-0x28(%rsp)
22608 .byte 15,41,108,36,200 // movaps %xmm5,-0x38(%rsp)
22609 .byte 15,41,100,36,184 // movaps %xmm4,-0x48(%rsp)
22610 .byte 15,41,92,36,168 // movaps %xmm3,-0x58(%rsp)
Mike Klein879a08a2017-05-01 15:34:01 -040022611 .byte 68,15,40,208 // movaps %xmm0,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040022612 .byte 68,15,40,13,13,49,0,0 // movaps 0x310d(%rip),%xmm9 # 4c00 <_sk_callback_sse41+0x4be>
Mike Klein5664e652017-05-01 16:01:38 -040022613 .byte 65,15,40,193 // movaps %xmm9,%xmm0
22614 .byte 15,194,194,2 // cmpleps %xmm2,%xmm0
22615 .byte 15,40,217 // movaps %xmm1,%xmm3
22616 .byte 15,40,233 // movaps %xmm1,%xmm5
22617 .byte 15,89,234 // mulps %xmm2,%xmm5
22618 .byte 15,92,221 // subps %xmm5,%xmm3
22619 .byte 102,15,56,20,235 // blendvps %xmm0,%xmm3,%xmm5
22620 .byte 15,88,234 // addps %xmm2,%xmm5
22621 .byte 68,15,40,194 // movaps %xmm2,%xmm8
22622 .byte 15,41,84,36,152 // movaps %xmm2,-0x68(%rsp)
Mike Klein879a08a2017-05-01 15:34:01 -040022623 .byte 69,15,88,192 // addps %xmm8,%xmm8
Mike Klein5664e652017-05-01 16:01:38 -040022624 .byte 68,15,92,197 // subps %xmm5,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022625 .byte 68,15,40,53,232,48,0,0 // movaps 0x30e8(%rip),%xmm14 # 4c10 <_sk_callback_sse41+0x4ce>
Mike Klein5664e652017-05-01 16:01:38 -040022626 .byte 69,15,88,242 // addps %xmm10,%xmm14
22627 .byte 102,65,15,58,8,198,1 // roundps $0x1,%xmm14,%xmm0
22628 .byte 68,15,92,240 // subps %xmm0,%xmm14
Mike Klein8ca33562017-05-23 08:07:43 -040022629 .byte 68,15,40,29,225,48,0,0 // movaps 0x30e1(%rip),%xmm11 # 4c20 <_sk_callback_sse41+0x4de>
Mike Klein5664e652017-05-01 16:01:38 -040022630 .byte 65,15,40,195 // movaps %xmm11,%xmm0
22631 .byte 65,15,194,198,2 // cmpleps %xmm14,%xmm0
22632 .byte 15,40,245 // movaps %xmm5,%xmm6
22633 .byte 65,15,92,240 // subps %xmm8,%xmm6
Mike Klein8ca33562017-05-23 08:07:43 -040022634 .byte 15,40,61,218,48,0,0 // movaps 0x30da(%rip),%xmm7 # 4c30 <_sk_callback_sse41+0x4ee>
Mike Klein5664e652017-05-01 16:01:38 -040022635 .byte 69,15,40,238 // movaps %xmm14,%xmm13
Mike Klein879a08a2017-05-01 15:34:01 -040022636 .byte 68,15,89,239 // mulps %xmm7,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040022637 .byte 15,40,29,219,48,0,0 // movaps 0x30db(%rip),%xmm3 # 4c40 <_sk_callback_sse41+0x4fe>
Mike Klein5664e652017-05-01 16:01:38 -040022638 .byte 68,15,40,227 // movaps %xmm3,%xmm12
22639 .byte 69,15,92,229 // subps %xmm13,%xmm12
22640 .byte 68,15,89,230 // mulps %xmm6,%xmm12
22641 .byte 69,15,88,224 // addps %xmm8,%xmm12
22642 .byte 102,69,15,56,20,224 // blendvps %xmm0,%xmm8,%xmm12
22643 .byte 65,15,40,193 // movaps %xmm9,%xmm0
22644 .byte 65,15,194,198,2 // cmpleps %xmm14,%xmm0
22645 .byte 68,15,40,253 // movaps %xmm5,%xmm15
22646 .byte 102,69,15,56,20,252 // blendvps %xmm0,%xmm12,%xmm15
Mike Klein8ca33562017-05-23 08:07:43 -040022647 .byte 68,15,40,37,186,48,0,0 // movaps 0x30ba(%rip),%xmm12 # 4c50 <_sk_callback_sse41+0x50e>
Mike Klein879a08a2017-05-01 15:34:01 -040022648 .byte 65,15,40,196 // movaps %xmm12,%xmm0
Mike Klein5664e652017-05-01 16:01:38 -040022649 .byte 65,15,194,198,2 // cmpleps %xmm14,%xmm0
22650 .byte 68,15,89,238 // mulps %xmm6,%xmm13
22651 .byte 69,15,88,232 // addps %xmm8,%xmm13
22652 .byte 102,69,15,56,20,239 // blendvps %xmm0,%xmm15,%xmm13
22653 .byte 69,15,87,246 // xorps %xmm14,%xmm14
22654 .byte 68,15,194,241,0 // cmpeqps %xmm1,%xmm14
22655 .byte 65,15,40,198 // movaps %xmm14,%xmm0
22656 .byte 102,68,15,56,20,234 // blendvps %xmm0,%xmm2,%xmm13
22657 .byte 102,65,15,58,8,194,1 // roundps $0x1,%xmm10,%xmm0
22658 .byte 69,15,40,250 // movaps %xmm10,%xmm15
22659 .byte 68,15,92,248 // subps %xmm0,%xmm15
Mike Klein879a08a2017-05-01 15:34:01 -040022660 .byte 65,15,40,195 // movaps %xmm11,%xmm0
Mike Klein5664e652017-05-01 16:01:38 -040022661 .byte 65,15,194,199,2 // cmpleps %xmm15,%xmm0
22662 .byte 65,15,40,207 // movaps %xmm15,%xmm1
22663 .byte 15,89,207 // mulps %xmm7,%xmm1
22664 .byte 15,40,211 // movaps %xmm3,%xmm2
22665 .byte 15,92,209 // subps %xmm1,%xmm2
22666 .byte 15,89,214 // mulps %xmm6,%xmm2
22667 .byte 65,15,88,208 // addps %xmm8,%xmm2
22668 .byte 102,65,15,56,20,208 // blendvps %xmm0,%xmm8,%xmm2
22669 .byte 65,15,40,193 // movaps %xmm9,%xmm0
22670 .byte 65,15,194,199,2 // cmpleps %xmm15,%xmm0
22671 .byte 15,40,229 // movaps %xmm5,%xmm4
22672 .byte 102,15,56,20,226 // blendvps %xmm0,%xmm2,%xmm4
22673 .byte 65,15,40,196 // movaps %xmm12,%xmm0
22674 .byte 65,15,194,199,2 // cmpleps %xmm15,%xmm0
22675 .byte 15,89,206 // mulps %xmm6,%xmm1
22676 .byte 65,15,88,200 // addps %xmm8,%xmm1
22677 .byte 102,15,56,20,204 // blendvps %xmm0,%xmm4,%xmm1
22678 .byte 65,15,40,198 // movaps %xmm14,%xmm0
22679 .byte 15,40,84,36,152 // movaps -0x68(%rsp),%xmm2
22680 .byte 102,15,56,20,202 // blendvps %xmm0,%xmm2,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040022681 .byte 68,15,88,21,50,48,0,0 // addps 0x3032(%rip),%xmm10 # 4c60 <_sk_callback_sse41+0x51e>
Mike Klein879a08a2017-05-01 15:34:01 -040022682 .byte 102,65,15,58,8,194,1 // roundps $0x1,%xmm10,%xmm0
22683 .byte 68,15,92,208 // subps %xmm0,%xmm10
Mike Klein5664e652017-05-01 16:01:38 -040022684 .byte 69,15,194,218,2 // cmpleps %xmm10,%xmm11
22685 .byte 65,15,89,250 // mulps %xmm10,%xmm7
22686 .byte 15,92,223 // subps %xmm7,%xmm3
22687 .byte 15,89,222 // mulps %xmm6,%xmm3
22688 .byte 65,15,88,216 // addps %xmm8,%xmm3
Mike Klein879a08a2017-05-01 15:34:01 -040022689 .byte 65,15,40,195 // movaps %xmm11,%xmm0
Mike Klein5664e652017-05-01 16:01:38 -040022690 .byte 102,65,15,56,20,216 // blendvps %xmm0,%xmm8,%xmm3
22691 .byte 69,15,194,202,2 // cmpleps %xmm10,%xmm9
Mike Klein879a08a2017-05-01 15:34:01 -040022692 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Klein5664e652017-05-01 16:01:38 -040022693 .byte 102,15,56,20,235 // blendvps %xmm0,%xmm3,%xmm5
22694 .byte 69,15,194,226,2 // cmpleps %xmm10,%xmm12
22695 .byte 15,89,254 // mulps %xmm6,%xmm7
22696 .byte 68,15,88,199 // addps %xmm7,%xmm8
22697 .byte 65,15,40,196 // movaps %xmm12,%xmm0
22698 .byte 102,68,15,56,20,197 // blendvps %xmm0,%xmm5,%xmm8
22699 .byte 65,15,40,198 // movaps %xmm14,%xmm0
22700 .byte 102,68,15,56,20,194 // blendvps %xmm0,%xmm2,%xmm8
22701 .byte 72,173 // lods %ds:(%rsi),%rax
22702 .byte 65,15,40,197 // movaps %xmm13,%xmm0
Mike Klein879a08a2017-05-01 15:34:01 -040022703 .byte 65,15,40,208 // movaps %xmm8,%xmm2
Mike Klein5664e652017-05-01 16:01:38 -040022704 .byte 15,40,92,36,168 // movaps -0x58(%rsp),%xmm3
22705 .byte 15,40,100,36,184 // movaps -0x48(%rsp),%xmm4
22706 .byte 15,40,108,36,200 // movaps -0x38(%rsp),%xmm5
22707 .byte 15,40,116,36,216 // movaps -0x28(%rsp),%xmm6
22708 .byte 15,40,124,36,232 // movaps -0x18(%rsp),%xmm7
Mike Kleindb1cbcb2017-04-12 08:35:41 -040022709 .byte 255,224 // jmpq *%rax
22710
Mike Klein7c4af542017-03-29 18:21:14 -040022711HIDDEN _sk_scale_1_float_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022712.globl _sk_scale_1_float_sse41
Mike Klein86714282017-04-13 17:37:38 -040022713FUNCTION(_sk_scale_1_float_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022714_sk_scale_1_float_sse41:
22715 .byte 72,173 // lods %ds:(%rsi),%rax
22716 .byte 243,68,15,16,0 // movss (%rax),%xmm8
22717 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22718 .byte 65,15,89,192 // mulps %xmm8,%xmm0
22719 .byte 65,15,89,200 // mulps %xmm8,%xmm1
22720 .byte 65,15,89,208 // mulps %xmm8,%xmm2
22721 .byte 65,15,89,216 // mulps %xmm8,%xmm3
22722 .byte 72,173 // lods %ds:(%rsi),%rax
22723 .byte 255,224 // jmpq *%rax
22724
Mike Klein7c4af542017-03-29 18:21:14 -040022725HIDDEN _sk_scale_u8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022726.globl _sk_scale_u8_sse41
Mike Klein86714282017-04-13 17:37:38 -040022727FUNCTION(_sk_scale_u8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022728_sk_scale_u8_sse41:
22729 .byte 72,173 // lods %ds:(%rsi),%rax
22730 .byte 72,139,0 // mov (%rax),%rax
22731 .byte 102,68,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm8
22732 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022733 .byte 68,15,89,5,143,47,0,0 // mulps 0x2f8f(%rip),%xmm8 # 4c70 <_sk_callback_sse41+0x52e>
Mike Kleinfe560a82017-05-01 12:56:35 -040022734 .byte 65,15,89,192 // mulps %xmm8,%xmm0
22735 .byte 65,15,89,200 // mulps %xmm8,%xmm1
22736 .byte 65,15,89,208 // mulps %xmm8,%xmm2
22737 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040022738 .byte 72,173 // lods %ds:(%rsi),%rax
22739 .byte 255,224 // jmpq *%rax
22740
Mike Klein7c4af542017-03-29 18:21:14 -040022741HIDDEN _sk_lerp_1_float_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022742.globl _sk_lerp_1_float_sse41
Mike Klein86714282017-04-13 17:37:38 -040022743FUNCTION(_sk_lerp_1_float_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022744_sk_lerp_1_float_sse41:
22745 .byte 72,173 // lods %ds:(%rsi),%rax
22746 .byte 243,68,15,16,0 // movss (%rax),%xmm8
22747 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22748 .byte 15,92,196 // subps %xmm4,%xmm0
22749 .byte 65,15,89,192 // mulps %xmm8,%xmm0
22750 .byte 15,88,196 // addps %xmm4,%xmm0
22751 .byte 15,92,205 // subps %xmm5,%xmm1
22752 .byte 65,15,89,200 // mulps %xmm8,%xmm1
22753 .byte 15,88,205 // addps %xmm5,%xmm1
22754 .byte 15,92,214 // subps %xmm6,%xmm2
22755 .byte 65,15,89,208 // mulps %xmm8,%xmm2
22756 .byte 15,88,214 // addps %xmm6,%xmm2
22757 .byte 15,92,223 // subps %xmm7,%xmm3
22758 .byte 65,15,89,216 // mulps %xmm8,%xmm3
22759 .byte 15,88,223 // addps %xmm7,%xmm3
22760 .byte 72,173 // lods %ds:(%rsi),%rax
22761 .byte 255,224 // jmpq *%rax
22762
Mike Klein7c4af542017-03-29 18:21:14 -040022763HIDDEN _sk_lerp_u8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022764.globl _sk_lerp_u8_sse41
Mike Klein86714282017-04-13 17:37:38 -040022765FUNCTION(_sk_lerp_u8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022766_sk_lerp_u8_sse41:
22767 .byte 72,173 // lods %ds:(%rsi),%rax
22768 .byte 72,139,0 // mov (%rax),%rax
22769 .byte 102,68,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm8
22770 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022771 .byte 68,15,89,5,59,47,0,0 // mulps 0x2f3b(%rip),%xmm8 # 4c80 <_sk_callback_sse41+0x53e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040022772 .byte 15,92,196 // subps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040022773 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040022774 .byte 15,88,196 // addps %xmm4,%xmm0
22775 .byte 15,92,205 // subps %xmm5,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040022776 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040022777 .byte 15,88,205 // addps %xmm5,%xmm1
22778 .byte 15,92,214 // subps %xmm6,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040022779 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022780 .byte 15,88,214 // addps %xmm6,%xmm2
22781 .byte 15,92,223 // subps %xmm7,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040022782 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040022783 .byte 15,88,223 // addps %xmm7,%xmm3
22784 .byte 72,173 // lods %ds:(%rsi),%rax
22785 .byte 255,224 // jmpq *%rax
22786
Mike Klein7c4af542017-03-29 18:21:14 -040022787HIDDEN _sk_lerp_565_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022788.globl _sk_lerp_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040022789FUNCTION(_sk_lerp_565_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022790_sk_lerp_565_sse41:
22791 .byte 72,173 // lods %ds:(%rsi),%rax
22792 .byte 72,139,0 // mov (%rax),%rax
bungeman6f9f2592017-05-10 13:50:12 -040022793 .byte 102,68,15,56,51,20,120 // pmovzxwd (%rax,%rdi,2),%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040022794 .byte 102,68,15,111,5,10,47,0,0 // movdqa 0x2f0a(%rip),%xmm8 # 4c90 <_sk_callback_sse41+0x54e>
bungeman6f9f2592017-05-10 13:50:12 -040022795 .byte 102,69,15,219,194 // pand %xmm10,%xmm8
Mike Klein308e6242017-04-27 13:56:33 -040022796 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022797 .byte 68,15,89,5,9,47,0,0 // mulps 0x2f09(%rip),%xmm8 # 4ca0 <_sk_callback_sse41+0x55e>
22798 .byte 102,68,15,111,13,16,47,0,0 // movdqa 0x2f10(%rip),%xmm9 # 4cb0 <_sk_callback_sse41+0x56e>
bungeman6f9f2592017-05-10 13:50:12 -040022799 .byte 102,69,15,219,202 // pand %xmm10,%xmm9
22800 .byte 69,15,91,201 // cvtdq2ps %xmm9,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040022801 .byte 68,15,89,13,15,47,0,0 // mulps 0x2f0f(%rip),%xmm9 # 4cc0 <_sk_callback_sse41+0x57e>
22802 .byte 102,68,15,219,21,22,47,0,0 // pand 0x2f16(%rip),%xmm10 # 4cd0 <_sk_callback_sse41+0x58e>
bungeman6f9f2592017-05-10 13:50:12 -040022803 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040022804 .byte 68,15,89,21,26,47,0,0 // mulps 0x2f1a(%rip),%xmm10 # 4ce0 <_sk_callback_sse41+0x59e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040022805 .byte 15,92,196 // subps %xmm4,%xmm0
bungeman6f9f2592017-05-10 13:50:12 -040022806 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040022807 .byte 15,88,196 // addps %xmm4,%xmm0
22808 .byte 15,92,205 // subps %xmm5,%xmm1
bungeman6f9f2592017-05-10 13:50:12 -040022809 .byte 65,15,89,201 // mulps %xmm9,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040022810 .byte 15,88,205 // addps %xmm5,%xmm1
22811 .byte 15,92,214 // subps %xmm6,%xmm2
bungeman6f9f2592017-05-10 13:50:12 -040022812 .byte 65,15,89,210 // mulps %xmm10,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022813 .byte 15,88,214 // addps %xmm6,%xmm2
bungeman6f9f2592017-05-10 13:50:12 -040022814 .byte 15,92,223 // subps %xmm7,%xmm3
22815 .byte 68,15,89,195 // mulps %xmm3,%xmm8
22816 .byte 68,15,88,199 // addps %xmm7,%xmm8
22817 .byte 68,15,89,203 // mulps %xmm3,%xmm9
22818 .byte 68,15,88,207 // addps %xmm7,%xmm9
22819 .byte 65,15,89,218 // mulps %xmm10,%xmm3
22820 .byte 15,88,223 // addps %xmm7,%xmm3
22821 .byte 68,15,95,203 // maxps %xmm3,%xmm9
22822 .byte 69,15,95,193 // maxps %xmm9,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040022823 .byte 72,173 // lods %ds:(%rsi),%rax
bungeman6f9f2592017-05-10 13:50:12 -040022824 .byte 65,15,40,216 // movaps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040022825 .byte 255,224 // jmpq *%rax
22826
Mike Klein7c4af542017-03-29 18:21:14 -040022827HIDDEN _sk_load_tables_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040022828.globl _sk_load_tables_sse41
Mike Klein86714282017-04-13 17:37:38 -040022829FUNCTION(_sk_load_tables_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022830_sk_load_tables_sse41:
22831 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040022832 .byte 76,139,0 // mov (%rax),%r8
22833 .byte 76,139,72,8 // mov 0x8(%rax),%r9
22834 .byte 243,69,15,111,4,184 // movdqu (%r8,%rdi,4),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040022835 .byte 102,15,111,5,203,46,0,0 // movdqa 0x2ecb(%rip),%xmm0 # 4cf0 <_sk_callback_sse41+0x5ae>
Mike Kleind7e06ae2017-03-29 16:33:06 -040022836 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040022837 .byte 102,73,15,58,22,192,1 // pextrq $0x1,%xmm0,%r8
22838 .byte 102,72,15,126,193 // movq %xmm0,%rcx
22839 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleind7e06ae2017-03-29 16:33:06 -040022840 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040022841 .byte 69,15,182,216 // movzbl %r8b,%r11d
22842 .byte 73,193,232,30 // shr $0x1e,%r8
22843 .byte 243,67,15,16,4,145 // movss (%r9,%r10,4),%xmm0
22844 .byte 102,65,15,58,33,4,9,16 // insertps $0x10,(%r9,%rcx,1),%xmm0
22845 .byte 102,67,15,58,33,4,153,32 // insertps $0x20,(%r9,%r11,4),%xmm0
22846 .byte 243,67,15,16,12,1 // movss (%r9,%r8,1),%xmm1
22847 .byte 102,15,58,33,193,48 // insertps $0x30,%xmm1,%xmm0
22848 .byte 76,139,64,16 // mov 0x10(%rax),%r8
22849 .byte 102,65,15,111,200 // movdqa %xmm8,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040022850 .byte 102,15,56,0,13,134,46,0,0 // pshufb 0x2e86(%rip),%xmm1 # 4d00 <_sk_callback_sse41+0x5be>
Mike Klein0aa742f2017-04-27 13:36:57 -040022851 .byte 102,73,15,58,22,201,1 // pextrq $0x1,%xmm1,%r9
22852 .byte 102,72,15,126,201 // movq %xmm1,%rcx
22853 .byte 68,15,182,209 // movzbl %cl,%r10d
22854 .byte 72,193,233,30 // shr $0x1e,%rcx
22855 .byte 69,15,182,217 // movzbl %r9b,%r11d
22856 .byte 73,193,233,30 // shr $0x1e,%r9
22857 .byte 243,67,15,16,12,144 // movss (%r8,%r10,4),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040022858 .byte 102,65,15,58,33,12,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040022859 .byte 243,67,15,16,20,152 // movss (%r8,%r11,4),%xmm2
22860 .byte 102,15,58,33,202,32 // insertps $0x20,%xmm2,%xmm1
22861 .byte 243,67,15,16,20,8 // movss (%r8,%r9,1),%xmm2
22862 .byte 102,15,58,33,202,48 // insertps $0x30,%xmm2,%xmm1
22863 .byte 76,139,64,24 // mov 0x18(%rax),%r8
22864 .byte 102,65,15,111,208 // movdqa %xmm8,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040022865 .byte 102,15,56,0,21,66,46,0,0 // pshufb 0x2e42(%rip),%xmm2 # 4d10 <_sk_callback_sse41+0x5ce>
Mike Kleind7e06ae2017-03-29 16:33:06 -040022866 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
Mike Kleind7e06ae2017-03-29 16:33:06 -040022867 .byte 102,72,15,126,208 // movq %xmm2,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040022868 .byte 68,15,182,200 // movzbl %al,%r9d
Mike Kleind7e06ae2017-03-29 16:33:06 -040022869 .byte 72,193,232,30 // shr $0x1e,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040022870 .byte 68,15,182,209 // movzbl %cl,%r10d
22871 .byte 72,193,233,30 // shr $0x1e,%rcx
22872 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
22873 .byte 102,65,15,58,33,20,0,16 // insertps $0x10,(%r8,%rax,1),%xmm2
22874 .byte 243,67,15,16,28,144 // movss (%r8,%r10,4),%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040022875 .byte 102,15,58,33,211,32 // insertps $0x20,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040022876 .byte 243,65,15,16,28,8 // movss (%r8,%rcx,1),%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040022877 .byte 102,15,58,33,211,48 // insertps $0x30,%xmm3,%xmm2
22878 .byte 102,65,15,114,208,24 // psrld $0x18,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040022879 .byte 65,15,91,216 // cvtdq2ps %xmm8,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040022880 .byte 15,89,29,255,45,0,0 // mulps 0x2dff(%rip),%xmm3 # 4d20 <_sk_callback_sse41+0x5de>
Mike Kleind7e06ae2017-03-29 16:33:06 -040022881 .byte 72,173 // lods %ds:(%rsi),%rax
22882 .byte 255,224 // jmpq *%rax
22883
Mike Kleina3735cd2017-04-17 13:19:05 -040022884HIDDEN _sk_load_tables_u16_be_sse41
22885.globl _sk_load_tables_u16_be_sse41
22886FUNCTION(_sk_load_tables_u16_be_sse41)
22887_sk_load_tables_u16_be_sse41:
22888 .byte 72,173 // lods %ds:(%rsi),%rax
22889 .byte 72,139,8 // mov (%rax),%rcx
22890 .byte 76,139,64,8 // mov 0x8(%rax),%r8
22891 .byte 243,15,111,4,249 // movdqu (%rcx,%rdi,8),%xmm0
22892 .byte 243,15,111,76,249,16 // movdqu 0x10(%rcx,%rdi,8),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040022893 .byte 102,68,15,111,200 // movdqa %xmm0,%xmm9
22894 .byte 102,68,15,97,201 // punpcklwd %xmm1,%xmm9
Mike Kleina3735cd2017-04-17 13:19:05 -040022895 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040022896 .byte 102,65,15,111,201 // movdqa %xmm9,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040022897 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040022898 .byte 102,68,15,105,200 // punpckhwd %xmm0,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040022899 .byte 102,68,15,111,5,210,45,0,0 // movdqa 0x2dd2(%rip),%xmm8 # 4d30 <_sk_callback_sse41+0x5ee>
Mike Klein0aa742f2017-04-27 13:36:57 -040022900 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040022901 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040022902 .byte 102,15,56,51,192 // pmovzxwd %xmm0,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040022903 .byte 102,73,15,58,22,193,1 // pextrq $0x1,%xmm0,%r9
22904 .byte 102,72,15,126,193 // movq %xmm0,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040022905 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040022906 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040022907 .byte 69,15,182,217 // movzbl %r9b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040022908 .byte 73,193,233,30 // shr $0x1e,%r9
22909 .byte 243,67,15,16,4,144 // movss (%r8,%r10,4),%xmm0
22910 .byte 102,65,15,58,33,4,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040022911 .byte 243,67,15,16,20,152 // movss (%r8,%r11,4),%xmm2
22912 .byte 102,15,58,33,194,32 // insertps $0x20,%xmm2,%xmm0
22913 .byte 243,67,15,16,20,8 // movss (%r8,%r9,1),%xmm2
22914 .byte 102,15,58,33,194,48 // insertps $0x30,%xmm2,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040022915 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Klein8ca33562017-05-23 08:07:43 -040022916 .byte 102,15,56,0,13,133,45,0,0 // pshufb 0x2d85(%rip),%xmm1 # 4d40 <_sk_callback_sse41+0x5fe>
Mike Kleina3735cd2017-04-17 13:19:05 -040022917 .byte 102,15,56,51,201 // pmovzxwd %xmm1,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040022918 .byte 102,73,15,58,22,201,1 // pextrq $0x1,%xmm1,%r9
22919 .byte 102,72,15,126,201 // movq %xmm1,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040022920 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040022921 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040022922 .byte 69,15,182,217 // movzbl %r9b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040022923 .byte 73,193,233,30 // shr $0x1e,%r9
22924 .byte 243,67,15,16,12,144 // movss (%r8,%r10,4),%xmm1
22925 .byte 102,65,15,58,33,12,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm1
22926 .byte 243,67,15,16,20,152 // movss (%r8,%r11,4),%xmm2
22927 .byte 102,15,58,33,202,32 // insertps $0x20,%xmm2,%xmm1
22928 .byte 243,67,15,16,20,8 // movss (%r8,%r9,1),%xmm2
22929 .byte 102,15,58,33,202,48 // insertps $0x30,%xmm2,%xmm1
22930 .byte 76,139,64,24 // mov 0x18(%rax),%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040022931 .byte 102,69,15,219,193 // pand %xmm9,%xmm8
22932 .byte 102,65,15,56,51,208 // pmovzxwd %xmm8,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040022933 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
22934 .byte 102,72,15,126,208 // movq %xmm2,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040022935 .byte 68,15,182,200 // movzbl %al,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040022936 .byte 72,193,232,30 // shr $0x1e,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040022937 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040022938 .byte 72,193,233,30 // shr $0x1e,%rcx
22939 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
22940 .byte 102,65,15,58,33,20,0,16 // insertps $0x10,(%r8,%rax,1),%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040022941 .byte 243,67,15,16,28,144 // movss (%r8,%r10,4),%xmm3
22942 .byte 102,15,58,33,211,32 // insertps $0x20,%xmm3,%xmm2
22943 .byte 243,65,15,16,28,8 // movss (%r8,%rcx,1),%xmm3
22944 .byte 102,15,58,33,211,48 // insertps $0x30,%xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040022945 .byte 102,65,15,112,217,78 // pshufd $0x4e,%xmm9,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040022946 .byte 102,68,15,111,195 // movdqa %xmm3,%xmm8
22947 .byte 102,65,15,113,240,8 // psllw $0x8,%xmm8
Mike Kleina3735cd2017-04-17 13:19:05 -040022948 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040022949 .byte 102,65,15,235,216 // por %xmm8,%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040022950 .byte 102,15,56,51,219 // pmovzxwd %xmm3,%xmm3
22951 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040022952 .byte 15,89,29,211,44,0,0 // mulps 0x2cd3(%rip),%xmm3 # 4d50 <_sk_callback_sse41+0x60e>
Mike Kleina3735cd2017-04-17 13:19:05 -040022953 .byte 72,173 // lods %ds:(%rsi),%rax
22954 .byte 255,224 // jmpq *%rax
22955
22956HIDDEN _sk_load_tables_rgb_u16_be_sse41
22957.globl _sk_load_tables_rgb_u16_be_sse41
22958FUNCTION(_sk_load_tables_rgb_u16_be_sse41)
22959_sk_load_tables_rgb_u16_be_sse41:
22960 .byte 72,173 // lods %ds:(%rsi),%rax
22961 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
22962 .byte 72,139,8 // mov (%rax),%rcx
22963 .byte 76,139,64,8 // mov 0x8(%rax),%r8
22964 .byte 243,66,15,111,20,73 // movdqu (%rcx,%r9,2),%xmm2
22965 .byte 243,66,15,111,68,73,8 // movdqu 0x8(%rcx,%r9,2),%xmm0
22966 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040022967 .byte 102,68,15,111,202 // movdqa %xmm2,%xmm9
22968 .byte 102,65,15,115,217,6 // psrldq $0x6,%xmm9
Mike Kleina3735cd2017-04-17 13:19:05 -040022969 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
22970 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040022971 .byte 102,68,15,97,200 // punpcklwd %xmm0,%xmm9
22972 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
22973 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040022974 .byte 102,68,15,111,5,149,44,0,0 // movdqa 0x2c95(%rip),%xmm8 # 4d60 <_sk_callback_sse41+0x61e>
Mike Klein0aa742f2017-04-27 13:36:57 -040022975 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
22976 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040022977 .byte 102,15,56,51,192 // pmovzxwd %xmm0,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040022978 .byte 102,73,15,58,22,193,1 // pextrq $0x1,%xmm0,%r9
22979 .byte 102,72,15,126,193 // movq %xmm0,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040022980 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040022981 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040022982 .byte 69,15,182,217 // movzbl %r9b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040022983 .byte 73,193,233,30 // shr $0x1e,%r9
22984 .byte 243,67,15,16,4,144 // movss (%r8,%r10,4),%xmm0
22985 .byte 102,65,15,58,33,4,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040022986 .byte 243,67,15,16,28,152 // movss (%r8,%r11,4),%xmm3
22987 .byte 102,15,58,33,195,32 // insertps $0x20,%xmm3,%xmm0
22988 .byte 243,67,15,16,28,8 // movss (%r8,%r9,1),%xmm3
22989 .byte 102,15,58,33,195,48 // insertps $0x30,%xmm3,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040022990 .byte 76,139,64,16 // mov 0x10(%rax),%r8
Mike Klein8ca33562017-05-23 08:07:43 -040022991 .byte 102,15,56,0,13,72,44,0,0 // pshufb 0x2c48(%rip),%xmm1 # 4d70 <_sk_callback_sse41+0x62e>
Mike Klein0aa742f2017-04-27 13:36:57 -040022992 .byte 102,15,56,51,201 // pmovzxwd %xmm1,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040022993 .byte 102,73,15,58,22,201,1 // pextrq $0x1,%xmm1,%r9
22994 .byte 102,72,15,126,201 // movq %xmm1,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040022995 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040022996 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040022997 .byte 69,15,182,217 // movzbl %r9b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040022998 .byte 73,193,233,30 // shr $0x1e,%r9
22999 .byte 243,67,15,16,12,144 // movss (%r8,%r10,4),%xmm1
23000 .byte 102,65,15,58,33,12,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm1
23001 .byte 243,67,15,16,28,152 // movss (%r8,%r11,4),%xmm3
23002 .byte 102,15,58,33,203,32 // insertps $0x20,%xmm3,%xmm1
23003 .byte 243,67,15,16,28,8 // movss (%r8,%r9,1),%xmm3
23004 .byte 102,15,58,33,203,48 // insertps $0x30,%xmm3,%xmm1
23005 .byte 76,139,64,24 // mov 0x18(%rax),%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040023006 .byte 102,65,15,105,209 // punpckhwd %xmm9,%xmm2
23007 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040023008 .byte 102,15,56,51,210 // pmovzxwd %xmm2,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040023009 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
23010 .byte 102,72,15,126,208 // movq %xmm2,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040023011 .byte 68,15,182,200 // movzbl %al,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040023012 .byte 72,193,232,30 // shr $0x1e,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040023013 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040023014 .byte 72,193,233,30 // shr $0x1e,%rcx
23015 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
23016 .byte 102,65,15,58,33,20,0,16 // insertps $0x10,(%r8,%rax,1),%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040023017 .byte 243,67,15,16,28,144 // movss (%r8,%r10,4),%xmm3
23018 .byte 102,15,58,33,211,32 // insertps $0x20,%xmm3,%xmm2
23019 .byte 243,65,15,16,28,8 // movss (%r8,%rcx,1),%xmm3
23020 .byte 102,15,58,33,211,48 // insertps $0x30,%xmm3,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040023021 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040023022 .byte 15,40,29,179,43,0,0 // movaps 0x2bb3(%rip),%xmm3 # 4d80 <_sk_callback_sse41+0x63e>
Mike Kleina3735cd2017-04-17 13:19:05 -040023023 .byte 255,224 // jmpq *%rax
23024
Mike Klein40de6da2017-04-07 13:09:29 -040023025HIDDEN _sk_byte_tables_sse41
23026.globl _sk_byte_tables_sse41
Mike Klein86714282017-04-13 17:37:38 -040023027FUNCTION(_sk_byte_tables_sse41)
Mike Klein40de6da2017-04-07 13:09:29 -040023028_sk_byte_tables_sse41:
23029 .byte 65,86 // push %r14
23030 .byte 83 // push %rbx
23031 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040023032 .byte 68,15,40,5,180,43,0,0 // movaps 0x2bb4(%rip),%xmm8 # 4d90 <_sk_callback_sse41+0x64e>
Mike Klein40de6da2017-04-07 13:09:29 -040023033 .byte 65,15,89,192 // mulps %xmm8,%xmm0
23034 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
23035 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
23036 .byte 65,137,200 // mov %ecx,%r8d
23037 .byte 72,193,233,32 // shr $0x20,%rcx
23038 .byte 102,73,15,126,193 // movq %xmm0,%r9
23039 .byte 69,137,202 // mov %r9d,%r10d
Mike Kleinfe560a82017-05-01 12:56:35 -040023040 .byte 73,193,233,32 // shr $0x20,%r9
23041 .byte 76,139,24 // mov (%rax),%r11
23042 .byte 76,139,112,8 // mov 0x8(%rax),%r14
23043 .byte 102,67,15,58,32,4,19,0 // pinsrb $0x0,(%r11,%r10,1),%xmm0
23044 .byte 102,67,15,58,32,4,11,1 // pinsrb $0x1,(%r11,%r9,1),%xmm0
23045 .byte 67,15,182,28,3 // movzbl (%r11,%r8,1),%ebx
Mike Klein40de6da2017-04-07 13:09:29 -040023046 .byte 102,15,58,32,195,2 // pinsrb $0x2,%ebx,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023047 .byte 65,15,182,12,11 // movzbl (%r11,%rcx,1),%ecx
Mike Klein40de6da2017-04-07 13:09:29 -040023048 .byte 102,15,58,32,193,3 // pinsrb $0x3,%ecx,%xmm0
23049 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
23050 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023051 .byte 68,15,40,13,101,43,0,0 // movaps 0x2b65(%rip),%xmm9 # 4da0 <_sk_callback_sse41+0x65e>
Mike Klein40de6da2017-04-07 13:09:29 -040023052 .byte 65,15,89,193 // mulps %xmm9,%xmm0
23053 .byte 65,15,89,200 // mulps %xmm8,%xmm1
23054 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
23055 .byte 102,72,15,58,22,201,1 // pextrq $0x1,%xmm1,%rcx
23056 .byte 65,137,200 // mov %ecx,%r8d
23057 .byte 72,193,233,32 // shr $0x20,%rcx
23058 .byte 102,72,15,126,203 // movq %xmm1,%rbx
Mike Kleinfe560a82017-05-01 12:56:35 -040023059 .byte 65,137,217 // mov %ebx,%r9d
Mike Klein40de6da2017-04-07 13:09:29 -040023060 .byte 72,193,235,32 // shr $0x20,%rbx
Mike Kleinfe560a82017-05-01 12:56:35 -040023061 .byte 102,67,15,58,32,12,14,0 // pinsrb $0x0,(%r14,%r9,1),%xmm1
23062 .byte 102,65,15,58,32,12,30,1 // pinsrb $0x1,(%r14,%rbx,1),%xmm1
23063 .byte 67,15,182,28,6 // movzbl (%r14,%r8,1),%ebx
Mike Klein40de6da2017-04-07 13:09:29 -040023064 .byte 102,15,58,32,203,2 // pinsrb $0x2,%ebx,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040023065 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
Mike Klein40de6da2017-04-07 13:09:29 -040023066 .byte 102,15,58,32,201,3 // pinsrb $0x3,%ecx,%xmm1
23067 .byte 102,15,56,49,201 // pmovzxbd %xmm1,%xmm1
23068 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
23069 .byte 65,15,89,201 // mulps %xmm9,%xmm1
23070 .byte 76,139,72,16 // mov 0x10(%rax),%r9
23071 .byte 65,15,89,208 // mulps %xmm8,%xmm2
23072 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
23073 .byte 102,72,15,58,22,211,1 // pextrq $0x1,%xmm2,%rbx
23074 .byte 65,137,216 // mov %ebx,%r8d
23075 .byte 72,193,235,32 // shr $0x20,%rbx
23076 .byte 102,72,15,126,209 // movq %xmm2,%rcx
23077 .byte 65,137,202 // mov %ecx,%r10d
23078 .byte 72,193,233,32 // shr $0x20,%rcx
23079 .byte 102,67,15,58,32,20,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm2
23080 .byte 102,65,15,58,32,20,9,1 // pinsrb $0x1,(%r9,%rcx,1),%xmm2
23081 .byte 67,15,182,12,1 // movzbl (%r9,%r8,1),%ecx
23082 .byte 102,15,58,32,209,2 // pinsrb $0x2,%ecx,%xmm2
23083 .byte 65,15,182,12,25 // movzbl (%r9,%rbx,1),%ecx
23084 .byte 102,15,58,32,209,3 // pinsrb $0x3,%ecx,%xmm2
23085 .byte 102,15,56,49,210 // pmovzxbd %xmm2,%xmm2
23086 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
23087 .byte 65,15,89,209 // mulps %xmm9,%xmm2
23088 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040023089 .byte 65,15,89,216 // mulps %xmm8,%xmm3
23090 .byte 102,15,91,219 // cvtps2dq %xmm3,%xmm3
Mike Klein40de6da2017-04-07 13:09:29 -040023091 .byte 102,72,15,58,22,217,1 // pextrq $0x1,%xmm3,%rcx
23092 .byte 65,137,200 // mov %ecx,%r8d
23093 .byte 72,193,233,32 // shr $0x20,%rcx
23094 .byte 102,72,15,126,219 // movq %xmm3,%rbx
23095 .byte 65,137,217 // mov %ebx,%r9d
23096 .byte 72,193,235,32 // shr $0x20,%rbx
23097 .byte 102,66,15,58,32,28,8,0 // pinsrb $0x0,(%rax,%r9,1),%xmm3
23098 .byte 102,15,58,32,28,24,1 // pinsrb $0x1,(%rax,%rbx,1),%xmm3
23099 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
23100 .byte 102,15,58,32,219,2 // pinsrb $0x2,%ebx,%xmm3
23101 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
23102 .byte 102,15,58,32,216,3 // pinsrb $0x3,%eax,%xmm3
23103 .byte 102,15,56,49,219 // pmovzxbd %xmm3,%xmm3
23104 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
23105 .byte 65,15,89,217 // mulps %xmm9,%xmm3
23106 .byte 72,173 // lods %ds:(%rsi),%rax
23107 .byte 91 // pop %rbx
23108 .byte 65,94 // pop %r14
23109 .byte 255,224 // jmpq *%rax
23110
23111HIDDEN _sk_byte_tables_rgb_sse41
23112.globl _sk_byte_tables_rgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040023113FUNCTION(_sk_byte_tables_rgb_sse41)
Mike Klein40de6da2017-04-07 13:09:29 -040023114_sk_byte_tables_rgb_sse41:
23115 .byte 65,86 // push %r14
23116 .byte 83 // push %rbx
23117 .byte 72,173 // lods %ds:(%rsi),%rax
23118 .byte 139,72,24 // mov 0x18(%rax),%ecx
23119 .byte 255,201 // dec %ecx
23120 .byte 102,68,15,110,193 // movd %ecx,%xmm8
23121 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
23122 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
23123 .byte 65,15,89,192 // mulps %xmm8,%xmm0
23124 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
23125 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
23126 .byte 65,137,200 // mov %ecx,%r8d
23127 .byte 72,193,233,32 // shr $0x20,%rcx
23128 .byte 102,73,15,126,193 // movq %xmm0,%r9
23129 .byte 69,137,202 // mov %r9d,%r10d
23130 .byte 77,137,203 // mov %r9,%r11
23131 .byte 73,193,235,32 // shr $0x20,%r11
23132 .byte 76,139,48 // mov (%rax),%r14
23133 .byte 76,139,72,8 // mov 0x8(%rax),%r9
23134 .byte 102,67,15,58,32,4,22,0 // pinsrb $0x0,(%r14,%r10,1),%xmm0
23135 .byte 102,67,15,58,32,4,30,1 // pinsrb $0x1,(%r14,%r11,1),%xmm0
23136 .byte 67,15,182,28,6 // movzbl (%r14,%r8,1),%ebx
23137 .byte 102,15,58,32,195,2 // pinsrb $0x2,%ebx,%xmm0
23138 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
23139 .byte 102,15,58,32,193,3 // pinsrb $0x3,%ecx,%xmm0
23140 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
23141 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023142 .byte 68,15,40,13,237,41,0,0 // movaps 0x29ed(%rip),%xmm9 # 4db0 <_sk_callback_sse41+0x66e>
Mike Klein40de6da2017-04-07 13:09:29 -040023143 .byte 65,15,89,193 // mulps %xmm9,%xmm0
23144 .byte 65,15,89,200 // mulps %xmm8,%xmm1
23145 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
23146 .byte 102,72,15,58,22,201,1 // pextrq $0x1,%xmm1,%rcx
23147 .byte 65,137,200 // mov %ecx,%r8d
23148 .byte 72,193,233,32 // shr $0x20,%rcx
23149 .byte 102,72,15,126,203 // movq %xmm1,%rbx
23150 .byte 65,137,218 // mov %ebx,%r10d
23151 .byte 72,193,235,32 // shr $0x20,%rbx
23152 .byte 102,67,15,58,32,12,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm1
23153 .byte 102,65,15,58,32,12,25,1 // pinsrb $0x1,(%r9,%rbx,1),%xmm1
23154 .byte 67,15,182,28,1 // movzbl (%r9,%r8,1),%ebx
23155 .byte 102,15,58,32,203,2 // pinsrb $0x2,%ebx,%xmm1
23156 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
23157 .byte 102,15,58,32,201,3 // pinsrb $0x3,%ecx,%xmm1
23158 .byte 102,15,56,49,201 // pmovzxbd %xmm1,%xmm1
23159 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
23160 .byte 65,15,89,201 // mulps %xmm9,%xmm1
23161 .byte 72,139,64,16 // mov 0x10(%rax),%rax
23162 .byte 65,15,89,208 // mulps %xmm8,%xmm2
23163 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
23164 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
23165 .byte 65,137,200 // mov %ecx,%r8d
23166 .byte 72,193,233,32 // shr $0x20,%rcx
23167 .byte 102,72,15,126,211 // movq %xmm2,%rbx
23168 .byte 65,137,217 // mov %ebx,%r9d
23169 .byte 72,193,235,32 // shr $0x20,%rbx
23170 .byte 102,66,15,58,32,20,8,0 // pinsrb $0x0,(%rax,%r9,1),%xmm2
23171 .byte 102,15,58,32,20,24,1 // pinsrb $0x1,(%rax,%rbx,1),%xmm2
23172 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
23173 .byte 102,15,58,32,211,2 // pinsrb $0x2,%ebx,%xmm2
23174 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
23175 .byte 102,15,58,32,208,3 // pinsrb $0x3,%eax,%xmm2
23176 .byte 102,15,56,49,210 // pmovzxbd %xmm2,%xmm2
23177 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
23178 .byte 65,15,89,209 // mulps %xmm9,%xmm2
23179 .byte 72,173 // lods %ds:(%rsi),%rax
23180 .byte 91 // pop %rbx
23181 .byte 65,94 // pop %r14
23182 .byte 255,224 // jmpq *%rax
23183
Mike Kleinc7d9c0b2017-04-17 14:43:59 -040023184HIDDEN _sk_table_r_sse41
23185.globl _sk_table_r_sse41
23186FUNCTION(_sk_table_r_sse41)
23187_sk_table_r_sse41:
23188 .byte 72,173 // lods %ds:(%rsi),%rax
23189 .byte 76,139,8 // mov (%rax),%r9
23190 .byte 139,64,8 // mov 0x8(%rax),%eax
23191 .byte 255,200 // dec %eax
23192 .byte 102,68,15,110,192 // movd %eax,%xmm8
23193 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
23194 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
23195 .byte 68,15,89,192 // mulps %xmm0,%xmm8
23196 .byte 102,65,15,91,192 // cvtps2dq %xmm8,%xmm0
23197 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
23198 .byte 65,137,192 // mov %eax,%r8d
23199 .byte 72,193,232,32 // shr $0x20,%rax
23200 .byte 102,72,15,126,193 // movq %xmm0,%rcx
23201 .byte 65,137,202 // mov %ecx,%r10d
23202 .byte 72,193,233,32 // shr $0x20,%rcx
23203 .byte 243,67,15,16,4,145 // movss (%r9,%r10,4),%xmm0
23204 .byte 102,65,15,58,33,4,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm0
23205 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
23206 .byte 102,65,15,58,33,192,32 // insertps $0x20,%xmm8,%xmm0
23207 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
23208 .byte 102,65,15,58,33,192,48 // insertps $0x30,%xmm8,%xmm0
23209 .byte 72,173 // lods %ds:(%rsi),%rax
23210 .byte 255,224 // jmpq *%rax
23211
23212HIDDEN _sk_table_g_sse41
23213.globl _sk_table_g_sse41
23214FUNCTION(_sk_table_g_sse41)
23215_sk_table_g_sse41:
23216 .byte 72,173 // lods %ds:(%rsi),%rax
23217 .byte 76,139,8 // mov (%rax),%r9
23218 .byte 139,64,8 // mov 0x8(%rax),%eax
23219 .byte 255,200 // dec %eax
23220 .byte 102,68,15,110,192 // movd %eax,%xmm8
23221 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
23222 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
23223 .byte 68,15,89,193 // mulps %xmm1,%xmm8
23224 .byte 102,65,15,91,200 // cvtps2dq %xmm8,%xmm1
23225 .byte 102,72,15,58,22,200,1 // pextrq $0x1,%xmm1,%rax
23226 .byte 65,137,192 // mov %eax,%r8d
23227 .byte 72,193,232,32 // shr $0x20,%rax
23228 .byte 102,72,15,126,201 // movq %xmm1,%rcx
23229 .byte 65,137,202 // mov %ecx,%r10d
23230 .byte 72,193,233,32 // shr $0x20,%rcx
23231 .byte 243,67,15,16,12,145 // movss (%r9,%r10,4),%xmm1
23232 .byte 102,65,15,58,33,12,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm1
23233 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
23234 .byte 102,65,15,58,33,200,32 // insertps $0x20,%xmm8,%xmm1
23235 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
23236 .byte 102,65,15,58,33,200,48 // insertps $0x30,%xmm8,%xmm1
23237 .byte 72,173 // lods %ds:(%rsi),%rax
23238 .byte 255,224 // jmpq *%rax
23239
23240HIDDEN _sk_table_b_sse41
23241.globl _sk_table_b_sse41
23242FUNCTION(_sk_table_b_sse41)
23243_sk_table_b_sse41:
23244 .byte 72,173 // lods %ds:(%rsi),%rax
23245 .byte 76,139,8 // mov (%rax),%r9
23246 .byte 139,64,8 // mov 0x8(%rax),%eax
23247 .byte 255,200 // dec %eax
23248 .byte 102,68,15,110,192 // movd %eax,%xmm8
23249 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
23250 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
23251 .byte 68,15,89,194 // mulps %xmm2,%xmm8
23252 .byte 102,65,15,91,208 // cvtps2dq %xmm8,%xmm2
23253 .byte 102,72,15,58,22,208,1 // pextrq $0x1,%xmm2,%rax
23254 .byte 65,137,192 // mov %eax,%r8d
23255 .byte 72,193,232,32 // shr $0x20,%rax
23256 .byte 102,72,15,126,209 // movq %xmm2,%rcx
23257 .byte 65,137,202 // mov %ecx,%r10d
23258 .byte 72,193,233,32 // shr $0x20,%rcx
23259 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
23260 .byte 102,65,15,58,33,20,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm2
23261 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
23262 .byte 102,65,15,58,33,208,32 // insertps $0x20,%xmm8,%xmm2
23263 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
23264 .byte 102,65,15,58,33,208,48 // insertps $0x30,%xmm8,%xmm2
23265 .byte 72,173 // lods %ds:(%rsi),%rax
23266 .byte 255,224 // jmpq *%rax
23267
23268HIDDEN _sk_table_a_sse41
23269.globl _sk_table_a_sse41
23270FUNCTION(_sk_table_a_sse41)
23271_sk_table_a_sse41:
23272 .byte 72,173 // lods %ds:(%rsi),%rax
23273 .byte 76,139,8 // mov (%rax),%r9
23274 .byte 139,64,8 // mov 0x8(%rax),%eax
23275 .byte 255,200 // dec %eax
23276 .byte 102,68,15,110,192 // movd %eax,%xmm8
23277 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
23278 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
23279 .byte 68,15,89,195 // mulps %xmm3,%xmm8
23280 .byte 102,65,15,91,216 // cvtps2dq %xmm8,%xmm3
23281 .byte 102,72,15,58,22,216,1 // pextrq $0x1,%xmm3,%rax
23282 .byte 65,137,192 // mov %eax,%r8d
23283 .byte 72,193,232,32 // shr $0x20,%rax
23284 .byte 102,72,15,126,217 // movq %xmm3,%rcx
23285 .byte 65,137,202 // mov %ecx,%r10d
23286 .byte 72,193,233,32 // shr $0x20,%rcx
23287 .byte 243,67,15,16,28,145 // movss (%r9,%r10,4),%xmm3
23288 .byte 102,65,15,58,33,28,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm3
23289 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
23290 .byte 102,65,15,58,33,216,32 // insertps $0x20,%xmm8,%xmm3
23291 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
23292 .byte 102,65,15,58,33,216,48 // insertps $0x30,%xmm8,%xmm3
23293 .byte 72,173 // lods %ds:(%rsi),%rax
23294 .byte 255,224 // jmpq *%rax
23295
Mike Klein44375172017-04-17 19:32:05 -040023296HIDDEN _sk_parametric_r_sse41
23297.globl _sk_parametric_r_sse41
23298FUNCTION(_sk_parametric_r_sse41)
23299_sk_parametric_r_sse41:
23300 .byte 72,173 // lods %ds:(%rsi),%rax
23301 .byte 243,68,15,16,64,16 // movss 0x10(%rax),%xmm8
23302 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
23303 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
23304 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
23305 .byte 68,15,89,200 // mulps %xmm0,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040023306 .byte 243,68,15,16,80,4 // movss 0x4(%rax),%xmm10
23307 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
23308 .byte 68,15,89,208 // mulps %xmm0,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040023309 .byte 65,15,194,192,2 // cmpleps %xmm8,%xmm0
23310 .byte 243,68,15,16,64,24 // movss 0x18(%rax),%xmm8
23311 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
23312 .byte 69,15,88,200 // addps %xmm8,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040023313 .byte 243,68,15,16,24 // movss (%rax),%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040023314 .byte 243,68,15,16,64,8 // movss 0x8(%rax),%xmm8
23315 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040023316 .byte 69,15,88,208 // addps %xmm8,%xmm10
23317 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
23318 .byte 69,15,91,194 // cvtdq2ps %xmm10,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040023319 .byte 68,15,89,5,68,39,0,0 // mulps 0x2744(%rip),%xmm8 # 4dc0 <_sk_callback_sse41+0x67e>
23320 .byte 68,15,84,21,76,39,0,0 // andps 0x274c(%rip),%xmm10 # 4dd0 <_sk_callback_sse41+0x68e>
23321 .byte 68,15,86,21,84,39,0,0 // orps 0x2754(%rip),%xmm10 # 4de0 <_sk_callback_sse41+0x69e>
23322 .byte 68,15,88,5,92,39,0,0 // addps 0x275c(%rip),%xmm8 # 4df0 <_sk_callback_sse41+0x6ae>
23323 .byte 68,15,40,37,100,39,0,0 // movaps 0x2764(%rip),%xmm12 # 4e00 <_sk_callback_sse41+0x6be>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023324 .byte 69,15,89,226 // mulps %xmm10,%xmm12
23325 .byte 69,15,92,196 // subps %xmm12,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040023326 .byte 68,15,88,21,100,39,0,0 // addps 0x2764(%rip),%xmm10 # 4e10 <_sk_callback_sse41+0x6ce>
23327 .byte 68,15,40,37,108,39,0,0 // movaps 0x276c(%rip),%xmm12 # 4e20 <_sk_callback_sse41+0x6de>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023328 .byte 69,15,94,226 // divps %xmm10,%xmm12
23329 .byte 69,15,92,196 // subps %xmm12,%xmm8
23330 .byte 69,15,89,195 // mulps %xmm11,%xmm8
23331 .byte 102,69,15,58,8,208,1 // roundps $0x1,%xmm8,%xmm10
23332 .byte 69,15,40,216 // movaps %xmm8,%xmm11
23333 .byte 69,15,92,218 // subps %xmm10,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040023334 .byte 68,15,88,5,89,39,0,0 // addps 0x2759(%rip),%xmm8 # 4e30 <_sk_callback_sse41+0x6ee>
23335 .byte 68,15,40,21,97,39,0,0 // movaps 0x2761(%rip),%xmm10 # 4e40 <_sk_callback_sse41+0x6fe>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023336 .byte 69,15,89,211 // mulps %xmm11,%xmm10
23337 .byte 69,15,92,194 // subps %xmm10,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040023338 .byte 68,15,40,21,97,39,0,0 // movaps 0x2761(%rip),%xmm10 # 4e50 <_sk_callback_sse41+0x70e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023339 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040023340 .byte 68,15,40,29,101,39,0,0 // movaps 0x2765(%rip),%xmm11 # 4e60 <_sk_callback_sse41+0x71e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023341 .byte 69,15,94,218 // divps %xmm10,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040023342 .byte 69,15,88,216 // addps %xmm8,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040023343 .byte 68,15,89,29,101,39,0,0 // mulps 0x2765(%rip),%xmm11 # 4e70 <_sk_callback_sse41+0x72e>
Mike Klein44375172017-04-17 19:32:05 -040023344 .byte 102,69,15,91,211 // cvtps2dq %xmm11,%xmm10
23345 .byte 243,68,15,16,64,20 // movss 0x14(%rax),%xmm8
23346 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
23347 .byte 69,15,88,194 // addps %xmm10,%xmm8
23348 .byte 102,69,15,56,20,193 // blendvps %xmm0,%xmm9,%xmm8
23349 .byte 15,87,192 // xorps %xmm0,%xmm0
23350 .byte 68,15,95,192 // maxps %xmm0,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040023351 .byte 68,15,93,5,76,39,0,0 // minps 0x274c(%rip),%xmm8 # 4e80 <_sk_callback_sse41+0x73e>
Mike Klein44375172017-04-17 19:32:05 -040023352 .byte 72,173 // lods %ds:(%rsi),%rax
23353 .byte 65,15,40,192 // movaps %xmm8,%xmm0
23354 .byte 255,224 // jmpq *%rax
23355
23356HIDDEN _sk_parametric_g_sse41
23357.globl _sk_parametric_g_sse41
23358FUNCTION(_sk_parametric_g_sse41)
23359_sk_parametric_g_sse41:
23360 .byte 68,15,40,192 // movaps %xmm0,%xmm8
23361 .byte 72,173 // lods %ds:(%rsi),%rax
23362 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
23363 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
23364 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
23365 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
23366 .byte 68,15,89,201 // mulps %xmm1,%xmm9
23367 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
23368 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
23369 .byte 68,15,89,217 // mulps %xmm1,%xmm11
23370 .byte 15,40,193 // movaps %xmm1,%xmm0
23371 .byte 65,15,194,194,2 // cmpleps %xmm10,%xmm0
23372 .byte 243,15,16,72,24 // movss 0x18(%rax),%xmm1
23373 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
23374 .byte 68,15,88,201 // addps %xmm1,%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040023375 .byte 243,68,15,16,16 // movss (%rax),%xmm10
Mike Klein44375172017-04-17 19:32:05 -040023376 .byte 243,15,16,72,8 // movss 0x8(%rax),%xmm1
23377 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
23378 .byte 68,15,88,217 // addps %xmm1,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040023379 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
23380 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040023381 .byte 68,15,89,37,237,38,0,0 // mulps 0x26ed(%rip),%xmm12 # 4e90 <_sk_callback_sse41+0x74e>
23382 .byte 68,15,84,29,245,38,0,0 // andps 0x26f5(%rip),%xmm11 # 4ea0 <_sk_callback_sse41+0x75e>
23383 .byte 68,15,86,29,253,38,0,0 // orps 0x26fd(%rip),%xmm11 # 4eb0 <_sk_callback_sse41+0x76e>
23384 .byte 68,15,88,37,5,39,0,0 // addps 0x2705(%rip),%xmm12 # 4ec0 <_sk_callback_sse41+0x77e>
23385 .byte 15,40,13,14,39,0,0 // movaps 0x270e(%rip),%xmm1 # 4ed0 <_sk_callback_sse41+0x78e>
Mike Klein44375172017-04-17 19:32:05 -040023386 .byte 65,15,89,203 // mulps %xmm11,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -040023387 .byte 68,15,92,225 // subps %xmm1,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040023388 .byte 68,15,88,29,14,39,0,0 // addps 0x270e(%rip),%xmm11 # 4ee0 <_sk_callback_sse41+0x79e>
23389 .byte 15,40,13,23,39,0,0 // movaps 0x2717(%rip),%xmm1 # 4ef0 <_sk_callback_sse41+0x7ae>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023390 .byte 65,15,94,203 // divps %xmm11,%xmm1
23391 .byte 68,15,92,225 // subps %xmm1,%xmm12
23392 .byte 69,15,89,226 // mulps %xmm10,%xmm12
23393 .byte 102,69,15,58,8,212,1 // roundps $0x1,%xmm12,%xmm10
23394 .byte 69,15,40,220 // movaps %xmm12,%xmm11
23395 .byte 69,15,92,218 // subps %xmm10,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040023396 .byte 68,15,88,37,4,39,0,0 // addps 0x2704(%rip),%xmm12 # 4f00 <_sk_callback_sse41+0x7be>
23397 .byte 15,40,13,13,39,0,0 // movaps 0x270d(%rip),%xmm1 # 4f10 <_sk_callback_sse41+0x7ce>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023398 .byte 65,15,89,203 // mulps %xmm11,%xmm1
23399 .byte 68,15,92,225 // subps %xmm1,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040023400 .byte 68,15,40,21,13,39,0,0 // movaps 0x270d(%rip),%xmm10 # 4f20 <_sk_callback_sse41+0x7de>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023401 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040023402 .byte 15,40,13,18,39,0,0 // movaps 0x2712(%rip),%xmm1 # 4f30 <_sk_callback_sse41+0x7ee>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023403 .byte 65,15,94,202 // divps %xmm10,%xmm1
23404 .byte 65,15,88,204 // addps %xmm12,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040023405 .byte 15,89,13,19,39,0,0 // mulps 0x2713(%rip),%xmm1 # 4f40 <_sk_callback_sse41+0x7fe>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023406 .byte 102,68,15,91,209 // cvtps2dq %xmm1,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040023407 .byte 243,15,16,72,20 // movss 0x14(%rax),%xmm1
23408 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
23409 .byte 65,15,88,202 // addps %xmm10,%xmm1
23410 .byte 102,65,15,56,20,201 // blendvps %xmm0,%xmm9,%xmm1
23411 .byte 15,87,192 // xorps %xmm0,%xmm0
23412 .byte 15,95,200 // maxps %xmm0,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040023413 .byte 15,93,13,254,38,0,0 // minps 0x26fe(%rip),%xmm1 # 4f50 <_sk_callback_sse41+0x80e>
Mike Klein44375172017-04-17 19:32:05 -040023414 .byte 72,173 // lods %ds:(%rsi),%rax
23415 .byte 65,15,40,192 // movaps %xmm8,%xmm0
23416 .byte 255,224 // jmpq *%rax
23417
23418HIDDEN _sk_parametric_b_sse41
23419.globl _sk_parametric_b_sse41
23420FUNCTION(_sk_parametric_b_sse41)
23421_sk_parametric_b_sse41:
23422 .byte 68,15,40,192 // movaps %xmm0,%xmm8
23423 .byte 72,173 // lods %ds:(%rsi),%rax
23424 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
23425 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
23426 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
23427 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
23428 .byte 68,15,89,202 // mulps %xmm2,%xmm9
23429 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
23430 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
23431 .byte 68,15,89,218 // mulps %xmm2,%xmm11
23432 .byte 15,40,194 // movaps %xmm2,%xmm0
23433 .byte 65,15,194,194,2 // cmpleps %xmm10,%xmm0
23434 .byte 243,15,16,80,24 // movss 0x18(%rax),%xmm2
23435 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
23436 .byte 68,15,88,202 // addps %xmm2,%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040023437 .byte 243,68,15,16,16 // movss (%rax),%xmm10
Mike Klein44375172017-04-17 19:32:05 -040023438 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
23439 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
23440 .byte 68,15,88,218 // addps %xmm2,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040023441 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
23442 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040023443 .byte 68,15,89,37,159,38,0,0 // mulps 0x269f(%rip),%xmm12 # 4f60 <_sk_callback_sse41+0x81e>
23444 .byte 68,15,84,29,167,38,0,0 // andps 0x26a7(%rip),%xmm11 # 4f70 <_sk_callback_sse41+0x82e>
23445 .byte 68,15,86,29,175,38,0,0 // orps 0x26af(%rip),%xmm11 # 4f80 <_sk_callback_sse41+0x83e>
23446 .byte 68,15,88,37,183,38,0,0 // addps 0x26b7(%rip),%xmm12 # 4f90 <_sk_callback_sse41+0x84e>
23447 .byte 15,40,21,192,38,0,0 // movaps 0x26c0(%rip),%xmm2 # 4fa0 <_sk_callback_sse41+0x85e>
Mike Klein44375172017-04-17 19:32:05 -040023448 .byte 65,15,89,211 // mulps %xmm11,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -040023449 .byte 68,15,92,226 // subps %xmm2,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040023450 .byte 68,15,88,29,192,38,0,0 // addps 0x26c0(%rip),%xmm11 # 4fb0 <_sk_callback_sse41+0x86e>
23451 .byte 15,40,21,201,38,0,0 // movaps 0x26c9(%rip),%xmm2 # 4fc0 <_sk_callback_sse41+0x87e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023452 .byte 65,15,94,211 // divps %xmm11,%xmm2
23453 .byte 68,15,92,226 // subps %xmm2,%xmm12
23454 .byte 69,15,89,226 // mulps %xmm10,%xmm12
23455 .byte 102,69,15,58,8,212,1 // roundps $0x1,%xmm12,%xmm10
23456 .byte 69,15,40,220 // movaps %xmm12,%xmm11
23457 .byte 69,15,92,218 // subps %xmm10,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040023458 .byte 68,15,88,37,182,38,0,0 // addps 0x26b6(%rip),%xmm12 # 4fd0 <_sk_callback_sse41+0x88e>
23459 .byte 15,40,21,191,38,0,0 // movaps 0x26bf(%rip),%xmm2 # 4fe0 <_sk_callback_sse41+0x89e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023460 .byte 65,15,89,211 // mulps %xmm11,%xmm2
23461 .byte 68,15,92,226 // subps %xmm2,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040023462 .byte 68,15,40,21,191,38,0,0 // movaps 0x26bf(%rip),%xmm10 # 4ff0 <_sk_callback_sse41+0x8ae>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023463 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040023464 .byte 15,40,21,196,38,0,0 // movaps 0x26c4(%rip),%xmm2 # 5000 <_sk_callback_sse41+0x8be>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023465 .byte 65,15,94,210 // divps %xmm10,%xmm2
23466 .byte 65,15,88,212 // addps %xmm12,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023467 .byte 15,89,21,197,38,0,0 // mulps 0x26c5(%rip),%xmm2 # 5010 <_sk_callback_sse41+0x8ce>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023468 .byte 102,68,15,91,210 // cvtps2dq %xmm2,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040023469 .byte 243,15,16,80,20 // movss 0x14(%rax),%xmm2
23470 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
23471 .byte 65,15,88,210 // addps %xmm10,%xmm2
23472 .byte 102,65,15,56,20,209 // blendvps %xmm0,%xmm9,%xmm2
23473 .byte 15,87,192 // xorps %xmm0,%xmm0
23474 .byte 15,95,208 // maxps %xmm0,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023475 .byte 15,93,21,176,38,0,0 // minps 0x26b0(%rip),%xmm2 # 5020 <_sk_callback_sse41+0x8de>
Mike Klein44375172017-04-17 19:32:05 -040023476 .byte 72,173 // lods %ds:(%rsi),%rax
23477 .byte 65,15,40,192 // movaps %xmm8,%xmm0
23478 .byte 255,224 // jmpq *%rax
23479
23480HIDDEN _sk_parametric_a_sse41
23481.globl _sk_parametric_a_sse41
23482FUNCTION(_sk_parametric_a_sse41)
23483_sk_parametric_a_sse41:
23484 .byte 68,15,40,192 // movaps %xmm0,%xmm8
23485 .byte 72,173 // lods %ds:(%rsi),%rax
23486 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
23487 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
23488 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
23489 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
23490 .byte 68,15,89,203 // mulps %xmm3,%xmm9
23491 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
23492 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
23493 .byte 68,15,89,219 // mulps %xmm3,%xmm11
23494 .byte 15,40,195 // movaps %xmm3,%xmm0
23495 .byte 65,15,194,194,2 // cmpleps %xmm10,%xmm0
23496 .byte 243,15,16,88,24 // movss 0x18(%rax),%xmm3
23497 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
23498 .byte 68,15,88,203 // addps %xmm3,%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040023499 .byte 243,68,15,16,16 // movss (%rax),%xmm10
Mike Klein44375172017-04-17 19:32:05 -040023500 .byte 243,15,16,88,8 // movss 0x8(%rax),%xmm3
23501 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
23502 .byte 68,15,88,219 // addps %xmm3,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040023503 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
23504 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040023505 .byte 68,15,89,37,81,38,0,0 // mulps 0x2651(%rip),%xmm12 # 5030 <_sk_callback_sse41+0x8ee>
23506 .byte 68,15,84,29,89,38,0,0 // andps 0x2659(%rip),%xmm11 # 5040 <_sk_callback_sse41+0x8fe>
23507 .byte 68,15,86,29,97,38,0,0 // orps 0x2661(%rip),%xmm11 # 5050 <_sk_callback_sse41+0x90e>
23508 .byte 68,15,88,37,105,38,0,0 // addps 0x2669(%rip),%xmm12 # 5060 <_sk_callback_sse41+0x91e>
23509 .byte 15,40,29,114,38,0,0 // movaps 0x2672(%rip),%xmm3 # 5070 <_sk_callback_sse41+0x92e>
Mike Klein44375172017-04-17 19:32:05 -040023510 .byte 65,15,89,219 // mulps %xmm11,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040023511 .byte 68,15,92,227 // subps %xmm3,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040023512 .byte 68,15,88,29,114,38,0,0 // addps 0x2672(%rip),%xmm11 # 5080 <_sk_callback_sse41+0x93e>
23513 .byte 15,40,29,123,38,0,0 // movaps 0x267b(%rip),%xmm3 # 5090 <_sk_callback_sse41+0x94e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023514 .byte 65,15,94,219 // divps %xmm11,%xmm3
23515 .byte 68,15,92,227 // subps %xmm3,%xmm12
23516 .byte 69,15,89,226 // mulps %xmm10,%xmm12
23517 .byte 102,69,15,58,8,212,1 // roundps $0x1,%xmm12,%xmm10
23518 .byte 69,15,40,220 // movaps %xmm12,%xmm11
23519 .byte 69,15,92,218 // subps %xmm10,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040023520 .byte 68,15,88,37,104,38,0,0 // addps 0x2668(%rip),%xmm12 # 50a0 <_sk_callback_sse41+0x95e>
23521 .byte 15,40,29,113,38,0,0 // movaps 0x2671(%rip),%xmm3 # 50b0 <_sk_callback_sse41+0x96e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023522 .byte 65,15,89,219 // mulps %xmm11,%xmm3
23523 .byte 68,15,92,227 // subps %xmm3,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040023524 .byte 68,15,40,21,113,38,0,0 // movaps 0x2671(%rip),%xmm10 # 50c0 <_sk_callback_sse41+0x97e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023525 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040023526 .byte 15,40,29,118,38,0,0 // movaps 0x2676(%rip),%xmm3 # 50d0 <_sk_callback_sse41+0x98e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023527 .byte 65,15,94,218 // divps %xmm10,%xmm3
23528 .byte 65,15,88,220 // addps %xmm12,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040023529 .byte 15,89,29,119,38,0,0 // mulps 0x2677(%rip),%xmm3 # 50e0 <_sk_callback_sse41+0x99e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040023530 .byte 102,68,15,91,211 // cvtps2dq %xmm3,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040023531 .byte 243,15,16,88,20 // movss 0x14(%rax),%xmm3
23532 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
23533 .byte 65,15,88,218 // addps %xmm10,%xmm3
23534 .byte 102,65,15,56,20,217 // blendvps %xmm0,%xmm9,%xmm3
23535 .byte 15,87,192 // xorps %xmm0,%xmm0
23536 .byte 15,95,216 // maxps %xmm0,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040023537 .byte 15,93,29,98,38,0,0 // minps 0x2662(%rip),%xmm3 # 50f0 <_sk_callback_sse41+0x9ae>
Mike Klein44375172017-04-17 19:32:05 -040023538 .byte 72,173 // lods %ds:(%rsi),%rax
23539 .byte 65,15,40,192 // movaps %xmm8,%xmm0
23540 .byte 255,224 // jmpq *%rax
23541
Mike Klein4e3e9f82017-04-20 11:04:29 -040023542HIDDEN _sk_lab_to_xyz_sse41
23543.globl _sk_lab_to_xyz_sse41
23544FUNCTION(_sk_lab_to_xyz_sse41)
23545_sk_lab_to_xyz_sse41:
Mike Kleinfe560a82017-05-01 12:56:35 -040023546 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040023547 .byte 68,15,89,5,94,38,0,0 // mulps 0x265e(%rip),%xmm8 # 5100 <_sk_callback_sse41+0x9be>
23548 .byte 68,15,40,13,102,38,0,0 // movaps 0x2666(%rip),%xmm9 # 5110 <_sk_callback_sse41+0x9ce>
Mike Kleinfe560a82017-05-01 12:56:35 -040023549 .byte 65,15,89,201 // mulps %xmm9,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040023550 .byte 15,40,5,107,38,0,0 // movaps 0x266b(%rip),%xmm0 # 5120 <_sk_callback_sse41+0x9de>
Mike Kleinfe560a82017-05-01 12:56:35 -040023551 .byte 15,88,200 // addps %xmm0,%xmm1
23552 .byte 65,15,89,209 // mulps %xmm9,%xmm2
23553 .byte 15,88,208 // addps %xmm0,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023554 .byte 68,15,88,5,105,38,0,0 // addps 0x2669(%rip),%xmm8 # 5130 <_sk_callback_sse41+0x9ee>
23555 .byte 68,15,89,5,113,38,0,0 // mulps 0x2671(%rip),%xmm8 # 5140 <_sk_callback_sse41+0x9fe>
23556 .byte 15,89,13,122,38,0,0 // mulps 0x267a(%rip),%xmm1 # 5150 <_sk_callback_sse41+0xa0e>
Mike Kleinfe560a82017-05-01 12:56:35 -040023557 .byte 65,15,88,200 // addps %xmm8,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040023558 .byte 15,89,21,127,38,0,0 // mulps 0x267f(%rip),%xmm2 # 5160 <_sk_callback_sse41+0xa1e>
Mike Kleinfe560a82017-05-01 12:56:35 -040023559 .byte 69,15,40,208 // movaps %xmm8,%xmm10
23560 .byte 68,15,92,210 // subps %xmm2,%xmm10
23561 .byte 68,15,40,217 // movaps %xmm1,%xmm11
Mike Klein4e3e9f82017-04-20 11:04:29 -040023562 .byte 69,15,89,219 // mulps %xmm11,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040023563 .byte 68,15,89,217 // mulps %xmm1,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040023564 .byte 68,15,40,13,115,38,0,0 // movaps 0x2673(%rip),%xmm9 # 5170 <_sk_callback_sse41+0xa2e>
Mike Kleinfe560a82017-05-01 12:56:35 -040023565 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Klein4e3e9f82017-04-20 11:04:29 -040023566 .byte 65,15,194,195,1 // cmpltps %xmm11,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023567 .byte 15,40,21,115,38,0,0 // movaps 0x2673(%rip),%xmm2 # 5180 <_sk_callback_sse41+0xa3e>
Mike Kleinfe560a82017-05-01 12:56:35 -040023568 .byte 15,88,202 // addps %xmm2,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040023569 .byte 68,15,40,37,120,38,0,0 // movaps 0x2678(%rip),%xmm12 # 5190 <_sk_callback_sse41+0xa4e>
Mike Klein4e3e9f82017-04-20 11:04:29 -040023570 .byte 65,15,89,204 // mulps %xmm12,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040023571 .byte 102,65,15,56,20,203 // blendvps %xmm0,%xmm11,%xmm1
23572 .byte 69,15,40,216 // movaps %xmm8,%xmm11
23573 .byte 69,15,89,219 // mulps %xmm11,%xmm11
23574 .byte 69,15,89,216 // mulps %xmm8,%xmm11
23575 .byte 65,15,40,193 // movaps %xmm9,%xmm0
23576 .byte 65,15,194,195,1 // cmpltps %xmm11,%xmm0
23577 .byte 68,15,88,194 // addps %xmm2,%xmm8
23578 .byte 69,15,89,196 // mulps %xmm12,%xmm8
23579 .byte 102,69,15,56,20,195 // blendvps %xmm0,%xmm11,%xmm8
23580 .byte 69,15,40,218 // movaps %xmm10,%xmm11
23581 .byte 69,15,89,219 // mulps %xmm11,%xmm11
23582 .byte 69,15,89,218 // mulps %xmm10,%xmm11
23583 .byte 69,15,194,203,1 // cmpltps %xmm11,%xmm9
23584 .byte 65,15,88,210 // addps %xmm10,%xmm2
23585 .byte 65,15,89,212 // mulps %xmm12,%xmm2
23586 .byte 65,15,40,193 // movaps %xmm9,%xmm0
23587 .byte 102,65,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023588 .byte 15,89,13,49,38,0,0 // mulps 0x2631(%rip),%xmm1 # 51a0 <_sk_callback_sse41+0xa5e>
23589 .byte 15,89,21,58,38,0,0 // mulps 0x263a(%rip),%xmm2 # 51b0 <_sk_callback_sse41+0xa6e>
Mike Klein4e3e9f82017-04-20 11:04:29 -040023590 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040023591 .byte 15,40,193 // movaps %xmm1,%xmm0
23592 .byte 65,15,40,200 // movaps %xmm8,%xmm1
Mike Klein4e3e9f82017-04-20 11:04:29 -040023593 .byte 255,224 // jmpq *%rax
23594
Mike Klein7c4af542017-03-29 18:21:14 -040023595HIDDEN _sk_load_a8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040023596.globl _sk_load_a8_sse41
Mike Klein86714282017-04-13 17:37:38 -040023597FUNCTION(_sk_load_a8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023598_sk_load_a8_sse41:
23599 .byte 72,173 // lods %ds:(%rsi),%rax
23600 .byte 72,139,0 // mov (%rax),%rax
23601 .byte 102,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023602 .byte 15,91,216 // cvtdq2ps %xmm0,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040023603 .byte 15,89,29,42,38,0,0 // mulps 0x262a(%rip),%xmm3 # 51c0 <_sk_callback_sse41+0xa7e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023604 .byte 72,173 // lods %ds:(%rsi),%rax
23605 .byte 15,87,192 // xorps %xmm0,%xmm0
23606 .byte 15,87,201 // xorps %xmm1,%xmm1
23607 .byte 15,87,210 // xorps %xmm2,%xmm2
23608 .byte 255,224 // jmpq *%rax
23609
Mike Klein21bd3e42017-04-06 16:32:29 -040023610HIDDEN _sk_gather_a8_sse41
23611.globl _sk_gather_a8_sse41
Mike Klein86714282017-04-13 17:37:38 -040023612FUNCTION(_sk_gather_a8_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040023613_sk_gather_a8_sse41:
23614 .byte 72,173 // lods %ds:(%rsi),%rax
23615 .byte 76,139,8 // mov (%rax),%r9
23616 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
23617 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
23618 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
23619 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
23620 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
23621 .byte 102,15,254,194 // paddd %xmm2,%xmm0
23622 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
23623 .byte 65,137,192 // mov %eax,%r8d
23624 .byte 72,193,232,32 // shr $0x20,%rax
23625 .byte 102,72,15,126,193 // movq %xmm0,%rcx
23626 .byte 65,137,202 // mov %ecx,%r10d
23627 .byte 72,193,233,32 // shr $0x20,%rcx
23628 .byte 102,67,15,58,32,4,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm0
23629 .byte 102,65,15,58,32,4,9,1 // pinsrb $0x1,(%r9,%rcx,1),%xmm0
23630 .byte 67,15,182,12,1 // movzbl (%r9,%r8,1),%ecx
23631 .byte 102,15,58,32,193,2 // pinsrb $0x2,%ecx,%xmm0
23632 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
23633 .byte 102,15,58,32,192,3 // pinsrb $0x3,%eax,%xmm0
23634 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023635 .byte 15,91,216 // cvtdq2ps %xmm0,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040023636 .byte 15,89,29,190,37,0,0 // mulps 0x25be(%rip),%xmm3 # 51d0 <_sk_callback_sse41+0xa8e>
Mike Klein21bd3e42017-04-06 16:32:29 -040023637 .byte 72,173 // lods %ds:(%rsi),%rax
23638 .byte 15,87,192 // xorps %xmm0,%xmm0
23639 .byte 102,15,239,201 // pxor %xmm1,%xmm1
23640 .byte 102,15,239,210 // pxor %xmm2,%xmm2
23641 .byte 255,224 // jmpq *%rax
23642
Mike Klein7c4af542017-03-29 18:21:14 -040023643HIDDEN _sk_store_a8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040023644.globl _sk_store_a8_sse41
Mike Klein86714282017-04-13 17:37:38 -040023645FUNCTION(_sk_store_a8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023646_sk_store_a8_sse41:
23647 .byte 72,173 // lods %ds:(%rsi),%rax
23648 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040023649 .byte 68,15,40,5,178,37,0,0 // movaps 0x25b2(%rip),%xmm8 # 51e0 <_sk_callback_sse41+0xa9e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023650 .byte 68,15,89,195 // mulps %xmm3,%xmm8
23651 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
23652 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
23653 .byte 102,69,15,103,192 // packuswb %xmm8,%xmm8
23654 .byte 102,68,15,126,4,56 // movd %xmm8,(%rax,%rdi,1)
23655 .byte 72,173 // lods %ds:(%rsi),%rax
23656 .byte 255,224 // jmpq *%rax
23657
Mike Kleinf809fef2017-03-31 13:52:45 -040023658HIDDEN _sk_load_g8_sse41
23659.globl _sk_load_g8_sse41
Mike Klein86714282017-04-13 17:37:38 -040023660FUNCTION(_sk_load_g8_sse41)
Mike Kleinf809fef2017-03-31 13:52:45 -040023661_sk_load_g8_sse41:
23662 .byte 72,173 // lods %ds:(%rsi),%rax
23663 .byte 72,139,0 // mov (%rax),%rax
23664 .byte 102,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023665 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023666 .byte 15,89,5,143,37,0,0 // mulps 0x258f(%rip),%xmm0 # 51f0 <_sk_callback_sse41+0xaae>
Mike Kleinf809fef2017-03-31 13:52:45 -040023667 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040023668 .byte 15,40,29,150,37,0,0 // movaps 0x2596(%rip),%xmm3 # 5200 <_sk_callback_sse41+0xabe>
Mike Kleinf809fef2017-03-31 13:52:45 -040023669 .byte 15,40,200 // movaps %xmm0,%xmm1
23670 .byte 15,40,208 // movaps %xmm0,%xmm2
23671 .byte 255,224 // jmpq *%rax
23672
Mike Klein21bd3e42017-04-06 16:32:29 -040023673HIDDEN _sk_gather_g8_sse41
23674.globl _sk_gather_g8_sse41
Mike Klein86714282017-04-13 17:37:38 -040023675FUNCTION(_sk_gather_g8_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040023676_sk_gather_g8_sse41:
23677 .byte 72,173 // lods %ds:(%rsi),%rax
23678 .byte 76,139,8 // mov (%rax),%r9
23679 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
23680 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
23681 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
23682 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
23683 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
23684 .byte 102,15,254,194 // paddd %xmm2,%xmm0
23685 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
23686 .byte 65,137,192 // mov %eax,%r8d
23687 .byte 72,193,232,32 // shr $0x20,%rax
23688 .byte 102,72,15,126,193 // movq %xmm0,%rcx
23689 .byte 65,137,202 // mov %ecx,%r10d
23690 .byte 72,193,233,32 // shr $0x20,%rcx
23691 .byte 102,67,15,58,32,4,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm0
23692 .byte 102,65,15,58,32,4,9,1 // pinsrb $0x1,(%r9,%rcx,1),%xmm0
23693 .byte 67,15,182,12,1 // movzbl (%r9,%r8,1),%ecx
23694 .byte 102,15,58,32,193,2 // pinsrb $0x2,%ecx,%xmm0
23695 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
23696 .byte 102,15,58,32,192,3 // pinsrb $0x3,%eax,%xmm0
23697 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023698 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023699 .byte 15,89,5,47,37,0,0 // mulps 0x252f(%rip),%xmm0 # 5210 <_sk_callback_sse41+0xace>
Mike Klein21bd3e42017-04-06 16:32:29 -040023700 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040023701 .byte 15,40,29,54,37,0,0 // movaps 0x2536(%rip),%xmm3 # 5220 <_sk_callback_sse41+0xade>
Mike Klein21bd3e42017-04-06 16:32:29 -040023702 .byte 15,40,200 // movaps %xmm0,%xmm1
23703 .byte 15,40,208 // movaps %xmm0,%xmm2
23704 .byte 255,224 // jmpq *%rax
23705
Mike Klein7d3d8722017-04-06 17:53:18 -040023706HIDDEN _sk_gather_i8_sse41
23707.globl _sk_gather_i8_sse41
Mike Klein86714282017-04-13 17:37:38 -040023708FUNCTION(_sk_gather_i8_sse41)
Mike Klein7d3d8722017-04-06 17:53:18 -040023709_sk_gather_i8_sse41:
23710 .byte 72,173 // lods %ds:(%rsi),%rax
23711 .byte 73,137,192 // mov %rax,%r8
23712 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040023713 .byte 116,5 // je 2d01 <_sk_gather_i8_sse41+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -040023714 .byte 76,137,192 // mov %r8,%rax
Mike Klein5d7f2b52017-05-20 13:21:59 -040023715 .byte 235,2 // jmp 2d03 <_sk_gather_i8_sse41+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -040023716 .byte 72,173 // lods %ds:(%rsi),%rax
23717 .byte 76,139,16 // mov (%rax),%r10
23718 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
23719 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
23720 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
23721 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
23722 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
23723 .byte 102,15,254,194 // paddd %xmm2,%xmm0
23724 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
23725 .byte 65,137,193 // mov %eax,%r9d
23726 .byte 72,193,232,32 // shr $0x20,%rax
23727 .byte 102,72,15,126,193 // movq %xmm0,%rcx
23728 .byte 65,137,203 // mov %ecx,%r11d
23729 .byte 72,193,233,32 // shr $0x20,%rcx
23730 .byte 102,67,15,58,32,4,26,0 // pinsrb $0x0,(%r10,%r11,1),%xmm0
23731 .byte 102,65,15,58,32,4,10,1 // pinsrb $0x1,(%r10,%rcx,1),%xmm0
23732 .byte 102,67,15,58,32,4,10,2 // pinsrb $0x2,(%r10,%r9,1),%xmm0
23733 .byte 102,65,15,58,32,4,2,3 // pinsrb $0x3,(%r10,%rax,1),%xmm0
23734 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
23735 .byte 102,73,15,58,22,193,1 // pextrq $0x1,%xmm0,%r9
23736 .byte 102,72,15,126,193 // movq %xmm0,%rcx
23737 .byte 73,139,64,8 // mov 0x8(%r8),%rax
23738 .byte 65,137,200 // mov %ecx,%r8d
23739 .byte 72,193,233,30 // shr $0x1e,%rcx
23740 .byte 69,137,202 // mov %r9d,%r10d
23741 .byte 73,193,233,30 // shr $0x1e,%r9
23742 .byte 102,66,15,110,28,128 // movd (%rax,%r8,4),%xmm3
23743 .byte 102,15,58,34,28,8,1 // pinsrd $0x1,(%rax,%rcx,1),%xmm3
23744 .byte 102,66,15,58,34,28,144,2 // pinsrd $0x2,(%rax,%r10,4),%xmm3
23745 .byte 102,66,15,58,34,28,8,3 // pinsrd $0x3,(%rax,%r9,1),%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040023746 .byte 102,15,111,5,141,36,0,0 // movdqa 0x248d(%rip),%xmm0 # 5230 <_sk_callback_sse41+0xaee>
Mike Klein7d3d8722017-04-06 17:53:18 -040023747 .byte 102,15,219,195 // pand %xmm3,%xmm0
23748 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023749 .byte 68,15,40,5,142,36,0,0 // movaps 0x248e(%rip),%xmm8 # 5240 <_sk_callback_sse41+0xafe>
Mike Klein7d3d8722017-04-06 17:53:18 -040023750 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040023751 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040023752 .byte 102,15,56,0,13,141,36,0,0 // pshufb 0x248d(%rip),%xmm1 # 5250 <_sk_callback_sse41+0xb0e>
Mike Klein7d3d8722017-04-06 17:53:18 -040023753 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
23754 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040023755 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023756 .byte 102,15,56,0,21,137,36,0,0 // pshufb 0x2489(%rip),%xmm2 # 5260 <_sk_callback_sse41+0xb1e>
Mike Klein7d3d8722017-04-06 17:53:18 -040023757 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
23758 .byte 65,15,89,208 // mulps %xmm8,%xmm2
23759 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
23760 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
23761 .byte 65,15,89,216 // mulps %xmm8,%xmm3
23762 .byte 72,173 // lods %ds:(%rsi),%rax
23763 .byte 255,224 // jmpq *%rax
23764
Mike Klein7c4af542017-03-29 18:21:14 -040023765HIDDEN _sk_load_565_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040023766.globl _sk_load_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040023767FUNCTION(_sk_load_565_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023768_sk_load_565_sse41:
23769 .byte 72,173 // lods %ds:(%rsi),%rax
23770 .byte 72,139,0 // mov (%rax),%rax
23771 .byte 102,15,56,51,20,120 // pmovzxwd (%rax,%rdi,2),%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023772 .byte 102,15,111,5,111,36,0,0 // movdqa 0x246f(%rip),%xmm0 # 5270 <_sk_callback_sse41+0xb2e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023773 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023774 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023775 .byte 15,89,5,113,36,0,0 // mulps 0x2471(%rip),%xmm0 # 5280 <_sk_callback_sse41+0xb3e>
23776 .byte 102,15,111,13,121,36,0,0 // movdqa 0x2479(%rip),%xmm1 # 5290 <_sk_callback_sse41+0xb4e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023777 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040023778 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040023779 .byte 15,89,13,123,36,0,0 // mulps 0x247b(%rip),%xmm1 # 52a0 <_sk_callback_sse41+0xb5e>
23780 .byte 102,15,219,21,131,36,0,0 // pand 0x2483(%rip),%xmm2 # 52b0 <_sk_callback_sse41+0xb6e>
Mike Kleinfe560a82017-05-01 12:56:35 -040023781 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023782 .byte 15,89,21,137,36,0,0 // mulps 0x2489(%rip),%xmm2 # 52c0 <_sk_callback_sse41+0xb7e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023783 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040023784 .byte 15,40,29,144,36,0,0 // movaps 0x2490(%rip),%xmm3 # 52d0 <_sk_callback_sse41+0xb8e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023785 .byte 255,224 // jmpq *%rax
23786
Mike Klein21bd3e42017-04-06 16:32:29 -040023787HIDDEN _sk_gather_565_sse41
23788.globl _sk_gather_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040023789FUNCTION(_sk_gather_565_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040023790_sk_gather_565_sse41:
23791 .byte 72,173 // lods %ds:(%rsi),%rax
23792 .byte 76,139,8 // mov (%rax),%r9
23793 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
23794 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
23795 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
23796 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
23797 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
23798 .byte 102,15,254,194 // paddd %xmm2,%xmm0
23799 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
23800 .byte 65,137,192 // mov %eax,%r8d
23801 .byte 72,193,232,32 // shr $0x20,%rax
23802 .byte 102,72,15,126,193 // movq %xmm0,%rcx
23803 .byte 65,137,202 // mov %ecx,%r10d
23804 .byte 72,193,233,32 // shr $0x20,%rcx
23805 .byte 102,67,15,196,4,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm0
23806 .byte 102,65,15,196,4,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm0
23807 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
23808 .byte 102,15,196,193,2 // pinsrw $0x2,%ecx,%xmm0
23809 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
23810 .byte 102,15,196,192,3 // pinsrw $0x3,%eax,%xmm0
23811 .byte 102,15,56,51,208 // pmovzxwd %xmm0,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023812 .byte 102,15,111,5,53,36,0,0 // movdqa 0x2435(%rip),%xmm0 # 52e0 <_sk_callback_sse41+0xb9e>
Mike Klein21bd3e42017-04-06 16:32:29 -040023813 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023814 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023815 .byte 15,89,5,55,36,0,0 // mulps 0x2437(%rip),%xmm0 # 52f0 <_sk_callback_sse41+0xbae>
23816 .byte 102,15,111,13,63,36,0,0 // movdqa 0x243f(%rip),%xmm1 # 5300 <_sk_callback_sse41+0xbbe>
Mike Klein21bd3e42017-04-06 16:32:29 -040023817 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040023818 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040023819 .byte 15,89,13,65,36,0,0 // mulps 0x2441(%rip),%xmm1 # 5310 <_sk_callback_sse41+0xbce>
23820 .byte 102,15,219,21,73,36,0,0 // pand 0x2449(%rip),%xmm2 # 5320 <_sk_callback_sse41+0xbde>
Mike Kleinfe560a82017-05-01 12:56:35 -040023821 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023822 .byte 15,89,21,79,36,0,0 // mulps 0x244f(%rip),%xmm2 # 5330 <_sk_callback_sse41+0xbee>
Mike Klein21bd3e42017-04-06 16:32:29 -040023823 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040023824 .byte 15,40,29,86,36,0,0 // movaps 0x2456(%rip),%xmm3 # 5340 <_sk_callback_sse41+0xbfe>
Mike Klein21bd3e42017-04-06 16:32:29 -040023825 .byte 255,224 // jmpq *%rax
23826
Mike Klein7c4af542017-03-29 18:21:14 -040023827HIDDEN _sk_store_565_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040023828.globl _sk_store_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040023829FUNCTION(_sk_store_565_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023830_sk_store_565_sse41:
23831 .byte 72,173 // lods %ds:(%rsi),%rax
23832 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040023833 .byte 68,15,40,5,87,36,0,0 // movaps 0x2457(%rip),%xmm8 # 5350 <_sk_callback_sse41+0xc0e>
Mike Kleinfe560a82017-05-01 12:56:35 -040023834 .byte 68,15,40,200 // movaps %xmm0,%xmm9
23835 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040023836 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
23837 .byte 102,65,15,114,241,11 // pslld $0xb,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040023838 .byte 68,15,40,21,76,36,0,0 // movaps 0x244c(%rip),%xmm10 # 5360 <_sk_callback_sse41+0xc1e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023839 .byte 68,15,89,209 // mulps %xmm1,%xmm10
23840 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
23841 .byte 102,65,15,114,242,5 // pslld $0x5,%xmm10
23842 .byte 102,69,15,235,209 // por %xmm9,%xmm10
23843 .byte 68,15,89,194 // mulps %xmm2,%xmm8
23844 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
23845 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
23846 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
23847 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
23848 .byte 72,173 // lods %ds:(%rsi),%rax
23849 .byte 255,224 // jmpq *%rax
23850
Mike Kleinf809fef2017-03-31 13:52:45 -040023851HIDDEN _sk_load_4444_sse41
23852.globl _sk_load_4444_sse41
Mike Klein86714282017-04-13 17:37:38 -040023853FUNCTION(_sk_load_4444_sse41)
Mike Kleinf809fef2017-03-31 13:52:45 -040023854_sk_load_4444_sse41:
23855 .byte 72,173 // lods %ds:(%rsi),%rax
23856 .byte 72,139,0 // mov (%rax),%rax
Mike Klein308e6242017-04-27 13:56:33 -040023857 .byte 102,15,56,51,28,120 // pmovzxwd (%rax,%rdi,2),%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040023858 .byte 102,15,111,5,23,36,0,0 // movdqa 0x2417(%rip),%xmm0 # 5370 <_sk_callback_sse41+0xc2e>
Mike Klein308e6242017-04-27 13:56:33 -040023859 .byte 102,15,219,195 // pand %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023860 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023861 .byte 15,89,5,25,36,0,0 // mulps 0x2419(%rip),%xmm0 # 5380 <_sk_callback_sse41+0xc3e>
23862 .byte 102,15,111,13,33,36,0,0 // movdqa 0x2421(%rip),%xmm1 # 5390 <_sk_callback_sse41+0xc4e>
Mike Klein308e6242017-04-27 13:56:33 -040023863 .byte 102,15,219,203 // pand %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040023864 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040023865 .byte 15,89,13,35,36,0,0 // mulps 0x2423(%rip),%xmm1 # 53a0 <_sk_callback_sse41+0xc5e>
23866 .byte 102,15,111,21,43,36,0,0 // movdqa 0x242b(%rip),%xmm2 # 53b0 <_sk_callback_sse41+0xc6e>
Mike Klein308e6242017-04-27 13:56:33 -040023867 .byte 102,15,219,211 // pand %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040023868 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023869 .byte 15,89,21,45,36,0,0 // mulps 0x242d(%rip),%xmm2 # 53c0 <_sk_callback_sse41+0xc7e>
23870 .byte 102,15,219,29,53,36,0,0 // pand 0x2435(%rip),%xmm3 # 53d0 <_sk_callback_sse41+0xc8e>
Mike Kleinfe560a82017-05-01 12:56:35 -040023871 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040023872 .byte 15,89,29,59,36,0,0 // mulps 0x243b(%rip),%xmm3 # 53e0 <_sk_callback_sse41+0xc9e>
Mike Kleinf809fef2017-03-31 13:52:45 -040023873 .byte 72,173 // lods %ds:(%rsi),%rax
23874 .byte 255,224 // jmpq *%rax
23875
Mike Klein21bd3e42017-04-06 16:32:29 -040023876HIDDEN _sk_gather_4444_sse41
23877.globl _sk_gather_4444_sse41
Mike Klein86714282017-04-13 17:37:38 -040023878FUNCTION(_sk_gather_4444_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040023879_sk_gather_4444_sse41:
23880 .byte 72,173 // lods %ds:(%rsi),%rax
23881 .byte 76,139,8 // mov (%rax),%r9
23882 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
23883 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
23884 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
23885 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
23886 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
23887 .byte 102,15,254,194 // paddd %xmm2,%xmm0
23888 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
23889 .byte 65,137,192 // mov %eax,%r8d
23890 .byte 72,193,232,32 // shr $0x20,%rax
23891 .byte 102,72,15,126,193 // movq %xmm0,%rcx
23892 .byte 65,137,202 // mov %ecx,%r10d
23893 .byte 72,193,233,32 // shr $0x20,%rcx
23894 .byte 102,67,15,196,4,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm0
23895 .byte 102,65,15,196,4,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm0
23896 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
23897 .byte 102,15,196,193,2 // pinsrw $0x2,%ecx,%xmm0
23898 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
23899 .byte 102,15,196,192,3 // pinsrw $0x3,%eax,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -040023900 .byte 102,15,56,51,216 // pmovzxwd %xmm0,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040023901 .byte 102,15,111,5,222,35,0,0 // movdqa 0x23de(%rip),%xmm0 # 53f0 <_sk_callback_sse41+0xcae>
Mike Klein308e6242017-04-27 13:56:33 -040023902 .byte 102,15,219,195 // pand %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040023903 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023904 .byte 15,89,5,224,35,0,0 // mulps 0x23e0(%rip),%xmm0 # 5400 <_sk_callback_sse41+0xcbe>
23905 .byte 102,15,111,13,232,35,0,0 // movdqa 0x23e8(%rip),%xmm1 # 5410 <_sk_callback_sse41+0xcce>
Mike Klein308e6242017-04-27 13:56:33 -040023906 .byte 102,15,219,203 // pand %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040023907 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040023908 .byte 15,89,13,234,35,0,0 // mulps 0x23ea(%rip),%xmm1 # 5420 <_sk_callback_sse41+0xcde>
23909 .byte 102,15,111,21,242,35,0,0 // movdqa 0x23f2(%rip),%xmm2 # 5430 <_sk_callback_sse41+0xcee>
Mike Klein308e6242017-04-27 13:56:33 -040023910 .byte 102,15,219,211 // pand %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040023911 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023912 .byte 15,89,21,244,35,0,0 // mulps 0x23f4(%rip),%xmm2 # 5440 <_sk_callback_sse41+0xcfe>
23913 .byte 102,15,219,29,252,35,0,0 // pand 0x23fc(%rip),%xmm3 # 5450 <_sk_callback_sse41+0xd0e>
Mike Kleinfe560a82017-05-01 12:56:35 -040023914 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040023915 .byte 15,89,29,2,36,0,0 // mulps 0x2402(%rip),%xmm3 # 5460 <_sk_callback_sse41+0xd1e>
Mike Klein21bd3e42017-04-06 16:32:29 -040023916 .byte 72,173 // lods %ds:(%rsi),%rax
23917 .byte 255,224 // jmpq *%rax
23918
Mike Kleinf809fef2017-03-31 13:52:45 -040023919HIDDEN _sk_store_4444_sse41
23920.globl _sk_store_4444_sse41
Mike Klein86714282017-04-13 17:37:38 -040023921FUNCTION(_sk_store_4444_sse41)
Mike Kleinf809fef2017-03-31 13:52:45 -040023922_sk_store_4444_sse41:
23923 .byte 72,173 // lods %ds:(%rsi),%rax
23924 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040023925 .byte 68,15,40,5,1,36,0,0 // movaps 0x2401(%rip),%xmm8 # 5470 <_sk_callback_sse41+0xd2e>
Mike Kleinfe560a82017-05-01 12:56:35 -040023926 .byte 68,15,40,200 // movaps %xmm0,%xmm9
23927 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleinf809fef2017-03-31 13:52:45 -040023928 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
23929 .byte 102,65,15,114,241,12 // pslld $0xc,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040023930 .byte 68,15,40,209 // movaps %xmm1,%xmm10
23931 .byte 69,15,89,208 // mulps %xmm8,%xmm10
Mike Kleinf809fef2017-03-31 13:52:45 -040023932 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
23933 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
23934 .byte 102,69,15,235,209 // por %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040023935 .byte 68,15,40,202 // movaps %xmm2,%xmm9
23936 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleinf809fef2017-03-31 13:52:45 -040023937 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
23938 .byte 102,65,15,114,241,4 // pslld $0x4,%xmm9
23939 .byte 68,15,89,195 // mulps %xmm3,%xmm8
23940 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
23941 .byte 102,69,15,86,193 // orpd %xmm9,%xmm8
23942 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
23943 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
23944 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
23945 .byte 72,173 // lods %ds:(%rsi),%rax
23946 .byte 255,224 // jmpq *%rax
23947
Mike Klein7c4af542017-03-29 18:21:14 -040023948HIDDEN _sk_load_8888_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040023949.globl _sk_load_8888_sse41
Mike Klein86714282017-04-13 17:37:38 -040023950FUNCTION(_sk_load_8888_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023951_sk_load_8888_sse41:
23952 .byte 72,173 // lods %ds:(%rsi),%rax
23953 .byte 72,139,0 // mov (%rax),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040023954 .byte 15,16,28,184 // movups (%rax,%rdi,4),%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040023955 .byte 15,40,5,160,35,0,0 // movaps 0x23a0(%rip),%xmm0 # 5480 <_sk_callback_sse41+0xd3e>
Mike Klein0aa742f2017-04-27 13:36:57 -040023956 .byte 15,84,195 // andps %xmm3,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040023957 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023958 .byte 68,15,40,5,162,35,0,0 // movaps 0x23a2(%rip),%xmm8 # 5490 <_sk_callback_sse41+0xd4e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023959 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040023960 .byte 15,40,203 // movaps %xmm3,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040023961 .byte 102,15,56,0,13,162,35,0,0 // pshufb 0x23a2(%rip),%xmm1 # 54a0 <_sk_callback_sse41+0xd5e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023962 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
23963 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040023964 .byte 15,40,211 // movaps %xmm3,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040023965 .byte 102,15,56,0,21,159,35,0,0 // pshufb 0x239f(%rip),%xmm2 # 54b0 <_sk_callback_sse41+0xd6e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040023966 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
23967 .byte 65,15,89,208 // mulps %xmm8,%xmm2
23968 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
23969 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
23970 .byte 65,15,89,216 // mulps %xmm8,%xmm3
23971 .byte 72,173 // lods %ds:(%rsi),%rax
23972 .byte 255,224 // jmpq *%rax
23973
Mike Kleindec4ea82017-04-06 15:04:05 -040023974HIDDEN _sk_gather_8888_sse41
23975.globl _sk_gather_8888_sse41
Mike Klein86714282017-04-13 17:37:38 -040023976FUNCTION(_sk_gather_8888_sse41)
Mike Kleindec4ea82017-04-06 15:04:05 -040023977_sk_gather_8888_sse41:
23978 .byte 72,173 // lods %ds:(%rsi),%rax
23979 .byte 76,139,8 // mov (%rax),%r9
23980 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
23981 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
23982 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
23983 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
23984 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
23985 .byte 102,15,254,194 // paddd %xmm2,%xmm0
23986 .byte 102,72,15,126,192 // movq %xmm0,%rax
23987 .byte 65,137,192 // mov %eax,%r8d
23988 .byte 72,193,232,32 // shr $0x20,%rax
23989 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
23990 .byte 65,137,202 // mov %ecx,%r10d
23991 .byte 72,193,233,32 // shr $0x20,%rcx
23992 .byte 102,67,15,110,28,129 // movd (%r9,%r8,4),%xmm3
23993 .byte 102,65,15,58,34,28,129,1 // pinsrd $0x1,(%r9,%rax,4),%xmm3
23994 .byte 102,67,15,58,34,28,145,2 // pinsrd $0x2,(%r9,%r10,4),%xmm3
23995 .byte 102,65,15,58,34,28,137,3 // pinsrd $0x3,(%r9,%rcx,4),%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040023996 .byte 102,15,111,5,56,35,0,0 // movdqa 0x2338(%rip),%xmm0 # 54c0 <_sk_callback_sse41+0xd7e>
Mike Kleindec4ea82017-04-06 15:04:05 -040023997 .byte 102,15,219,195 // pand %xmm3,%xmm0
23998 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040023999 .byte 68,15,40,5,57,35,0,0 // movaps 0x2339(%rip),%xmm8 # 54d0 <_sk_callback_sse41+0xd8e>
Mike Kleindec4ea82017-04-06 15:04:05 -040024000 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040024001 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040024002 .byte 102,15,56,0,13,56,35,0,0 // pshufb 0x2338(%rip),%xmm1 # 54e0 <_sk_callback_sse41+0xd9e>
Mike Kleindec4ea82017-04-06 15:04:05 -040024003 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
24004 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040024005 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040024006 .byte 102,15,56,0,21,52,35,0,0 // pshufb 0x2334(%rip),%xmm2 # 54f0 <_sk_callback_sse41+0xdae>
Mike Kleindec4ea82017-04-06 15:04:05 -040024007 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
24008 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24009 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
24010 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
24011 .byte 65,15,89,216 // mulps %xmm8,%xmm3
24012 .byte 72,173 // lods %ds:(%rsi),%rax
24013 .byte 255,224 // jmpq *%rax
24014
Mike Klein7c4af542017-03-29 18:21:14 -040024015HIDDEN _sk_store_8888_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024016.globl _sk_store_8888_sse41
Mike Klein86714282017-04-13 17:37:38 -040024017FUNCTION(_sk_store_8888_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024018_sk_store_8888_sse41:
24019 .byte 72,173 // lods %ds:(%rsi),%rax
24020 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040024021 .byte 68,15,40,5,32,35,0,0 // movaps 0x2320(%rip),%xmm8 # 5500 <_sk_callback_sse41+0xdbe>
Mike Kleinfe560a82017-05-01 12:56:35 -040024022 .byte 68,15,40,200 // movaps %xmm0,%xmm9
24023 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040024024 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040024025 .byte 68,15,40,209 // movaps %xmm1,%xmm10
24026 .byte 69,15,89,208 // mulps %xmm8,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040024027 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
24028 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
24029 .byte 102,69,15,235,209 // por %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040024030 .byte 68,15,40,202 // movaps %xmm2,%xmm9
24031 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040024032 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
24033 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
24034 .byte 68,15,89,195 // mulps %xmm3,%xmm8
24035 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
24036 .byte 102,65,15,114,240,24 // pslld $0x18,%xmm8
24037 .byte 102,69,15,235,193 // por %xmm9,%xmm8
24038 .byte 102,69,15,235,194 // por %xmm10,%xmm8
24039 .byte 243,68,15,127,4,184 // movdqu %xmm8,(%rax,%rdi,4)
24040 .byte 72,173 // lods %ds:(%rsi),%rax
24041 .byte 255,224 // jmpq *%rax
24042
Mike Klein7c4af542017-03-29 18:21:14 -040024043HIDDEN _sk_load_f16_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024044.globl _sk_load_f16_sse41
Mike Klein86714282017-04-13 17:37:38 -040024045FUNCTION(_sk_load_f16_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024046_sk_load_f16_sse41:
24047 .byte 72,173 // lods %ds:(%rsi),%rax
24048 .byte 72,139,0 // mov (%rax),%rax
24049 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
24050 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040024051 .byte 102,68,15,111,200 // movdqa %xmm0,%xmm9
24052 .byte 102,68,15,97,201 // punpcklwd %xmm1,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040024053 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040024054 .byte 102,69,15,111,217 // movdqa %xmm9,%xmm11
24055 .byte 102,68,15,97,216 // punpcklwd %xmm0,%xmm11
Mike Kleind0ce1482017-04-19 17:19:30 -040024056 .byte 102,68,15,105,200 // punpckhwd %xmm0,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040024057 .byte 102,65,15,56,51,203 // pmovzxwd %xmm11,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040024058 .byte 102,68,15,111,5,153,34,0,0 // movdqa 0x2299(%rip),%xmm8 # 5510 <_sk_callback_sse41+0xdce>
Mike Kleinb4bbc642017-04-27 08:59:55 -040024059 .byte 102,15,111,209 // movdqa %xmm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040024060 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040024061 .byte 102,15,239,202 // pxor %xmm2,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040024062 .byte 102,15,111,29,148,34,0,0 // movdqa 0x2294(%rip),%xmm3 # 5520 <_sk_callback_sse41+0xdde>
Mike Kleind0ce1482017-04-19 17:19:30 -040024063 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040024064 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
24065 .byte 102,15,56,63,195 // pmaxud %xmm3,%xmm0
24066 .byte 102,15,118,193 // pcmpeqd %xmm1,%xmm0
24067 .byte 102,15,114,241,13 // pslld $0xd,%xmm1
24068 .byte 102,15,235,202 // por %xmm2,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040024069 .byte 102,68,15,111,21,128,34,0,0 // movdqa 0x2280(%rip),%xmm10 # 5530 <_sk_callback_sse41+0xdee>
Mike Kleinb4bbc642017-04-27 08:59:55 -040024070 .byte 102,65,15,254,202 // paddd %xmm10,%xmm1
24071 .byte 102,15,219,193 // pand %xmm1,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040024072 .byte 102,65,15,115,219,8 // psrldq $0x8,%xmm11
24073 .byte 102,69,15,56,51,219 // pmovzxwd %xmm11,%xmm11
24074 .byte 102,65,15,111,211 // movdqa %xmm11,%xmm2
24075 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
24076 .byte 102,68,15,239,218 // pxor %xmm2,%xmm11
24077 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040024078 .byte 102,65,15,111,203 // movdqa %xmm11,%xmm1
24079 .byte 102,15,56,63,203 // pmaxud %xmm3,%xmm1
24080 .byte 102,65,15,118,203 // pcmpeqd %xmm11,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040024081 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040024082 .byte 102,68,15,235,218 // por %xmm2,%xmm11
24083 .byte 102,69,15,254,218 // paddd %xmm10,%xmm11
24084 .byte 102,65,15,219,203 // pand %xmm11,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040024085 .byte 102,69,15,56,51,217 // pmovzxwd %xmm9,%xmm11
24086 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
24087 .byte 102,69,15,219,224 // pand %xmm8,%xmm12
24088 .byte 102,69,15,239,220 // pxor %xmm12,%xmm11
24089 .byte 102,65,15,114,244,16 // pslld $0x10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040024090 .byte 102,65,15,111,211 // movdqa %xmm11,%xmm2
24091 .byte 102,15,56,63,211 // pmaxud %xmm3,%xmm2
24092 .byte 102,65,15,118,211 // pcmpeqd %xmm11,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040024093 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040024094 .byte 102,69,15,235,220 // por %xmm12,%xmm11
24095 .byte 102,69,15,254,218 // paddd %xmm10,%xmm11
24096 .byte 102,65,15,219,211 // pand %xmm11,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040024097 .byte 102,65,15,115,217,8 // psrldq $0x8,%xmm9
24098 .byte 102,69,15,56,51,201 // pmovzxwd %xmm9,%xmm9
24099 .byte 102,69,15,219,193 // pand %xmm9,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040024100 .byte 102,69,15,239,200 // pxor %xmm8,%xmm9
24101 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040024102 .byte 102,65,15,56,63,217 // pmaxud %xmm9,%xmm3
24103 .byte 102,65,15,118,217 // pcmpeqd %xmm9,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040024104 .byte 102,65,15,114,241,13 // pslld $0xd,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040024105 .byte 102,69,15,235,200 // por %xmm8,%xmm9
24106 .byte 102,69,15,254,202 // paddd %xmm10,%xmm9
24107 .byte 102,65,15,219,217 // pand %xmm9,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040024108 .byte 72,173 // lods %ds:(%rsi),%rax
24109 .byte 255,224 // jmpq *%rax
24110
Mike Klein5f055f02017-04-06 20:02:11 -040024111HIDDEN _sk_gather_f16_sse41
24112.globl _sk_gather_f16_sse41
Mike Klein86714282017-04-13 17:37:38 -040024113FUNCTION(_sk_gather_f16_sse41)
Mike Klein5f055f02017-04-06 20:02:11 -040024114_sk_gather_f16_sse41:
24115 .byte 72,173 // lods %ds:(%rsi),%rax
24116 .byte 76,139,8 // mov (%rax),%r9
24117 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
24118 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
24119 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
24120 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
24121 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
24122 .byte 102,15,254,194 // paddd %xmm2,%xmm0
24123 .byte 102,72,15,126,192 // movq %xmm0,%rax
24124 .byte 65,137,192 // mov %eax,%r8d
24125 .byte 72,193,232,32 // shr $0x20,%rax
24126 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
24127 .byte 65,137,202 // mov %ecx,%r10d
24128 .byte 72,193,233,32 // shr $0x20,%rcx
24129 .byte 243,65,15,126,4,201 // movq (%r9,%rcx,8),%xmm0
24130 .byte 243,67,15,126,12,209 // movq (%r9,%r10,8),%xmm1
24131 .byte 102,15,108,200 // punpcklqdq %xmm0,%xmm1
24132 .byte 243,65,15,126,4,193 // movq (%r9,%rax,8),%xmm0
24133 .byte 243,67,15,126,20,193 // movq (%r9,%r8,8),%xmm2
24134 .byte 102,15,108,208 // punpcklqdq %xmm0,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040024135 .byte 102,68,15,111,202 // movdqa %xmm2,%xmm9
24136 .byte 102,68,15,97,201 // punpcklwd %xmm1,%xmm9
Mike Klein5f055f02017-04-06 20:02:11 -040024137 .byte 102,15,105,209 // punpckhwd %xmm1,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040024138 .byte 102,69,15,111,217 // movdqa %xmm9,%xmm11
24139 .byte 102,68,15,97,218 // punpcklwd %xmm2,%xmm11
Mike Kleind0ce1482017-04-19 17:19:30 -040024140 .byte 102,68,15,105,202 // punpckhwd %xmm2,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040024141 .byte 102,65,15,56,51,203 // pmovzxwd %xmm11,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040024142 .byte 102,68,15,111,5,62,33,0,0 // movdqa 0x213e(%rip),%xmm8 # 5540 <_sk_callback_sse41+0xdfe>
Mike Kleinb4bbc642017-04-27 08:59:55 -040024143 .byte 102,15,111,209 // movdqa %xmm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040024144 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040024145 .byte 102,15,239,202 // pxor %xmm2,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040024146 .byte 102,15,111,29,57,33,0,0 // movdqa 0x2139(%rip),%xmm3 # 5550 <_sk_callback_sse41+0xe0e>
Mike Kleind0ce1482017-04-19 17:19:30 -040024147 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040024148 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
24149 .byte 102,15,56,63,195 // pmaxud %xmm3,%xmm0
24150 .byte 102,15,118,193 // pcmpeqd %xmm1,%xmm0
24151 .byte 102,15,114,241,13 // pslld $0xd,%xmm1
24152 .byte 102,15,235,202 // por %xmm2,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040024153 .byte 102,68,15,111,21,37,33,0,0 // movdqa 0x2125(%rip),%xmm10 # 5560 <_sk_callback_sse41+0xe1e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040024154 .byte 102,65,15,254,202 // paddd %xmm10,%xmm1
24155 .byte 102,15,219,193 // pand %xmm1,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040024156 .byte 102,65,15,115,219,8 // psrldq $0x8,%xmm11
24157 .byte 102,69,15,56,51,219 // pmovzxwd %xmm11,%xmm11
24158 .byte 102,65,15,111,211 // movdqa %xmm11,%xmm2
24159 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
24160 .byte 102,68,15,239,218 // pxor %xmm2,%xmm11
24161 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Kleinb4bbc642017-04-27 08:59:55 -040024162 .byte 102,65,15,111,203 // movdqa %xmm11,%xmm1
24163 .byte 102,15,56,63,203 // pmaxud %xmm3,%xmm1
24164 .byte 102,65,15,118,203 // pcmpeqd %xmm11,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040024165 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040024166 .byte 102,68,15,235,218 // por %xmm2,%xmm11
24167 .byte 102,69,15,254,218 // paddd %xmm10,%xmm11
24168 .byte 102,65,15,219,203 // pand %xmm11,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040024169 .byte 102,69,15,56,51,217 // pmovzxwd %xmm9,%xmm11
24170 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
24171 .byte 102,69,15,219,224 // pand %xmm8,%xmm12
24172 .byte 102,69,15,239,220 // pxor %xmm12,%xmm11
24173 .byte 102,65,15,114,244,16 // pslld $0x10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040024174 .byte 102,65,15,111,211 // movdqa %xmm11,%xmm2
24175 .byte 102,15,56,63,211 // pmaxud %xmm3,%xmm2
24176 .byte 102,65,15,118,211 // pcmpeqd %xmm11,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040024177 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040024178 .byte 102,69,15,235,220 // por %xmm12,%xmm11
24179 .byte 102,69,15,254,218 // paddd %xmm10,%xmm11
24180 .byte 102,65,15,219,211 // pand %xmm11,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040024181 .byte 102,65,15,115,217,8 // psrldq $0x8,%xmm9
24182 .byte 102,69,15,56,51,201 // pmovzxwd %xmm9,%xmm9
24183 .byte 102,69,15,219,193 // pand %xmm9,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040024184 .byte 102,69,15,239,200 // pxor %xmm8,%xmm9
24185 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040024186 .byte 102,65,15,56,63,217 // pmaxud %xmm9,%xmm3
24187 .byte 102,65,15,118,217 // pcmpeqd %xmm9,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040024188 .byte 102,65,15,114,241,13 // pslld $0xd,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040024189 .byte 102,69,15,235,200 // por %xmm8,%xmm9
24190 .byte 102,69,15,254,202 // paddd %xmm10,%xmm9
24191 .byte 102,65,15,219,217 // pand %xmm9,%xmm3
Mike Klein5f055f02017-04-06 20:02:11 -040024192 .byte 72,173 // lods %ds:(%rsi),%rax
24193 .byte 255,224 // jmpq *%rax
24194
Mike Klein7c4af542017-03-29 18:21:14 -040024195HIDDEN _sk_store_f16_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024196.globl _sk_store_f16_sse41
Mike Klein86714282017-04-13 17:37:38 -040024197FUNCTION(_sk_store_f16_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024198_sk_store_f16_sse41:
24199 .byte 72,173 // lods %ds:(%rsi),%rax
24200 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040024201 .byte 102,68,15,111,21,91,32,0,0 // movdqa 0x205b(%rip),%xmm10 # 5570 <_sk_callback_sse41+0xe2e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040024202 .byte 102,68,15,111,224 // movdqa %xmm0,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040024203 .byte 102,68,15,111,232 // movdqa %xmm0,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040024204 .byte 102,69,15,219,234 // pand %xmm10,%xmm13
24205 .byte 102,69,15,239,229 // pxor %xmm13,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040024206 .byte 102,68,15,111,13,78,32,0,0 // movdqa 0x204e(%rip),%xmm9 # 5580 <_sk_callback_sse41+0xe3e>
Mike Kleind0ce1482017-04-19 17:19:30 -040024207 .byte 102,65,15,114,213,16 // psrld $0x10,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040024208 .byte 102,69,15,111,193 // movdqa %xmm9,%xmm8
24209 .byte 102,69,15,102,196 // pcmpgtd %xmm12,%xmm8
24210 .byte 102,65,15,114,212,13 // psrld $0xd,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040024211 .byte 102,68,15,111,29,63,32,0,0 // movdqa 0x203f(%rip),%xmm11 # 5590 <_sk_callback_sse41+0xe4e>
Mike Kleinb4bbc642017-04-27 08:59:55 -040024212 .byte 102,69,15,235,235 // por %xmm11,%xmm13
24213 .byte 102,69,15,254,236 // paddd %xmm12,%xmm13
24214 .byte 102,69,15,223,197 // pandn %xmm13,%xmm8
24215 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
24216 .byte 102,68,15,111,233 // movdqa %xmm1,%xmm13
24217 .byte 102,68,15,111,241 // movdqa %xmm1,%xmm14
24218 .byte 102,69,15,219,242 // pand %xmm10,%xmm14
24219 .byte 102,69,15,239,238 // pxor %xmm14,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040024220 .byte 102,65,15,114,214,16 // psrld $0x10,%xmm14
Mike Kleinb4bbc642017-04-27 08:59:55 -040024221 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
24222 .byte 102,69,15,102,229 // pcmpgtd %xmm13,%xmm12
24223 .byte 102,65,15,114,213,13 // psrld $0xd,%xmm13
24224 .byte 102,69,15,235,243 // por %xmm11,%xmm14
24225 .byte 102,69,15,254,245 // paddd %xmm13,%xmm14
24226 .byte 102,69,15,223,230 // pandn %xmm14,%xmm12
24227 .byte 102,69,15,56,43,228 // packusdw %xmm12,%xmm12
24228 .byte 102,68,15,111,242 // movdqa %xmm2,%xmm14
24229 .byte 102,68,15,111,250 // movdqa %xmm2,%xmm15
24230 .byte 102,69,15,219,250 // pand %xmm10,%xmm15
24231 .byte 102,69,15,239,247 // pxor %xmm15,%xmm14
24232 .byte 102,65,15,114,215,16 // psrld $0x10,%xmm15
24233 .byte 102,69,15,111,233 // movdqa %xmm9,%xmm13
24234 .byte 102,69,15,102,238 // pcmpgtd %xmm14,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040024235 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
Mike Kleinb4bbc642017-04-27 08:59:55 -040024236 .byte 102,69,15,235,251 // por %xmm11,%xmm15
24237 .byte 102,69,15,254,254 // paddd %xmm14,%xmm15
24238 .byte 102,69,15,223,239 // pandn %xmm15,%xmm13
24239 .byte 102,69,15,56,43,237 // packusdw %xmm13,%xmm13
24240 .byte 102,68,15,219,211 // pand %xmm3,%xmm10
24241 .byte 102,68,15,111,243 // movdqa %xmm3,%xmm14
24242 .byte 102,69,15,239,242 // pxor %xmm10,%xmm14
24243 .byte 102,65,15,114,210,16 // psrld $0x10,%xmm10
24244 .byte 102,69,15,102,206 // pcmpgtd %xmm14,%xmm9
24245 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
24246 .byte 102,69,15,235,211 // por %xmm11,%xmm10
24247 .byte 102,69,15,254,214 // paddd %xmm14,%xmm10
24248 .byte 102,69,15,223,202 // pandn %xmm10,%xmm9
24249 .byte 102,69,15,56,43,201 // packusdw %xmm9,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040024250 .byte 102,69,15,97,196 // punpcklwd %xmm12,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040024251 .byte 102,69,15,97,233 // punpcklwd %xmm9,%xmm13
Mike Klein95f53be2017-04-04 10:24:56 -040024252 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040024253 .byte 102,69,15,98,205 // punpckldq %xmm13,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040024254 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
Mike Kleind0ce1482017-04-19 17:19:30 -040024255 .byte 102,69,15,106,197 // punpckhdq %xmm13,%xmm8
Mike Klein95f53be2017-04-04 10:24:56 -040024256 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024257 .byte 72,173 // lods %ds:(%rsi),%rax
24258 .byte 255,224 // jmpq *%rax
24259
Mike Klein3146bb92017-04-05 14:45:02 -040024260HIDDEN _sk_load_u16_be_sse41
24261.globl _sk_load_u16_be_sse41
Mike Klein86714282017-04-13 17:37:38 -040024262FUNCTION(_sk_load_u16_be_sse41)
Mike Klein3146bb92017-04-05 14:45:02 -040024263_sk_load_u16_be_sse41:
24264 .byte 72,173 // lods %ds:(%rsi),%rax
24265 .byte 72,139,0 // mov (%rax),%rax
24266 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
24267 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
24268 .byte 102,15,111,208 // movdqa %xmm0,%xmm2
24269 .byte 102,15,97,209 // punpcklwd %xmm1,%xmm2
24270 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
24271 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
24272 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
24273 .byte 102,15,105,208 // punpckhwd %xmm0,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040024274 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
24275 .byte 102,15,113,240,8 // psllw $0x8,%xmm0
24276 .byte 102,15,112,217,78 // pshufd $0x4e,%xmm1,%xmm3
24277 .byte 102,15,113,209,8 // psrlw $0x8,%xmm1
24278 .byte 102,15,235,200 // por %xmm0,%xmm1
24279 .byte 102,15,56,51,193 // pmovzxwd %xmm1,%xmm0
24280 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040024281 .byte 68,15,40,5,14,31,0,0 // movaps 0x1f0e(%rip),%xmm8 # 55a0 <_sk_callback_sse41+0xe5e>
Mike Klein3146bb92017-04-05 14:45:02 -040024282 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24283 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
24284 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
24285 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
24286 .byte 102,15,235,217 // por %xmm1,%xmm3
24287 .byte 102,15,56,51,203 // pmovzxwd %xmm3,%xmm1
24288 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
24289 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24290 .byte 102,68,15,111,202 // movdqa %xmm2,%xmm9
24291 .byte 102,65,15,113,241,8 // psllw $0x8,%xmm9
24292 .byte 102,15,112,218,78 // pshufd $0x4e,%xmm2,%xmm3
24293 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
24294 .byte 102,65,15,235,209 // por %xmm9,%xmm2
24295 .byte 102,15,56,51,210 // pmovzxwd %xmm2,%xmm2
24296 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
24297 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24298 .byte 102,68,15,111,203 // movdqa %xmm3,%xmm9
24299 .byte 102,65,15,113,241,8 // psllw $0x8,%xmm9
24300 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
24301 .byte 102,65,15,235,217 // por %xmm9,%xmm3
24302 .byte 102,15,56,51,219 // pmovzxwd %xmm3,%xmm3
24303 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
24304 .byte 65,15,89,216 // mulps %xmm8,%xmm3
24305 .byte 72,173 // lods %ds:(%rsi),%rax
24306 .byte 255,224 // jmpq *%rax
24307
Mike Kleinb3821732017-04-17 10:58:05 -040024308HIDDEN _sk_load_rgb_u16_be_sse41
24309.globl _sk_load_rgb_u16_be_sse41
24310FUNCTION(_sk_load_rgb_u16_be_sse41)
24311_sk_load_rgb_u16_be_sse41:
24312 .byte 72,173 // lods %ds:(%rsi),%rax
24313 .byte 72,139,0 // mov (%rax),%rax
24314 .byte 72,141,12,127 // lea (%rdi,%rdi,2),%rcx
24315 .byte 243,15,111,20,72 // movdqu (%rax,%rcx,2),%xmm2
24316 .byte 243,15,111,68,72,8 // movdqu 0x8(%rax,%rcx,2),%xmm0
24317 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
24318 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
24319 .byte 102,15,115,217,6 // psrldq $0x6,%xmm1
24320 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
24321 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
24322 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
24323 .byte 102,15,111,194 // movdqa %xmm2,%xmm0
24324 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
24325 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
24326 .byte 102,15,105,209 // punpckhwd %xmm1,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040024327 .byte 102,15,111,200 // movdqa %xmm0,%xmm1
24328 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
24329 .byte 102,15,113,208,8 // psrlw $0x8,%xmm0
24330 .byte 102,15,235,193 // por %xmm1,%xmm0
24331 .byte 102,15,56,51,192 // pmovzxwd %xmm0,%xmm0
24332 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040024333 .byte 68,15,40,5,79,30,0,0 // movaps 0x1e4f(%rip),%xmm8 # 55b0 <_sk_callback_sse41+0xe6e>
Mike Kleinb3821732017-04-17 10:58:05 -040024334 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24335 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
24336 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
24337 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
24338 .byte 102,15,235,217 // por %xmm1,%xmm3
24339 .byte 102,15,56,51,203 // pmovzxwd %xmm3,%xmm1
24340 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
24341 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24342 .byte 102,15,111,218 // movdqa %xmm2,%xmm3
24343 .byte 102,15,113,243,8 // psllw $0x8,%xmm3
24344 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
24345 .byte 102,15,235,211 // por %xmm3,%xmm2
24346 .byte 102,15,56,51,210 // pmovzxwd %xmm2,%xmm2
24347 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
24348 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040024349 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040024350 .byte 15,40,29,22,30,0,0 // movaps 0x1e16(%rip),%xmm3 # 55c0 <_sk_callback_sse41+0xe7e>
Mike Kleinb3821732017-04-17 10:58:05 -040024351 .byte 255,224 // jmpq *%rax
24352
Mike Klein3146bb92017-04-05 14:45:02 -040024353HIDDEN _sk_store_u16_be_sse41
24354.globl _sk_store_u16_be_sse41
Mike Klein86714282017-04-13 17:37:38 -040024355FUNCTION(_sk_store_u16_be_sse41)
Mike Klein3146bb92017-04-05 14:45:02 -040024356_sk_store_u16_be_sse41:
24357 .byte 72,173 // lods %ds:(%rsi),%rax
24358 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040024359 .byte 68,15,40,13,23,30,0,0 // movaps 0x1e17(%rip),%xmm9 # 55d0 <_sk_callback_sse41+0xe8e>
Mike Kleinfe560a82017-05-01 12:56:35 -040024360 .byte 68,15,40,192 // movaps %xmm0,%xmm8
24361 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040024362 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
24363 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
24364 .byte 102,69,15,111,208 // movdqa %xmm8,%xmm10
24365 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
24366 .byte 102,65,15,113,208,8 // psrlw $0x8,%xmm8
24367 .byte 102,69,15,235,194 // por %xmm10,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040024368 .byte 68,15,40,209 // movaps %xmm1,%xmm10
24369 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein3146bb92017-04-05 14:45:02 -040024370 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
24371 .byte 102,69,15,56,43,210 // packusdw %xmm10,%xmm10
24372 .byte 102,69,15,111,218 // movdqa %xmm10,%xmm11
24373 .byte 102,65,15,113,243,8 // psllw $0x8,%xmm11
24374 .byte 102,65,15,113,210,8 // psrlw $0x8,%xmm10
24375 .byte 102,69,15,235,211 // por %xmm11,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040024376 .byte 68,15,40,218 // movaps %xmm2,%xmm11
24377 .byte 69,15,89,217 // mulps %xmm9,%xmm11
Mike Klein3146bb92017-04-05 14:45:02 -040024378 .byte 102,69,15,91,219 // cvtps2dq %xmm11,%xmm11
24379 .byte 102,69,15,56,43,219 // packusdw %xmm11,%xmm11
24380 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
24381 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
24382 .byte 102,65,15,113,211,8 // psrlw $0x8,%xmm11
24383 .byte 102,69,15,235,220 // por %xmm12,%xmm11
24384 .byte 68,15,89,203 // mulps %xmm3,%xmm9
24385 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
24386 .byte 102,69,15,56,43,201 // packusdw %xmm9,%xmm9
24387 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
24388 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
24389 .byte 102,65,15,113,209,8 // psrlw $0x8,%xmm9
24390 .byte 102,69,15,235,204 // por %xmm12,%xmm9
24391 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
24392 .byte 102,69,15,97,217 // punpcklwd %xmm9,%xmm11
24393 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
24394 .byte 102,69,15,98,203 // punpckldq %xmm11,%xmm9
24395 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
24396 .byte 102,69,15,106,195 // punpckhdq %xmm11,%xmm8
24397 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
24398 .byte 72,173 // lods %ds:(%rsi),%rax
24399 .byte 255,224 // jmpq *%rax
24400
Mike Klein14987eb2017-04-06 10:22:26 -040024401HIDDEN _sk_load_f32_sse41
24402.globl _sk_load_f32_sse41
Mike Klein86714282017-04-13 17:37:38 -040024403FUNCTION(_sk_load_f32_sse41)
Mike Klein14987eb2017-04-06 10:22:26 -040024404_sk_load_f32_sse41:
24405 .byte 72,173 // lods %ds:(%rsi),%rax
24406 .byte 72,139,0 // mov (%rax),%rax
24407 .byte 72,137,249 // mov %rdi,%rcx
24408 .byte 72,193,225,4 // shl $0x4,%rcx
24409 .byte 68,15,16,4,8 // movups (%rax,%rcx,1),%xmm8
24410 .byte 15,16,68,8,16 // movups 0x10(%rax,%rcx,1),%xmm0
24411 .byte 15,16,92,8,32 // movups 0x20(%rax,%rcx,1),%xmm3
24412 .byte 68,15,16,76,8,48 // movups 0x30(%rax,%rcx,1),%xmm9
24413 .byte 65,15,40,208 // movaps %xmm8,%xmm2
24414 .byte 15,20,208 // unpcklps %xmm0,%xmm2
24415 .byte 15,40,203 // movaps %xmm3,%xmm1
24416 .byte 65,15,20,201 // unpcklps %xmm9,%xmm1
24417 .byte 68,15,21,192 // unpckhps %xmm0,%xmm8
24418 .byte 65,15,21,217 // unpckhps %xmm9,%xmm3
24419 .byte 15,40,194 // movaps %xmm2,%xmm0
24420 .byte 102,15,20,193 // unpcklpd %xmm1,%xmm0
24421 .byte 15,18,202 // movhlps %xmm2,%xmm1
24422 .byte 65,15,40,208 // movaps %xmm8,%xmm2
24423 .byte 102,15,20,211 // unpcklpd %xmm3,%xmm2
24424 .byte 65,15,18,216 // movhlps %xmm8,%xmm3
24425 .byte 72,173 // lods %ds:(%rsi),%rax
24426 .byte 255,224 // jmpq *%rax
24427
Mike Klein7c4af542017-03-29 18:21:14 -040024428HIDDEN _sk_store_f32_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024429.globl _sk_store_f32_sse41
Mike Klein86714282017-04-13 17:37:38 -040024430FUNCTION(_sk_store_f32_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024431_sk_store_f32_sse41:
24432 .byte 72,173 // lods %ds:(%rsi),%rax
24433 .byte 72,139,0 // mov (%rax),%rax
24434 .byte 72,137,249 // mov %rdi,%rcx
24435 .byte 72,193,225,4 // shl $0x4,%rcx
24436 .byte 68,15,40,192 // movaps %xmm0,%xmm8
24437 .byte 68,15,40,200 // movaps %xmm0,%xmm9
24438 .byte 68,15,20,201 // unpcklps %xmm1,%xmm9
24439 .byte 68,15,40,210 // movaps %xmm2,%xmm10
24440 .byte 68,15,40,218 // movaps %xmm2,%xmm11
24441 .byte 68,15,20,219 // unpcklps %xmm3,%xmm11
24442 .byte 68,15,21,193 // unpckhps %xmm1,%xmm8
24443 .byte 68,15,21,211 // unpckhps %xmm3,%xmm10
24444 .byte 69,15,40,225 // movaps %xmm9,%xmm12
24445 .byte 102,69,15,20,227 // unpcklpd %xmm11,%xmm12
24446 .byte 69,15,18,217 // movhlps %xmm9,%xmm11
24447 .byte 69,15,40,200 // movaps %xmm8,%xmm9
24448 .byte 102,69,15,20,202 // unpcklpd %xmm10,%xmm9
24449 .byte 69,15,18,208 // movhlps %xmm8,%xmm10
24450 .byte 102,68,15,17,36,8 // movupd %xmm12,(%rax,%rcx,1)
24451 .byte 68,15,17,92,8,16 // movups %xmm11,0x10(%rax,%rcx,1)
24452 .byte 102,68,15,17,76,8,32 // movupd %xmm9,0x20(%rax,%rcx,1)
24453 .byte 68,15,17,84,8,48 // movups %xmm10,0x30(%rax,%rcx,1)
24454 .byte 72,173 // lods %ds:(%rsi),%rax
24455 .byte 255,224 // jmpq *%rax
24456
Mike Klein7c4af542017-03-29 18:21:14 -040024457HIDDEN _sk_clamp_x_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024458.globl _sk_clamp_x_sse41
Mike Klein86714282017-04-13 17:37:38 -040024459FUNCTION(_sk_clamp_x_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024460_sk_clamp_x_sse41:
24461 .byte 72,173 // lods %ds:(%rsi),%rax
24462 .byte 69,15,87,192 // xorps %xmm8,%xmm8
24463 .byte 68,15,95,192 // maxps %xmm0,%xmm8
Mike Kleinfc84dc52017-05-11 15:29:31 -040024464 .byte 243,15,16,0 // movss (%rax),%xmm0
24465 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040024466 .byte 68,15,93,192 // minps %xmm0,%xmm8
24467 .byte 72,173 // lods %ds:(%rsi),%rax
24468 .byte 65,15,40,192 // movaps %xmm8,%xmm0
24469 .byte 255,224 // jmpq *%rax
24470
Mike Klein7c4af542017-03-29 18:21:14 -040024471HIDDEN _sk_clamp_y_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024472.globl _sk_clamp_y_sse41
Mike Klein86714282017-04-13 17:37:38 -040024473FUNCTION(_sk_clamp_y_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024474_sk_clamp_y_sse41:
24475 .byte 72,173 // lods %ds:(%rsi),%rax
24476 .byte 69,15,87,192 // xorps %xmm8,%xmm8
24477 .byte 68,15,95,193 // maxps %xmm1,%xmm8
Mike Kleinfc84dc52017-05-11 15:29:31 -040024478 .byte 243,15,16,8 // movss (%rax),%xmm1
24479 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040024480 .byte 68,15,93,193 // minps %xmm1,%xmm8
24481 .byte 72,173 // lods %ds:(%rsi),%rax
24482 .byte 65,15,40,200 // movaps %xmm8,%xmm1
24483 .byte 255,224 // jmpq *%rax
24484
Mike Klein7c4af542017-03-29 18:21:14 -040024485HIDDEN _sk_repeat_x_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024486.globl _sk_repeat_x_sse41
Mike Klein86714282017-04-13 17:37:38 -040024487FUNCTION(_sk_repeat_x_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024488_sk_repeat_x_sse41:
24489 .byte 72,173 // lods %ds:(%rsi),%rax
24490 .byte 243,68,15,16,0 // movss (%rax),%xmm8
24491 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24492 .byte 68,15,40,200 // movaps %xmm0,%xmm9
24493 .byte 69,15,94,200 // divps %xmm8,%xmm9
24494 .byte 102,69,15,58,8,201,1 // roundps $0x1,%xmm9,%xmm9
24495 .byte 69,15,89,200 // mulps %xmm8,%xmm9
24496 .byte 65,15,92,193 // subps %xmm9,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040024497 .byte 72,173 // lods %ds:(%rsi),%rax
24498 .byte 255,224 // jmpq *%rax
24499
Mike Klein7c4af542017-03-29 18:21:14 -040024500HIDDEN _sk_repeat_y_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024501.globl _sk_repeat_y_sse41
Mike Klein86714282017-04-13 17:37:38 -040024502FUNCTION(_sk_repeat_y_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024503_sk_repeat_y_sse41:
24504 .byte 72,173 // lods %ds:(%rsi),%rax
24505 .byte 243,68,15,16,0 // movss (%rax),%xmm8
24506 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24507 .byte 68,15,40,201 // movaps %xmm1,%xmm9
24508 .byte 69,15,94,200 // divps %xmm8,%xmm9
24509 .byte 102,69,15,58,8,201,1 // roundps $0x1,%xmm9,%xmm9
24510 .byte 69,15,89,200 // mulps %xmm8,%xmm9
24511 .byte 65,15,92,201 // subps %xmm9,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040024512 .byte 72,173 // lods %ds:(%rsi),%rax
24513 .byte 255,224 // jmpq *%rax
24514
Mike Klein7c4af542017-03-29 18:21:14 -040024515HIDDEN _sk_mirror_x_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024516.globl _sk_mirror_x_sse41
Mike Klein86714282017-04-13 17:37:38 -040024517FUNCTION(_sk_mirror_x_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024518_sk_mirror_x_sse41:
24519 .byte 72,173 // lods %ds:(%rsi),%rax
24520 .byte 243,68,15,16,0 // movss (%rax),%xmm8
24521 .byte 69,15,40,200 // movaps %xmm8,%xmm9
24522 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24523 .byte 65,15,92,193 // subps %xmm9,%xmm0
24524 .byte 243,69,15,88,192 // addss %xmm8,%xmm8
24525 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24526 .byte 68,15,40,208 // movaps %xmm0,%xmm10
24527 .byte 69,15,94,208 // divps %xmm8,%xmm10
24528 .byte 102,69,15,58,8,210,1 // roundps $0x1,%xmm10,%xmm10
24529 .byte 69,15,89,208 // mulps %xmm8,%xmm10
24530 .byte 65,15,92,194 // subps %xmm10,%xmm0
24531 .byte 65,15,92,193 // subps %xmm9,%xmm0
24532 .byte 69,15,87,192 // xorps %xmm8,%xmm8
24533 .byte 68,15,92,192 // subps %xmm0,%xmm8
24534 .byte 65,15,84,192 // andps %xmm8,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040024535 .byte 72,173 // lods %ds:(%rsi),%rax
24536 .byte 255,224 // jmpq *%rax
24537
Mike Klein7c4af542017-03-29 18:21:14 -040024538HIDDEN _sk_mirror_y_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024539.globl _sk_mirror_y_sse41
Mike Klein86714282017-04-13 17:37:38 -040024540FUNCTION(_sk_mirror_y_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024541_sk_mirror_y_sse41:
24542 .byte 72,173 // lods %ds:(%rsi),%rax
24543 .byte 243,68,15,16,0 // movss (%rax),%xmm8
24544 .byte 69,15,40,200 // movaps %xmm8,%xmm9
24545 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24546 .byte 65,15,92,201 // subps %xmm9,%xmm1
24547 .byte 243,69,15,88,192 // addss %xmm8,%xmm8
24548 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24549 .byte 68,15,40,209 // movaps %xmm1,%xmm10
24550 .byte 69,15,94,208 // divps %xmm8,%xmm10
24551 .byte 102,69,15,58,8,210,1 // roundps $0x1,%xmm10,%xmm10
24552 .byte 69,15,89,208 // mulps %xmm8,%xmm10
24553 .byte 65,15,92,202 // subps %xmm10,%xmm1
24554 .byte 65,15,92,201 // subps %xmm9,%xmm1
24555 .byte 69,15,87,192 // xorps %xmm8,%xmm8
24556 .byte 68,15,92,193 // subps %xmm1,%xmm8
24557 .byte 65,15,84,200 // andps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040024558 .byte 72,173 // lods %ds:(%rsi),%rax
24559 .byte 255,224 // jmpq *%rax
24560
Mike Klein9f85d682017-05-23 07:52:01 -040024561HIDDEN _sk_clamp_x_1_sse41
24562.globl _sk_clamp_x_1_sse41
24563FUNCTION(_sk_clamp_x_1_sse41)
24564_sk_clamp_x_1_sse41:
24565 .byte 69,15,87,192 // xorps %xmm8,%xmm8
24566 .byte 68,15,95,192 // maxps %xmm0,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040024567 .byte 68,15,93,5,125,27,0,0 // minps 0x1b7d(%rip),%xmm8 # 55e0 <_sk_callback_sse41+0xe9e>
Mike Klein9f85d682017-05-23 07:52:01 -040024568 .byte 72,173 // lods %ds:(%rsi),%rax
24569 .byte 65,15,40,192 // movaps %xmm8,%xmm0
24570 .byte 255,224 // jmpq *%rax
24571
24572HIDDEN _sk_repeat_x_1_sse41
24573.globl _sk_repeat_x_1_sse41
24574FUNCTION(_sk_repeat_x_1_sse41)
24575_sk_repeat_x_1_sse41:
24576 .byte 102,68,15,58,8,192,1 // roundps $0x1,%xmm0,%xmm8
24577 .byte 65,15,92,192 // subps %xmm8,%xmm0
24578 .byte 72,173 // lods %ds:(%rsi),%rax
24579 .byte 255,224 // jmpq *%rax
24580
24581HIDDEN _sk_mirror_x_1_sse41
24582.globl _sk_mirror_x_1_sse41
24583FUNCTION(_sk_mirror_x_1_sse41)
24584_sk_mirror_x_1_sse41:
Mike Klein8ca33562017-05-23 08:07:43 -040024585 .byte 68,15,40,5,110,27,0,0 // movaps 0x1b6e(%rip),%xmm8 # 55f0 <_sk_callback_sse41+0xeae>
Mike Klein9f85d682017-05-23 07:52:01 -040024586 .byte 65,15,88,192 // addps %xmm8,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040024587 .byte 68,15,40,13,114,27,0,0 // movaps 0x1b72(%rip),%xmm9 # 5600 <_sk_callback_sse41+0xebe>
Mike Klein9f85d682017-05-23 07:52:01 -040024588 .byte 68,15,89,200 // mulps %xmm0,%xmm9
24589 .byte 102,69,15,58,8,201,1 // roundps $0x1,%xmm9,%xmm9
24590 .byte 69,15,88,201 // addps %xmm9,%xmm9
24591 .byte 65,15,92,193 // subps %xmm9,%xmm0
24592 .byte 65,15,88,192 // addps %xmm8,%xmm0
24593 .byte 69,15,87,192 // xorps %xmm8,%xmm8
24594 .byte 68,15,92,192 // subps %xmm0,%xmm8
24595 .byte 65,15,84,192 // andps %xmm8,%xmm0
24596 .byte 72,173 // lods %ds:(%rsi),%rax
24597 .byte 255,224 // jmpq *%rax
24598
Mike Klein7c4af542017-03-29 18:21:14 -040024599HIDDEN _sk_luminance_to_alpha_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024600.globl _sk_luminance_to_alpha_sse41
Mike Klein86714282017-04-13 17:37:38 -040024601FUNCTION(_sk_luminance_to_alpha_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024602_sk_luminance_to_alpha_sse41:
Mike Kleinfe560a82017-05-01 12:56:35 -040024603 .byte 15,40,218 // movaps %xmm2,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040024604 .byte 15,89,5,81,27,0,0 // mulps 0x1b51(%rip),%xmm0 # 5610 <_sk_callback_sse41+0xece>
24605 .byte 15,89,13,90,27,0,0 // mulps 0x1b5a(%rip),%xmm1 # 5620 <_sk_callback_sse41+0xede>
Mike Kleinfe560a82017-05-01 12:56:35 -040024606 .byte 15,88,200 // addps %xmm0,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040024607 .byte 15,89,29,96,27,0,0 // mulps 0x1b60(%rip),%xmm3 # 5630 <_sk_callback_sse41+0xeee>
Mike Kleinfe560a82017-05-01 12:56:35 -040024608 .byte 15,88,217 // addps %xmm1,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040024609 .byte 72,173 // lods %ds:(%rsi),%rax
24610 .byte 15,87,192 // xorps %xmm0,%xmm0
24611 .byte 15,87,201 // xorps %xmm1,%xmm1
24612 .byte 15,87,210 // xorps %xmm2,%xmm2
24613 .byte 255,224 // jmpq *%rax
24614
Mike Klein7c4af542017-03-29 18:21:14 -040024615HIDDEN _sk_matrix_2x3_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024616.globl _sk_matrix_2x3_sse41
Mike Klein86714282017-04-13 17:37:38 -040024617FUNCTION(_sk_matrix_2x3_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024618_sk_matrix_2x3_sse41:
24619 .byte 68,15,40,201 // movaps %xmm1,%xmm9
24620 .byte 68,15,40,192 // movaps %xmm0,%xmm8
24621 .byte 72,173 // lods %ds:(%rsi),%rax
24622 .byte 243,15,16,0 // movss (%rax),%xmm0
24623 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
24624 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
24625 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
24626 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24627 .byte 243,68,15,16,88,16 // movss 0x10(%rax),%xmm11
24628 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24629 .byte 69,15,89,209 // mulps %xmm9,%xmm10
24630 .byte 69,15,88,211 // addps %xmm11,%xmm10
24631 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24632 .byte 65,15,88,194 // addps %xmm10,%xmm0
24633 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
24634 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
24635 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24636 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
24637 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24638 .byte 69,15,89,209 // mulps %xmm9,%xmm10
24639 .byte 69,15,88,211 // addps %xmm11,%xmm10
24640 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24641 .byte 65,15,88,202 // addps %xmm10,%xmm1
24642 .byte 72,173 // lods %ds:(%rsi),%rax
24643 .byte 255,224 // jmpq *%rax
24644
Mike Klein7c4af542017-03-29 18:21:14 -040024645HIDDEN _sk_matrix_3x4_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024646.globl _sk_matrix_3x4_sse41
Mike Klein86714282017-04-13 17:37:38 -040024647FUNCTION(_sk_matrix_3x4_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024648_sk_matrix_3x4_sse41:
24649 .byte 68,15,40,201 // movaps %xmm1,%xmm9
24650 .byte 68,15,40,192 // movaps %xmm0,%xmm8
24651 .byte 72,173 // lods %ds:(%rsi),%rax
24652 .byte 243,15,16,0 // movss (%rax),%xmm0
24653 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
24654 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
24655 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
24656 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24657 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
24658 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24659 .byte 243,68,15,16,96,36 // movss 0x24(%rax),%xmm12
24660 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
24661 .byte 68,15,89,218 // mulps %xmm2,%xmm11
24662 .byte 69,15,88,220 // addps %xmm12,%xmm11
24663 .byte 69,15,89,209 // mulps %xmm9,%xmm10
24664 .byte 69,15,88,211 // addps %xmm11,%xmm10
24665 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24666 .byte 65,15,88,194 // addps %xmm10,%xmm0
24667 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
24668 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
24669 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24670 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
24671 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24672 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
24673 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
24674 .byte 68,15,89,218 // mulps %xmm2,%xmm11
24675 .byte 69,15,88,220 // addps %xmm12,%xmm11
24676 .byte 69,15,89,209 // mulps %xmm9,%xmm10
24677 .byte 69,15,88,211 // addps %xmm11,%xmm10
24678 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24679 .byte 65,15,88,202 // addps %xmm10,%xmm1
24680 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
24681 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24682 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
24683 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24684 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
24685 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
24686 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
24687 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
24688 .byte 68,15,89,226 // mulps %xmm2,%xmm12
24689 .byte 69,15,88,229 // addps %xmm13,%xmm12
24690 .byte 69,15,89,217 // mulps %xmm9,%xmm11
24691 .byte 69,15,88,220 // addps %xmm12,%xmm11
24692 .byte 69,15,89,208 // mulps %xmm8,%xmm10
24693 .byte 69,15,88,211 // addps %xmm11,%xmm10
24694 .byte 72,173 // lods %ds:(%rsi),%rax
24695 .byte 65,15,40,210 // movaps %xmm10,%xmm2
24696 .byte 255,224 // jmpq *%rax
24697
Mike Klein7c4af542017-03-29 18:21:14 -040024698HIDDEN _sk_matrix_4x5_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024699.globl _sk_matrix_4x5_sse41
Mike Klein86714282017-04-13 17:37:38 -040024700FUNCTION(_sk_matrix_4x5_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024701_sk_matrix_4x5_sse41:
24702 .byte 68,15,40,201 // movaps %xmm1,%xmm9
24703 .byte 68,15,40,192 // movaps %xmm0,%xmm8
24704 .byte 72,173 // lods %ds:(%rsi),%rax
24705 .byte 243,15,16,0 // movss (%rax),%xmm0
24706 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
24707 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
24708 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
24709 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24710 .byte 243,68,15,16,88,32 // movss 0x20(%rax),%xmm11
24711 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24712 .byte 243,68,15,16,96,48 // movss 0x30(%rax),%xmm12
24713 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
24714 .byte 243,68,15,16,104,64 // movss 0x40(%rax),%xmm13
24715 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
24716 .byte 68,15,89,227 // mulps %xmm3,%xmm12
24717 .byte 69,15,88,229 // addps %xmm13,%xmm12
24718 .byte 68,15,89,218 // mulps %xmm2,%xmm11
24719 .byte 69,15,88,220 // addps %xmm12,%xmm11
24720 .byte 69,15,89,209 // mulps %xmm9,%xmm10
24721 .byte 69,15,88,211 // addps %xmm11,%xmm10
24722 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24723 .byte 65,15,88,194 // addps %xmm10,%xmm0
24724 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
24725 .byte 243,68,15,16,80,20 // movss 0x14(%rax),%xmm10
24726 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24727 .byte 243,68,15,16,88,36 // movss 0x24(%rax),%xmm11
24728 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24729 .byte 243,68,15,16,96,52 // movss 0x34(%rax),%xmm12
24730 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
24731 .byte 243,68,15,16,104,68 // movss 0x44(%rax),%xmm13
24732 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
24733 .byte 68,15,89,227 // mulps %xmm3,%xmm12
24734 .byte 69,15,88,229 // addps %xmm13,%xmm12
24735 .byte 68,15,89,218 // mulps %xmm2,%xmm11
24736 .byte 69,15,88,220 // addps %xmm12,%xmm11
24737 .byte 69,15,89,209 // mulps %xmm9,%xmm10
24738 .byte 69,15,88,211 // addps %xmm11,%xmm10
24739 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24740 .byte 65,15,88,202 // addps %xmm10,%xmm1
24741 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
24742 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24743 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
24744 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24745 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
24746 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
24747 .byte 243,68,15,16,104,56 // movss 0x38(%rax),%xmm13
24748 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
24749 .byte 243,68,15,16,112,72 // movss 0x48(%rax),%xmm14
24750 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
24751 .byte 68,15,89,235 // mulps %xmm3,%xmm13
24752 .byte 69,15,88,238 // addps %xmm14,%xmm13
24753 .byte 68,15,89,226 // mulps %xmm2,%xmm12
24754 .byte 69,15,88,229 // addps %xmm13,%xmm12
24755 .byte 69,15,89,217 // mulps %xmm9,%xmm11
24756 .byte 69,15,88,220 // addps %xmm12,%xmm11
24757 .byte 69,15,89,208 // mulps %xmm8,%xmm10
24758 .byte 69,15,88,211 // addps %xmm11,%xmm10
24759 .byte 243,68,15,16,88,12 // movss 0xc(%rax),%xmm11
24760 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24761 .byte 243,68,15,16,96,28 // movss 0x1c(%rax),%xmm12
24762 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
24763 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
24764 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
24765 .byte 243,68,15,16,112,60 // movss 0x3c(%rax),%xmm14
24766 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
24767 .byte 243,68,15,16,120,76 // movss 0x4c(%rax),%xmm15
24768 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
24769 .byte 68,15,89,243 // mulps %xmm3,%xmm14
24770 .byte 69,15,88,247 // addps %xmm15,%xmm14
24771 .byte 68,15,89,234 // mulps %xmm2,%xmm13
24772 .byte 69,15,88,238 // addps %xmm14,%xmm13
24773 .byte 69,15,89,225 // mulps %xmm9,%xmm12
24774 .byte 69,15,88,229 // addps %xmm13,%xmm12
24775 .byte 69,15,89,216 // mulps %xmm8,%xmm11
24776 .byte 69,15,88,220 // addps %xmm12,%xmm11
24777 .byte 72,173 // lods %ds:(%rsi),%rax
24778 .byte 65,15,40,210 // movaps %xmm10,%xmm2
24779 .byte 65,15,40,219 // movaps %xmm11,%xmm3
24780 .byte 255,224 // jmpq *%rax
24781
Mike Reed02640952017-05-19 15:32:13 -040024782HIDDEN _sk_matrix_4x3_sse41
24783.globl _sk_matrix_4x3_sse41
24784FUNCTION(_sk_matrix_4x3_sse41)
24785_sk_matrix_4x3_sse41:
24786 .byte 68,15,40,201 // movaps %xmm1,%xmm9
24787 .byte 68,15,40,192 // movaps %xmm0,%xmm8
24788 .byte 72,173 // lods %ds:(%rsi),%rax
24789 .byte 243,15,16,0 // movss (%rax),%xmm0
24790 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
24791 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
24792 .byte 243,15,16,80,16 // movss 0x10(%rax),%xmm2
24793 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
24794 .byte 243,15,16,88,32 // movss 0x20(%rax),%xmm3
24795 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
24796 .byte 65,15,89,209 // mulps %xmm9,%xmm2
24797 .byte 15,88,211 // addps %xmm3,%xmm2
24798 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24799 .byte 15,88,194 // addps %xmm2,%xmm0
24800 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
24801 .byte 243,15,16,80,20 // movss 0x14(%rax),%xmm2
24802 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
24803 .byte 243,15,16,88,36 // movss 0x24(%rax),%xmm3
24804 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
24805 .byte 65,15,89,209 // mulps %xmm9,%xmm2
24806 .byte 15,88,211 // addps %xmm3,%xmm2
24807 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24808 .byte 15,88,202 // addps %xmm2,%xmm1
24809 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
24810 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
24811 .byte 243,15,16,88,24 // movss 0x18(%rax),%xmm3
24812 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
24813 .byte 243,68,15,16,80,40 // movss 0x28(%rax),%xmm10
24814 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24815 .byte 65,15,89,217 // mulps %xmm9,%xmm3
24816 .byte 65,15,88,218 // addps %xmm10,%xmm3
24817 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24818 .byte 15,88,211 // addps %xmm3,%xmm2
24819 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
24820 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
24821 .byte 243,68,15,16,80,28 // movss 0x1c(%rax),%xmm10
24822 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24823 .byte 243,68,15,16,88,44 // movss 0x2c(%rax),%xmm11
24824 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24825 .byte 69,15,89,209 // mulps %xmm9,%xmm10
24826 .byte 69,15,88,211 // addps %xmm11,%xmm10
24827 .byte 65,15,89,216 // mulps %xmm8,%xmm3
24828 .byte 65,15,88,218 // addps %xmm10,%xmm3
24829 .byte 72,173 // lods %ds:(%rsi),%rax
24830 .byte 255,224 // jmpq *%rax
24831
Mike Klein7c4af542017-03-29 18:21:14 -040024832HIDDEN _sk_matrix_perspective_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040024833.globl _sk_matrix_perspective_sse41
Mike Klein86714282017-04-13 17:37:38 -040024834FUNCTION(_sk_matrix_perspective_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024835_sk_matrix_perspective_sse41:
24836 .byte 68,15,40,192 // movaps %xmm0,%xmm8
24837 .byte 72,173 // lods %ds:(%rsi),%rax
24838 .byte 243,15,16,0 // movss (%rax),%xmm0
24839 .byte 243,68,15,16,72,4 // movss 0x4(%rax),%xmm9
24840 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
24841 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24842 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
24843 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24844 .byte 68,15,89,201 // mulps %xmm1,%xmm9
24845 .byte 69,15,88,202 // addps %xmm10,%xmm9
24846 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24847 .byte 65,15,88,193 // addps %xmm9,%xmm0
24848 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
24849 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24850 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
24851 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24852 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
24853 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24854 .byte 68,15,89,209 // mulps %xmm1,%xmm10
24855 .byte 69,15,88,211 // addps %xmm11,%xmm10
24856 .byte 69,15,89,200 // mulps %xmm8,%xmm9
24857 .byte 69,15,88,202 // addps %xmm10,%xmm9
24858 .byte 243,68,15,16,80,24 // movss 0x18(%rax),%xmm10
24859 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24860 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
24861 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24862 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
24863 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
24864 .byte 68,15,89,217 // mulps %xmm1,%xmm11
24865 .byte 69,15,88,220 // addps %xmm12,%xmm11
24866 .byte 69,15,89,208 // mulps %xmm8,%xmm10
24867 .byte 69,15,88,211 // addps %xmm11,%xmm10
24868 .byte 65,15,83,202 // rcpps %xmm10,%xmm1
24869 .byte 15,89,193 // mulps %xmm1,%xmm0
24870 .byte 68,15,89,201 // mulps %xmm1,%xmm9
24871 .byte 72,173 // lods %ds:(%rsi),%rax
24872 .byte 65,15,40,201 // movaps %xmm9,%xmm1
24873 .byte 255,224 // jmpq *%rax
24874
Herb Derby4de13042017-05-15 10:49:39 -040024875HIDDEN _sk_evenly_spaced_gradient_sse41
24876.globl _sk_evenly_spaced_gradient_sse41
24877FUNCTION(_sk_evenly_spaced_gradient_sse41)
24878_sk_evenly_spaced_gradient_sse41:
24879 .byte 72,173 // lods %ds:(%rsi),%rax
24880 .byte 72,139,8 // mov (%rax),%rcx
24881 .byte 76,139,88,8 // mov 0x8(%rax),%r11
24882 .byte 72,255,201 // dec %rcx
Mike Klein8ca33562017-05-23 08:07:43 -040024883 .byte 120,7 // js 3f09 <_sk_evenly_spaced_gradient_sse41+0x15>
Herb Derby4de13042017-05-15 10:49:39 -040024884 .byte 243,72,15,42,201 // cvtsi2ss %rcx,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040024885 .byte 235,21 // jmp 3f1e <_sk_evenly_spaced_gradient_sse41+0x2a>
Herb Derby4de13042017-05-15 10:49:39 -040024886 .byte 73,137,200 // mov %rcx,%r8
24887 .byte 73,209,232 // shr %r8
24888 .byte 131,225,1 // and $0x1,%ecx
24889 .byte 76,9,193 // or %r8,%rcx
24890 .byte 243,72,15,42,201 // cvtsi2ss %rcx,%xmm1
24891 .byte 243,15,88,201 // addss %xmm1,%xmm1
24892 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
24893 .byte 15,89,200 // mulps %xmm0,%xmm1
24894 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
24895 .byte 102,73,15,58,22,201,1 // pextrq $0x1,%xmm1,%r9
24896 .byte 69,137,200 // mov %r9d,%r8d
24897 .byte 73,193,233,32 // shr $0x20,%r9
24898 .byte 102,72,15,126,201 // movq %xmm1,%rcx
24899 .byte 65,137,202 // mov %ecx,%r10d
24900 .byte 72,193,233,32 // shr $0x20,%rcx
24901 .byte 243,71,15,16,4,147 // movss (%r11,%r10,4),%xmm8
24902 .byte 102,69,15,58,33,4,139,16 // insertps $0x10,(%r11,%rcx,4),%xmm8
24903 .byte 243,67,15,16,12,131 // movss (%r11,%r8,4),%xmm1
24904 .byte 102,68,15,58,33,193,32 // insertps $0x20,%xmm1,%xmm8
24905 .byte 243,67,15,16,12,139 // movss (%r11,%r9,4),%xmm1
24906 .byte 102,68,15,58,33,193,48 // insertps $0x30,%xmm1,%xmm8
24907 .byte 76,139,88,40 // mov 0x28(%rax),%r11
24908 .byte 243,71,15,16,12,147 // movss (%r11,%r10,4),%xmm9
24909 .byte 102,69,15,58,33,12,139,16 // insertps $0x10,(%r11,%rcx,4),%xmm9
24910 .byte 243,67,15,16,12,131 // movss (%r11,%r8,4),%xmm1
24911 .byte 102,68,15,58,33,201,32 // insertps $0x20,%xmm1,%xmm9
24912 .byte 243,67,15,16,12,139 // movss (%r11,%r9,4),%xmm1
24913 .byte 102,68,15,58,33,201,48 // insertps $0x30,%xmm1,%xmm9
24914 .byte 76,139,88,16 // mov 0x10(%rax),%r11
24915 .byte 243,67,15,16,12,147 // movss (%r11,%r10,4),%xmm1
24916 .byte 102,65,15,58,33,12,139,16 // insertps $0x10,(%r11,%rcx,4),%xmm1
24917 .byte 243,67,15,16,20,131 // movss (%r11,%r8,4),%xmm2
24918 .byte 102,15,58,33,202,32 // insertps $0x20,%xmm2,%xmm1
24919 .byte 243,67,15,16,20,139 // movss (%r11,%r9,4),%xmm2
24920 .byte 102,15,58,33,202,48 // insertps $0x30,%xmm2,%xmm1
24921 .byte 76,139,88,48 // mov 0x30(%rax),%r11
24922 .byte 243,71,15,16,20,147 // movss (%r11,%r10,4),%xmm10
24923 .byte 102,69,15,58,33,20,139,16 // insertps $0x10,(%r11,%rcx,4),%xmm10
24924 .byte 243,67,15,16,20,131 // movss (%r11,%r8,4),%xmm2
24925 .byte 102,68,15,58,33,210,32 // insertps $0x20,%xmm2,%xmm10
24926 .byte 243,67,15,16,20,139 // movss (%r11,%r9,4),%xmm2
24927 .byte 102,68,15,58,33,210,48 // insertps $0x30,%xmm2,%xmm10
24928 .byte 76,139,88,24 // mov 0x18(%rax),%r11
24929 .byte 243,67,15,16,20,147 // movss (%r11,%r10,4),%xmm2
24930 .byte 102,65,15,58,33,20,139,16 // insertps $0x10,(%r11,%rcx,4),%xmm2
24931 .byte 243,67,15,16,28,131 // movss (%r11,%r8,4),%xmm3
24932 .byte 102,15,58,33,211,32 // insertps $0x20,%xmm3,%xmm2
24933 .byte 243,67,15,16,28,139 // movss (%r11,%r9,4),%xmm3
24934 .byte 102,15,58,33,211,48 // insertps $0x30,%xmm3,%xmm2
24935 .byte 76,139,88,56 // mov 0x38(%rax),%r11
24936 .byte 243,71,15,16,28,147 // movss (%r11,%r10,4),%xmm11
24937 .byte 102,69,15,58,33,28,139,16 // insertps $0x10,(%r11,%rcx,4),%xmm11
24938 .byte 243,67,15,16,28,131 // movss (%r11,%r8,4),%xmm3
24939 .byte 102,68,15,58,33,219,32 // insertps $0x20,%xmm3,%xmm11
24940 .byte 243,67,15,16,28,139 // movss (%r11,%r9,4),%xmm3
24941 .byte 102,68,15,58,33,219,48 // insertps $0x30,%xmm3,%xmm11
24942 .byte 76,139,88,32 // mov 0x20(%rax),%r11
24943 .byte 243,67,15,16,28,147 // movss (%r11,%r10,4),%xmm3
24944 .byte 102,65,15,58,33,28,139,16 // insertps $0x10,(%r11,%rcx,4),%xmm3
24945 .byte 243,71,15,16,36,131 // movss (%r11,%r8,4),%xmm12
24946 .byte 102,65,15,58,33,220,32 // insertps $0x20,%xmm12,%xmm3
24947 .byte 243,71,15,16,36,139 // movss (%r11,%r9,4),%xmm12
24948 .byte 102,65,15,58,33,220,48 // insertps $0x30,%xmm12,%xmm3
24949 .byte 72,139,64,64 // mov 0x40(%rax),%rax
24950 .byte 243,70,15,16,36,144 // movss (%rax,%r10,4),%xmm12
24951 .byte 102,68,15,58,33,36,136,16 // insertps $0x10,(%rax,%rcx,4),%xmm12
24952 .byte 243,70,15,16,44,128 // movss (%rax,%r8,4),%xmm13
24953 .byte 102,69,15,58,33,229,32 // insertps $0x20,%xmm13,%xmm12
24954 .byte 243,70,15,16,44,136 // movss (%rax,%r9,4),%xmm13
24955 .byte 102,69,15,58,33,229,48 // insertps $0x30,%xmm13,%xmm12
24956 .byte 68,15,89,192 // mulps %xmm0,%xmm8
24957 .byte 69,15,88,193 // addps %xmm9,%xmm8
24958 .byte 15,89,200 // mulps %xmm0,%xmm1
24959 .byte 65,15,88,202 // addps %xmm10,%xmm1
24960 .byte 15,89,208 // mulps %xmm0,%xmm2
24961 .byte 65,15,88,211 // addps %xmm11,%xmm2
24962 .byte 15,89,216 // mulps %xmm0,%xmm3
24963 .byte 65,15,88,220 // addps %xmm12,%xmm3
24964 .byte 72,173 // lods %ds:(%rsi),%rax
24965 .byte 65,15,40,192 // movaps %xmm8,%xmm0
24966 .byte 255,224 // jmpq *%rax
24967
Mike Klein5c7960b2017-05-11 10:59:22 -040024968HIDDEN _sk_gradient_sse41
24969.globl _sk_gradient_sse41
24970FUNCTION(_sk_gradient_sse41)
24971_sk_gradient_sse41:
Herb Derby7b4202d2017-04-10 10:52:34 -040024972 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby4de13042017-05-15 10:49:39 -040024973 .byte 76,139,0 // mov (%rax),%r8
24974 .byte 102,15,239,201 // pxor %xmm1,%xmm1
24975 .byte 73,131,248,2 // cmp $0x2,%r8
Mike Klein8ca33562017-05-23 08:07:43 -040024976 .byte 114,50 // jb 4101 <_sk_gradient_sse41+0x41>
Herb Derby4de13042017-05-15 10:49:39 -040024977 .byte 72,139,72,72 // mov 0x48(%rax),%rcx
24978 .byte 73,255,200 // dec %r8
24979 .byte 72,131,193,4 // add $0x4,%rcx
24980 .byte 102,15,239,201 // pxor %xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040024981 .byte 15,40,21,91,21,0,0 // movaps 0x155b(%rip),%xmm2 # 5640 <_sk_callback_sse41+0xefe>
Herb Derby4de13042017-05-15 10:49:39 -040024982 .byte 243,15,16,25 // movss (%rcx),%xmm3
Herb Derby7b4202d2017-04-10 10:52:34 -040024983 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Herb Derby4de13042017-05-15 10:49:39 -040024984 .byte 15,194,216,2 // cmpleps %xmm0,%xmm3
24985 .byte 15,84,218 // andps %xmm2,%xmm3
24986 .byte 102,15,254,203 // paddd %xmm3,%xmm1
24987 .byte 72,131,193,4 // add $0x4,%rcx
24988 .byte 73,255,200 // dec %r8
Mike Klein8ca33562017-05-23 08:07:43 -040024989 .byte 117,228 // jne 40e5 <_sk_gradient_sse41+0x25>
Herb Derby4de13042017-05-15 10:49:39 -040024990 .byte 65,86 // push %r14
24991 .byte 83 // push %rbx
24992 .byte 102,73,15,58,22,201,1 // pextrq $0x1,%xmm1,%r9
24993 .byte 69,137,200 // mov %r9d,%r8d
24994 .byte 73,193,233,32 // shr $0x20,%r9
24995 .byte 102,72,15,126,201 // movq %xmm1,%rcx
24996 .byte 65,137,202 // mov %ecx,%r10d
24997 .byte 72,193,233,32 // shr $0x20,%rcx
24998 .byte 76,139,88,8 // mov 0x8(%rax),%r11
24999 .byte 76,139,112,16 // mov 0x10(%rax),%r14
25000 .byte 243,71,15,16,4,147 // movss (%r11,%r10,4),%xmm8
25001 .byte 102,69,15,58,33,4,139,16 // insertps $0x10,(%r11,%rcx,4),%xmm8
25002 .byte 243,67,15,16,12,131 // movss (%r11,%r8,4),%xmm1
25003 .byte 102,68,15,58,33,193,32 // insertps $0x20,%xmm1,%xmm8
25004 .byte 243,67,15,16,12,139 // movss (%r11,%r9,4),%xmm1
25005 .byte 102,68,15,58,33,193,48 // insertps $0x30,%xmm1,%xmm8
25006 .byte 72,139,88,40 // mov 0x28(%rax),%rbx
25007 .byte 243,70,15,16,12,147 // movss (%rbx,%r10,4),%xmm9
25008 .byte 102,68,15,58,33,12,139,16 // insertps $0x10,(%rbx,%rcx,4),%xmm9
25009 .byte 243,66,15,16,12,131 // movss (%rbx,%r8,4),%xmm1
25010 .byte 102,68,15,58,33,201,32 // insertps $0x20,%xmm1,%xmm9
25011 .byte 243,66,15,16,12,139 // movss (%rbx,%r9,4),%xmm1
25012 .byte 102,68,15,58,33,201,48 // insertps $0x30,%xmm1,%xmm9
25013 .byte 243,67,15,16,12,150 // movss (%r14,%r10,4),%xmm1
25014 .byte 102,65,15,58,33,12,142,16 // insertps $0x10,(%r14,%rcx,4),%xmm1
25015 .byte 243,67,15,16,20,134 // movss (%r14,%r8,4),%xmm2
25016 .byte 102,15,58,33,202,32 // insertps $0x20,%xmm2,%xmm1
25017 .byte 243,67,15,16,20,142 // movss (%r14,%r9,4),%xmm2
25018 .byte 102,15,58,33,202,48 // insertps $0x30,%xmm2,%xmm1
25019 .byte 72,139,88,48 // mov 0x30(%rax),%rbx
25020 .byte 243,70,15,16,20,147 // movss (%rbx,%r10,4),%xmm10
25021 .byte 102,68,15,58,33,20,139,16 // insertps $0x10,(%rbx,%rcx,4),%xmm10
25022 .byte 243,66,15,16,20,131 // movss (%rbx,%r8,4),%xmm2
25023 .byte 102,68,15,58,33,210,32 // insertps $0x20,%xmm2,%xmm10
25024 .byte 243,66,15,16,20,139 // movss (%rbx,%r9,4),%xmm2
25025 .byte 102,68,15,58,33,210,48 // insertps $0x30,%xmm2,%xmm10
25026 .byte 72,139,88,24 // mov 0x18(%rax),%rbx
25027 .byte 243,66,15,16,20,147 // movss (%rbx,%r10,4),%xmm2
25028 .byte 102,15,58,33,20,139,16 // insertps $0x10,(%rbx,%rcx,4),%xmm2
25029 .byte 243,66,15,16,28,131 // movss (%rbx,%r8,4),%xmm3
25030 .byte 102,15,58,33,211,32 // insertps $0x20,%xmm3,%xmm2
25031 .byte 243,66,15,16,28,139 // movss (%rbx,%r9,4),%xmm3
25032 .byte 102,15,58,33,211,48 // insertps $0x30,%xmm3,%xmm2
25033 .byte 72,139,88,56 // mov 0x38(%rax),%rbx
25034 .byte 243,70,15,16,28,147 // movss (%rbx,%r10,4),%xmm11
25035 .byte 102,68,15,58,33,28,139,16 // insertps $0x10,(%rbx,%rcx,4),%xmm11
25036 .byte 243,66,15,16,28,131 // movss (%rbx,%r8,4),%xmm3
25037 .byte 102,68,15,58,33,219,32 // insertps $0x20,%xmm3,%xmm11
25038 .byte 243,66,15,16,28,139 // movss (%rbx,%r9,4),%xmm3
25039 .byte 102,68,15,58,33,219,48 // insertps $0x30,%xmm3,%xmm11
25040 .byte 72,139,88,32 // mov 0x20(%rax),%rbx
25041 .byte 243,66,15,16,28,147 // movss (%rbx,%r10,4),%xmm3
25042 .byte 102,15,58,33,28,139,16 // insertps $0x10,(%rbx,%rcx,4),%xmm3
25043 .byte 243,70,15,16,36,131 // movss (%rbx,%r8,4),%xmm12
25044 .byte 102,65,15,58,33,220,32 // insertps $0x20,%xmm12,%xmm3
25045 .byte 243,70,15,16,36,139 // movss (%rbx,%r9,4),%xmm12
25046 .byte 102,65,15,58,33,220,48 // insertps $0x30,%xmm12,%xmm3
25047 .byte 72,139,64,64 // mov 0x40(%rax),%rax
25048 .byte 243,70,15,16,36,144 // movss (%rax,%r10,4),%xmm12
25049 .byte 102,68,15,58,33,36,136,16 // insertps $0x10,(%rax,%rcx,4),%xmm12
25050 .byte 243,70,15,16,44,128 // movss (%rax,%r8,4),%xmm13
25051 .byte 102,69,15,58,33,229,32 // insertps $0x20,%xmm13,%xmm12
25052 .byte 243,70,15,16,44,136 // movss (%rax,%r9,4),%xmm13
25053 .byte 102,69,15,58,33,229,48 // insertps $0x30,%xmm13,%xmm12
25054 .byte 68,15,89,192 // mulps %xmm0,%xmm8
25055 .byte 69,15,88,193 // addps %xmm9,%xmm8
Herb Derby7b4202d2017-04-10 10:52:34 -040025056 .byte 15,89,200 // mulps %xmm0,%xmm1
Herb Derby4de13042017-05-15 10:49:39 -040025057 .byte 65,15,88,202 // addps %xmm10,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040025058 .byte 15,89,208 // mulps %xmm0,%xmm2
Herb Derby4de13042017-05-15 10:49:39 -040025059 .byte 65,15,88,211 // addps %xmm11,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040025060 .byte 15,89,216 // mulps %xmm0,%xmm3
Herb Derby4de13042017-05-15 10:49:39 -040025061 .byte 65,15,88,220 // addps %xmm12,%xmm3
Herb Derby7b4202d2017-04-10 10:52:34 -040025062 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby4de13042017-05-15 10:49:39 -040025063 .byte 65,15,40,192 // movaps %xmm8,%xmm0
25064 .byte 91 // pop %rbx
25065 .byte 65,94 // pop %r14
Herb Derby7b4202d2017-04-10 10:52:34 -040025066 .byte 255,224 // jmpq *%rax
25067
Mike Klein5c7960b2017-05-11 10:59:22 -040025068HIDDEN _sk_evenly_spaced_2_stop_gradient_sse41
25069.globl _sk_evenly_spaced_2_stop_gradient_sse41
25070FUNCTION(_sk_evenly_spaced_2_stop_gradient_sse41)
25071_sk_evenly_spaced_2_stop_gradient_sse41:
Mike Klein8a823fa2017-04-05 17:29:26 -040025072 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040025073 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040025074 .byte 243,15,16,0 // movss (%rax),%xmm0
25075 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Klein8a823fa2017-04-05 17:29:26 -040025076 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040025077 .byte 243,15,16,80,16 // movss 0x10(%rax),%xmm2
25078 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040025079 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040025080 .byte 15,88,194 // addps %xmm2,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040025081 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040025082 .byte 243,15,16,80,20 // movss 0x14(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040025083 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
25084 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040025085 .byte 15,88,202 // addps %xmm2,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040025086 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040025087 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040025088 .byte 243,15,16,88,24 // movss 0x18(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040025089 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
25090 .byte 65,15,89,208 // mulps %xmm8,%xmm2
25091 .byte 15,88,211 // addps %xmm3,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040025092 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040025093 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Herb Derby7b4202d2017-04-10 10:52:34 -040025094 .byte 243,68,15,16,72,28 // movss 0x1c(%rax),%xmm9
Mike Klein8a823fa2017-04-05 17:29:26 -040025095 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
25096 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040025097 .byte 65,15,88,217 // addps %xmm9,%xmm3
25098 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040025099 .byte 255,224 // jmpq *%rax
25100
Mike Klein5c7960b2017-05-11 10:59:22 -040025101HIDDEN _sk_xy_to_unit_angle_sse41
25102.globl _sk_xy_to_unit_angle_sse41
25103FUNCTION(_sk_xy_to_unit_angle_sse41)
25104_sk_xy_to_unit_angle_sse41:
Herb Derby7eb86982017-05-02 19:04:39 -040025105 .byte 68,15,40,200 // movaps %xmm0,%xmm9
25106 .byte 69,15,87,192 // xorps %xmm8,%xmm8
25107 .byte 15,87,192 // xorps %xmm0,%xmm0
25108 .byte 65,15,92,193 // subps %xmm9,%xmm0
25109 .byte 65,15,84,193 // andps %xmm9,%xmm0
25110 .byte 69,15,87,219 // xorps %xmm11,%xmm11
25111 .byte 68,15,92,217 // subps %xmm1,%xmm11
25112 .byte 68,15,84,217 // andps %xmm1,%xmm11
25113 .byte 68,15,40,224 // movaps %xmm0,%xmm12
25114 .byte 69,15,93,227 // minps %xmm11,%xmm12
25115 .byte 68,15,40,208 // movaps %xmm0,%xmm10
25116 .byte 69,15,95,211 // maxps %xmm11,%xmm10
25117 .byte 69,15,94,226 // divps %xmm10,%xmm12
25118 .byte 69,15,40,236 // movaps %xmm12,%xmm13
25119 .byte 69,15,89,237 // mulps %xmm13,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040025120 .byte 68,15,40,21,253,18,0,0 // movaps 0x12fd(%rip),%xmm10 # 5650 <_sk_callback_sse41+0xf0e>
Herb Derby7eb86982017-05-02 19:04:39 -040025121 .byte 69,15,89,213 // mulps %xmm13,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040025122 .byte 68,15,88,21,1,19,0,0 // addps 0x1301(%rip),%xmm10 # 5660 <_sk_callback_sse41+0xf1e>
Herb Derby7eb86982017-05-02 19:04:39 -040025123 .byte 69,15,89,213 // mulps %xmm13,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040025124 .byte 68,15,88,21,5,19,0,0 // addps 0x1305(%rip),%xmm10 # 5670 <_sk_callback_sse41+0xf2e>
Herb Derby7eb86982017-05-02 19:04:39 -040025125 .byte 69,15,89,213 // mulps %xmm13,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040025126 .byte 68,15,88,21,9,19,0,0 // addps 0x1309(%rip),%xmm10 # 5680 <_sk_callback_sse41+0xf3e>
Herb Derby7eb86982017-05-02 19:04:39 -040025127 .byte 69,15,89,212 // mulps %xmm12,%xmm10
25128 .byte 65,15,194,195,1 // cmpltps %xmm11,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040025129 .byte 68,15,40,29,8,19,0,0 // movaps 0x1308(%rip),%xmm11 # 5690 <_sk_callback_sse41+0xf4e>
Herb Derby7eb86982017-05-02 19:04:39 -040025130 .byte 69,15,92,218 // subps %xmm10,%xmm11
25131 .byte 102,69,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm10
25132 .byte 69,15,194,200,1 // cmpltps %xmm8,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040025133 .byte 68,15,40,29,1,19,0,0 // movaps 0x1301(%rip),%xmm11 # 56a0 <_sk_callback_sse41+0xf5e>
Herb Derby7eb86982017-05-02 19:04:39 -040025134 .byte 69,15,92,218 // subps %xmm10,%xmm11
25135 .byte 65,15,40,193 // movaps %xmm9,%xmm0
25136 .byte 102,69,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm10
25137 .byte 15,40,193 // movaps %xmm1,%xmm0
25138 .byte 65,15,194,192,1 // cmpltps %xmm8,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040025139 .byte 68,15,40,13,243,18,0,0 // movaps 0x12f3(%rip),%xmm9 # 56b0 <_sk_callback_sse41+0xf6e>
Herb Derby7eb86982017-05-02 19:04:39 -040025140 .byte 69,15,92,202 // subps %xmm10,%xmm9
25141 .byte 102,69,15,56,20,209 // blendvps %xmm0,%xmm9,%xmm10
25142 .byte 69,15,194,194,7 // cmpordps %xmm10,%xmm8
25143 .byte 69,15,84,194 // andps %xmm10,%xmm8
25144 .byte 72,173 // lods %ds:(%rsi),%rax
25145 .byte 65,15,40,192 // movaps %xmm8,%xmm0
25146 .byte 255,224 // jmpq *%rax
25147
Herb Derby090fbf82017-05-08 15:10:36 -040025148HIDDEN _sk_xy_to_radius_sse41
25149.globl _sk_xy_to_radius_sse41
25150FUNCTION(_sk_xy_to_radius_sse41)
25151_sk_xy_to_radius_sse41:
25152 .byte 15,89,192 // mulps %xmm0,%xmm0
25153 .byte 68,15,40,193 // movaps %xmm1,%xmm8
25154 .byte 69,15,89,192 // mulps %xmm8,%xmm8
25155 .byte 68,15,88,192 // addps %xmm0,%xmm8
Mike Kleinfd35c742017-05-15 15:55:54 -040025156 .byte 65,15,81,192 // sqrtps %xmm8,%xmm0
Herb Derby090fbf82017-05-08 15:10:36 -040025157 .byte 72,173 // lods %ds:(%rsi),%rax
25158 .byte 255,224 // jmpq *%rax
25159
Mike Klein0a904492017-04-12 12:52:48 -040025160HIDDEN _sk_save_xy_sse41
25161.globl _sk_save_xy_sse41
Mike Klein86714282017-04-13 17:37:38 -040025162FUNCTION(_sk_save_xy_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025163_sk_save_xy_sse41:
25164 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040025165 .byte 68,15,40,5,199,18,0,0 // movaps 0x12c7(%rip),%xmm8 # 56c0 <_sk_callback_sse41+0xf7e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025166 .byte 15,17,0 // movups %xmm0,(%rax)
25167 .byte 68,15,40,200 // movaps %xmm0,%xmm9
25168 .byte 69,15,88,200 // addps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040025169 .byte 102,69,15,58,8,209,1 // roundps $0x1,%xmm9,%xmm10
25170 .byte 69,15,92,202 // subps %xmm10,%xmm9
25171 .byte 68,15,88,193 // addps %xmm1,%xmm8
25172 .byte 102,69,15,58,8,208,1 // roundps $0x1,%xmm8,%xmm10
25173 .byte 69,15,92,194 // subps %xmm10,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040025174 .byte 15,17,72,32 // movups %xmm1,0x20(%rax)
25175 .byte 68,15,17,72,64 // movups %xmm9,0x40(%rax)
25176 .byte 68,15,17,64,96 // movups %xmm8,0x60(%rax)
25177 .byte 72,173 // lods %ds:(%rsi),%rax
25178 .byte 255,224 // jmpq *%rax
25179
25180HIDDEN _sk_accumulate_sse41
25181.globl _sk_accumulate_sse41
Mike Klein86714282017-04-13 17:37:38 -040025182FUNCTION(_sk_accumulate_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025183_sk_accumulate_sse41:
25184 .byte 72,173 // lods %ds:(%rsi),%rax
25185 .byte 68,15,16,128,128,0,0,0 // movups 0x80(%rax),%xmm8
25186 .byte 68,15,16,136,160,0,0,0 // movups 0xa0(%rax),%xmm9
25187 .byte 69,15,89,200 // mulps %xmm8,%xmm9
25188 .byte 69,15,40,193 // movaps %xmm9,%xmm8
25189 .byte 68,15,89,192 // mulps %xmm0,%xmm8
25190 .byte 65,15,88,224 // addps %xmm8,%xmm4
25191 .byte 69,15,40,193 // movaps %xmm9,%xmm8
25192 .byte 68,15,89,193 // mulps %xmm1,%xmm8
25193 .byte 65,15,88,232 // addps %xmm8,%xmm5
25194 .byte 69,15,40,193 // movaps %xmm9,%xmm8
25195 .byte 68,15,89,194 // mulps %xmm2,%xmm8
25196 .byte 65,15,88,240 // addps %xmm8,%xmm6
25197 .byte 68,15,89,203 // mulps %xmm3,%xmm9
25198 .byte 65,15,88,249 // addps %xmm9,%xmm7
25199 .byte 72,173 // lods %ds:(%rsi),%rax
25200 .byte 255,224 // jmpq *%rax
25201
25202HIDDEN _sk_bilinear_nx_sse41
25203.globl _sk_bilinear_nx_sse41
Mike Klein86714282017-04-13 17:37:38 -040025204FUNCTION(_sk_bilinear_nx_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025205_sk_bilinear_nx_sse41:
25206 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040025207 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025208 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025209 .byte 15,88,5,73,18,0,0 // addps 0x1249(%rip),%xmm0 # 56d0 <_sk_callback_sse41+0xf8e>
25210 .byte 68,15,40,13,81,18,0,0 // movaps 0x1251(%rip),%xmm9 # 56e0 <_sk_callback_sse41+0xf9e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025211 .byte 69,15,92,200 // subps %xmm8,%xmm9
25212 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040025213 .byte 72,173 // lods %ds:(%rsi),%rax
25214 .byte 255,224 // jmpq *%rax
25215
25216HIDDEN _sk_bilinear_px_sse41
25217.globl _sk_bilinear_px_sse41
Mike Klein86714282017-04-13 17:37:38 -040025218FUNCTION(_sk_bilinear_px_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025219_sk_bilinear_px_sse41:
25220 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040025221 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025222 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025223 .byte 15,88,5,64,18,0,0 // addps 0x1240(%rip),%xmm0 # 56f0 <_sk_callback_sse41+0xfae>
Mike Kleinfe560a82017-05-01 12:56:35 -040025224 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040025225 .byte 72,173 // lods %ds:(%rsi),%rax
25226 .byte 255,224 // jmpq *%rax
25227
25228HIDDEN _sk_bilinear_ny_sse41
25229.globl _sk_bilinear_ny_sse41
Mike Klein86714282017-04-13 17:37:38 -040025230FUNCTION(_sk_bilinear_ny_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025231_sk_bilinear_ny_sse41:
25232 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040025233 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040025234 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025235 .byte 15,88,13,50,18,0,0 // addps 0x1232(%rip),%xmm1 # 5700 <_sk_callback_sse41+0xfbe>
25236 .byte 68,15,40,13,58,18,0,0 // movaps 0x123a(%rip),%xmm9 # 5710 <_sk_callback_sse41+0xfce>
Mike Kleinfe560a82017-05-01 12:56:35 -040025237 .byte 69,15,92,200 // subps %xmm8,%xmm9
25238 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040025239 .byte 72,173 // lods %ds:(%rsi),%rax
25240 .byte 255,224 // jmpq *%rax
25241
25242HIDDEN _sk_bilinear_py_sse41
25243.globl _sk_bilinear_py_sse41
Mike Klein86714282017-04-13 17:37:38 -040025244FUNCTION(_sk_bilinear_py_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025245_sk_bilinear_py_sse41:
25246 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040025247 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040025248 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025249 .byte 15,88,13,40,18,0,0 // addps 0x1228(%rip),%xmm1 # 5720 <_sk_callback_sse41+0xfde>
Mike Kleinfe560a82017-05-01 12:56:35 -040025250 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040025251 .byte 72,173 // lods %ds:(%rsi),%rax
25252 .byte 255,224 // jmpq *%rax
25253
25254HIDDEN _sk_bicubic_n3x_sse41
25255.globl _sk_bicubic_n3x_sse41
Mike Klein86714282017-04-13 17:37:38 -040025256FUNCTION(_sk_bicubic_n3x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025257_sk_bicubic_n3x_sse41:
25258 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040025259 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025260 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025261 .byte 15,88,5,27,18,0,0 // addps 0x121b(%rip),%xmm0 # 5730 <_sk_callback_sse41+0xfee>
25262 .byte 68,15,40,13,35,18,0,0 // movaps 0x1223(%rip),%xmm9 # 5740 <_sk_callback_sse41+0xffe>
Mike Kleinfe560a82017-05-01 12:56:35 -040025263 .byte 69,15,92,200 // subps %xmm8,%xmm9
25264 .byte 69,15,40,193 // movaps %xmm9,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040025265 .byte 69,15,89,192 // mulps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025266 .byte 68,15,89,13,31,18,0,0 // mulps 0x121f(%rip),%xmm9 # 5750 <_sk_callback_sse41+0x100e>
25267 .byte 68,15,88,13,39,18,0,0 // addps 0x1227(%rip),%xmm9 # 5760 <_sk_callback_sse41+0x101e>
Mike Klein0a904492017-04-12 12:52:48 -040025268 .byte 69,15,89,200 // mulps %xmm8,%xmm9
25269 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
25270 .byte 72,173 // lods %ds:(%rsi),%rax
25271 .byte 255,224 // jmpq *%rax
25272
25273HIDDEN _sk_bicubic_n1x_sse41
25274.globl _sk_bicubic_n1x_sse41
Mike Klein86714282017-04-13 17:37:38 -040025275FUNCTION(_sk_bicubic_n1x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025276_sk_bicubic_n1x_sse41:
25277 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040025278 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025279 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025280 .byte 15,88,5,22,18,0,0 // addps 0x1216(%rip),%xmm0 # 5770 <_sk_callback_sse41+0x102e>
25281 .byte 68,15,40,13,30,18,0,0 // movaps 0x121e(%rip),%xmm9 # 5780 <_sk_callback_sse41+0x103e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025282 .byte 69,15,92,200 // subps %xmm8,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040025283 .byte 68,15,40,5,34,18,0,0 // movaps 0x1222(%rip),%xmm8 # 5790 <_sk_callback_sse41+0x104e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025284 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025285 .byte 68,15,88,5,38,18,0,0 // addps 0x1226(%rip),%xmm8 # 57a0 <_sk_callback_sse41+0x105e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025286 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025287 .byte 68,15,88,5,42,18,0,0 // addps 0x122a(%rip),%xmm8 # 57b0 <_sk_callback_sse41+0x106e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025288 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025289 .byte 68,15,88,5,46,18,0,0 // addps 0x122e(%rip),%xmm8 # 57c0 <_sk_callback_sse41+0x107e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025290 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040025291 .byte 72,173 // lods %ds:(%rsi),%rax
25292 .byte 255,224 // jmpq *%rax
25293
25294HIDDEN _sk_bicubic_p1x_sse41
25295.globl _sk_bicubic_p1x_sse41
Mike Klein86714282017-04-13 17:37:38 -040025296FUNCTION(_sk_bicubic_p1x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025297_sk_bicubic_p1x_sse41:
25298 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040025299 .byte 68,15,40,5,40,18,0,0 // movaps 0x1228(%rip),%xmm8 # 57d0 <_sk_callback_sse41+0x108e>
Mike Klein0a904492017-04-12 12:52:48 -040025300 .byte 15,16,0 // movups (%rax),%xmm0
25301 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
25302 .byte 65,15,88,192 // addps %xmm8,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040025303 .byte 68,15,40,21,36,18,0,0 // movaps 0x1224(%rip),%xmm10 # 57e0 <_sk_callback_sse41+0x109e>
Mike Klein0a904492017-04-12 12:52:48 -040025304 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040025305 .byte 68,15,88,21,40,18,0,0 // addps 0x1228(%rip),%xmm10 # 57f0 <_sk_callback_sse41+0x10ae>
Mike Klein0a904492017-04-12 12:52:48 -040025306 .byte 69,15,89,209 // mulps %xmm9,%xmm10
25307 .byte 69,15,88,208 // addps %xmm8,%xmm10
Mike Klein0a904492017-04-12 12:52:48 -040025308 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040025309 .byte 68,15,88,21,36,18,0,0 // addps 0x1224(%rip),%xmm10 # 5800 <_sk_callback_sse41+0x10be>
Mike Klein0a904492017-04-12 12:52:48 -040025310 .byte 68,15,17,144,128,0,0,0 // movups %xmm10,0x80(%rax)
25311 .byte 72,173 // lods %ds:(%rsi),%rax
25312 .byte 255,224 // jmpq *%rax
25313
25314HIDDEN _sk_bicubic_p3x_sse41
25315.globl _sk_bicubic_p3x_sse41
Mike Klein86714282017-04-13 17:37:38 -040025316FUNCTION(_sk_bicubic_p3x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025317_sk_bicubic_p3x_sse41:
25318 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040025319 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040025320 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025321 .byte 15,88,5,23,18,0,0 // addps 0x1217(%rip),%xmm0 # 5810 <_sk_callback_sse41+0x10ce>
Mike Kleinfe560a82017-05-01 12:56:35 -040025322 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040025323 .byte 69,15,89,201 // mulps %xmm9,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040025324 .byte 68,15,89,5,23,18,0,0 // mulps 0x1217(%rip),%xmm8 # 5820 <_sk_callback_sse41+0x10de>
25325 .byte 68,15,88,5,31,18,0,0 // addps 0x121f(%rip),%xmm8 # 5830 <_sk_callback_sse41+0x10ee>
Mike Klein0a904492017-04-12 12:52:48 -040025326 .byte 69,15,89,193 // mulps %xmm9,%xmm8
25327 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
25328 .byte 72,173 // lods %ds:(%rsi),%rax
25329 .byte 255,224 // jmpq *%rax
25330
25331HIDDEN _sk_bicubic_n3y_sse41
25332.globl _sk_bicubic_n3y_sse41
Mike Klein86714282017-04-13 17:37:38 -040025333FUNCTION(_sk_bicubic_n3y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025334_sk_bicubic_n3y_sse41:
25335 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040025336 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040025337 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025338 .byte 15,88,13,13,18,0,0 // addps 0x120d(%rip),%xmm1 # 5840 <_sk_callback_sse41+0x10fe>
25339 .byte 68,15,40,13,21,18,0,0 // movaps 0x1215(%rip),%xmm9 # 5850 <_sk_callback_sse41+0x110e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025340 .byte 69,15,92,200 // subps %xmm8,%xmm9
25341 .byte 69,15,40,193 // movaps %xmm9,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040025342 .byte 69,15,89,192 // mulps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025343 .byte 68,15,89,13,17,18,0,0 // mulps 0x1211(%rip),%xmm9 # 5860 <_sk_callback_sse41+0x111e>
25344 .byte 68,15,88,13,25,18,0,0 // addps 0x1219(%rip),%xmm9 # 5870 <_sk_callback_sse41+0x112e>
Mike Klein0a904492017-04-12 12:52:48 -040025345 .byte 69,15,89,200 // mulps %xmm8,%xmm9
25346 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
25347 .byte 72,173 // lods %ds:(%rsi),%rax
25348 .byte 255,224 // jmpq *%rax
25349
25350HIDDEN _sk_bicubic_n1y_sse41
25351.globl _sk_bicubic_n1y_sse41
Mike Klein86714282017-04-13 17:37:38 -040025352FUNCTION(_sk_bicubic_n1y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025353_sk_bicubic_n1y_sse41:
25354 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040025355 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040025356 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025357 .byte 15,88,13,7,18,0,0 // addps 0x1207(%rip),%xmm1 # 5880 <_sk_callback_sse41+0x113e>
25358 .byte 68,15,40,13,15,18,0,0 // movaps 0x120f(%rip),%xmm9 # 5890 <_sk_callback_sse41+0x114e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025359 .byte 69,15,92,200 // subps %xmm8,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040025360 .byte 68,15,40,5,19,18,0,0 // movaps 0x1213(%rip),%xmm8 # 58a0 <_sk_callback_sse41+0x115e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025361 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025362 .byte 68,15,88,5,23,18,0,0 // addps 0x1217(%rip),%xmm8 # 58b0 <_sk_callback_sse41+0x116e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025363 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025364 .byte 68,15,88,5,27,18,0,0 // addps 0x121b(%rip),%xmm8 # 58c0 <_sk_callback_sse41+0x117e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025365 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025366 .byte 68,15,88,5,31,18,0,0 // addps 0x121f(%rip),%xmm8 # 58d0 <_sk_callback_sse41+0x118e>
Mike Kleinfe560a82017-05-01 12:56:35 -040025367 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040025368 .byte 72,173 // lods %ds:(%rsi),%rax
25369 .byte 255,224 // jmpq *%rax
25370
25371HIDDEN _sk_bicubic_p1y_sse41
25372.globl _sk_bicubic_p1y_sse41
Mike Klein86714282017-04-13 17:37:38 -040025373FUNCTION(_sk_bicubic_p1y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025374_sk_bicubic_p1y_sse41:
25375 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040025376 .byte 68,15,40,5,25,18,0,0 // movaps 0x1219(%rip),%xmm8 # 58e0 <_sk_callback_sse41+0x119e>
Mike Klein0a904492017-04-12 12:52:48 -040025377 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
25378 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
25379 .byte 65,15,88,200 // addps %xmm8,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040025380 .byte 68,15,40,21,20,18,0,0 // movaps 0x1214(%rip),%xmm10 # 58f0 <_sk_callback_sse41+0x11ae>
Mike Klein0a904492017-04-12 12:52:48 -040025381 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040025382 .byte 68,15,88,21,24,18,0,0 // addps 0x1218(%rip),%xmm10 # 5900 <_sk_callback_sse41+0x11be>
Mike Klein0a904492017-04-12 12:52:48 -040025383 .byte 69,15,89,209 // mulps %xmm9,%xmm10
25384 .byte 69,15,88,208 // addps %xmm8,%xmm10
Mike Klein0a904492017-04-12 12:52:48 -040025385 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040025386 .byte 68,15,88,21,20,18,0,0 // addps 0x1214(%rip),%xmm10 # 5910 <_sk_callback_sse41+0x11ce>
Mike Klein0a904492017-04-12 12:52:48 -040025387 .byte 68,15,17,144,160,0,0,0 // movups %xmm10,0xa0(%rax)
25388 .byte 72,173 // lods %ds:(%rsi),%rax
25389 .byte 255,224 // jmpq *%rax
25390
25391HIDDEN _sk_bicubic_p3y_sse41
25392.globl _sk_bicubic_p3y_sse41
Mike Klein86714282017-04-13 17:37:38 -040025393FUNCTION(_sk_bicubic_p3y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040025394_sk_bicubic_p3y_sse41:
25395 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040025396 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040025397 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040025398 .byte 15,88,13,6,18,0,0 // addps 0x1206(%rip),%xmm1 # 5920 <_sk_callback_sse41+0x11de>
Mike Kleinfe560a82017-05-01 12:56:35 -040025399 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040025400 .byte 69,15,89,201 // mulps %xmm9,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040025401 .byte 68,15,89,5,6,18,0,0 // mulps 0x1206(%rip),%xmm8 # 5930 <_sk_callback_sse41+0x11ee>
25402 .byte 68,15,88,5,14,18,0,0 // addps 0x120e(%rip),%xmm8 # 5940 <_sk_callback_sse41+0x11fe>
Mike Klein0a904492017-04-12 12:52:48 -040025403 .byte 69,15,89,193 // mulps %xmm9,%xmm8
25404 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
25405 .byte 72,173 // lods %ds:(%rsi),%rax
25406 .byte 255,224 // jmpq *%rax
25407
Mike Klein7fee90c2017-04-07 16:55:09 -040025408HIDDEN _sk_callback_sse41
25409.globl _sk_callback_sse41
25410FUNCTION(_sk_callback_sse41)
25411_sk_callback_sse41:
25412 .byte 65,87 // push %r15
25413 .byte 65,86 // push %r14
Mike Kleinc17dc242017-04-20 16:21:57 -040025414 .byte 65,84 // push %r12
Mike Klein7fee90c2017-04-07 16:55:09 -040025415 .byte 83 // push %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040025416 .byte 72,131,236,72 // sub $0x48,%rsp
25417 .byte 15,41,124,36,48 // movaps %xmm7,0x30(%rsp)
25418 .byte 15,41,116,36,32 // movaps %xmm6,0x20(%rsp)
25419 .byte 15,41,108,36,16 // movaps %xmm5,0x10(%rsp)
25420 .byte 15,41,36,36 // movaps %xmm4,(%rsp)
Mike Klein7fee90c2017-04-07 16:55:09 -040025421 .byte 73,137,214 // mov %rdx,%r14
25422 .byte 73,137,255 // mov %rdi,%r15
25423 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinc17dc242017-04-20 16:21:57 -040025424 .byte 72,137,195 // mov %rax,%rbx
25425 .byte 73,137,244 // mov %rsi,%r12
25426 .byte 15,40,224 // movaps %xmm0,%xmm4
25427 .byte 15,20,225 // unpcklps %xmm1,%xmm4
25428 .byte 15,40,234 // movaps %xmm2,%xmm5
25429 .byte 15,20,235 // unpcklps %xmm3,%xmm5
25430 .byte 15,21,193 // unpckhps %xmm1,%xmm0
25431 .byte 15,21,211 // unpckhps %xmm3,%xmm2
25432 .byte 15,40,204 // movaps %xmm4,%xmm1
25433 .byte 102,15,20,205 // unpcklpd %xmm5,%xmm1
25434 .byte 15,18,236 // movhlps %xmm4,%xmm5
25435 .byte 15,40,216 // movaps %xmm0,%xmm3
25436 .byte 102,15,20,218 // unpcklpd %xmm2,%xmm3
25437 .byte 15,18,208 // movhlps %xmm0,%xmm2
25438 .byte 102,15,17,75,8 // movupd %xmm1,0x8(%rbx)
25439 .byte 15,17,107,24 // movups %xmm5,0x18(%rbx)
25440 .byte 102,15,17,91,40 // movupd %xmm3,0x28(%rbx)
25441 .byte 15,17,83,56 // movups %xmm2,0x38(%rbx)
Mike Klein7fee90c2017-04-07 16:55:09 -040025442 .byte 190,4,0,0,0 // mov $0x4,%esi
Mike Kleinc17dc242017-04-20 16:21:57 -040025443 .byte 72,137,223 // mov %rbx,%rdi
25444 .byte 255,19 // callq *(%rbx)
25445 .byte 72,139,131,136,0,0,0 // mov 0x88(%rbx),%rax
25446 .byte 15,16,32 // movups (%rax),%xmm4
25447 .byte 15,16,64,16 // movups 0x10(%rax),%xmm0
25448 .byte 15,16,88,32 // movups 0x20(%rax),%xmm3
25449 .byte 15,16,80,48 // movups 0x30(%rax),%xmm2
25450 .byte 15,40,236 // movaps %xmm4,%xmm5
25451 .byte 15,20,232 // unpcklps %xmm0,%xmm5
25452 .byte 15,40,203 // movaps %xmm3,%xmm1
25453 .byte 15,20,202 // unpcklps %xmm2,%xmm1
25454 .byte 15,21,224 // unpckhps %xmm0,%xmm4
25455 .byte 15,21,218 // unpckhps %xmm2,%xmm3
25456 .byte 15,40,197 // movaps %xmm5,%xmm0
25457 .byte 102,15,20,193 // unpcklpd %xmm1,%xmm0
25458 .byte 15,18,205 // movhlps %xmm5,%xmm1
25459 .byte 15,40,212 // movaps %xmm4,%xmm2
25460 .byte 102,15,20,211 // unpcklpd %xmm3,%xmm2
25461 .byte 15,18,220 // movhlps %xmm4,%xmm3
25462 .byte 76,137,230 // mov %r12,%rsi
Mike Klein7fee90c2017-04-07 16:55:09 -040025463 .byte 72,173 // lods %ds:(%rsi),%rax
25464 .byte 76,137,255 // mov %r15,%rdi
25465 .byte 76,137,242 // mov %r14,%rdx
Mike Kleinc17dc242017-04-20 16:21:57 -040025466 .byte 15,40,36,36 // movaps (%rsp),%xmm4
25467 .byte 15,40,108,36,16 // movaps 0x10(%rsp),%xmm5
25468 .byte 15,40,116,36,32 // movaps 0x20(%rsp),%xmm6
25469 .byte 15,40,124,36,48 // movaps 0x30(%rsp),%xmm7
25470 .byte 72,131,196,72 // add $0x48,%rsp
Mike Klein7fee90c2017-04-07 16:55:09 -040025471 .byte 91 // pop %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040025472 .byte 65,92 // pop %r12
Mike Klein7fee90c2017-04-07 16:55:09 -040025473 .byte 65,94 // pop %r14
25474 .byte 65,95 // pop %r15
25475 .byte 255,224 // jmpq *%rax
25476
Mike Klein2229b572017-04-21 10:30:29 -040025477BALIGN16
25478 .byte 0,0 // add %al,(%rax)
25479 .byte 0,63 // add %bh,(%rdi)
25480 .byte 0,0 // add %al,(%rax)
25481 .byte 0,63 // add %bh,(%rdi)
25482 .byte 0,0 // add %al,(%rax)
25483 .byte 0,63 // add %bh,(%rdi)
25484 .byte 0,0 // add %al,(%rax)
25485 .byte 0,63 // add %bh,(%rdi)
25486 .byte 0,0 // add %al,(%rax)
25487 .byte 128,63,0 // cmpb $0x0,(%rdi)
25488 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25489 .byte 63 // (bad)
25490 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040025491 .byte 128,63,1 // cmpb $0x1,(%rdi)
25492 .byte 0,0 // add %al,(%rax)
25493 .byte 0,1 // add %al,(%rcx)
25494 .byte 0,0 // add %al,(%rax)
25495 .byte 0,1 // add %al,(%rcx)
25496 .byte 0,0 // add %al,(%rax)
25497 .byte 0,1 // add %al,(%rcx)
25498 .byte 0,0 // add %al,(%rax)
25499 .byte 0,4,0 // add %al,(%rax,%rax,1)
25500 .byte 0,0 // add %al,(%rax)
25501 .byte 4,0 // add $0x0,%al
25502 .byte 0,0 // add %al,(%rax)
25503 .byte 4,0 // add $0x0,%al
25504 .byte 0,0 // add %al,(%rax)
25505 .byte 4,0 // add $0x0,%al
25506 .byte 0,0 // add %al,(%rax)
25507 .byte 2,0 // add (%rax),%al
25508 .byte 0,0 // add %al,(%rax)
25509 .byte 2,0 // add (%rax),%al
25510 .byte 0,0 // add %al,(%rax)
25511 .byte 2,0 // add (%rax),%al
25512 .byte 0,0 // add %al,(%rax)
25513 .byte 2,0 // add (%rax),%al
25514 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040025515 .byte 0,0 // add %al,(%rax)
Mike Kleindb711c92017-05-03 17:57:48 -040025516 .byte 128,60,0,0 // cmpb $0x0,(%rax,%rax,1)
25517 .byte 128,60,0,0 // cmpb $0x0,(%rax,%rax,1)
25518 .byte 128,60,0,0 // cmpb $0x0,(%rax,%rax,1)
25519 .byte 128,60,0,0 // cmpb $0x0,(%rax,%rax,1)
25520 .byte 252 // cld
25521 .byte 190,0,0,252,190 // mov $0xbefc0000,%esi
25522 .byte 0,0 // add %al,(%rax)
25523 .byte 252 // cld
25524 .byte 190,0,0,252,190 // mov $0xbefc0000,%esi
Mike Klein581e6982017-05-03 13:05:13 -040025525 .byte 0,0 // add %al,(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040025526 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040025527 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25528 .byte 63 // (bad)
25529 .byte 0,0 // add %al,(%rax)
25530 .byte 128,63,0 // cmpb $0x0,(%rdi)
25531 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25532 .byte 63 // (bad)
25533 .byte 0,0 // add %al,(%rax)
25534 .byte 128,63,0 // cmpb $0x0,(%rdi)
25535 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25536 .byte 63 // (bad)
25537 .byte 0,0 // add %al,(%rax)
25538 .byte 128,63,0 // cmpb $0x0,(%rdi)
25539 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25540 .byte 63 // (bad)
25541 .byte 0,0 // add %al,(%rax)
25542 .byte 128,63,0 // cmpb $0x0,(%rdi)
25543 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25544 .byte 63 // (bad)
25545 .byte 0,0 // add %al,(%rax)
25546 .byte 128,63,0 // cmpb $0x0,(%rdi)
25547 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25548 .byte 63 // (bad)
25549 .byte 0,0 // add %al,(%rax)
25550 .byte 128,63,0 // cmpb $0x0,(%rdi)
25551 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25552 .byte 63 // (bad)
25553 .byte 0,0 // add %al,(%rax)
25554 .byte 128,63,0 // cmpb $0x0,(%rdi)
25555 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25556 .byte 63 // (bad)
25557 .byte 0,0 // add %al,(%rax)
25558 .byte 128,63,0 // cmpb $0x0,(%rdi)
25559 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25560 .byte 63 // (bad)
25561 .byte 0,0 // add %al,(%rax)
25562 .byte 128,63,0 // cmpb $0x0,(%rdi)
25563 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25564 .byte 63 // (bad)
25565 .byte 0,0 // add %al,(%rax)
25566 .byte 128,63,0 // cmpb $0x0,(%rdi)
25567 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25568 .byte 63 // (bad)
25569 .byte 0,0 // add %al,(%rax)
25570 .byte 128,63,0 // cmpb $0x0,(%rdi)
25571 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25572 .byte 63 // (bad)
25573 .byte 0,0 // add %al,(%rax)
25574 .byte 128,63,0 // cmpb $0x0,(%rdi)
25575 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25576 .byte 63 // (bad)
25577 .byte 0,0 // add %al,(%rax)
25578 .byte 128,63,0 // cmpb $0x0,(%rdi)
25579 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25580 .byte 63 // (bad)
25581 .byte 0,0 // add %al,(%rax)
25582 .byte 128,63,0 // cmpb $0x0,(%rdi)
25583 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25584 .byte 63 // (bad)
25585 .byte 0,0 // add %al,(%rax)
25586 .byte 128,63,0 // cmpb $0x0,(%rdi)
25587 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25588 .byte 63 // (bad)
25589 .byte 0,0 // add %al,(%rax)
25590 .byte 128,63,0 // cmpb $0x0,(%rdi)
25591 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25592 .byte 63 // (bad)
25593 .byte 0,0 // add %al,(%rax)
25594 .byte 128,63,0 // cmpb $0x0,(%rdi)
25595 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25596 .byte 63 // (bad)
25597 .byte 0,0 // add %al,(%rax)
25598 .byte 128,63,0 // cmpb $0x0,(%rdi)
25599 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25600 .byte 63 // (bad)
25601 .byte 0,0 // add %al,(%rax)
25602 .byte 128,63,0 // cmpb $0x0,(%rdi)
25603 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25604 .byte 63 // (bad)
25605 .byte 0,0 // add %al,(%rax)
25606 .byte 128,63,0 // cmpb $0x0,(%rdi)
25607 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25608 .byte 63 // (bad)
25609 .byte 0,0 // add %al,(%rax)
25610 .byte 128,63,0 // cmpb $0x0,(%rdi)
25611 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25612 .byte 63 // (bad)
25613 .byte 0,0 // add %al,(%rax)
25614 .byte 128,63,0 // cmpb $0x0,(%rdi)
25615 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040025616 .byte 191,0,0,128,191 // mov $0xbf800000,%edi
Mike Kleinfe560a82017-05-01 12:56:35 -040025617 .byte 0,0 // add %al,(%rax)
25618 .byte 128,191,0,0,128,191,0 // cmpb $0x0,-0x40800000(%rdi)
Mike Klein581e6982017-05-03 13:05:13 -040025619 .byte 0,224 // add %ah,%al
25620 .byte 64,0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040025621 .byte 224,64 // loopne 49f8 <.literal16+0x1d8>
Mike Kleinfe560a82017-05-01 12:56:35 -040025622 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040025623 .byte 224,64 // loopne 49fc <.literal16+0x1dc>
Mike Kleinfe560a82017-05-01 12:56:35 -040025624 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040025625 .byte 224,64 // loopne 4a00 <.literal16+0x1e0>
Mike Klein08aa88d2017-05-12 12:59:24 -040025626 .byte 154 // (bad)
25627 .byte 153 // cltd
25628 .byte 153 // cltd
25629 .byte 62,154 // ds (bad)
25630 .byte 153 // cltd
25631 .byte 153 // cltd
25632 .byte 62,154 // ds (bad)
25633 .byte 153 // cltd
25634 .byte 153 // cltd
25635 .byte 62,154 // ds (bad)
25636 .byte 153 // cltd
25637 .byte 153 // cltd
25638 .byte 62,61,10,23,63,61 // ds cmp $0x3d3f170a,%eax
25639 .byte 10,23 // or (%rdi),%dl
25640 .byte 63 // (bad)
25641 .byte 61,10,23,63,61 // cmp $0x3d3f170a,%eax
25642 .byte 10,23 // or (%rdi),%dl
25643 .byte 63 // (bad)
25644 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025645 .byte 71,225,61 // rex.RXB loope 4a21 <.literal16+0x201>
Mike Klein08aa88d2017-05-12 12:59:24 -040025646 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025647 .byte 71,225,61 // rex.RXB loope 4a25 <.literal16+0x205>
Mike Klein08aa88d2017-05-12 12:59:24 -040025648 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025649 .byte 71,225,61 // rex.RXB loope 4a29 <.literal16+0x209>
Mike Klein08aa88d2017-05-12 12:59:24 -040025650 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025651 .byte 71,225,61 // rex.RXB loope 4a2d <.literal16+0x20d>
Mike Kleinbb338332017-05-04 12:42:52 -040025652 .byte 0,0 // add %al,(%rax)
25653 .byte 128,63,0 // cmpb $0x0,(%rdi)
25654 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25655 .byte 63 // (bad)
25656 .byte 0,0 // add %al,(%rax)
25657 .byte 128,63,154 // cmpb $0x9a,(%rdi)
25658 .byte 153 // cltd
25659 .byte 153 // cltd
25660 .byte 62,154 // ds (bad)
25661 .byte 153 // cltd
25662 .byte 153 // cltd
25663 .byte 62,154 // ds (bad)
25664 .byte 153 // cltd
25665 .byte 153 // cltd
25666 .byte 62,154 // ds (bad)
25667 .byte 153 // cltd
25668 .byte 153 // cltd
25669 .byte 62,61,10,23,63,61 // ds cmp $0x3d3f170a,%eax
25670 .byte 10,23 // or (%rdi),%dl
25671 .byte 63 // (bad)
25672 .byte 61,10,23,63,61 // cmp $0x3d3f170a,%eax
25673 .byte 10,23 // or (%rdi),%dl
25674 .byte 63 // (bad)
25675 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025676 .byte 71,225,61 // rex.RXB loope 4a61 <.literal16+0x241>
Mike Kleinbb338332017-05-04 12:42:52 -040025677 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025678 .byte 71,225,61 // rex.RXB loope 4a65 <.literal16+0x245>
Mike Kleinbb338332017-05-04 12:42:52 -040025679 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025680 .byte 71,225,61 // rex.RXB loope 4a69 <.literal16+0x249>
Mike Kleinbb338332017-05-04 12:42:52 -040025681 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025682 .byte 71,225,61 // rex.RXB loope 4a6d <.literal16+0x24d>
Mike Kleinbb338332017-05-04 12:42:52 -040025683 .byte 0,0 // add %al,(%rax)
25684 .byte 128,63,0 // cmpb $0x0,(%rdi)
25685 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25686 .byte 63 // (bad)
25687 .byte 0,0 // add %al,(%rax)
25688 .byte 128,63,154 // cmpb $0x9a,(%rdi)
25689 .byte 153 // cltd
25690 .byte 153 // cltd
25691 .byte 62,154 // ds (bad)
25692 .byte 153 // cltd
25693 .byte 153 // cltd
25694 .byte 62,154 // ds (bad)
25695 .byte 153 // cltd
25696 .byte 153 // cltd
25697 .byte 62,154 // ds (bad)
25698 .byte 153 // cltd
25699 .byte 153 // cltd
25700 .byte 62,61,10,23,63,61 // ds cmp $0x3d3f170a,%eax
25701 .byte 10,23 // or (%rdi),%dl
25702 .byte 63 // (bad)
25703 .byte 61,10,23,63,61 // cmp $0x3d3f170a,%eax
25704 .byte 10,23 // or (%rdi),%dl
25705 .byte 63 // (bad)
25706 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025707 .byte 71,225,61 // rex.RXB loope 4aa1 <.literal16+0x281>
Mike Kleinbb338332017-05-04 12:42:52 -040025708 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025709 .byte 71,225,61 // rex.RXB loope 4aa5 <.literal16+0x285>
Mike Kleinbb338332017-05-04 12:42:52 -040025710 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025711 .byte 71,225,61 // rex.RXB loope 4aa9 <.literal16+0x289>
Mike Kleinbb338332017-05-04 12:42:52 -040025712 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025713 .byte 71,225,61 // rex.RXB loope 4aad <.literal16+0x28d>
Mike Kleinbb338332017-05-04 12:42:52 -040025714 .byte 0,0 // add %al,(%rax)
25715 .byte 128,63,0 // cmpb $0x0,(%rdi)
25716 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25717 .byte 63 // (bad)
25718 .byte 0,0 // add %al,(%rax)
25719 .byte 128,63,154 // cmpb $0x9a,(%rdi)
25720 .byte 153 // cltd
25721 .byte 153 // cltd
25722 .byte 62,154 // ds (bad)
25723 .byte 153 // cltd
25724 .byte 153 // cltd
25725 .byte 62,154 // ds (bad)
25726 .byte 153 // cltd
25727 .byte 153 // cltd
25728 .byte 62,154 // ds (bad)
25729 .byte 153 // cltd
25730 .byte 153 // cltd
25731 .byte 62,61,10,23,63,61 // ds cmp $0x3d3f170a,%eax
25732 .byte 10,23 // or (%rdi),%dl
25733 .byte 63 // (bad)
25734 .byte 61,10,23,63,61 // cmp $0x3d3f170a,%eax
25735 .byte 10,23 // or (%rdi),%dl
25736 .byte 63 // (bad)
25737 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025738 .byte 71,225,61 // rex.RXB loope 4ae1 <.literal16+0x2c1>
Mike Kleinbb338332017-05-04 12:42:52 -040025739 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025740 .byte 71,225,61 // rex.RXB loope 4ae5 <.literal16+0x2c5>
Mike Kleinbb338332017-05-04 12:42:52 -040025741 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025742 .byte 71,225,61 // rex.RXB loope 4ae9 <.literal16+0x2c9>
Mike Kleinbb338332017-05-04 12:42:52 -040025743 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040025744 .byte 71,225,61 // rex.RXB loope 4aed <.literal16+0x2cd>
Mike Kleinfe560a82017-05-01 12:56:35 -040025745 .byte 0,0 // add %al,(%rax)
25746 .byte 128,63,0 // cmpb $0x0,(%rdi)
25747 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25748 .byte 63 // (bad)
25749 .byte 0,0 // add %al,(%rax)
25750 .byte 128,63,0 // cmpb $0x0,(%rdi)
25751 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25752 .byte 63 // (bad)
25753 .byte 0,0 // add %al,(%rax)
25754 .byte 128,63,0 // cmpb $0x0,(%rdi)
25755 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25756 .byte 63 // (bad)
25757 .byte 0,0 // add %al,(%rax)
25758 .byte 128,63,0 // cmpb $0x0,(%rdi)
25759 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25760 .byte 63 // (bad)
Mike Klein08aa88d2017-05-12 12:59:24 -040025761 .byte 0,0 // add %al,(%rax)
25762 .byte 128,63,0 // cmpb $0x0,(%rdi)
25763 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25764 .byte 63 // (bad)
25765 .byte 0,0 // add %al,(%rax)
25766 .byte 128,63,145 // cmpb $0x91,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040025767 .byte 131,158,61,145,131,158,61 // sbbl $0x3d,-0x617c6ec3(%rsi)
25768 .byte 145 // xchg %eax,%ecx
25769 .byte 131,158,61,145,131,158,61 // sbbl $0x3d,-0x617c6ec3(%rsi)
25770 .byte 154 // (bad)
25771 .byte 153 // cltd
25772 .byte 153 // cltd
25773 .byte 62,154 // ds (bad)
25774 .byte 153 // cltd
25775 .byte 153 // cltd
25776 .byte 62,154 // ds (bad)
25777 .byte 153 // cltd
25778 .byte 153 // cltd
25779 .byte 62,154 // ds (bad)
25780 .byte 153 // cltd
25781 .byte 153 // cltd
25782 .byte 62,92 // ds pop %rsp
25783 .byte 143 // (bad)
25784 .byte 50,63 // xor (%rdi),%bh
25785 .byte 92 // pop %rsp
25786 .byte 143 // (bad)
25787 .byte 50,63 // xor (%rdi),%bh
25788 .byte 92 // pop %rsp
25789 .byte 143 // (bad)
25790 .byte 50,63 // xor (%rdi),%bh
25791 .byte 92 // pop %rsp
25792 .byte 143 // (bad)
25793 .byte 50,63 // xor (%rdi),%bh
25794 .byte 10,215 // or %bh,%dl
25795 .byte 35,59 // and (%rbx),%edi
25796 .byte 10,215 // or %bh,%dl
25797 .byte 35,59 // and (%rbx),%edi
25798 .byte 10,215 // or %bh,%dl
25799 .byte 35,59 // and (%rbx),%edi
25800 .byte 10,215 // or %bh,%dl
25801 .byte 35,59 // and (%rbx),%edi
25802 .byte 174 // scas %es:(%rdi),%al
25803 .byte 71,97 // rex.RXB (bad)
25804 .byte 61,174,71,97,61 // cmp $0x3d6147ae,%eax
25805 .byte 174 // scas %es:(%rdi),%al
25806 .byte 71,97 // rex.RXB (bad)
25807 .byte 61,174,71,97,61 // cmp $0x3d6147ae,%eax
Mike Kleinf45e3d72017-05-15 17:36:59 -040025808 .byte 82 // push %rdx
25809 .byte 184,78,65,82,184 // mov $0xb852414e,%eax
25810 .byte 78 // rex.WRX
25811 .byte 65,82 // push %r10
25812 .byte 184,78,65,82,184 // mov $0xb852414e,%eax
25813 .byte 78 // rex.WRX
25814 .byte 65,57,215 // cmp %edx,%r15d
25815 .byte 32,187,57,215,32,187 // and %bh,-0x44df28c7(%rbx)
25816 .byte 57,215 // cmp %edx,%edi
25817 .byte 32,187,57,215,32,187 // and %bh,-0x44df28c7(%rbx)
25818 .byte 186,159,98,60,186 // mov $0xba3c629f,%edx
25819 .byte 159 // lahf
25820 .byte 98 // (bad)
25821 .byte 60,186 // cmp $0xba,%al
25822 .byte 159 // lahf
25823 .byte 98 // (bad)
25824 .byte 60,186 // cmp $0xba,%al
25825 .byte 159 // lahf
25826 .byte 98 // (bad)
25827 .byte 60,13 // cmp $0xd,%al
25828 .byte 20,145 // adc $0x91,%al
Mike Kleinfe560a82017-05-01 12:56:35 -040025829 .byte 63 // (bad)
Mike Kleinf45e3d72017-05-15 17:36:59 -040025830 .byte 13,20,145,63,13 // or $0xd3f9114,%eax
25831 .byte 20,145 // adc $0x91,%al
25832 .byte 63 // (bad)
25833 .byte 13,20,145,63,141 // or $0x8d3f9114,%eax
25834 .byte 158 // sahf
25835 .byte 20,62 // adc $0x3e,%al
25836 .byte 141,158,20,62,141,158 // lea -0x6172c1ec(%rsi),%ebx
25837 .byte 20,62 // adc $0x3e,%al
25838 .byte 141,158,20,62,168,177 // lea -0x4e57c1ec(%rsi),%ebx
25839 .byte 152 // cwtl
25840 .byte 59,168,177,152,59,168 // cmp -0x57c4674f(%rax),%ebp
25841 .byte 177,152 // mov $0x98,%cl
25842 .byte 59,168,177,152,59,0 // cmp 0x3b98b1(%rax),%ebp
Mike Kleinfe560a82017-05-01 12:56:35 -040025843 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
25844 .byte 63 // (bad)
25845 .byte 0,0 // add %al,(%rax)
25846 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinf45e3d72017-05-15 17:36:59 -040025847 .byte 0,128,63,0,0,192 // add %al,-0x3fffffc1(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040025848 .byte 64,0,0 // add %al,(%rax)
25849 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
25850 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
25851 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
25852 .byte 0,64,0 // add %al,0x0(%rax)
25853 .byte 0,0 // add %al,(%rax)
25854 .byte 64,0,0 // add %al,(%rax)
25855 .byte 0,64,0 // add %al,0x0(%rax)
25856 .byte 0,0 // add %al,(%rax)
25857 .byte 64,0,0 // add %al,(%rax)
25858 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
25859 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
25860 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
25861 .byte 128,64,171,170 // addb $0xaa,-0x55(%rax)
25862 .byte 42,62 // sub (%rsi),%bh
25863 .byte 171 // stos %eax,%es:(%rdi)
25864 .byte 170 // stos %al,%es:(%rdi)
25865 .byte 42,62 // sub (%rsi),%bh
25866 .byte 171 // stos %eax,%es:(%rdi)
25867 .byte 170 // stos %al,%es:(%rdi)
25868 .byte 42,62 // sub (%rsi),%bh
25869 .byte 171 // stos %eax,%es:(%rdi)
25870 .byte 170 // stos %al,%es:(%rdi)
25871 .byte 42,62 // sub (%rsi),%bh
25872 .byte 0,0 // add %al,(%rax)
25873 .byte 0,63 // add %bh,(%rdi)
25874 .byte 0,0 // add %al,(%rax)
25875 .byte 0,63 // add %bh,(%rdi)
25876 .byte 0,0 // add %al,(%rax)
25877 .byte 0,63 // add %bh,(%rdi)
25878 .byte 0,0 // add %al,(%rax)
25879 .byte 0,63 // add %bh,(%rdi)
Mike Klein5664e652017-05-01 16:01:38 -040025880 .byte 0,0 // add %al,(%rax)
25881 .byte 0,63 // add %bh,(%rdi)
25882 .byte 0,0 // add %al,(%rax)
25883 .byte 0,63 // add %bh,(%rdi)
25884 .byte 0,0 // add %al,(%rax)
25885 .byte 0,63 // add %bh,(%rdi)
25886 .byte 0,0 // add %al,(%rax)
25887 .byte 0,63 // add %bh,(%rdi)
Mike Klein879a08a2017-05-01 15:34:01 -040025888 .byte 171 // stos %eax,%es:(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040025889 .byte 170 // stos %al,%es:(%rdi)
25890 .byte 170 // stos %al,%es:(%rdi)
25891 .byte 62,171 // ds stos %eax,%es:(%rdi)
25892 .byte 170 // stos %al,%es:(%rdi)
25893 .byte 170 // stos %al,%es:(%rdi)
25894 .byte 62,171 // ds stos %eax,%es:(%rdi)
25895 .byte 170 // stos %al,%es:(%rdi)
25896 .byte 170 // stos %al,%es:(%rdi)
25897 .byte 62,171 // ds stos %eax,%es:(%rdi)
25898 .byte 170 // stos %al,%es:(%rdi)
25899 .byte 170 // stos %al,%es:(%rdi)
Mike Klein5664e652017-05-01 16:01:38 -040025900 .byte 62,171 // ds stos %eax,%es:(%rdi)
25901 .byte 170 // stos %al,%es:(%rdi)
25902 .byte 42,63 // sub (%rdi),%bh
25903 .byte 171 // stos %eax,%es:(%rdi)
25904 .byte 170 // stos %al,%es:(%rdi)
25905 .byte 42,63 // sub (%rdi),%bh
25906 .byte 171 // stos %eax,%es:(%rdi)
25907 .byte 170 // stos %al,%es:(%rdi)
25908 .byte 42,63 // sub (%rdi),%bh
25909 .byte 171 // stos %eax,%es:(%rdi)
25910 .byte 170 // stos %al,%es:(%rdi)
25911 .byte 42,63 // sub (%rdi),%bh
25912 .byte 0,0 // add %al,(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040025913 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
25914 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
Mike Klein879a08a2017-05-01 15:34:01 -040025915 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
25916 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
25917 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
25918 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
25919 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
25920 .byte 128,64,171,170 // addb $0xaa,-0x55(%rax)
Mike Klein5664e652017-05-01 16:01:38 -040025921 .byte 42,62 // sub (%rsi),%bh
25922 .byte 171 // stos %eax,%es:(%rdi)
25923 .byte 170 // stos %al,%es:(%rdi)
25924 .byte 42,62 // sub (%rsi),%bh
25925 .byte 171 // stos %eax,%es:(%rdi)
25926 .byte 170 // stos %al,%es:(%rdi)
25927 .byte 42,62 // sub (%rsi),%bh
25928 .byte 171 // stos %eax,%es:(%rdi)
25929 .byte 170 // stos %al,%es:(%rdi)
25930 .byte 42,62 // sub (%rsi),%bh
25931 .byte 171 // stos %eax,%es:(%rdi)
25932 .byte 170 // stos %al,%es:(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040025933 .byte 170 // stos %al,%es:(%rdi)
25934 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
25935 .byte 171 // stos %eax,%es:(%rdi)
25936 .byte 170 // stos %al,%es:(%rdi)
25937 .byte 170 // stos %al,%es:(%rdi)
25938 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
Mike Kleinfe560a82017-05-01 12:56:35 -040025939 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
25940 .byte 128,59,129 // cmpb $0x81,(%rbx)
25941 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
25942 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
25943 .byte 128,59,0 // cmpb $0x0,(%rbx)
Mike Klein308e6242017-04-27 13:56:33 -040025944 .byte 248 // clc
25945 .byte 0,0 // add %al,(%rax)
25946 .byte 0,248 // add %bh,%al
25947 .byte 0,0 // add %al,(%rax)
25948 .byte 0,248 // add %bh,%al
25949 .byte 0,0 // add %al,(%rax)
25950 .byte 0,248 // add %bh,%al
25951 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040025952 .byte 8,33 // or %ah,(%rcx)
25953 .byte 132,55 // test %dh,(%rdi)
25954 .byte 8,33 // or %ah,(%rcx)
25955 .byte 132,55 // test %dh,(%rdi)
25956 .byte 8,33 // or %ah,(%rcx)
25957 .byte 132,55 // test %dh,(%rdi)
25958 .byte 8,33 // or %ah,(%rcx)
25959 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040025960 .byte 224,7 // loopne 4cb9 <.literal16+0x499>
Mike Klein308e6242017-04-27 13:56:33 -040025961 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040025962 .byte 224,7 // loopne 4cbd <.literal16+0x49d>
Mike Klein308e6242017-04-27 13:56:33 -040025963 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040025964 .byte 224,7 // loopne 4cc1 <.literal16+0x4a1>
Mike Klein308e6242017-04-27 13:56:33 -040025965 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040025966 .byte 224,7 // loopne 4cc5 <.literal16+0x4a5>
Mike Klein308e6242017-04-27 13:56:33 -040025967 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040025968 .byte 33,8 // and %ecx,(%rax)
25969 .byte 2,58 // add (%rdx),%bh
25970 .byte 33,8 // and %ecx,(%rax)
25971 .byte 2,58 // add (%rdx),%bh
25972 .byte 33,8 // and %ecx,(%rax)
25973 .byte 2,58 // add (%rdx),%bh
25974 .byte 33,8 // and %ecx,(%rax)
25975 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040025976 .byte 31 // (bad)
25977 .byte 0,0 // add %al,(%rax)
25978 .byte 0,31 // add %bl,(%rdi)
25979 .byte 0,0 // add %al,(%rax)
25980 .byte 0,31 // add %bl,(%rdi)
25981 .byte 0,0 // add %al,(%rax)
25982 .byte 0,31 // add %bl,(%rdi)
25983 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040025984 .byte 0,8 // add %cl,(%rax)
25985 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
25986 .byte 8,33 // or %ah,(%rcx)
25987 .byte 4,61 // add $0x3d,%al
25988 .byte 8,33 // or %ah,(%rcx)
25989 .byte 4,61 // add $0x3d,%al
bungeman6f9f2592017-05-10 13:50:12 -040025990 .byte 255,0 // incl (%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040025991 .byte 0,0 // add %al,(%rax)
bungeman6f9f2592017-05-10 13:50:12 -040025992 .byte 255,0 // incl (%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040025993 .byte 0,0 // add %al,(%rax)
bungeman6f9f2592017-05-10 13:50:12 -040025994 .byte 255,0 // incl (%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040025995 .byte 0,0 // add %al,(%rax)
bungeman6f9f2592017-05-10 13:50:12 -040025996 .byte 255,0 // incl (%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040025997 .byte 0,0 // add %al,(%rax)
bungeman6f9f2592017-05-10 13:50:12 -040025998 .byte 1,255 // add %edi,%edi
25999 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026000 .byte 255,5,255,255,255,9 // incl 0x9ffffff(%rip) # a004d08 <_sk_callback_sse41+0xa0005c6>
Mike Klein0aa742f2017-04-27 13:36:57 -040026001 .byte 255 // (bad)
26002 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026003 .byte 255,13,255,255,255,2 // decl 0x2ffffff(%rip) # 3004d10 <_sk_callback_sse41+0x30005ce>
Mike Klein0aa742f2017-04-27 13:36:57 -040026004 .byte 255 // (bad)
26005 .byte 255 // (bad)
26006 .byte 255,6 // incl (%rsi)
26007 .byte 255 // (bad)
26008 .byte 255 // (bad)
26009 .byte 255,10 // decl (%rdx)
26010 .byte 255 // (bad)
26011 .byte 255 // (bad)
26012 .byte 255,14 // decl (%rsi)
26013 .byte 255 // (bad)
26014 .byte 255 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040026015 .byte 255,129,128,128,59,129 // incl -0x7ec47f80(%rcx)
26016 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
26017 .byte 129,128,128,59,255,0,255,0,255,0 // addl $0xff00ff,0xff3b80(%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040026018 .byte 255,0 // incl (%rax)
26019 .byte 0,0 // add %al,(%rax)
26020 .byte 0,0 // add %al,(%rax)
26021 .byte 0,0 // add %al,(%rax)
26022 .byte 0,0 // add %al,(%rax)
26023 .byte 8,255 // or %bh,%bh
26024 .byte 10,255 // or %bh,%bh
26025 .byte 12,255 // or $0xff,%al
26026 .byte 14 // (bad)
26027 .byte 255,0 // incl (%rax)
26028 .byte 0,0 // add %al,(%rax)
26029 .byte 0,0 // add %al,(%rax)
26030 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026031 .byte 0,128,0,128,55,128 // add %al,-0x7fc88000(%rax)
26032 .byte 0,128,55,128,0,128 // add %al,-0x7fff7fc9(%rax)
26033 .byte 55 // (bad)
26034 .byte 128,0,128 // addb $0x80,(%rax)
26035 .byte 55 // (bad)
26036 .byte 255,0 // incl (%rax)
26037 .byte 255,0 // incl (%rax)
26038 .byte 255,0 // incl (%rax)
26039 .byte 255,0 // incl (%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040026040 .byte 0,0 // add %al,(%rax)
26041 .byte 0,0 // add %al,(%rax)
26042 .byte 0,0 // add %al,(%rax)
26043 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026044 .byte 8,128,10,128,12,128 // or %al,-0x7ff37ff6(%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040026045 .byte 14 // (bad)
26046 .byte 128,0,0 // addb $0x0,(%rax)
26047 .byte 0,0 // add %al,(%rax)
26048 .byte 0,0 // add %al,(%rax)
26049 .byte 0,0 // add %al,(%rax)
26050 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026051 .byte 128,63,0 // cmpb $0x0,(%rdi)
26052 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
26053 .byte 63 // (bad)
26054 .byte 0,0 // add %al,(%rax)
26055 .byte 128,63,0 // cmpb $0x0,(%rdi)
26056 .byte 0,127,67 // add %bh,0x43(%rdi)
26057 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026058 .byte 127,67 // jg 4ddb <.literal16+0x5bb>
Mike Kleinfe560a82017-05-01 12:56:35 -040026059 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026060 .byte 127,67 // jg 4ddf <.literal16+0x5bf>
Mike Kleinfe560a82017-05-01 12:56:35 -040026061 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026062 .byte 127,67 // jg 4de3 <.literal16+0x5c3>
Mike Kleinfe560a82017-05-01 12:56:35 -040026063 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
26064 .byte 128,59,129 // cmpb $0x81,(%rbx)
26065 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
26066 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
26067 .byte 128,59,0 // cmpb $0x0,(%rbx)
26068 .byte 0,0 // add %al,(%rax)
26069 .byte 52,0 // xor $0x0,%al
Mike Kleinb4bbc642017-04-27 08:59:55 -040026070 .byte 0,0 // add %al,(%rax)
26071 .byte 52,0 // xor $0x0,%al
26072 .byte 0,0 // add %al,(%rax)
26073 .byte 52,0 // xor $0x0,%al
26074 .byte 0,0 // add %al,(%rax)
26075 .byte 52,255 // xor $0xff,%al
26076 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026077 .byte 127,0 // jg 4dd4 <.literal16+0x5b4>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026078 .byte 255 // (bad)
26079 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026080 .byte 127,0 // jg 4dd8 <.literal16+0x5b8>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026081 .byte 255 // (bad)
26082 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026083 .byte 127,0 // jg 4ddc <.literal16+0x5bc>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026084 .byte 255 // (bad)
26085 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026086 .byte 127,0 // jg 4de0 <.literal16+0x5c0>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026087 .byte 0,0 // add %al,(%rax)
26088 .byte 0,63 // add %bh,(%rdi)
26089 .byte 0,0 // add %al,(%rax)
26090 .byte 0,63 // add %bh,(%rdi)
26091 .byte 0,0 // add %al,(%rax)
26092 .byte 0,63 // add %bh,(%rdi)
26093 .byte 0,0 // add %al,(%rax)
26094 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040026095 .byte 119,115 // ja 4e65 <.literal16+0x645>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026096 .byte 248 // clc
26097 .byte 194,119,115 // retq $0x7377
26098 .byte 248 // clc
26099 .byte 194,119,115 // retq $0x7377
26100 .byte 248 // clc
26101 .byte 194,119,115 // retq $0x7377
26102 .byte 248 // clc
26103 .byte 194,117,191 // retq $0xbf75
26104 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
Mike Klein2229b572017-04-21 10:30:29 -040026105 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026106 .byte 117,191 // jne 4dc9 <.literal16+0x5a9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026107 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
26108 .byte 63 // (bad)
26109 .byte 249 // stc
26110 .byte 68,180,62 // rex.R mov $0x3e,%spl
26111 .byte 249 // stc
26112 .byte 68,180,62 // rex.R mov $0x3e,%spl
26113 .byte 249 // stc
26114 .byte 68,180,62 // rex.R mov $0x3e,%spl
26115 .byte 249 // stc
26116 .byte 68,180,62 // rex.R mov $0x3e,%spl
26117 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Klein8ca33562017-05-23 08:07:43 -040026118 .byte 233,220,63,163,233 // jmpq ffffffffe9a38e0a <_sk_callback_sse41+0xffffffffe9a346c8>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026119 .byte 220,63 // fdivrl (%rdi)
26120 .byte 81 // push %rcx
26121 .byte 140,242 // mov %?,%edx
26122 .byte 66,81 // rex.X push %rcx
26123 .byte 140,242 // mov %?,%edx
26124 .byte 66,81 // rex.X push %rcx
26125 .byte 140,242 // mov %?,%edx
26126 .byte 66,81 // rex.X push %rcx
26127 .byte 140,242 // mov %?,%edx
26128 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
26129 .byte 63 // (bad)
26130 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
26131 .byte 63 // (bad)
26132 .byte 248 // clc
26133 .byte 245 // cmc
26134 .byte 154 // (bad)
26135 .byte 64,248 // rex clc
26136 .byte 245 // cmc
26137 .byte 154 // (bad)
26138 .byte 64,248 // rex clc
26139 .byte 245 // cmc
26140 .byte 154 // (bad)
26141 .byte 64,248 // rex clc
26142 .byte 245 // cmc
26143 .byte 154 // (bad)
26144 .byte 64,254 // rex (bad)
26145 .byte 210,221 // rcr %cl,%ch
26146 .byte 65,254 // rex.B (bad)
26147 .byte 210,221 // rcr %cl,%ch
26148 .byte 65,254 // rex.B (bad)
26149 .byte 210,221 // rcr %cl,%ch
26150 .byte 65,254 // rex.B (bad)
26151 .byte 210,221 // rcr %cl,%ch
26152 .byte 65,0,0 // add %al,(%r8)
26153 .byte 0,75,0 // add %cl,0x0(%rbx)
26154 .byte 0,0 // add %al,(%rax)
26155 .byte 75,0,0 // rex.WXB add %al,(%r8)
26156 .byte 0,75,0 // add %cl,0x0(%rbx)
26157 .byte 0,0 // add %al,(%rax)
26158 .byte 75,0,0 // rex.WXB add %al,(%r8)
Mike Kleinfe560a82017-05-01 12:56:35 -040026159 .byte 128,63,0 // cmpb $0x0,(%rdi)
26160 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
26161 .byte 63 // (bad)
26162 .byte 0,0 // add %al,(%rax)
26163 .byte 128,63,0 // cmpb $0x0,(%rdi)
26164 .byte 0,0 // add %al,(%rax)
26165 .byte 52,0 // xor $0x0,%al
Mike Kleinb4bbc642017-04-27 08:59:55 -040026166 .byte 0,0 // add %al,(%rax)
26167 .byte 52,0 // xor $0x0,%al
26168 .byte 0,0 // add %al,(%rax)
26169 .byte 52,0 // xor $0x0,%al
26170 .byte 0,0 // add %al,(%rax)
26171 .byte 52,255 // xor $0xff,%al
26172 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026173 .byte 127,0 // jg 4ea4 <.literal16+0x684>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026174 .byte 255 // (bad)
26175 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026176 .byte 127,0 // jg 4ea8 <.literal16+0x688>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026177 .byte 255 // (bad)
26178 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026179 .byte 127,0 // jg 4eac <.literal16+0x68c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026180 .byte 255 // (bad)
26181 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026182 .byte 127,0 // jg 4eb0 <.literal16+0x690>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026183 .byte 0,0 // add %al,(%rax)
26184 .byte 0,63 // add %bh,(%rdi)
26185 .byte 0,0 // add %al,(%rax)
26186 .byte 0,63 // add %bh,(%rdi)
26187 .byte 0,0 // add %al,(%rax)
26188 .byte 0,63 // add %bh,(%rdi)
26189 .byte 0,0 // add %al,(%rax)
26190 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040026191 .byte 119,115 // ja 4f35 <.literal16+0x715>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026192 .byte 248 // clc
26193 .byte 194,119,115 // retq $0x7377
26194 .byte 248 // clc
26195 .byte 194,119,115 // retq $0x7377
26196 .byte 248 // clc
26197 .byte 194,119,115 // retq $0x7377
26198 .byte 248 // clc
26199 .byte 194,117,191 // retq $0xbf75
26200 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
26201 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026202 .byte 117,191 // jne 4e99 <.literal16+0x679>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026203 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
26204 .byte 63 // (bad)
26205 .byte 249 // stc
26206 .byte 68,180,62 // rex.R mov $0x3e,%spl
26207 .byte 249 // stc
26208 .byte 68,180,62 // rex.R mov $0x3e,%spl
26209 .byte 249 // stc
26210 .byte 68,180,62 // rex.R mov $0x3e,%spl
26211 .byte 249 // stc
26212 .byte 68,180,62 // rex.R mov $0x3e,%spl
26213 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Klein8ca33562017-05-23 08:07:43 -040026214 .byte 233,220,63,163,233 // jmpq ffffffffe9a38eda <_sk_callback_sse41+0xffffffffe9a34798>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026215 .byte 220,63 // fdivrl (%rdi)
26216 .byte 81 // push %rcx
26217 .byte 140,242 // mov %?,%edx
26218 .byte 66,81 // rex.X push %rcx
26219 .byte 140,242 // mov %?,%edx
26220 .byte 66,81 // rex.X push %rcx
26221 .byte 140,242 // mov %?,%edx
26222 .byte 66,81 // rex.X push %rcx
26223 .byte 140,242 // mov %?,%edx
26224 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
26225 .byte 63 // (bad)
26226 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
26227 .byte 63 // (bad)
26228 .byte 248 // clc
26229 .byte 245 // cmc
26230 .byte 154 // (bad)
26231 .byte 64,248 // rex clc
26232 .byte 245 // cmc
26233 .byte 154 // (bad)
26234 .byte 64,248 // rex clc
26235 .byte 245 // cmc
26236 .byte 154 // (bad)
26237 .byte 64,248 // rex clc
26238 .byte 245 // cmc
26239 .byte 154 // (bad)
26240 .byte 64,254 // rex (bad)
26241 .byte 210,221 // rcr %cl,%ch
26242 .byte 65,254 // rex.B (bad)
26243 .byte 210,221 // rcr %cl,%ch
26244 .byte 65,254 // rex.B (bad)
26245 .byte 210,221 // rcr %cl,%ch
26246 .byte 65,254 // rex.B (bad)
26247 .byte 210,221 // rcr %cl,%ch
26248 .byte 65,0,0 // add %al,(%r8)
26249 .byte 0,75,0 // add %cl,0x0(%rbx)
26250 .byte 0,0 // add %al,(%rax)
26251 .byte 75,0,0 // rex.WXB add %al,(%r8)
26252 .byte 0,75,0 // add %cl,0x0(%rbx)
26253 .byte 0,0 // add %al,(%rax)
26254 .byte 75,0,0 // rex.WXB add %al,(%r8)
Mike Kleinfe560a82017-05-01 12:56:35 -040026255 .byte 128,63,0 // cmpb $0x0,(%rdi)
26256 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
26257 .byte 63 // (bad)
26258 .byte 0,0 // add %al,(%rax)
26259 .byte 128,63,0 // cmpb $0x0,(%rdi)
26260 .byte 0,0 // add %al,(%rax)
26261 .byte 52,0 // xor $0x0,%al
Mike Kleinb4bbc642017-04-27 08:59:55 -040026262 .byte 0,0 // add %al,(%rax)
26263 .byte 52,0 // xor $0x0,%al
26264 .byte 0,0 // add %al,(%rax)
26265 .byte 52,0 // xor $0x0,%al
26266 .byte 0,0 // add %al,(%rax)
26267 .byte 52,255 // xor $0xff,%al
26268 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026269 .byte 127,0 // jg 4f74 <.literal16+0x754>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026270 .byte 255 // (bad)
26271 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026272 .byte 127,0 // jg 4f78 <.literal16+0x758>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026273 .byte 255 // (bad)
26274 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026275 .byte 127,0 // jg 4f7c <.literal16+0x75c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026276 .byte 255 // (bad)
26277 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026278 .byte 127,0 // jg 4f80 <.literal16+0x760>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026279 .byte 0,0 // add %al,(%rax)
26280 .byte 0,63 // add %bh,(%rdi)
26281 .byte 0,0 // add %al,(%rax)
26282 .byte 0,63 // add %bh,(%rdi)
26283 .byte 0,0 // add %al,(%rax)
26284 .byte 0,63 // add %bh,(%rdi)
26285 .byte 0,0 // add %al,(%rax)
26286 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040026287 .byte 119,115 // ja 5005 <.literal16+0x7e5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026288 .byte 248 // clc
26289 .byte 194,119,115 // retq $0x7377
26290 .byte 248 // clc
26291 .byte 194,119,115 // retq $0x7377
26292 .byte 248 // clc
26293 .byte 194,119,115 // retq $0x7377
26294 .byte 248 // clc
26295 .byte 194,117,191 // retq $0xbf75
26296 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
26297 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026298 .byte 117,191 // jne 4f69 <.literal16+0x749>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026299 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
26300 .byte 63 // (bad)
26301 .byte 249 // stc
26302 .byte 68,180,62 // rex.R mov $0x3e,%spl
26303 .byte 249 // stc
26304 .byte 68,180,62 // rex.R mov $0x3e,%spl
26305 .byte 249 // stc
26306 .byte 68,180,62 // rex.R mov $0x3e,%spl
26307 .byte 249 // stc
26308 .byte 68,180,62 // rex.R mov $0x3e,%spl
26309 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Klein8ca33562017-05-23 08:07:43 -040026310 .byte 233,220,63,163,233 // jmpq ffffffffe9a38faa <_sk_callback_sse41+0xffffffffe9a34868>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026311 .byte 220,63 // fdivrl (%rdi)
26312 .byte 81 // push %rcx
26313 .byte 140,242 // mov %?,%edx
26314 .byte 66,81 // rex.X push %rcx
26315 .byte 140,242 // mov %?,%edx
26316 .byte 66,81 // rex.X push %rcx
26317 .byte 140,242 // mov %?,%edx
26318 .byte 66,81 // rex.X push %rcx
26319 .byte 140,242 // mov %?,%edx
26320 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
26321 .byte 63 // (bad)
26322 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
26323 .byte 63 // (bad)
26324 .byte 248 // clc
26325 .byte 245 // cmc
26326 .byte 154 // (bad)
26327 .byte 64,248 // rex clc
26328 .byte 245 // cmc
26329 .byte 154 // (bad)
26330 .byte 64,248 // rex clc
26331 .byte 245 // cmc
26332 .byte 154 // (bad)
26333 .byte 64,248 // rex clc
26334 .byte 245 // cmc
26335 .byte 154 // (bad)
26336 .byte 64,254 // rex (bad)
26337 .byte 210,221 // rcr %cl,%ch
26338 .byte 65,254 // rex.B (bad)
26339 .byte 210,221 // rcr %cl,%ch
26340 .byte 65,254 // rex.B (bad)
26341 .byte 210,221 // rcr %cl,%ch
26342 .byte 65,254 // rex.B (bad)
26343 .byte 210,221 // rcr %cl,%ch
26344 .byte 65,0,0 // add %al,(%r8)
26345 .byte 0,75,0 // add %cl,0x0(%rbx)
26346 .byte 0,0 // add %al,(%rax)
26347 .byte 75,0,0 // rex.WXB add %al,(%r8)
26348 .byte 0,75,0 // add %cl,0x0(%rbx)
26349 .byte 0,0 // add %al,(%rax)
26350 .byte 75,0,0 // rex.WXB add %al,(%r8)
Mike Kleinfe560a82017-05-01 12:56:35 -040026351 .byte 128,63,0 // cmpb $0x0,(%rdi)
26352 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
26353 .byte 63 // (bad)
26354 .byte 0,0 // add %al,(%rax)
26355 .byte 128,63,0 // cmpb $0x0,(%rdi)
26356 .byte 0,0 // add %al,(%rax)
26357 .byte 52,0 // xor $0x0,%al
Mike Kleinb4bbc642017-04-27 08:59:55 -040026358 .byte 0,0 // add %al,(%rax)
26359 .byte 52,0 // xor $0x0,%al
26360 .byte 0,0 // add %al,(%rax)
26361 .byte 52,0 // xor $0x0,%al
26362 .byte 0,0 // add %al,(%rax)
26363 .byte 52,255 // xor $0xff,%al
26364 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026365 .byte 127,0 // jg 5044 <.literal16+0x824>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026366 .byte 255 // (bad)
26367 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026368 .byte 127,0 // jg 5048 <.literal16+0x828>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026369 .byte 255 // (bad)
26370 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026371 .byte 127,0 // jg 504c <.literal16+0x82c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026372 .byte 255 // (bad)
26373 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026374 .byte 127,0 // jg 5050 <.literal16+0x830>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026375 .byte 0,0 // add %al,(%rax)
26376 .byte 0,63 // add %bh,(%rdi)
26377 .byte 0,0 // add %al,(%rax)
26378 .byte 0,63 // add %bh,(%rdi)
26379 .byte 0,0 // add %al,(%rax)
26380 .byte 0,63 // add %bh,(%rdi)
26381 .byte 0,0 // add %al,(%rax)
26382 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040026383 .byte 119,115 // ja 50d5 <.literal16+0x8b5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026384 .byte 248 // clc
26385 .byte 194,119,115 // retq $0x7377
26386 .byte 248 // clc
26387 .byte 194,119,115 // retq $0x7377
26388 .byte 248 // clc
26389 .byte 194,119,115 // retq $0x7377
26390 .byte 248 // clc
26391 .byte 194,117,191 // retq $0xbf75
26392 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
26393 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026394 .byte 117,191 // jne 5039 <.literal16+0x819>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026395 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
26396 .byte 63 // (bad)
26397 .byte 249 // stc
26398 .byte 68,180,62 // rex.R mov $0x3e,%spl
26399 .byte 249 // stc
26400 .byte 68,180,62 // rex.R mov $0x3e,%spl
26401 .byte 249 // stc
26402 .byte 68,180,62 // rex.R mov $0x3e,%spl
26403 .byte 249 // stc
26404 .byte 68,180,62 // rex.R mov $0x3e,%spl
26405 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Klein8ca33562017-05-23 08:07:43 -040026406 .byte 233,220,63,163,233 // jmpq ffffffffe9a3907a <_sk_callback_sse41+0xffffffffe9a34938>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026407 .byte 220,63 // fdivrl (%rdi)
26408 .byte 81 // push %rcx
26409 .byte 140,242 // mov %?,%edx
26410 .byte 66,81 // rex.X push %rcx
26411 .byte 140,242 // mov %?,%edx
26412 .byte 66,81 // rex.X push %rcx
26413 .byte 140,242 // mov %?,%edx
26414 .byte 66,81 // rex.X push %rcx
26415 .byte 140,242 // mov %?,%edx
26416 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
26417 .byte 63 // (bad)
26418 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
26419 .byte 63 // (bad)
26420 .byte 248 // clc
26421 .byte 245 // cmc
26422 .byte 154 // (bad)
26423 .byte 64,248 // rex clc
26424 .byte 245 // cmc
26425 .byte 154 // (bad)
26426 .byte 64,248 // rex clc
26427 .byte 245 // cmc
26428 .byte 154 // (bad)
26429 .byte 64,248 // rex clc
26430 .byte 245 // cmc
26431 .byte 154 // (bad)
26432 .byte 64,254 // rex (bad)
26433 .byte 210,221 // rcr %cl,%ch
26434 .byte 65,254 // rex.B (bad)
26435 .byte 210,221 // rcr %cl,%ch
26436 .byte 65,254 // rex.B (bad)
26437 .byte 210,221 // rcr %cl,%ch
26438 .byte 65,254 // rex.B (bad)
26439 .byte 210,221 // rcr %cl,%ch
26440 .byte 65,0,0 // add %al,(%r8)
26441 .byte 0,75,0 // add %cl,0x0(%rbx)
26442 .byte 0,0 // add %al,(%rax)
26443 .byte 75,0,0 // rex.WXB add %al,(%r8)
26444 .byte 0,75,0 // add %cl,0x0(%rbx)
26445 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026446 .byte 75,0,0 // rex.WXB add %al,(%r8)
26447 .byte 128,63,0 // cmpb $0x0,(%rdi)
26448 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
26449 .byte 63 // (bad)
26450 .byte 0,0 // add %al,(%rax)
26451 .byte 128,63,0 // cmpb $0x0,(%rdi)
26452 .byte 0,200 // add %cl,%al
26453 .byte 66,0,0 // rex.X add %al,(%rax)
26454 .byte 200,66,0,0 // enterq $0x42,$0x0
26455 .byte 200,66,0,0 // enterq $0x42,$0x0
26456 .byte 200,66,0,0 // enterq $0x42,$0x0
Mike Klein8ca33562017-05-23 08:07:43 -040026457 .byte 127,67 // jg 5157 <.literal16+0x937>
Mike Kleinfe560a82017-05-01 12:56:35 -040026458 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026459 .byte 127,67 // jg 515b <.literal16+0x93b>
Mike Kleinfe560a82017-05-01 12:56:35 -040026460 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026461 .byte 127,67 // jg 515f <.literal16+0x93f>
Mike Kleinfe560a82017-05-01 12:56:35 -040026462 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026463 .byte 127,67 // jg 5163 <.literal16+0x943>
Mike Kleinfe560a82017-05-01 12:56:35 -040026464 .byte 0,0 // add %al,(%rax)
26465 .byte 0,195 // add %al,%bl
26466 .byte 0,0 // add %al,(%rax)
26467 .byte 0,195 // add %al,%bl
26468 .byte 0,0 // add %al,(%rax)
26469 .byte 0,195 // add %al,%bl
26470 .byte 0,0 // add %al,(%rax)
26471 .byte 0,195 // add %al,%bl
26472 .byte 0,0 // add %al,(%rax)
26473 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
26474 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
26475 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
26476 .byte 128,65,203,61 // addb $0x3d,-0x35(%rcx)
26477 .byte 13,60,203,61,13 // or $0xd3dcb3c,%eax
26478 .byte 60,203 // cmp $0xcb,%al
26479 .byte 61,13,60,203,61 // cmp $0x3dcb3c0d,%eax
26480 .byte 13,60,111,18,3 // or $0x3126f3c,%eax
26481 .byte 59,111,18 // cmp 0x12(%rdi),%ebp
26482 .byte 3,59 // add (%rbx),%edi
26483 .byte 111 // outsl %ds:(%rsi),(%dx)
26484 .byte 18,3 // adc (%rbx),%al
26485 .byte 59,111,18 // cmp 0x12(%rdi),%ebp
26486 .byte 3,59 // add (%rbx),%edi
26487 .byte 10,215 // or %bh,%dl
26488 .byte 163,59,10,215,163,59,10,215,163 // movabs %eax,0xa3d70a3ba3d70a3b
26489 .byte 59,10 // cmp (%rdx),%ecx
26490 .byte 215 // xlat %ds:(%rbx)
26491 .byte 163,59,194,24,17,60,194,24,17 // movabs %eax,0x1118c23c1118c23b
26492 .byte 60,194 // cmp $0xc2,%al
26493 .byte 24,17 // sbb %dl,(%rcx)
26494 .byte 60,194 // cmp $0xc2,%al
26495 .byte 24,17 // sbb %dl,(%rcx)
26496 .byte 60,203 // cmp $0xcb,%al
26497 .byte 61,13,190,203,61 // cmp $0x3dcbbe0d,%eax
26498 .byte 13,190,203,61,13 // or $0xd3dcbbe,%eax
26499 .byte 190,203,61,13,190 // mov $0xbe0d3dcb,%esi
26500 .byte 80 // push %rax
26501 .byte 128,3,62 // addb $0x3e,(%rbx)
26502 .byte 80 // push %rax
26503 .byte 128,3,62 // addb $0x3e,(%rbx)
26504 .byte 80 // push %rax
26505 .byte 128,3,62 // addb $0x3e,(%rbx)
26506 .byte 80 // push %rax
26507 .byte 128,3,62 // addb $0x3e,(%rbx)
26508 .byte 31 // (bad)
26509 .byte 215 // xlat %ds:(%rbx)
Mike Klein8ca33562017-05-23 08:07:43 -040026510 .byte 118,63 // jbe 51e3 <.literal16+0x9c3>
Mike Kleinfe560a82017-05-01 12:56:35 -040026511 .byte 31 // (bad)
26512 .byte 215 // xlat %ds:(%rbx)
Mike Klein8ca33562017-05-23 08:07:43 -040026513 .byte 118,63 // jbe 51e7 <.literal16+0x9c7>
Mike Kleinfe560a82017-05-01 12:56:35 -040026514 .byte 31 // (bad)
26515 .byte 215 // xlat %ds:(%rbx)
Mike Klein8ca33562017-05-23 08:07:43 -040026516 .byte 118,63 // jbe 51eb <.literal16+0x9cb>
Mike Kleinfe560a82017-05-01 12:56:35 -040026517 .byte 31 // (bad)
26518 .byte 215 // xlat %ds:(%rbx)
Mike Klein8ca33562017-05-23 08:07:43 -040026519 .byte 118,63 // jbe 51ef <.literal16+0x9cf>
Mike Kleinfe560a82017-05-01 12:56:35 -040026520 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
26521 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
26522 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
26523 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
26524 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
26525 .byte 128,59,129 // cmpb $0x81,(%rbx)
26526 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
26527 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
26528 .byte 128,59,0 // cmpb $0x0,(%rbx)
26529 .byte 0,127,67 // add %bh,0x43(%rdi)
26530 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026531 .byte 127,67 // jg 522b <.literal16+0xa0b>
Mike Kleinfe560a82017-05-01 12:56:35 -040026532 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026533 .byte 127,67 // jg 522f <.literal16+0xa0f>
Mike Kleinfe560a82017-05-01 12:56:35 -040026534 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026535 .byte 127,67 // jg 5233 <.literal16+0xa13>
Mike Kleinfe560a82017-05-01 12:56:35 -040026536 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
26537 .byte 128,59,129 // cmpb $0x81,(%rbx)
26538 .byte 128,128,59,0,0,128,63 // addb $0x3f,-0x7fffffc5(%rax)
26539 .byte 0,0 // add %al,(%rax)
26540 .byte 128,63,0 // cmpb $0x0,(%rdi)
26541 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
26542 .byte 63 // (bad)
26543 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
26544 .byte 128,59,129 // cmpb $0x81,(%rbx)
26545 .byte 128,128,59,0,0,128,63 // addb $0x3f,-0x7fffffc5(%rax)
26546 .byte 0,0 // add %al,(%rax)
26547 .byte 128,63,0 // cmpb $0x0,(%rdi)
26548 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
26549 .byte 63 // (bad)
26550 .byte 255,0 // incl (%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040026551 .byte 0,0 // add %al,(%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040026552 .byte 255,0 // incl (%rax)
26553 .byte 0,0 // add %al,(%rax)
26554 .byte 255,0 // incl (%rax)
26555 .byte 0,0 // add %al,(%rax)
26556 .byte 255,0 // incl (%rax)
26557 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026558 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
26559 .byte 128,59,129 // cmpb $0x81,(%rbx)
26560 .byte 128,128,59,1,255,255,255 // addb $0xff,-0xfec5(%rax)
26561 .byte 5,255,255,255,9 // add $0x9ffffff,%eax
Mike Klein0aa742f2017-04-27 13:36:57 -040026562 .byte 255 // (bad)
26563 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026564 .byte 255,13,255,255,255,2 // decl 0x2ffffff(%rip) # 3005260 <_sk_callback_sse41+0x3000b1e>
Mike Klein308e6242017-04-27 13:56:33 -040026565 .byte 255 // (bad)
26566 .byte 255 // (bad)
26567 .byte 255,6 // incl (%rsi)
26568 .byte 255 // (bad)
26569 .byte 255 // (bad)
26570 .byte 255,10 // decl (%rdx)
26571 .byte 255 // (bad)
26572 .byte 255 // (bad)
26573 .byte 255,14 // decl (%rsi)
26574 .byte 255 // (bad)
26575 .byte 255 // (bad)
26576 .byte 255,0 // incl (%rax)
26577 .byte 248 // clc
26578 .byte 0,0 // add %al,(%rax)
26579 .byte 0,248 // add %bh,%al
26580 .byte 0,0 // add %al,(%rax)
26581 .byte 0,248 // add %bh,%al
26582 .byte 0,0 // add %al,(%rax)
26583 .byte 0,248 // add %bh,%al
26584 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026585 .byte 8,33 // or %ah,(%rcx)
26586 .byte 132,55 // test %dh,(%rdi)
26587 .byte 8,33 // or %ah,(%rcx)
26588 .byte 132,55 // test %dh,(%rdi)
26589 .byte 8,33 // or %ah,(%rcx)
26590 .byte 132,55 // test %dh,(%rdi)
26591 .byte 8,33 // or %ah,(%rcx)
26592 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040026593 .byte 224,7 // loopne 5299 <.literal16+0xa79>
Mike Klein308e6242017-04-27 13:56:33 -040026594 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026595 .byte 224,7 // loopne 529d <.literal16+0xa7d>
Mike Klein308e6242017-04-27 13:56:33 -040026596 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026597 .byte 224,7 // loopne 52a1 <.literal16+0xa81>
Mike Klein308e6242017-04-27 13:56:33 -040026598 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026599 .byte 224,7 // loopne 52a5 <.literal16+0xa85>
Mike Klein308e6242017-04-27 13:56:33 -040026600 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026601 .byte 33,8 // and %ecx,(%rax)
26602 .byte 2,58 // add (%rdx),%bh
26603 .byte 33,8 // and %ecx,(%rax)
26604 .byte 2,58 // add (%rdx),%bh
26605 .byte 33,8 // and %ecx,(%rax)
26606 .byte 2,58 // add (%rdx),%bh
26607 .byte 33,8 // and %ecx,(%rax)
26608 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040026609 .byte 31 // (bad)
26610 .byte 0,0 // add %al,(%rax)
26611 .byte 0,31 // add %bl,(%rdi)
26612 .byte 0,0 // add %al,(%rax)
26613 .byte 0,31 // add %bl,(%rdi)
26614 .byte 0,0 // add %al,(%rax)
26615 .byte 0,31 // add %bl,(%rdi)
26616 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026617 .byte 0,8 // add %cl,(%rax)
26618 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
26619 .byte 8,33 // or %ah,(%rcx)
26620 .byte 4,61 // add $0x3d,%al
26621 .byte 8,33 // or %ah,(%rcx)
26622 .byte 4,61 // add $0x3d,%al
Mike Klein308e6242017-04-27 13:56:33 -040026623 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026624 .byte 128,63,0 // cmpb $0x0,(%rdi)
26625 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
26626 .byte 63 // (bad)
26627 .byte 0,0 // add %al,(%rax)
26628 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Klein308e6242017-04-27 13:56:33 -040026629 .byte 248 // clc
26630 .byte 0,0 // add %al,(%rax)
26631 .byte 0,248 // add %bh,%al
26632 .byte 0,0 // add %al,(%rax)
26633 .byte 0,248 // add %bh,%al
26634 .byte 0,0 // add %al,(%rax)
26635 .byte 0,248 // add %bh,%al
26636 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026637 .byte 8,33 // or %ah,(%rcx)
26638 .byte 132,55 // test %dh,(%rdi)
26639 .byte 8,33 // or %ah,(%rcx)
26640 .byte 132,55 // test %dh,(%rdi)
26641 .byte 8,33 // or %ah,(%rcx)
26642 .byte 132,55 // test %dh,(%rdi)
26643 .byte 8,33 // or %ah,(%rcx)
26644 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040026645 .byte 224,7 // loopne 5309 <.literal16+0xae9>
Mike Klein308e6242017-04-27 13:56:33 -040026646 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026647 .byte 224,7 // loopne 530d <.literal16+0xaed>
Mike Klein308e6242017-04-27 13:56:33 -040026648 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026649 .byte 224,7 // loopne 5311 <.literal16+0xaf1>
Mike Klein308e6242017-04-27 13:56:33 -040026650 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026651 .byte 224,7 // loopne 5315 <.literal16+0xaf5>
Mike Klein308e6242017-04-27 13:56:33 -040026652 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026653 .byte 33,8 // and %ecx,(%rax)
26654 .byte 2,58 // add (%rdx),%bh
26655 .byte 33,8 // and %ecx,(%rax)
26656 .byte 2,58 // add (%rdx),%bh
26657 .byte 33,8 // and %ecx,(%rax)
26658 .byte 2,58 // add (%rdx),%bh
26659 .byte 33,8 // and %ecx,(%rax)
26660 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040026661 .byte 31 // (bad)
26662 .byte 0,0 // add %al,(%rax)
26663 .byte 0,31 // add %bl,(%rdi)
26664 .byte 0,0 // add %al,(%rax)
26665 .byte 0,31 // add %bl,(%rdi)
26666 .byte 0,0 // add %al,(%rax)
26667 .byte 0,31 // add %bl,(%rdi)
26668 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026669 .byte 0,8 // add %cl,(%rax)
26670 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
26671 .byte 8,33 // or %ah,(%rcx)
26672 .byte 4,61 // add $0x3d,%al
26673 .byte 8,33 // or %ah,(%rcx)
26674 .byte 4,61 // add $0x3d,%al
Mike Klein308e6242017-04-27 13:56:33 -040026675 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026676 .byte 128,63,0 // cmpb $0x0,(%rdi)
26677 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
26678 .byte 63 // (bad)
26679 .byte 0,0 // add %al,(%rax)
26680 .byte 128,63,0 // cmpb $0x0,(%rdi)
26681 .byte 0,248 // add %bh,%al
26682 .byte 65,0,0 // add %al,(%r8)
26683 .byte 248 // clc
26684 .byte 65,0,0 // add %al,(%r8)
26685 .byte 248 // clc
26686 .byte 65,0,0 // add %al,(%r8)
26687 .byte 248 // clc
26688 .byte 65,0,0 // add %al,(%r8)
Mike Klein8ca33562017-05-23 08:07:43 -040026689 .byte 124,66 // jl 53a6 <.literal16+0xb86>
Mike Kleinfe560a82017-05-01 12:56:35 -040026690 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026691 .byte 124,66 // jl 53aa <.literal16+0xb8a>
Mike Kleinfe560a82017-05-01 12:56:35 -040026692 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026693 .byte 124,66 // jl 53ae <.literal16+0xb8e>
Mike Kleinfe560a82017-05-01 12:56:35 -040026694 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026695 .byte 124,66 // jl 53b2 <.literal16+0xb92>
Mike Kleinfe560a82017-05-01 12:56:35 -040026696 .byte 0,240 // add %dh,%al
26697 .byte 0,0 // add %al,(%rax)
26698 .byte 0,240 // add %dh,%al
26699 .byte 0,0 // add %al,(%rax)
26700 .byte 0,240 // add %dh,%al
26701 .byte 0,0 // add %al,(%rax)
26702 .byte 0,240 // add %dh,%al
26703 .byte 0,0 // add %al,(%rax)
26704 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
26705 .byte 136,55 // mov %dh,(%rdi)
26706 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
26707 .byte 136,55 // mov %dh,(%rdi)
26708 .byte 0,15 // add %cl,(%rdi)
26709 .byte 0,0 // add %al,(%rax)
26710 .byte 0,15 // add %cl,(%rdi)
26711 .byte 0,0 // add %al,(%rax)
26712 .byte 0,15 // add %cl,(%rdi)
26713 .byte 0,0 // add %al,(%rax)
26714 .byte 0,15 // add %cl,(%rdi)
26715 .byte 0,0 // add %al,(%rax)
26716 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
26717 .byte 136,57 // mov %bh,(%rcx)
26718 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
26719 .byte 136,57 // mov %bh,(%rcx)
Mike Klein308e6242017-04-27 13:56:33 -040026720 .byte 240,0,0 // lock add %al,(%rax)
26721 .byte 0,240 // add %dh,%al
26722 .byte 0,0 // add %al,(%rax)
26723 .byte 0,240 // add %dh,%al
26724 .byte 0,0 // add %al,(%rax)
26725 .byte 0,240 // add %dh,%al
26726 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026727 .byte 0,137,136,136,59,137 // add %cl,-0x76c47778(%rcx)
26728 .byte 136,136,59,137,136,136 // mov %cl,-0x777776c5(%rax)
26729 .byte 59,137,136,136,59,15 // cmp 0xf3b8888(%rcx),%ecx
26730 .byte 0,0 // add %al,(%rax)
26731 .byte 0,15 // add %cl,(%rdi)
26732 .byte 0,0 // add %al,(%rax)
26733 .byte 0,15 // add %cl,(%rdi)
26734 .byte 0,0 // add %al,(%rax)
26735 .byte 0,15 // add %cl,(%rdi)
26736 .byte 0,0 // add %al,(%rax)
26737 .byte 0,137,136,136,61,137 // add %cl,-0x76c27778(%rcx)
26738 .byte 136,136,61,137,136,136 // mov %cl,-0x777776c3(%rax)
26739 .byte 61,137,136,136,61 // cmp $0x3d888889,%eax
26740 .byte 0,240 // add %dh,%al
26741 .byte 0,0 // add %al,(%rax)
26742 .byte 0,240 // add %dh,%al
26743 .byte 0,0 // add %al,(%rax)
26744 .byte 0,240 // add %dh,%al
26745 .byte 0,0 // add %al,(%rax)
26746 .byte 0,240 // add %dh,%al
26747 .byte 0,0 // add %al,(%rax)
26748 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
26749 .byte 136,55 // mov %dh,(%rdi)
26750 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
26751 .byte 136,55 // mov %dh,(%rdi)
Mike Klein308e6242017-04-27 13:56:33 -040026752 .byte 0,15 // add %cl,(%rdi)
26753 .byte 0,0 // add %al,(%rax)
26754 .byte 0,15 // add %cl,(%rdi)
26755 .byte 0,0 // add %al,(%rax)
26756 .byte 0,15 // add %cl,(%rdi)
26757 .byte 0,0 // add %al,(%rax)
26758 .byte 0,15 // add %cl,(%rdi)
26759 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026760 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
26761 .byte 136,57 // mov %bh,(%rcx)
26762 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
26763 .byte 136,57 // mov %bh,(%rcx)
Mike Klein308e6242017-04-27 13:56:33 -040026764 .byte 240,0,0 // lock add %al,(%rax)
26765 .byte 0,240 // add %dh,%al
26766 .byte 0,0 // add %al,(%rax)
26767 .byte 0,240 // add %dh,%al
26768 .byte 0,0 // add %al,(%rax)
26769 .byte 0,240 // add %dh,%al
26770 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026771 .byte 0,137,136,136,59,137 // add %cl,-0x76c47778(%rcx)
26772 .byte 136,136,59,137,136,136 // mov %cl,-0x777776c5(%rax)
26773 .byte 59,137,136,136,59,15 // cmp 0xf3b8888(%rcx),%ecx
Mike Klein308e6242017-04-27 13:56:33 -040026774 .byte 0,0 // add %al,(%rax)
26775 .byte 0,15 // add %cl,(%rdi)
26776 .byte 0,0 // add %al,(%rax)
26777 .byte 0,15 // add %cl,(%rdi)
26778 .byte 0,0 // add %al,(%rax)
26779 .byte 0,15 // add %cl,(%rdi)
26780 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026781 .byte 0,137,136,136,61,137 // add %cl,-0x76c27778(%rcx)
26782 .byte 136,136,61,137,136,136 // mov %cl,-0x777776c3(%rax)
26783 .byte 61,137,136,136,61 // cmp $0x3d888889,%eax
Mike Klein308e6242017-04-27 13:56:33 -040026784 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026785 .byte 112,65 // jo 54b5 <.literal16+0xc95>
Mike Klein308e6242017-04-27 13:56:33 -040026786 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026787 .byte 112,65 // jo 54b9 <.literal16+0xc99>
Mike Klein308e6242017-04-27 13:56:33 -040026788 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026789 .byte 112,65 // jo 54bd <.literal16+0xc9d>
Mike Klein308e6242017-04-27 13:56:33 -040026790 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026791 .byte 112,65 // jo 54c1 <.literal16+0xca1>
Mike Kleinfe560a82017-05-01 12:56:35 -040026792 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040026793 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026794 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040026795 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026796 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040026797 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026798 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040026799 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026800 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
26801 .byte 128,59,129 // cmpb $0x81,(%rbx)
26802 .byte 128,128,59,1,255,255,255 // addb $0xff,-0xfec5(%rax)
26803 .byte 5,255,255,255,9 // add $0x9ffffff,%eax
Mike Klein308e6242017-04-27 13:56:33 -040026804 .byte 255 // (bad)
26805 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026806 .byte 255,13,255,255,255,2 // decl 0x2ffffff(%rip) # 30054b0 <_sk_callback_sse41+0x3000d6e>
Mike Klein0aa742f2017-04-27 13:36:57 -040026807 .byte 255 // (bad)
26808 .byte 255 // (bad)
26809 .byte 255,6 // incl (%rsi)
26810 .byte 255 // (bad)
26811 .byte 255 // (bad)
26812 .byte 255,10 // decl (%rdx)
26813 .byte 255 // (bad)
26814 .byte 255 // (bad)
26815 .byte 255,14 // decl (%rsi)
26816 .byte 255 // (bad)
26817 .byte 255 // (bad)
26818 .byte 255 // (bad)
26819 .byte 255,0 // incl (%rax)
26820 .byte 0,0 // add %al,(%rax)
26821 .byte 255,0 // incl (%rax)
26822 .byte 0,0 // add %al,(%rax)
26823 .byte 255,0 // incl (%rax)
26824 .byte 0,0 // add %al,(%rax)
26825 .byte 255,0 // incl (%rax)
26826 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026827 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
26828 .byte 128,59,129 // cmpb $0x81,(%rbx)
26829 .byte 128,128,59,1,255,255,255 // addb $0xff,-0xfec5(%rax)
26830 .byte 5,255,255,255,9 // add $0x9ffffff,%eax
Mike Klein0aa742f2017-04-27 13:36:57 -040026831 .byte 255 // (bad)
26832 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026833 .byte 255,13,255,255,255,2 // decl 0x2ffffff(%rip) # 30054f0 <_sk_callback_sse41+0x3000dae>
Mike Klein0aa742f2017-04-27 13:36:57 -040026834 .byte 255 // (bad)
26835 .byte 255 // (bad)
26836 .byte 255,6 // incl (%rsi)
26837 .byte 255 // (bad)
26838 .byte 255 // (bad)
26839 .byte 255,10 // decl (%rdx)
26840 .byte 255 // (bad)
26841 .byte 255 // (bad)
26842 .byte 255,14 // decl (%rsi)
26843 .byte 255 // (bad)
26844 .byte 255 // (bad)
26845 .byte 255,0 // incl (%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026846 .byte 0,127,67 // add %bh,0x43(%rdi)
26847 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026848 .byte 127,67 // jg 554b <.literal16+0xd2b>
Mike Kleinfe560a82017-05-01 12:56:35 -040026849 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026850 .byte 127,67 // jg 554f <.literal16+0xd2f>
Mike Kleinfe560a82017-05-01 12:56:35 -040026851 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040026852 .byte 127,67 // jg 5553 <.literal16+0xd33>
Mike Kleinb4bbc642017-04-27 08:59:55 -040026853 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
26854 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026855 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040026856 .byte 0,0 // add %al,(%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040026857 .byte 0,4,0 // add %al,(%rax,%rax,1)
Mike Kleinb4bbc642017-04-27 08:59:55 -040026858 .byte 0,0 // add %al,(%rax)
26859 .byte 4,0 // add $0x0,%al
26860 .byte 0,0 // add %al,(%rax)
26861 .byte 4,0 // add $0x0,%al
26862 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040026863 .byte 4,0 // add $0x0,%al
26864 .byte 0,0 // add %al,(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040026865 .byte 0,0 // add %al,(%rax)
26866 .byte 56,0 // cmp %al,(%rax)
26867 .byte 0,0 // add %al,(%rax)
26868 .byte 56,0 // cmp %al,(%rax)
26869 .byte 0,0 // add %al,(%rax)
26870 .byte 56,0 // cmp %al,(%rax)
26871 .byte 0,0 // add %al,(%rax)
26872 .byte 56,0 // cmp %al,(%rax)
26873 .byte 128,0,0 // addb $0x0,(%rax)
26874 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
26875 .byte 0,0 // add %al,(%rax)
26876 .byte 0,128,0,0,0,4 // add %al,0x4000000(%rax)
26877 .byte 0,0 // add %al,(%rax)
26878 .byte 0,4,0 // add %al,(%rax,%rax,1)
26879 .byte 0,0 // add %al,(%rax)
26880 .byte 4,0 // add $0x0,%al
26881 .byte 0,0 // add %al,(%rax)
26882 .byte 4,0 // add $0x0,%al
26883 .byte 0,0 // add %al,(%rax)
26884 .byte 0,0 // add %al,(%rax)
26885 .byte 56,0 // cmp %al,(%rax)
26886 .byte 0,0 // add %al,(%rax)
26887 .byte 56,0 // cmp %al,(%rax)
26888 .byte 0,0 // add %al,(%rax)
26889 .byte 56,0 // cmp %al,(%rax)
26890 .byte 0,0 // add %al,(%rax)
26891 .byte 56,0 // cmp %al,(%rax)
26892 .byte 0,0 // add %al,(%rax)
26893 .byte 128,0,0 // addb $0x0,(%rax)
26894 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
26895 .byte 0,0 // add %al,(%rax)
26896 .byte 0,128,0,0,128,56 // add %al,0x38800000(%rax)
26897 .byte 0,0 // add %al,(%rax)
26898 .byte 128,56,0 // cmpb $0x0,(%rax)
26899 .byte 0,128,56,0,0,128 // add %al,-0x7fffffc8(%rax)
26900 .byte 56,0 // cmp %al,(%rax)
26901 .byte 64,254 // rex (bad)
26902 .byte 255,0 // incl (%rax)
26903 .byte 64,254 // rex (bad)
26904 .byte 255,0 // incl (%rax)
26905 .byte 64,254 // rex (bad)
26906 .byte 255,0 // incl (%rax)
26907 .byte 64,254 // rex (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040026908 .byte 255,128,0,128,55,128 // incl -0x7fc88000(%rax)
26909 .byte 0,128,55,128,0,128 // add %al,-0x7fff7fc9(%rax)
26910 .byte 55 // (bad)
26911 .byte 128,0,128 // addb $0x80,(%rax)
26912 .byte 55 // (bad)
26913 .byte 128,0,128 // addb $0x80,(%rax)
26914 .byte 55 // (bad)
26915 .byte 128,0,128 // addb $0x80,(%rax)
26916 .byte 55 // (bad)
26917 .byte 128,0,128 // addb $0x80,(%rax)
26918 .byte 55 // (bad)
26919 .byte 128,0,128 // addb $0x80,(%rax)
26920 .byte 55 // (bad)
26921 .byte 0,0 // add %al,(%rax)
26922 .byte 128,63,0 // cmpb $0x0,(%rdi)
26923 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
26924 .byte 63 // (bad)
26925 .byte 0,0 // add %al,(%rax)
26926 .byte 128,63,0 // cmpb $0x0,(%rdi)
26927 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040026928 .byte 127,71 // jg 561b <.literal16+0xdfb>
Mike Kleinfe560a82017-05-01 12:56:35 -040026929 .byte 0,255 // add %bh,%bh
Mike Klein8ca33562017-05-23 08:07:43 -040026930 .byte 127,71 // jg 561f <.literal16+0xdff>
Mike Kleinfe560a82017-05-01 12:56:35 -040026931 .byte 0,255 // add %bh,%bh
Mike Klein8ca33562017-05-23 08:07:43 -040026932 .byte 127,71 // jg 5623 <.literal16+0xe03>
Mike Kleinfe560a82017-05-01 12:56:35 -040026933 .byte 0,255 // add %bh,%bh
Mike Klein8ca33562017-05-23 08:07:43 -040026934 .byte 127,71 // jg 5627 <.literal16+0xe07>
Mike Klein9f85d682017-05-23 07:52:01 -040026935 .byte 0,0 // add %al,(%rax)
26936 .byte 128,63,0 // cmpb $0x0,(%rdi)
26937 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
26938 .byte 63 // (bad)
26939 .byte 0,0 // add %al,(%rax)
26940 .byte 128,63,0 // cmpb $0x0,(%rdi)
26941 .byte 0,128,191,0,0,128 // add %al,-0x7fffff41(%rax)
26942 .byte 191,0,0,128,191 // mov $0xbf800000,%edi
26943 .byte 0,0 // add %al,(%rax)
26944 .byte 128,191,0,0,0,63,0 // cmpb $0x0,0x3f000000(%rdi)
26945 .byte 0,0 // add %al,(%rax)
26946 .byte 63 // (bad)
26947 .byte 0,0 // add %al,(%rax)
26948 .byte 0,63 // add %bh,(%rdi)
26949 .byte 0,0 // add %al,(%rax)
26950 .byte 0,63 // add %bh,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040026951 .byte 208 // (bad)
26952 .byte 179,89 // mov $0x59,%bl
26953 .byte 62,208 // ds (bad)
26954 .byte 179,89 // mov $0x59,%bl
26955 .byte 62,208 // ds (bad)
26956 .byte 179,89 // mov $0x59,%bl
26957 .byte 62,208 // ds (bad)
26958 .byte 179,89 // mov $0x59,%bl
26959 .byte 62,89 // ds pop %rcx
26960 .byte 23 // (bad)
26961 .byte 55 // (bad)
26962 .byte 63 // (bad)
26963 .byte 89 // pop %rcx
26964 .byte 23 // (bad)
26965 .byte 55 // (bad)
26966 .byte 63 // (bad)
26967 .byte 89 // pop %rcx
26968 .byte 23 // (bad)
26969 .byte 55 // (bad)
26970 .byte 63 // (bad)
26971 .byte 89 // pop %rcx
26972 .byte 23 // (bad)
26973 .byte 55 // (bad)
26974 .byte 63 // (bad)
26975 .byte 152 // cwtl
26976 .byte 221,147,61,152,221,147 // fstl -0x6c2267c3(%rbx)
26977 .byte 61,152,221,147,61 // cmp $0x3d93dd98,%eax
26978 .byte 152 // cwtl
Herb Derby4de13042017-05-15 10:49:39 -040026979 .byte 221,147,61,1,0,0 // fstl 0x13d(%rbx)
26980 .byte 0,1 // add %al,(%rcx)
26981 .byte 0,0 // add %al,(%rax)
26982 .byte 0,1 // add %al,(%rcx)
26983 .byte 0,0 // add %al,(%rax)
26984 .byte 0,1 // add %al,(%rcx)
26985 .byte 0,0 // add %al,(%rax)
26986 .byte 0,111,43 // add %ch,0x2b(%rdi)
26987 .byte 231,187 // out %eax,$0xbb
Herb Derby7eb86982017-05-02 19:04:39 -040026988 .byte 111 // outsl %ds:(%rsi),(%dx)
26989 .byte 43,231 // sub %edi,%esp
26990 .byte 187,111,43,231,187 // mov $0xbbe72b6f,%ebx
Herb Derby4de13042017-05-15 10:49:39 -040026991 .byte 111 // outsl %ds:(%rsi),(%dx)
26992 .byte 43,231 // sub %edi,%esp
26993 .byte 187,159,215,202,60 // mov $0x3ccad79f,%ebx
Herb Derby7eb86982017-05-02 19:04:39 -040026994 .byte 159 // lahf
26995 .byte 215 // xlat %ds:(%rbx)
26996 .byte 202,60,159 // lret $0x9f3c
26997 .byte 215 // xlat %ds:(%rbx)
26998 .byte 202,60,159 // lret $0x9f3c
26999 .byte 215 // xlat %ds:(%rbx)
Herb Derby7eb86982017-05-02 19:04:39 -040027000 .byte 202,60,212 // lret $0xd43c
27001 .byte 100,84 // fs push %rsp
27002 .byte 189,212,100,84,189 // mov $0xbd5464d4,%ebp
27003 .byte 212 // (bad)
27004 .byte 100,84 // fs push %rsp
27005 .byte 189,212,100,84,189 // mov $0xbd5464d4,%ebp
27006 .byte 169,240,34,62,169 // test $0xa93e22f0,%eax
27007 .byte 240,34,62 // lock and (%rsi),%bh
27008 .byte 169,240,34,62,169 // test $0xa93e22f0,%eax
27009 .byte 240,34,62 // lock and (%rsi),%bh
27010 .byte 0,0 // add %al,(%rax)
27011 .byte 128,62,0 // cmpb $0x0,(%rsi)
27012 .byte 0,128,62,0,0,128 // add %al,-0x7fffffc2(%rax)
27013 .byte 62,0,0 // add %al,%ds:(%rax)
27014 .byte 128,62,0 // cmpb $0x0,(%rsi)
27015 .byte 0,0 // add %al,(%rax)
27016 .byte 63 // (bad)
27017 .byte 0,0 // add %al,(%rax)
27018 .byte 0,63 // add %bh,(%rdi)
27019 .byte 0,0 // add %al,(%rax)
27020 .byte 0,63 // add %bh,(%rdi)
27021 .byte 0,0 // add %al,(%rax)
27022 .byte 0,63 // add %bh,(%rdi)
27023 .byte 0,0 // add %al,(%rax)
27024 .byte 128,63,0 // cmpb $0x0,(%rdi)
27025 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27026 .byte 63 // (bad)
27027 .byte 0,0 // add %al,(%rax)
27028 .byte 128,63,0 // cmpb $0x0,(%rdi)
27029 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040027030 .byte 63 // (bad)
27031 .byte 0,0 // add %al,(%rax)
27032 .byte 0,63 // add %bh,(%rdi)
27033 .byte 0,0 // add %al,(%rax)
27034 .byte 0,63 // add %bh,(%rdi)
27035 .byte 0,0 // add %al,(%rax)
27036 .byte 0,63 // add %bh,(%rdi)
27037 .byte 0,0 // add %al,(%rax)
27038 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
27039 .byte 0,0 // add %al,(%rax)
27040 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
27041 .byte 0,0 // add %al,(%rax)
27042 .byte 128,63,0 // cmpb $0x0,(%rdi)
27043 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27044 .byte 63 // (bad)
27045 .byte 0,0 // add %al,(%rax)
27046 .byte 128,63,0 // cmpb $0x0,(%rdi)
27047 .byte 0,0 // add %al,(%rax)
27048 .byte 63 // (bad)
27049 .byte 0,0 // add %al,(%rax)
27050 .byte 0,63 // add %bh,(%rdi)
27051 .byte 0,0 // add %al,(%rax)
27052 .byte 0,63 // add %bh,(%rdi)
27053 .byte 0,0 // add %al,(%rax)
27054 .byte 0,63 // add %bh,(%rdi)
27055 .byte 0,0 // add %al,(%rax)
27056 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
27057 .byte 0,0 // add %al,(%rax)
27058 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
27059 .byte 0,0 // add %al,(%rax)
27060 .byte 128,63,0 // cmpb $0x0,(%rdi)
27061 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27062 .byte 63 // (bad)
27063 .byte 0,0 // add %al,(%rax)
27064 .byte 128,63,0 // cmpb $0x0,(%rdi)
27065 .byte 0,0 // add %al,(%rax)
27066 .byte 63 // (bad)
27067 .byte 0,0 // add %al,(%rax)
27068 .byte 0,63 // add %bh,(%rdi)
27069 .byte 0,0 // add %al,(%rax)
27070 .byte 0,63 // add %bh,(%rdi)
27071 .byte 0,0 // add %al,(%rax)
27072 .byte 0,63 // add %bh,(%rdi)
27073 .byte 0,0 // add %al,(%rax)
27074 .byte 192,191,0,0,192,191,0 // sarb $0x0,-0x40400000(%rdi)
27075 .byte 0,192 // add %al,%al
27076 .byte 191,0,0,192,191 // mov $0xbfc00000,%edi
27077 .byte 0,0 // add %al,(%rax)
27078 .byte 128,63,0 // cmpb $0x0,(%rdi)
27079 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27080 .byte 63 // (bad)
27081 .byte 0,0 // add %al,(%rax)
27082 .byte 128,63,114 // cmpb $0x72,(%rdi)
27083 .byte 28,199 // sbb $0xc7,%al
Mike Klein8ca33562017-05-23 08:07:43 -040027084 .byte 62,114,28 // jb,pt 5772 <.literal16+0xf52>
Mike Kleinfe560a82017-05-01 12:56:35 -040027085 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027086 .byte 62,114,28 // jb,pt 5776 <.literal16+0xf56>
Mike Kleinfe560a82017-05-01 12:56:35 -040027087 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027088 .byte 62,114,28 // jb,pt 577a <.literal16+0xf5a>
Mike Kleinfe560a82017-05-01 12:56:35 -040027089 .byte 199 // (bad)
27090 .byte 62,171 // ds stos %eax,%es:(%rdi)
27091 .byte 170 // stos %al,%es:(%rdi)
27092 .byte 170 // stos %al,%es:(%rdi)
27093 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
27094 .byte 171 // stos %eax,%es:(%rdi)
27095 .byte 170 // stos %al,%es:(%rdi)
27096 .byte 170 // stos %al,%es:(%rdi)
27097 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
27098 .byte 0,0 // add %al,(%rax)
27099 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
27100 .byte 0,0 // add %al,(%rax)
27101 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
27102 .byte 0,0 // add %al,(%rax)
27103 .byte 128,63,0 // cmpb $0x0,(%rdi)
27104 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27105 .byte 63 // (bad)
27106 .byte 0,0 // add %al,(%rax)
27107 .byte 128,63,85 // cmpb $0x55,(%rdi)
27108 .byte 85 // push %rbp
27109 .byte 149 // xchg %eax,%ebp
27110 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
27111 .byte 85 // push %rbp
27112 .byte 85 // push %rbp
27113 .byte 149 // xchg %eax,%ebp
27114 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
27115 .byte 0,0 // add %al,(%rax)
27116 .byte 192,63,0 // sarb $0x0,(%rdi)
27117 .byte 0,192 // add %al,%al
27118 .byte 63 // (bad)
27119 .byte 0,0 // add %al,(%rax)
27120 .byte 192,63,0 // sarb $0x0,(%rdi)
27121 .byte 0,192 // add %al,%al
27122 .byte 63 // (bad)
27123 .byte 0,0 // add %al,(%rax)
27124 .byte 0,63 // add %bh,(%rdi)
27125 .byte 0,0 // add %al,(%rax)
27126 .byte 0,63 // add %bh,(%rdi)
27127 .byte 0,0 // add %al,(%rax)
27128 .byte 0,63 // add %bh,(%rdi)
27129 .byte 0,0 // add %al,(%rax)
27130 .byte 0,63 // add %bh,(%rdi)
27131 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Klein8ca33562017-05-23 08:07:43 -040027132 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63e605 <_sk_callback_sse41+0x3d639ec3>
Mike Kleinfe560a82017-05-01 12:56:35 -040027133 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
27134 .byte 0,63 // add %bh,(%rdi)
27135 .byte 0,0 // add %al,(%rax)
27136 .byte 0,63 // add %bh,(%rdi)
27137 .byte 0,0 // add %al,(%rax)
27138 .byte 0,63 // add %bh,(%rdi)
27139 .byte 0,0 // add %al,(%rax)
27140 .byte 0,63 // add %bh,(%rdi)
27141 .byte 85 // push %rbp
27142 .byte 85 // push %rbp
27143 .byte 149 // xchg %eax,%ebp
27144 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
27145 .byte 85 // push %rbp
27146 .byte 85 // push %rbp
27147 .byte 149 // xchg %eax,%ebp
27148 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
27149 .byte 0,0 // add %al,(%rax)
27150 .byte 192,63,0 // sarb $0x0,(%rdi)
27151 .byte 0,192 // add %al,%al
27152 .byte 63 // (bad)
27153 .byte 0,0 // add %al,(%rax)
27154 .byte 192,63,0 // sarb $0x0,(%rdi)
27155 .byte 0,192 // add %al,%al
27156 .byte 63 // (bad)
27157 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Klein8ca33562017-05-23 08:07:43 -040027158 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63e645 <_sk_callback_sse41+0x3d639f03>
Mike Kleinfe560a82017-05-01 12:56:35 -040027159 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
27160 .byte 192,63,0 // sarb $0x0,(%rdi)
27161 .byte 0,192 // add %al,%al
27162 .byte 63 // (bad)
27163 .byte 0,0 // add %al,(%rax)
27164 .byte 192,63,0 // sarb $0x0,(%rdi)
27165 .byte 0,192 // add %al,%al
27166 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027167 .byte 114,28 // jb 583e <.literal16+0x101e>
Mike Kleinfe560a82017-05-01 12:56:35 -040027168 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027169 .byte 62,114,28 // jb,pt 5842 <.literal16+0x1022>
Mike Kleinfe560a82017-05-01 12:56:35 -040027170 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027171 .byte 62,114,28 // jb,pt 5846 <.literal16+0x1026>
Mike Kleinfe560a82017-05-01 12:56:35 -040027172 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027173 .byte 62,114,28 // jb,pt 584a <.literal16+0x102a>
Mike Kleinfe560a82017-05-01 12:56:35 -040027174 .byte 199 // (bad)
27175 .byte 62,171 // ds stos %eax,%es:(%rdi)
27176 .byte 170 // stos %al,%es:(%rdi)
27177 .byte 170 // stos %al,%es:(%rdi)
27178 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
27179 .byte 171 // stos %eax,%es:(%rdi)
27180 .byte 170 // stos %al,%es:(%rdi)
27181 .byte 170 // stos %al,%es:(%rdi)
27182 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
27183 .byte 0,0 // add %al,(%rax)
27184 .byte 192,191,0,0,192,191,0 // sarb $0x0,-0x40400000(%rdi)
27185 .byte 0,192 // add %al,%al
27186 .byte 191,0,0,192,191 // mov $0xbfc00000,%edi
27187 .byte 0,0 // add %al,(%rax)
27188 .byte 128,63,0 // cmpb $0x0,(%rdi)
27189 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27190 .byte 63 // (bad)
27191 .byte 0,0 // add %al,(%rax)
27192 .byte 128,63,114 // cmpb $0x72,(%rdi)
27193 .byte 28,199 // sbb $0xc7,%al
Mike Klein8ca33562017-05-23 08:07:43 -040027194 .byte 62,114,28 // jb,pt 5882 <.literal16+0x1062>
Mike Kleinfe560a82017-05-01 12:56:35 -040027195 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027196 .byte 62,114,28 // jb,pt 5886 <.literal16+0x1066>
Mike Kleinfe560a82017-05-01 12:56:35 -040027197 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027198 .byte 62,114,28 // jb,pt 588a <.literal16+0x106a>
Mike Kleinfe560a82017-05-01 12:56:35 -040027199 .byte 199 // (bad)
27200 .byte 62,171 // ds stos %eax,%es:(%rdi)
27201 .byte 170 // stos %al,%es:(%rdi)
27202 .byte 170 // stos %al,%es:(%rdi)
27203 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
27204 .byte 171 // stos %eax,%es:(%rdi)
27205 .byte 170 // stos %al,%es:(%rdi)
27206 .byte 170 // stos %al,%es:(%rdi)
27207 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
27208 .byte 0,0 // add %al,(%rax)
27209 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
27210 .byte 0,0 // add %al,(%rax)
27211 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
27212 .byte 0,0 // add %al,(%rax)
27213 .byte 128,63,0 // cmpb $0x0,(%rdi)
27214 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
27215 .byte 63 // (bad)
27216 .byte 0,0 // add %al,(%rax)
27217 .byte 128,63,85 // cmpb $0x55,(%rdi)
27218 .byte 85 // push %rbp
27219 .byte 149 // xchg %eax,%ebp
27220 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
27221 .byte 85 // push %rbp
27222 .byte 85 // push %rbp
27223 .byte 149 // xchg %eax,%ebp
27224 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
27225 .byte 0,0 // add %al,(%rax)
27226 .byte 192,63,0 // sarb $0x0,(%rdi)
27227 .byte 0,192 // add %al,%al
27228 .byte 63 // (bad)
27229 .byte 0,0 // add %al,(%rax)
27230 .byte 192,63,0 // sarb $0x0,(%rdi)
27231 .byte 0,192 // add %al,%al
27232 .byte 63 // (bad)
27233 .byte 0,0 // add %al,(%rax)
27234 .byte 0,63 // add %bh,(%rdi)
27235 .byte 0,0 // add %al,(%rax)
27236 .byte 0,63 // add %bh,(%rdi)
27237 .byte 0,0 // add %al,(%rax)
27238 .byte 0,63 // add %bh,(%rdi)
27239 .byte 0,0 // add %al,(%rax)
27240 .byte 0,63 // add %bh,(%rdi)
27241 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Klein8ca33562017-05-23 08:07:43 -040027242 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63e715 <_sk_callback_sse41+0x3d639fd3>
Mike Kleinfe560a82017-05-01 12:56:35 -040027243 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
27244 .byte 0,63 // add %bh,(%rdi)
27245 .byte 0,0 // add %al,(%rax)
27246 .byte 0,63 // add %bh,(%rdi)
27247 .byte 0,0 // add %al,(%rax)
27248 .byte 0,63 // add %bh,(%rdi)
27249 .byte 0,0 // add %al,(%rax)
27250 .byte 0,63 // add %bh,(%rdi)
27251 .byte 85 // push %rbp
27252 .byte 85 // push %rbp
27253 .byte 149 // xchg %eax,%ebp
27254 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
27255 .byte 85 // push %rbp
27256 .byte 85 // push %rbp
27257 .byte 149 // xchg %eax,%ebp
27258 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
27259 .byte 0,0 // add %al,(%rax)
27260 .byte 192,63,0 // sarb $0x0,(%rdi)
27261 .byte 0,192 // add %al,%al
27262 .byte 63 // (bad)
27263 .byte 0,0 // add %al,(%rax)
27264 .byte 192,63,0 // sarb $0x0,(%rdi)
27265 .byte 0,192 // add %al,%al
27266 .byte 63 // (bad)
27267 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Klein8ca33562017-05-23 08:07:43 -040027268 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63e755 <_sk_callback_sse41+0x3d63a013>
Mike Kleinfe560a82017-05-01 12:56:35 -040027269 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
27270 .byte 192,63,0 // sarb $0x0,(%rdi)
27271 .byte 0,192 // add %al,%al
27272 .byte 63 // (bad)
27273 .byte 0,0 // add %al,(%rax)
27274 .byte 192,63,0 // sarb $0x0,(%rdi)
27275 .byte 0,192 // add %al,%al
27276 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027277 .byte 114,28 // jb 594e <.literal16+0x112e>
Mike Kleinfe560a82017-05-01 12:56:35 -040027278 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027279 .byte 62,114,28 // jb,pt 5952 <_sk_callback_sse41+0x1210>
Mike Kleinfe560a82017-05-01 12:56:35 -040027280 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027281 .byte 62,114,28 // jb,pt 5956 <_sk_callback_sse41+0x1214>
Mike Kleinfe560a82017-05-01 12:56:35 -040027282 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040027283 .byte 62,114,28 // jb,pt 595a <_sk_callback_sse41+0x1218>
Mike Kleinfe560a82017-05-01 12:56:35 -040027284 .byte 199 // (bad)
27285 .byte 62,171 // ds stos %eax,%es:(%rdi)
27286 .byte 170 // stos %al,%es:(%rdi)
27287 .byte 170 // stos %al,%es:(%rdi)
27288 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
27289 .byte 171 // stos %eax,%es:(%rdi)
27290 .byte 170 // stos %al,%es:(%rdi)
27291 .byte 170 // stos %al,%es:(%rdi)
27292 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
Mike Klein67e61712017-04-26 09:52:09 -040027293BALIGN32
Mike Klein2229b572017-04-21 10:30:29 -040027294
Mike Klein7c4af542017-03-29 18:21:14 -040027295HIDDEN _sk_start_pipeline_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040027296.globl _sk_start_pipeline_sse2
Mike Klein86714282017-04-13 17:37:38 -040027297FUNCTION(_sk_start_pipeline_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040027298_sk_start_pipeline_sse2:
27299 .byte 65,87 // push %r15
27300 .byte 65,86 // push %r14
27301 .byte 65,85 // push %r13
27302 .byte 65,84 // push %r12
27303 .byte 83 // push %rbx
27304 .byte 73,137,207 // mov %rcx,%r15
27305 .byte 73,137,214 // mov %rdx,%r14
27306 .byte 72,137,251 // mov %rdi,%rbx
27307 .byte 72,173 // lods %ds:(%rsi),%rax
27308 .byte 73,137,196 // mov %rax,%r12
27309 .byte 73,137,245 // mov %rsi,%r13
27310 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
27311 .byte 76,57,248 // cmp %r15,%rax
27312 .byte 118,5 // jbe 28 <_sk_start_pipeline_sse2+0x28>
27313 .byte 72,137,216 // mov %rbx,%rax
27314 .byte 235,52 // jmp 5c <_sk_start_pipeline_sse2+0x5c>
27315 .byte 15,87,192 // xorps %xmm0,%xmm0
27316 .byte 15,87,201 // xorps %xmm1,%xmm1
27317 .byte 15,87,210 // xorps %xmm2,%xmm2
27318 .byte 15,87,219 // xorps %xmm3,%xmm3
27319 .byte 15,87,228 // xorps %xmm4,%xmm4
27320 .byte 15,87,237 // xorps %xmm5,%xmm5
27321 .byte 15,87,246 // xorps %xmm6,%xmm6
27322 .byte 15,87,255 // xorps %xmm7,%xmm7
27323 .byte 72,137,223 // mov %rbx,%rdi
27324 .byte 76,137,238 // mov %r13,%rsi
27325 .byte 76,137,242 // mov %r14,%rdx
27326 .byte 65,255,212 // callq *%r12
27327 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
27328 .byte 72,131,195,8 // add $0x8,%rbx
27329 .byte 76,57,251 // cmp %r15,%rbx
27330 .byte 72,137,195 // mov %rax,%rbx
27331 .byte 118,204 // jbe 28 <_sk_start_pipeline_sse2+0x28>
27332 .byte 91 // pop %rbx
27333 .byte 65,92 // pop %r12
27334 .byte 65,93 // pop %r13
27335 .byte 65,94 // pop %r14
27336 .byte 65,95 // pop %r15
27337 .byte 195 // retq
27338
Mike Klein7c4af542017-03-29 18:21:14 -040027339HIDDEN _sk_just_return_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040027340.globl _sk_just_return_sse2
Mike Klein86714282017-04-13 17:37:38 -040027341FUNCTION(_sk_just_return_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040027342_sk_just_return_sse2:
27343 .byte 195 // retq
27344
Mike Klein7c4af542017-03-29 18:21:14 -040027345HIDDEN _sk_seed_shader_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040027346.globl _sk_seed_shader_sse2
Mike Klein86714282017-04-13 17:37:38 -040027347FUNCTION(_sk_seed_shader_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040027348_sk_seed_shader_sse2:
27349 .byte 72,173 // lods %ds:(%rsi),%rax
27350 .byte 102,15,110,199 // movd %edi,%xmm0
27351 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
27352 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040027353 .byte 15,40,21,52,76,0,0 // movaps 0x4c34(%rip),%xmm2 # 4cb0 <_sk_callback_sse2+0xd5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040027354 .byte 15,88,202 // addps %xmm2,%xmm1
27355 .byte 15,16,2 // movups (%rdx),%xmm0
27356 .byte 15,88,193 // addps %xmm1,%xmm0
27357 .byte 102,15,110,8 // movd (%rax),%xmm1
27358 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
27359 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
27360 .byte 15,88,202 // addps %xmm2,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040027361 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040027362 .byte 15,40,21,35,76,0,0 // movaps 0x4c23(%rip),%xmm2 # 4cc0 <_sk_callback_sse2+0xe5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040027363 .byte 15,87,219 // xorps %xmm3,%xmm3
27364 .byte 15,87,228 // xorps %xmm4,%xmm4
27365 .byte 15,87,237 // xorps %xmm5,%xmm5
27366 .byte 15,87,246 // xorps %xmm6,%xmm6
27367 .byte 15,87,255 // xorps %xmm7,%xmm7
27368 .byte 255,224 // jmpq *%rax
27369
Mike Klein581e6982017-05-03 13:05:13 -040027370HIDDEN _sk_dither_sse2
27371.globl _sk_dither_sse2
27372FUNCTION(_sk_dither_sse2)
27373_sk_dither_sse2:
27374 .byte 72,173 // lods %ds:(%rsi),%rax
27375 .byte 102,68,15,110,199 // movd %edi,%xmm8
27376 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
Mike Klein5d7f2b52017-05-20 13:21:59 -040027377 .byte 243,68,15,111,74,32 // movdqu 0x20(%rdx),%xmm9
27378 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
Mike Klein581e6982017-05-03 13:05:13 -040027379 .byte 72,139,8 // mov (%rax),%rcx
27380 .byte 102,68,15,110,1 // movd (%rcx),%xmm8
27381 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
27382 .byte 102,69,15,239,193 // pxor %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040027383 .byte 102,68,15,111,21,238,75,0,0 // movdqa 0x4bee(%rip),%xmm10 # 4cd0 <_sk_callback_sse2+0xf5>
Mike Klein581e6982017-05-03 13:05:13 -040027384 .byte 102,69,15,111,216 // movdqa %xmm8,%xmm11
27385 .byte 102,69,15,219,218 // pand %xmm10,%xmm11
27386 .byte 102,65,15,114,243,5 // pslld $0x5,%xmm11
27387 .byte 102,69,15,219,209 // pand %xmm9,%xmm10
27388 .byte 102,65,15,114,242,4 // pslld $0x4,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040027389 .byte 102,68,15,111,37,218,75,0,0 // movdqa 0x4bda(%rip),%xmm12 # 4ce0 <_sk_callback_sse2+0x105>
27390 .byte 102,68,15,111,45,225,75,0,0 // movdqa 0x4be1(%rip),%xmm13 # 4cf0 <_sk_callback_sse2+0x115>
Mike Klein581e6982017-05-03 13:05:13 -040027391 .byte 102,69,15,111,240 // movdqa %xmm8,%xmm14
27392 .byte 102,69,15,219,245 // pand %xmm13,%xmm14
27393 .byte 102,65,15,114,246,2 // pslld $0x2,%xmm14
27394 .byte 102,69,15,219,233 // pand %xmm9,%xmm13
27395 .byte 102,69,15,254,237 // paddd %xmm13,%xmm13
27396 .byte 102,69,15,219,196 // pand %xmm12,%xmm8
27397 .byte 102,65,15,114,208,1 // psrld $0x1,%xmm8
27398 .byte 102,69,15,219,204 // pand %xmm12,%xmm9
27399 .byte 102,65,15,114,209,2 // psrld $0x2,%xmm9
27400 .byte 102,69,15,235,234 // por %xmm10,%xmm13
27401 .byte 102,69,15,235,233 // por %xmm9,%xmm13
Mike Klein5d7f2b52017-05-20 13:21:59 -040027402 .byte 102,69,15,235,235 // por %xmm11,%xmm13
27403 .byte 102,69,15,235,198 // por %xmm14,%xmm8
27404 .byte 102,69,15,235,197 // por %xmm13,%xmm8
27405 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040027406 .byte 68,15,89,5,156,75,0,0 // mulps 0x4b9c(%rip),%xmm8 # 4d00 <_sk_callback_sse2+0x125>
27407 .byte 68,15,88,5,164,75,0,0 // addps 0x4ba4(%rip),%xmm8 # 4d10 <_sk_callback_sse2+0x135>
Mike Klein7e68bc92017-05-16 12:03:15 -040027408 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
27409 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
27410 .byte 69,15,89,208 // mulps %xmm8,%xmm10
27411 .byte 65,15,88,194 // addps %xmm10,%xmm0
27412 .byte 65,15,88,202 // addps %xmm10,%xmm1
27413 .byte 68,15,88,210 // addps %xmm2,%xmm10
27414 .byte 15,93,195 // minps %xmm3,%xmm0
27415 .byte 15,87,210 // xorps %xmm2,%xmm2
27416 .byte 69,15,87,192 // xorps %xmm8,%xmm8
27417 .byte 68,15,95,192 // maxps %xmm0,%xmm8
27418 .byte 15,93,203 // minps %xmm3,%xmm1
27419 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
27420 .byte 68,15,95,201 // maxps %xmm1,%xmm9
27421 .byte 68,15,93,211 // minps %xmm3,%xmm10
27422 .byte 65,15,95,210 // maxps %xmm10,%xmm2
Mike Klein581e6982017-05-03 13:05:13 -040027423 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein7e68bc92017-05-16 12:03:15 -040027424 .byte 65,15,40,192 // movaps %xmm8,%xmm0
27425 .byte 65,15,40,201 // movaps %xmm9,%xmm1
Mike Klein581e6982017-05-03 13:05:13 -040027426 .byte 255,224 // jmpq *%rax
27427
Mike Klein7c4af542017-03-29 18:21:14 -040027428HIDDEN _sk_constant_color_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040027429.globl _sk_constant_color_sse2
Mike Klein86714282017-04-13 17:37:38 -040027430FUNCTION(_sk_constant_color_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040027431_sk_constant_color_sse2:
27432 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8a823fa2017-04-05 17:29:26 -040027433 .byte 243,15,16,0 // movss (%rax),%xmm0
27434 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040027435 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040027436 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
27437 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
27438 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
27439 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
27440 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040027441 .byte 72,173 // lods %ds:(%rsi),%rax
27442 .byte 255,224 // jmpq *%rax
27443
Mike Reed9959f722017-05-15 09:34:22 -040027444HIDDEN _sk_load_rgba_sse2
27445.globl _sk_load_rgba_sse2
27446FUNCTION(_sk_load_rgba_sse2)
27447_sk_load_rgba_sse2:
27448 .byte 72,173 // lods %ds:(%rsi),%rax
27449 .byte 15,16,0 // movups (%rax),%xmm0
27450 .byte 15,16,72,16 // movups 0x10(%rax),%xmm1
27451 .byte 15,16,80,32 // movups 0x20(%rax),%xmm2
27452 .byte 15,16,88,48 // movups 0x30(%rax),%xmm3
27453 .byte 72,173 // lods %ds:(%rsi),%rax
27454 .byte 255,224 // jmpq *%rax
27455
27456HIDDEN _sk_store_rgba_sse2
27457.globl _sk_store_rgba_sse2
27458FUNCTION(_sk_store_rgba_sse2)
27459_sk_store_rgba_sse2:
27460 .byte 72,173 // lods %ds:(%rsi),%rax
27461 .byte 15,17,0 // movups %xmm0,(%rax)
27462 .byte 15,17,72,16 // movups %xmm1,0x10(%rax)
27463 .byte 15,17,80,32 // movups %xmm2,0x20(%rax)
27464 .byte 15,17,88,48 // movups %xmm3,0x30(%rax)
27465 .byte 72,173 // lods %ds:(%rsi),%rax
27466 .byte 255,224 // jmpq *%rax
27467
Mike Klein7c4af542017-03-29 18:21:14 -040027468HIDDEN _sk_clear_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040027469.globl _sk_clear_sse2
Mike Klein86714282017-04-13 17:37:38 -040027470FUNCTION(_sk_clear_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040027471_sk_clear_sse2:
27472 .byte 72,173 // lods %ds:(%rsi),%rax
27473 .byte 15,87,192 // xorps %xmm0,%xmm0
27474 .byte 15,87,201 // xorps %xmm1,%xmm1
27475 .byte 15,87,210 // xorps %xmm2,%xmm2
27476 .byte 15,87,219 // xorps %xmm3,%xmm3
27477 .byte 255,224 // jmpq *%rax
27478
Mike Kleinaaca1e42017-03-31 09:29:01 -040027479HIDDEN _sk_srcatop_sse2
27480.globl _sk_srcatop_sse2
Mike Klein86714282017-04-13 17:37:38 -040027481FUNCTION(_sk_srcatop_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040027482_sk_srcatop_sse2:
27483 .byte 15,89,199 // mulps %xmm7,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040027484 .byte 68,15,40,5,253,74,0,0 // movaps 0x4afd(%rip),%xmm8 # 4d20 <_sk_callback_sse2+0x145>
Mike Kleinaaca1e42017-03-31 09:29:01 -040027485 .byte 68,15,92,195 // subps %xmm3,%xmm8
27486 .byte 69,15,40,200 // movaps %xmm8,%xmm9
27487 .byte 68,15,89,204 // mulps %xmm4,%xmm9
27488 .byte 65,15,88,193 // addps %xmm9,%xmm0
27489 .byte 15,89,207 // mulps %xmm7,%xmm1
27490 .byte 69,15,40,200 // movaps %xmm8,%xmm9
27491 .byte 68,15,89,205 // mulps %xmm5,%xmm9
27492 .byte 65,15,88,201 // addps %xmm9,%xmm1
27493 .byte 15,89,215 // mulps %xmm7,%xmm2
27494 .byte 69,15,40,200 // movaps %xmm8,%xmm9
27495 .byte 68,15,89,206 // mulps %xmm6,%xmm9
27496 .byte 65,15,88,209 // addps %xmm9,%xmm2
27497 .byte 15,89,223 // mulps %xmm7,%xmm3
27498 .byte 68,15,89,199 // mulps %xmm7,%xmm8
27499 .byte 65,15,88,216 // addps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040027500 .byte 72,173 // lods %ds:(%rsi),%rax
27501 .byte 255,224 // jmpq *%rax
27502
Mike Kleinaaca1e42017-03-31 09:29:01 -040027503HIDDEN _sk_dstatop_sse2
27504.globl _sk_dstatop_sse2
Mike Klein86714282017-04-13 17:37:38 -040027505FUNCTION(_sk_dstatop_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040027506_sk_dstatop_sse2:
27507 .byte 68,15,40,195 // movaps %xmm3,%xmm8
27508 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040027509 .byte 68,15,40,13,192,74,0,0 // movaps 0x4ac0(%rip),%xmm9 # 4d30 <_sk_callback_sse2+0x155>
Mike Kleinaaca1e42017-03-31 09:29:01 -040027510 .byte 68,15,92,207 // subps %xmm7,%xmm9
27511 .byte 65,15,89,193 // mulps %xmm9,%xmm0
27512 .byte 65,15,88,192 // addps %xmm8,%xmm0
27513 .byte 68,15,40,195 // movaps %xmm3,%xmm8
27514 .byte 68,15,89,197 // mulps %xmm5,%xmm8
27515 .byte 65,15,89,201 // mulps %xmm9,%xmm1
27516 .byte 65,15,88,200 // addps %xmm8,%xmm1
27517 .byte 68,15,40,195 // movaps %xmm3,%xmm8
27518 .byte 68,15,89,198 // mulps %xmm6,%xmm8
27519 .byte 65,15,89,209 // mulps %xmm9,%xmm2
27520 .byte 65,15,88,208 // addps %xmm8,%xmm2
27521 .byte 68,15,89,203 // mulps %xmm3,%xmm9
27522 .byte 15,89,223 // mulps %xmm7,%xmm3
27523 .byte 65,15,88,217 // addps %xmm9,%xmm3
27524 .byte 72,173 // lods %ds:(%rsi),%rax
27525 .byte 255,224 // jmpq *%rax
27526
27527HIDDEN _sk_srcin_sse2
27528.globl _sk_srcin_sse2
Mike Klein86714282017-04-13 17:37:38 -040027529FUNCTION(_sk_srcin_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040027530_sk_srcin_sse2:
27531 .byte 15,89,199 // mulps %xmm7,%xmm0
27532 .byte 15,89,207 // mulps %xmm7,%xmm1
27533 .byte 15,89,215 // mulps %xmm7,%xmm2
27534 .byte 15,89,223 // mulps %xmm7,%xmm3
27535 .byte 72,173 // lods %ds:(%rsi),%rax
27536 .byte 255,224 // jmpq *%rax
27537
27538HIDDEN _sk_dstin_sse2
27539.globl _sk_dstin_sse2
Mike Klein86714282017-04-13 17:37:38 -040027540FUNCTION(_sk_dstin_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040027541_sk_dstin_sse2:
27542 .byte 15,40,195 // movaps %xmm3,%xmm0
27543 .byte 15,89,196 // mulps %xmm4,%xmm0
27544 .byte 15,40,203 // movaps %xmm3,%xmm1
27545 .byte 15,89,205 // mulps %xmm5,%xmm1
27546 .byte 15,40,211 // movaps %xmm3,%xmm2
27547 .byte 15,89,214 // mulps %xmm6,%xmm2
27548 .byte 15,89,223 // mulps %xmm7,%xmm3
27549 .byte 72,173 // lods %ds:(%rsi),%rax
27550 .byte 255,224 // jmpq *%rax
27551
27552HIDDEN _sk_srcout_sse2
27553.globl _sk_srcout_sse2
Mike Klein86714282017-04-13 17:37:38 -040027554FUNCTION(_sk_srcout_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040027555_sk_srcout_sse2:
Mike Klein8ca33562017-05-23 08:07:43 -040027556 .byte 68,15,40,5,100,74,0,0 // movaps 0x4a64(%rip),%xmm8 # 4d40 <_sk_callback_sse2+0x165>
Mike Kleinaaca1e42017-03-31 09:29:01 -040027557 .byte 68,15,92,199 // subps %xmm7,%xmm8
27558 .byte 65,15,89,192 // mulps %xmm8,%xmm0
27559 .byte 65,15,89,200 // mulps %xmm8,%xmm1
27560 .byte 65,15,89,208 // mulps %xmm8,%xmm2
27561 .byte 65,15,89,216 // mulps %xmm8,%xmm3
27562 .byte 72,173 // lods %ds:(%rsi),%rax
27563 .byte 255,224 // jmpq *%rax
27564
27565HIDDEN _sk_dstout_sse2
27566.globl _sk_dstout_sse2
Mike Klein86714282017-04-13 17:37:38 -040027567FUNCTION(_sk_dstout_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040027568_sk_dstout_sse2:
Mike Klein8ca33562017-05-23 08:07:43 -040027569 .byte 68,15,40,5,84,74,0,0 // movaps 0x4a54(%rip),%xmm8 # 4d50 <_sk_callback_sse2+0x175>
Mike Kleinaaca1e42017-03-31 09:29:01 -040027570 .byte 68,15,92,195 // subps %xmm3,%xmm8
27571 .byte 65,15,40,192 // movaps %xmm8,%xmm0
27572 .byte 15,89,196 // mulps %xmm4,%xmm0
27573 .byte 65,15,40,200 // movaps %xmm8,%xmm1
27574 .byte 15,89,205 // mulps %xmm5,%xmm1
27575 .byte 65,15,40,208 // movaps %xmm8,%xmm2
27576 .byte 15,89,214 // mulps %xmm6,%xmm2
27577 .byte 68,15,89,199 // mulps %xmm7,%xmm8
27578 .byte 72,173 // lods %ds:(%rsi),%rax
27579 .byte 65,15,40,216 // movaps %xmm8,%xmm3
27580 .byte 255,224 // jmpq *%rax
27581
Mike Klein7c4af542017-03-29 18:21:14 -040027582HIDDEN _sk_srcover_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040027583.globl _sk_srcover_sse2
Mike Klein86714282017-04-13 17:37:38 -040027584FUNCTION(_sk_srcover_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040027585_sk_srcover_sse2:
Mike Klein8ca33562017-05-23 08:07:43 -040027586 .byte 68,15,40,5,55,74,0,0 // movaps 0x4a37(%rip),%xmm8 # 4d60 <_sk_callback_sse2+0x185>
Mike Kleind7e06ae2017-03-29 16:33:06 -040027587 .byte 68,15,92,195 // subps %xmm3,%xmm8
27588 .byte 69,15,40,200 // movaps %xmm8,%xmm9
27589 .byte 68,15,89,204 // mulps %xmm4,%xmm9
27590 .byte 65,15,88,193 // addps %xmm9,%xmm0
27591 .byte 69,15,40,200 // movaps %xmm8,%xmm9
27592 .byte 68,15,89,205 // mulps %xmm5,%xmm9
27593 .byte 65,15,88,201 // addps %xmm9,%xmm1
27594 .byte 69,15,40,200 // movaps %xmm8,%xmm9
27595 .byte 68,15,89,206 // mulps %xmm6,%xmm9
27596 .byte 65,15,88,209 // addps %xmm9,%xmm2
27597 .byte 68,15,89,199 // mulps %xmm7,%xmm8
27598 .byte 65,15,88,216 // addps %xmm8,%xmm3
27599 .byte 72,173 // lods %ds:(%rsi),%rax
27600 .byte 255,224 // jmpq *%rax
27601
Mike Klein7c4af542017-03-29 18:21:14 -040027602HIDDEN _sk_dstover_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040027603.globl _sk_dstover_sse2
Mike Klein86714282017-04-13 17:37:38 -040027604FUNCTION(_sk_dstover_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040027605_sk_dstover_sse2:
Mike Klein8ca33562017-05-23 08:07:43 -040027606 .byte 68,15,40,5,11,74,0,0 // movaps 0x4a0b(%rip),%xmm8 # 4d70 <_sk_callback_sse2+0x195>
Mike Kleind7e06ae2017-03-29 16:33:06 -040027607 .byte 68,15,92,199 // subps %xmm7,%xmm8
27608 .byte 65,15,89,192 // mulps %xmm8,%xmm0
27609 .byte 15,88,196 // addps %xmm4,%xmm0
27610 .byte 65,15,89,200 // mulps %xmm8,%xmm1
27611 .byte 15,88,205 // addps %xmm5,%xmm1
27612 .byte 65,15,89,208 // mulps %xmm8,%xmm2
27613 .byte 15,88,214 // addps %xmm6,%xmm2
27614 .byte 65,15,89,216 // mulps %xmm8,%xmm3
27615 .byte 15,88,223 // addps %xmm7,%xmm3
27616 .byte 72,173 // lods %ds:(%rsi),%rax
27617 .byte 255,224 // jmpq *%rax
27618
Mike Kleinaaca1e42017-03-31 09:29:01 -040027619HIDDEN _sk_modulate_sse2
27620.globl _sk_modulate_sse2
Mike Klein86714282017-04-13 17:37:38 -040027621FUNCTION(_sk_modulate_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040027622_sk_modulate_sse2:
27623 .byte 15,89,196 // mulps %xmm4,%xmm0
27624 .byte 15,89,205 // mulps %xmm5,%xmm1
27625 .byte 15,89,214 // mulps %xmm6,%xmm2
27626 .byte 15,89,223 // mulps %xmm7,%xmm3
27627 .byte 72,173 // lods %ds:(%rsi),%rax
27628 .byte 255,224 // jmpq *%rax
27629
27630HIDDEN _sk_multiply_sse2
27631.globl _sk_multiply_sse2
Mike Klein86714282017-04-13 17:37:38 -040027632FUNCTION(_sk_multiply_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040027633_sk_multiply_sse2:
Mike Klein8ca33562017-05-23 08:07:43 -040027634 .byte 68,15,40,5,223,73,0,0 // movaps 0x49df(%rip),%xmm8 # 4d80 <_sk_callback_sse2+0x1a5>
Mike Kleinaaca1e42017-03-31 09:29:01 -040027635 .byte 69,15,40,200 // movaps %xmm8,%xmm9
27636 .byte 68,15,92,207 // subps %xmm7,%xmm9
27637 .byte 69,15,40,209 // movaps %xmm9,%xmm10
27638 .byte 68,15,89,208 // mulps %xmm0,%xmm10
27639 .byte 68,15,92,195 // subps %xmm3,%xmm8
27640 .byte 69,15,40,216 // movaps %xmm8,%xmm11
27641 .byte 68,15,89,220 // mulps %xmm4,%xmm11
27642 .byte 69,15,88,218 // addps %xmm10,%xmm11
27643 .byte 15,89,196 // mulps %xmm4,%xmm0
27644 .byte 65,15,88,195 // addps %xmm11,%xmm0
27645 .byte 69,15,40,209 // movaps %xmm9,%xmm10
27646 .byte 68,15,89,209 // mulps %xmm1,%xmm10
27647 .byte 69,15,40,216 // movaps %xmm8,%xmm11
27648 .byte 68,15,89,221 // mulps %xmm5,%xmm11
27649 .byte 69,15,88,218 // addps %xmm10,%xmm11
27650 .byte 15,89,205 // mulps %xmm5,%xmm1
27651 .byte 65,15,88,203 // addps %xmm11,%xmm1
27652 .byte 69,15,40,209 // movaps %xmm9,%xmm10
27653 .byte 68,15,89,210 // mulps %xmm2,%xmm10
27654 .byte 69,15,40,216 // movaps %xmm8,%xmm11
27655 .byte 68,15,89,222 // mulps %xmm6,%xmm11
27656 .byte 69,15,88,218 // addps %xmm10,%xmm11
27657 .byte 15,89,214 // mulps %xmm6,%xmm2
27658 .byte 65,15,88,211 // addps %xmm11,%xmm2
27659 .byte 68,15,89,203 // mulps %xmm3,%xmm9
27660 .byte 68,15,89,199 // mulps %xmm7,%xmm8
27661 .byte 69,15,88,193 // addps %xmm9,%xmm8
27662 .byte 15,89,223 // mulps %xmm7,%xmm3
27663 .byte 65,15,88,216 // addps %xmm8,%xmm3
27664 .byte 72,173 // lods %ds:(%rsi),%rax
27665 .byte 255,224 // jmpq *%rax
27666
27667HIDDEN _sk_plus__sse2
27668.globl _sk_plus__sse2
Mike Klein86714282017-04-13 17:37:38 -040027669FUNCTION(_sk_plus__sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040027670_sk_plus__sse2:
27671 .byte 15,88,196 // addps %xmm4,%xmm0
27672 .byte 15,88,205 // addps %xmm5,%xmm1
27673 .byte 15,88,214 // addps %xmm6,%xmm2
27674 .byte 15,88,223 // addps %xmm7,%xmm3
27675 .byte 72,173 // lods %ds:(%rsi),%rax
27676 .byte 255,224 // jmpq *%rax
27677
27678HIDDEN _sk_screen_sse2
27679.globl _sk_screen_sse2
Mike Klein86714282017-04-13 17:37:38 -040027680FUNCTION(_sk_screen_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040027681_sk_screen_sse2:
27682 .byte 68,15,40,192 // movaps %xmm0,%xmm8
27683 .byte 68,15,88,196 // addps %xmm4,%xmm8
27684 .byte 15,89,196 // mulps %xmm4,%xmm0
27685 .byte 68,15,92,192 // subps %xmm0,%xmm8
27686 .byte 68,15,40,201 // movaps %xmm1,%xmm9
27687 .byte 68,15,88,205 // addps %xmm5,%xmm9
27688 .byte 15,89,205 // mulps %xmm5,%xmm1
27689 .byte 68,15,92,201 // subps %xmm1,%xmm9
27690 .byte 68,15,40,210 // movaps %xmm2,%xmm10
27691 .byte 68,15,88,214 // addps %xmm6,%xmm10
27692 .byte 15,89,214 // mulps %xmm6,%xmm2
27693 .byte 68,15,92,210 // subps %xmm2,%xmm10
27694 .byte 68,15,40,219 // movaps %xmm3,%xmm11
27695 .byte 68,15,88,223 // addps %xmm7,%xmm11
27696 .byte 15,89,223 // mulps %xmm7,%xmm3
27697 .byte 68,15,92,219 // subps %xmm3,%xmm11
27698 .byte 72,173 // lods %ds:(%rsi),%rax
27699 .byte 65,15,40,192 // movaps %xmm8,%xmm0
27700 .byte 65,15,40,201 // movaps %xmm9,%xmm1
27701 .byte 65,15,40,210 // movaps %xmm10,%xmm2
27702 .byte 65,15,40,219 // movaps %xmm11,%xmm3
27703 .byte 255,224 // jmpq *%rax
27704
27705HIDDEN _sk_xor__sse2
27706.globl _sk_xor__sse2
Mike Klein86714282017-04-13 17:37:38 -040027707FUNCTION(_sk_xor__sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040027708_sk_xor__sse2:
27709 .byte 68,15,40,195 // movaps %xmm3,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040027710 .byte 15,40,29,16,73,0,0 // movaps 0x4910(%rip),%xmm3 # 4d90 <_sk_callback_sse2+0x1b5>
Mike Kleinaaca1e42017-03-31 09:29:01 -040027711 .byte 68,15,40,203 // movaps %xmm3,%xmm9
27712 .byte 68,15,92,207 // subps %xmm7,%xmm9
27713 .byte 65,15,89,193 // mulps %xmm9,%xmm0
27714 .byte 65,15,92,216 // subps %xmm8,%xmm3
27715 .byte 68,15,40,211 // movaps %xmm3,%xmm10
27716 .byte 68,15,89,212 // mulps %xmm4,%xmm10
27717 .byte 65,15,88,194 // addps %xmm10,%xmm0
27718 .byte 65,15,89,201 // mulps %xmm9,%xmm1
27719 .byte 68,15,40,211 // movaps %xmm3,%xmm10
27720 .byte 68,15,89,213 // mulps %xmm5,%xmm10
27721 .byte 65,15,88,202 // addps %xmm10,%xmm1
27722 .byte 65,15,89,209 // mulps %xmm9,%xmm2
27723 .byte 68,15,40,211 // movaps %xmm3,%xmm10
27724 .byte 68,15,89,214 // mulps %xmm6,%xmm10
27725 .byte 65,15,88,210 // addps %xmm10,%xmm2
27726 .byte 69,15,89,200 // mulps %xmm8,%xmm9
27727 .byte 15,89,223 // mulps %xmm7,%xmm3
27728 .byte 65,15,88,217 // addps %xmm9,%xmm3
27729 .byte 72,173 // lods %ds:(%rsi),%rax
27730 .byte 255,224 // jmpq *%rax
27731
Mike Klein66b09ab2017-03-31 10:29:40 -040027732HIDDEN _sk_darken_sse2
27733.globl _sk_darken_sse2
Mike Klein86714282017-04-13 17:37:38 -040027734FUNCTION(_sk_darken_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040027735_sk_darken_sse2:
27736 .byte 68,15,40,193 // movaps %xmm1,%xmm8
27737 .byte 68,15,40,200 // movaps %xmm0,%xmm9
27738 .byte 15,88,196 // addps %xmm4,%xmm0
27739 .byte 68,15,89,207 // mulps %xmm7,%xmm9
27740 .byte 15,40,203 // movaps %xmm3,%xmm1
27741 .byte 15,89,204 // mulps %xmm4,%xmm1
27742 .byte 68,15,95,201 // maxps %xmm1,%xmm9
27743 .byte 65,15,92,193 // subps %xmm9,%xmm0
27744 .byte 65,15,40,200 // movaps %xmm8,%xmm1
27745 .byte 15,88,205 // addps %xmm5,%xmm1
27746 .byte 68,15,89,199 // mulps %xmm7,%xmm8
27747 .byte 68,15,40,203 // movaps %xmm3,%xmm9
27748 .byte 68,15,89,205 // mulps %xmm5,%xmm9
27749 .byte 69,15,95,193 // maxps %xmm9,%xmm8
27750 .byte 65,15,92,200 // subps %xmm8,%xmm1
27751 .byte 68,15,40,194 // movaps %xmm2,%xmm8
27752 .byte 68,15,88,198 // addps %xmm6,%xmm8
27753 .byte 15,89,215 // mulps %xmm7,%xmm2
27754 .byte 68,15,40,203 // movaps %xmm3,%xmm9
27755 .byte 68,15,89,206 // mulps %xmm6,%xmm9
27756 .byte 65,15,95,209 // maxps %xmm9,%xmm2
27757 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040027758 .byte 15,40,21,123,72,0,0 // movaps 0x487b(%rip),%xmm2 # 4da0 <_sk_callback_sse2+0x1c5>
Mike Klein66b09ab2017-03-31 10:29:40 -040027759 .byte 15,92,211 // subps %xmm3,%xmm2
27760 .byte 15,89,215 // mulps %xmm7,%xmm2
27761 .byte 15,88,218 // addps %xmm2,%xmm3
27762 .byte 72,173 // lods %ds:(%rsi),%rax
27763 .byte 65,15,40,208 // movaps %xmm8,%xmm2
27764 .byte 255,224 // jmpq *%rax
27765
27766HIDDEN _sk_lighten_sse2
27767.globl _sk_lighten_sse2
Mike Klein86714282017-04-13 17:37:38 -040027768FUNCTION(_sk_lighten_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040027769_sk_lighten_sse2:
27770 .byte 68,15,40,193 // movaps %xmm1,%xmm8
27771 .byte 68,15,40,200 // movaps %xmm0,%xmm9
27772 .byte 15,88,196 // addps %xmm4,%xmm0
27773 .byte 68,15,89,207 // mulps %xmm7,%xmm9
27774 .byte 15,40,203 // movaps %xmm3,%xmm1
27775 .byte 15,89,204 // mulps %xmm4,%xmm1
27776 .byte 68,15,93,201 // minps %xmm1,%xmm9
27777 .byte 65,15,92,193 // subps %xmm9,%xmm0
27778 .byte 65,15,40,200 // movaps %xmm8,%xmm1
27779 .byte 15,88,205 // addps %xmm5,%xmm1
27780 .byte 68,15,89,199 // mulps %xmm7,%xmm8
27781 .byte 68,15,40,203 // movaps %xmm3,%xmm9
27782 .byte 68,15,89,205 // mulps %xmm5,%xmm9
27783 .byte 69,15,93,193 // minps %xmm9,%xmm8
27784 .byte 65,15,92,200 // subps %xmm8,%xmm1
27785 .byte 68,15,40,194 // movaps %xmm2,%xmm8
27786 .byte 68,15,88,198 // addps %xmm6,%xmm8
27787 .byte 15,89,215 // mulps %xmm7,%xmm2
27788 .byte 68,15,40,203 // movaps %xmm3,%xmm9
27789 .byte 68,15,89,206 // mulps %xmm6,%xmm9
27790 .byte 65,15,93,209 // minps %xmm9,%xmm2
27791 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040027792 .byte 15,40,21,32,72,0,0 // movaps 0x4820(%rip),%xmm2 # 4db0 <_sk_callback_sse2+0x1d5>
Mike Klein66b09ab2017-03-31 10:29:40 -040027793 .byte 15,92,211 // subps %xmm3,%xmm2
27794 .byte 15,89,215 // mulps %xmm7,%xmm2
27795 .byte 15,88,218 // addps %xmm2,%xmm3
27796 .byte 72,173 // lods %ds:(%rsi),%rax
27797 .byte 65,15,40,208 // movaps %xmm8,%xmm2
27798 .byte 255,224 // jmpq *%rax
27799
27800HIDDEN _sk_difference_sse2
27801.globl _sk_difference_sse2
Mike Klein86714282017-04-13 17:37:38 -040027802FUNCTION(_sk_difference_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040027803_sk_difference_sse2:
27804 .byte 68,15,40,193 // movaps %xmm1,%xmm8
27805 .byte 68,15,40,200 // movaps %xmm0,%xmm9
27806 .byte 15,88,196 // addps %xmm4,%xmm0
27807 .byte 68,15,89,207 // mulps %xmm7,%xmm9
27808 .byte 15,40,203 // movaps %xmm3,%xmm1
27809 .byte 15,89,204 // mulps %xmm4,%xmm1
27810 .byte 68,15,93,201 // minps %xmm1,%xmm9
27811 .byte 69,15,88,201 // addps %xmm9,%xmm9
27812 .byte 65,15,92,193 // subps %xmm9,%xmm0
27813 .byte 65,15,40,200 // movaps %xmm8,%xmm1
27814 .byte 15,88,205 // addps %xmm5,%xmm1
27815 .byte 68,15,89,199 // mulps %xmm7,%xmm8
27816 .byte 68,15,40,203 // movaps %xmm3,%xmm9
27817 .byte 68,15,89,205 // mulps %xmm5,%xmm9
27818 .byte 69,15,93,193 // minps %xmm9,%xmm8
27819 .byte 69,15,88,192 // addps %xmm8,%xmm8
27820 .byte 65,15,92,200 // subps %xmm8,%xmm1
27821 .byte 68,15,40,194 // movaps %xmm2,%xmm8
27822 .byte 68,15,88,198 // addps %xmm6,%xmm8
27823 .byte 15,89,215 // mulps %xmm7,%xmm2
27824 .byte 68,15,40,203 // movaps %xmm3,%xmm9
27825 .byte 68,15,89,206 // mulps %xmm6,%xmm9
27826 .byte 65,15,93,209 // minps %xmm9,%xmm2
27827 .byte 15,88,210 // addps %xmm2,%xmm2
27828 .byte 68,15,92,194 // subps %xmm2,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040027829 .byte 15,40,21,186,71,0,0 // movaps 0x47ba(%rip),%xmm2 # 4dc0 <_sk_callback_sse2+0x1e5>
Mike Klein66b09ab2017-03-31 10:29:40 -040027830 .byte 15,92,211 // subps %xmm3,%xmm2
27831 .byte 15,89,215 // mulps %xmm7,%xmm2
27832 .byte 15,88,218 // addps %xmm2,%xmm3
27833 .byte 72,173 // lods %ds:(%rsi),%rax
27834 .byte 65,15,40,208 // movaps %xmm8,%xmm2
27835 .byte 255,224 // jmpq *%rax
27836
27837HIDDEN _sk_exclusion_sse2
27838.globl _sk_exclusion_sse2
Mike Klein86714282017-04-13 17:37:38 -040027839FUNCTION(_sk_exclusion_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040027840_sk_exclusion_sse2:
Mike Kleinfe560a82017-05-01 12:56:35 -040027841 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Klein66b09ab2017-03-31 10:29:40 -040027842 .byte 15,88,196 // addps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040027843 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Klein66b09ab2017-03-31 10:29:40 -040027844 .byte 69,15,88,192 // addps %xmm8,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040027845 .byte 65,15,92,192 // subps %xmm8,%xmm0
27846 .byte 68,15,40,193 // movaps %xmm1,%xmm8
27847 .byte 68,15,88,197 // addps %xmm5,%xmm8
27848 .byte 15,89,205 // mulps %xmm5,%xmm1
27849 .byte 15,88,201 // addps %xmm1,%xmm1
27850 .byte 68,15,92,193 // subps %xmm1,%xmm8
27851 .byte 68,15,40,202 // movaps %xmm2,%xmm9
27852 .byte 68,15,88,206 // addps %xmm6,%xmm9
Mike Klein66b09ab2017-03-31 10:29:40 -040027853 .byte 15,89,214 // mulps %xmm6,%xmm2
27854 .byte 15,88,210 // addps %xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040027855 .byte 68,15,92,202 // subps %xmm2,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040027856 .byte 15,40,13,123,71,0,0 // movaps 0x477b(%rip),%xmm1 # 4dd0 <_sk_callback_sse2+0x1f5>
Mike Kleinfe560a82017-05-01 12:56:35 -040027857 .byte 15,92,203 // subps %xmm3,%xmm1
27858 .byte 15,89,207 // mulps %xmm7,%xmm1
27859 .byte 15,88,217 // addps %xmm1,%xmm3
Mike Klein66b09ab2017-03-31 10:29:40 -040027860 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040027861 .byte 65,15,40,200 // movaps %xmm8,%xmm1
27862 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Klein66b09ab2017-03-31 10:29:40 -040027863 .byte 255,224 // jmpq *%rax
27864
Mike Klein61b84162017-03-31 11:48:14 -040027865HIDDEN _sk_colorburn_sse2
27866.globl _sk_colorburn_sse2
Mike Klein86714282017-04-13 17:37:38 -040027867FUNCTION(_sk_colorburn_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040027868_sk_colorburn_sse2:
Mike Kleinfe560a82017-05-01 12:56:35 -040027869 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040027870 .byte 68,15,40,21,106,71,0,0 // movaps 0x476a(%rip),%xmm10 # 4de0 <_sk_callback_sse2+0x205>
Mike Kleinfe560a82017-05-01 12:56:35 -040027871 .byte 69,15,40,202 // movaps %xmm10,%xmm9
27872 .byte 68,15,92,207 // subps %xmm7,%xmm9
Mike Klein61b84162017-03-31 11:48:14 -040027873 .byte 69,15,40,217 // movaps %xmm9,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040027874 .byte 69,15,89,216 // mulps %xmm8,%xmm11
27875 .byte 15,40,199 // movaps %xmm7,%xmm0
27876 .byte 15,92,196 // subps %xmm4,%xmm0
27877 .byte 15,89,195 // mulps %xmm3,%xmm0
27878 .byte 65,15,94,192 // divps %xmm8,%xmm0
27879 .byte 68,15,40,231 // movaps %xmm7,%xmm12
27880 .byte 68,15,93,224 // minps %xmm0,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040027881 .byte 68,15,40,239 // movaps %xmm7,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040027882 .byte 69,15,92,236 // subps %xmm12,%xmm13
27883 .byte 68,15,89,235 // mulps %xmm3,%xmm13
27884 .byte 69,15,88,235 // addps %xmm11,%xmm13
27885 .byte 65,15,40,195 // movaps %xmm11,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040027886 .byte 15,88,196 // addps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040027887 .byte 69,15,87,219 // xorps %xmm11,%xmm11
27888 .byte 69,15,40,224 // movaps %xmm8,%xmm12
27889 .byte 69,15,194,227,0 // cmpeqps %xmm11,%xmm12
27890 .byte 68,15,92,211 // subps %xmm3,%xmm10
27891 .byte 69,15,84,196 // andps %xmm12,%xmm8
27892 .byte 69,15,85,229 // andnps %xmm13,%xmm12
27893 .byte 69,15,40,234 // movaps %xmm10,%xmm13
27894 .byte 68,15,89,236 // mulps %xmm4,%xmm13
27895 .byte 69,15,86,224 // orps %xmm8,%xmm12
27896 .byte 68,15,40,196 // movaps %xmm4,%xmm8
27897 .byte 68,15,194,199,0 // cmpeqps %xmm7,%xmm8
27898 .byte 69,15,88,229 // addps %xmm13,%xmm12
27899 .byte 65,15,84,192 // andps %xmm8,%xmm0
27900 .byte 69,15,85,196 // andnps %xmm12,%xmm8
27901 .byte 65,15,86,192 // orps %xmm8,%xmm0
27902 .byte 69,15,40,193 // movaps %xmm9,%xmm8
27903 .byte 68,15,89,193 // mulps %xmm1,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040027904 .byte 68,15,40,231 // movaps %xmm7,%xmm12
27905 .byte 68,15,92,229 // subps %xmm5,%xmm12
27906 .byte 68,15,89,227 // mulps %xmm3,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040027907 .byte 68,15,94,225 // divps %xmm1,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040027908 .byte 68,15,40,239 // movaps %xmm7,%xmm13
27909 .byte 69,15,93,236 // minps %xmm12,%xmm13
27910 .byte 68,15,40,231 // movaps %xmm7,%xmm12
27911 .byte 69,15,92,229 // subps %xmm13,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040027912 .byte 68,15,40,233 // movaps %xmm1,%xmm13
27913 .byte 69,15,194,235,0 // cmpeqps %xmm11,%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040027914 .byte 68,15,89,227 // mulps %xmm3,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040027915 .byte 69,15,88,224 // addps %xmm8,%xmm12
27916 .byte 65,15,84,205 // andps %xmm13,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040027917 .byte 69,15,85,236 // andnps %xmm12,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040027918 .byte 68,15,88,197 // addps %xmm5,%xmm8
27919 .byte 68,15,86,233 // orps %xmm1,%xmm13
27920 .byte 65,15,40,202 // movaps %xmm10,%xmm1
27921 .byte 15,89,205 // mulps %xmm5,%xmm1
27922 .byte 68,15,88,233 // addps %xmm1,%xmm13
27923 .byte 15,40,205 // movaps %xmm5,%xmm1
27924 .byte 15,194,207,0 // cmpeqps %xmm7,%xmm1
27925 .byte 68,15,84,193 // andps %xmm1,%xmm8
27926 .byte 65,15,85,205 // andnps %xmm13,%xmm1
27927 .byte 68,15,86,193 // orps %xmm1,%xmm8
27928 .byte 15,40,207 // movaps %xmm7,%xmm1
27929 .byte 15,92,206 // subps %xmm6,%xmm1
27930 .byte 15,89,203 // mulps %xmm3,%xmm1
27931 .byte 15,94,202 // divps %xmm2,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040027932 .byte 68,15,40,231 // movaps %xmm7,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040027933 .byte 68,15,93,225 // minps %xmm1,%xmm12
27934 .byte 15,40,207 // movaps %xmm7,%xmm1
27935 .byte 65,15,92,204 // subps %xmm12,%xmm1
27936 .byte 68,15,89,202 // mulps %xmm2,%xmm9
27937 .byte 68,15,194,218,0 // cmpeqps %xmm2,%xmm11
27938 .byte 15,89,203 // mulps %xmm3,%xmm1
27939 .byte 65,15,88,201 // addps %xmm9,%xmm1
27940 .byte 65,15,84,211 // andps %xmm11,%xmm2
27941 .byte 68,15,85,217 // andnps %xmm1,%xmm11
27942 .byte 68,15,88,206 // addps %xmm6,%xmm9
27943 .byte 68,15,86,218 // orps %xmm2,%xmm11
27944 .byte 65,15,40,202 // movaps %xmm10,%xmm1
27945 .byte 15,89,206 // mulps %xmm6,%xmm1
27946 .byte 68,15,88,217 // addps %xmm1,%xmm11
27947 .byte 15,40,206 // movaps %xmm6,%xmm1
27948 .byte 15,194,207,0 // cmpeqps %xmm7,%xmm1
27949 .byte 68,15,84,201 // andps %xmm1,%xmm9
27950 .byte 65,15,85,203 // andnps %xmm11,%xmm1
27951 .byte 68,15,86,201 // orps %xmm1,%xmm9
27952 .byte 68,15,89,215 // mulps %xmm7,%xmm10
27953 .byte 65,15,88,218 // addps %xmm10,%xmm3
Mike Klein61b84162017-03-31 11:48:14 -040027954 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040027955 .byte 65,15,40,200 // movaps %xmm8,%xmm1
27956 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040027957 .byte 255,224 // jmpq *%rax
27958
27959HIDDEN _sk_colordodge_sse2
27960.globl _sk_colordodge_sse2
Mike Klein86714282017-04-13 17:37:38 -040027961FUNCTION(_sk_colordodge_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040027962_sk_colordodge_sse2:
27963 .byte 68,15,40,200 // movaps %xmm0,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040027964 .byte 68,15,40,21,32,70,0,0 // movaps 0x4620(%rip),%xmm10 # 4df0 <_sk_callback_sse2+0x215>
Mike Klein61b84162017-03-31 11:48:14 -040027965 .byte 69,15,40,218 // movaps %xmm10,%xmm11
27966 .byte 68,15,92,223 // subps %xmm7,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040027967 .byte 69,15,40,227 // movaps %xmm11,%xmm12
27968 .byte 69,15,89,225 // mulps %xmm9,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040027969 .byte 68,15,40,195 // movaps %xmm3,%xmm8
27970 .byte 68,15,89,196 // mulps %xmm4,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040027971 .byte 15,40,195 // movaps %xmm3,%xmm0
27972 .byte 65,15,92,193 // subps %xmm9,%xmm0
27973 .byte 68,15,94,192 // divps %xmm0,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040027974 .byte 68,15,40,239 // movaps %xmm7,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040027975 .byte 15,40,199 // movaps %xmm7,%xmm0
27976 .byte 65,15,93,192 // minps %xmm8,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040027977 .byte 69,15,40,241 // movaps %xmm9,%xmm14
27978 .byte 68,15,194,243,0 // cmpeqps %xmm3,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040027979 .byte 15,89,195 // mulps %xmm3,%xmm0
27980 .byte 65,15,88,196 // addps %xmm12,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040027981 .byte 69,15,84,206 // andps %xmm14,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040027982 .byte 68,15,85,240 // andnps %xmm0,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040027983 .byte 69,15,87,192 // xorps %xmm8,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040027984 .byte 65,15,40,196 // movaps %xmm12,%xmm0
27985 .byte 15,88,196 // addps %xmm4,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040027986 .byte 68,15,92,211 // subps %xmm3,%xmm10
27987 .byte 69,15,86,241 // orps %xmm9,%xmm14
27988 .byte 69,15,40,202 // movaps %xmm10,%xmm9
27989 .byte 68,15,89,204 // mulps %xmm4,%xmm9
Mike Klein61b84162017-03-31 11:48:14 -040027990 .byte 69,15,88,241 // addps %xmm9,%xmm14
27991 .byte 68,15,40,204 // movaps %xmm4,%xmm9
27992 .byte 69,15,194,200,0 // cmpeqps %xmm8,%xmm9
27993 .byte 65,15,84,193 // andps %xmm9,%xmm0
27994 .byte 69,15,85,206 // andnps %xmm14,%xmm9
27995 .byte 65,15,86,193 // orps %xmm9,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040027996 .byte 68,15,40,203 // movaps %xmm3,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040027997 .byte 68,15,89,205 // mulps %xmm5,%xmm9
27998 .byte 68,15,40,227 // movaps %xmm3,%xmm12
27999 .byte 68,15,92,225 // subps %xmm1,%xmm12
28000 .byte 69,15,94,204 // divps %xmm12,%xmm9
28001 .byte 69,15,40,227 // movaps %xmm11,%xmm12
28002 .byte 68,15,89,225 // mulps %xmm1,%xmm12
28003 .byte 69,15,93,233 // minps %xmm9,%xmm13
28004 .byte 68,15,40,241 // movaps %xmm1,%xmm14
28005 .byte 68,15,194,243,0 // cmpeqps %xmm3,%xmm14
28006 .byte 68,15,89,235 // mulps %xmm3,%xmm13
28007 .byte 69,15,88,236 // addps %xmm12,%xmm13
28008 .byte 65,15,84,206 // andps %xmm14,%xmm1
28009 .byte 69,15,85,245 // andnps %xmm13,%xmm14
28010 .byte 69,15,40,204 // movaps %xmm12,%xmm9
28011 .byte 68,15,88,205 // addps %xmm5,%xmm9
28012 .byte 68,15,86,241 // orps %xmm1,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040028013 .byte 65,15,40,202 // movaps %xmm10,%xmm1
28014 .byte 15,89,205 // mulps %xmm5,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040028015 .byte 68,15,88,241 // addps %xmm1,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040028016 .byte 15,40,205 // movaps %xmm5,%xmm1
28017 .byte 65,15,194,200,0 // cmpeqps %xmm8,%xmm1
28018 .byte 68,15,84,201 // andps %xmm1,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040028019 .byte 65,15,85,206 // andnps %xmm14,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040028020 .byte 68,15,86,201 // orps %xmm1,%xmm9
28021 .byte 68,15,40,227 // movaps %xmm3,%xmm12
28022 .byte 68,15,89,230 // mulps %xmm6,%xmm12
28023 .byte 15,40,203 // movaps %xmm3,%xmm1
28024 .byte 15,92,202 // subps %xmm2,%xmm1
28025 .byte 68,15,94,225 // divps %xmm1,%xmm12
28026 .byte 68,15,40,239 // movaps %xmm7,%xmm13
28027 .byte 68,15,89,218 // mulps %xmm2,%xmm11
28028 .byte 69,15,93,236 // minps %xmm12,%xmm13
28029 .byte 15,40,202 // movaps %xmm2,%xmm1
28030 .byte 15,194,203,0 // cmpeqps %xmm3,%xmm1
28031 .byte 68,15,89,235 // mulps %xmm3,%xmm13
28032 .byte 69,15,88,235 // addps %xmm11,%xmm13
28033 .byte 15,84,209 // andps %xmm1,%xmm2
28034 .byte 65,15,85,205 // andnps %xmm13,%xmm1
28035 .byte 15,86,202 // orps %xmm2,%xmm1
28036 .byte 65,15,40,210 // movaps %xmm10,%xmm2
28037 .byte 15,89,214 // mulps %xmm6,%xmm2
28038 .byte 15,88,202 // addps %xmm2,%xmm1
28039 .byte 68,15,194,198,0 // cmpeqps %xmm6,%xmm8
28040 .byte 68,15,88,222 // addps %xmm6,%xmm11
28041 .byte 69,15,84,216 // andps %xmm8,%xmm11
28042 .byte 68,15,85,193 // andnps %xmm1,%xmm8
28043 .byte 69,15,86,195 // orps %xmm11,%xmm8
28044 .byte 68,15,89,215 // mulps %xmm7,%xmm10
28045 .byte 65,15,88,218 // addps %xmm10,%xmm3
28046 .byte 72,173 // lods %ds:(%rsi),%rax
28047 .byte 65,15,40,201 // movaps %xmm9,%xmm1
28048 .byte 65,15,40,208 // movaps %xmm8,%xmm2
28049 .byte 255,224 // jmpq *%rax
28050
28051HIDDEN _sk_hardlight_sse2
28052.globl _sk_hardlight_sse2
Mike Klein86714282017-04-13 17:37:38 -040028053FUNCTION(_sk_hardlight_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040028054_sk_hardlight_sse2:
Mike Klein15bf6782017-03-31 12:21:46 -040028055 .byte 15,41,116,36,232 // movaps %xmm6,-0x18(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040028056 .byte 15,40,245 // movaps %xmm5,%xmm6
28057 .byte 15,40,236 // movaps %xmm4,%xmm5
Mike Klein8ca33562017-05-23 08:07:43 -040028058 .byte 68,15,40,29,213,68,0,0 // movaps 0x44d5(%rip),%xmm11 # 4e00 <_sk_callback_sse2+0x225>
Mike Klein61b84162017-03-31 11:48:14 -040028059 .byte 69,15,40,211 // movaps %xmm11,%xmm10
28060 .byte 68,15,92,215 // subps %xmm7,%xmm10
28061 .byte 69,15,40,194 // movaps %xmm10,%xmm8
28062 .byte 68,15,89,192 // mulps %xmm0,%xmm8
28063 .byte 68,15,92,219 // subps %xmm3,%xmm11
28064 .byte 69,15,40,203 // movaps %xmm11,%xmm9
28065 .byte 68,15,89,205 // mulps %xmm5,%xmm9
28066 .byte 69,15,88,200 // addps %xmm8,%xmm9
28067 .byte 68,15,40,195 // movaps %xmm3,%xmm8
28068 .byte 68,15,92,192 // subps %xmm0,%xmm8
28069 .byte 15,40,227 // movaps %xmm3,%xmm4
28070 .byte 15,89,231 // mulps %xmm7,%xmm4
28071 .byte 68,15,40,239 // movaps %xmm7,%xmm13
28072 .byte 68,15,40,247 // movaps %xmm7,%xmm14
28073 .byte 68,15,40,255 // movaps %xmm7,%xmm15
28074 .byte 68,15,92,253 // subps %xmm5,%xmm15
28075 .byte 69,15,89,248 // mulps %xmm8,%xmm15
28076 .byte 69,15,88,255 // addps %xmm15,%xmm15
28077 .byte 68,15,40,228 // movaps %xmm4,%xmm12
28078 .byte 69,15,92,231 // subps %xmm15,%xmm12
28079 .byte 68,15,40,192 // movaps %xmm0,%xmm8
28080 .byte 69,15,88,192 // addps %xmm8,%xmm8
28081 .byte 68,15,194,195,2 // cmpleps %xmm3,%xmm8
28082 .byte 15,89,197 // mulps %xmm5,%xmm0
28083 .byte 15,88,192 // addps %xmm0,%xmm0
28084 .byte 65,15,84,192 // andps %xmm8,%xmm0
28085 .byte 69,15,85,196 // andnps %xmm12,%xmm8
28086 .byte 68,15,86,192 // orps %xmm0,%xmm8
28087 .byte 69,15,40,251 // movaps %xmm11,%xmm15
28088 .byte 69,15,40,227 // movaps %xmm11,%xmm12
28089 .byte 68,15,89,223 // mulps %xmm7,%xmm11
28090 .byte 69,15,88,193 // addps %xmm9,%xmm8
28091 .byte 65,15,40,194 // movaps %xmm10,%xmm0
28092 .byte 15,89,193 // mulps %xmm1,%xmm0
28093 .byte 68,15,89,254 // mulps %xmm6,%xmm15
28094 .byte 68,15,88,248 // addps %xmm0,%xmm15
28095 .byte 15,40,195 // movaps %xmm3,%xmm0
28096 .byte 15,92,193 // subps %xmm1,%xmm0
28097 .byte 68,15,92,238 // subps %xmm6,%xmm13
28098 .byte 68,15,89,232 // mulps %xmm0,%xmm13
28099 .byte 69,15,88,237 // addps %xmm13,%xmm13
28100 .byte 15,40,196 // movaps %xmm4,%xmm0
28101 .byte 65,15,92,197 // subps %xmm13,%xmm0
28102 .byte 68,15,40,201 // movaps %xmm1,%xmm9
28103 .byte 69,15,88,201 // addps %xmm9,%xmm9
28104 .byte 68,15,194,203,2 // cmpleps %xmm3,%xmm9
28105 .byte 15,89,206 // mulps %xmm6,%xmm1
28106 .byte 15,88,201 // addps %xmm1,%xmm1
28107 .byte 65,15,84,201 // andps %xmm9,%xmm1
28108 .byte 68,15,85,200 // andnps %xmm0,%xmm9
28109 .byte 68,15,86,201 // orps %xmm1,%xmm9
28110 .byte 69,15,88,207 // addps %xmm15,%xmm9
28111 .byte 68,15,89,210 // mulps %xmm2,%xmm10
Mike Klein15bf6782017-03-31 12:21:46 -040028112 .byte 68,15,40,108,36,232 // movaps -0x18(%rsp),%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040028113 .byte 69,15,89,229 // mulps %xmm13,%xmm12
28114 .byte 69,15,88,226 // addps %xmm10,%xmm12
28115 .byte 68,15,40,210 // movaps %xmm2,%xmm10
28116 .byte 69,15,88,210 // addps %xmm10,%xmm10
28117 .byte 68,15,194,211,2 // cmpleps %xmm3,%xmm10
28118 .byte 15,40,195 // movaps %xmm3,%xmm0
28119 .byte 15,92,194 // subps %xmm2,%xmm0
28120 .byte 65,15,89,213 // mulps %xmm13,%xmm2
28121 .byte 15,88,210 // addps %xmm2,%xmm2
28122 .byte 69,15,92,245 // subps %xmm13,%xmm14
28123 .byte 68,15,89,240 // mulps %xmm0,%xmm14
28124 .byte 69,15,88,246 // addps %xmm14,%xmm14
28125 .byte 65,15,92,230 // subps %xmm14,%xmm4
28126 .byte 65,15,84,210 // andps %xmm10,%xmm2
28127 .byte 68,15,85,212 // andnps %xmm4,%xmm10
28128 .byte 68,15,86,210 // orps %xmm2,%xmm10
28129 .byte 69,15,88,212 // addps %xmm12,%xmm10
28130 .byte 65,15,88,219 // addps %xmm11,%xmm3
28131 .byte 72,173 // lods %ds:(%rsi),%rax
28132 .byte 65,15,40,192 // movaps %xmm8,%xmm0
28133 .byte 65,15,40,201 // movaps %xmm9,%xmm1
28134 .byte 65,15,40,210 // movaps %xmm10,%xmm2
28135 .byte 15,40,229 // movaps %xmm5,%xmm4
28136 .byte 15,40,238 // movaps %xmm6,%xmm5
28137 .byte 65,15,40,245 // movaps %xmm13,%xmm6
Mike Klein61b84162017-03-31 11:48:14 -040028138 .byte 255,224 // jmpq *%rax
28139
28140HIDDEN _sk_overlay_sse2
28141.globl _sk_overlay_sse2
Mike Klein86714282017-04-13 17:37:38 -040028142FUNCTION(_sk_overlay_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040028143_sk_overlay_sse2:
Mike Kleinfe560a82017-05-01 12:56:35 -040028144 .byte 68,15,40,193 // movaps %xmm1,%xmm8
28145 .byte 68,15,40,232 // movaps %xmm0,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040028146 .byte 68,15,40,13,163,67,0,0 // movaps 0x43a3(%rip),%xmm9 # 4e10 <_sk_callback_sse2+0x235>
Mike Klein61b84162017-03-31 11:48:14 -040028147 .byte 69,15,40,209 // movaps %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040028148 .byte 68,15,92,215 // subps %xmm7,%xmm10
28149 .byte 69,15,40,218 // movaps %xmm10,%xmm11
28150 .byte 69,15,89,221 // mulps %xmm13,%xmm11
28151 .byte 68,15,92,203 // subps %xmm3,%xmm9
28152 .byte 65,15,40,193 // movaps %xmm9,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040028153 .byte 15,89,196 // mulps %xmm4,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040028154 .byte 65,15,88,195 // addps %xmm11,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040028155 .byte 68,15,40,227 // movaps %xmm3,%xmm12
28156 .byte 69,15,92,229 // subps %xmm13,%xmm12
28157 .byte 68,15,89,236 // mulps %xmm4,%xmm13
28158 .byte 68,15,40,247 // movaps %xmm7,%xmm14
28159 .byte 68,15,92,244 // subps %xmm4,%xmm14
28160 .byte 15,40,204 // movaps %xmm4,%xmm1
28161 .byte 15,88,201 // addps %xmm1,%xmm1
28162 .byte 15,194,207,2 // cmpleps %xmm7,%xmm1
28163 .byte 69,15,88,237 // addps %xmm13,%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040028164 .byte 68,15,40,219 // movaps %xmm3,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040028165 .byte 68,15,89,223 // mulps %xmm7,%xmm11
28166 .byte 69,15,89,244 // mulps %xmm12,%xmm14
28167 .byte 69,15,88,246 // addps %xmm14,%xmm14
28168 .byte 69,15,40,227 // movaps %xmm11,%xmm12
28169 .byte 69,15,92,230 // subps %xmm14,%xmm12
28170 .byte 68,15,84,233 // andps %xmm1,%xmm13
28171 .byte 65,15,85,204 // andnps %xmm12,%xmm1
28172 .byte 65,15,86,205 // orps %xmm13,%xmm1
28173 .byte 15,88,193 // addps %xmm1,%xmm0
28174 .byte 69,15,40,226 // movaps %xmm10,%xmm12
28175 .byte 69,15,89,224 // mulps %xmm8,%xmm12
28176 .byte 65,15,40,201 // movaps %xmm9,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040028177 .byte 15,89,205 // mulps %xmm5,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040028178 .byte 65,15,88,204 // addps %xmm12,%xmm1
28179 .byte 68,15,40,227 // movaps %xmm3,%xmm12
28180 .byte 69,15,92,224 // subps %xmm8,%xmm12
28181 .byte 68,15,89,197 // mulps %xmm5,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040028182 .byte 68,15,40,239 // movaps %xmm7,%xmm13
28183 .byte 68,15,92,237 // subps %xmm5,%xmm13
28184 .byte 68,15,40,245 // movaps %xmm5,%xmm14
28185 .byte 69,15,88,246 // addps %xmm14,%xmm14
28186 .byte 68,15,194,247,2 // cmpleps %xmm7,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040028187 .byte 69,15,88,192 // addps %xmm8,%xmm8
28188 .byte 69,15,89,236 // mulps %xmm12,%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040028189 .byte 69,15,88,237 // addps %xmm13,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040028190 .byte 69,15,40,227 // movaps %xmm11,%xmm12
28191 .byte 69,15,92,229 // subps %xmm13,%xmm12
28192 .byte 69,15,84,198 // andps %xmm14,%xmm8
28193 .byte 69,15,85,244 // andnps %xmm12,%xmm14
28194 .byte 69,15,86,240 // orps %xmm8,%xmm14
28195 .byte 65,15,88,206 // addps %xmm14,%xmm1
28196 .byte 68,15,89,210 // mulps %xmm2,%xmm10
28197 .byte 69,15,40,193 // movaps %xmm9,%xmm8
28198 .byte 68,15,89,198 // mulps %xmm6,%xmm8
28199 .byte 69,15,88,194 // addps %xmm10,%xmm8
28200 .byte 68,15,40,211 // movaps %xmm3,%xmm10
28201 .byte 68,15,92,210 // subps %xmm2,%xmm10
Mike Klein61b84162017-03-31 11:48:14 -040028202 .byte 15,89,214 // mulps %xmm6,%xmm2
28203 .byte 68,15,40,231 // movaps %xmm7,%xmm12
28204 .byte 68,15,92,230 // subps %xmm6,%xmm12
28205 .byte 68,15,40,238 // movaps %xmm6,%xmm13
28206 .byte 69,15,88,237 // addps %xmm13,%xmm13
28207 .byte 68,15,194,239,2 // cmpleps %xmm7,%xmm13
28208 .byte 15,88,210 // addps %xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040028209 .byte 69,15,89,226 // mulps %xmm10,%xmm12
Mike Klein61b84162017-03-31 11:48:14 -040028210 .byte 69,15,88,228 // addps %xmm12,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040028211 .byte 69,15,92,220 // subps %xmm12,%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040028212 .byte 65,15,84,213 // andps %xmm13,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040028213 .byte 69,15,85,235 // andnps %xmm11,%xmm13
28214 .byte 68,15,86,234 // orps %xmm2,%xmm13
28215 .byte 69,15,88,197 // addps %xmm13,%xmm8
28216 .byte 68,15,89,207 // mulps %xmm7,%xmm9
28217 .byte 65,15,88,217 // addps %xmm9,%xmm3
Mike Klein61b84162017-03-31 11:48:14 -040028218 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040028219 .byte 65,15,40,208 // movaps %xmm8,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040028220 .byte 255,224 // jmpq *%rax
28221
28222HIDDEN _sk_softlight_sse2
28223.globl _sk_softlight_sse2
Mike Klein86714282017-04-13 17:37:38 -040028224FUNCTION(_sk_softlight_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040028225_sk_softlight_sse2:
Mike Kleinfe560a82017-05-01 12:56:35 -040028226 .byte 15,41,116,36,216 // movaps %xmm6,-0x28(%rsp)
28227 .byte 15,40,245 // movaps %xmm5,%xmm6
28228 .byte 15,40,236 // movaps %xmm4,%xmm5
Mike Klein15bf6782017-03-31 12:21:46 -040028229 .byte 15,41,84,36,232 // movaps %xmm2,-0x18(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040028230 .byte 15,40,209 // movaps %xmm1,%xmm2
28231 .byte 68,15,40,192 // movaps %xmm0,%xmm8
28232 .byte 69,15,87,228 // xorps %xmm12,%xmm12
28233 .byte 68,15,194,231,1 // cmpltps %xmm7,%xmm12
Mike Kleinfe560a82017-05-01 12:56:35 -040028234 .byte 68,15,40,213 // movaps %xmm5,%xmm10
Mike Klein61b84162017-03-31 11:48:14 -040028235 .byte 68,15,94,215 // divps %xmm7,%xmm10
28236 .byte 69,15,84,212 // andps %xmm12,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040028237 .byte 68,15,40,13,96,66,0,0 // movaps 0x4260(%rip),%xmm9 # 4e20 <_sk_callback_sse2+0x245>
Mike Kleinfe560a82017-05-01 12:56:35 -040028238 .byte 69,15,40,249 // movaps %xmm9,%xmm15
28239 .byte 69,15,92,250 // subps %xmm10,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040028240 .byte 69,15,40,218 // movaps %xmm10,%xmm11
28241 .byte 69,15,40,234 // movaps %xmm10,%xmm13
28242 .byte 65,15,82,194 // rsqrtps %xmm10,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040028243 .byte 15,83,200 // rcpps %xmm0,%xmm1
28244 .byte 65,15,92,202 // subps %xmm10,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040028245 .byte 69,15,88,210 // addps %xmm10,%xmm10
28246 .byte 69,15,88,210 // addps %xmm10,%xmm10
28247 .byte 65,15,40,194 // movaps %xmm10,%xmm0
28248 .byte 15,89,192 // mulps %xmm0,%xmm0
28249 .byte 65,15,88,194 // addps %xmm10,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040028250 .byte 68,15,40,53,58,66,0,0 // movaps 0x423a(%rip),%xmm14 # 4e30 <_sk_callback_sse2+0x255>
Mike Kleinfe560a82017-05-01 12:56:35 -040028251 .byte 69,15,88,222 // addps %xmm14,%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040028252 .byte 68,15,89,216 // mulps %xmm0,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040028253 .byte 68,15,40,21,58,66,0,0 // movaps 0x423a(%rip),%xmm10 # 4e40 <_sk_callback_sse2+0x265>
Mike Klein61b84162017-03-31 11:48:14 -040028254 .byte 69,15,89,234 // mulps %xmm10,%xmm13
28255 .byte 69,15,88,235 // addps %xmm11,%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040028256 .byte 15,88,228 // addps %xmm4,%xmm4
28257 .byte 15,88,228 // addps %xmm4,%xmm4
28258 .byte 15,194,231,2 // cmpleps %xmm7,%xmm4
28259 .byte 68,15,84,236 // andps %xmm4,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040028260 .byte 15,85,225 // andnps %xmm1,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040028261 .byte 65,15,40,192 // movaps %xmm8,%xmm0
28262 .byte 15,88,192 // addps %xmm0,%xmm0
28263 .byte 65,15,86,229 // orps %xmm13,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040028264 .byte 15,40,200 // movaps %xmm0,%xmm1
28265 .byte 15,92,203 // subps %xmm3,%xmm1
28266 .byte 68,15,89,249 // mulps %xmm1,%xmm15
28267 .byte 15,89,207 // mulps %xmm7,%xmm1
28268 .byte 15,89,225 // mulps %xmm1,%xmm4
28269 .byte 15,40,203 // movaps %xmm3,%xmm1
28270 .byte 15,89,205 // mulps %xmm5,%xmm1
28271 .byte 15,88,225 // addps %xmm1,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040028272 .byte 69,15,40,217 // movaps %xmm9,%xmm11
28273 .byte 68,15,92,219 // subps %xmm3,%xmm11
Mike Kleinfe560a82017-05-01 12:56:35 -040028274 .byte 65,15,40,203 // movaps %xmm11,%xmm1
28275 .byte 15,89,205 // mulps %xmm5,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040028276 .byte 69,15,40,233 // movaps %xmm9,%xmm13
28277 .byte 68,15,92,239 // subps %xmm7,%xmm13
28278 .byte 69,15,89,197 // mulps %xmm13,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040028279 .byte 68,15,88,193 // addps %xmm1,%xmm8
28280 .byte 68,15,88,251 // addps %xmm3,%xmm15
28281 .byte 68,15,89,253 // mulps %xmm5,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040028282 .byte 15,194,195,2 // cmpleps %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040028283 .byte 68,15,84,248 // andps %xmm0,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040028284 .byte 15,85,196 // andnps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040028285 .byte 65,15,86,199 // orps %xmm15,%xmm0
Mike Klein61b84162017-03-31 11:48:14 -040028286 .byte 65,15,88,192 // addps %xmm8,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040028287 .byte 68,15,40,198 // movaps %xmm6,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040028288 .byte 68,15,94,199 // divps %xmm7,%xmm8
28289 .byte 69,15,84,196 // andps %xmm12,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040028290 .byte 65,15,40,200 // movaps %xmm8,%xmm1
28291 .byte 15,88,201 // addps %xmm1,%xmm1
28292 .byte 15,88,201 // addps %xmm1,%xmm1
28293 .byte 15,40,225 // movaps %xmm1,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040028294 .byte 15,89,228 // mulps %xmm4,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040028295 .byte 15,88,225 // addps %xmm1,%xmm4
28296 .byte 65,15,40,200 // movaps %xmm8,%xmm1
28297 .byte 65,15,88,206 // addps %xmm14,%xmm1
28298 .byte 15,89,204 // mulps %xmm4,%xmm1
28299 .byte 69,15,40,249 // movaps %xmm9,%xmm15
28300 .byte 69,15,92,248 // subps %xmm8,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040028301 .byte 65,15,82,224 // rsqrtps %xmm8,%xmm4
28302 .byte 15,83,228 // rcpps %xmm4,%xmm4
28303 .byte 65,15,92,224 // subps %xmm8,%xmm4
28304 .byte 69,15,89,194 // mulps %xmm10,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040028305 .byte 68,15,88,193 // addps %xmm1,%xmm8
28306 .byte 15,40,206 // movaps %xmm6,%xmm1
28307 .byte 15,88,201 // addps %xmm1,%xmm1
28308 .byte 15,88,201 // addps %xmm1,%xmm1
28309 .byte 15,194,207,2 // cmpleps %xmm7,%xmm1
28310 .byte 68,15,84,193 // andps %xmm1,%xmm8
28311 .byte 15,85,204 // andnps %xmm4,%xmm1
28312 .byte 65,15,86,200 // orps %xmm8,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040028313 .byte 68,15,40,194 // movaps %xmm2,%xmm8
28314 .byte 69,15,88,192 // addps %xmm8,%xmm8
28315 .byte 65,15,40,224 // movaps %xmm8,%xmm4
28316 .byte 15,92,227 // subps %xmm3,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040028317 .byte 68,15,89,252 // mulps %xmm4,%xmm15
Mike Kleinfe560a82017-05-01 12:56:35 -040028318 .byte 15,89,231 // mulps %xmm7,%xmm4
28319 .byte 15,89,204 // mulps %xmm4,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040028320 .byte 15,40,227 // movaps %xmm3,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040028321 .byte 15,89,230 // mulps %xmm6,%xmm4
28322 .byte 15,88,204 // addps %xmm4,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040028323 .byte 65,15,40,227 // movaps %xmm11,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040028324 .byte 15,89,230 // mulps %xmm6,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040028325 .byte 65,15,89,213 // mulps %xmm13,%xmm2
28326 .byte 15,88,212 // addps %xmm4,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040028327 .byte 68,15,88,251 // addps %xmm3,%xmm15
28328 .byte 68,15,89,254 // mulps %xmm6,%xmm15
Mike Klein61b84162017-03-31 11:48:14 -040028329 .byte 68,15,194,195,2 // cmpleps %xmm3,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040028330 .byte 69,15,84,248 // andps %xmm8,%xmm15
28331 .byte 68,15,85,193 // andnps %xmm1,%xmm8
28332 .byte 69,15,86,199 // orps %xmm15,%xmm8
Mike Klein61b84162017-03-31 11:48:14 -040028333 .byte 68,15,88,194 // addps %xmm2,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040028334 .byte 68,15,40,124,36,216 // movaps -0x28(%rsp),%xmm15
28335 .byte 65,15,40,207 // movaps %xmm15,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040028336 .byte 15,94,207 // divps %xmm7,%xmm1
28337 .byte 65,15,84,204 // andps %xmm12,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040028338 .byte 68,15,92,201 // subps %xmm1,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040028339 .byte 68,15,88,241 // addps %xmm1,%xmm14
Mike Klein61b84162017-03-31 11:48:14 -040028340 .byte 68,15,89,209 // mulps %xmm1,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040028341 .byte 15,82,209 // rsqrtps %xmm1,%xmm2
28342 .byte 15,83,210 // rcpps %xmm2,%xmm2
28343 .byte 15,92,209 // subps %xmm1,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040028344 .byte 15,88,201 // addps %xmm1,%xmm1
28345 .byte 15,88,201 // addps %xmm1,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040028346 .byte 15,40,225 // movaps %xmm1,%xmm4
28347 .byte 15,89,228 // mulps %xmm4,%xmm4
28348 .byte 15,88,225 // addps %xmm1,%xmm4
28349 .byte 68,15,89,244 // mulps %xmm4,%xmm14
28350 .byte 69,15,88,214 // addps %xmm14,%xmm10
28351 .byte 65,15,40,207 // movaps %xmm15,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040028352 .byte 15,88,201 // addps %xmm1,%xmm1
28353 .byte 15,88,201 // addps %xmm1,%xmm1
28354 .byte 15,194,207,2 // cmpleps %xmm7,%xmm1
28355 .byte 68,15,84,209 // andps %xmm1,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040028356 .byte 15,85,202 // andnps %xmm2,%xmm1
Mike Klein15bf6782017-03-31 12:21:46 -040028357 .byte 15,40,84,36,232 // movaps -0x18(%rsp),%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040028358 .byte 68,15,89,234 // mulps %xmm2,%xmm13
28359 .byte 15,88,210 // addps %xmm2,%xmm2
28360 .byte 65,15,86,202 // orps %xmm10,%xmm1
28361 .byte 15,40,226 // movaps %xmm2,%xmm4
28362 .byte 15,92,227 // subps %xmm3,%xmm4
28363 .byte 68,15,89,204 // mulps %xmm4,%xmm9
28364 .byte 15,89,231 // mulps %xmm7,%xmm4
28365 .byte 15,89,204 // mulps %xmm4,%xmm1
28366 .byte 15,40,227 // movaps %xmm3,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040028367 .byte 65,15,89,231 // mulps %xmm15,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040028368 .byte 15,88,204 // addps %xmm4,%xmm1
28369 .byte 65,15,40,227 // movaps %xmm11,%xmm4
Mike Kleinfe560a82017-05-01 12:56:35 -040028370 .byte 65,15,89,231 // mulps %xmm15,%xmm4
Mike Klein61b84162017-03-31 11:48:14 -040028371 .byte 65,15,88,229 // addps %xmm13,%xmm4
28372 .byte 68,15,88,203 // addps %xmm3,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040028373 .byte 69,15,89,207 // mulps %xmm15,%xmm9
28374 .byte 69,15,40,215 // movaps %xmm15,%xmm10
Mike Klein61b84162017-03-31 11:48:14 -040028375 .byte 15,194,211,2 // cmpleps %xmm3,%xmm2
28376 .byte 68,15,84,202 // andps %xmm2,%xmm9
28377 .byte 15,85,209 // andnps %xmm1,%xmm2
28378 .byte 65,15,86,209 // orps %xmm9,%xmm2
28379 .byte 15,88,212 // addps %xmm4,%xmm2
28380 .byte 68,15,89,223 // mulps %xmm7,%xmm11
28381 .byte 65,15,88,219 // addps %xmm11,%xmm3
28382 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040028383 .byte 15,40,229 // movaps %xmm5,%xmm4
28384 .byte 15,40,238 // movaps %xmm6,%xmm5
28385 .byte 65,15,40,242 // movaps %xmm10,%xmm6
Mike Klein61b84162017-03-31 11:48:14 -040028386 .byte 65,15,40,200 // movaps %xmm8,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040028387 .byte 255,224 // jmpq *%rax
28388
Mike Kleinbb338332017-05-04 12:42:52 -040028389HIDDEN _sk_hue_sse2
28390.globl _sk_hue_sse2
28391FUNCTION(_sk_hue_sse2)
28392_sk_hue_sse2:
Mike Klein08aa88d2017-05-12 12:59:24 -040028393 .byte 68,15,40,200 // movaps %xmm0,%xmm9
28394 .byte 68,15,89,203 // mulps %xmm3,%xmm9
28395 .byte 68,15,40,209 // movaps %xmm1,%xmm10
28396 .byte 68,15,40,225 // movaps %xmm1,%xmm12
28397 .byte 68,15,89,211 // mulps %xmm3,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040028398 .byte 68,15,40,5,125,64,0,0 // movaps 0x407d(%rip),%xmm8 # 4e80 <_sk_callback_sse2+0x2a5>
Mike Klein08aa88d2017-05-12 12:59:24 -040028399 .byte 69,15,40,216 // movaps %xmm8,%xmm11
28400 .byte 15,40,207 // movaps %xmm7,%xmm1
28401 .byte 68,15,92,217 // subps %xmm1,%xmm11
28402 .byte 65,15,89,195 // mulps %xmm11,%xmm0
28403 .byte 15,41,68,36,232 // movaps %xmm0,-0x18(%rsp)
28404 .byte 69,15,89,227 // mulps %xmm11,%xmm12
28405 .byte 68,15,41,100,36,216 // movaps %xmm12,-0x28(%rsp)
28406 .byte 68,15,89,218 // mulps %xmm2,%xmm11
28407 .byte 15,89,211 // mulps %xmm3,%xmm2
28408 .byte 68,15,40,229 // movaps %xmm5,%xmm12
28409 .byte 68,15,40,237 // movaps %xmm5,%xmm13
Mike Kleinbb338332017-05-04 12:42:52 -040028410 .byte 15,40,254 // movaps %xmm6,%xmm7
Mike Klein08aa88d2017-05-12 12:59:24 -040028411 .byte 68,15,95,239 // maxps %xmm7,%xmm13
28412 .byte 15,41,100,36,200 // movaps %xmm4,-0x38(%rsp)
28413 .byte 68,15,40,244 // movaps %xmm4,%xmm14
28414 .byte 68,15,40,252 // movaps %xmm4,%xmm15
28415 .byte 69,15,95,253 // maxps %xmm13,%xmm15
28416 .byte 68,15,93,231 // minps %xmm7,%xmm12
28417 .byte 69,15,93,244 // minps %xmm12,%xmm14
28418 .byte 69,15,92,254 // subps %xmm14,%xmm15
28419 .byte 69,15,40,226 // movaps %xmm10,%xmm12
28420 .byte 68,15,93,226 // minps %xmm2,%xmm12
Mike Kleinbb338332017-05-04 12:42:52 -040028421 .byte 69,15,40,233 // movaps %xmm9,%xmm13
Mike Klein08aa88d2017-05-12 12:59:24 -040028422 .byte 69,15,93,236 // minps %xmm12,%xmm13
28423 .byte 69,15,40,226 // movaps %xmm10,%xmm12
28424 .byte 68,15,95,226 // maxps %xmm2,%xmm12
28425 .byte 69,15,40,241 // movaps %xmm9,%xmm14
28426 .byte 69,15,95,244 // maxps %xmm12,%xmm14
28427 .byte 69,15,92,245 // subps %xmm13,%xmm14
28428 .byte 69,15,92,205 // subps %xmm13,%xmm9
28429 .byte 69,15,92,213 // subps %xmm13,%xmm10
28430 .byte 65,15,92,213 // subps %xmm13,%xmm2
28431 .byte 15,40,245 // movaps %xmm5,%xmm6
28432 .byte 68,15,89,251 // mulps %xmm3,%xmm15
28433 .byte 69,15,89,207 // mulps %xmm15,%xmm9
28434 .byte 69,15,89,215 // mulps %xmm15,%xmm10
28435 .byte 65,15,89,215 // mulps %xmm15,%xmm2
28436 .byte 15,87,192 // xorps %xmm0,%xmm0
28437 .byte 69,15,94,206 // divps %xmm14,%xmm9
28438 .byte 69,15,94,214 // divps %xmm14,%xmm10
28439 .byte 65,15,94,214 // divps %xmm14,%xmm2
28440 .byte 68,15,194,240,4 // cmpneqps %xmm0,%xmm14
28441 .byte 69,15,84,206 // andps %xmm14,%xmm9
28442 .byte 69,15,84,214 // andps %xmm14,%xmm10
28443 .byte 65,15,84,214 // andps %xmm14,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040028444 .byte 68,15,40,61,145,63,0,0 // movaps 0x3f91(%rip),%xmm15 # 4e50 <_sk_callback_sse2+0x275>
Mike Klein08aa88d2017-05-12 12:59:24 -040028445 .byte 65,15,89,231 // mulps %xmm15,%xmm4
Mike Klein8ca33562017-05-23 08:07:43 -040028446 .byte 15,40,5,150,63,0,0 // movaps 0x3f96(%rip),%xmm0 # 4e60 <_sk_callback_sse2+0x285>
Mike Klein08aa88d2017-05-12 12:59:24 -040028447 .byte 15,89,240 // mulps %xmm0,%xmm6
28448 .byte 15,88,244 // addps %xmm4,%xmm6
Mike Klein8ca33562017-05-23 08:07:43 -040028449 .byte 68,15,40,53,152,63,0,0 // movaps 0x3f98(%rip),%xmm14 # 4e70 <_sk_callback_sse2+0x295>
Mike Klein08aa88d2017-05-12 12:59:24 -040028450 .byte 68,15,40,239 // movaps %xmm7,%xmm13
28451 .byte 69,15,89,238 // mulps %xmm14,%xmm13
28452 .byte 68,15,88,238 // addps %xmm6,%xmm13
28453 .byte 65,15,40,225 // movaps %xmm9,%xmm4
28454 .byte 65,15,89,231 // mulps %xmm15,%xmm4
28455 .byte 65,15,40,242 // movaps %xmm10,%xmm6
28456 .byte 15,89,240 // mulps %xmm0,%xmm6
28457 .byte 15,88,244 // addps %xmm4,%xmm6
28458 .byte 15,40,226 // movaps %xmm2,%xmm4
28459 .byte 65,15,89,230 // mulps %xmm14,%xmm4
28460 .byte 15,88,230 // addps %xmm6,%xmm4
28461 .byte 68,15,89,235 // mulps %xmm3,%xmm13
28462 .byte 68,15,92,236 // subps %xmm4,%xmm13
28463 .byte 69,15,88,205 // addps %xmm13,%xmm9
28464 .byte 69,15,88,213 // addps %xmm13,%xmm10
28465 .byte 68,15,88,234 // addps %xmm2,%xmm13
28466 .byte 65,15,40,210 // movaps %xmm10,%xmm2
28467 .byte 65,15,93,213 // minps %xmm13,%xmm2
28468 .byte 65,15,40,241 // movaps %xmm9,%xmm6
28469 .byte 15,93,242 // minps %xmm2,%xmm6
28470 .byte 65,15,40,210 // movaps %xmm10,%xmm2
28471 .byte 65,15,95,213 // maxps %xmm13,%xmm2
28472 .byte 65,15,40,225 // movaps %xmm9,%xmm4
28473 .byte 15,95,226 // maxps %xmm2,%xmm4
28474 .byte 69,15,89,249 // mulps %xmm9,%xmm15
28475 .byte 65,15,89,194 // mulps %xmm10,%xmm0
28476 .byte 65,15,88,199 // addps %xmm15,%xmm0
28477 .byte 69,15,89,245 // mulps %xmm13,%xmm14
28478 .byte 68,15,88,240 // addps %xmm0,%xmm14
28479 .byte 15,87,210 // xorps %xmm2,%xmm2
28480 .byte 15,194,214,2 // cmpleps %xmm6,%xmm2
28481 .byte 69,15,40,254 // movaps %xmm14,%xmm15
28482 .byte 68,15,92,254 // subps %xmm6,%xmm15
28483 .byte 65,15,40,241 // movaps %xmm9,%xmm6
28484 .byte 65,15,92,246 // subps %xmm14,%xmm6
28485 .byte 65,15,89,246 // mulps %xmm14,%xmm6
28486 .byte 65,15,94,247 // divps %xmm15,%xmm6
28487 .byte 65,15,88,246 // addps %xmm14,%xmm6
28488 .byte 15,40,194 // movaps %xmm2,%xmm0
28489 .byte 15,85,198 // andnps %xmm6,%xmm0
28490 .byte 68,15,84,202 // andps %xmm2,%xmm9
28491 .byte 68,15,86,200 // orps %xmm0,%xmm9
28492 .byte 68,15,40,227 // movaps %xmm3,%xmm12
28493 .byte 65,15,40,196 // movaps %xmm12,%xmm0
28494 .byte 15,41,76,36,184 // movaps %xmm1,-0x48(%rsp)
28495 .byte 15,89,193 // mulps %xmm1,%xmm0
28496 .byte 69,15,92,196 // subps %xmm12,%xmm8
28497 .byte 68,15,88,225 // addps %xmm1,%xmm12
28498 .byte 68,15,92,224 // subps %xmm0,%xmm12
28499 .byte 15,40,240 // movaps %xmm0,%xmm6
28500 .byte 15,194,196,1 // cmpltps %xmm4,%xmm0
28501 .byte 15,40,200 // movaps %xmm0,%xmm1
28502 .byte 65,15,85,201 // andnps %xmm9,%xmm1
28503 .byte 69,15,92,206 // subps %xmm14,%xmm9
28504 .byte 65,15,92,246 // subps %xmm14,%xmm6
28505 .byte 68,15,89,206 // mulps %xmm6,%xmm9
28506 .byte 65,15,92,230 // subps %xmm14,%xmm4
28507 .byte 68,15,94,204 // divps %xmm4,%xmm9
28508 .byte 69,15,88,206 // addps %xmm14,%xmm9
28509 .byte 68,15,84,200 // andps %xmm0,%xmm9
28510 .byte 68,15,86,201 // orps %xmm1,%xmm9
28511 .byte 65,15,40,202 // movaps %xmm10,%xmm1
28512 .byte 65,15,92,206 // subps %xmm14,%xmm1
28513 .byte 65,15,89,206 // mulps %xmm14,%xmm1
28514 .byte 65,15,94,207 // divps %xmm15,%xmm1
28515 .byte 65,15,88,206 // addps %xmm14,%xmm1
28516 .byte 15,40,218 // movaps %xmm2,%xmm3
Mike Kleinbb338332017-05-04 12:42:52 -040028517 .byte 15,85,217 // andnps %xmm1,%xmm3
Mike Klein08aa88d2017-05-12 12:59:24 -040028518 .byte 68,15,84,210 // andps %xmm2,%xmm10
28519 .byte 68,15,86,211 // orps %xmm3,%xmm10
28520 .byte 15,40,200 // movaps %xmm0,%xmm1
28521 .byte 65,15,85,202 // andnps %xmm10,%xmm1
28522 .byte 69,15,92,214 // subps %xmm14,%xmm10
28523 .byte 68,15,89,214 // mulps %xmm6,%xmm10
28524 .byte 68,15,94,212 // divps %xmm4,%xmm10
28525 .byte 69,15,88,214 // addps %xmm14,%xmm10
28526 .byte 68,15,84,208 // andps %xmm0,%xmm10
28527 .byte 68,15,86,209 // orps %xmm1,%xmm10
28528 .byte 65,15,40,205 // movaps %xmm13,%xmm1
28529 .byte 65,15,92,206 // subps %xmm14,%xmm1
28530 .byte 65,15,89,206 // mulps %xmm14,%xmm1
28531 .byte 65,15,94,207 // divps %xmm15,%xmm1
28532 .byte 65,15,88,206 // addps %xmm14,%xmm1
28533 .byte 68,15,84,234 // andps %xmm2,%xmm13
28534 .byte 15,85,209 // andnps %xmm1,%xmm2
28535 .byte 65,15,86,213 // orps %xmm13,%xmm2
28536 .byte 15,40,200 // movaps %xmm0,%xmm1
28537 .byte 15,85,202 // andnps %xmm2,%xmm1
28538 .byte 65,15,92,214 // subps %xmm14,%xmm2
28539 .byte 15,89,214 // mulps %xmm6,%xmm2
28540 .byte 15,94,212 // divps %xmm4,%xmm2
28541 .byte 65,15,88,214 // addps %xmm14,%xmm2
28542 .byte 15,84,208 // andps %xmm0,%xmm2
28543 .byte 15,86,209 // orps %xmm1,%xmm2
28544 .byte 15,87,192 // xorps %xmm0,%xmm0
28545 .byte 68,15,95,200 // maxps %xmm0,%xmm9
28546 .byte 68,15,95,208 // maxps %xmm0,%xmm10
28547 .byte 15,95,208 // maxps %xmm0,%xmm2
28548 .byte 65,15,40,192 // movaps %xmm8,%xmm0
28549 .byte 15,40,100,36,200 // movaps -0x38(%rsp),%xmm4
28550 .byte 15,89,196 // mulps %xmm4,%xmm0
28551 .byte 15,40,76,36,232 // movaps -0x18(%rsp),%xmm1
28552 .byte 15,88,200 // addps %xmm0,%xmm1
28553 .byte 65,15,88,201 // addps %xmm9,%xmm1
28554 .byte 15,40,193 // movaps %xmm1,%xmm0
Mike Kleinbb338332017-05-04 12:42:52 -040028555 .byte 65,15,40,216 // movaps %xmm8,%xmm3
Mike Klein08aa88d2017-05-12 12:59:24 -040028556 .byte 15,89,221 // mulps %xmm5,%xmm3
28557 .byte 15,40,76,36,216 // movaps -0x28(%rsp),%xmm1
28558 .byte 15,88,203 // addps %xmm3,%xmm1
28559 .byte 65,15,88,202 // addps %xmm10,%xmm1
28560 .byte 68,15,89,199 // mulps %xmm7,%xmm8
28561 .byte 69,15,88,195 // addps %xmm11,%xmm8
28562 .byte 68,15,88,194 // addps %xmm2,%xmm8
28563 .byte 72,173 // lods %ds:(%rsi),%rax
28564 .byte 15,40,247 // movaps %xmm7,%xmm6
28565 .byte 65,15,40,208 // movaps %xmm8,%xmm2
28566 .byte 65,15,40,220 // movaps %xmm12,%xmm3
28567 .byte 15,40,124,36,184 // movaps -0x48(%rsp),%xmm7
Mike Kleinbb338332017-05-04 12:42:52 -040028568 .byte 255,224 // jmpq *%rax
28569
28570HIDDEN _sk_saturation_sse2
28571.globl _sk_saturation_sse2
28572FUNCTION(_sk_saturation_sse2)
28573_sk_saturation_sse2:
Mike Kleinbb338332017-05-04 12:42:52 -040028574 .byte 68,15,40,231 // movaps %xmm7,%xmm12
Mike Klein08aa88d2017-05-12 12:59:24 -040028575 .byte 68,15,40,198 // movaps %xmm6,%xmm8
28576 .byte 15,40,251 // movaps %xmm3,%xmm7
28577 .byte 68,15,40,216 // movaps %xmm0,%xmm11
28578 .byte 68,15,40,215 // movaps %xmm7,%xmm10
28579 .byte 68,15,89,212 // mulps %xmm4,%xmm10
28580 .byte 15,40,244 // movaps %xmm4,%xmm6
28581 .byte 15,41,116,36,184 // movaps %xmm6,-0x48(%rsp)
28582 .byte 68,15,40,207 // movaps %xmm7,%xmm9
28583 .byte 68,15,89,205 // mulps %xmm5,%xmm9
28584 .byte 15,41,108,36,200 // movaps %xmm5,-0x38(%rsp)
28585 .byte 15,40,199 // movaps %xmm7,%xmm0
Mike Kleinbb338332017-05-04 12:42:52 -040028586 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein08aa88d2017-05-12 12:59:24 -040028587 .byte 69,15,40,232 // movaps %xmm8,%xmm13
28588 .byte 68,15,41,108,36,168 // movaps %xmm13,-0x58(%rsp)
28589 .byte 15,40,225 // movaps %xmm1,%xmm4
28590 .byte 15,41,100,36,216 // movaps %xmm4,-0x28(%rsp)
28591 .byte 15,40,220 // movaps %xmm4,%xmm3
28592 .byte 15,41,84,36,232 // movaps %xmm2,-0x18(%rsp)
28593 .byte 15,95,218 // maxps %xmm2,%xmm3
28594 .byte 65,15,40,203 // movaps %xmm11,%xmm1
28595 .byte 15,95,203 // maxps %xmm3,%xmm1
28596 .byte 15,40,220 // movaps %xmm4,%xmm3
28597 .byte 15,93,218 // minps %xmm2,%xmm3
28598 .byte 65,15,40,211 // movaps %xmm11,%xmm2
28599 .byte 15,93,211 // minps %xmm3,%xmm2
28600 .byte 15,92,202 // subps %xmm2,%xmm1
28601 .byte 65,15,89,204 // mulps %xmm12,%xmm1
28602 .byte 65,15,40,228 // movaps %xmm12,%xmm4
28603 .byte 65,15,40,209 // movaps %xmm9,%xmm2
28604 .byte 15,93,208 // minps %xmm0,%xmm2
28605 .byte 69,15,40,194 // movaps %xmm10,%xmm8
28606 .byte 68,15,93,194 // minps %xmm2,%xmm8
28607 .byte 65,15,40,209 // movaps %xmm9,%xmm2
28608 .byte 15,95,208 // maxps %xmm0,%xmm2
28609 .byte 65,15,40,218 // movaps %xmm10,%xmm3
28610 .byte 15,95,218 // maxps %xmm2,%xmm3
28611 .byte 65,15,92,216 // subps %xmm8,%xmm3
28612 .byte 15,87,210 // xorps %xmm2,%xmm2
28613 .byte 69,15,92,208 // subps %xmm8,%xmm10
28614 .byte 68,15,89,209 // mulps %xmm1,%xmm10
28615 .byte 68,15,94,211 // divps %xmm3,%xmm10
28616 .byte 69,15,92,200 // subps %xmm8,%xmm9
28617 .byte 68,15,89,201 // mulps %xmm1,%xmm9
28618 .byte 68,15,94,203 // divps %xmm3,%xmm9
28619 .byte 65,15,92,192 // subps %xmm8,%xmm0
28620 .byte 15,89,193 // mulps %xmm1,%xmm0
28621 .byte 15,94,195 // divps %xmm3,%xmm0
28622 .byte 15,194,218,4 // cmpneqps %xmm2,%xmm3
28623 .byte 68,15,84,211 // andps %xmm3,%xmm10
28624 .byte 68,15,84,203 // andps %xmm3,%xmm9
28625 .byte 15,84,195 // andps %xmm3,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040028626 .byte 68,15,40,5,45,61,0,0 // movaps 0x3d2d(%rip),%xmm8 # 4e90 <_sk_callback_sse2+0x2b5>
Mike Klein08aa88d2017-05-12 12:59:24 -040028627 .byte 15,40,214 // movaps %xmm6,%xmm2
Mike Kleinbb338332017-05-04 12:42:52 -040028628 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040028629 .byte 15,40,13,47,61,0,0 // movaps 0x3d2f(%rip),%xmm1 # 4ea0 <_sk_callback_sse2+0x2c5>
Mike Klein08aa88d2017-05-12 12:59:24 -040028630 .byte 15,40,221 // movaps %xmm5,%xmm3
28631 .byte 15,89,217 // mulps %xmm1,%xmm3
28632 .byte 15,88,218 // addps %xmm2,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040028633 .byte 68,15,40,37,46,61,0,0 // movaps 0x3d2e(%rip),%xmm12 # 4eb0 <_sk_callback_sse2+0x2d5>
Mike Klein08aa88d2017-05-12 12:59:24 -040028634 .byte 69,15,89,236 // mulps %xmm12,%xmm13
28635 .byte 68,15,88,235 // addps %xmm3,%xmm13
28636 .byte 65,15,40,210 // movaps %xmm10,%xmm2
28637 .byte 65,15,89,208 // mulps %xmm8,%xmm2
28638 .byte 65,15,40,217 // movaps %xmm9,%xmm3
28639 .byte 15,89,217 // mulps %xmm1,%xmm3
28640 .byte 15,88,218 // addps %xmm2,%xmm3
28641 .byte 15,40,208 // movaps %xmm0,%xmm2
28642 .byte 65,15,89,212 // mulps %xmm12,%xmm2
28643 .byte 15,88,211 // addps %xmm3,%xmm2
28644 .byte 68,15,89,239 // mulps %xmm7,%xmm13
28645 .byte 68,15,92,234 // subps %xmm2,%xmm13
28646 .byte 69,15,88,213 // addps %xmm13,%xmm10
28647 .byte 69,15,88,205 // addps %xmm13,%xmm9
28648 .byte 68,15,88,232 // addps %xmm0,%xmm13
28649 .byte 65,15,40,193 // movaps %xmm9,%xmm0
28650 .byte 65,15,93,197 // minps %xmm13,%xmm0
28651 .byte 65,15,40,218 // movaps %xmm10,%xmm3
28652 .byte 15,93,216 // minps %xmm0,%xmm3
28653 .byte 65,15,40,193 // movaps %xmm9,%xmm0
28654 .byte 65,15,95,197 // maxps %xmm13,%xmm0
28655 .byte 69,15,40,242 // movaps %xmm10,%xmm14
28656 .byte 68,15,95,240 // maxps %xmm0,%xmm14
28657 .byte 69,15,89,194 // mulps %xmm10,%xmm8
28658 .byte 65,15,89,201 // mulps %xmm9,%xmm1
28659 .byte 65,15,88,200 // addps %xmm8,%xmm1
28660 .byte 69,15,89,229 // mulps %xmm13,%xmm12
28661 .byte 68,15,88,225 // addps %xmm1,%xmm12
28662 .byte 15,87,210 // xorps %xmm2,%xmm2
28663 .byte 15,194,211,2 // cmpleps %xmm3,%xmm2
28664 .byte 65,15,40,244 // movaps %xmm12,%xmm6
28665 .byte 15,92,243 // subps %xmm3,%xmm6
28666 .byte 65,15,40,194 // movaps %xmm10,%xmm0
28667 .byte 65,15,92,196 // subps %xmm12,%xmm0
28668 .byte 65,15,89,196 // mulps %xmm12,%xmm0
28669 .byte 15,94,198 // divps %xmm6,%xmm0
28670 .byte 65,15,88,196 // addps %xmm12,%xmm0
28671 .byte 15,40,202 // movaps %xmm2,%xmm1
28672 .byte 15,85,200 // andnps %xmm0,%xmm1
28673 .byte 68,15,84,210 // andps %xmm2,%xmm10
28674 .byte 68,15,86,209 // orps %xmm1,%xmm10
28675 .byte 15,40,223 // movaps %xmm7,%xmm3
28676 .byte 15,40,236 // movaps %xmm4,%xmm5
28677 .byte 15,89,221 // mulps %xmm5,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040028678 .byte 68,15,40,5,147,60,0,0 // movaps 0x3c93(%rip),%xmm8 # 4ec0 <_sk_callback_sse2+0x2e5>
Mike Klein08aa88d2017-05-12 12:59:24 -040028679 .byte 65,15,40,224 // movaps %xmm8,%xmm4
28680 .byte 68,15,92,199 // subps %xmm7,%xmm8
28681 .byte 15,88,253 // addps %xmm5,%xmm7
28682 .byte 15,92,251 // subps %xmm3,%xmm7
28683 .byte 15,40,203 // movaps %xmm3,%xmm1
28684 .byte 65,15,194,222,1 // cmpltps %xmm14,%xmm3
28685 .byte 15,40,195 // movaps %xmm3,%xmm0
28686 .byte 65,15,85,194 // andnps %xmm10,%xmm0
28687 .byte 69,15,92,212 // subps %xmm12,%xmm10
28688 .byte 65,15,92,204 // subps %xmm12,%xmm1
28689 .byte 68,15,89,209 // mulps %xmm1,%xmm10
28690 .byte 69,15,92,244 // subps %xmm12,%xmm14
28691 .byte 69,15,94,214 // divps %xmm14,%xmm10
28692 .byte 69,15,88,212 // addps %xmm12,%xmm10
28693 .byte 68,15,84,211 // andps %xmm3,%xmm10
28694 .byte 68,15,86,208 // orps %xmm0,%xmm10
28695 .byte 65,15,40,193 // movaps %xmm9,%xmm0
28696 .byte 65,15,92,196 // subps %xmm12,%xmm0
28697 .byte 65,15,89,196 // mulps %xmm12,%xmm0
28698 .byte 15,94,198 // divps %xmm6,%xmm0
28699 .byte 65,15,88,196 // addps %xmm12,%xmm0
28700 .byte 68,15,40,250 // movaps %xmm2,%xmm15
28701 .byte 68,15,85,248 // andnps %xmm0,%xmm15
28702 .byte 68,15,84,202 // andps %xmm2,%xmm9
28703 .byte 69,15,86,207 // orps %xmm15,%xmm9
28704 .byte 15,40,195 // movaps %xmm3,%xmm0
28705 .byte 65,15,85,193 // andnps %xmm9,%xmm0
28706 .byte 69,15,92,204 // subps %xmm12,%xmm9
28707 .byte 68,15,89,201 // mulps %xmm1,%xmm9
28708 .byte 69,15,94,206 // divps %xmm14,%xmm9
28709 .byte 69,15,88,204 // addps %xmm12,%xmm9
28710 .byte 68,15,84,203 // andps %xmm3,%xmm9
28711 .byte 68,15,86,200 // orps %xmm0,%xmm9
28712 .byte 65,15,40,197 // movaps %xmm13,%xmm0
28713 .byte 65,15,92,196 // subps %xmm12,%xmm0
28714 .byte 65,15,89,196 // mulps %xmm12,%xmm0
28715 .byte 15,94,198 // divps %xmm6,%xmm0
28716 .byte 65,15,88,196 // addps %xmm12,%xmm0
28717 .byte 68,15,84,234 // andps %xmm2,%xmm13
28718 .byte 15,85,208 // andnps %xmm0,%xmm2
28719 .byte 65,15,86,213 // orps %xmm13,%xmm2
28720 .byte 15,40,195 // movaps %xmm3,%xmm0
28721 .byte 15,85,194 // andnps %xmm2,%xmm0
28722 .byte 65,15,92,212 // subps %xmm12,%xmm2
28723 .byte 15,89,209 // mulps %xmm1,%xmm2
28724 .byte 65,15,94,214 // divps %xmm14,%xmm2
28725 .byte 65,15,88,212 // addps %xmm12,%xmm2
28726 .byte 15,84,211 // andps %xmm3,%xmm2
28727 .byte 15,86,208 // orps %xmm0,%xmm2
28728 .byte 15,87,192 // xorps %xmm0,%xmm0
28729 .byte 68,15,95,208 // maxps %xmm0,%xmm10
28730 .byte 68,15,95,200 // maxps %xmm0,%xmm9
28731 .byte 15,95,208 // maxps %xmm0,%xmm2
28732 .byte 65,15,40,192 // movaps %xmm8,%xmm0
28733 .byte 15,40,92,36,184 // movaps -0x48(%rsp),%xmm3
28734 .byte 15,89,195 // mulps %xmm3,%xmm0
28735 .byte 68,15,40,229 // movaps %xmm5,%xmm12
28736 .byte 65,15,92,228 // subps %xmm12,%xmm4
28737 .byte 68,15,89,220 // mulps %xmm4,%xmm11
28738 .byte 68,15,88,216 // addps %xmm0,%xmm11
28739 .byte 69,15,88,218 // addps %xmm10,%xmm11
28740 .byte 65,15,40,192 // movaps %xmm8,%xmm0
28741 .byte 15,40,108,36,200 // movaps -0x38(%rsp),%xmm5
28742 .byte 15,89,197 // mulps %xmm5,%xmm0
28743 .byte 15,40,76,36,216 // movaps -0x28(%rsp),%xmm1
28744 .byte 15,89,204 // mulps %xmm4,%xmm1
28745 .byte 15,88,200 // addps %xmm0,%xmm1
28746 .byte 65,15,88,201 // addps %xmm9,%xmm1
28747 .byte 15,89,100,36,232 // mulps -0x18(%rsp),%xmm4
28748 .byte 15,40,68,36,168 // movaps -0x58(%rsp),%xmm0
28749 .byte 68,15,89,192 // mulps %xmm0,%xmm8
28750 .byte 68,15,88,196 // addps %xmm4,%xmm8
28751 .byte 68,15,88,194 // addps %xmm2,%xmm8
Mike Kleinbb338332017-05-04 12:42:52 -040028752 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein08aa88d2017-05-12 12:59:24 -040028753 .byte 15,40,227 // movaps %xmm3,%xmm4
28754 .byte 15,40,240 // movaps %xmm0,%xmm6
28755 .byte 65,15,40,195 // movaps %xmm11,%xmm0
28756 .byte 65,15,40,208 // movaps %xmm8,%xmm2
28757 .byte 15,40,223 // movaps %xmm7,%xmm3
28758 .byte 65,15,40,252 // movaps %xmm12,%xmm7
Mike Kleinbb338332017-05-04 12:42:52 -040028759 .byte 255,224 // jmpq *%rax
28760
28761HIDDEN _sk_color_sse2
28762.globl _sk_color_sse2
28763FUNCTION(_sk_color_sse2)
28764_sk_color_sse2:
Mike Klein08aa88d2017-05-12 12:59:24 -040028765 .byte 68,15,40,199 // movaps %xmm7,%xmm8
28766 .byte 68,15,40,230 // movaps %xmm6,%xmm12
28767 .byte 68,15,41,100,36,216 // movaps %xmm12,-0x28(%rsp)
Mike Kleinbb338332017-05-04 12:42:52 -040028768 .byte 68,15,40,221 // movaps %xmm5,%xmm11
28769 .byte 68,15,41,92,36,232 // movaps %xmm11,-0x18(%rsp)
Mike Klein08aa88d2017-05-12 12:59:24 -040028770 .byte 15,40,244 // movaps %xmm4,%xmm6
28771 .byte 15,41,84,36,184 // movaps %xmm2,-0x48(%rsp)
28772 .byte 15,40,233 // movaps %xmm1,%xmm5
28773 .byte 15,40,248 // movaps %xmm0,%xmm7
28774 .byte 68,15,40,207 // movaps %xmm7,%xmm9
28775 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleinbb338332017-05-04 12:42:52 -040028776 .byte 68,15,40,213 // movaps %xmm5,%xmm10
Mike Klein08aa88d2017-05-12 12:59:24 -040028777 .byte 69,15,89,208 // mulps %xmm8,%xmm10
28778 .byte 65,15,40,208 // movaps %xmm8,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040028779 .byte 68,15,40,45,49,59,0,0 // movaps 0x3b31(%rip),%xmm13 # 4ed0 <_sk_callback_sse2+0x2f5>
Mike Klein08aa88d2017-05-12 12:59:24 -040028780 .byte 68,15,40,198 // movaps %xmm6,%xmm8
28781 .byte 69,15,89,197 // mulps %xmm13,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040028782 .byte 68,15,40,53,49,59,0,0 // movaps 0x3b31(%rip),%xmm14 # 4ee0 <_sk_callback_sse2+0x305>
Mike Klein08aa88d2017-05-12 12:59:24 -040028783 .byte 65,15,40,195 // movaps %xmm11,%xmm0
28784 .byte 65,15,89,198 // mulps %xmm14,%xmm0
28785 .byte 65,15,88,192 // addps %xmm8,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040028786 .byte 68,15,40,29,45,59,0,0 // movaps 0x3b2d(%rip),%xmm11 # 4ef0 <_sk_callback_sse2+0x315>
Mike Klein08aa88d2017-05-12 12:59:24 -040028787 .byte 69,15,89,227 // mulps %xmm11,%xmm12
28788 .byte 68,15,88,224 // addps %xmm0,%xmm12
28789 .byte 65,15,40,193 // movaps %xmm9,%xmm0
28790 .byte 65,15,89,197 // mulps %xmm13,%xmm0
28791 .byte 69,15,40,250 // movaps %xmm10,%xmm15
28792 .byte 69,15,89,254 // mulps %xmm14,%xmm15
28793 .byte 68,15,88,248 // addps %xmm0,%xmm15
Mike Klein8ca33562017-05-23 08:07:43 -040028794 .byte 68,15,40,5,25,59,0,0 // movaps 0x3b19(%rip),%xmm8 # 4f00 <_sk_callback_sse2+0x325>
Mike Klein08aa88d2017-05-12 12:59:24 -040028795 .byte 65,15,40,224 // movaps %xmm8,%xmm4
28796 .byte 15,92,226 // subps %xmm2,%xmm4
28797 .byte 15,89,252 // mulps %xmm4,%xmm7
28798 .byte 15,89,236 // mulps %xmm4,%xmm5
28799 .byte 15,40,76,36,184 // movaps -0x48(%rsp),%xmm1
28800 .byte 15,89,225 // mulps %xmm1,%xmm4
28801 .byte 15,89,202 // mulps %xmm2,%xmm1
28802 .byte 15,40,193 // movaps %xmm1,%xmm0
28803 .byte 65,15,89,195 // mulps %xmm11,%xmm0
28804 .byte 65,15,88,199 // addps %xmm15,%xmm0
28805 .byte 68,15,89,227 // mulps %xmm3,%xmm12
28806 .byte 68,15,92,224 // subps %xmm0,%xmm12
28807 .byte 69,15,88,204 // addps %xmm12,%xmm9
28808 .byte 69,15,88,212 // addps %xmm12,%xmm10
28809 .byte 68,15,88,225 // addps %xmm1,%xmm12
28810 .byte 65,15,40,194 // movaps %xmm10,%xmm0
28811 .byte 65,15,93,196 // minps %xmm12,%xmm0
28812 .byte 65,15,40,201 // movaps %xmm9,%xmm1
28813 .byte 15,93,200 // minps %xmm0,%xmm1
28814 .byte 65,15,40,194 // movaps %xmm10,%xmm0
28815 .byte 65,15,95,196 // maxps %xmm12,%xmm0
28816 .byte 69,15,40,249 // movaps %xmm9,%xmm15
28817 .byte 68,15,95,248 // maxps %xmm0,%xmm15
28818 .byte 69,15,89,233 // mulps %xmm9,%xmm13
28819 .byte 69,15,89,242 // mulps %xmm10,%xmm14
Mike Kleinbb338332017-05-04 12:42:52 -040028820 .byte 69,15,88,245 // addps %xmm13,%xmm14
Mike Klein08aa88d2017-05-12 12:59:24 -040028821 .byte 69,15,89,220 // mulps %xmm12,%xmm11
28822 .byte 69,15,88,222 // addps %xmm14,%xmm11
28823 .byte 69,15,87,237 // xorps %xmm13,%xmm13
28824 .byte 68,15,194,233,2 // cmpleps %xmm1,%xmm13
28825 .byte 69,15,40,243 // movaps %xmm11,%xmm14
28826 .byte 68,15,92,241 // subps %xmm1,%xmm14
28827 .byte 65,15,40,201 // movaps %xmm9,%xmm1
28828 .byte 65,15,92,203 // subps %xmm11,%xmm1
28829 .byte 65,15,89,203 // mulps %xmm11,%xmm1
Mike Kleinbb338332017-05-04 12:42:52 -040028830 .byte 65,15,94,206 // divps %xmm14,%xmm1
Mike Klein08aa88d2017-05-12 12:59:24 -040028831 .byte 65,15,88,203 // addps %xmm11,%xmm1
28832 .byte 65,15,40,197 // movaps %xmm13,%xmm0
28833 .byte 15,85,193 // andnps %xmm1,%xmm0
28834 .byte 69,15,84,205 // andps %xmm13,%xmm9
28835 .byte 68,15,86,200 // orps %xmm0,%xmm9
28836 .byte 15,40,195 // movaps %xmm3,%xmm0
28837 .byte 15,41,84,36,200 // movaps %xmm2,-0x38(%rsp)
28838 .byte 15,89,194 // mulps %xmm2,%xmm0
28839 .byte 68,15,92,195 // subps %xmm3,%xmm8
28840 .byte 15,88,218 // addps %xmm2,%xmm3
28841 .byte 15,92,216 // subps %xmm0,%xmm3
28842 .byte 15,41,92,36,184 // movaps %xmm3,-0x48(%rsp)
28843 .byte 15,40,216 // movaps %xmm0,%xmm3
28844 .byte 65,15,194,199,1 // cmpltps %xmm15,%xmm0
28845 .byte 15,40,200 // movaps %xmm0,%xmm1
28846 .byte 65,15,85,201 // andnps %xmm9,%xmm1
28847 .byte 69,15,92,203 // subps %xmm11,%xmm9
28848 .byte 65,15,92,219 // subps %xmm11,%xmm3
28849 .byte 68,15,89,203 // mulps %xmm3,%xmm9
28850 .byte 69,15,92,251 // subps %xmm11,%xmm15
28851 .byte 69,15,94,207 // divps %xmm15,%xmm9
28852 .byte 69,15,88,203 // addps %xmm11,%xmm9
28853 .byte 68,15,84,200 // andps %xmm0,%xmm9
28854 .byte 68,15,86,201 // orps %xmm1,%xmm9
28855 .byte 65,15,40,202 // movaps %xmm10,%xmm1
28856 .byte 65,15,92,203 // subps %xmm11,%xmm1
28857 .byte 65,15,89,203 // mulps %xmm11,%xmm1
28858 .byte 65,15,94,206 // divps %xmm14,%xmm1
28859 .byte 65,15,88,203 // addps %xmm11,%xmm1
28860 .byte 65,15,40,213 // movaps %xmm13,%xmm2
Mike Kleinbb338332017-05-04 12:42:52 -040028861 .byte 15,85,209 // andnps %xmm1,%xmm2
Mike Klein08aa88d2017-05-12 12:59:24 -040028862 .byte 69,15,84,213 // andps %xmm13,%xmm10
28863 .byte 68,15,86,210 // orps %xmm2,%xmm10
28864 .byte 15,40,200 // movaps %xmm0,%xmm1
28865 .byte 65,15,85,202 // andnps %xmm10,%xmm1
28866 .byte 69,15,92,211 // subps %xmm11,%xmm10
28867 .byte 68,15,89,211 // mulps %xmm3,%xmm10
28868 .byte 69,15,94,215 // divps %xmm15,%xmm10
28869 .byte 69,15,88,211 // addps %xmm11,%xmm10
28870 .byte 68,15,84,208 // andps %xmm0,%xmm10
28871 .byte 68,15,86,209 // orps %xmm1,%xmm10
28872 .byte 65,15,40,204 // movaps %xmm12,%xmm1
28873 .byte 65,15,92,203 // subps %xmm11,%xmm1
28874 .byte 65,15,89,203 // mulps %xmm11,%xmm1
28875 .byte 65,15,94,206 // divps %xmm14,%xmm1
28876 .byte 65,15,88,203 // addps %xmm11,%xmm1
28877 .byte 69,15,84,229 // andps %xmm13,%xmm12
28878 .byte 68,15,85,233 // andnps %xmm1,%xmm13
28879 .byte 69,15,86,236 // orps %xmm12,%xmm13
28880 .byte 15,40,200 // movaps %xmm0,%xmm1
28881 .byte 65,15,85,205 // andnps %xmm13,%xmm1
28882 .byte 69,15,92,235 // subps %xmm11,%xmm13
28883 .byte 68,15,89,235 // mulps %xmm3,%xmm13
28884 .byte 69,15,94,239 // divps %xmm15,%xmm13
28885 .byte 69,15,88,235 // addps %xmm11,%xmm13
28886 .byte 68,15,84,232 // andps %xmm0,%xmm13
28887 .byte 68,15,86,233 // orps %xmm1,%xmm13
28888 .byte 15,87,192 // xorps %xmm0,%xmm0
28889 .byte 68,15,95,200 // maxps %xmm0,%xmm9
28890 .byte 68,15,95,208 // maxps %xmm0,%xmm10
28891 .byte 68,15,95,232 // maxps %xmm0,%xmm13
28892 .byte 65,15,40,192 // movaps %xmm8,%xmm0
28893 .byte 15,89,198 // mulps %xmm6,%xmm0
28894 .byte 15,88,248 // addps %xmm0,%xmm7
28895 .byte 65,15,88,249 // addps %xmm9,%xmm7
28896 .byte 65,15,40,192 // movaps %xmm8,%xmm0
28897 .byte 15,40,84,36,232 // movaps -0x18(%rsp),%xmm2
28898 .byte 15,89,194 // mulps %xmm2,%xmm0
28899 .byte 15,88,232 // addps %xmm0,%xmm5
28900 .byte 65,15,88,234 // addps %xmm10,%xmm5
28901 .byte 15,40,205 // movaps %xmm5,%xmm1
28902 .byte 15,40,68,36,216 // movaps -0x28(%rsp),%xmm0
28903 .byte 68,15,89,192 // mulps %xmm0,%xmm8
28904 .byte 68,15,88,196 // addps %xmm4,%xmm8
28905 .byte 69,15,88,197 // addps %xmm13,%xmm8
Mike Kleinbb338332017-05-04 12:42:52 -040028906 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein08aa88d2017-05-12 12:59:24 -040028907 .byte 15,40,230 // movaps %xmm6,%xmm4
28908 .byte 15,40,234 // movaps %xmm2,%xmm5
28909 .byte 15,40,240 // movaps %xmm0,%xmm6
28910 .byte 15,40,199 // movaps %xmm7,%xmm0
28911 .byte 65,15,40,208 // movaps %xmm8,%xmm2
28912 .byte 15,40,92,36,184 // movaps -0x48(%rsp),%xmm3
28913 .byte 15,40,124,36,200 // movaps -0x38(%rsp),%xmm7
Mike Kleinbb338332017-05-04 12:42:52 -040028914 .byte 255,224 // jmpq *%rax
28915
28916HIDDEN _sk_luminosity_sse2
28917.globl _sk_luminosity_sse2
28918FUNCTION(_sk_luminosity_sse2)
28919_sk_luminosity_sse2:
Mike Klein08aa88d2017-05-12 12:59:24 -040028920 .byte 68,15,40,215 // movaps %xmm7,%xmm10
28921 .byte 15,41,116,36,200 // movaps %xmm6,-0x38(%rsp)
Mike Kleinbb338332017-05-04 12:42:52 -040028922 .byte 15,40,245 // movaps %xmm5,%xmm6
Mike Klein08aa88d2017-05-12 12:59:24 -040028923 .byte 15,41,116,36,232 // movaps %xmm6,-0x18(%rsp)
28924 .byte 15,41,100,36,216 // movaps %xmm4,-0x28(%rsp)
28925 .byte 15,40,235 // movaps %xmm3,%xmm5
28926 .byte 15,40,248 // movaps %xmm0,%xmm7
28927 .byte 68,15,40,205 // movaps %xmm5,%xmm9
28928 .byte 68,15,89,204 // mulps %xmm4,%xmm9
28929 .byte 15,89,222 // mulps %xmm6,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040028930 .byte 68,15,40,37,48,57,0,0 // movaps 0x3930(%rip),%xmm12 # 4f10 <_sk_callback_sse2+0x335>
Mike Klein08aa88d2017-05-12 12:59:24 -040028931 .byte 68,15,40,199 // movaps %xmm7,%xmm8
28932 .byte 69,15,89,196 // mulps %xmm12,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040028933 .byte 68,15,40,45,48,57,0,0 // movaps 0x3930(%rip),%xmm13 # 4f20 <_sk_callback_sse2+0x345>
Mike Klein08aa88d2017-05-12 12:59:24 -040028934 .byte 68,15,40,241 // movaps %xmm1,%xmm14
28935 .byte 69,15,89,245 // mulps %xmm13,%xmm14
28936 .byte 69,15,88,240 // addps %xmm8,%xmm14
Mike Klein8ca33562017-05-23 08:07:43 -040028937 .byte 68,15,40,29,44,57,0,0 // movaps 0x392c(%rip),%xmm11 # 4f30 <_sk_callback_sse2+0x355>
28938 .byte 68,15,40,5,52,57,0,0 // movaps 0x3934(%rip),%xmm8 # 4f40 <_sk_callback_sse2+0x365>
Mike Kleinbb338332017-05-04 12:42:52 -040028939 .byte 69,15,40,248 // movaps %xmm8,%xmm15
Mike Klein08aa88d2017-05-12 12:59:24 -040028940 .byte 65,15,40,194 // movaps %xmm10,%xmm0
28941 .byte 68,15,92,248 // subps %xmm0,%xmm15
28942 .byte 65,15,89,255 // mulps %xmm15,%xmm7
28943 .byte 65,15,89,207 // mulps %xmm15,%xmm1
28944 .byte 15,41,76,36,184 // movaps %xmm1,-0x48(%rsp)
28945 .byte 68,15,89,250 // mulps %xmm2,%xmm15
28946 .byte 65,15,89,211 // mulps %xmm11,%xmm2
28947 .byte 65,15,88,214 // addps %xmm14,%xmm2
28948 .byte 69,15,40,241 // movaps %xmm9,%xmm14
28949 .byte 69,15,89,244 // mulps %xmm12,%xmm14
28950 .byte 68,15,40,211 // movaps %xmm3,%xmm10
28951 .byte 69,15,89,213 // mulps %xmm13,%xmm10
28952 .byte 69,15,88,214 // addps %xmm14,%xmm10
Mike Kleinbb338332017-05-04 12:42:52 -040028953 .byte 15,40,229 // movaps %xmm5,%xmm4
Mike Klein08aa88d2017-05-12 12:59:24 -040028954 .byte 15,40,116,36,200 // movaps -0x38(%rsp),%xmm6
28955 .byte 15,89,230 // mulps %xmm6,%xmm4
28956 .byte 68,15,40,244 // movaps %xmm4,%xmm14
28957 .byte 69,15,89,243 // mulps %xmm11,%xmm14
28958 .byte 69,15,88,242 // addps %xmm10,%xmm14
28959 .byte 15,89,208 // mulps %xmm0,%xmm2
28960 .byte 65,15,92,214 // subps %xmm14,%xmm2
28961 .byte 68,15,88,202 // addps %xmm2,%xmm9
28962 .byte 15,88,218 // addps %xmm2,%xmm3
28963 .byte 15,88,212 // addps %xmm4,%xmm2
28964 .byte 68,15,40,211 // movaps %xmm3,%xmm10
28965 .byte 68,15,93,210 // minps %xmm2,%xmm10
28966 .byte 65,15,40,225 // movaps %xmm9,%xmm4
28967 .byte 65,15,93,226 // minps %xmm10,%xmm4
28968 .byte 68,15,40,211 // movaps %xmm3,%xmm10
28969 .byte 68,15,95,210 // maxps %xmm2,%xmm10
28970 .byte 69,15,40,241 // movaps %xmm9,%xmm14
28971 .byte 69,15,95,242 // maxps %xmm10,%xmm14
28972 .byte 69,15,89,225 // mulps %xmm9,%xmm12
28973 .byte 68,15,89,235 // mulps %xmm3,%xmm13
28974 .byte 69,15,88,236 // addps %xmm12,%xmm13
28975 .byte 68,15,89,218 // mulps %xmm2,%xmm11
28976 .byte 69,15,88,221 // addps %xmm13,%xmm11
28977 .byte 69,15,87,228 // xorps %xmm12,%xmm12
28978 .byte 68,15,194,228,2 // cmpleps %xmm4,%xmm12
28979 .byte 69,15,40,211 // movaps %xmm11,%xmm10
28980 .byte 68,15,92,212 // subps %xmm4,%xmm10
28981 .byte 65,15,40,225 // movaps %xmm9,%xmm4
28982 .byte 65,15,92,227 // subps %xmm11,%xmm4
28983 .byte 65,15,89,227 // mulps %xmm11,%xmm4
28984 .byte 65,15,94,226 // divps %xmm10,%xmm4
28985 .byte 65,15,88,227 // addps %xmm11,%xmm4
28986 .byte 69,15,40,236 // movaps %xmm12,%xmm13
28987 .byte 68,15,85,236 // andnps %xmm4,%xmm13
28988 .byte 69,15,84,204 // andps %xmm12,%xmm9
28989 .byte 69,15,86,205 // orps %xmm13,%xmm9
28990 .byte 15,40,229 // movaps %xmm5,%xmm4
28991 .byte 15,41,68,36,168 // movaps %xmm0,-0x58(%rsp)
28992 .byte 15,89,224 // mulps %xmm0,%xmm4
28993 .byte 68,15,92,197 // subps %xmm5,%xmm8
28994 .byte 15,88,232 // addps %xmm0,%xmm5
28995 .byte 15,92,236 // subps %xmm4,%xmm5
28996 .byte 68,15,40,236 // movaps %xmm4,%xmm13
28997 .byte 65,15,194,230,1 // cmpltps %xmm14,%xmm4
28998 .byte 15,40,196 // movaps %xmm4,%xmm0
28999 .byte 65,15,85,193 // andnps %xmm9,%xmm0
29000 .byte 69,15,92,203 // subps %xmm11,%xmm9
29001 .byte 69,15,92,235 // subps %xmm11,%xmm13
29002 .byte 69,15,89,205 // mulps %xmm13,%xmm9
29003 .byte 69,15,92,243 // subps %xmm11,%xmm14
29004 .byte 69,15,94,206 // divps %xmm14,%xmm9
29005 .byte 69,15,88,203 // addps %xmm11,%xmm9
29006 .byte 68,15,84,204 // andps %xmm4,%xmm9
29007 .byte 68,15,86,200 // orps %xmm0,%xmm9
29008 .byte 15,40,195 // movaps %xmm3,%xmm0
29009 .byte 65,15,92,195 // subps %xmm11,%xmm0
29010 .byte 65,15,89,195 // mulps %xmm11,%xmm0
29011 .byte 65,15,94,194 // divps %xmm10,%xmm0
29012 .byte 65,15,88,195 // addps %xmm11,%xmm0
29013 .byte 65,15,40,204 // movaps %xmm12,%xmm1
29014 .byte 15,85,200 // andnps %xmm0,%xmm1
29015 .byte 65,15,84,220 // andps %xmm12,%xmm3
29016 .byte 15,86,217 // orps %xmm1,%xmm3
29017 .byte 15,40,196 // movaps %xmm4,%xmm0
29018 .byte 15,85,195 // andnps %xmm3,%xmm0
29019 .byte 65,15,92,219 // subps %xmm11,%xmm3
29020 .byte 65,15,89,221 // mulps %xmm13,%xmm3
29021 .byte 65,15,94,222 // divps %xmm14,%xmm3
29022 .byte 65,15,88,219 // addps %xmm11,%xmm3
29023 .byte 15,84,220 // andps %xmm4,%xmm3
29024 .byte 15,86,216 // orps %xmm0,%xmm3
29025 .byte 15,40,194 // movaps %xmm2,%xmm0
29026 .byte 65,15,92,195 // subps %xmm11,%xmm0
29027 .byte 65,15,89,195 // mulps %xmm11,%xmm0
29028 .byte 65,15,94,194 // divps %xmm10,%xmm0
29029 .byte 65,15,88,195 // addps %xmm11,%xmm0
29030 .byte 65,15,84,212 // andps %xmm12,%xmm2
29031 .byte 68,15,85,224 // andnps %xmm0,%xmm12
29032 .byte 68,15,86,226 // orps %xmm2,%xmm12
29033 .byte 15,40,196 // movaps %xmm4,%xmm0
29034 .byte 65,15,85,196 // andnps %xmm12,%xmm0
29035 .byte 69,15,92,227 // subps %xmm11,%xmm12
29036 .byte 69,15,89,229 // mulps %xmm13,%xmm12
29037 .byte 69,15,94,230 // divps %xmm14,%xmm12
29038 .byte 69,15,88,227 // addps %xmm11,%xmm12
29039 .byte 68,15,84,228 // andps %xmm4,%xmm12
29040 .byte 68,15,86,224 // orps %xmm0,%xmm12
29041 .byte 15,87,192 // xorps %xmm0,%xmm0
29042 .byte 68,15,95,200 // maxps %xmm0,%xmm9
29043 .byte 15,95,216 // maxps %xmm0,%xmm3
29044 .byte 68,15,95,224 // maxps %xmm0,%xmm12
29045 .byte 65,15,40,192 // movaps %xmm8,%xmm0
29046 .byte 15,40,100,36,216 // movaps -0x28(%rsp),%xmm4
29047 .byte 15,89,196 // mulps %xmm4,%xmm0
29048 .byte 15,88,248 // addps %xmm0,%xmm7
29049 .byte 65,15,88,249 // addps %xmm9,%xmm7
29050 .byte 65,15,40,192 // movaps %xmm8,%xmm0
29051 .byte 68,15,40,84,36,232 // movaps -0x18(%rsp),%xmm10
29052 .byte 65,15,89,194 // mulps %xmm10,%xmm0
29053 .byte 15,40,76,36,184 // movaps -0x48(%rsp),%xmm1
29054 .byte 15,88,200 // addps %xmm0,%xmm1
29055 .byte 15,88,203 // addps %xmm3,%xmm1
29056 .byte 68,15,89,198 // mulps %xmm6,%xmm8
29057 .byte 69,15,88,199 // addps %xmm15,%xmm8
29058 .byte 69,15,88,196 // addps %xmm12,%xmm8
29059 .byte 72,173 // lods %ds:(%rsi),%rax
29060 .byte 15,40,199 // movaps %xmm7,%xmm0
29061 .byte 65,15,40,208 // movaps %xmm8,%xmm2
29062 .byte 15,40,221 // movaps %xmm5,%xmm3
29063 .byte 65,15,40,234 // movaps %xmm10,%xmm5
29064 .byte 15,40,124,36,168 // movaps -0x58(%rsp),%xmm7
Mike Kleinbb338332017-05-04 12:42:52 -040029065 .byte 255,224 // jmpq *%rax
29066
Mike Klein7c4af542017-03-29 18:21:14 -040029067HIDDEN _sk_clamp_0_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029068.globl _sk_clamp_0_sse2
Mike Klein86714282017-04-13 17:37:38 -040029069FUNCTION(_sk_clamp_0_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029070_sk_clamp_0_sse2:
29071 .byte 69,15,87,192 // xorps %xmm8,%xmm8
29072 .byte 65,15,95,192 // maxps %xmm8,%xmm0
29073 .byte 65,15,95,200 // maxps %xmm8,%xmm1
29074 .byte 65,15,95,208 // maxps %xmm8,%xmm2
29075 .byte 65,15,95,216 // maxps %xmm8,%xmm3
29076 .byte 72,173 // lods %ds:(%rsi),%rax
29077 .byte 255,224 // jmpq *%rax
29078
Mike Klein7c4af542017-03-29 18:21:14 -040029079HIDDEN _sk_clamp_1_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029080.globl _sk_clamp_1_sse2
Mike Klein86714282017-04-13 17:37:38 -040029081FUNCTION(_sk_clamp_1_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029082_sk_clamp_1_sse2:
Mike Klein8ca33562017-05-23 08:07:43 -040029083 .byte 68,15,40,5,61,55,0,0 // movaps 0x373d(%rip),%xmm8 # 4f50 <_sk_callback_sse2+0x375>
Mike Kleind7e06ae2017-03-29 16:33:06 -040029084 .byte 65,15,93,192 // minps %xmm8,%xmm0
29085 .byte 65,15,93,200 // minps %xmm8,%xmm1
29086 .byte 65,15,93,208 // minps %xmm8,%xmm2
29087 .byte 65,15,93,216 // minps %xmm8,%xmm3
29088 .byte 72,173 // lods %ds:(%rsi),%rax
29089 .byte 255,224 // jmpq *%rax
29090
Mike Klein7c4af542017-03-29 18:21:14 -040029091HIDDEN _sk_clamp_a_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029092.globl _sk_clamp_a_sse2
Mike Klein86714282017-04-13 17:37:38 -040029093FUNCTION(_sk_clamp_a_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029094_sk_clamp_a_sse2:
Mike Klein8ca33562017-05-23 08:07:43 -040029095 .byte 15,93,29,50,55,0,0 // minps 0x3732(%rip),%xmm3 # 4f60 <_sk_callback_sse2+0x385>
Mike Kleind7e06ae2017-03-29 16:33:06 -040029096 .byte 15,93,195 // minps %xmm3,%xmm0
29097 .byte 15,93,203 // minps %xmm3,%xmm1
29098 .byte 15,93,211 // minps %xmm3,%xmm2
29099 .byte 72,173 // lods %ds:(%rsi),%rax
29100 .byte 255,224 // jmpq *%rax
29101
Mike Klein7c4af542017-03-29 18:21:14 -040029102HIDDEN _sk_set_rgb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029103.globl _sk_set_rgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040029104FUNCTION(_sk_set_rgb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029105_sk_set_rgb_sse2:
29106 .byte 72,173 // lods %ds:(%rsi),%rax
29107 .byte 243,15,16,0 // movss (%rax),%xmm0
29108 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
29109 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
29110 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
29111 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
29112 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
29113 .byte 72,173 // lods %ds:(%rsi),%rax
29114 .byte 255,224 // jmpq *%rax
29115
Mike Klein7c4af542017-03-29 18:21:14 -040029116HIDDEN _sk_swap_rb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029117.globl _sk_swap_rb_sse2
Mike Klein86714282017-04-13 17:37:38 -040029118FUNCTION(_sk_swap_rb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029119_sk_swap_rb_sse2:
29120 .byte 68,15,40,192 // movaps %xmm0,%xmm8
29121 .byte 72,173 // lods %ds:(%rsi),%rax
29122 .byte 15,40,194 // movaps %xmm2,%xmm0
29123 .byte 65,15,40,208 // movaps %xmm8,%xmm2
29124 .byte 255,224 // jmpq *%rax
29125
Mike Klein7c4af542017-03-29 18:21:14 -040029126HIDDEN _sk_swap_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029127.globl _sk_swap_sse2
Mike Klein86714282017-04-13 17:37:38 -040029128FUNCTION(_sk_swap_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029129_sk_swap_sse2:
29130 .byte 68,15,40,195 // movaps %xmm3,%xmm8
29131 .byte 68,15,40,202 // movaps %xmm2,%xmm9
29132 .byte 68,15,40,209 // movaps %xmm1,%xmm10
29133 .byte 68,15,40,216 // movaps %xmm0,%xmm11
29134 .byte 72,173 // lods %ds:(%rsi),%rax
29135 .byte 15,40,196 // movaps %xmm4,%xmm0
29136 .byte 15,40,205 // movaps %xmm5,%xmm1
29137 .byte 15,40,214 // movaps %xmm6,%xmm2
29138 .byte 15,40,223 // movaps %xmm7,%xmm3
29139 .byte 65,15,40,227 // movaps %xmm11,%xmm4
29140 .byte 65,15,40,234 // movaps %xmm10,%xmm5
29141 .byte 65,15,40,241 // movaps %xmm9,%xmm6
29142 .byte 65,15,40,248 // movaps %xmm8,%xmm7
29143 .byte 255,224 // jmpq *%rax
29144
Mike Klein7c4af542017-03-29 18:21:14 -040029145HIDDEN _sk_move_src_dst_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029146.globl _sk_move_src_dst_sse2
Mike Klein86714282017-04-13 17:37:38 -040029147FUNCTION(_sk_move_src_dst_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029148_sk_move_src_dst_sse2:
29149 .byte 72,173 // lods %ds:(%rsi),%rax
29150 .byte 15,40,224 // movaps %xmm0,%xmm4
29151 .byte 15,40,233 // movaps %xmm1,%xmm5
29152 .byte 15,40,242 // movaps %xmm2,%xmm6
29153 .byte 15,40,251 // movaps %xmm3,%xmm7
29154 .byte 255,224 // jmpq *%rax
29155
Mike Klein7c4af542017-03-29 18:21:14 -040029156HIDDEN _sk_move_dst_src_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029157.globl _sk_move_dst_src_sse2
Mike Klein86714282017-04-13 17:37:38 -040029158FUNCTION(_sk_move_dst_src_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029159_sk_move_dst_src_sse2:
29160 .byte 72,173 // lods %ds:(%rsi),%rax
29161 .byte 15,40,196 // movaps %xmm4,%xmm0
29162 .byte 15,40,205 // movaps %xmm5,%xmm1
29163 .byte 15,40,214 // movaps %xmm6,%xmm2
29164 .byte 15,40,223 // movaps %xmm7,%xmm3
29165 .byte 255,224 // jmpq *%rax
29166
Mike Klein7c4af542017-03-29 18:21:14 -040029167HIDDEN _sk_premul_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029168.globl _sk_premul_sse2
Mike Klein86714282017-04-13 17:37:38 -040029169FUNCTION(_sk_premul_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029170_sk_premul_sse2:
29171 .byte 15,89,195 // mulps %xmm3,%xmm0
29172 .byte 15,89,203 // mulps %xmm3,%xmm1
29173 .byte 15,89,211 // mulps %xmm3,%xmm2
29174 .byte 72,173 // lods %ds:(%rsi),%rax
29175 .byte 255,224 // jmpq *%rax
29176
Mike Klein7c4af542017-03-29 18:21:14 -040029177HIDDEN _sk_unpremul_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029178.globl _sk_unpremul_sse2
Mike Klein86714282017-04-13 17:37:38 -040029179FUNCTION(_sk_unpremul_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029180_sk_unpremul_sse2:
29181 .byte 69,15,87,192 // xorps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040029182 .byte 68,15,40,13,157,54,0,0 // movaps 0x369d(%rip),%xmm9 # 4f70 <_sk_callback_sse2+0x395>
Mike Kleind7e06ae2017-03-29 16:33:06 -040029183 .byte 68,15,94,203 // divps %xmm3,%xmm9
29184 .byte 68,15,194,195,4 // cmpneqps %xmm3,%xmm8
29185 .byte 69,15,84,193 // andps %xmm9,%xmm8
29186 .byte 65,15,89,192 // mulps %xmm8,%xmm0
29187 .byte 65,15,89,200 // mulps %xmm8,%xmm1
29188 .byte 65,15,89,208 // mulps %xmm8,%xmm2
29189 .byte 72,173 // lods %ds:(%rsi),%rax
29190 .byte 255,224 // jmpq *%rax
29191
Mike Klein7c4af542017-03-29 18:21:14 -040029192HIDDEN _sk_from_srgb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029193.globl _sk_from_srgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040029194FUNCTION(_sk_from_srgb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029195_sk_from_srgb_sse2:
Mike Klein8ca33562017-05-23 08:07:43 -040029196 .byte 68,15,40,5,136,54,0,0 // movaps 0x3688(%rip),%xmm8 # 4f80 <_sk_callback_sse2+0x3a5>
Mike Kleinfe560a82017-05-01 12:56:35 -040029197 .byte 68,15,40,232 // movaps %xmm0,%xmm13
29198 .byte 69,15,89,232 // mulps %xmm8,%xmm13
29199 .byte 68,15,40,216 // movaps %xmm0,%xmm11
29200 .byte 69,15,89,219 // mulps %xmm11,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040029201 .byte 68,15,40,13,128,54,0,0 // movaps 0x3680(%rip),%xmm9 # 4f90 <_sk_callback_sse2+0x3b5>
Mike Kleinfe560a82017-05-01 12:56:35 -040029202 .byte 68,15,40,240 // movaps %xmm0,%xmm14
29203 .byte 69,15,89,241 // mulps %xmm9,%xmm14
Mike Klein8ca33562017-05-23 08:07:43 -040029204 .byte 68,15,40,21,128,54,0,0 // movaps 0x3680(%rip),%xmm10 # 4fa0 <_sk_callback_sse2+0x3c5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040029205 .byte 69,15,88,242 // addps %xmm10,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040029206 .byte 69,15,89,243 // mulps %xmm11,%xmm14
Mike Klein8ca33562017-05-23 08:07:43 -040029207 .byte 68,15,40,29,128,54,0,0 // movaps 0x3680(%rip),%xmm11 # 4fb0 <_sk_callback_sse2+0x3d5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040029208 .byte 69,15,88,243 // addps %xmm11,%xmm14
Mike Klein8ca33562017-05-23 08:07:43 -040029209 .byte 68,15,40,37,132,54,0,0 // movaps 0x3684(%rip),%xmm12 # 4fc0 <_sk_callback_sse2+0x3e5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040029210 .byte 65,15,194,196,1 // cmpltps %xmm12,%xmm0
29211 .byte 68,15,84,232 // andps %xmm0,%xmm13
29212 .byte 65,15,85,198 // andnps %xmm14,%xmm0
29213 .byte 65,15,86,197 // orps %xmm13,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040029214 .byte 68,15,40,233 // movaps %xmm1,%xmm13
29215 .byte 69,15,89,232 // mulps %xmm8,%xmm13
Mike Kleind7e06ae2017-03-29 16:33:06 -040029216 .byte 68,15,40,241 // movaps %xmm1,%xmm14
29217 .byte 69,15,89,246 // mulps %xmm14,%xmm14
Mike Kleinfe560a82017-05-01 12:56:35 -040029218 .byte 68,15,40,249 // movaps %xmm1,%xmm15
29219 .byte 69,15,89,249 // mulps %xmm9,%xmm15
Mike Kleind7e06ae2017-03-29 16:33:06 -040029220 .byte 69,15,88,250 // addps %xmm10,%xmm15
29221 .byte 69,15,89,254 // mulps %xmm14,%xmm15
29222 .byte 69,15,88,251 // addps %xmm11,%xmm15
29223 .byte 65,15,194,204,1 // cmpltps %xmm12,%xmm1
29224 .byte 68,15,84,233 // andps %xmm1,%xmm13
29225 .byte 65,15,85,207 // andnps %xmm15,%xmm1
29226 .byte 65,15,86,205 // orps %xmm13,%xmm1
29227 .byte 68,15,89,194 // mulps %xmm2,%xmm8
29228 .byte 68,15,40,234 // movaps %xmm2,%xmm13
29229 .byte 69,15,89,237 // mulps %xmm13,%xmm13
29230 .byte 68,15,89,202 // mulps %xmm2,%xmm9
29231 .byte 69,15,88,202 // addps %xmm10,%xmm9
29232 .byte 69,15,89,205 // mulps %xmm13,%xmm9
29233 .byte 69,15,88,203 // addps %xmm11,%xmm9
29234 .byte 65,15,194,212,1 // cmpltps %xmm12,%xmm2
29235 .byte 68,15,84,194 // andps %xmm2,%xmm8
29236 .byte 65,15,85,209 // andnps %xmm9,%xmm2
29237 .byte 65,15,86,208 // orps %xmm8,%xmm2
29238 .byte 72,173 // lods %ds:(%rsi),%rax
29239 .byte 255,224 // jmpq *%rax
29240
Mike Klein7c4af542017-03-29 18:21:14 -040029241HIDDEN _sk_to_srgb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029242.globl _sk_to_srgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040029243FUNCTION(_sk_to_srgb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029244_sk_to_srgb_sse2:
Mike Kleinf45e3d72017-05-15 17:36:59 -040029245 .byte 68,15,82,232 // rsqrtps %xmm0,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040029246 .byte 68,15,40,5,17,54,0,0 // movaps 0x3611(%rip),%xmm8 # 4fd0 <_sk_callback_sse2+0x3f5>
Mike Kleinfe560a82017-05-01 12:56:35 -040029247 .byte 68,15,40,240 // movaps %xmm0,%xmm14
29248 .byte 69,15,89,240 // mulps %xmm8,%xmm14
Mike Klein8ca33562017-05-23 08:07:43 -040029249 .byte 68,15,40,13,17,54,0,0 // movaps 0x3611(%rip),%xmm9 # 4fe0 <_sk_callback_sse2+0x405>
Mike Kleinf45e3d72017-05-15 17:36:59 -040029250 .byte 69,15,40,253 // movaps %xmm13,%xmm15
29251 .byte 69,15,89,249 // mulps %xmm9,%xmm15
Mike Klein8ca33562017-05-23 08:07:43 -040029252 .byte 68,15,40,21,17,54,0,0 // movaps 0x3611(%rip),%xmm10 # 4ff0 <_sk_callback_sse2+0x415>
Mike Kleinf45e3d72017-05-15 17:36:59 -040029253 .byte 69,15,88,250 // addps %xmm10,%xmm15
29254 .byte 69,15,89,253 // mulps %xmm13,%xmm15
Mike Klein8ca33562017-05-23 08:07:43 -040029255 .byte 68,15,40,29,17,54,0,0 // movaps 0x3611(%rip),%xmm11 # 5000 <_sk_callback_sse2+0x425>
Mike Kleinfe560a82017-05-01 12:56:35 -040029256 .byte 69,15,88,251 // addps %xmm11,%xmm15
Mike Klein8ca33562017-05-23 08:07:43 -040029257 .byte 68,15,40,37,21,54,0,0 // movaps 0x3615(%rip),%xmm12 # 5010 <_sk_callback_sse2+0x435>
Mike Kleinf45e3d72017-05-15 17:36:59 -040029258 .byte 69,15,88,236 // addps %xmm12,%xmm13
29259 .byte 69,15,83,237 // rcpps %xmm13,%xmm13
29260 .byte 69,15,89,239 // mulps %xmm15,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040029261 .byte 68,15,40,61,17,54,0,0 // movaps 0x3611(%rip),%xmm15 # 5020 <_sk_callback_sse2+0x445>
Mike Kleinf45e3d72017-05-15 17:36:59 -040029262 .byte 65,15,194,199,1 // cmpltps %xmm15,%xmm0
29263 .byte 68,15,84,240 // andps %xmm0,%xmm14
29264 .byte 65,15,85,197 // andnps %xmm13,%xmm0
29265 .byte 65,15,86,198 // orps %xmm14,%xmm0
29266 .byte 68,15,82,233 // rsqrtps %xmm1,%xmm13
29267 .byte 69,15,40,245 // movaps %xmm13,%xmm14
29268 .byte 69,15,89,241 // mulps %xmm9,%xmm14
29269 .byte 69,15,88,242 // addps %xmm10,%xmm14
29270 .byte 69,15,89,245 // mulps %xmm13,%xmm14
29271 .byte 69,15,88,243 // addps %xmm11,%xmm14
29272 .byte 69,15,88,236 // addps %xmm12,%xmm13
29273 .byte 69,15,83,237 // rcpps %xmm13,%xmm13
29274 .byte 69,15,89,238 // mulps %xmm14,%xmm13
Mike Kleinfe560a82017-05-01 12:56:35 -040029275 .byte 68,15,40,241 // movaps %xmm1,%xmm14
29276 .byte 69,15,89,240 // mulps %xmm8,%xmm14
Mike Kleinf45e3d72017-05-15 17:36:59 -040029277 .byte 65,15,194,207,1 // cmpltps %xmm15,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040029278 .byte 68,15,84,241 // andps %xmm1,%xmm14
Mike Kleinf45e3d72017-05-15 17:36:59 -040029279 .byte 65,15,85,205 // andnps %xmm13,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040029280 .byte 65,15,86,206 // orps %xmm14,%xmm1
Mike Kleinf45e3d72017-05-15 17:36:59 -040029281 .byte 68,15,82,234 // rsqrtps %xmm2,%xmm13
29282 .byte 69,15,89,205 // mulps %xmm13,%xmm9
29283 .byte 69,15,88,202 // addps %xmm10,%xmm9
29284 .byte 69,15,89,205 // mulps %xmm13,%xmm9
29285 .byte 69,15,88,203 // addps %xmm11,%xmm9
29286 .byte 69,15,88,236 // addps %xmm12,%xmm13
29287 .byte 69,15,83,213 // rcpps %xmm13,%xmm10
29288 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040029289 .byte 68,15,89,194 // mulps %xmm2,%xmm8
Mike Kleinf45e3d72017-05-15 17:36:59 -040029290 .byte 65,15,194,215,1 // cmpltps %xmm15,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029291 .byte 68,15,84,194 // andps %xmm2,%xmm8
Mike Kleinf45e3d72017-05-15 17:36:59 -040029292 .byte 65,15,85,210 // andnps %xmm10,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029293 .byte 65,15,86,208 // orps %xmm8,%xmm2
29294 .byte 72,173 // lods %ds:(%rsi),%rax
29295 .byte 255,224 // jmpq *%rax
29296
Mike Kleindb1cbcb2017-04-12 08:35:41 -040029297HIDDEN _sk_rgb_to_hsl_sse2
29298.globl _sk_rgb_to_hsl_sse2
Mike Klein86714282017-04-13 17:37:38 -040029299FUNCTION(_sk_rgb_to_hsl_sse2)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040029300_sk_rgb_to_hsl_sse2:
29301 .byte 68,15,40,201 // movaps %xmm1,%xmm9
29302 .byte 68,15,40,192 // movaps %xmm0,%xmm8
29303 .byte 69,15,40,208 // movaps %xmm8,%xmm10
29304 .byte 69,15,95,209 // maxps %xmm9,%xmm10
29305 .byte 68,15,95,210 // maxps %xmm2,%xmm10
29306 .byte 69,15,40,216 // movaps %xmm8,%xmm11
29307 .byte 69,15,93,217 // minps %xmm9,%xmm11
29308 .byte 68,15,93,218 // minps %xmm2,%xmm11
29309 .byte 65,15,40,202 // movaps %xmm10,%xmm1
29310 .byte 65,15,92,203 // subps %xmm11,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040029311 .byte 68,15,40,45,106,53,0,0 // movaps 0x356a(%rip),%xmm13 # 5030 <_sk_callback_sse2+0x455>
Mike Kleinfe560a82017-05-01 12:56:35 -040029312 .byte 68,15,94,233 // divps %xmm1,%xmm13
Mike Kleindb1cbcb2017-04-12 08:35:41 -040029313 .byte 65,15,40,194 // movaps %xmm10,%xmm0
29314 .byte 65,15,194,192,0 // cmpeqps %xmm8,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040029315 .byte 69,15,40,225 // movaps %xmm9,%xmm12
29316 .byte 68,15,92,226 // subps %xmm2,%xmm12
29317 .byte 69,15,89,229 // mulps %xmm13,%xmm12
Mike Kleindb1cbcb2017-04-12 08:35:41 -040029318 .byte 69,15,40,241 // movaps %xmm9,%xmm14
29319 .byte 68,15,194,242,1 // cmpltps %xmm2,%xmm14
Mike Klein8ca33562017-05-23 08:07:43 -040029320 .byte 68,15,84,53,80,53,0,0 // andps 0x3550(%rip),%xmm14 # 5040 <_sk_callback_sse2+0x465>
Mike Kleinfe560a82017-05-01 12:56:35 -040029321 .byte 69,15,88,244 // addps %xmm12,%xmm14
29322 .byte 69,15,40,250 // movaps %xmm10,%xmm15
29323 .byte 69,15,194,249,0 // cmpeqps %xmm9,%xmm15
Mike Kleindb1cbcb2017-04-12 08:35:41 -040029324 .byte 65,15,92,208 // subps %xmm8,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040029325 .byte 65,15,89,213 // mulps %xmm13,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040029326 .byte 68,15,40,37,67,53,0,0 // movaps 0x3543(%rip),%xmm12 # 5050 <_sk_callback_sse2+0x475>
Mike Kleinfe560a82017-05-01 12:56:35 -040029327 .byte 65,15,88,212 // addps %xmm12,%xmm2
Mike Kleindb1cbcb2017-04-12 08:35:41 -040029328 .byte 69,15,92,193 // subps %xmm9,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040029329 .byte 69,15,89,197 // mulps %xmm13,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040029330 .byte 68,15,88,5,63,53,0,0 // addps 0x353f(%rip),%xmm8 # 5060 <_sk_callback_sse2+0x485>
Mike Kleinfe560a82017-05-01 12:56:35 -040029331 .byte 65,15,84,215 // andps %xmm15,%xmm2
29332 .byte 69,15,85,248 // andnps %xmm8,%xmm15
29333 .byte 68,15,86,250 // orps %xmm2,%xmm15
29334 .byte 68,15,84,240 // andps %xmm0,%xmm14
29335 .byte 65,15,85,199 // andnps %xmm15,%xmm0
29336 .byte 65,15,86,198 // orps %xmm14,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040029337 .byte 15,89,5,48,53,0,0 // mulps 0x3530(%rip),%xmm0 # 5070 <_sk_callback_sse2+0x495>
Mike Kleinfe560a82017-05-01 12:56:35 -040029338 .byte 69,15,40,194 // movaps %xmm10,%xmm8
29339 .byte 69,15,194,195,4 // cmpneqps %xmm11,%xmm8
29340 .byte 65,15,84,192 // andps %xmm8,%xmm0
29341 .byte 69,15,92,226 // subps %xmm10,%xmm12
Mike Kleindb1cbcb2017-04-12 08:35:41 -040029342 .byte 69,15,88,211 // addps %xmm11,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040029343 .byte 68,15,40,13,35,53,0,0 // movaps 0x3523(%rip),%xmm9 # 5080 <_sk_callback_sse2+0x4a5>
Mike Kleindb1cbcb2017-04-12 08:35:41 -040029344 .byte 65,15,40,210 // movaps %xmm10,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040029345 .byte 65,15,89,209 // mulps %xmm9,%xmm2
29346 .byte 68,15,194,202,1 // cmpltps %xmm2,%xmm9
29347 .byte 69,15,92,227 // subps %xmm11,%xmm12
29348 .byte 69,15,84,225 // andps %xmm9,%xmm12
29349 .byte 69,15,85,202 // andnps %xmm10,%xmm9
29350 .byte 69,15,86,204 // orps %xmm12,%xmm9
29351 .byte 65,15,94,201 // divps %xmm9,%xmm1
29352 .byte 65,15,84,200 // andps %xmm8,%xmm1
Mike Kleindb1cbcb2017-04-12 08:35:41 -040029353 .byte 72,173 // lods %ds:(%rsi),%rax
29354 .byte 255,224 // jmpq *%rax
29355
29356HIDDEN _sk_hsl_to_rgb_sse2
29357.globl _sk_hsl_to_rgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040029358FUNCTION(_sk_hsl_to_rgb_sse2)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040029359_sk_hsl_to_rgb_sse2:
Mike Klein879a08a2017-05-01 15:34:01 -040029360 .byte 15,41,124,36,232 // movaps %xmm7,-0x18(%rsp)
29361 .byte 15,41,116,36,216 // movaps %xmm6,-0x28(%rsp)
29362 .byte 15,41,108,36,200 // movaps %xmm5,-0x38(%rsp)
29363 .byte 15,41,100,36,184 // movaps %xmm4,-0x48(%rsp)
29364 .byte 15,41,92,36,168 // movaps %xmm3,-0x58(%rsp)
Mike Klein5664e652017-05-01 16:01:38 -040029365 .byte 68,15,40,218 // movaps %xmm2,%xmm11
29366 .byte 15,40,240 // movaps %xmm0,%xmm6
Mike Klein8ca33562017-05-23 08:07:43 -040029367 .byte 68,15,40,13,226,52,0,0 // movaps 0x34e2(%rip),%xmm9 # 5090 <_sk_callback_sse2+0x4b5>
Mike Klein5664e652017-05-01 16:01:38 -040029368 .byte 69,15,40,209 // movaps %xmm9,%xmm10
29369 .byte 69,15,194,211,2 // cmpleps %xmm11,%xmm10
29370 .byte 15,40,193 // movaps %xmm1,%xmm0
29371 .byte 15,87,219 // xorps %xmm3,%xmm3
29372 .byte 15,194,217,0 // cmpeqps %xmm1,%xmm3
29373 .byte 15,40,251 // movaps %xmm3,%xmm7
29374 .byte 15,41,124,36,136 // movaps %xmm7,-0x78(%rsp)
29375 .byte 65,15,89,203 // mulps %xmm11,%xmm1
Mike Klein879a08a2017-05-01 15:34:01 -040029376 .byte 15,92,193 // subps %xmm1,%xmm0
Mike Klein5664e652017-05-01 16:01:38 -040029377 .byte 65,15,84,194 // andps %xmm10,%xmm0
29378 .byte 68,15,85,209 // andnps %xmm1,%xmm10
29379 .byte 68,15,86,208 // orps %xmm0,%xmm10
29380 .byte 68,15,41,92,36,152 // movaps %xmm11,-0x68(%rsp)
29381 .byte 69,15,88,211 // addps %xmm11,%xmm10
29382 .byte 69,15,88,219 // addps %xmm11,%xmm11
29383 .byte 69,15,92,218 // subps %xmm10,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040029384 .byte 15,40,5,171,52,0,0 // movaps 0x34ab(%rip),%xmm0 # 50a0 <_sk_callback_sse2+0x4c5>
Mike Klein5664e652017-05-01 16:01:38 -040029385 .byte 15,88,198 // addps %xmm6,%xmm0
29386 .byte 243,15,91,200 // cvttps2dq %xmm0,%xmm1
29387 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
29388 .byte 15,40,216 // movaps %xmm0,%xmm3
29389 .byte 15,194,217,1 // cmpltps %xmm1,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040029390 .byte 15,84,29,163,52,0,0 // andps 0x34a3(%rip),%xmm3 # 50b0 <_sk_callback_sse2+0x4d5>
Mike Klein5664e652017-05-01 16:01:38 -040029391 .byte 15,92,203 // subps %xmm3,%xmm1
29392 .byte 15,92,193 // subps %xmm1,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040029393 .byte 68,15,40,45,165,52,0,0 // movaps 0x34a5(%rip),%xmm13 # 50c0 <_sk_callback_sse2+0x4e5>
Mike Klein5664e652017-05-01 16:01:38 -040029394 .byte 69,15,40,197 // movaps %xmm13,%xmm8
29395 .byte 68,15,194,192,2 // cmpleps %xmm0,%xmm8
29396 .byte 69,15,40,242 // movaps %xmm10,%xmm14
29397 .byte 69,15,92,243 // subps %xmm11,%xmm14
Mike Klein879a08a2017-05-01 15:34:01 -040029398 .byte 65,15,40,217 // movaps %xmm9,%xmm3
Mike Klein5664e652017-05-01 16:01:38 -040029399 .byte 15,194,216,2 // cmpleps %xmm0,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040029400 .byte 15,40,21,181,52,0,0 // movaps 0x34b5(%rip),%xmm2 # 50f0 <_sk_callback_sse2+0x515>
Mike Klein5664e652017-05-01 16:01:38 -040029401 .byte 68,15,40,250 // movaps %xmm2,%xmm15
29402 .byte 68,15,194,248,2 // cmpleps %xmm0,%xmm15
Mike Klein8ca33562017-05-23 08:07:43 -040029403 .byte 15,40,13,133,52,0,0 // movaps 0x3485(%rip),%xmm1 # 50d0 <_sk_callback_sse2+0x4f5>
Mike Klein5664e652017-05-01 16:01:38 -040029404 .byte 15,89,193 // mulps %xmm1,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040029405 .byte 15,40,45,139,52,0,0 // movaps 0x348b(%rip),%xmm5 # 50e0 <_sk_callback_sse2+0x505>
Mike Klein5664e652017-05-01 16:01:38 -040029406 .byte 15,40,229 // movaps %xmm5,%xmm4
Mike Klein879a08a2017-05-01 15:34:01 -040029407 .byte 15,92,224 // subps %xmm0,%xmm4
Mike Klein5664e652017-05-01 16:01:38 -040029408 .byte 65,15,89,230 // mulps %xmm14,%xmm4
29409 .byte 65,15,88,227 // addps %xmm11,%xmm4
29410 .byte 69,15,40,227 // movaps %xmm11,%xmm12
29411 .byte 69,15,84,224 // andps %xmm8,%xmm12
29412 .byte 68,15,85,196 // andnps %xmm4,%xmm8
29413 .byte 69,15,86,196 // orps %xmm12,%xmm8
29414 .byte 68,15,84,195 // andps %xmm3,%xmm8
29415 .byte 65,15,85,218 // andnps %xmm10,%xmm3
29416 .byte 65,15,86,216 // orps %xmm8,%xmm3
29417 .byte 65,15,89,198 // mulps %xmm14,%xmm0
29418 .byte 65,15,88,195 // addps %xmm11,%xmm0
29419 .byte 65,15,84,223 // andps %xmm15,%xmm3
29420 .byte 68,15,85,248 // andnps %xmm0,%xmm15
29421 .byte 68,15,86,251 // orps %xmm3,%xmm15
29422 .byte 68,15,40,199 // movaps %xmm7,%xmm8
29423 .byte 69,15,85,199 // andnps %xmm15,%xmm8
29424 .byte 243,15,91,198 // cvttps2dq %xmm6,%xmm0
29425 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
29426 .byte 15,40,222 // movaps %xmm6,%xmm3
29427 .byte 15,194,216,1 // cmpltps %xmm0,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040029428 .byte 15,84,29,0,52,0,0 // andps 0x3400(%rip),%xmm3 # 50b0 <_sk_callback_sse2+0x4d5>
Mike Klein5664e652017-05-01 16:01:38 -040029429 .byte 15,92,195 // subps %xmm3,%xmm0
29430 .byte 68,15,40,230 // movaps %xmm6,%xmm12
29431 .byte 68,15,92,224 // subps %xmm0,%xmm12
29432 .byte 69,15,40,253 // movaps %xmm13,%xmm15
29433 .byte 69,15,194,252,2 // cmpleps %xmm12,%xmm15
29434 .byte 65,15,40,225 // movaps %xmm9,%xmm4
29435 .byte 65,15,194,228,2 // cmpleps %xmm12,%xmm4
29436 .byte 15,40,218 // movaps %xmm2,%xmm3
29437 .byte 65,15,194,220,2 // cmpleps %xmm12,%xmm3
29438 .byte 68,15,89,225 // mulps %xmm1,%xmm12
29439 .byte 15,40,197 // movaps %xmm5,%xmm0
29440 .byte 65,15,92,196 // subps %xmm12,%xmm0
29441 .byte 65,15,89,198 // mulps %xmm14,%xmm0
29442 .byte 65,15,88,195 // addps %xmm11,%xmm0
29443 .byte 65,15,40,251 // movaps %xmm11,%xmm7
Mike Klein879a08a2017-05-01 15:34:01 -040029444 .byte 65,15,84,255 // andps %xmm15,%xmm7
29445 .byte 68,15,85,248 // andnps %xmm0,%xmm15
29446 .byte 68,15,86,255 // orps %xmm7,%xmm15
Mike Klein5664e652017-05-01 16:01:38 -040029447 .byte 68,15,84,252 // andps %xmm4,%xmm15
29448 .byte 65,15,85,226 // andnps %xmm10,%xmm4
29449 .byte 65,15,86,231 // orps %xmm15,%xmm4
29450 .byte 69,15,89,230 // mulps %xmm14,%xmm12
29451 .byte 69,15,88,227 // addps %xmm11,%xmm12
29452 .byte 15,84,227 // andps %xmm3,%xmm4
29453 .byte 65,15,85,220 // andnps %xmm12,%xmm3
29454 .byte 15,86,220 // orps %xmm4,%xmm3
29455 .byte 15,40,124,36,136 // movaps -0x78(%rsp),%xmm7
29456 .byte 15,40,231 // movaps %xmm7,%xmm4
29457 .byte 15,85,227 // andnps %xmm3,%xmm4
Mike Klein8ca33562017-05-23 08:07:43 -040029458 .byte 15,88,53,216,51,0,0 // addps 0x33d8(%rip),%xmm6 # 5100 <_sk_callback_sse2+0x525>
Mike Klein5664e652017-05-01 16:01:38 -040029459 .byte 243,15,91,198 // cvttps2dq %xmm6,%xmm0
29460 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
29461 .byte 15,40,222 // movaps %xmm6,%xmm3
29462 .byte 15,194,216,1 // cmpltps %xmm0,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040029463 .byte 15,84,29,115,51,0,0 // andps 0x3373(%rip),%xmm3 # 50b0 <_sk_callback_sse2+0x4d5>
Mike Klein5664e652017-05-01 16:01:38 -040029464 .byte 15,92,195 // subps %xmm3,%xmm0
29465 .byte 15,92,240 // subps %xmm0,%xmm6
29466 .byte 15,89,206 // mulps %xmm6,%xmm1
29467 .byte 15,92,233 // subps %xmm1,%xmm5
29468 .byte 65,15,89,238 // mulps %xmm14,%xmm5
29469 .byte 65,15,89,206 // mulps %xmm14,%xmm1
29470 .byte 65,15,88,235 // addps %xmm11,%xmm5
29471 .byte 65,15,88,203 // addps %xmm11,%xmm1
29472 .byte 68,15,194,238,2 // cmpleps %xmm6,%xmm13
29473 .byte 69,15,84,221 // andps %xmm13,%xmm11
29474 .byte 68,15,85,237 // andnps %xmm5,%xmm13
29475 .byte 69,15,86,235 // orps %xmm11,%xmm13
29476 .byte 68,15,194,206,2 // cmpleps %xmm6,%xmm9
29477 .byte 69,15,84,233 // andps %xmm9,%xmm13
29478 .byte 69,15,85,202 // andnps %xmm10,%xmm9
29479 .byte 69,15,86,205 // orps %xmm13,%xmm9
29480 .byte 15,194,214,2 // cmpleps %xmm6,%xmm2
29481 .byte 68,15,84,202 // andps %xmm2,%xmm9
29482 .byte 15,85,209 // andnps %xmm1,%xmm2
29483 .byte 65,15,86,209 // orps %xmm9,%xmm2
29484 .byte 15,40,68,36,152 // movaps -0x68(%rsp),%xmm0
29485 .byte 15,40,207 // movaps %xmm7,%xmm1
29486 .byte 15,84,193 // andps %xmm1,%xmm0
29487 .byte 15,85,202 // andnps %xmm2,%xmm1
29488 .byte 68,15,86,192 // orps %xmm0,%xmm8
29489 .byte 15,86,224 // orps %xmm0,%xmm4
29490 .byte 15,86,193 // orps %xmm1,%xmm0
29491 .byte 15,40,208 // movaps %xmm0,%xmm2
Mike Klein879a08a2017-05-01 15:34:01 -040029492 .byte 72,173 // lods %ds:(%rsi),%rax
29493 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Klein5664e652017-05-01 16:01:38 -040029494 .byte 15,40,204 // movaps %xmm4,%xmm1
Mike Klein879a08a2017-05-01 15:34:01 -040029495 .byte 15,40,92,36,168 // movaps -0x58(%rsp),%xmm3
29496 .byte 15,40,100,36,184 // movaps -0x48(%rsp),%xmm4
29497 .byte 15,40,108,36,200 // movaps -0x38(%rsp),%xmm5
29498 .byte 15,40,116,36,216 // movaps -0x28(%rsp),%xmm6
29499 .byte 15,40,124,36,232 // movaps -0x18(%rsp),%xmm7
Mike Kleindb1cbcb2017-04-12 08:35:41 -040029500 .byte 255,224 // jmpq *%rax
29501
Mike Klein7c4af542017-03-29 18:21:14 -040029502HIDDEN _sk_scale_1_float_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029503.globl _sk_scale_1_float_sse2
Mike Klein86714282017-04-13 17:37:38 -040029504FUNCTION(_sk_scale_1_float_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029505_sk_scale_1_float_sse2:
29506 .byte 72,173 // lods %ds:(%rsi),%rax
29507 .byte 243,68,15,16,0 // movss (%rax),%xmm8
29508 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
29509 .byte 65,15,89,192 // mulps %xmm8,%xmm0
29510 .byte 65,15,89,200 // mulps %xmm8,%xmm1
29511 .byte 65,15,89,208 // mulps %xmm8,%xmm2
29512 .byte 65,15,89,216 // mulps %xmm8,%xmm3
29513 .byte 72,173 // lods %ds:(%rsi),%rax
29514 .byte 255,224 // jmpq *%rax
29515
Mike Klein7c4af542017-03-29 18:21:14 -040029516HIDDEN _sk_scale_u8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029517.globl _sk_scale_u8_sse2
Mike Klein86714282017-04-13 17:37:38 -040029518FUNCTION(_sk_scale_u8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029519_sk_scale_u8_sse2:
29520 .byte 72,173 // lods %ds:(%rsi),%rax
29521 .byte 72,139,0 // mov (%rax),%rax
29522 .byte 102,68,15,110,4,56 // movd (%rax,%rdi,1),%xmm8
29523 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
29524 .byte 102,69,15,96,193 // punpcklbw %xmm9,%xmm8
29525 .byte 102,69,15,97,193 // punpcklwd %xmm9,%xmm8
29526 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040029527 .byte 68,15,89,5,1,51,0,0 // mulps 0x3301(%rip),%xmm8 # 5110 <_sk_callback_sse2+0x535>
Mike Kleinfe560a82017-05-01 12:56:35 -040029528 .byte 65,15,89,192 // mulps %xmm8,%xmm0
29529 .byte 65,15,89,200 // mulps %xmm8,%xmm1
29530 .byte 65,15,89,208 // mulps %xmm8,%xmm2
29531 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040029532 .byte 72,173 // lods %ds:(%rsi),%rax
29533 .byte 255,224 // jmpq *%rax
29534
Mike Klein7c4af542017-03-29 18:21:14 -040029535HIDDEN _sk_lerp_1_float_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029536.globl _sk_lerp_1_float_sse2
Mike Klein86714282017-04-13 17:37:38 -040029537FUNCTION(_sk_lerp_1_float_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029538_sk_lerp_1_float_sse2:
29539 .byte 72,173 // lods %ds:(%rsi),%rax
29540 .byte 243,68,15,16,0 // movss (%rax),%xmm8
29541 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
29542 .byte 15,92,196 // subps %xmm4,%xmm0
29543 .byte 65,15,89,192 // mulps %xmm8,%xmm0
29544 .byte 15,88,196 // addps %xmm4,%xmm0
29545 .byte 15,92,205 // subps %xmm5,%xmm1
29546 .byte 65,15,89,200 // mulps %xmm8,%xmm1
29547 .byte 15,88,205 // addps %xmm5,%xmm1
29548 .byte 15,92,214 // subps %xmm6,%xmm2
29549 .byte 65,15,89,208 // mulps %xmm8,%xmm2
29550 .byte 15,88,214 // addps %xmm6,%xmm2
29551 .byte 15,92,223 // subps %xmm7,%xmm3
29552 .byte 65,15,89,216 // mulps %xmm8,%xmm3
29553 .byte 15,88,223 // addps %xmm7,%xmm3
29554 .byte 72,173 // lods %ds:(%rsi),%rax
29555 .byte 255,224 // jmpq *%rax
29556
Mike Klein7c4af542017-03-29 18:21:14 -040029557HIDDEN _sk_lerp_u8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029558.globl _sk_lerp_u8_sse2
Mike Klein86714282017-04-13 17:37:38 -040029559FUNCTION(_sk_lerp_u8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029560_sk_lerp_u8_sse2:
29561 .byte 72,173 // lods %ds:(%rsi),%rax
29562 .byte 72,139,0 // mov (%rax),%rax
29563 .byte 102,68,15,110,4,56 // movd (%rax,%rdi,1),%xmm8
29564 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
29565 .byte 102,69,15,96,193 // punpcklbw %xmm9,%xmm8
29566 .byte 102,69,15,97,193 // punpcklwd %xmm9,%xmm8
29567 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040029568 .byte 68,15,89,5,159,50,0,0 // mulps 0x329f(%rip),%xmm8 # 5120 <_sk_callback_sse2+0x545>
Mike Kleind7e06ae2017-03-29 16:33:06 -040029569 .byte 15,92,196 // subps %xmm4,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040029570 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040029571 .byte 15,88,196 // addps %xmm4,%xmm0
29572 .byte 15,92,205 // subps %xmm5,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040029573 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040029574 .byte 15,88,205 // addps %xmm5,%xmm1
29575 .byte 15,92,214 // subps %xmm6,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040029576 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029577 .byte 15,88,214 // addps %xmm6,%xmm2
29578 .byte 15,92,223 // subps %xmm7,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040029579 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040029580 .byte 15,88,223 // addps %xmm7,%xmm3
29581 .byte 72,173 // lods %ds:(%rsi),%rax
29582 .byte 255,224 // jmpq *%rax
29583
Mike Klein7c4af542017-03-29 18:21:14 -040029584HIDDEN _sk_lerp_565_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029585.globl _sk_lerp_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040029586FUNCTION(_sk_lerp_565_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029587_sk_lerp_565_sse2:
29588 .byte 72,173 // lods %ds:(%rsi),%rax
29589 .byte 72,139,0 // mov (%rax),%rax
bungeman6f9f2592017-05-10 13:50:12 -040029590 .byte 243,68,15,126,20,120 // movq (%rax,%rdi,2),%xmm10
29591 .byte 102,69,15,239,192 // pxor %xmm8,%xmm8
29592 .byte 102,69,15,97,208 // punpcklwd %xmm8,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040029593 .byte 102,68,15,111,5,101,50,0,0 // movdqa 0x3265(%rip),%xmm8 # 5130 <_sk_callback_sse2+0x555>
bungeman6f9f2592017-05-10 13:50:12 -040029594 .byte 102,69,15,219,194 // pand %xmm10,%xmm8
Mike Klein308e6242017-04-27 13:56:33 -040029595 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040029596 .byte 68,15,89,5,100,50,0,0 // mulps 0x3264(%rip),%xmm8 # 5140 <_sk_callback_sse2+0x565>
29597 .byte 102,68,15,111,13,107,50,0,0 // movdqa 0x326b(%rip),%xmm9 # 5150 <_sk_callback_sse2+0x575>
bungeman6f9f2592017-05-10 13:50:12 -040029598 .byte 102,69,15,219,202 // pand %xmm10,%xmm9
29599 .byte 69,15,91,201 // cvtdq2ps %xmm9,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040029600 .byte 68,15,89,13,106,50,0,0 // mulps 0x326a(%rip),%xmm9 # 5160 <_sk_callback_sse2+0x585>
29601 .byte 102,68,15,219,21,113,50,0,0 // pand 0x3271(%rip),%xmm10 # 5170 <_sk_callback_sse2+0x595>
bungeman6f9f2592017-05-10 13:50:12 -040029602 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040029603 .byte 68,15,89,21,117,50,0,0 // mulps 0x3275(%rip),%xmm10 # 5180 <_sk_callback_sse2+0x5a5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040029604 .byte 15,92,196 // subps %xmm4,%xmm0
bungeman6f9f2592017-05-10 13:50:12 -040029605 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040029606 .byte 15,88,196 // addps %xmm4,%xmm0
29607 .byte 15,92,205 // subps %xmm5,%xmm1
bungeman6f9f2592017-05-10 13:50:12 -040029608 .byte 65,15,89,201 // mulps %xmm9,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040029609 .byte 15,88,205 // addps %xmm5,%xmm1
29610 .byte 15,92,214 // subps %xmm6,%xmm2
bungeman6f9f2592017-05-10 13:50:12 -040029611 .byte 65,15,89,210 // mulps %xmm10,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029612 .byte 15,88,214 // addps %xmm6,%xmm2
bungeman6f9f2592017-05-10 13:50:12 -040029613 .byte 15,92,223 // subps %xmm7,%xmm3
29614 .byte 68,15,89,195 // mulps %xmm3,%xmm8
29615 .byte 68,15,88,199 // addps %xmm7,%xmm8
29616 .byte 68,15,89,203 // mulps %xmm3,%xmm9
29617 .byte 68,15,88,207 // addps %xmm7,%xmm9
29618 .byte 65,15,89,218 // mulps %xmm10,%xmm3
29619 .byte 15,88,223 // addps %xmm7,%xmm3
29620 .byte 68,15,95,203 // maxps %xmm3,%xmm9
29621 .byte 69,15,95,193 // maxps %xmm9,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040029622 .byte 72,173 // lods %ds:(%rsi),%rax
bungeman6f9f2592017-05-10 13:50:12 -040029623 .byte 65,15,40,216 // movaps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040029624 .byte 255,224 // jmpq *%rax
29625
Mike Klein7c4af542017-03-29 18:21:14 -040029626HIDDEN _sk_load_tables_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040029627.globl _sk_load_tables_sse2
Mike Klein86714282017-04-13 17:37:38 -040029628FUNCTION(_sk_load_tables_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040029629_sk_load_tables_sse2:
29630 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040029631 .byte 76,139,0 // mov (%rax),%r8
29632 .byte 76,139,72,8 // mov 0x8(%rax),%r9
29633 .byte 243,69,15,111,12,184 // movdqu (%r8,%rdi,4),%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040029634 .byte 102,68,15,111,5,37,50,0,0 // movdqa 0x3225(%rip),%xmm8 # 5190 <_sk_callback_sse2+0x5b5>
Mike Klein0aa742f2017-04-27 13:36:57 -040029635 .byte 102,65,15,111,193 // movdqa %xmm9,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040029636 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040029637 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
29638 .byte 102,73,15,126,200 // movq %xmm1,%r8
29639 .byte 102,72,15,126,193 // movq %xmm0,%rcx
29640 .byte 68,15,182,209 // movzbl %cl,%r10d
Mike Kleind7e06ae2017-03-29 16:33:06 -040029641 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040029642 .byte 69,15,182,216 // movzbl %r8b,%r11d
29643 .byte 73,193,232,30 // shr $0x1e,%r8
29644 .byte 243,65,15,16,12,9 // movss (%r9,%rcx,1),%xmm1
29645 .byte 243,67,15,16,4,1 // movss (%r9,%r8,1),%xmm0
29646 .byte 15,20,200 // unpcklps %xmm0,%xmm1
29647 .byte 243,67,15,16,4,145 // movss (%r9,%r10,4),%xmm0
29648 .byte 243,67,15,16,20,153 // movss (%r9,%r11,4),%xmm2
29649 .byte 15,20,194 // unpcklps %xmm2,%xmm0
29650 .byte 15,20,193 // unpcklps %xmm1,%xmm0
29651 .byte 76,139,64,16 // mov 0x10(%rax),%r8
29652 .byte 102,65,15,111,201 // movdqa %xmm9,%xmm1
29653 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
29654 .byte 102,65,15,219,200 // pand %xmm8,%xmm1
29655 .byte 102,15,112,209,78 // pshufd $0x4e,%xmm1,%xmm2
29656 .byte 102,73,15,126,209 // movq %xmm2,%r9
29657 .byte 102,72,15,126,201 // movq %xmm1,%rcx
29658 .byte 68,15,182,209 // movzbl %cl,%r10d
29659 .byte 72,193,233,30 // shr $0x1e,%rcx
29660 .byte 69,15,182,217 // movzbl %r9b,%r11d
29661 .byte 73,193,233,30 // shr $0x1e,%r9
29662 .byte 243,65,15,16,20,8 // movss (%r8,%rcx,1),%xmm2
29663 .byte 243,67,15,16,12,8 // movss (%r8,%r9,1),%xmm1
29664 .byte 15,20,209 // unpcklps %xmm1,%xmm2
29665 .byte 243,67,15,16,12,144 // movss (%r8,%r10,4),%xmm1
29666 .byte 243,67,15,16,28,152 // movss (%r8,%r11,4),%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040029667 .byte 15,20,203 // unpcklps %xmm3,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040029668 .byte 15,20,202 // unpcklps %xmm2,%xmm1
29669 .byte 76,139,64,24 // mov 0x18(%rax),%r8
29670 .byte 102,65,15,111,209 // movdqa %xmm9,%xmm2
29671 .byte 102,15,114,210,16 // psrld $0x10,%xmm2
29672 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
29673 .byte 102,15,112,218,78 // pshufd $0x4e,%xmm2,%xmm3
29674 .byte 102,72,15,126,217 // movq %xmm3,%rcx
29675 .byte 102,72,15,126,208 // movq %xmm2,%rax
29676 .byte 68,15,182,200 // movzbl %al,%r9d
Mike Kleind7e06ae2017-03-29 16:33:06 -040029677 .byte 72,193,232,30 // shr $0x1e,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040029678 .byte 68,15,182,209 // movzbl %cl,%r10d
29679 .byte 72,193,233,30 // shr $0x1e,%rcx
29680 .byte 243,69,15,16,4,0 // movss (%r8,%rax,1),%xmm8
29681 .byte 243,65,15,16,20,8 // movss (%r8,%rcx,1),%xmm2
29682 .byte 68,15,20,194 // unpcklps %xmm2,%xmm8
29683 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
29684 .byte 243,67,15,16,28,144 // movss (%r8,%r10,4),%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040029685 .byte 15,20,211 // unpcklps %xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040029686 .byte 65,15,20,208 // unpcklps %xmm8,%xmm2
29687 .byte 102,65,15,114,209,24 // psrld $0x18,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040029688 .byte 65,15,91,217 // cvtdq2ps %xmm9,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040029689 .byte 15,89,29,50,49,0,0 // mulps 0x3132(%rip),%xmm3 # 51a0 <_sk_callback_sse2+0x5c5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040029690 .byte 72,173 // lods %ds:(%rsi),%rax
29691 .byte 255,224 // jmpq *%rax
29692
Mike Kleina3735cd2017-04-17 13:19:05 -040029693HIDDEN _sk_load_tables_u16_be_sse2
29694.globl _sk_load_tables_u16_be_sse2
29695FUNCTION(_sk_load_tables_u16_be_sse2)
29696_sk_load_tables_u16_be_sse2:
29697 .byte 72,173 // lods %ds:(%rsi),%rax
29698 .byte 72,139,8 // mov (%rax),%rcx
29699 .byte 76,139,64,8 // mov 0x8(%rax),%r8
29700 .byte 243,15,111,4,249 // movdqu (%rcx,%rdi,8),%xmm0
29701 .byte 243,15,111,76,249,16 // movdqu 0x10(%rcx,%rdi,8),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040029702 .byte 102,68,15,111,200 // movdqa %xmm0,%xmm9
29703 .byte 102,68,15,97,201 // punpcklwd %xmm1,%xmm9
Mike Kleina3735cd2017-04-17 13:19:05 -040029704 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040029705 .byte 102,65,15,111,201 // movdqa %xmm9,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040029706 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040029707 .byte 102,68,15,105,200 // punpckhwd %xmm0,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040029708 .byte 102,68,15,111,21,5,49,0,0 // movdqa 0x3105(%rip),%xmm10 # 51b0 <_sk_callback_sse2+0x5d5>
Mike Kleina3735cd2017-04-17 13:19:05 -040029709 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040029710 .byte 102,65,15,219,194 // pand %xmm10,%xmm0
29711 .byte 102,69,15,239,192 // pxor %xmm8,%xmm8
Mike Kleina3735cd2017-04-17 13:19:05 -040029712 .byte 102,65,15,97,192 // punpcklwd %xmm8,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040029713 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
29714 .byte 102,72,15,126,217 // movq %xmm3,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040029715 .byte 68,15,182,201 // movzbl %cl,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040029716 .byte 72,193,233,32 // shr $0x20,%rcx
29717 .byte 102,73,15,126,194 // movq %xmm0,%r10
Mike Klein0aa742f2017-04-27 13:36:57 -040029718 .byte 69,15,182,218 // movzbl %r10b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040029719 .byte 73,193,234,30 // shr $0x1e,%r10
29720 .byte 243,67,15,16,28,16 // movss (%r8,%r10,1),%xmm3
29721 .byte 243,65,15,16,4,136 // movss (%r8,%rcx,4),%xmm0
29722 .byte 15,20,216 // unpcklps %xmm0,%xmm3
29723 .byte 243,67,15,16,4,152 // movss (%r8,%r11,4),%xmm0
29724 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
29725 .byte 15,20,194 // unpcklps %xmm2,%xmm0
29726 .byte 15,20,195 // unpcklps %xmm3,%xmm0
29727 .byte 76,139,80,16 // mov 0x10(%rax),%r10
29728 .byte 102,15,115,217,8 // psrldq $0x8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040029729 .byte 102,65,15,219,202 // pand %xmm10,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040029730 .byte 102,65,15,97,200 // punpcklwd %xmm8,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040029731 .byte 102,15,112,209,78 // pshufd $0x4e,%xmm1,%xmm2
29732 .byte 102,73,15,126,208 // movq %xmm2,%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040029733 .byte 69,15,182,200 // movzbl %r8b,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040029734 .byte 73,193,232,32 // shr $0x20,%r8
29735 .byte 102,72,15,126,201 // movq %xmm1,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040029736 .byte 68,15,182,217 // movzbl %cl,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040029737 .byte 72,193,233,30 // shr $0x1e,%rcx
29738 .byte 243,65,15,16,20,10 // movss (%r10,%rcx,1),%xmm2
29739 .byte 243,67,15,16,12,130 // movss (%r10,%r8,4),%xmm1
29740 .byte 15,20,209 // unpcklps %xmm1,%xmm2
29741 .byte 243,67,15,16,12,154 // movss (%r10,%r11,4),%xmm1
29742 .byte 243,67,15,16,28,138 // movss (%r10,%r9,4),%xmm3
29743 .byte 15,20,203 // unpcklps %xmm3,%xmm1
29744 .byte 15,20,202 // unpcklps %xmm2,%xmm1
29745 .byte 76,139,72,24 // mov 0x18(%rax),%r9
Mike Kleina3735cd2017-04-17 13:19:05 -040029746 .byte 102,69,15,219,209 // pand %xmm9,%xmm10
Mike Klein0aa742f2017-04-27 13:36:57 -040029747 .byte 102,69,15,97,208 // punpcklwd %xmm8,%xmm10
Mike Kleina3735cd2017-04-17 13:19:05 -040029748 .byte 102,65,15,112,210,78 // pshufd $0x4e,%xmm10,%xmm2
29749 .byte 102,72,15,126,209 // movq %xmm2,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040029750 .byte 68,15,182,193 // movzbl %cl,%r8d
Mike Kleina3735cd2017-04-17 13:19:05 -040029751 .byte 72,193,233,32 // shr $0x20,%rcx
29752 .byte 102,76,15,126,208 // movq %xmm10,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040029753 .byte 68,15,182,208 // movzbl %al,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040029754 .byte 72,193,232,30 // shr $0x1e,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040029755 .byte 243,69,15,16,20,1 // movss (%r9,%rax,1),%xmm10
Mike Kleina3735cd2017-04-17 13:19:05 -040029756 .byte 243,65,15,16,20,137 // movss (%r9,%rcx,4),%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040029757 .byte 68,15,20,210 // unpcklps %xmm2,%xmm10
Mike Kleina3735cd2017-04-17 13:19:05 -040029758 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
29759 .byte 243,67,15,16,28,129 // movss (%r9,%r8,4),%xmm3
29760 .byte 15,20,211 // unpcklps %xmm3,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040029761 .byte 65,15,20,210 // unpcklps %xmm10,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040029762 .byte 102,65,15,112,217,78 // pshufd $0x4e,%xmm9,%xmm3
29763 .byte 102,68,15,111,203 // movdqa %xmm3,%xmm9
29764 .byte 102,65,15,113,241,8 // psllw $0x8,%xmm9
29765 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
29766 .byte 102,65,15,235,217 // por %xmm9,%xmm3
29767 .byte 102,65,15,97,216 // punpcklwd %xmm8,%xmm3
29768 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040029769 .byte 15,89,29,244,47,0,0 // mulps 0x2ff4(%rip),%xmm3 # 51c0 <_sk_callback_sse2+0x5e5>
Mike Kleina3735cd2017-04-17 13:19:05 -040029770 .byte 72,173 // lods %ds:(%rsi),%rax
29771 .byte 255,224 // jmpq *%rax
29772
29773HIDDEN _sk_load_tables_rgb_u16_be_sse2
29774.globl _sk_load_tables_rgb_u16_be_sse2
29775FUNCTION(_sk_load_tables_rgb_u16_be_sse2)
29776_sk_load_tables_rgb_u16_be_sse2:
29777 .byte 72,173 // lods %ds:(%rsi),%rax
29778 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
29779 .byte 72,139,8 // mov (%rax),%rcx
29780 .byte 76,139,64,8 // mov 0x8(%rax),%r8
29781 .byte 243,70,15,111,28,73 // movdqu (%rcx,%r9,2),%xmm11
29782 .byte 243,66,15,111,68,73,8 // movdqu 0x8(%rcx,%r9,2),%xmm0
29783 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040029784 .byte 102,69,15,111,211 // movdqa %xmm11,%xmm10
29785 .byte 102,65,15,115,218,6 // psrldq $0x6,%xmm10
Mike Kleina3735cd2017-04-17 13:19:05 -040029786 .byte 102,68,15,97,216 // punpcklwd %xmm0,%xmm11
29787 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040029788 .byte 102,68,15,97,208 // punpcklwd %xmm0,%xmm10
Mike Kleina3735cd2017-04-17 13:19:05 -040029789 .byte 102,65,15,111,195 // movdqa %xmm11,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040029790 .byte 102,65,15,97,194 // punpcklwd %xmm10,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040029791 .byte 102,68,15,111,5,180,47,0,0 // movdqa 0x2fb4(%rip),%xmm8 # 51d0 <_sk_callback_sse2+0x5f5>
Mike Klein0aa742f2017-04-27 13:36:57 -040029792 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
29793 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
29794 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
29795 .byte 102,65,15,97,193 // punpcklwd %xmm9,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040029796 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
29797 .byte 102,72,15,126,217 // movq %xmm3,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040029798 .byte 68,15,182,201 // movzbl %cl,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040029799 .byte 72,193,233,32 // shr $0x20,%rcx
29800 .byte 102,73,15,126,194 // movq %xmm0,%r10
Mike Klein0aa742f2017-04-27 13:36:57 -040029801 .byte 69,15,182,218 // movzbl %r10b,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040029802 .byte 73,193,234,30 // shr $0x1e,%r10
29803 .byte 243,67,15,16,28,16 // movss (%r8,%r10,1),%xmm3
29804 .byte 243,65,15,16,4,136 // movss (%r8,%rcx,4),%xmm0
29805 .byte 15,20,216 // unpcklps %xmm0,%xmm3
29806 .byte 243,67,15,16,4,152 // movss (%r8,%r11,4),%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040029807 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
29808 .byte 15,20,194 // unpcklps %xmm2,%xmm0
Mike Kleina3735cd2017-04-17 13:19:05 -040029809 .byte 15,20,195 // unpcklps %xmm3,%xmm0
29810 .byte 76,139,80,16 // mov 0x10(%rax),%r10
Mike Klein0aa742f2017-04-27 13:36:57 -040029811 .byte 102,65,15,219,200 // pand %xmm8,%xmm1
29812 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
29813 .byte 102,15,112,209,78 // pshufd $0x4e,%xmm1,%xmm2
29814 .byte 102,73,15,126,208 // movq %xmm2,%r8
29815 .byte 69,15,182,200 // movzbl %r8b,%r9d
Mike Kleina3735cd2017-04-17 13:19:05 -040029816 .byte 73,193,232,32 // shr $0x20,%r8
Mike Klein0aa742f2017-04-27 13:36:57 -040029817 .byte 102,72,15,126,201 // movq %xmm1,%rcx
29818 .byte 68,15,182,217 // movzbl %cl,%r11d
Mike Kleina3735cd2017-04-17 13:19:05 -040029819 .byte 72,193,233,30 // shr $0x1e,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040029820 .byte 243,65,15,16,20,10 // movss (%r10,%rcx,1),%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040029821 .byte 243,67,15,16,12,130 // movss (%r10,%r8,4),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040029822 .byte 15,20,209 // unpcklps %xmm1,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040029823 .byte 243,67,15,16,12,154 // movss (%r10,%r11,4),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040029824 .byte 243,67,15,16,28,138 // movss (%r10,%r9,4),%xmm3
Mike Kleina3735cd2017-04-17 13:19:05 -040029825 .byte 15,20,203 // unpcklps %xmm3,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040029826 .byte 15,20,202 // unpcklps %xmm2,%xmm1
Mike Kleina3735cd2017-04-17 13:19:05 -040029827 .byte 76,139,72,24 // mov 0x18(%rax),%r9
Mike Klein0aa742f2017-04-27 13:36:57 -040029828 .byte 102,69,15,105,218 // punpckhwd %xmm10,%xmm11
29829 .byte 102,69,15,219,216 // pand %xmm8,%xmm11
29830 .byte 102,69,15,97,217 // punpcklwd %xmm9,%xmm11
Mike Kleina3735cd2017-04-17 13:19:05 -040029831 .byte 102,65,15,112,211,78 // pshufd $0x4e,%xmm11,%xmm2
29832 .byte 102,72,15,126,209 // movq %xmm2,%rcx
Mike Klein0aa742f2017-04-27 13:36:57 -040029833 .byte 68,15,182,193 // movzbl %cl,%r8d
Mike Kleina3735cd2017-04-17 13:19:05 -040029834 .byte 72,193,233,32 // shr $0x20,%rcx
29835 .byte 102,76,15,126,216 // movq %xmm11,%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040029836 .byte 68,15,182,208 // movzbl %al,%r10d
Mike Kleina3735cd2017-04-17 13:19:05 -040029837 .byte 72,193,232,30 // shr $0x1e,%rax
29838 .byte 243,69,15,16,4,1 // movss (%r9,%rax,1),%xmm8
29839 .byte 243,65,15,16,20,137 // movss (%r9,%rcx,4),%xmm2
29840 .byte 68,15,20,194 // unpcklps %xmm2,%xmm8
29841 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
29842 .byte 243,67,15,16,28,129 // movss (%r9,%r8,4),%xmm3
29843 .byte 15,20,211 // unpcklps %xmm3,%xmm2
29844 .byte 65,15,20,208 // unpcklps %xmm8,%xmm2
Mike Kleina3735cd2017-04-17 13:19:05 -040029845 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040029846 .byte 15,40,29,195,46,0,0 // movaps 0x2ec3(%rip),%xmm3 # 51e0 <_sk_callback_sse2+0x605>
Mike Kleina3735cd2017-04-17 13:19:05 -040029847 .byte 255,224 // jmpq *%rax
29848
Mike Klein40de6da2017-04-07 13:09:29 -040029849HIDDEN _sk_byte_tables_sse2
29850.globl _sk_byte_tables_sse2
Mike Klein86714282017-04-13 17:37:38 -040029851FUNCTION(_sk_byte_tables_sse2)
Mike Klein40de6da2017-04-07 13:09:29 -040029852_sk_byte_tables_sse2:
29853 .byte 65,86 // push %r14
29854 .byte 83 // push %rbx
29855 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040029856 .byte 68,15,40,5,196,46,0,0 // movaps 0x2ec4(%rip),%xmm8 # 51f0 <_sk_callback_sse2+0x615>
Mike Klein40de6da2017-04-07 13:09:29 -040029857 .byte 65,15,89,192 // mulps %xmm8,%xmm0
29858 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
29859 .byte 102,72,15,126,193 // movq %xmm0,%rcx
29860 .byte 65,137,200 // mov %ecx,%r8d
29861 .byte 72,193,233,32 // shr $0x20,%rcx
29862 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
29863 .byte 102,73,15,126,193 // movq %xmm0,%r9
29864 .byte 69,137,202 // mov %r9d,%r10d
29865 .byte 77,137,203 // mov %r9,%r11
29866 .byte 73,193,235,32 // shr $0x20,%r11
29867 .byte 76,139,48 // mov (%rax),%r14
29868 .byte 76,139,72,8 // mov 0x8(%rax),%r9
29869 .byte 71,15,182,20,22 // movzbl (%r14,%r10,1),%r10d
29870 .byte 67,15,182,28,30 // movzbl (%r14,%r11,1),%ebx
29871 .byte 193,227,8 // shl $0x8,%ebx
29872 .byte 68,9,211 // or %r10d,%ebx
29873 .byte 71,15,182,4,6 // movzbl (%r14,%r8,1),%r8d
29874 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
29875 .byte 193,225,8 // shl $0x8,%ecx
29876 .byte 68,9,193 // or %r8d,%ecx
29877 .byte 102,15,196,193,0 // pinsrw $0x0,%ecx,%xmm0
29878 .byte 102,15,196,195,1 // pinsrw $0x1,%ebx,%xmm0
29879 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
29880 .byte 102,65,15,96,193 // punpcklbw %xmm9,%xmm0
29881 .byte 102,65,15,97,193 // punpcklwd %xmm9,%xmm0
29882 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040029883 .byte 68,15,40,21,97,46,0,0 // movaps 0x2e61(%rip),%xmm10 # 5200 <_sk_callback_sse2+0x625>
Mike Klein40de6da2017-04-07 13:09:29 -040029884 .byte 65,15,89,194 // mulps %xmm10,%xmm0
29885 .byte 65,15,89,200 // mulps %xmm8,%xmm1
29886 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
29887 .byte 102,72,15,126,201 // movq %xmm1,%rcx
29888 .byte 65,137,200 // mov %ecx,%r8d
29889 .byte 72,193,233,32 // shr $0x20,%rcx
29890 .byte 102,15,112,201,78 // pshufd $0x4e,%xmm1,%xmm1
29891 .byte 102,72,15,126,203 // movq %xmm1,%rbx
29892 .byte 65,137,218 // mov %ebx,%r10d
29893 .byte 72,193,235,32 // shr $0x20,%rbx
29894 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
29895 .byte 65,15,182,28,25 // movzbl (%r9,%rbx,1),%ebx
29896 .byte 193,227,8 // shl $0x8,%ebx
29897 .byte 68,9,211 // or %r10d,%ebx
29898 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
29899 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
29900 .byte 193,225,8 // shl $0x8,%ecx
29901 .byte 68,9,193 // or %r8d,%ecx
29902 .byte 102,15,196,201,0 // pinsrw $0x0,%ecx,%xmm1
29903 .byte 102,15,196,203,1 // pinsrw $0x1,%ebx,%xmm1
29904 .byte 102,65,15,96,201 // punpcklbw %xmm9,%xmm1
29905 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
29906 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
29907 .byte 65,15,89,202 // mulps %xmm10,%xmm1
29908 .byte 76,139,72,16 // mov 0x10(%rax),%r9
29909 .byte 65,15,89,208 // mulps %xmm8,%xmm2
29910 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
29911 .byte 102,72,15,126,211 // movq %xmm2,%rbx
29912 .byte 65,137,216 // mov %ebx,%r8d
29913 .byte 72,193,235,32 // shr $0x20,%rbx
29914 .byte 102,15,112,210,78 // pshufd $0x4e,%xmm2,%xmm2
29915 .byte 102,72,15,126,209 // movq %xmm2,%rcx
29916 .byte 65,137,202 // mov %ecx,%r10d
29917 .byte 72,193,233,32 // shr $0x20,%rcx
29918 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
29919 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
29920 .byte 193,225,8 // shl $0x8,%ecx
29921 .byte 68,9,209 // or %r10d,%ecx
29922 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
29923 .byte 65,15,182,28,25 // movzbl (%r9,%rbx,1),%ebx
29924 .byte 193,227,8 // shl $0x8,%ebx
29925 .byte 68,9,195 // or %r8d,%ebx
29926 .byte 102,15,196,211,0 // pinsrw $0x0,%ebx,%xmm2
29927 .byte 102,15,196,209,1 // pinsrw $0x1,%ecx,%xmm2
29928 .byte 102,65,15,96,209 // punpcklbw %xmm9,%xmm2
29929 .byte 102,65,15,97,209 // punpcklwd %xmm9,%xmm2
29930 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
29931 .byte 65,15,89,210 // mulps %xmm10,%xmm2
29932 .byte 72,139,64,24 // mov 0x18(%rax),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040029933 .byte 65,15,89,216 // mulps %xmm8,%xmm3
29934 .byte 102,15,91,219 // cvtps2dq %xmm3,%xmm3
Mike Klein40de6da2017-04-07 13:09:29 -040029935 .byte 102,72,15,126,217 // movq %xmm3,%rcx
29936 .byte 65,137,200 // mov %ecx,%r8d
29937 .byte 72,193,233,32 // shr $0x20,%rcx
29938 .byte 102,15,112,219,78 // pshufd $0x4e,%xmm3,%xmm3
29939 .byte 102,72,15,126,219 // movq %xmm3,%rbx
29940 .byte 65,137,217 // mov %ebx,%r9d
29941 .byte 72,193,235,32 // shr $0x20,%rbx
29942 .byte 70,15,182,12,8 // movzbl (%rax,%r9,1),%r9d
29943 .byte 15,182,28,24 // movzbl (%rax,%rbx,1),%ebx
29944 .byte 193,227,8 // shl $0x8,%ebx
29945 .byte 68,9,203 // or %r9d,%ebx
29946 .byte 70,15,182,4,0 // movzbl (%rax,%r8,1),%r8d
29947 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
29948 .byte 193,224,8 // shl $0x8,%eax
29949 .byte 68,9,192 // or %r8d,%eax
29950 .byte 102,15,196,216,0 // pinsrw $0x0,%eax,%xmm3
29951 .byte 102,15,196,219,1 // pinsrw $0x1,%ebx,%xmm3
29952 .byte 102,65,15,96,217 // punpcklbw %xmm9,%xmm3
29953 .byte 102,65,15,97,217 // punpcklwd %xmm9,%xmm3
29954 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
29955 .byte 65,15,89,218 // mulps %xmm10,%xmm3
29956 .byte 72,173 // lods %ds:(%rsi),%rax
29957 .byte 91 // pop %rbx
29958 .byte 65,94 // pop %r14
29959 .byte 255,224 // jmpq *%rax
29960
29961HIDDEN _sk_byte_tables_rgb_sse2
29962.globl _sk_byte_tables_rgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040029963FUNCTION(_sk_byte_tables_rgb_sse2)
Mike Klein40de6da2017-04-07 13:09:29 -040029964_sk_byte_tables_rgb_sse2:
29965 .byte 65,86 // push %r14
29966 .byte 83 // push %rbx
29967 .byte 72,173 // lods %ds:(%rsi),%rax
29968 .byte 139,72,24 // mov 0x18(%rax),%ecx
29969 .byte 255,201 // dec %ecx
29970 .byte 102,68,15,110,193 // movd %ecx,%xmm8
29971 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
29972 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
29973 .byte 65,15,89,192 // mulps %xmm8,%xmm0
29974 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
29975 .byte 102,72,15,126,193 // movq %xmm0,%rcx
29976 .byte 65,137,200 // mov %ecx,%r8d
29977 .byte 72,193,233,32 // shr $0x20,%rcx
29978 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
29979 .byte 102,73,15,126,193 // movq %xmm0,%r9
29980 .byte 69,137,202 // mov %r9d,%r10d
29981 .byte 77,137,203 // mov %r9,%r11
29982 .byte 73,193,235,32 // shr $0x20,%r11
29983 .byte 76,139,48 // mov (%rax),%r14
29984 .byte 76,139,72,8 // mov 0x8(%rax),%r9
29985 .byte 71,15,182,20,22 // movzbl (%r14,%r10,1),%r10d
29986 .byte 67,15,182,28,30 // movzbl (%r14,%r11,1),%ebx
29987 .byte 193,227,8 // shl $0x8,%ebx
29988 .byte 68,9,211 // or %r10d,%ebx
29989 .byte 71,15,182,4,6 // movzbl (%r14,%r8,1),%r8d
29990 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
29991 .byte 193,225,8 // shl $0x8,%ecx
29992 .byte 68,9,193 // or %r8d,%ecx
29993 .byte 102,15,196,193,0 // pinsrw $0x0,%ecx,%xmm0
29994 .byte 102,15,196,195,1 // pinsrw $0x1,%ebx,%xmm0
29995 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
29996 .byte 102,65,15,96,193 // punpcklbw %xmm9,%xmm0
29997 .byte 102,65,15,97,193 // punpcklwd %xmm9,%xmm0
29998 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040029999 .byte 68,15,40,21,180,44,0,0 // movaps 0x2cb4(%rip),%xmm10 # 5210 <_sk_callback_sse2+0x635>
Mike Klein40de6da2017-04-07 13:09:29 -040030000 .byte 65,15,89,194 // mulps %xmm10,%xmm0
30001 .byte 65,15,89,200 // mulps %xmm8,%xmm1
30002 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
30003 .byte 102,72,15,126,201 // movq %xmm1,%rcx
30004 .byte 65,137,200 // mov %ecx,%r8d
30005 .byte 72,193,233,32 // shr $0x20,%rcx
30006 .byte 102,15,112,201,78 // pshufd $0x4e,%xmm1,%xmm1
30007 .byte 102,72,15,126,203 // movq %xmm1,%rbx
30008 .byte 65,137,218 // mov %ebx,%r10d
30009 .byte 72,193,235,32 // shr $0x20,%rbx
30010 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
30011 .byte 65,15,182,28,25 // movzbl (%r9,%rbx,1),%ebx
30012 .byte 193,227,8 // shl $0x8,%ebx
30013 .byte 68,9,211 // or %r10d,%ebx
30014 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
30015 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
30016 .byte 193,225,8 // shl $0x8,%ecx
30017 .byte 68,9,193 // or %r8d,%ecx
30018 .byte 102,15,196,201,0 // pinsrw $0x0,%ecx,%xmm1
30019 .byte 102,15,196,203,1 // pinsrw $0x1,%ebx,%xmm1
30020 .byte 102,65,15,96,201 // punpcklbw %xmm9,%xmm1
30021 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
30022 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
30023 .byte 65,15,89,202 // mulps %xmm10,%xmm1
30024 .byte 72,139,64,16 // mov 0x10(%rax),%rax
30025 .byte 65,15,89,208 // mulps %xmm8,%xmm2
30026 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
30027 .byte 102,72,15,126,209 // movq %xmm2,%rcx
30028 .byte 65,137,200 // mov %ecx,%r8d
30029 .byte 72,193,233,32 // shr $0x20,%rcx
30030 .byte 102,15,112,210,78 // pshufd $0x4e,%xmm2,%xmm2
30031 .byte 102,72,15,126,211 // movq %xmm2,%rbx
30032 .byte 65,137,217 // mov %ebx,%r9d
30033 .byte 72,193,235,32 // shr $0x20,%rbx
30034 .byte 70,15,182,12,8 // movzbl (%rax,%r9,1),%r9d
30035 .byte 15,182,28,24 // movzbl (%rax,%rbx,1),%ebx
30036 .byte 193,227,8 // shl $0x8,%ebx
30037 .byte 68,9,203 // or %r9d,%ebx
30038 .byte 70,15,182,4,0 // movzbl (%rax,%r8,1),%r8d
30039 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
30040 .byte 193,224,8 // shl $0x8,%eax
30041 .byte 68,9,192 // or %r8d,%eax
30042 .byte 102,15,196,208,0 // pinsrw $0x0,%eax,%xmm2
30043 .byte 102,15,196,211,1 // pinsrw $0x1,%ebx,%xmm2
30044 .byte 102,65,15,96,209 // punpcklbw %xmm9,%xmm2
30045 .byte 102,65,15,97,209 // punpcklwd %xmm9,%xmm2
30046 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
30047 .byte 65,15,89,210 // mulps %xmm10,%xmm2
30048 .byte 72,173 // lods %ds:(%rsi),%rax
30049 .byte 91 // pop %rbx
30050 .byte 65,94 // pop %r14
30051 .byte 255,224 // jmpq *%rax
30052
Mike Kleinc7d9c0b2017-04-17 14:43:59 -040030053HIDDEN _sk_table_r_sse2
30054.globl _sk_table_r_sse2
30055FUNCTION(_sk_table_r_sse2)
30056_sk_table_r_sse2:
30057 .byte 72,173 // lods %ds:(%rsi),%rax
30058 .byte 76,139,8 // mov (%rax),%r9
30059 .byte 139,64,8 // mov 0x8(%rax),%eax
30060 .byte 255,200 // dec %eax
30061 .byte 102,68,15,110,192 // movd %eax,%xmm8
30062 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
30063 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
30064 .byte 68,15,89,192 // mulps %xmm0,%xmm8
30065 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
30066 .byte 102,65,15,112,192,78 // pshufd $0x4e,%xmm8,%xmm0
30067 .byte 102,72,15,126,192 // movq %xmm0,%rax
30068 .byte 65,137,192 // mov %eax,%r8d
30069 .byte 72,193,232,32 // shr $0x20,%rax
30070 .byte 102,76,15,126,193 // movq %xmm8,%rcx
30071 .byte 65,137,202 // mov %ecx,%r10d
30072 .byte 72,193,233,32 // shr $0x20,%rcx
30073 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
30074 .byte 243,65,15,16,4,129 // movss (%r9,%rax,4),%xmm0
30075 .byte 68,15,20,192 // unpcklps %xmm0,%xmm8
30076 .byte 243,67,15,16,4,145 // movss (%r9,%r10,4),%xmm0
30077 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
30078 .byte 65,15,20,193 // unpcklps %xmm9,%xmm0
30079 .byte 65,15,20,192 // unpcklps %xmm8,%xmm0
30080 .byte 72,173 // lods %ds:(%rsi),%rax
30081 .byte 255,224 // jmpq *%rax
30082
30083HIDDEN _sk_table_g_sse2
30084.globl _sk_table_g_sse2
30085FUNCTION(_sk_table_g_sse2)
30086_sk_table_g_sse2:
30087 .byte 72,173 // lods %ds:(%rsi),%rax
30088 .byte 76,139,8 // mov (%rax),%r9
30089 .byte 139,64,8 // mov 0x8(%rax),%eax
30090 .byte 255,200 // dec %eax
30091 .byte 102,68,15,110,192 // movd %eax,%xmm8
30092 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
30093 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
30094 .byte 68,15,89,193 // mulps %xmm1,%xmm8
30095 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
30096 .byte 102,65,15,112,200,78 // pshufd $0x4e,%xmm8,%xmm1
30097 .byte 102,72,15,126,200 // movq %xmm1,%rax
30098 .byte 65,137,192 // mov %eax,%r8d
30099 .byte 72,193,232,32 // shr $0x20,%rax
30100 .byte 102,76,15,126,193 // movq %xmm8,%rcx
30101 .byte 65,137,202 // mov %ecx,%r10d
30102 .byte 72,193,233,32 // shr $0x20,%rcx
30103 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
30104 .byte 243,65,15,16,12,129 // movss (%r9,%rax,4),%xmm1
30105 .byte 68,15,20,193 // unpcklps %xmm1,%xmm8
30106 .byte 243,67,15,16,12,145 // movss (%r9,%r10,4),%xmm1
30107 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
30108 .byte 65,15,20,201 // unpcklps %xmm9,%xmm1
30109 .byte 65,15,20,200 // unpcklps %xmm8,%xmm1
30110 .byte 72,173 // lods %ds:(%rsi),%rax
30111 .byte 255,224 // jmpq *%rax
30112
30113HIDDEN _sk_table_b_sse2
30114.globl _sk_table_b_sse2
30115FUNCTION(_sk_table_b_sse2)
30116_sk_table_b_sse2:
30117 .byte 72,173 // lods %ds:(%rsi),%rax
30118 .byte 76,139,8 // mov (%rax),%r9
30119 .byte 139,64,8 // mov 0x8(%rax),%eax
30120 .byte 255,200 // dec %eax
30121 .byte 102,68,15,110,192 // movd %eax,%xmm8
30122 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
30123 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
30124 .byte 68,15,89,194 // mulps %xmm2,%xmm8
30125 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
30126 .byte 102,65,15,112,208,78 // pshufd $0x4e,%xmm8,%xmm2
30127 .byte 102,72,15,126,208 // movq %xmm2,%rax
30128 .byte 65,137,192 // mov %eax,%r8d
30129 .byte 72,193,232,32 // shr $0x20,%rax
30130 .byte 102,76,15,126,193 // movq %xmm8,%rcx
30131 .byte 65,137,202 // mov %ecx,%r10d
30132 .byte 72,193,233,32 // shr $0x20,%rcx
30133 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
30134 .byte 243,65,15,16,20,129 // movss (%r9,%rax,4),%xmm2
30135 .byte 68,15,20,194 // unpcklps %xmm2,%xmm8
30136 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
30137 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
30138 .byte 65,15,20,209 // unpcklps %xmm9,%xmm2
30139 .byte 65,15,20,208 // unpcklps %xmm8,%xmm2
30140 .byte 72,173 // lods %ds:(%rsi),%rax
30141 .byte 255,224 // jmpq *%rax
30142
30143HIDDEN _sk_table_a_sse2
30144.globl _sk_table_a_sse2
30145FUNCTION(_sk_table_a_sse2)
30146_sk_table_a_sse2:
30147 .byte 72,173 // lods %ds:(%rsi),%rax
30148 .byte 76,139,8 // mov (%rax),%r9
30149 .byte 139,64,8 // mov 0x8(%rax),%eax
30150 .byte 255,200 // dec %eax
30151 .byte 102,68,15,110,192 // movd %eax,%xmm8
30152 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
30153 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
30154 .byte 68,15,89,195 // mulps %xmm3,%xmm8
30155 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
30156 .byte 102,65,15,112,216,78 // pshufd $0x4e,%xmm8,%xmm3
30157 .byte 102,72,15,126,216 // movq %xmm3,%rax
30158 .byte 65,137,192 // mov %eax,%r8d
30159 .byte 72,193,232,32 // shr $0x20,%rax
30160 .byte 102,76,15,126,193 // movq %xmm8,%rcx
30161 .byte 65,137,202 // mov %ecx,%r10d
30162 .byte 72,193,233,32 // shr $0x20,%rcx
30163 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
30164 .byte 243,65,15,16,28,129 // movss (%r9,%rax,4),%xmm3
30165 .byte 68,15,20,195 // unpcklps %xmm3,%xmm8
30166 .byte 243,67,15,16,28,145 // movss (%r9,%r10,4),%xmm3
30167 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
30168 .byte 65,15,20,217 // unpcklps %xmm9,%xmm3
30169 .byte 65,15,20,216 // unpcklps %xmm8,%xmm3
30170 .byte 72,173 // lods %ds:(%rsi),%rax
30171 .byte 255,224 // jmpq *%rax
30172
Mike Klein44375172017-04-17 19:32:05 -040030173HIDDEN _sk_parametric_r_sse2
30174.globl _sk_parametric_r_sse2
30175FUNCTION(_sk_parametric_r_sse2)
30176_sk_parametric_r_sse2:
30177 .byte 72,173 // lods %ds:(%rsi),%rax
30178 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
30179 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
30180 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
30181 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
30182 .byte 68,15,89,192 // mulps %xmm0,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040030183 .byte 243,68,15,16,80,4 // movss 0x4(%rax),%xmm10
30184 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
30185 .byte 68,15,89,208 // mulps %xmm0,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040030186 .byte 65,15,194,193,2 // cmpleps %xmm9,%xmm0
30187 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
30188 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
30189 .byte 69,15,88,193 // addps %xmm9,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040030190 .byte 243,68,15,16,24 // movss (%rax),%xmm11
30191 .byte 243,68,15,16,72,8 // movss 0x8(%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040030192 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040030193 .byte 69,15,88,209 // addps %xmm9,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040030194 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040030195 .byte 69,15,91,202 // cvtdq2ps %xmm10,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030196 .byte 68,15,89,13,243,41,0,0 // mulps 0x29f3(%rip),%xmm9 # 5220 <_sk_callback_sse2+0x645>
30197 .byte 68,15,84,21,251,41,0,0 // andps 0x29fb(%rip),%xmm10 # 5230 <_sk_callback_sse2+0x655>
30198 .byte 68,15,86,21,3,42,0,0 // orps 0x2a03(%rip),%xmm10 # 5240 <_sk_callback_sse2+0x665>
30199 .byte 68,15,88,13,11,42,0,0 // addps 0x2a0b(%rip),%xmm9 # 5250 <_sk_callback_sse2+0x675>
30200 .byte 68,15,40,37,19,42,0,0 // movaps 0x2a13(%rip),%xmm12 # 5260 <_sk_callback_sse2+0x685>
Mike Kleinda164342017-04-19 14:33:58 -040030201 .byte 69,15,89,226 // mulps %xmm10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040030202 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030203 .byte 68,15,88,21,19,42,0,0 // addps 0x2a13(%rip),%xmm10 # 5270 <_sk_callback_sse2+0x695>
30204 .byte 68,15,40,37,27,42,0,0 // movaps 0x2a1b(%rip),%xmm12 # 5280 <_sk_callback_sse2+0x6a5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040030205 .byte 69,15,94,226 // divps %xmm10,%xmm12
30206 .byte 69,15,92,204 // subps %xmm12,%xmm9
30207 .byte 69,15,89,203 // mulps %xmm11,%xmm9
30208 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040030209 .byte 69,15,91,226 // cvtdq2ps %xmm10,%xmm12
30210 .byte 69,15,40,233 // movaps %xmm9,%xmm13
30211 .byte 69,15,194,236,1 // cmpltps %xmm12,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030212 .byte 68,15,40,21,5,42,0,0 // movaps 0x2a05(%rip),%xmm10 # 5290 <_sk_callback_sse2+0x6b5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030213 .byte 69,15,84,234 // andps %xmm10,%xmm13
30214 .byte 69,15,87,219 // xorps %xmm11,%xmm11
30215 .byte 69,15,92,229 // subps %xmm13,%xmm12
30216 .byte 69,15,40,233 // movaps %xmm9,%xmm13
30217 .byte 69,15,92,236 // subps %xmm12,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030218 .byte 68,15,88,13,249,41,0,0 // addps 0x29f9(%rip),%xmm9 # 52a0 <_sk_callback_sse2+0x6c5>
30219 .byte 68,15,40,37,1,42,0,0 // movaps 0x2a01(%rip),%xmm12 # 52b0 <_sk_callback_sse2+0x6d5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030220 .byte 69,15,89,229 // mulps %xmm13,%xmm12
30221 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030222 .byte 68,15,40,37,1,42,0,0 // movaps 0x2a01(%rip),%xmm12 # 52c0 <_sk_callback_sse2+0x6e5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030223 .byte 69,15,92,229 // subps %xmm13,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040030224 .byte 68,15,40,45,5,42,0,0 // movaps 0x2a05(%rip),%xmm13 # 52d0 <_sk_callback_sse2+0x6f5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030225 .byte 69,15,94,236 // divps %xmm12,%xmm13
30226 .byte 69,15,88,233 // addps %xmm9,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030227 .byte 68,15,89,45,5,42,0,0 // mulps 0x2a05(%rip),%xmm13 # 52e0 <_sk_callback_sse2+0x705>
Mike Kleinfe560a82017-05-01 12:56:35 -040030228 .byte 102,69,15,91,205 // cvtps2dq %xmm13,%xmm9
30229 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
30230 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040030231 .byte 69,15,88,225 // addps %xmm9,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040030232 .byte 68,15,84,192 // andps %xmm0,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040030233 .byte 65,15,85,196 // andnps %xmm12,%xmm0
Mike Klein44375172017-04-17 19:32:05 -040030234 .byte 65,15,86,192 // orps %xmm8,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040030235 .byte 65,15,95,195 // maxps %xmm11,%xmm0
30236 .byte 65,15,93,194 // minps %xmm10,%xmm0
Mike Klein44375172017-04-17 19:32:05 -040030237 .byte 72,173 // lods %ds:(%rsi),%rax
30238 .byte 255,224 // jmpq *%rax
30239
30240HIDDEN _sk_parametric_g_sse2
30241.globl _sk_parametric_g_sse2
30242FUNCTION(_sk_parametric_g_sse2)
30243_sk_parametric_g_sse2:
30244 .byte 72,173 // lods %ds:(%rsi),%rax
30245 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
30246 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
30247 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
30248 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
30249 .byte 68,15,89,193 // mulps %xmm1,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040030250 .byte 243,68,15,16,80,4 // movss 0x4(%rax),%xmm10
30251 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
30252 .byte 68,15,89,209 // mulps %xmm1,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040030253 .byte 65,15,194,201,2 // cmpleps %xmm9,%xmm1
30254 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
30255 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
30256 .byte 69,15,88,193 // addps %xmm9,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040030257 .byte 243,68,15,16,24 // movss (%rax),%xmm11
30258 .byte 243,68,15,16,72,8 // movss 0x8(%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040030259 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040030260 .byte 69,15,88,209 // addps %xmm9,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040030261 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040030262 .byte 69,15,91,202 // cvtdq2ps %xmm10,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030263 .byte 68,15,89,13,133,41,0,0 // mulps 0x2985(%rip),%xmm9 # 52f0 <_sk_callback_sse2+0x715>
30264 .byte 68,15,84,21,141,41,0,0 // andps 0x298d(%rip),%xmm10 # 5300 <_sk_callback_sse2+0x725>
30265 .byte 68,15,86,21,149,41,0,0 // orps 0x2995(%rip),%xmm10 # 5310 <_sk_callback_sse2+0x735>
30266 .byte 68,15,88,13,157,41,0,0 // addps 0x299d(%rip),%xmm9 # 5320 <_sk_callback_sse2+0x745>
30267 .byte 68,15,40,37,165,41,0,0 // movaps 0x29a5(%rip),%xmm12 # 5330 <_sk_callback_sse2+0x755>
Mike Kleinda164342017-04-19 14:33:58 -040030268 .byte 69,15,89,226 // mulps %xmm10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040030269 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030270 .byte 68,15,88,21,165,41,0,0 // addps 0x29a5(%rip),%xmm10 # 5340 <_sk_callback_sse2+0x765>
30271 .byte 68,15,40,37,173,41,0,0 // movaps 0x29ad(%rip),%xmm12 # 5350 <_sk_callback_sse2+0x775>
Mike Kleinb4bbc642017-04-27 08:59:55 -040030272 .byte 69,15,94,226 // divps %xmm10,%xmm12
30273 .byte 69,15,92,204 // subps %xmm12,%xmm9
30274 .byte 69,15,89,203 // mulps %xmm11,%xmm9
30275 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040030276 .byte 69,15,91,226 // cvtdq2ps %xmm10,%xmm12
30277 .byte 69,15,40,233 // movaps %xmm9,%xmm13
30278 .byte 69,15,194,236,1 // cmpltps %xmm12,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030279 .byte 68,15,40,21,151,41,0,0 // movaps 0x2997(%rip),%xmm10 # 5360 <_sk_callback_sse2+0x785>
Mike Kleinfe560a82017-05-01 12:56:35 -040030280 .byte 69,15,84,234 // andps %xmm10,%xmm13
30281 .byte 69,15,87,219 // xorps %xmm11,%xmm11
30282 .byte 69,15,92,229 // subps %xmm13,%xmm12
30283 .byte 69,15,40,233 // movaps %xmm9,%xmm13
30284 .byte 69,15,92,236 // subps %xmm12,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030285 .byte 68,15,88,13,139,41,0,0 // addps 0x298b(%rip),%xmm9 # 5370 <_sk_callback_sse2+0x795>
30286 .byte 68,15,40,37,147,41,0,0 // movaps 0x2993(%rip),%xmm12 # 5380 <_sk_callback_sse2+0x7a5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030287 .byte 69,15,89,229 // mulps %xmm13,%xmm12
30288 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030289 .byte 68,15,40,37,147,41,0,0 // movaps 0x2993(%rip),%xmm12 # 5390 <_sk_callback_sse2+0x7b5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030290 .byte 69,15,92,229 // subps %xmm13,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040030291 .byte 68,15,40,45,151,41,0,0 // movaps 0x2997(%rip),%xmm13 # 53a0 <_sk_callback_sse2+0x7c5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030292 .byte 69,15,94,236 // divps %xmm12,%xmm13
30293 .byte 69,15,88,233 // addps %xmm9,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030294 .byte 68,15,89,45,151,41,0,0 // mulps 0x2997(%rip),%xmm13 # 53b0 <_sk_callback_sse2+0x7d5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030295 .byte 102,69,15,91,205 // cvtps2dq %xmm13,%xmm9
30296 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
30297 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040030298 .byte 69,15,88,225 // addps %xmm9,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040030299 .byte 68,15,84,193 // andps %xmm1,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040030300 .byte 65,15,85,204 // andnps %xmm12,%xmm1
Mike Klein44375172017-04-17 19:32:05 -040030301 .byte 65,15,86,200 // orps %xmm8,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040030302 .byte 65,15,95,203 // maxps %xmm11,%xmm1
30303 .byte 65,15,93,202 // minps %xmm10,%xmm1
Mike Klein44375172017-04-17 19:32:05 -040030304 .byte 72,173 // lods %ds:(%rsi),%rax
30305 .byte 255,224 // jmpq *%rax
30306
30307HIDDEN _sk_parametric_b_sse2
30308.globl _sk_parametric_b_sse2
30309FUNCTION(_sk_parametric_b_sse2)
30310_sk_parametric_b_sse2:
30311 .byte 72,173 // lods %ds:(%rsi),%rax
30312 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
30313 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
30314 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
30315 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
30316 .byte 68,15,89,194 // mulps %xmm2,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040030317 .byte 243,68,15,16,80,4 // movss 0x4(%rax),%xmm10
30318 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
30319 .byte 68,15,89,210 // mulps %xmm2,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040030320 .byte 65,15,194,209,2 // cmpleps %xmm9,%xmm2
30321 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
30322 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
30323 .byte 69,15,88,193 // addps %xmm9,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040030324 .byte 243,68,15,16,24 // movss (%rax),%xmm11
30325 .byte 243,68,15,16,72,8 // movss 0x8(%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040030326 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040030327 .byte 69,15,88,209 // addps %xmm9,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040030328 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040030329 .byte 69,15,91,202 // cvtdq2ps %xmm10,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030330 .byte 68,15,89,13,23,41,0,0 // mulps 0x2917(%rip),%xmm9 # 53c0 <_sk_callback_sse2+0x7e5>
30331 .byte 68,15,84,21,31,41,0,0 // andps 0x291f(%rip),%xmm10 # 53d0 <_sk_callback_sse2+0x7f5>
30332 .byte 68,15,86,21,39,41,0,0 // orps 0x2927(%rip),%xmm10 # 53e0 <_sk_callback_sse2+0x805>
30333 .byte 68,15,88,13,47,41,0,0 // addps 0x292f(%rip),%xmm9 # 53f0 <_sk_callback_sse2+0x815>
30334 .byte 68,15,40,37,55,41,0,0 // movaps 0x2937(%rip),%xmm12 # 5400 <_sk_callback_sse2+0x825>
Mike Kleinda164342017-04-19 14:33:58 -040030335 .byte 69,15,89,226 // mulps %xmm10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040030336 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030337 .byte 68,15,88,21,55,41,0,0 // addps 0x2937(%rip),%xmm10 # 5410 <_sk_callback_sse2+0x835>
30338 .byte 68,15,40,37,63,41,0,0 // movaps 0x293f(%rip),%xmm12 # 5420 <_sk_callback_sse2+0x845>
Mike Kleinb4bbc642017-04-27 08:59:55 -040030339 .byte 69,15,94,226 // divps %xmm10,%xmm12
30340 .byte 69,15,92,204 // subps %xmm12,%xmm9
30341 .byte 69,15,89,203 // mulps %xmm11,%xmm9
30342 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040030343 .byte 69,15,91,226 // cvtdq2ps %xmm10,%xmm12
30344 .byte 69,15,40,233 // movaps %xmm9,%xmm13
30345 .byte 69,15,194,236,1 // cmpltps %xmm12,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030346 .byte 68,15,40,21,41,41,0,0 // movaps 0x2929(%rip),%xmm10 # 5430 <_sk_callback_sse2+0x855>
Mike Kleinfe560a82017-05-01 12:56:35 -040030347 .byte 69,15,84,234 // andps %xmm10,%xmm13
30348 .byte 69,15,87,219 // xorps %xmm11,%xmm11
30349 .byte 69,15,92,229 // subps %xmm13,%xmm12
30350 .byte 69,15,40,233 // movaps %xmm9,%xmm13
30351 .byte 69,15,92,236 // subps %xmm12,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030352 .byte 68,15,88,13,29,41,0,0 // addps 0x291d(%rip),%xmm9 # 5440 <_sk_callback_sse2+0x865>
30353 .byte 68,15,40,37,37,41,0,0 // movaps 0x2925(%rip),%xmm12 # 5450 <_sk_callback_sse2+0x875>
Mike Kleinfe560a82017-05-01 12:56:35 -040030354 .byte 69,15,89,229 // mulps %xmm13,%xmm12
30355 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030356 .byte 68,15,40,37,37,41,0,0 // movaps 0x2925(%rip),%xmm12 # 5460 <_sk_callback_sse2+0x885>
Mike Kleinfe560a82017-05-01 12:56:35 -040030357 .byte 69,15,92,229 // subps %xmm13,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040030358 .byte 68,15,40,45,41,41,0,0 // movaps 0x2929(%rip),%xmm13 # 5470 <_sk_callback_sse2+0x895>
Mike Kleinfe560a82017-05-01 12:56:35 -040030359 .byte 69,15,94,236 // divps %xmm12,%xmm13
30360 .byte 69,15,88,233 // addps %xmm9,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030361 .byte 68,15,89,45,41,41,0,0 // mulps 0x2929(%rip),%xmm13 # 5480 <_sk_callback_sse2+0x8a5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030362 .byte 102,69,15,91,205 // cvtps2dq %xmm13,%xmm9
30363 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
30364 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040030365 .byte 69,15,88,225 // addps %xmm9,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040030366 .byte 68,15,84,194 // andps %xmm2,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040030367 .byte 65,15,85,212 // andnps %xmm12,%xmm2
Mike Klein44375172017-04-17 19:32:05 -040030368 .byte 65,15,86,208 // orps %xmm8,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040030369 .byte 65,15,95,211 // maxps %xmm11,%xmm2
30370 .byte 65,15,93,210 // minps %xmm10,%xmm2
Mike Klein44375172017-04-17 19:32:05 -040030371 .byte 72,173 // lods %ds:(%rsi),%rax
30372 .byte 255,224 // jmpq *%rax
30373
30374HIDDEN _sk_parametric_a_sse2
30375.globl _sk_parametric_a_sse2
30376FUNCTION(_sk_parametric_a_sse2)
30377_sk_parametric_a_sse2:
30378 .byte 72,173 // lods %ds:(%rsi),%rax
30379 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
30380 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
30381 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
30382 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
30383 .byte 68,15,89,195 // mulps %xmm3,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040030384 .byte 243,68,15,16,80,4 // movss 0x4(%rax),%xmm10
30385 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
30386 .byte 68,15,89,211 // mulps %xmm3,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040030387 .byte 65,15,194,217,2 // cmpleps %xmm9,%xmm3
30388 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
30389 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
30390 .byte 69,15,88,193 // addps %xmm9,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040030391 .byte 243,68,15,16,24 // movss (%rax),%xmm11
30392 .byte 243,68,15,16,72,8 // movss 0x8(%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040030393 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040030394 .byte 69,15,88,209 // addps %xmm9,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040030395 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinb4bbc642017-04-27 08:59:55 -040030396 .byte 69,15,91,202 // cvtdq2ps %xmm10,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030397 .byte 68,15,89,13,169,40,0,0 // mulps 0x28a9(%rip),%xmm9 # 5490 <_sk_callback_sse2+0x8b5>
30398 .byte 68,15,84,21,177,40,0,0 // andps 0x28b1(%rip),%xmm10 # 54a0 <_sk_callback_sse2+0x8c5>
30399 .byte 68,15,86,21,185,40,0,0 // orps 0x28b9(%rip),%xmm10 # 54b0 <_sk_callback_sse2+0x8d5>
30400 .byte 68,15,88,13,193,40,0,0 // addps 0x28c1(%rip),%xmm9 # 54c0 <_sk_callback_sse2+0x8e5>
30401 .byte 68,15,40,37,201,40,0,0 // movaps 0x28c9(%rip),%xmm12 # 54d0 <_sk_callback_sse2+0x8f5>
Mike Kleinda164342017-04-19 14:33:58 -040030402 .byte 69,15,89,226 // mulps %xmm10,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040030403 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030404 .byte 68,15,88,21,201,40,0,0 // addps 0x28c9(%rip),%xmm10 # 54e0 <_sk_callback_sse2+0x905>
30405 .byte 68,15,40,37,209,40,0,0 // movaps 0x28d1(%rip),%xmm12 # 54f0 <_sk_callback_sse2+0x915>
Mike Kleinb4bbc642017-04-27 08:59:55 -040030406 .byte 69,15,94,226 // divps %xmm10,%xmm12
30407 .byte 69,15,92,204 // subps %xmm12,%xmm9
30408 .byte 69,15,89,203 // mulps %xmm11,%xmm9
30409 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040030410 .byte 69,15,91,226 // cvtdq2ps %xmm10,%xmm12
30411 .byte 69,15,40,233 // movaps %xmm9,%xmm13
30412 .byte 69,15,194,236,1 // cmpltps %xmm12,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030413 .byte 68,15,40,21,187,40,0,0 // movaps 0x28bb(%rip),%xmm10 # 5500 <_sk_callback_sse2+0x925>
Mike Kleinfe560a82017-05-01 12:56:35 -040030414 .byte 69,15,84,234 // andps %xmm10,%xmm13
30415 .byte 69,15,87,219 // xorps %xmm11,%xmm11
30416 .byte 69,15,92,229 // subps %xmm13,%xmm12
30417 .byte 69,15,40,233 // movaps %xmm9,%xmm13
30418 .byte 69,15,92,236 // subps %xmm12,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030419 .byte 68,15,88,13,175,40,0,0 // addps 0x28af(%rip),%xmm9 # 5510 <_sk_callback_sse2+0x935>
30420 .byte 68,15,40,37,183,40,0,0 // movaps 0x28b7(%rip),%xmm12 # 5520 <_sk_callback_sse2+0x945>
Mike Kleinfe560a82017-05-01 12:56:35 -040030421 .byte 69,15,89,229 // mulps %xmm13,%xmm12
30422 .byte 69,15,92,204 // subps %xmm12,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030423 .byte 68,15,40,37,183,40,0,0 // movaps 0x28b7(%rip),%xmm12 # 5530 <_sk_callback_sse2+0x955>
Mike Kleinfe560a82017-05-01 12:56:35 -040030424 .byte 69,15,92,229 // subps %xmm13,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040030425 .byte 68,15,40,45,187,40,0,0 // movaps 0x28bb(%rip),%xmm13 # 5540 <_sk_callback_sse2+0x965>
Mike Kleinfe560a82017-05-01 12:56:35 -040030426 .byte 69,15,94,236 // divps %xmm12,%xmm13
30427 .byte 69,15,88,233 // addps %xmm9,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040030428 .byte 68,15,89,45,187,40,0,0 // mulps 0x28bb(%rip),%xmm13 # 5550 <_sk_callback_sse2+0x975>
Mike Kleinfe560a82017-05-01 12:56:35 -040030429 .byte 102,69,15,91,205 // cvtps2dq %xmm13,%xmm9
30430 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
30431 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinb4bbc642017-04-27 08:59:55 -040030432 .byte 69,15,88,225 // addps %xmm9,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040030433 .byte 68,15,84,195 // andps %xmm3,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040030434 .byte 65,15,85,220 // andnps %xmm12,%xmm3
Mike Klein44375172017-04-17 19:32:05 -040030435 .byte 65,15,86,216 // orps %xmm8,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040030436 .byte 65,15,95,219 // maxps %xmm11,%xmm3
30437 .byte 65,15,93,218 // minps %xmm10,%xmm3
Mike Klein44375172017-04-17 19:32:05 -040030438 .byte 72,173 // lods %ds:(%rsi),%rax
30439 .byte 255,224 // jmpq *%rax
30440
Mike Klein4e3e9f82017-04-20 11:04:29 -040030441HIDDEN _sk_lab_to_xyz_sse2
30442.globl _sk_lab_to_xyz_sse2
30443FUNCTION(_sk_lab_to_xyz_sse2)
30444_sk_lab_to_xyz_sse2:
Mike Klein8ca33562017-05-23 08:07:43 -040030445 .byte 15,89,5,152,40,0,0 // mulps 0x2898(%rip),%xmm0 # 5560 <_sk_callback_sse2+0x985>
30446 .byte 68,15,40,5,160,40,0,0 // movaps 0x28a0(%rip),%xmm8 # 5570 <_sk_callback_sse2+0x995>
Mike Klein4e3e9f82017-04-20 11:04:29 -040030447 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040030448 .byte 68,15,40,13,164,40,0,0 // movaps 0x28a4(%rip),%xmm9 # 5580 <_sk_callback_sse2+0x9a5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030449 .byte 65,15,88,201 // addps %xmm9,%xmm1
Mike Klein4e3e9f82017-04-20 11:04:29 -040030450 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040030451 .byte 65,15,88,209 // addps %xmm9,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040030452 .byte 15,88,5,161,40,0,0 // addps 0x28a1(%rip),%xmm0 # 5590 <_sk_callback_sse2+0x9b5>
30453 .byte 15,89,5,170,40,0,0 // mulps 0x28aa(%rip),%xmm0 # 55a0 <_sk_callback_sse2+0x9c5>
30454 .byte 15,89,13,179,40,0,0 // mulps 0x28b3(%rip),%xmm1 # 55b0 <_sk_callback_sse2+0x9d5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030455 .byte 15,88,200 // addps %xmm0,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040030456 .byte 15,89,21,185,40,0,0 // mulps 0x28b9(%rip),%xmm2 # 55c0 <_sk_callback_sse2+0x9e5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030457 .byte 68,15,40,200 // movaps %xmm0,%xmm9
30458 .byte 68,15,92,202 // subps %xmm2,%xmm9
30459 .byte 68,15,40,225 // movaps %xmm1,%xmm12
30460 .byte 69,15,89,228 // mulps %xmm12,%xmm12
30461 .byte 68,15,89,225 // mulps %xmm1,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040030462 .byte 15,40,21,174,40,0,0 // movaps 0x28ae(%rip),%xmm2 # 55d0 <_sk_callback_sse2+0x9f5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030463 .byte 68,15,40,194 // movaps %xmm2,%xmm8
30464 .byte 69,15,194,196,1 // cmpltps %xmm12,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040030465 .byte 68,15,40,21,173,40,0,0 // movaps 0x28ad(%rip),%xmm10 # 55e0 <_sk_callback_sse2+0xa05>
Mike Kleinfe560a82017-05-01 12:56:35 -040030466 .byte 65,15,88,202 // addps %xmm10,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040030467 .byte 68,15,40,29,177,40,0,0 // movaps 0x28b1(%rip),%xmm11 # 55f0 <_sk_callback_sse2+0xa15>
Mike Kleinfe560a82017-05-01 12:56:35 -040030468 .byte 65,15,89,203 // mulps %xmm11,%xmm1
30469 .byte 69,15,84,224 // andps %xmm8,%xmm12
30470 .byte 68,15,85,193 // andnps %xmm1,%xmm8
30471 .byte 69,15,86,196 // orps %xmm12,%xmm8
30472 .byte 68,15,40,224 // movaps %xmm0,%xmm12
30473 .byte 69,15,89,228 // mulps %xmm12,%xmm12
30474 .byte 68,15,89,224 // mulps %xmm0,%xmm12
30475 .byte 15,40,202 // movaps %xmm2,%xmm1
30476 .byte 65,15,194,204,1 // cmpltps %xmm12,%xmm1
30477 .byte 65,15,88,194 // addps %xmm10,%xmm0
30478 .byte 65,15,89,195 // mulps %xmm11,%xmm0
30479 .byte 68,15,84,225 // andps %xmm1,%xmm12
30480 .byte 15,85,200 // andnps %xmm0,%xmm1
30481 .byte 65,15,86,204 // orps %xmm12,%xmm1
30482 .byte 65,15,40,193 // movaps %xmm9,%xmm0
30483 .byte 15,89,192 // mulps %xmm0,%xmm0
30484 .byte 65,15,89,193 // mulps %xmm9,%xmm0
30485 .byte 15,194,208,1 // cmpltps %xmm0,%xmm2
30486 .byte 69,15,88,202 // addps %xmm10,%xmm9
30487 .byte 69,15,89,203 // mulps %xmm11,%xmm9
30488 .byte 15,84,194 // andps %xmm2,%xmm0
30489 .byte 65,15,85,209 // andnps %xmm9,%xmm2
30490 .byte 15,86,208 // orps %xmm0,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040030491 .byte 68,15,89,5,97,40,0,0 // mulps 0x2861(%rip),%xmm8 # 5600 <_sk_callback_sse2+0xa25>
30492 .byte 15,89,21,106,40,0,0 // mulps 0x286a(%rip),%xmm2 # 5610 <_sk_callback_sse2+0xa35>
Mike Klein4e3e9f82017-04-20 11:04:29 -040030493 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinfe560a82017-05-01 12:56:35 -040030494 .byte 65,15,40,192 // movaps %xmm8,%xmm0
Mike Klein4e3e9f82017-04-20 11:04:29 -040030495 .byte 255,224 // jmpq *%rax
30496
Mike Klein7c4af542017-03-29 18:21:14 -040030497HIDDEN _sk_load_a8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040030498.globl _sk_load_a8_sse2
Mike Klein86714282017-04-13 17:37:38 -040030499FUNCTION(_sk_load_a8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040030500_sk_load_a8_sse2:
30501 .byte 72,173 // lods %ds:(%rsi),%rax
30502 .byte 72,139,0 // mov (%rax),%rax
30503 .byte 102,15,110,4,56 // movd (%rax,%rdi,1),%xmm0
30504 .byte 102,15,239,201 // pxor %xmm1,%xmm1
30505 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
30506 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040030507 .byte 15,91,216 // cvtdq2ps %xmm0,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040030508 .byte 15,89,29,82,40,0,0 // mulps 0x2852(%rip),%xmm3 # 5620 <_sk_callback_sse2+0xa45>
Mike Kleind7e06ae2017-03-29 16:33:06 -040030509 .byte 72,173 // lods %ds:(%rsi),%rax
30510 .byte 15,87,192 // xorps %xmm0,%xmm0
30511 .byte 102,15,239,201 // pxor %xmm1,%xmm1
30512 .byte 15,87,210 // xorps %xmm2,%xmm2
30513 .byte 255,224 // jmpq *%rax
30514
Mike Klein21bd3e42017-04-06 16:32:29 -040030515HIDDEN _sk_gather_a8_sse2
30516.globl _sk_gather_a8_sse2
Mike Klein86714282017-04-13 17:37:38 -040030517FUNCTION(_sk_gather_a8_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040030518_sk_gather_a8_sse2:
30519 .byte 72,173 // lods %ds:(%rsi),%rax
30520 .byte 76,139,8 // mov (%rax),%r9
30521 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
30522 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
30523 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
30524 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
30525 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
30526 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
30527 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
30528 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
30529 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
30530 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
30531 .byte 102,15,254,193 // paddd %xmm1,%xmm0
30532 .byte 102,72,15,126,192 // movq %xmm0,%rax
30533 .byte 65,137,192 // mov %eax,%r8d
30534 .byte 72,193,232,32 // shr $0x20,%rax
30535 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
30536 .byte 102,72,15,126,193 // movq %xmm0,%rcx
30537 .byte 65,137,202 // mov %ecx,%r10d
30538 .byte 72,193,233,32 // shr $0x20,%rcx
30539 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
30540 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
30541 .byte 193,225,8 // shl $0x8,%ecx
30542 .byte 68,9,209 // or %r10d,%ecx
30543 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
30544 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
30545 .byte 193,224,8 // shl $0x8,%eax
30546 .byte 68,9,192 // or %r8d,%eax
30547 .byte 102,15,196,192,0 // pinsrw $0x0,%eax,%xmm0
30548 .byte 102,15,196,193,1 // pinsrw $0x1,%ecx,%xmm0
30549 .byte 102,15,239,201 // pxor %xmm1,%xmm1
30550 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
30551 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040030552 .byte 15,91,216 // cvtdq2ps %xmm0,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040030553 .byte 15,89,29,193,39,0,0 // mulps 0x27c1(%rip),%xmm3 # 5630 <_sk_callback_sse2+0xa55>
Mike Klein21bd3e42017-04-06 16:32:29 -040030554 .byte 72,173 // lods %ds:(%rsi),%rax
30555 .byte 15,87,192 // xorps %xmm0,%xmm0
30556 .byte 102,15,239,201 // pxor %xmm1,%xmm1
30557 .byte 102,15,239,210 // pxor %xmm2,%xmm2
30558 .byte 255,224 // jmpq *%rax
30559
Mike Klein7c4af542017-03-29 18:21:14 -040030560HIDDEN _sk_store_a8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040030561.globl _sk_store_a8_sse2
Mike Klein86714282017-04-13 17:37:38 -040030562FUNCTION(_sk_store_a8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040030563_sk_store_a8_sse2:
30564 .byte 72,173 // lods %ds:(%rsi),%rax
30565 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040030566 .byte 68,15,40,5,181,39,0,0 // movaps 0x27b5(%rip),%xmm8 # 5640 <_sk_callback_sse2+0xa65>
Mike Kleind7e06ae2017-03-29 16:33:06 -040030567 .byte 68,15,89,195 // mulps %xmm3,%xmm8
30568 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
30569 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
30570 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
30571 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
30572 .byte 102,69,15,103,192 // packuswb %xmm8,%xmm8
30573 .byte 102,68,15,126,4,56 // movd %xmm8,(%rax,%rdi,1)
30574 .byte 72,173 // lods %ds:(%rsi),%rax
30575 .byte 255,224 // jmpq *%rax
30576
Mike Kleinf809fef2017-03-31 13:52:45 -040030577HIDDEN _sk_load_g8_sse2
30578.globl _sk_load_g8_sse2
Mike Klein86714282017-04-13 17:37:38 -040030579FUNCTION(_sk_load_g8_sse2)
Mike Kleinf809fef2017-03-31 13:52:45 -040030580_sk_load_g8_sse2:
30581 .byte 72,173 // lods %ds:(%rsi),%rax
30582 .byte 72,139,0 // mov (%rax),%rax
30583 .byte 102,15,110,4,56 // movd (%rax,%rdi,1),%xmm0
30584 .byte 102,15,239,201 // pxor %xmm1,%xmm1
30585 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
30586 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040030587 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040030588 .byte 15,89,5,124,39,0,0 // mulps 0x277c(%rip),%xmm0 # 5650 <_sk_callback_sse2+0xa75>
Mike Kleinf809fef2017-03-31 13:52:45 -040030589 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040030590 .byte 15,40,29,131,39,0,0 // movaps 0x2783(%rip),%xmm3 # 5660 <_sk_callback_sse2+0xa85>
Mike Kleinf809fef2017-03-31 13:52:45 -040030591 .byte 15,40,200 // movaps %xmm0,%xmm1
30592 .byte 15,40,208 // movaps %xmm0,%xmm2
30593 .byte 255,224 // jmpq *%rax
30594
Mike Klein21bd3e42017-04-06 16:32:29 -040030595HIDDEN _sk_gather_g8_sse2
30596.globl _sk_gather_g8_sse2
Mike Klein86714282017-04-13 17:37:38 -040030597FUNCTION(_sk_gather_g8_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040030598_sk_gather_g8_sse2:
30599 .byte 72,173 // lods %ds:(%rsi),%rax
30600 .byte 76,139,8 // mov (%rax),%r9
30601 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
30602 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
30603 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
30604 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
30605 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
30606 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
30607 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
30608 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
30609 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
30610 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
30611 .byte 102,15,254,193 // paddd %xmm1,%xmm0
30612 .byte 102,72,15,126,192 // movq %xmm0,%rax
30613 .byte 65,137,192 // mov %eax,%r8d
30614 .byte 72,193,232,32 // shr $0x20,%rax
30615 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
30616 .byte 102,72,15,126,193 // movq %xmm0,%rcx
30617 .byte 65,137,202 // mov %ecx,%r10d
30618 .byte 72,193,233,32 // shr $0x20,%rcx
30619 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
30620 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
30621 .byte 193,225,8 // shl $0x8,%ecx
30622 .byte 68,9,209 // or %r10d,%ecx
30623 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
30624 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
30625 .byte 193,224,8 // shl $0x8,%eax
30626 .byte 68,9,192 // or %r8d,%eax
30627 .byte 102,15,196,192,0 // pinsrw $0x0,%eax,%xmm0
30628 .byte 102,15,196,193,1 // pinsrw $0x1,%ecx,%xmm0
30629 .byte 102,15,239,201 // pxor %xmm1,%xmm1
30630 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
30631 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040030632 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040030633 .byte 15,89,5,248,38,0,0 // mulps 0x26f8(%rip),%xmm0 # 5670 <_sk_callback_sse2+0xa95>
Mike Klein21bd3e42017-04-06 16:32:29 -040030634 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040030635 .byte 15,40,29,255,38,0,0 // movaps 0x26ff(%rip),%xmm3 # 5680 <_sk_callback_sse2+0xaa5>
Mike Klein21bd3e42017-04-06 16:32:29 -040030636 .byte 15,40,200 // movaps %xmm0,%xmm1
30637 .byte 15,40,208 // movaps %xmm0,%xmm2
30638 .byte 255,224 // jmpq *%rax
30639
Mike Klein7d3d8722017-04-06 17:53:18 -040030640HIDDEN _sk_gather_i8_sse2
30641.globl _sk_gather_i8_sse2
Mike Klein86714282017-04-13 17:37:38 -040030642FUNCTION(_sk_gather_i8_sse2)
Mike Klein7d3d8722017-04-06 17:53:18 -040030643_sk_gather_i8_sse2:
30644 .byte 72,173 // lods %ds:(%rsi),%rax
30645 .byte 73,137,192 // mov %rax,%r8
30646 .byte 77,133,192 // test %r8,%r8
Mike Klein5d7f2b52017-05-20 13:21:59 -040030647 .byte 116,5 // je 2f98 <_sk_gather_i8_sse2+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -040030648 .byte 76,137,192 // mov %r8,%rax
Mike Klein5d7f2b52017-05-20 13:21:59 -040030649 .byte 235,2 // jmp 2f9a <_sk_gather_i8_sse2+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -040030650 .byte 72,173 // lods %ds:(%rsi),%rax
30651 .byte 76,139,16 // mov (%rax),%r10
30652 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
30653 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
30654 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
30655 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
30656 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
30657 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
30658 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
30659 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
30660 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
30661 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
30662 .byte 102,15,254,193 // paddd %xmm1,%xmm0
30663 .byte 102,72,15,126,192 // movq %xmm0,%rax
30664 .byte 65,137,193 // mov %eax,%r9d
30665 .byte 72,193,232,32 // shr $0x20,%rax
30666 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
30667 .byte 102,72,15,126,193 // movq %xmm0,%rcx
30668 .byte 65,137,203 // mov %ecx,%r11d
30669 .byte 72,193,233,32 // shr $0x20,%rcx
30670 .byte 71,15,182,28,26 // movzbl (%r10,%r11,1),%r11d
30671 .byte 65,15,182,12,10 // movzbl (%r10,%rcx,1),%ecx
30672 .byte 193,225,8 // shl $0x8,%ecx
30673 .byte 68,9,217 // or %r11d,%ecx
30674 .byte 71,15,182,12,10 // movzbl (%r10,%r9,1),%r9d
30675 .byte 65,15,182,4,2 // movzbl (%r10,%rax,1),%eax
30676 .byte 193,224,8 // shl $0x8,%eax
30677 .byte 68,9,200 // or %r9d,%eax
30678 .byte 102,15,196,192,0 // pinsrw $0x0,%eax,%xmm0
30679 .byte 102,15,196,193,1 // pinsrw $0x1,%ecx,%xmm0
30680 .byte 102,15,239,201 // pxor %xmm1,%xmm1
30681 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
30682 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
30683 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
30684 .byte 102,72,15,126,200 // movq %xmm1,%rax
30685 .byte 68,15,182,200 // movzbl %al,%r9d
30686 .byte 72,193,232,32 // shr $0x20,%rax
30687 .byte 102,72,15,126,193 // movq %xmm0,%rcx
30688 .byte 77,139,64,8 // mov 0x8(%r8),%r8
30689 .byte 68,15,182,209 // movzbl %cl,%r10d
30690 .byte 72,193,233,30 // shr $0x1e,%rcx
30691 .byte 102,65,15,110,4,8 // movd (%r8,%rcx,1),%xmm0
30692 .byte 102,65,15,110,12,128 // movd (%r8,%rax,4),%xmm1
30693 .byte 102,15,98,193 // punpckldq %xmm1,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040030694 .byte 102,71,15,110,12,144 // movd (%r8,%r10,4),%xmm9
Mike Klein7d3d8722017-04-06 17:53:18 -040030695 .byte 102,67,15,110,12,136 // movd (%r8,%r9,4),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040030696 .byte 102,68,15,98,201 // punpckldq %xmm1,%xmm9
30697 .byte 102,68,15,98,200 // punpckldq %xmm0,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030698 .byte 102,15,111,21,30,38,0,0 // movdqa 0x261e(%rip),%xmm2 # 5690 <_sk_callback_sse2+0xab5>
Mike Klein0aa742f2017-04-27 13:36:57 -040030699 .byte 102,65,15,111,193 // movdqa %xmm9,%xmm0
30700 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Klein7d3d8722017-04-06 17:53:18 -040030701 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040030702 .byte 68,15,40,5,26,38,0,0 // movaps 0x261a(%rip),%xmm8 # 56a0 <_sk_callback_sse2+0xac5>
Mike Klein7d3d8722017-04-06 17:53:18 -040030703 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040030704 .byte 102,65,15,111,201 // movdqa %xmm9,%xmm1
30705 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
30706 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Klein7d3d8722017-04-06 17:53:18 -040030707 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
30708 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040030709 .byte 102,65,15,111,217 // movdqa %xmm9,%xmm3
30710 .byte 102,15,114,211,16 // psrld $0x10,%xmm3
30711 .byte 102,15,219,218 // pand %xmm2,%xmm3
30712 .byte 15,91,211 // cvtdq2ps %xmm3,%xmm2
Mike Klein7d3d8722017-04-06 17:53:18 -040030713 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040030714 .byte 102,65,15,114,209,24 // psrld $0x18,%xmm9
30715 .byte 65,15,91,217 // cvtdq2ps %xmm9,%xmm3
Mike Klein7d3d8722017-04-06 17:53:18 -040030716 .byte 65,15,89,216 // mulps %xmm8,%xmm3
30717 .byte 72,173 // lods %ds:(%rsi),%rax
30718 .byte 255,224 // jmpq *%rax
30719
Mike Klein7c4af542017-03-29 18:21:14 -040030720HIDDEN _sk_load_565_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040030721.globl _sk_load_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040030722FUNCTION(_sk_load_565_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040030723_sk_load_565_sse2:
30724 .byte 72,173 // lods %ds:(%rsi),%rax
30725 .byte 72,139,0 // mov (%rax),%rax
30726 .byte 243,15,126,20,120 // movq (%rax,%rdi,2),%xmm2
30727 .byte 102,15,239,192 // pxor %xmm0,%xmm0
30728 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040030729 .byte 102,15,111,5,208,37,0,0 // movdqa 0x25d0(%rip),%xmm0 # 56b0 <_sk_callback_sse2+0xad5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040030730 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040030731 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040030732 .byte 15,89,5,210,37,0,0 // mulps 0x25d2(%rip),%xmm0 # 56c0 <_sk_callback_sse2+0xae5>
30733 .byte 102,15,111,13,218,37,0,0 // movdqa 0x25da(%rip),%xmm1 # 56d0 <_sk_callback_sse2+0xaf5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040030734 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040030735 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040030736 .byte 15,89,13,220,37,0,0 // mulps 0x25dc(%rip),%xmm1 # 56e0 <_sk_callback_sse2+0xb05>
30737 .byte 102,15,219,21,228,37,0,0 // pand 0x25e4(%rip),%xmm2 # 56f0 <_sk_callback_sse2+0xb15>
Mike Kleinfe560a82017-05-01 12:56:35 -040030738 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040030739 .byte 15,89,21,234,37,0,0 // mulps 0x25ea(%rip),%xmm2 # 5700 <_sk_callback_sse2+0xb25>
Mike Kleind7e06ae2017-03-29 16:33:06 -040030740 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040030741 .byte 15,40,29,241,37,0,0 // movaps 0x25f1(%rip),%xmm3 # 5710 <_sk_callback_sse2+0xb35>
Mike Kleind7e06ae2017-03-29 16:33:06 -040030742 .byte 255,224 // jmpq *%rax
30743
Mike Klein21bd3e42017-04-06 16:32:29 -040030744HIDDEN _sk_gather_565_sse2
30745.globl _sk_gather_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040030746FUNCTION(_sk_gather_565_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040030747_sk_gather_565_sse2:
30748 .byte 72,173 // lods %ds:(%rsi),%rax
30749 .byte 76,139,8 // mov (%rax),%r9
30750 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
30751 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
30752 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
30753 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
30754 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
30755 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
30756 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
30757 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
30758 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
30759 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
30760 .byte 102,15,254,193 // paddd %xmm1,%xmm0
30761 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
30762 .byte 102,72,15,126,200 // movq %xmm1,%rax
30763 .byte 65,137,192 // mov %eax,%r8d
30764 .byte 72,193,232,32 // shr $0x20,%rax
30765 .byte 102,72,15,126,193 // movq %xmm0,%rcx
30766 .byte 65,137,202 // mov %ecx,%r10d
30767 .byte 72,193,233,32 // shr $0x20,%rcx
30768 .byte 102,67,15,196,20,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm2
30769 .byte 102,65,15,196,20,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm2
30770 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
30771 .byte 102,15,196,209,2 // pinsrw $0x2,%ecx,%xmm2
30772 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
30773 .byte 102,15,196,208,3 // pinsrw $0x3,%eax,%xmm2
30774 .byte 102,15,239,192 // pxor %xmm0,%xmm0
30775 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040030776 .byte 102,15,111,5,122,37,0,0 // movdqa 0x257a(%rip),%xmm0 # 5720 <_sk_callback_sse2+0xb45>
Mike Klein21bd3e42017-04-06 16:32:29 -040030777 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040030778 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040030779 .byte 15,89,5,124,37,0,0 // mulps 0x257c(%rip),%xmm0 # 5730 <_sk_callback_sse2+0xb55>
30780 .byte 102,15,111,13,132,37,0,0 // movdqa 0x2584(%rip),%xmm1 # 5740 <_sk_callback_sse2+0xb65>
Mike Klein21bd3e42017-04-06 16:32:29 -040030781 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040030782 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040030783 .byte 15,89,13,134,37,0,0 // mulps 0x2586(%rip),%xmm1 # 5750 <_sk_callback_sse2+0xb75>
30784 .byte 102,15,219,21,142,37,0,0 // pand 0x258e(%rip),%xmm2 # 5760 <_sk_callback_sse2+0xb85>
Mike Kleinfe560a82017-05-01 12:56:35 -040030785 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040030786 .byte 15,89,21,148,37,0,0 // mulps 0x2594(%rip),%xmm2 # 5770 <_sk_callback_sse2+0xb95>
Mike Klein21bd3e42017-04-06 16:32:29 -040030787 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040030788 .byte 15,40,29,155,37,0,0 // movaps 0x259b(%rip),%xmm3 # 5780 <_sk_callback_sse2+0xba5>
Mike Klein21bd3e42017-04-06 16:32:29 -040030789 .byte 255,224 // jmpq *%rax
30790
Mike Klein7c4af542017-03-29 18:21:14 -040030791HIDDEN _sk_store_565_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040030792.globl _sk_store_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040030793FUNCTION(_sk_store_565_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040030794_sk_store_565_sse2:
30795 .byte 72,173 // lods %ds:(%rsi),%rax
30796 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040030797 .byte 68,15,40,5,156,37,0,0 // movaps 0x259c(%rip),%xmm8 # 5790 <_sk_callback_sse2+0xbb5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030798 .byte 68,15,40,200 // movaps %xmm0,%xmm9
30799 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040030800 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
30801 .byte 102,65,15,114,241,11 // pslld $0xb,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030802 .byte 68,15,40,21,145,37,0,0 // movaps 0x2591(%rip),%xmm10 # 57a0 <_sk_callback_sse2+0xbc5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040030803 .byte 68,15,89,209 // mulps %xmm1,%xmm10
30804 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
30805 .byte 102,65,15,114,242,5 // pslld $0x5,%xmm10
30806 .byte 102,69,15,235,209 // por %xmm9,%xmm10
30807 .byte 68,15,89,194 // mulps %xmm2,%xmm8
30808 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
30809 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
30810 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
30811 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
30812 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
30813 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
30814 .byte 72,173 // lods %ds:(%rsi),%rax
30815 .byte 255,224 // jmpq *%rax
30816
Mike Kleinf809fef2017-03-31 13:52:45 -040030817HIDDEN _sk_load_4444_sse2
30818.globl _sk_load_4444_sse2
Mike Klein86714282017-04-13 17:37:38 -040030819FUNCTION(_sk_load_4444_sse2)
Mike Kleinf809fef2017-03-31 13:52:45 -040030820_sk_load_4444_sse2:
30821 .byte 72,173 // lods %ds:(%rsi),%rax
30822 .byte 72,139,0 // mov (%rax),%rax
Mike Klein308e6242017-04-27 13:56:33 -040030823 .byte 243,15,126,28,120 // movq (%rax,%rdi,2),%xmm3
Mike Kleinf809fef2017-03-31 13:52:45 -040030824 .byte 102,15,239,192 // pxor %xmm0,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -040030825 .byte 102,15,97,216 // punpcklwd %xmm0,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040030826 .byte 102,15,111,5,74,37,0,0 // movdqa 0x254a(%rip),%xmm0 # 57b0 <_sk_callback_sse2+0xbd5>
Mike Klein308e6242017-04-27 13:56:33 -040030827 .byte 102,15,219,195 // pand %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040030828 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040030829 .byte 15,89,5,76,37,0,0 // mulps 0x254c(%rip),%xmm0 # 57c0 <_sk_callback_sse2+0xbe5>
30830 .byte 102,15,111,13,84,37,0,0 // movdqa 0x2554(%rip),%xmm1 # 57d0 <_sk_callback_sse2+0xbf5>
Mike Klein308e6242017-04-27 13:56:33 -040030831 .byte 102,15,219,203 // pand %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040030832 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040030833 .byte 15,89,13,86,37,0,0 // mulps 0x2556(%rip),%xmm1 # 57e0 <_sk_callback_sse2+0xc05>
30834 .byte 102,15,111,21,94,37,0,0 // movdqa 0x255e(%rip),%xmm2 # 57f0 <_sk_callback_sse2+0xc15>
Mike Klein308e6242017-04-27 13:56:33 -040030835 .byte 102,15,219,211 // pand %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040030836 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040030837 .byte 15,89,21,96,37,0,0 // mulps 0x2560(%rip),%xmm2 # 5800 <_sk_callback_sse2+0xc25>
30838 .byte 102,15,219,29,104,37,0,0 // pand 0x2568(%rip),%xmm3 # 5810 <_sk_callback_sse2+0xc35>
Mike Kleinfe560a82017-05-01 12:56:35 -040030839 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040030840 .byte 15,89,29,110,37,0,0 // mulps 0x256e(%rip),%xmm3 # 5820 <_sk_callback_sse2+0xc45>
Mike Kleinf809fef2017-03-31 13:52:45 -040030841 .byte 72,173 // lods %ds:(%rsi),%rax
30842 .byte 255,224 // jmpq *%rax
30843
Mike Klein21bd3e42017-04-06 16:32:29 -040030844HIDDEN _sk_gather_4444_sse2
30845.globl _sk_gather_4444_sse2
Mike Klein86714282017-04-13 17:37:38 -040030846FUNCTION(_sk_gather_4444_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040030847_sk_gather_4444_sse2:
30848 .byte 72,173 // lods %ds:(%rsi),%rax
30849 .byte 76,139,8 // mov (%rax),%r9
30850 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
30851 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
30852 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
30853 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
30854 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
30855 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
30856 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
30857 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
30858 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
30859 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
30860 .byte 102,15,254,193 // paddd %xmm1,%xmm0
30861 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
30862 .byte 102,72,15,126,200 // movq %xmm1,%rax
30863 .byte 65,137,192 // mov %eax,%r8d
30864 .byte 72,193,232,32 // shr $0x20,%rax
30865 .byte 102,72,15,126,193 // movq %xmm0,%rcx
30866 .byte 65,137,202 // mov %ecx,%r10d
30867 .byte 72,193,233,32 // shr $0x20,%rcx
Mike Klein308e6242017-04-27 13:56:33 -040030868 .byte 102,67,15,196,28,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm3
30869 .byte 102,65,15,196,28,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm3
Mike Klein21bd3e42017-04-06 16:32:29 -040030870 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
Mike Klein308e6242017-04-27 13:56:33 -040030871 .byte 102,15,196,217,2 // pinsrw $0x2,%ecx,%xmm3
Mike Klein21bd3e42017-04-06 16:32:29 -040030872 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
Mike Klein308e6242017-04-27 13:56:33 -040030873 .byte 102,15,196,216,3 // pinsrw $0x3,%eax,%xmm3
Mike Klein21bd3e42017-04-06 16:32:29 -040030874 .byte 102,15,239,192 // pxor %xmm0,%xmm0
Mike Klein308e6242017-04-27 13:56:33 -040030875 .byte 102,15,97,216 // punpcklwd %xmm0,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040030876 .byte 102,15,111,5,245,36,0,0 // movdqa 0x24f5(%rip),%xmm0 # 5830 <_sk_callback_sse2+0xc55>
Mike Klein308e6242017-04-27 13:56:33 -040030877 .byte 102,15,219,195 // pand %xmm3,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040030878 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040030879 .byte 15,89,5,247,36,0,0 // mulps 0x24f7(%rip),%xmm0 # 5840 <_sk_callback_sse2+0xc65>
30880 .byte 102,15,111,13,255,36,0,0 // movdqa 0x24ff(%rip),%xmm1 # 5850 <_sk_callback_sse2+0xc75>
Mike Klein308e6242017-04-27 13:56:33 -040030881 .byte 102,15,219,203 // pand %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040030882 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040030883 .byte 15,89,13,1,37,0,0 // mulps 0x2501(%rip),%xmm1 # 5860 <_sk_callback_sse2+0xc85>
30884 .byte 102,15,111,21,9,37,0,0 // movdqa 0x2509(%rip),%xmm2 # 5870 <_sk_callback_sse2+0xc95>
Mike Klein308e6242017-04-27 13:56:33 -040030885 .byte 102,15,219,211 // pand %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040030886 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Klein8ca33562017-05-23 08:07:43 -040030887 .byte 15,89,21,11,37,0,0 // mulps 0x250b(%rip),%xmm2 # 5880 <_sk_callback_sse2+0xca5>
30888 .byte 102,15,219,29,19,37,0,0 // pand 0x2513(%rip),%xmm3 # 5890 <_sk_callback_sse2+0xcb5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030889 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040030890 .byte 15,89,29,25,37,0,0 // mulps 0x2519(%rip),%xmm3 # 58a0 <_sk_callback_sse2+0xcc5>
Mike Klein21bd3e42017-04-06 16:32:29 -040030891 .byte 72,173 // lods %ds:(%rsi),%rax
30892 .byte 255,224 // jmpq *%rax
30893
Mike Kleinf809fef2017-03-31 13:52:45 -040030894HIDDEN _sk_store_4444_sse2
30895.globl _sk_store_4444_sse2
Mike Klein86714282017-04-13 17:37:38 -040030896FUNCTION(_sk_store_4444_sse2)
Mike Kleinf809fef2017-03-31 13:52:45 -040030897_sk_store_4444_sse2:
30898 .byte 72,173 // lods %ds:(%rsi),%rax
30899 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040030900 .byte 68,15,40,5,24,37,0,0 // movaps 0x2518(%rip),%xmm8 # 58b0 <_sk_callback_sse2+0xcd5>
Mike Kleinfe560a82017-05-01 12:56:35 -040030901 .byte 68,15,40,200 // movaps %xmm0,%xmm9
30902 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleinf809fef2017-03-31 13:52:45 -040030903 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
30904 .byte 102,65,15,114,241,12 // pslld $0xc,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040030905 .byte 68,15,40,209 // movaps %xmm1,%xmm10
30906 .byte 69,15,89,208 // mulps %xmm8,%xmm10
Mike Kleinf809fef2017-03-31 13:52:45 -040030907 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
30908 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
30909 .byte 102,69,15,235,209 // por %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040030910 .byte 68,15,40,202 // movaps %xmm2,%xmm9
30911 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleinf809fef2017-03-31 13:52:45 -040030912 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
30913 .byte 102,65,15,114,241,4 // pslld $0x4,%xmm9
30914 .byte 68,15,89,195 // mulps %xmm3,%xmm8
30915 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
30916 .byte 102,69,15,86,193 // orpd %xmm9,%xmm8
30917 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
30918 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
30919 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
30920 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
30921 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
30922 .byte 72,173 // lods %ds:(%rsi),%rax
30923 .byte 255,224 // jmpq *%rax
30924
Mike Klein7c4af542017-03-29 18:21:14 -040030925HIDDEN _sk_load_8888_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040030926.globl _sk_load_8888_sse2
Mike Klein86714282017-04-13 17:37:38 -040030927FUNCTION(_sk_load_8888_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040030928_sk_load_8888_sse2:
30929 .byte 72,173 // lods %ds:(%rsi),%rax
30930 .byte 72,139,0 // mov (%rax),%rax
Mike Klein0aa742f2017-04-27 13:36:57 -040030931 .byte 68,15,16,12,184 // movups (%rax,%rdi,4),%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030932 .byte 15,40,21,171,36,0,0 // movaps 0x24ab(%rip),%xmm2 # 58c0 <_sk_callback_sse2+0xce5>
Mike Klein0aa742f2017-04-27 13:36:57 -040030933 .byte 65,15,40,193 // movaps %xmm9,%xmm0
30934 .byte 15,84,194 // andps %xmm2,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040030935 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040030936 .byte 68,15,40,5,169,36,0,0 // movaps 0x24a9(%rip),%xmm8 # 58d0 <_sk_callback_sse2+0xcf5>
Mike Kleind7e06ae2017-03-29 16:33:06 -040030937 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040030938 .byte 65,15,40,201 // movaps %xmm9,%xmm1
30939 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
30940 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040030941 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
30942 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040030943 .byte 65,15,40,217 // movaps %xmm9,%xmm3
30944 .byte 102,15,114,211,16 // psrld $0x10,%xmm3
30945 .byte 102,15,219,218 // pand %xmm2,%xmm3
30946 .byte 15,91,211 // cvtdq2ps %xmm3,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040030947 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040030948 .byte 102,65,15,114,209,24 // psrld $0x18,%xmm9
30949 .byte 65,15,91,217 // cvtdq2ps %xmm9,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040030950 .byte 65,15,89,216 // mulps %xmm8,%xmm3
30951 .byte 72,173 // lods %ds:(%rsi),%rax
30952 .byte 255,224 // jmpq *%rax
30953
Mike Kleindec4ea82017-04-06 15:04:05 -040030954HIDDEN _sk_gather_8888_sse2
30955.globl _sk_gather_8888_sse2
Mike Klein86714282017-04-13 17:37:38 -040030956FUNCTION(_sk_gather_8888_sse2)
Mike Kleindec4ea82017-04-06 15:04:05 -040030957_sk_gather_8888_sse2:
30958 .byte 72,173 // lods %ds:(%rsi),%rax
30959 .byte 76,139,8 // mov (%rax),%r9
30960 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
30961 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
30962 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
30963 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
30964 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
30965 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
30966 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
30967 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
30968 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
30969 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
30970 .byte 102,15,254,193 // paddd %xmm1,%xmm0
30971 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
30972 .byte 102,72,15,126,200 // movq %xmm1,%rax
30973 .byte 65,137,192 // mov %eax,%r8d
30974 .byte 72,193,232,32 // shr $0x20,%rax
30975 .byte 102,72,15,126,193 // movq %xmm0,%rcx
30976 .byte 65,137,202 // mov %ecx,%r10d
30977 .byte 72,193,233,32 // shr $0x20,%rcx
30978 .byte 102,65,15,110,4,137 // movd (%r9,%rcx,4),%xmm0
30979 .byte 102,65,15,110,12,129 // movd (%r9,%rax,4),%xmm1
30980 .byte 102,15,98,193 // punpckldq %xmm1,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040030981 .byte 102,71,15,110,12,145 // movd (%r9,%r10,4),%xmm9
Mike Kleindec4ea82017-04-06 15:04:05 -040030982 .byte 102,67,15,110,12,129 // movd (%r9,%r8,4),%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040030983 .byte 102,68,15,98,201 // punpckldq %xmm1,%xmm9
30984 .byte 102,68,15,98,200 // punpckldq %xmm0,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040030985 .byte 102,15,111,21,250,35,0,0 // movdqa 0x23fa(%rip),%xmm2 # 58e0 <_sk_callback_sse2+0xd05>
Mike Klein0aa742f2017-04-27 13:36:57 -040030986 .byte 102,65,15,111,193 // movdqa %xmm9,%xmm0
30987 .byte 102,15,219,194 // pand %xmm2,%xmm0
Mike Kleindec4ea82017-04-06 15:04:05 -040030988 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040030989 .byte 68,15,40,5,246,35,0,0 // movaps 0x23f6(%rip),%xmm8 # 58f0 <_sk_callback_sse2+0xd15>
Mike Kleindec4ea82017-04-06 15:04:05 -040030990 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Mike Klein0aa742f2017-04-27 13:36:57 -040030991 .byte 102,65,15,111,201 // movdqa %xmm9,%xmm1
30992 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
30993 .byte 102,15,219,202 // pand %xmm2,%xmm1
Mike Kleindec4ea82017-04-06 15:04:05 -040030994 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
30995 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Klein0aa742f2017-04-27 13:36:57 -040030996 .byte 102,65,15,111,217 // movdqa %xmm9,%xmm3
30997 .byte 102,15,114,211,16 // psrld $0x10,%xmm3
30998 .byte 102,15,219,218 // pand %xmm2,%xmm3
30999 .byte 15,91,211 // cvtdq2ps %xmm3,%xmm2
Mike Kleindec4ea82017-04-06 15:04:05 -040031000 .byte 65,15,89,208 // mulps %xmm8,%xmm2
Mike Klein0aa742f2017-04-27 13:36:57 -040031001 .byte 102,65,15,114,209,24 // psrld $0x18,%xmm9
31002 .byte 65,15,91,217 // cvtdq2ps %xmm9,%xmm3
Mike Kleindec4ea82017-04-06 15:04:05 -040031003 .byte 65,15,89,216 // mulps %xmm8,%xmm3
31004 .byte 72,173 // lods %ds:(%rsi),%rax
31005 .byte 255,224 // jmpq *%rax
31006
Mike Klein7c4af542017-03-29 18:21:14 -040031007HIDDEN _sk_store_8888_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031008.globl _sk_store_8888_sse2
Mike Klein86714282017-04-13 17:37:38 -040031009FUNCTION(_sk_store_8888_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031010_sk_store_8888_sse2:
31011 .byte 72,173 // lods %ds:(%rsi),%rax
31012 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040031013 .byte 68,15,40,5,185,35,0,0 // movaps 0x23b9(%rip),%xmm8 # 5900 <_sk_callback_sse2+0xd25>
Mike Kleinfe560a82017-05-01 12:56:35 -040031014 .byte 68,15,40,200 // movaps %xmm0,%xmm9
31015 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040031016 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
Mike Kleinfe560a82017-05-01 12:56:35 -040031017 .byte 68,15,40,209 // movaps %xmm1,%xmm10
31018 .byte 69,15,89,208 // mulps %xmm8,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040031019 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
31020 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
31021 .byte 102,69,15,235,209 // por %xmm9,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040031022 .byte 68,15,40,202 // movaps %xmm2,%xmm9
31023 .byte 69,15,89,200 // mulps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040031024 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
31025 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
31026 .byte 68,15,89,195 // mulps %xmm3,%xmm8
31027 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
31028 .byte 102,65,15,114,240,24 // pslld $0x18,%xmm8
31029 .byte 102,69,15,235,193 // por %xmm9,%xmm8
31030 .byte 102,69,15,235,194 // por %xmm10,%xmm8
31031 .byte 243,68,15,127,4,184 // movdqu %xmm8,(%rax,%rdi,4)
31032 .byte 72,173 // lods %ds:(%rsi),%rax
31033 .byte 255,224 // jmpq *%rax
31034
Mike Klein7c4af542017-03-29 18:21:14 -040031035HIDDEN _sk_load_f16_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031036.globl _sk_load_f16_sse2
Mike Klein86714282017-04-13 17:37:38 -040031037FUNCTION(_sk_load_f16_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031038_sk_load_f16_sse2:
31039 .byte 72,173 // lods %ds:(%rsi),%rax
31040 .byte 72,139,0 // mov (%rax),%rax
31041 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
31042 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
Mike Klein114e6b32017-04-03 22:21:15 -040031043 .byte 102,68,15,111,192 // movdqa %xmm0,%xmm8
31044 .byte 102,68,15,97,193 // punpcklwd %xmm1,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040031045 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040031046 .byte 102,69,15,111,240 // movdqa %xmm8,%xmm14
31047 .byte 102,68,15,97,240 // punpcklwd %xmm0,%xmm14
Mike Klein114e6b32017-04-03 22:21:15 -040031048 .byte 102,68,15,105,192 // punpckhwd %xmm0,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040031049 .byte 102,69,15,239,210 // pxor %xmm10,%xmm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040031050 .byte 102,65,15,111,206 // movdqa %xmm14,%xmm1
31051 .byte 102,65,15,97,202 // punpcklwd %xmm10,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040031052 .byte 102,68,15,111,13,41,35,0,0 // movdqa 0x2329(%rip),%xmm9 # 5910 <_sk_callback_sse2+0xd35>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031053 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
31054 .byte 102,65,15,219,193 // pand %xmm9,%xmm0
31055 .byte 102,15,239,200 // pxor %xmm0,%xmm1
31056 .byte 102,15,114,240,16 // pslld $0x10,%xmm0
31057 .byte 102,68,15,111,233 // movdqa %xmm1,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040031058 .byte 102,65,15,114,245,13 // pslld $0xd,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040031059 .byte 102,68,15,235,232 // por %xmm0,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040031060 .byte 102,68,15,111,29,14,35,0,0 // movdqa 0x230e(%rip),%xmm11 # 5920 <_sk_callback_sse2+0xd45>
Mike Kleind0ce1482017-04-19 17:19:30 -040031061 .byte 102,69,15,254,235 // paddd %xmm11,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040031062 .byte 102,68,15,111,37,16,35,0,0 // movdqa 0x2310(%rip),%xmm12 # 5930 <_sk_callback_sse2+0xd55>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031063 .byte 102,65,15,239,204 // pxor %xmm12,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040031064 .byte 102,15,111,29,19,35,0,0 // movdqa 0x2313(%rip),%xmm3 # 5940 <_sk_callback_sse2+0xd65>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031065 .byte 102,15,111,195 // movdqa %xmm3,%xmm0
31066 .byte 102,15,102,193 // pcmpgtd %xmm1,%xmm0
31067 .byte 102,65,15,223,197 // pandn %xmm13,%xmm0
31068 .byte 102,65,15,115,222,8 // psrldq $0x8,%xmm14
31069 .byte 102,69,15,97,242 // punpcklwd %xmm10,%xmm14
31070 .byte 102,65,15,111,206 // movdqa %xmm14,%xmm1
31071 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
31072 .byte 102,68,15,239,241 // pxor %xmm1,%xmm14
31073 .byte 102,15,114,241,16 // pslld $0x10,%xmm1
31074 .byte 102,65,15,111,214 // movdqa %xmm14,%xmm2
31075 .byte 102,15,114,242,13 // pslld $0xd,%xmm2
31076 .byte 102,15,235,209 // por %xmm1,%xmm2
31077 .byte 102,65,15,254,211 // paddd %xmm11,%xmm2
31078 .byte 102,69,15,239,244 // pxor %xmm12,%xmm14
31079 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
31080 .byte 102,65,15,102,206 // pcmpgtd %xmm14,%xmm1
31081 .byte 102,15,223,202 // pandn %xmm2,%xmm1
31082 .byte 102,69,15,111,232 // movdqa %xmm8,%xmm13
31083 .byte 102,69,15,97,234 // punpcklwd %xmm10,%xmm13
31084 .byte 102,65,15,111,213 // movdqa %xmm13,%xmm2
31085 .byte 102,65,15,219,209 // pand %xmm9,%xmm2
31086 .byte 102,68,15,239,234 // pxor %xmm2,%xmm13
31087 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
31088 .byte 102,69,15,111,245 // movdqa %xmm13,%xmm14
31089 .byte 102,65,15,114,246,13 // pslld $0xd,%xmm14
31090 .byte 102,68,15,235,242 // por %xmm2,%xmm14
31091 .byte 102,69,15,254,243 // paddd %xmm11,%xmm14
31092 .byte 102,69,15,239,236 // pxor %xmm12,%xmm13
31093 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
31094 .byte 102,65,15,102,213 // pcmpgtd %xmm13,%xmm2
31095 .byte 102,65,15,223,214 // pandn %xmm14,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040031096 .byte 102,65,15,115,216,8 // psrldq $0x8,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040031097 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
31098 .byte 102,69,15,219,200 // pand %xmm8,%xmm9
31099 .byte 102,69,15,239,193 // pxor %xmm9,%xmm8
31100 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040031101 .byte 102,69,15,111,208 // movdqa %xmm8,%xmm10
31102 .byte 102,65,15,114,242,13 // pslld $0xd,%xmm10
31103 .byte 102,69,15,235,209 // por %xmm9,%xmm10
31104 .byte 102,69,15,254,211 // paddd %xmm11,%xmm10
31105 .byte 102,69,15,239,196 // pxor %xmm12,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040031106 .byte 102,65,15,102,216 // pcmpgtd %xmm8,%xmm3
Mike Kleinb4bbc642017-04-27 08:59:55 -040031107 .byte 102,65,15,223,218 // pandn %xmm10,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040031108 .byte 72,173 // lods %ds:(%rsi),%rax
31109 .byte 255,224 // jmpq *%rax
31110
Mike Klein5f055f02017-04-06 20:02:11 -040031111HIDDEN _sk_gather_f16_sse2
31112.globl _sk_gather_f16_sse2
Mike Klein86714282017-04-13 17:37:38 -040031113FUNCTION(_sk_gather_f16_sse2)
Mike Klein5f055f02017-04-06 20:02:11 -040031114_sk_gather_f16_sse2:
31115 .byte 72,173 // lods %ds:(%rsi),%rax
31116 .byte 76,139,8 // mov (%rax),%r9
31117 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
31118 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
31119 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
31120 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
31121 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
31122 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
31123 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
31124 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
31125 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
31126 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
31127 .byte 102,15,254,193 // paddd %xmm1,%xmm0
31128 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
31129 .byte 102,72,15,126,200 // movq %xmm1,%rax
31130 .byte 65,137,192 // mov %eax,%r8d
31131 .byte 72,193,232,32 // shr $0x20,%rax
31132 .byte 102,72,15,126,193 // movq %xmm0,%rcx
31133 .byte 65,137,202 // mov %ecx,%r10d
31134 .byte 72,193,233,32 // shr $0x20,%rcx
31135 .byte 243,65,15,126,4,201 // movq (%r9,%rcx,8),%xmm0
31136 .byte 243,67,15,126,12,209 // movq (%r9,%r10,8),%xmm1
31137 .byte 102,15,108,200 // punpcklqdq %xmm0,%xmm1
31138 .byte 243,65,15,126,4,193 // movq (%r9,%rax,8),%xmm0
31139 .byte 243,67,15,126,20,193 // movq (%r9,%r8,8),%xmm2
31140 .byte 102,15,108,208 // punpcklqdq %xmm0,%xmm2
31141 .byte 102,68,15,111,193 // movdqa %xmm1,%xmm8
31142 .byte 102,68,15,97,194 // punpcklwd %xmm2,%xmm8
31143 .byte 102,15,105,202 // punpckhwd %xmm2,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040031144 .byte 102,69,15,111,240 // movdqa %xmm8,%xmm14
31145 .byte 102,68,15,97,241 // punpcklwd %xmm1,%xmm14
Mike Klein5f055f02017-04-06 20:02:11 -040031146 .byte 102,68,15,105,193 // punpckhwd %xmm1,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040031147 .byte 102,69,15,239,210 // pxor %xmm10,%xmm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040031148 .byte 102,65,15,111,206 // movdqa %xmm14,%xmm1
31149 .byte 102,65,15,97,202 // punpcklwd %xmm10,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040031150 .byte 102,68,15,111,13,161,33,0,0 // movdqa 0x21a1(%rip),%xmm9 # 5950 <_sk_callback_sse2+0xd75>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031151 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
31152 .byte 102,65,15,219,193 // pand %xmm9,%xmm0
31153 .byte 102,15,239,200 // pxor %xmm0,%xmm1
31154 .byte 102,15,114,240,16 // pslld $0x10,%xmm0
31155 .byte 102,68,15,111,233 // movdqa %xmm1,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040031156 .byte 102,65,15,114,245,13 // pslld $0xd,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040031157 .byte 102,68,15,235,232 // por %xmm0,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040031158 .byte 102,68,15,111,29,134,33,0,0 // movdqa 0x2186(%rip),%xmm11 # 5960 <_sk_callback_sse2+0xd85>
Mike Kleind0ce1482017-04-19 17:19:30 -040031159 .byte 102,69,15,254,235 // paddd %xmm11,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040031160 .byte 102,68,15,111,37,136,33,0,0 // movdqa 0x2188(%rip),%xmm12 # 5970 <_sk_callback_sse2+0xd95>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031161 .byte 102,65,15,239,204 // pxor %xmm12,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040031162 .byte 102,15,111,29,139,33,0,0 // movdqa 0x218b(%rip),%xmm3 # 5980 <_sk_callback_sse2+0xda5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031163 .byte 102,15,111,195 // movdqa %xmm3,%xmm0
31164 .byte 102,15,102,193 // pcmpgtd %xmm1,%xmm0
31165 .byte 102,65,15,223,197 // pandn %xmm13,%xmm0
31166 .byte 102,65,15,115,222,8 // psrldq $0x8,%xmm14
31167 .byte 102,69,15,97,242 // punpcklwd %xmm10,%xmm14
31168 .byte 102,65,15,111,206 // movdqa %xmm14,%xmm1
31169 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
31170 .byte 102,68,15,239,241 // pxor %xmm1,%xmm14
31171 .byte 102,15,114,241,16 // pslld $0x10,%xmm1
31172 .byte 102,65,15,111,214 // movdqa %xmm14,%xmm2
31173 .byte 102,15,114,242,13 // pslld $0xd,%xmm2
31174 .byte 102,15,235,209 // por %xmm1,%xmm2
31175 .byte 102,65,15,254,211 // paddd %xmm11,%xmm2
31176 .byte 102,69,15,239,244 // pxor %xmm12,%xmm14
31177 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
31178 .byte 102,65,15,102,206 // pcmpgtd %xmm14,%xmm1
31179 .byte 102,15,223,202 // pandn %xmm2,%xmm1
31180 .byte 102,69,15,111,232 // movdqa %xmm8,%xmm13
31181 .byte 102,69,15,97,234 // punpcklwd %xmm10,%xmm13
31182 .byte 102,65,15,111,213 // movdqa %xmm13,%xmm2
31183 .byte 102,65,15,219,209 // pand %xmm9,%xmm2
31184 .byte 102,68,15,239,234 // pxor %xmm2,%xmm13
31185 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
31186 .byte 102,69,15,111,245 // movdqa %xmm13,%xmm14
31187 .byte 102,65,15,114,246,13 // pslld $0xd,%xmm14
31188 .byte 102,68,15,235,242 // por %xmm2,%xmm14
31189 .byte 102,69,15,254,243 // paddd %xmm11,%xmm14
31190 .byte 102,69,15,239,236 // pxor %xmm12,%xmm13
31191 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
31192 .byte 102,65,15,102,213 // pcmpgtd %xmm13,%xmm2
31193 .byte 102,65,15,223,214 // pandn %xmm14,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040031194 .byte 102,65,15,115,216,8 // psrldq $0x8,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040031195 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
31196 .byte 102,69,15,219,200 // pand %xmm8,%xmm9
31197 .byte 102,69,15,239,193 // pxor %xmm9,%xmm8
31198 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040031199 .byte 102,69,15,111,208 // movdqa %xmm8,%xmm10
31200 .byte 102,65,15,114,242,13 // pslld $0xd,%xmm10
31201 .byte 102,69,15,235,209 // por %xmm9,%xmm10
31202 .byte 102,69,15,254,211 // paddd %xmm11,%xmm10
31203 .byte 102,69,15,239,196 // pxor %xmm12,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040031204 .byte 102,65,15,102,216 // pcmpgtd %xmm8,%xmm3
Mike Kleinb4bbc642017-04-27 08:59:55 -040031205 .byte 102,65,15,223,218 // pandn %xmm10,%xmm3
Mike Klein5f055f02017-04-06 20:02:11 -040031206 .byte 72,173 // lods %ds:(%rsi),%rax
31207 .byte 255,224 // jmpq *%rax
31208
Mike Klein7c4af542017-03-29 18:21:14 -040031209HIDDEN _sk_store_f16_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031210.globl _sk_store_f16_sse2
Mike Klein86714282017-04-13 17:37:38 -040031211FUNCTION(_sk_store_f16_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031212_sk_store_f16_sse2:
31213 .byte 72,173 // lods %ds:(%rsi),%rax
31214 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040031215 .byte 102,68,15,111,21,179,32,0,0 // movdqa 0x20b3(%rip),%xmm10 # 5990 <_sk_callback_sse2+0xdb5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031216 .byte 102,68,15,111,224 // movdqa %xmm0,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040031217 .byte 102,68,15,111,232 // movdqa %xmm0,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040031218 .byte 102,69,15,219,234 // pand %xmm10,%xmm13
31219 .byte 102,69,15,239,229 // pxor %xmm13,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040031220 .byte 102,68,15,111,13,166,32,0,0 // movdqa 0x20a6(%rip),%xmm9 # 59a0 <_sk_callback_sse2+0xdc5>
Mike Kleind0ce1482017-04-19 17:19:30 -040031221 .byte 102,65,15,114,213,16 // psrld $0x10,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040031222 .byte 102,69,15,111,193 // movdqa %xmm9,%xmm8
31223 .byte 102,69,15,102,196 // pcmpgtd %xmm12,%xmm8
31224 .byte 102,65,15,114,212,13 // psrld $0xd,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040031225 .byte 102,68,15,111,29,151,32,0,0 // movdqa 0x2097(%rip),%xmm11 # 59b0 <_sk_callback_sse2+0xdd5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031226 .byte 102,69,15,235,235 // por %xmm11,%xmm13
31227 .byte 102,69,15,254,236 // paddd %xmm12,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040031228 .byte 102,65,15,114,245,16 // pslld $0x10,%xmm13
31229 .byte 102,65,15,114,229,16 // psrad $0x10,%xmm13
Mike Kleinb4bbc642017-04-27 08:59:55 -040031230 .byte 102,69,15,223,197 // pandn %xmm13,%xmm8
31231 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
31232 .byte 102,68,15,111,233 // movdqa %xmm1,%xmm13
31233 .byte 102,68,15,111,241 // movdqa %xmm1,%xmm14
31234 .byte 102,69,15,219,242 // pand %xmm10,%xmm14
31235 .byte 102,69,15,239,238 // pxor %xmm14,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040031236 .byte 102,65,15,114,214,16 // psrld $0x10,%xmm14
Mike Kleinb4bbc642017-04-27 08:59:55 -040031237 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
31238 .byte 102,69,15,102,229 // pcmpgtd %xmm13,%xmm12
31239 .byte 102,65,15,114,213,13 // psrld $0xd,%xmm13
31240 .byte 102,69,15,235,243 // por %xmm11,%xmm14
31241 .byte 102,69,15,254,245 // paddd %xmm13,%xmm14
Mike Kleind0ce1482017-04-19 17:19:30 -040031242 .byte 102,65,15,114,246,16 // pslld $0x10,%xmm14
31243 .byte 102,65,15,114,230,16 // psrad $0x10,%xmm14
Mike Kleinb4bbc642017-04-27 08:59:55 -040031244 .byte 102,69,15,223,230 // pandn %xmm14,%xmm12
31245 .byte 102,69,15,107,228 // packssdw %xmm12,%xmm12
31246 .byte 102,68,15,111,242 // movdqa %xmm2,%xmm14
31247 .byte 102,68,15,111,250 // movdqa %xmm2,%xmm15
31248 .byte 102,69,15,219,250 // pand %xmm10,%xmm15
31249 .byte 102,69,15,239,247 // pxor %xmm15,%xmm14
31250 .byte 102,65,15,114,215,16 // psrld $0x10,%xmm15
31251 .byte 102,69,15,111,233 // movdqa %xmm9,%xmm13
31252 .byte 102,69,15,102,238 // pcmpgtd %xmm14,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040031253 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
Mike Kleinb4bbc642017-04-27 08:59:55 -040031254 .byte 102,69,15,235,251 // por %xmm11,%xmm15
31255 .byte 102,69,15,254,254 // paddd %xmm14,%xmm15
31256 .byte 102,65,15,114,247,16 // pslld $0x10,%xmm15
31257 .byte 102,65,15,114,231,16 // psrad $0x10,%xmm15
31258 .byte 102,69,15,223,239 // pandn %xmm15,%xmm13
31259 .byte 102,69,15,107,237 // packssdw %xmm13,%xmm13
31260 .byte 102,68,15,219,211 // pand %xmm3,%xmm10
31261 .byte 102,68,15,111,243 // movdqa %xmm3,%xmm14
31262 .byte 102,69,15,239,242 // pxor %xmm10,%xmm14
31263 .byte 102,65,15,114,210,16 // psrld $0x10,%xmm10
31264 .byte 102,69,15,102,206 // pcmpgtd %xmm14,%xmm9
31265 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
31266 .byte 102,69,15,235,211 // por %xmm11,%xmm10
31267 .byte 102,69,15,254,214 // paddd %xmm14,%xmm10
31268 .byte 102,65,15,114,242,16 // pslld $0x10,%xmm10
31269 .byte 102,65,15,114,226,16 // psrad $0x10,%xmm10
31270 .byte 102,69,15,223,202 // pandn %xmm10,%xmm9
31271 .byte 102,69,15,107,201 // packssdw %xmm9,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040031272 .byte 102,69,15,97,196 // punpcklwd %xmm12,%xmm8
Mike Kleinb4bbc642017-04-27 08:59:55 -040031273 .byte 102,69,15,97,233 // punpcklwd %xmm9,%xmm13
Mike Klein95f53be2017-04-04 10:24:56 -040031274 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040031275 .byte 102,69,15,98,205 // punpckldq %xmm13,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040031276 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
Mike Kleind0ce1482017-04-19 17:19:30 -040031277 .byte 102,69,15,106,197 // punpckhdq %xmm13,%xmm8
Mike Klein95f53be2017-04-04 10:24:56 -040031278 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031279 .byte 72,173 // lods %ds:(%rsi),%rax
31280 .byte 255,224 // jmpq *%rax
31281
Mike Klein3146bb92017-04-05 14:45:02 -040031282HIDDEN _sk_load_u16_be_sse2
31283.globl _sk_load_u16_be_sse2
Mike Klein86714282017-04-13 17:37:38 -040031284FUNCTION(_sk_load_u16_be_sse2)
Mike Klein3146bb92017-04-05 14:45:02 -040031285_sk_load_u16_be_sse2:
31286 .byte 72,173 // lods %ds:(%rsi),%rax
31287 .byte 72,139,0 // mov (%rax),%rax
31288 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
31289 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
31290 .byte 102,15,111,208 // movdqa %xmm0,%xmm2
31291 .byte 102,15,97,209 // punpcklwd %xmm1,%xmm2
31292 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
31293 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
31294 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
31295 .byte 102,15,105,208 // punpckhwd %xmm0,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040031296 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
31297 .byte 102,15,113,240,8 // psllw $0x8,%xmm0
31298 .byte 102,15,112,217,78 // pshufd $0x4e,%xmm1,%xmm3
31299 .byte 102,15,113,209,8 // psrlw $0x8,%xmm1
31300 .byte 102,15,235,200 // por %xmm0,%xmm1
31301 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
31302 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
31303 .byte 15,91,193 // cvtdq2ps %xmm1,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040031304 .byte 68,15,40,5,53,31,0,0 // movaps 0x1f35(%rip),%xmm8 # 59c0 <_sk_callback_sse2+0xde5>
Mike Klein3146bb92017-04-05 14:45:02 -040031305 .byte 65,15,89,192 // mulps %xmm8,%xmm0
31306 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
31307 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
31308 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
31309 .byte 102,15,235,217 // por %xmm1,%xmm3
31310 .byte 102,65,15,97,217 // punpcklwd %xmm9,%xmm3
31311 .byte 15,91,203 // cvtdq2ps %xmm3,%xmm1
31312 .byte 65,15,89,200 // mulps %xmm8,%xmm1
31313 .byte 102,68,15,111,210 // movdqa %xmm2,%xmm10
31314 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
31315 .byte 102,15,112,218,78 // pshufd $0x4e,%xmm2,%xmm3
31316 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
31317 .byte 102,65,15,235,210 // por %xmm10,%xmm2
31318 .byte 102,65,15,97,209 // punpcklwd %xmm9,%xmm2
31319 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
31320 .byte 65,15,89,208 // mulps %xmm8,%xmm2
31321 .byte 102,68,15,111,211 // movdqa %xmm3,%xmm10
31322 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
31323 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
31324 .byte 102,65,15,235,218 // por %xmm10,%xmm3
31325 .byte 102,65,15,97,217 // punpcklwd %xmm9,%xmm3
31326 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
31327 .byte 65,15,89,216 // mulps %xmm8,%xmm3
31328 .byte 72,173 // lods %ds:(%rsi),%rax
31329 .byte 255,224 // jmpq *%rax
31330
Mike Kleinb3821732017-04-17 10:58:05 -040031331HIDDEN _sk_load_rgb_u16_be_sse2
31332.globl _sk_load_rgb_u16_be_sse2
31333FUNCTION(_sk_load_rgb_u16_be_sse2)
31334_sk_load_rgb_u16_be_sse2:
31335 .byte 72,173 // lods %ds:(%rsi),%rax
31336 .byte 72,139,0 // mov (%rax),%rax
31337 .byte 72,141,12,127 // lea (%rdi,%rdi,2),%rcx
31338 .byte 243,15,111,20,72 // movdqu (%rax,%rcx,2),%xmm2
31339 .byte 243,15,111,68,72,8 // movdqu 0x8(%rax,%rcx,2),%xmm0
31340 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
31341 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
31342 .byte 102,15,115,217,6 // psrldq $0x6,%xmm1
31343 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
31344 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
31345 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
31346 .byte 102,15,111,194 // movdqa %xmm2,%xmm0
31347 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
31348 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
31349 .byte 102,15,105,209 // punpckhwd %xmm1,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040031350 .byte 102,15,111,200 // movdqa %xmm0,%xmm1
31351 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
31352 .byte 102,15,113,208,8 // psrlw $0x8,%xmm0
31353 .byte 102,15,235,193 // por %xmm1,%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040031354 .byte 102,69,15,239,192 // pxor %xmm8,%xmm8
31355 .byte 102,65,15,97,192 // punpcklwd %xmm8,%xmm0
Mike Kleinb3821732017-04-17 10:58:05 -040031356 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040031357 .byte 68,15,40,13,113,30,0,0 // movaps 0x1e71(%rip),%xmm9 # 59d0 <_sk_callback_sse2+0xdf5>
Mike Kleinfe560a82017-05-01 12:56:35 -040031358 .byte 65,15,89,193 // mulps %xmm9,%xmm0
Mike Kleinb3821732017-04-17 10:58:05 -040031359 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
31360 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
31361 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
31362 .byte 102,15,235,217 // por %xmm1,%xmm3
Mike Kleinfe560a82017-05-01 12:56:35 -040031363 .byte 102,65,15,97,216 // punpcklwd %xmm8,%xmm3
Mike Kleinb3821732017-04-17 10:58:05 -040031364 .byte 15,91,203 // cvtdq2ps %xmm3,%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040031365 .byte 65,15,89,201 // mulps %xmm9,%xmm1
Mike Kleinb3821732017-04-17 10:58:05 -040031366 .byte 102,15,111,218 // movdqa %xmm2,%xmm3
31367 .byte 102,15,113,243,8 // psllw $0x8,%xmm3
31368 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
31369 .byte 102,15,235,211 // por %xmm3,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040031370 .byte 102,65,15,97,208 // punpcklwd %xmm8,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040031371 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
Mike Kleinfe560a82017-05-01 12:56:35 -040031372 .byte 65,15,89,209 // mulps %xmm9,%xmm2
Mike Kleinb3821732017-04-17 10:58:05 -040031373 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040031374 .byte 15,40,29,56,30,0,0 // movaps 0x1e38(%rip),%xmm3 # 59e0 <_sk_callback_sse2+0xe05>
Mike Kleinb3821732017-04-17 10:58:05 -040031375 .byte 255,224 // jmpq *%rax
31376
Mike Klein3146bb92017-04-05 14:45:02 -040031377HIDDEN _sk_store_u16_be_sse2
31378.globl _sk_store_u16_be_sse2
Mike Klein86714282017-04-13 17:37:38 -040031379FUNCTION(_sk_store_u16_be_sse2)
Mike Klein3146bb92017-04-05 14:45:02 -040031380_sk_store_u16_be_sse2:
31381 .byte 72,173 // lods %ds:(%rsi),%rax
31382 .byte 72,139,0 // mov (%rax),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040031383 .byte 68,15,40,13,57,30,0,0 // movaps 0x1e39(%rip),%xmm9 # 59f0 <_sk_callback_sse2+0xe15>
Mike Kleinfe560a82017-05-01 12:56:35 -040031384 .byte 68,15,40,192 // movaps %xmm0,%xmm8
31385 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040031386 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
31387 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
31388 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
31389 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
31390 .byte 102,69,15,111,208 // movdqa %xmm8,%xmm10
31391 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
31392 .byte 102,65,15,113,208,8 // psrlw $0x8,%xmm8
31393 .byte 102,69,15,235,194 // por %xmm10,%xmm8
Mike Kleinfe560a82017-05-01 12:56:35 -040031394 .byte 68,15,40,209 // movaps %xmm1,%xmm10
31395 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein3146bb92017-04-05 14:45:02 -040031396 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
31397 .byte 102,65,15,114,242,16 // pslld $0x10,%xmm10
31398 .byte 102,65,15,114,226,16 // psrad $0x10,%xmm10
31399 .byte 102,69,15,107,210 // packssdw %xmm10,%xmm10
31400 .byte 102,69,15,111,218 // movdqa %xmm10,%xmm11
31401 .byte 102,65,15,113,243,8 // psllw $0x8,%xmm11
31402 .byte 102,65,15,113,210,8 // psrlw $0x8,%xmm10
31403 .byte 102,69,15,235,211 // por %xmm11,%xmm10
Mike Kleinfe560a82017-05-01 12:56:35 -040031404 .byte 68,15,40,218 // movaps %xmm2,%xmm11
31405 .byte 69,15,89,217 // mulps %xmm9,%xmm11
Mike Klein3146bb92017-04-05 14:45:02 -040031406 .byte 102,69,15,91,219 // cvtps2dq %xmm11,%xmm11
31407 .byte 102,65,15,114,243,16 // pslld $0x10,%xmm11
31408 .byte 102,65,15,114,227,16 // psrad $0x10,%xmm11
31409 .byte 102,69,15,107,219 // packssdw %xmm11,%xmm11
31410 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
31411 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
31412 .byte 102,65,15,113,211,8 // psrlw $0x8,%xmm11
31413 .byte 102,69,15,235,220 // por %xmm12,%xmm11
31414 .byte 68,15,89,203 // mulps %xmm3,%xmm9
31415 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
31416 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
31417 .byte 102,65,15,114,225,16 // psrad $0x10,%xmm9
31418 .byte 102,69,15,107,201 // packssdw %xmm9,%xmm9
31419 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
31420 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
31421 .byte 102,65,15,113,209,8 // psrlw $0x8,%xmm9
31422 .byte 102,69,15,235,204 // por %xmm12,%xmm9
31423 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
31424 .byte 102,69,15,97,217 // punpcklwd %xmm9,%xmm11
31425 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
31426 .byte 102,69,15,98,203 // punpckldq %xmm11,%xmm9
31427 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
31428 .byte 102,69,15,106,195 // punpckhdq %xmm11,%xmm8
31429 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
31430 .byte 72,173 // lods %ds:(%rsi),%rax
31431 .byte 255,224 // jmpq *%rax
31432
Mike Klein14987eb2017-04-06 10:22:26 -040031433HIDDEN _sk_load_f32_sse2
31434.globl _sk_load_f32_sse2
Mike Klein86714282017-04-13 17:37:38 -040031435FUNCTION(_sk_load_f32_sse2)
Mike Klein14987eb2017-04-06 10:22:26 -040031436_sk_load_f32_sse2:
31437 .byte 72,173 // lods %ds:(%rsi),%rax
31438 .byte 72,139,0 // mov (%rax),%rax
31439 .byte 72,137,249 // mov %rdi,%rcx
31440 .byte 72,193,225,4 // shl $0x4,%rcx
31441 .byte 68,15,16,4,8 // movups (%rax,%rcx,1),%xmm8
31442 .byte 15,16,68,8,16 // movups 0x10(%rax,%rcx,1),%xmm0
31443 .byte 15,16,92,8,32 // movups 0x20(%rax,%rcx,1),%xmm3
31444 .byte 68,15,16,76,8,48 // movups 0x30(%rax,%rcx,1),%xmm9
31445 .byte 65,15,40,208 // movaps %xmm8,%xmm2
31446 .byte 15,20,208 // unpcklps %xmm0,%xmm2
31447 .byte 15,40,203 // movaps %xmm3,%xmm1
31448 .byte 65,15,20,201 // unpcklps %xmm9,%xmm1
31449 .byte 68,15,21,192 // unpckhps %xmm0,%xmm8
31450 .byte 65,15,21,217 // unpckhps %xmm9,%xmm3
31451 .byte 15,40,194 // movaps %xmm2,%xmm0
31452 .byte 102,15,20,193 // unpcklpd %xmm1,%xmm0
31453 .byte 15,18,202 // movhlps %xmm2,%xmm1
31454 .byte 65,15,40,208 // movaps %xmm8,%xmm2
31455 .byte 102,15,20,211 // unpcklpd %xmm3,%xmm2
31456 .byte 65,15,18,216 // movhlps %xmm8,%xmm3
31457 .byte 72,173 // lods %ds:(%rsi),%rax
31458 .byte 255,224 // jmpq *%rax
31459
Mike Klein7c4af542017-03-29 18:21:14 -040031460HIDDEN _sk_store_f32_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031461.globl _sk_store_f32_sse2
Mike Klein86714282017-04-13 17:37:38 -040031462FUNCTION(_sk_store_f32_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031463_sk_store_f32_sse2:
31464 .byte 72,173 // lods %ds:(%rsi),%rax
31465 .byte 72,139,0 // mov (%rax),%rax
31466 .byte 72,137,249 // mov %rdi,%rcx
31467 .byte 72,193,225,4 // shl $0x4,%rcx
31468 .byte 68,15,40,192 // movaps %xmm0,%xmm8
31469 .byte 68,15,40,200 // movaps %xmm0,%xmm9
31470 .byte 68,15,20,201 // unpcklps %xmm1,%xmm9
31471 .byte 68,15,40,210 // movaps %xmm2,%xmm10
31472 .byte 68,15,40,218 // movaps %xmm2,%xmm11
31473 .byte 68,15,20,219 // unpcklps %xmm3,%xmm11
31474 .byte 68,15,21,193 // unpckhps %xmm1,%xmm8
31475 .byte 68,15,21,211 // unpckhps %xmm3,%xmm10
31476 .byte 69,15,40,225 // movaps %xmm9,%xmm12
31477 .byte 102,69,15,20,227 // unpcklpd %xmm11,%xmm12
31478 .byte 69,15,18,217 // movhlps %xmm9,%xmm11
31479 .byte 69,15,40,200 // movaps %xmm8,%xmm9
31480 .byte 102,69,15,20,202 // unpcklpd %xmm10,%xmm9
31481 .byte 69,15,18,208 // movhlps %xmm8,%xmm10
31482 .byte 102,68,15,17,36,8 // movupd %xmm12,(%rax,%rcx,1)
31483 .byte 68,15,17,92,8,16 // movups %xmm11,0x10(%rax,%rcx,1)
31484 .byte 102,68,15,17,76,8,32 // movupd %xmm9,0x20(%rax,%rcx,1)
31485 .byte 68,15,17,84,8,48 // movups %xmm10,0x30(%rax,%rcx,1)
31486 .byte 72,173 // lods %ds:(%rsi),%rax
31487 .byte 255,224 // jmpq *%rax
31488
Mike Klein7c4af542017-03-29 18:21:14 -040031489HIDDEN _sk_clamp_x_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031490.globl _sk_clamp_x_sse2
Mike Klein86714282017-04-13 17:37:38 -040031491FUNCTION(_sk_clamp_x_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031492_sk_clamp_x_sse2:
31493 .byte 72,173 // lods %ds:(%rsi),%rax
31494 .byte 69,15,87,192 // xorps %xmm8,%xmm8
31495 .byte 68,15,95,192 // maxps %xmm0,%xmm8
Mike Kleinfc84dc52017-05-11 15:29:31 -040031496 .byte 243,15,16,0 // movss (%rax),%xmm0
31497 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040031498 .byte 68,15,93,192 // minps %xmm0,%xmm8
31499 .byte 72,173 // lods %ds:(%rsi),%rax
31500 .byte 65,15,40,192 // movaps %xmm8,%xmm0
31501 .byte 255,224 // jmpq *%rax
31502
Mike Klein7c4af542017-03-29 18:21:14 -040031503HIDDEN _sk_clamp_y_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031504.globl _sk_clamp_y_sse2
Mike Klein86714282017-04-13 17:37:38 -040031505FUNCTION(_sk_clamp_y_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031506_sk_clamp_y_sse2:
31507 .byte 72,173 // lods %ds:(%rsi),%rax
31508 .byte 69,15,87,192 // xorps %xmm8,%xmm8
31509 .byte 68,15,95,193 // maxps %xmm1,%xmm8
Mike Kleinfc84dc52017-05-11 15:29:31 -040031510 .byte 243,15,16,8 // movss (%rax),%xmm1
31511 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040031512 .byte 68,15,93,193 // minps %xmm1,%xmm8
31513 .byte 72,173 // lods %ds:(%rsi),%rax
31514 .byte 65,15,40,200 // movaps %xmm8,%xmm1
31515 .byte 255,224 // jmpq *%rax
31516
Mike Klein7c4af542017-03-29 18:21:14 -040031517HIDDEN _sk_repeat_x_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031518.globl _sk_repeat_x_sse2
Mike Klein86714282017-04-13 17:37:38 -040031519FUNCTION(_sk_repeat_x_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031520_sk_repeat_x_sse2:
31521 .byte 72,173 // lods %ds:(%rsi),%rax
31522 .byte 243,68,15,16,0 // movss (%rax),%xmm8
31523 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
31524 .byte 68,15,40,200 // movaps %xmm0,%xmm9
31525 .byte 69,15,94,200 // divps %xmm8,%xmm9
31526 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
31527 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
31528 .byte 69,15,194,202,1 // cmpltps %xmm10,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040031529 .byte 68,15,84,13,57,28,0,0 // andps 0x1c39(%rip),%xmm9 # 5a00 <_sk_callback_sse2+0xe25>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031530 .byte 69,15,92,209 // subps %xmm9,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040031531 .byte 69,15,89,208 // mulps %xmm8,%xmm10
31532 .byte 65,15,92,194 // subps %xmm10,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040031533 .byte 72,173 // lods %ds:(%rsi),%rax
31534 .byte 255,224 // jmpq *%rax
31535
Mike Klein7c4af542017-03-29 18:21:14 -040031536HIDDEN _sk_repeat_y_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031537.globl _sk_repeat_y_sse2
Mike Klein86714282017-04-13 17:37:38 -040031538FUNCTION(_sk_repeat_y_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031539_sk_repeat_y_sse2:
31540 .byte 72,173 // lods %ds:(%rsi),%rax
31541 .byte 243,68,15,16,0 // movss (%rax),%xmm8
31542 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
31543 .byte 68,15,40,201 // movaps %xmm1,%xmm9
31544 .byte 69,15,94,200 // divps %xmm8,%xmm9
31545 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
31546 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
31547 .byte 69,15,194,202,1 // cmpltps %xmm10,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040031548 .byte 68,15,84,13,15,28,0,0 // andps 0x1c0f(%rip),%xmm9 # 5a10 <_sk_callback_sse2+0xe35>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031549 .byte 69,15,92,209 // subps %xmm9,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040031550 .byte 69,15,89,208 // mulps %xmm8,%xmm10
31551 .byte 65,15,92,202 // subps %xmm10,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040031552 .byte 72,173 // lods %ds:(%rsi),%rax
31553 .byte 255,224 // jmpq *%rax
31554
Mike Klein7c4af542017-03-29 18:21:14 -040031555HIDDEN _sk_mirror_x_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031556.globl _sk_mirror_x_sse2
Mike Klein86714282017-04-13 17:37:38 -040031557FUNCTION(_sk_mirror_x_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031558_sk_mirror_x_sse2:
31559 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb4bbc642017-04-27 08:59:55 -040031560 .byte 243,68,15,16,0 // movss (%rax),%xmm8
31561 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040031562 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040031563 .byte 65,15,92,193 // subps %xmm9,%xmm0
31564 .byte 243,69,15,88,192 // addss %xmm8,%xmm8
31565 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040031566 .byte 68,15,40,208 // movaps %xmm0,%xmm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040031567 .byte 69,15,94,208 // divps %xmm8,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040031568 .byte 243,69,15,91,218 // cvttps2dq %xmm10,%xmm11
31569 .byte 69,15,91,219 // cvtdq2ps %xmm11,%xmm11
31570 .byte 69,15,194,211,1 // cmpltps %xmm11,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040031571 .byte 68,15,84,21,211,27,0,0 // andps 0x1bd3(%rip),%xmm10 # 5a20 <_sk_callback_sse2+0xe45>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031572 .byte 69,15,87,228 // xorps %xmm12,%xmm12
31573 .byte 69,15,92,218 // subps %xmm10,%xmm11
31574 .byte 69,15,89,216 // mulps %xmm8,%xmm11
Mike Kleind7e06ae2017-03-29 16:33:06 -040031575 .byte 65,15,92,195 // subps %xmm11,%xmm0
Mike Kleinb4bbc642017-04-27 08:59:55 -040031576 .byte 65,15,92,193 // subps %xmm9,%xmm0
31577 .byte 68,15,92,224 // subps %xmm0,%xmm12
31578 .byte 65,15,84,196 // andps %xmm12,%xmm0
Mike Kleind7e06ae2017-03-29 16:33:06 -040031579 .byte 72,173 // lods %ds:(%rsi),%rax
31580 .byte 255,224 // jmpq *%rax
31581
Mike Klein7c4af542017-03-29 18:21:14 -040031582HIDDEN _sk_mirror_y_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031583.globl _sk_mirror_y_sse2
Mike Klein86714282017-04-13 17:37:38 -040031584FUNCTION(_sk_mirror_y_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031585_sk_mirror_y_sse2:
31586 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb4bbc642017-04-27 08:59:55 -040031587 .byte 243,68,15,16,0 // movss (%rax),%xmm8
31588 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040031589 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Kleinb4bbc642017-04-27 08:59:55 -040031590 .byte 65,15,92,201 // subps %xmm9,%xmm1
31591 .byte 243,69,15,88,192 // addss %xmm8,%xmm8
31592 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040031593 .byte 68,15,40,209 // movaps %xmm1,%xmm10
Mike Kleinb4bbc642017-04-27 08:59:55 -040031594 .byte 69,15,94,208 // divps %xmm8,%xmm10
Mike Kleind7e06ae2017-03-29 16:33:06 -040031595 .byte 243,69,15,91,218 // cvttps2dq %xmm10,%xmm11
31596 .byte 69,15,91,219 // cvtdq2ps %xmm11,%xmm11
31597 .byte 69,15,194,211,1 // cmpltps %xmm11,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040031598 .byte 68,15,84,21,135,27,0,0 // andps 0x1b87(%rip),%xmm10 # 5a30 <_sk_callback_sse2+0xe55>
Mike Kleinb4bbc642017-04-27 08:59:55 -040031599 .byte 69,15,87,228 // xorps %xmm12,%xmm12
31600 .byte 69,15,92,218 // subps %xmm10,%xmm11
31601 .byte 69,15,89,216 // mulps %xmm8,%xmm11
Mike Kleind7e06ae2017-03-29 16:33:06 -040031602 .byte 65,15,92,203 // subps %xmm11,%xmm1
Mike Kleinb4bbc642017-04-27 08:59:55 -040031603 .byte 65,15,92,201 // subps %xmm9,%xmm1
31604 .byte 68,15,92,225 // subps %xmm1,%xmm12
31605 .byte 65,15,84,204 // andps %xmm12,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040031606 .byte 72,173 // lods %ds:(%rsi),%rax
31607 .byte 255,224 // jmpq *%rax
31608
Mike Klein9f85d682017-05-23 07:52:01 -040031609HIDDEN _sk_clamp_x_1_sse2
31610.globl _sk_clamp_x_1_sse2
31611FUNCTION(_sk_clamp_x_1_sse2)
31612_sk_clamp_x_1_sse2:
31613 .byte 69,15,87,192 // xorps %xmm8,%xmm8
31614 .byte 68,15,95,192 // maxps %xmm0,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040031615 .byte 68,15,93,5,103,27,0,0 // minps 0x1b67(%rip),%xmm8 # 5a40 <_sk_callback_sse2+0xe65>
Mike Klein9f85d682017-05-23 07:52:01 -040031616 .byte 72,173 // lods %ds:(%rsi),%rax
31617 .byte 65,15,40,192 // movaps %xmm8,%xmm0
31618 .byte 255,224 // jmpq *%rax
31619
31620HIDDEN _sk_repeat_x_1_sse2
31621.globl _sk_repeat_x_1_sse2
31622FUNCTION(_sk_repeat_x_1_sse2)
31623_sk_repeat_x_1_sse2:
31624 .byte 243,68,15,91,192 // cvttps2dq %xmm0,%xmm8
31625 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
31626 .byte 68,15,40,200 // movaps %xmm0,%xmm9
31627 .byte 69,15,194,200,1 // cmpltps %xmm8,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040031628 .byte 68,15,84,13,85,27,0,0 // andps 0x1b55(%rip),%xmm9 # 5a50 <_sk_callback_sse2+0xe75>
Mike Klein9f85d682017-05-23 07:52:01 -040031629 .byte 69,15,92,193 // subps %xmm9,%xmm8
31630 .byte 65,15,92,192 // subps %xmm8,%xmm0
31631 .byte 72,173 // lods %ds:(%rsi),%rax
31632 .byte 255,224 // jmpq *%rax
31633
31634HIDDEN _sk_mirror_x_1_sse2
31635.globl _sk_mirror_x_1_sse2
31636FUNCTION(_sk_mirror_x_1_sse2)
31637_sk_mirror_x_1_sse2:
Mike Klein8ca33562017-05-23 08:07:43 -040031638 .byte 68,15,40,5,81,27,0,0 // movaps 0x1b51(%rip),%xmm8 # 5a60 <_sk_callback_sse2+0xe85>
Mike Klein9f85d682017-05-23 07:52:01 -040031639 .byte 65,15,88,192 // addps %xmm8,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040031640 .byte 68,15,40,13,85,27,0,0 // movaps 0x1b55(%rip),%xmm9 # 5a70 <_sk_callback_sse2+0xe95>
Mike Klein9f85d682017-05-23 07:52:01 -040031641 .byte 68,15,89,200 // mulps %xmm0,%xmm9
31642 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
31643 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
31644 .byte 69,15,194,202,1 // cmpltps %xmm10,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040031645 .byte 68,15,84,13,75,27,0,0 // andps 0x1b4b(%rip),%xmm9 # 5a80 <_sk_callback_sse2+0xea5>
Mike Klein9f85d682017-05-23 07:52:01 -040031646 .byte 69,15,87,219 // xorps %xmm11,%xmm11
31647 .byte 69,15,92,209 // subps %xmm9,%xmm10
31648 .byte 69,15,88,210 // addps %xmm10,%xmm10
31649 .byte 65,15,92,194 // subps %xmm10,%xmm0
31650 .byte 65,15,88,192 // addps %xmm8,%xmm0
31651 .byte 68,15,92,216 // subps %xmm0,%xmm11
31652 .byte 65,15,84,195 // andps %xmm11,%xmm0
31653 .byte 72,173 // lods %ds:(%rsi),%rax
31654 .byte 255,224 // jmpq *%rax
31655
Mike Klein7c4af542017-03-29 18:21:14 -040031656HIDDEN _sk_luminance_to_alpha_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031657.globl _sk_luminance_to_alpha_sse2
Mike Klein86714282017-04-13 17:37:38 -040031658FUNCTION(_sk_luminance_to_alpha_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031659_sk_luminance_to_alpha_sse2:
Mike Kleinfe560a82017-05-01 12:56:35 -040031660 .byte 15,40,218 // movaps %xmm2,%xmm3
Mike Klein8ca33562017-05-23 08:07:43 -040031661 .byte 15,89,5,49,27,0,0 // mulps 0x1b31(%rip),%xmm0 # 5a90 <_sk_callback_sse2+0xeb5>
31662 .byte 15,89,13,58,27,0,0 // mulps 0x1b3a(%rip),%xmm1 # 5aa0 <_sk_callback_sse2+0xec5>
Mike Kleinfe560a82017-05-01 12:56:35 -040031663 .byte 15,88,200 // addps %xmm0,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040031664 .byte 15,89,29,64,27,0,0 // mulps 0x1b40(%rip),%xmm3 # 5ab0 <_sk_callback_sse2+0xed5>
Mike Kleinfe560a82017-05-01 12:56:35 -040031665 .byte 15,88,217 // addps %xmm1,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040031666 .byte 72,173 // lods %ds:(%rsi),%rax
31667 .byte 15,87,192 // xorps %xmm0,%xmm0
31668 .byte 15,87,201 // xorps %xmm1,%xmm1
31669 .byte 15,87,210 // xorps %xmm2,%xmm2
31670 .byte 255,224 // jmpq *%rax
31671
Mike Klein7c4af542017-03-29 18:21:14 -040031672HIDDEN _sk_matrix_2x3_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031673.globl _sk_matrix_2x3_sse2
Mike Klein86714282017-04-13 17:37:38 -040031674FUNCTION(_sk_matrix_2x3_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031675_sk_matrix_2x3_sse2:
31676 .byte 68,15,40,201 // movaps %xmm1,%xmm9
31677 .byte 68,15,40,192 // movaps %xmm0,%xmm8
31678 .byte 72,173 // lods %ds:(%rsi),%rax
31679 .byte 243,15,16,0 // movss (%rax),%xmm0
31680 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
31681 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
31682 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
31683 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31684 .byte 243,68,15,16,88,16 // movss 0x10(%rax),%xmm11
31685 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31686 .byte 69,15,89,209 // mulps %xmm9,%xmm10
31687 .byte 69,15,88,211 // addps %xmm11,%xmm10
31688 .byte 65,15,89,192 // mulps %xmm8,%xmm0
31689 .byte 65,15,88,194 // addps %xmm10,%xmm0
31690 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
31691 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
31692 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31693 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
31694 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31695 .byte 69,15,89,209 // mulps %xmm9,%xmm10
31696 .byte 69,15,88,211 // addps %xmm11,%xmm10
31697 .byte 65,15,89,200 // mulps %xmm8,%xmm1
31698 .byte 65,15,88,202 // addps %xmm10,%xmm1
31699 .byte 72,173 // lods %ds:(%rsi),%rax
31700 .byte 255,224 // jmpq *%rax
31701
Mike Klein7c4af542017-03-29 18:21:14 -040031702HIDDEN _sk_matrix_3x4_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031703.globl _sk_matrix_3x4_sse2
Mike Klein86714282017-04-13 17:37:38 -040031704FUNCTION(_sk_matrix_3x4_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031705_sk_matrix_3x4_sse2:
31706 .byte 68,15,40,201 // movaps %xmm1,%xmm9
31707 .byte 68,15,40,192 // movaps %xmm0,%xmm8
31708 .byte 72,173 // lods %ds:(%rsi),%rax
31709 .byte 243,15,16,0 // movss (%rax),%xmm0
31710 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
31711 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
31712 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
31713 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31714 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
31715 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31716 .byte 243,68,15,16,96,36 // movss 0x24(%rax),%xmm12
31717 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
31718 .byte 68,15,89,218 // mulps %xmm2,%xmm11
31719 .byte 69,15,88,220 // addps %xmm12,%xmm11
31720 .byte 69,15,89,209 // mulps %xmm9,%xmm10
31721 .byte 69,15,88,211 // addps %xmm11,%xmm10
31722 .byte 65,15,89,192 // mulps %xmm8,%xmm0
31723 .byte 65,15,88,194 // addps %xmm10,%xmm0
31724 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
31725 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
31726 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31727 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
31728 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31729 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
31730 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
31731 .byte 68,15,89,218 // mulps %xmm2,%xmm11
31732 .byte 69,15,88,220 // addps %xmm12,%xmm11
31733 .byte 69,15,89,209 // mulps %xmm9,%xmm10
31734 .byte 69,15,88,211 // addps %xmm11,%xmm10
31735 .byte 65,15,89,200 // mulps %xmm8,%xmm1
31736 .byte 65,15,88,202 // addps %xmm10,%xmm1
31737 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
31738 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31739 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
31740 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31741 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
31742 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
31743 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
31744 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
31745 .byte 68,15,89,226 // mulps %xmm2,%xmm12
31746 .byte 69,15,88,229 // addps %xmm13,%xmm12
31747 .byte 69,15,89,217 // mulps %xmm9,%xmm11
31748 .byte 69,15,88,220 // addps %xmm12,%xmm11
31749 .byte 69,15,89,208 // mulps %xmm8,%xmm10
31750 .byte 69,15,88,211 // addps %xmm11,%xmm10
31751 .byte 72,173 // lods %ds:(%rsi),%rax
31752 .byte 65,15,40,210 // movaps %xmm10,%xmm2
31753 .byte 255,224 // jmpq *%rax
31754
Mike Klein7c4af542017-03-29 18:21:14 -040031755HIDDEN _sk_matrix_4x5_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031756.globl _sk_matrix_4x5_sse2
Mike Klein86714282017-04-13 17:37:38 -040031757FUNCTION(_sk_matrix_4x5_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031758_sk_matrix_4x5_sse2:
31759 .byte 68,15,40,201 // movaps %xmm1,%xmm9
31760 .byte 68,15,40,192 // movaps %xmm0,%xmm8
31761 .byte 72,173 // lods %ds:(%rsi),%rax
31762 .byte 243,15,16,0 // movss (%rax),%xmm0
31763 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
31764 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
31765 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
31766 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31767 .byte 243,68,15,16,88,32 // movss 0x20(%rax),%xmm11
31768 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31769 .byte 243,68,15,16,96,48 // movss 0x30(%rax),%xmm12
31770 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
31771 .byte 243,68,15,16,104,64 // movss 0x40(%rax),%xmm13
31772 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
31773 .byte 68,15,89,227 // mulps %xmm3,%xmm12
31774 .byte 69,15,88,229 // addps %xmm13,%xmm12
31775 .byte 68,15,89,218 // mulps %xmm2,%xmm11
31776 .byte 69,15,88,220 // addps %xmm12,%xmm11
31777 .byte 69,15,89,209 // mulps %xmm9,%xmm10
31778 .byte 69,15,88,211 // addps %xmm11,%xmm10
31779 .byte 65,15,89,192 // mulps %xmm8,%xmm0
31780 .byte 65,15,88,194 // addps %xmm10,%xmm0
31781 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
31782 .byte 243,68,15,16,80,20 // movss 0x14(%rax),%xmm10
31783 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31784 .byte 243,68,15,16,88,36 // movss 0x24(%rax),%xmm11
31785 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31786 .byte 243,68,15,16,96,52 // movss 0x34(%rax),%xmm12
31787 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
31788 .byte 243,68,15,16,104,68 // movss 0x44(%rax),%xmm13
31789 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
31790 .byte 68,15,89,227 // mulps %xmm3,%xmm12
31791 .byte 69,15,88,229 // addps %xmm13,%xmm12
31792 .byte 68,15,89,218 // mulps %xmm2,%xmm11
31793 .byte 69,15,88,220 // addps %xmm12,%xmm11
31794 .byte 69,15,89,209 // mulps %xmm9,%xmm10
31795 .byte 69,15,88,211 // addps %xmm11,%xmm10
31796 .byte 65,15,89,200 // mulps %xmm8,%xmm1
31797 .byte 65,15,88,202 // addps %xmm10,%xmm1
31798 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
31799 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31800 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
31801 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31802 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
31803 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
31804 .byte 243,68,15,16,104,56 // movss 0x38(%rax),%xmm13
31805 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
31806 .byte 243,68,15,16,112,72 // movss 0x48(%rax),%xmm14
31807 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
31808 .byte 68,15,89,235 // mulps %xmm3,%xmm13
31809 .byte 69,15,88,238 // addps %xmm14,%xmm13
31810 .byte 68,15,89,226 // mulps %xmm2,%xmm12
31811 .byte 69,15,88,229 // addps %xmm13,%xmm12
31812 .byte 69,15,89,217 // mulps %xmm9,%xmm11
31813 .byte 69,15,88,220 // addps %xmm12,%xmm11
31814 .byte 69,15,89,208 // mulps %xmm8,%xmm10
31815 .byte 69,15,88,211 // addps %xmm11,%xmm10
31816 .byte 243,68,15,16,88,12 // movss 0xc(%rax),%xmm11
31817 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31818 .byte 243,68,15,16,96,28 // movss 0x1c(%rax),%xmm12
31819 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
31820 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
31821 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
31822 .byte 243,68,15,16,112,60 // movss 0x3c(%rax),%xmm14
31823 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
31824 .byte 243,68,15,16,120,76 // movss 0x4c(%rax),%xmm15
31825 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
31826 .byte 68,15,89,243 // mulps %xmm3,%xmm14
31827 .byte 69,15,88,247 // addps %xmm15,%xmm14
31828 .byte 68,15,89,234 // mulps %xmm2,%xmm13
31829 .byte 69,15,88,238 // addps %xmm14,%xmm13
31830 .byte 69,15,89,225 // mulps %xmm9,%xmm12
31831 .byte 69,15,88,229 // addps %xmm13,%xmm12
31832 .byte 69,15,89,216 // mulps %xmm8,%xmm11
31833 .byte 69,15,88,220 // addps %xmm12,%xmm11
31834 .byte 72,173 // lods %ds:(%rsi),%rax
31835 .byte 65,15,40,210 // movaps %xmm10,%xmm2
31836 .byte 65,15,40,219 // movaps %xmm11,%xmm3
31837 .byte 255,224 // jmpq *%rax
31838
Mike Reed02640952017-05-19 15:32:13 -040031839HIDDEN _sk_matrix_4x3_sse2
31840.globl _sk_matrix_4x3_sse2
31841FUNCTION(_sk_matrix_4x3_sse2)
31842_sk_matrix_4x3_sse2:
31843 .byte 68,15,40,201 // movaps %xmm1,%xmm9
31844 .byte 68,15,40,192 // movaps %xmm0,%xmm8
31845 .byte 72,173 // lods %ds:(%rsi),%rax
31846 .byte 243,15,16,0 // movss (%rax),%xmm0
31847 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
31848 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
31849 .byte 243,15,16,80,16 // movss 0x10(%rax),%xmm2
31850 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
31851 .byte 243,15,16,88,32 // movss 0x20(%rax),%xmm3
31852 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
31853 .byte 65,15,89,209 // mulps %xmm9,%xmm2
31854 .byte 15,88,211 // addps %xmm3,%xmm2
31855 .byte 65,15,89,192 // mulps %xmm8,%xmm0
31856 .byte 15,88,194 // addps %xmm2,%xmm0
31857 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
31858 .byte 243,15,16,80,20 // movss 0x14(%rax),%xmm2
31859 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
31860 .byte 243,15,16,88,36 // movss 0x24(%rax),%xmm3
31861 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
31862 .byte 65,15,89,209 // mulps %xmm9,%xmm2
31863 .byte 15,88,211 // addps %xmm3,%xmm2
31864 .byte 65,15,89,200 // mulps %xmm8,%xmm1
31865 .byte 15,88,202 // addps %xmm2,%xmm1
31866 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
31867 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
31868 .byte 243,15,16,88,24 // movss 0x18(%rax),%xmm3
31869 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
31870 .byte 243,68,15,16,80,40 // movss 0x28(%rax),%xmm10
31871 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31872 .byte 65,15,89,217 // mulps %xmm9,%xmm3
31873 .byte 65,15,88,218 // addps %xmm10,%xmm3
31874 .byte 65,15,89,208 // mulps %xmm8,%xmm2
31875 .byte 15,88,211 // addps %xmm3,%xmm2
31876 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
31877 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
31878 .byte 243,68,15,16,80,28 // movss 0x1c(%rax),%xmm10
31879 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31880 .byte 243,68,15,16,88,44 // movss 0x2c(%rax),%xmm11
31881 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31882 .byte 69,15,89,209 // mulps %xmm9,%xmm10
31883 .byte 69,15,88,211 // addps %xmm11,%xmm10
31884 .byte 65,15,89,216 // mulps %xmm8,%xmm3
31885 .byte 65,15,88,218 // addps %xmm10,%xmm3
31886 .byte 72,173 // lods %ds:(%rsi),%rax
31887 .byte 255,224 // jmpq *%rax
31888
Mike Klein7c4af542017-03-29 18:21:14 -040031889HIDDEN _sk_matrix_perspective_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040031890.globl _sk_matrix_perspective_sse2
Mike Klein86714282017-04-13 17:37:38 -040031891FUNCTION(_sk_matrix_perspective_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040031892_sk_matrix_perspective_sse2:
31893 .byte 68,15,40,192 // movaps %xmm0,%xmm8
31894 .byte 72,173 // lods %ds:(%rsi),%rax
31895 .byte 243,15,16,0 // movss (%rax),%xmm0
31896 .byte 243,68,15,16,72,4 // movss 0x4(%rax),%xmm9
31897 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
31898 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
31899 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
31900 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31901 .byte 68,15,89,201 // mulps %xmm1,%xmm9
31902 .byte 69,15,88,202 // addps %xmm10,%xmm9
31903 .byte 65,15,89,192 // mulps %xmm8,%xmm0
31904 .byte 65,15,88,193 // addps %xmm9,%xmm0
31905 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
31906 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
31907 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
31908 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31909 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
31910 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31911 .byte 68,15,89,209 // mulps %xmm1,%xmm10
31912 .byte 69,15,88,211 // addps %xmm11,%xmm10
31913 .byte 69,15,89,200 // mulps %xmm8,%xmm9
31914 .byte 69,15,88,202 // addps %xmm10,%xmm9
31915 .byte 243,68,15,16,80,24 // movss 0x18(%rax),%xmm10
31916 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
31917 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
31918 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
31919 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
31920 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
31921 .byte 68,15,89,217 // mulps %xmm1,%xmm11
31922 .byte 69,15,88,220 // addps %xmm12,%xmm11
31923 .byte 69,15,89,208 // mulps %xmm8,%xmm10
31924 .byte 69,15,88,211 // addps %xmm11,%xmm10
31925 .byte 65,15,83,202 // rcpps %xmm10,%xmm1
31926 .byte 15,89,193 // mulps %xmm1,%xmm0
31927 .byte 68,15,89,201 // mulps %xmm1,%xmm9
31928 .byte 72,173 // lods %ds:(%rsi),%rax
31929 .byte 65,15,40,201 // movaps %xmm9,%xmm1
31930 .byte 255,224 // jmpq *%rax
31931
Herb Derby4de13042017-05-15 10:49:39 -040031932HIDDEN _sk_evenly_spaced_gradient_sse2
31933.globl _sk_evenly_spaced_gradient_sse2
31934FUNCTION(_sk_evenly_spaced_gradient_sse2)
31935_sk_evenly_spaced_gradient_sse2:
Herb Derby7b4202d2017-04-10 10:52:34 -040031936 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040031937 .byte 72,139,8 // mov (%rax),%rcx
Herb Derby4de13042017-05-15 10:49:39 -040031938 .byte 76,139,88,8 // mov 0x8(%rax),%r11
Herb Derby7b4202d2017-04-10 10:52:34 -040031939 .byte 72,255,201 // dec %rcx
Mike Klein8ca33562017-05-23 08:07:43 -040031940 .byte 120,7 // js 43a9 <_sk_evenly_spaced_gradient_sse2+0x15>
Herb Derby4de13042017-05-15 10:49:39 -040031941 .byte 243,72,15,42,201 // cvtsi2ss %rcx,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040031942 .byte 235,21 // jmp 43be <_sk_evenly_spaced_gradient_sse2+0x2a>
Herb Derby4de13042017-05-15 10:49:39 -040031943 .byte 73,137,200 // mov %rcx,%r8
31944 .byte 73,209,232 // shr %r8
31945 .byte 131,225,1 // and $0x1,%ecx
31946 .byte 76,9,193 // or %r8,%rcx
31947 .byte 243,72,15,42,201 // cvtsi2ss %rcx,%xmm1
31948 .byte 243,15,88,201 // addss %xmm1,%xmm1
31949 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
31950 .byte 15,89,200 // mulps %xmm0,%xmm1
31951 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
31952 .byte 102,15,112,209,78 // pshufd $0x4e,%xmm1,%xmm2
31953 .byte 102,73,15,126,210 // movq %xmm2,%r10
31954 .byte 69,137,208 // mov %r10d,%r8d
31955 .byte 73,193,234,32 // shr $0x20,%r10
31956 .byte 102,72,15,126,201 // movq %xmm1,%rcx
31957 .byte 65,137,201 // mov %ecx,%r9d
31958 .byte 72,193,233,32 // shr $0x20,%rcx
31959 .byte 243,65,15,16,12,139 // movss (%r11,%rcx,4),%xmm1
31960 .byte 243,67,15,16,20,147 // movss (%r11,%r10,4),%xmm2
31961 .byte 15,20,202 // unpcklps %xmm2,%xmm1
31962 .byte 243,71,15,16,4,139 // movss (%r11,%r9,4),%xmm8
31963 .byte 243,67,15,16,20,131 // movss (%r11,%r8,4),%xmm2
31964 .byte 68,15,20,194 // unpcklps %xmm2,%xmm8
31965 .byte 68,15,20,193 // unpcklps %xmm1,%xmm8
31966 .byte 76,139,88,40 // mov 0x28(%rax),%r11
31967 .byte 243,65,15,16,12,139 // movss (%r11,%rcx,4),%xmm1
31968 .byte 243,67,15,16,20,147 // movss (%r11,%r10,4),%xmm2
31969 .byte 15,20,202 // unpcklps %xmm2,%xmm1
31970 .byte 243,71,15,16,12,139 // movss (%r11,%r9,4),%xmm9
31971 .byte 243,67,15,16,20,131 // movss (%r11,%r8,4),%xmm2
31972 .byte 68,15,20,202 // unpcklps %xmm2,%xmm9
31973 .byte 68,15,20,201 // unpcklps %xmm1,%xmm9
31974 .byte 76,139,88,16 // mov 0x10(%rax),%r11
31975 .byte 243,65,15,16,20,139 // movss (%r11,%rcx,4),%xmm2
31976 .byte 243,67,15,16,12,147 // movss (%r11,%r10,4),%xmm1
31977 .byte 15,20,209 // unpcklps %xmm1,%xmm2
31978 .byte 243,67,15,16,12,139 // movss (%r11,%r9,4),%xmm1
31979 .byte 243,67,15,16,28,131 // movss (%r11,%r8,4),%xmm3
31980 .byte 15,20,203 // unpcklps %xmm3,%xmm1
31981 .byte 15,20,202 // unpcklps %xmm2,%xmm1
31982 .byte 76,139,88,48 // mov 0x30(%rax),%r11
31983 .byte 243,65,15,16,20,139 // movss (%r11,%rcx,4),%xmm2
31984 .byte 243,67,15,16,28,147 // movss (%r11,%r10,4),%xmm3
31985 .byte 15,20,211 // unpcklps %xmm3,%xmm2
31986 .byte 243,71,15,16,20,139 // movss (%r11,%r9,4),%xmm10
31987 .byte 243,67,15,16,28,131 // movss (%r11,%r8,4),%xmm3
31988 .byte 68,15,20,211 // unpcklps %xmm3,%xmm10
31989 .byte 68,15,20,210 // unpcklps %xmm2,%xmm10
31990 .byte 76,139,88,24 // mov 0x18(%rax),%r11
31991 .byte 243,69,15,16,28,139 // movss (%r11,%rcx,4),%xmm11
31992 .byte 243,67,15,16,20,147 // movss (%r11,%r10,4),%xmm2
31993 .byte 68,15,20,218 // unpcklps %xmm2,%xmm11
31994 .byte 243,67,15,16,20,139 // movss (%r11,%r9,4),%xmm2
31995 .byte 243,67,15,16,28,131 // movss (%r11,%r8,4),%xmm3
31996 .byte 15,20,211 // unpcklps %xmm3,%xmm2
31997 .byte 65,15,20,211 // unpcklps %xmm11,%xmm2
31998 .byte 76,139,88,56 // mov 0x38(%rax),%r11
31999 .byte 243,69,15,16,36,139 // movss (%r11,%rcx,4),%xmm12
32000 .byte 243,67,15,16,28,147 // movss (%r11,%r10,4),%xmm3
32001 .byte 68,15,20,227 // unpcklps %xmm3,%xmm12
32002 .byte 243,71,15,16,28,139 // movss (%r11,%r9,4),%xmm11
32003 .byte 243,67,15,16,28,131 // movss (%r11,%r8,4),%xmm3
32004 .byte 68,15,20,219 // unpcklps %xmm3,%xmm11
32005 .byte 69,15,20,220 // unpcklps %xmm12,%xmm11
32006 .byte 76,139,88,32 // mov 0x20(%rax),%r11
32007 .byte 243,69,15,16,36,139 // movss (%r11,%rcx,4),%xmm12
32008 .byte 243,67,15,16,28,147 // movss (%r11,%r10,4),%xmm3
32009 .byte 68,15,20,227 // unpcklps %xmm3,%xmm12
32010 .byte 243,67,15,16,28,139 // movss (%r11,%r9,4),%xmm3
32011 .byte 243,71,15,16,44,131 // movss (%r11,%r8,4),%xmm13
32012 .byte 65,15,20,221 // unpcklps %xmm13,%xmm3
32013 .byte 65,15,20,220 // unpcklps %xmm12,%xmm3
32014 .byte 72,139,64,64 // mov 0x40(%rax),%rax
32015 .byte 243,68,15,16,36,136 // movss (%rax,%rcx,4),%xmm12
32016 .byte 243,70,15,16,44,144 // movss (%rax,%r10,4),%xmm13
32017 .byte 69,15,20,229 // unpcklps %xmm13,%xmm12
32018 .byte 243,70,15,16,44,136 // movss (%rax,%r9,4),%xmm13
32019 .byte 243,70,15,16,52,128 // movss (%rax,%r8,4),%xmm14
32020 .byte 69,15,20,238 // unpcklps %xmm14,%xmm13
32021 .byte 69,15,20,236 // unpcklps %xmm12,%xmm13
Herb Derby7b4202d2017-04-10 10:52:34 -040032022 .byte 68,15,89,192 // mulps %xmm0,%xmm8
32023 .byte 69,15,88,193 // addps %xmm9,%xmm8
32024 .byte 15,89,200 // mulps %xmm0,%xmm1
32025 .byte 65,15,88,202 // addps %xmm10,%xmm1
32026 .byte 15,89,208 // mulps %xmm0,%xmm2
32027 .byte 65,15,88,211 // addps %xmm11,%xmm2
32028 .byte 15,89,216 // mulps %xmm0,%xmm3
Herb Derby4de13042017-05-15 10:49:39 -040032029 .byte 65,15,88,221 // addps %xmm13,%xmm3
Herb Derby7b4202d2017-04-10 10:52:34 -040032030 .byte 72,173 // lods %ds:(%rsi),%rax
32031 .byte 65,15,40,192 // movaps %xmm8,%xmm0
32032 .byte 255,224 // jmpq *%rax
32033
Herb Derby4de13042017-05-15 10:49:39 -040032034HIDDEN _sk_gradient_sse2
32035.globl _sk_gradient_sse2
32036FUNCTION(_sk_gradient_sse2)
32037_sk_gradient_sse2:
32038 .byte 72,173 // lods %ds:(%rsi),%rax
32039 .byte 76,139,0 // mov (%rax),%r8
32040 .byte 102,15,239,201 // pxor %xmm1,%xmm1
32041 .byte 73,131,248,2 // cmp $0x2,%r8
Mike Klein8ca33562017-05-23 08:07:43 -040032042 .byte 114,50 // jb 4581 <_sk_gradient_sse2+0x41>
Herb Derby4de13042017-05-15 10:49:39 -040032043 .byte 72,139,72,72 // mov 0x48(%rax),%rcx
32044 .byte 73,255,200 // dec %r8
32045 .byte 72,131,193,4 // add $0x4,%rcx
32046 .byte 102,15,239,201 // pxor %xmm1,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040032047 .byte 15,40,21,91,21,0,0 // movaps 0x155b(%rip),%xmm2 # 5ac0 <_sk_callback_sse2+0xee5>
Herb Derby4de13042017-05-15 10:49:39 -040032048 .byte 243,15,16,25 // movss (%rcx),%xmm3
32049 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
32050 .byte 15,194,216,2 // cmpleps %xmm0,%xmm3
32051 .byte 15,84,218 // andps %xmm2,%xmm3
32052 .byte 102,15,254,203 // paddd %xmm3,%xmm1
32053 .byte 72,131,193,4 // add $0x4,%rcx
32054 .byte 73,255,200 // dec %r8
Mike Klein8ca33562017-05-23 08:07:43 -040032055 .byte 117,228 // jne 4565 <_sk_gradient_sse2+0x25>
Herb Derby4de13042017-05-15 10:49:39 -040032056 .byte 65,86 // push %r14
32057 .byte 83 // push %rbx
32058 .byte 102,15,112,209,78 // pshufd $0x4e,%xmm1,%xmm2
32059 .byte 102,73,15,126,210 // movq %xmm2,%r10
32060 .byte 69,137,208 // mov %r10d,%r8d
32061 .byte 73,193,234,32 // shr $0x20,%r10
32062 .byte 102,72,15,126,201 // movq %xmm1,%rcx
32063 .byte 65,137,201 // mov %ecx,%r9d
32064 .byte 72,193,233,32 // shr $0x20,%rcx
32065 .byte 76,139,88,8 // mov 0x8(%rax),%r11
32066 .byte 76,139,112,16 // mov 0x10(%rax),%r14
32067 .byte 243,65,15,16,12,139 // movss (%r11,%rcx,4),%xmm1
32068 .byte 243,67,15,16,20,147 // movss (%r11,%r10,4),%xmm2
32069 .byte 15,20,202 // unpcklps %xmm2,%xmm1
32070 .byte 243,71,15,16,4,139 // movss (%r11,%r9,4),%xmm8
32071 .byte 243,67,15,16,20,131 // movss (%r11,%r8,4),%xmm2
32072 .byte 68,15,20,194 // unpcklps %xmm2,%xmm8
32073 .byte 68,15,20,193 // unpcklps %xmm1,%xmm8
32074 .byte 72,139,88,40 // mov 0x28(%rax),%rbx
32075 .byte 243,15,16,12,139 // movss (%rbx,%rcx,4),%xmm1
32076 .byte 243,66,15,16,20,147 // movss (%rbx,%r10,4),%xmm2
32077 .byte 15,20,202 // unpcklps %xmm2,%xmm1
32078 .byte 243,70,15,16,12,139 // movss (%rbx,%r9,4),%xmm9
32079 .byte 243,66,15,16,20,131 // movss (%rbx,%r8,4),%xmm2
32080 .byte 68,15,20,202 // unpcklps %xmm2,%xmm9
32081 .byte 68,15,20,201 // unpcklps %xmm1,%xmm9
32082 .byte 243,65,15,16,20,142 // movss (%r14,%rcx,4),%xmm2
32083 .byte 243,67,15,16,12,150 // movss (%r14,%r10,4),%xmm1
32084 .byte 15,20,209 // unpcklps %xmm1,%xmm2
32085 .byte 243,67,15,16,12,142 // movss (%r14,%r9,4),%xmm1
32086 .byte 243,67,15,16,28,134 // movss (%r14,%r8,4),%xmm3
32087 .byte 15,20,203 // unpcklps %xmm3,%xmm1
32088 .byte 15,20,202 // unpcklps %xmm2,%xmm1
32089 .byte 72,139,88,48 // mov 0x30(%rax),%rbx
32090 .byte 243,15,16,20,139 // movss (%rbx,%rcx,4),%xmm2
32091 .byte 243,66,15,16,28,147 // movss (%rbx,%r10,4),%xmm3
32092 .byte 15,20,211 // unpcklps %xmm3,%xmm2
32093 .byte 243,70,15,16,20,139 // movss (%rbx,%r9,4),%xmm10
32094 .byte 243,66,15,16,28,131 // movss (%rbx,%r8,4),%xmm3
32095 .byte 68,15,20,211 // unpcklps %xmm3,%xmm10
32096 .byte 68,15,20,210 // unpcklps %xmm2,%xmm10
32097 .byte 72,139,88,24 // mov 0x18(%rax),%rbx
32098 .byte 243,68,15,16,28,139 // movss (%rbx,%rcx,4),%xmm11
32099 .byte 243,66,15,16,20,147 // movss (%rbx,%r10,4),%xmm2
32100 .byte 68,15,20,218 // unpcklps %xmm2,%xmm11
32101 .byte 243,66,15,16,20,139 // movss (%rbx,%r9,4),%xmm2
32102 .byte 243,66,15,16,28,131 // movss (%rbx,%r8,4),%xmm3
32103 .byte 15,20,211 // unpcklps %xmm3,%xmm2
32104 .byte 65,15,20,211 // unpcklps %xmm11,%xmm2
32105 .byte 72,139,88,56 // mov 0x38(%rax),%rbx
32106 .byte 243,68,15,16,36,139 // movss (%rbx,%rcx,4),%xmm12
32107 .byte 243,66,15,16,28,147 // movss (%rbx,%r10,4),%xmm3
32108 .byte 68,15,20,227 // unpcklps %xmm3,%xmm12
32109 .byte 243,70,15,16,28,139 // movss (%rbx,%r9,4),%xmm11
32110 .byte 243,66,15,16,28,131 // movss (%rbx,%r8,4),%xmm3
32111 .byte 68,15,20,219 // unpcklps %xmm3,%xmm11
32112 .byte 69,15,20,220 // unpcklps %xmm12,%xmm11
32113 .byte 72,139,88,32 // mov 0x20(%rax),%rbx
32114 .byte 243,68,15,16,36,139 // movss (%rbx,%rcx,4),%xmm12
32115 .byte 243,66,15,16,28,147 // movss (%rbx,%r10,4),%xmm3
32116 .byte 68,15,20,227 // unpcklps %xmm3,%xmm12
32117 .byte 243,66,15,16,28,139 // movss (%rbx,%r9,4),%xmm3
32118 .byte 243,70,15,16,44,131 // movss (%rbx,%r8,4),%xmm13
32119 .byte 65,15,20,221 // unpcklps %xmm13,%xmm3
32120 .byte 65,15,20,220 // unpcklps %xmm12,%xmm3
32121 .byte 72,139,64,64 // mov 0x40(%rax),%rax
32122 .byte 243,68,15,16,36,136 // movss (%rax,%rcx,4),%xmm12
32123 .byte 243,70,15,16,44,144 // movss (%rax,%r10,4),%xmm13
32124 .byte 69,15,20,229 // unpcklps %xmm13,%xmm12
32125 .byte 243,70,15,16,44,136 // movss (%rax,%r9,4),%xmm13
32126 .byte 243,70,15,16,52,128 // movss (%rax,%r8,4),%xmm14
32127 .byte 69,15,20,238 // unpcklps %xmm14,%xmm13
32128 .byte 69,15,20,236 // unpcklps %xmm12,%xmm13
32129 .byte 68,15,89,192 // mulps %xmm0,%xmm8
32130 .byte 69,15,88,193 // addps %xmm9,%xmm8
32131 .byte 15,89,200 // mulps %xmm0,%xmm1
32132 .byte 65,15,88,202 // addps %xmm10,%xmm1
32133 .byte 15,89,208 // mulps %xmm0,%xmm2
32134 .byte 65,15,88,211 // addps %xmm11,%xmm2
32135 .byte 15,89,216 // mulps %xmm0,%xmm3
32136 .byte 65,15,88,221 // addps %xmm13,%xmm3
32137 .byte 72,173 // lods %ds:(%rsi),%rax
32138 .byte 65,15,40,192 // movaps %xmm8,%xmm0
32139 .byte 91 // pop %rbx
32140 .byte 65,94 // pop %r14
32141 .byte 255,224 // jmpq *%rax
32142
Mike Klein5c7960b2017-05-11 10:59:22 -040032143HIDDEN _sk_evenly_spaced_2_stop_gradient_sse2
32144.globl _sk_evenly_spaced_2_stop_gradient_sse2
32145FUNCTION(_sk_evenly_spaced_2_stop_gradient_sse2)
32146_sk_evenly_spaced_2_stop_gradient_sse2:
Mike Klein8a823fa2017-04-05 17:29:26 -040032147 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040032148 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040032149 .byte 243,15,16,0 // movss (%rax),%xmm0
32150 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Klein8a823fa2017-04-05 17:29:26 -040032151 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040032152 .byte 243,15,16,80,16 // movss 0x10(%rax),%xmm2
32153 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040032154 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040032155 .byte 15,88,194 // addps %xmm2,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040032156 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040032157 .byte 243,15,16,80,20 // movss 0x14(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040032158 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
32159 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040032160 .byte 15,88,202 // addps %xmm2,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040032161 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040032162 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040032163 .byte 243,15,16,88,24 // movss 0x18(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040032164 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
32165 .byte 65,15,89,208 // mulps %xmm8,%xmm2
32166 .byte 15,88,211 // addps %xmm3,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040032167 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040032168 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Herb Derby7b4202d2017-04-10 10:52:34 -040032169 .byte 243,68,15,16,72,28 // movss 0x1c(%rax),%xmm9
Mike Klein8a823fa2017-04-05 17:29:26 -040032170 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
32171 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040032172 .byte 65,15,88,217 // addps %xmm9,%xmm3
32173 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040032174 .byte 255,224 // jmpq *%rax
Mike Klein0a904492017-04-12 12:52:48 -040032175
Mike Klein5c7960b2017-05-11 10:59:22 -040032176HIDDEN _sk_xy_to_unit_angle_sse2
32177.globl _sk_xy_to_unit_angle_sse2
32178FUNCTION(_sk_xy_to_unit_angle_sse2)
32179_sk_xy_to_unit_angle_sse2:
Herb Derby7eb86982017-05-02 19:04:39 -040032180 .byte 68,15,40,192 // movaps %xmm0,%xmm8
32181 .byte 15,87,192 // xorps %xmm0,%xmm0
32182 .byte 69,15,87,201 // xorps %xmm9,%xmm9
32183 .byte 69,15,92,200 // subps %xmm8,%xmm9
32184 .byte 69,15,84,200 // andps %xmm8,%xmm9
32185 .byte 69,15,87,210 // xorps %xmm10,%xmm10
32186 .byte 68,15,92,209 // subps %xmm1,%xmm10
32187 .byte 68,15,84,209 // andps %xmm1,%xmm10
32188 .byte 69,15,40,217 // movaps %xmm9,%xmm11
32189 .byte 69,15,93,218 // minps %xmm10,%xmm11
32190 .byte 69,15,40,225 // movaps %xmm9,%xmm12
32191 .byte 69,15,95,226 // maxps %xmm10,%xmm12
32192 .byte 69,15,94,220 // divps %xmm12,%xmm11
32193 .byte 69,15,40,227 // movaps %xmm11,%xmm12
32194 .byte 69,15,89,228 // mulps %xmm12,%xmm12
Mike Klein8ca33562017-05-23 08:07:43 -040032195 .byte 68,15,40,45,29,19,0,0 // movaps 0x131d(%rip),%xmm13 # 5ad0 <_sk_callback_sse2+0xef5>
Herb Derby7eb86982017-05-02 19:04:39 -040032196 .byte 69,15,89,236 // mulps %xmm12,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040032197 .byte 68,15,88,45,33,19,0,0 // addps 0x1321(%rip),%xmm13 # 5ae0 <_sk_callback_sse2+0xf05>
Herb Derby7eb86982017-05-02 19:04:39 -040032198 .byte 69,15,89,236 // mulps %xmm12,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040032199 .byte 68,15,88,45,37,19,0,0 // addps 0x1325(%rip),%xmm13 # 5af0 <_sk_callback_sse2+0xf15>
Herb Derby7eb86982017-05-02 19:04:39 -040032200 .byte 69,15,89,236 // mulps %xmm12,%xmm13
Mike Klein8ca33562017-05-23 08:07:43 -040032201 .byte 68,15,88,45,41,19,0,0 // addps 0x1329(%rip),%xmm13 # 5b00 <_sk_callback_sse2+0xf25>
Herb Derby7eb86982017-05-02 19:04:39 -040032202 .byte 69,15,89,235 // mulps %xmm11,%xmm13
32203 .byte 69,15,194,202,1 // cmpltps %xmm10,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040032204 .byte 68,15,40,21,40,19,0,0 // movaps 0x1328(%rip),%xmm10 # 5b10 <_sk_callback_sse2+0xf35>
Herb Derby7eb86982017-05-02 19:04:39 -040032205 .byte 69,15,92,213 // subps %xmm13,%xmm10
32206 .byte 69,15,84,209 // andps %xmm9,%xmm10
32207 .byte 69,15,85,205 // andnps %xmm13,%xmm9
32208 .byte 69,15,86,202 // orps %xmm10,%xmm9
32209 .byte 68,15,194,192,1 // cmpltps %xmm0,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032210 .byte 68,15,40,21,27,19,0,0 // movaps 0x131b(%rip),%xmm10 # 5b20 <_sk_callback_sse2+0xf45>
Herb Derby7eb86982017-05-02 19:04:39 -040032211 .byte 69,15,92,209 // subps %xmm9,%xmm10
32212 .byte 69,15,84,208 // andps %xmm8,%xmm10
32213 .byte 69,15,85,193 // andnps %xmm9,%xmm8
32214 .byte 69,15,86,194 // orps %xmm10,%xmm8
32215 .byte 68,15,40,201 // movaps %xmm1,%xmm9
32216 .byte 68,15,194,200,1 // cmpltps %xmm0,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040032217 .byte 68,15,40,21,10,19,0,0 // movaps 0x130a(%rip),%xmm10 # 5b30 <_sk_callback_sse2+0xf55>
Herb Derby7eb86982017-05-02 19:04:39 -040032218 .byte 69,15,92,208 // subps %xmm8,%xmm10
32219 .byte 69,15,84,209 // andps %xmm9,%xmm10
32220 .byte 69,15,85,200 // andnps %xmm8,%xmm9
32221 .byte 69,15,86,202 // orps %xmm10,%xmm9
32222 .byte 65,15,194,193,7 // cmpordps %xmm9,%xmm0
32223 .byte 65,15,84,193 // andps %xmm9,%xmm0
32224 .byte 72,173 // lods %ds:(%rsi),%rax
32225 .byte 255,224 // jmpq *%rax
32226
Herb Derby090fbf82017-05-08 15:10:36 -040032227HIDDEN _sk_xy_to_radius_sse2
32228.globl _sk_xy_to_radius_sse2
32229FUNCTION(_sk_xy_to_radius_sse2)
32230_sk_xy_to_radius_sse2:
32231 .byte 15,89,192 // mulps %xmm0,%xmm0
32232 .byte 68,15,40,193 // movaps %xmm1,%xmm8
32233 .byte 69,15,89,192 // mulps %xmm8,%xmm8
32234 .byte 68,15,88,192 // addps %xmm0,%xmm8
Mike Kleinfd35c742017-05-15 15:55:54 -040032235 .byte 65,15,81,192 // sqrtps %xmm8,%xmm0
Herb Derby090fbf82017-05-08 15:10:36 -040032236 .byte 72,173 // lods %ds:(%rsi),%rax
32237 .byte 255,224 // jmpq *%rax
32238
Mike Klein0a904492017-04-12 12:52:48 -040032239HIDDEN _sk_save_xy_sse2
32240.globl _sk_save_xy_sse2
Mike Klein86714282017-04-13 17:37:38 -040032241FUNCTION(_sk_save_xy_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032242_sk_save_xy_sse2:
32243 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040032244 .byte 68,15,40,5,220,18,0,0 // movaps 0x12dc(%rip),%xmm8 # 5b40 <_sk_callback_sse2+0xf65>
Mike Kleinfe560a82017-05-01 12:56:35 -040032245 .byte 15,17,0 // movups %xmm0,(%rax)
32246 .byte 68,15,40,200 // movaps %xmm0,%xmm9
32247 .byte 69,15,88,200 // addps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040032248 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
32249 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
32250 .byte 69,15,40,217 // movaps %xmm9,%xmm11
32251 .byte 69,15,194,218,1 // cmpltps %xmm10,%xmm11
Mike Klein8ca33562017-05-23 08:07:43 -040032252 .byte 68,15,40,37,199,18,0,0 // movaps 0x12c7(%rip),%xmm12 # 5b50 <_sk_callback_sse2+0xf75>
Mike Klein0a904492017-04-12 12:52:48 -040032253 .byte 69,15,84,220 // andps %xmm12,%xmm11
32254 .byte 69,15,92,211 // subps %xmm11,%xmm10
32255 .byte 69,15,92,202 // subps %xmm10,%xmm9
32256 .byte 68,15,88,193 // addps %xmm1,%xmm8
32257 .byte 243,69,15,91,208 // cvttps2dq %xmm8,%xmm10
32258 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
32259 .byte 69,15,40,216 // movaps %xmm8,%xmm11
32260 .byte 69,15,194,218,1 // cmpltps %xmm10,%xmm11
32261 .byte 69,15,84,220 // andps %xmm12,%xmm11
32262 .byte 69,15,92,211 // subps %xmm11,%xmm10
32263 .byte 69,15,92,194 // subps %xmm10,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040032264 .byte 15,17,72,32 // movups %xmm1,0x20(%rax)
32265 .byte 68,15,17,72,64 // movups %xmm9,0x40(%rax)
32266 .byte 68,15,17,64,96 // movups %xmm8,0x60(%rax)
32267 .byte 72,173 // lods %ds:(%rsi),%rax
32268 .byte 255,224 // jmpq *%rax
32269
32270HIDDEN _sk_accumulate_sse2
32271.globl _sk_accumulate_sse2
Mike Klein86714282017-04-13 17:37:38 -040032272FUNCTION(_sk_accumulate_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032273_sk_accumulate_sse2:
32274 .byte 72,173 // lods %ds:(%rsi),%rax
32275 .byte 68,15,16,128,128,0,0,0 // movups 0x80(%rax),%xmm8
32276 .byte 68,15,16,136,160,0,0,0 // movups 0xa0(%rax),%xmm9
32277 .byte 69,15,89,200 // mulps %xmm8,%xmm9
32278 .byte 69,15,40,193 // movaps %xmm9,%xmm8
32279 .byte 68,15,89,192 // mulps %xmm0,%xmm8
32280 .byte 65,15,88,224 // addps %xmm8,%xmm4
32281 .byte 69,15,40,193 // movaps %xmm9,%xmm8
32282 .byte 68,15,89,193 // mulps %xmm1,%xmm8
32283 .byte 65,15,88,232 // addps %xmm8,%xmm5
32284 .byte 69,15,40,193 // movaps %xmm9,%xmm8
32285 .byte 68,15,89,194 // mulps %xmm2,%xmm8
32286 .byte 65,15,88,240 // addps %xmm8,%xmm6
32287 .byte 68,15,89,203 // mulps %xmm3,%xmm9
32288 .byte 65,15,88,249 // addps %xmm9,%xmm7
32289 .byte 72,173 // lods %ds:(%rsi),%rax
32290 .byte 255,224 // jmpq *%rax
32291
32292HIDDEN _sk_bilinear_nx_sse2
32293.globl _sk_bilinear_nx_sse2
Mike Klein86714282017-04-13 17:37:38 -040032294FUNCTION(_sk_bilinear_nx_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032295_sk_bilinear_nx_sse2:
32296 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040032297 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040032298 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032299 .byte 15,88,5,64,18,0,0 // addps 0x1240(%rip),%xmm0 # 5b60 <_sk_callback_sse2+0xf85>
32300 .byte 68,15,40,13,72,18,0,0 // movaps 0x1248(%rip),%xmm9 # 5b70 <_sk_callback_sse2+0xf95>
Mike Kleinfe560a82017-05-01 12:56:35 -040032301 .byte 69,15,92,200 // subps %xmm8,%xmm9
32302 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040032303 .byte 72,173 // lods %ds:(%rsi),%rax
32304 .byte 255,224 // jmpq *%rax
32305
32306HIDDEN _sk_bilinear_px_sse2
32307.globl _sk_bilinear_px_sse2
Mike Klein86714282017-04-13 17:37:38 -040032308FUNCTION(_sk_bilinear_px_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032309_sk_bilinear_px_sse2:
32310 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040032311 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040032312 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032313 .byte 15,88,5,55,18,0,0 // addps 0x1237(%rip),%xmm0 # 5b80 <_sk_callback_sse2+0xfa5>
Mike Kleinfe560a82017-05-01 12:56:35 -040032314 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040032315 .byte 72,173 // lods %ds:(%rsi),%rax
32316 .byte 255,224 // jmpq *%rax
32317
32318HIDDEN _sk_bilinear_ny_sse2
32319.globl _sk_bilinear_ny_sse2
Mike Klein86714282017-04-13 17:37:38 -040032320FUNCTION(_sk_bilinear_ny_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032321_sk_bilinear_ny_sse2:
32322 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040032323 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040032324 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032325 .byte 15,88,13,41,18,0,0 // addps 0x1229(%rip),%xmm1 # 5b90 <_sk_callback_sse2+0xfb5>
32326 .byte 68,15,40,13,49,18,0,0 // movaps 0x1231(%rip),%xmm9 # 5ba0 <_sk_callback_sse2+0xfc5>
Mike Kleinfe560a82017-05-01 12:56:35 -040032327 .byte 69,15,92,200 // subps %xmm8,%xmm9
32328 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040032329 .byte 72,173 // lods %ds:(%rsi),%rax
32330 .byte 255,224 // jmpq *%rax
32331
32332HIDDEN _sk_bilinear_py_sse2
32333.globl _sk_bilinear_py_sse2
Mike Klein86714282017-04-13 17:37:38 -040032334FUNCTION(_sk_bilinear_py_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032335_sk_bilinear_py_sse2:
32336 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040032337 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040032338 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032339 .byte 15,88,13,31,18,0,0 // addps 0x121f(%rip),%xmm1 # 5bb0 <_sk_callback_sse2+0xfd5>
Mike Kleinfe560a82017-05-01 12:56:35 -040032340 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040032341 .byte 72,173 // lods %ds:(%rsi),%rax
32342 .byte 255,224 // jmpq *%rax
32343
32344HIDDEN _sk_bicubic_n3x_sse2
32345.globl _sk_bicubic_n3x_sse2
Mike Klein86714282017-04-13 17:37:38 -040032346FUNCTION(_sk_bicubic_n3x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032347_sk_bicubic_n3x_sse2:
32348 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040032349 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040032350 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032351 .byte 15,88,5,18,18,0,0 // addps 0x1212(%rip),%xmm0 # 5bc0 <_sk_callback_sse2+0xfe5>
32352 .byte 68,15,40,13,26,18,0,0 // movaps 0x121a(%rip),%xmm9 # 5bd0 <_sk_callback_sse2+0xff5>
Mike Kleinfe560a82017-05-01 12:56:35 -040032353 .byte 69,15,92,200 // subps %xmm8,%xmm9
32354 .byte 69,15,40,193 // movaps %xmm9,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040032355 .byte 69,15,89,192 // mulps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032356 .byte 68,15,89,13,22,18,0,0 // mulps 0x1216(%rip),%xmm9 # 5be0 <_sk_callback_sse2+0x1005>
32357 .byte 68,15,88,13,30,18,0,0 // addps 0x121e(%rip),%xmm9 # 5bf0 <_sk_callback_sse2+0x1015>
Mike Klein0a904492017-04-12 12:52:48 -040032358 .byte 69,15,89,200 // mulps %xmm8,%xmm9
32359 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
32360 .byte 72,173 // lods %ds:(%rsi),%rax
32361 .byte 255,224 // jmpq *%rax
32362
32363HIDDEN _sk_bicubic_n1x_sse2
32364.globl _sk_bicubic_n1x_sse2
Mike Klein86714282017-04-13 17:37:38 -040032365FUNCTION(_sk_bicubic_n1x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032366_sk_bicubic_n1x_sse2:
32367 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040032368 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040032369 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032370 .byte 15,88,5,13,18,0,0 // addps 0x120d(%rip),%xmm0 # 5c00 <_sk_callback_sse2+0x1025>
32371 .byte 68,15,40,13,21,18,0,0 // movaps 0x1215(%rip),%xmm9 # 5c10 <_sk_callback_sse2+0x1035>
Mike Kleinfe560a82017-05-01 12:56:35 -040032372 .byte 69,15,92,200 // subps %xmm8,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040032373 .byte 68,15,40,5,25,18,0,0 // movaps 0x1219(%rip),%xmm8 # 5c20 <_sk_callback_sse2+0x1045>
Mike Kleinfe560a82017-05-01 12:56:35 -040032374 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032375 .byte 68,15,88,5,29,18,0,0 // addps 0x121d(%rip),%xmm8 # 5c30 <_sk_callback_sse2+0x1055>
Mike Kleinfe560a82017-05-01 12:56:35 -040032376 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032377 .byte 68,15,88,5,33,18,0,0 // addps 0x1221(%rip),%xmm8 # 5c40 <_sk_callback_sse2+0x1065>
Mike Kleinfe560a82017-05-01 12:56:35 -040032378 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032379 .byte 68,15,88,5,37,18,0,0 // addps 0x1225(%rip),%xmm8 # 5c50 <_sk_callback_sse2+0x1075>
Mike Kleinfe560a82017-05-01 12:56:35 -040032380 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040032381 .byte 72,173 // lods %ds:(%rsi),%rax
32382 .byte 255,224 // jmpq *%rax
32383
32384HIDDEN _sk_bicubic_p1x_sse2
32385.globl _sk_bicubic_p1x_sse2
Mike Klein86714282017-04-13 17:37:38 -040032386FUNCTION(_sk_bicubic_p1x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032387_sk_bicubic_p1x_sse2:
32388 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040032389 .byte 68,15,40,5,31,18,0,0 // movaps 0x121f(%rip),%xmm8 # 5c60 <_sk_callback_sse2+0x1085>
Mike Klein0a904492017-04-12 12:52:48 -040032390 .byte 15,16,0 // movups (%rax),%xmm0
32391 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
32392 .byte 65,15,88,192 // addps %xmm8,%xmm0
Mike Klein8ca33562017-05-23 08:07:43 -040032393 .byte 68,15,40,21,27,18,0,0 // movaps 0x121b(%rip),%xmm10 # 5c70 <_sk_callback_sse2+0x1095>
Mike Klein0a904492017-04-12 12:52:48 -040032394 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040032395 .byte 68,15,88,21,31,18,0,0 // addps 0x121f(%rip),%xmm10 # 5c80 <_sk_callback_sse2+0x10a5>
Mike Klein0a904492017-04-12 12:52:48 -040032396 .byte 69,15,89,209 // mulps %xmm9,%xmm10
32397 .byte 69,15,88,208 // addps %xmm8,%xmm10
Mike Klein0a904492017-04-12 12:52:48 -040032398 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040032399 .byte 68,15,88,21,27,18,0,0 // addps 0x121b(%rip),%xmm10 # 5c90 <_sk_callback_sse2+0x10b5>
Mike Klein0a904492017-04-12 12:52:48 -040032400 .byte 68,15,17,144,128,0,0,0 // movups %xmm10,0x80(%rax)
32401 .byte 72,173 // lods %ds:(%rsi),%rax
32402 .byte 255,224 // jmpq *%rax
32403
32404HIDDEN _sk_bicubic_p3x_sse2
32405.globl _sk_bicubic_p3x_sse2
Mike Klein86714282017-04-13 17:37:38 -040032406FUNCTION(_sk_bicubic_p3x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032407_sk_bicubic_p3x_sse2:
32408 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040032409 .byte 15,16,0 // movups (%rax),%xmm0
Mike Kleinfe560a82017-05-01 12:56:35 -040032410 .byte 68,15,16,64,64 // movups 0x40(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032411 .byte 15,88,5,14,18,0,0 // addps 0x120e(%rip),%xmm0 # 5ca0 <_sk_callback_sse2+0x10c5>
Mike Kleinfe560a82017-05-01 12:56:35 -040032412 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040032413 .byte 69,15,89,201 // mulps %xmm9,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040032414 .byte 68,15,89,5,14,18,0,0 // mulps 0x120e(%rip),%xmm8 # 5cb0 <_sk_callback_sse2+0x10d5>
32415 .byte 68,15,88,5,22,18,0,0 // addps 0x1216(%rip),%xmm8 # 5cc0 <_sk_callback_sse2+0x10e5>
Mike Klein0a904492017-04-12 12:52:48 -040032416 .byte 69,15,89,193 // mulps %xmm9,%xmm8
32417 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
32418 .byte 72,173 // lods %ds:(%rsi),%rax
32419 .byte 255,224 // jmpq *%rax
32420
32421HIDDEN _sk_bicubic_n3y_sse2
32422.globl _sk_bicubic_n3y_sse2
Mike Klein86714282017-04-13 17:37:38 -040032423FUNCTION(_sk_bicubic_n3y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032424_sk_bicubic_n3y_sse2:
32425 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040032426 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040032427 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032428 .byte 15,88,13,4,18,0,0 // addps 0x1204(%rip),%xmm1 # 5cd0 <_sk_callback_sse2+0x10f5>
32429 .byte 68,15,40,13,12,18,0,0 // movaps 0x120c(%rip),%xmm9 # 5ce0 <_sk_callback_sse2+0x1105>
Mike Kleinfe560a82017-05-01 12:56:35 -040032430 .byte 69,15,92,200 // subps %xmm8,%xmm9
32431 .byte 69,15,40,193 // movaps %xmm9,%xmm8
Mike Klein0a904492017-04-12 12:52:48 -040032432 .byte 69,15,89,192 // mulps %xmm8,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032433 .byte 68,15,89,13,8,18,0,0 // mulps 0x1208(%rip),%xmm9 # 5cf0 <_sk_callback_sse2+0x1115>
32434 .byte 68,15,88,13,16,18,0,0 // addps 0x1210(%rip),%xmm9 # 5d00 <_sk_callback_sse2+0x1125>
Mike Klein0a904492017-04-12 12:52:48 -040032435 .byte 69,15,89,200 // mulps %xmm8,%xmm9
32436 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
32437 .byte 72,173 // lods %ds:(%rsi),%rax
32438 .byte 255,224 // jmpq *%rax
32439
32440HIDDEN _sk_bicubic_n1y_sse2
32441.globl _sk_bicubic_n1y_sse2
Mike Klein86714282017-04-13 17:37:38 -040032442FUNCTION(_sk_bicubic_n1y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032443_sk_bicubic_n1y_sse2:
32444 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040032445 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040032446 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032447 .byte 15,88,13,254,17,0,0 // addps 0x11fe(%rip),%xmm1 # 5d10 <_sk_callback_sse2+0x1135>
32448 .byte 68,15,40,13,6,18,0,0 // movaps 0x1206(%rip),%xmm9 # 5d20 <_sk_callback_sse2+0x1145>
Mike Kleinfe560a82017-05-01 12:56:35 -040032449 .byte 69,15,92,200 // subps %xmm8,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040032450 .byte 68,15,40,5,10,18,0,0 // movaps 0x120a(%rip),%xmm8 # 5d30 <_sk_callback_sse2+0x1155>
Mike Kleinfe560a82017-05-01 12:56:35 -040032451 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032452 .byte 68,15,88,5,14,18,0,0 // addps 0x120e(%rip),%xmm8 # 5d40 <_sk_callback_sse2+0x1165>
Mike Kleinfe560a82017-05-01 12:56:35 -040032453 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032454 .byte 68,15,88,5,18,18,0,0 // addps 0x1212(%rip),%xmm8 # 5d50 <_sk_callback_sse2+0x1175>
Mike Kleinfe560a82017-05-01 12:56:35 -040032455 .byte 69,15,89,193 // mulps %xmm9,%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032456 .byte 68,15,88,5,22,18,0,0 // addps 0x1216(%rip),%xmm8 # 5d60 <_sk_callback_sse2+0x1185>
Mike Kleinfe560a82017-05-01 12:56:35 -040032457 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
Mike Klein0a904492017-04-12 12:52:48 -040032458 .byte 72,173 // lods %ds:(%rsi),%rax
32459 .byte 255,224 // jmpq *%rax
32460
32461HIDDEN _sk_bicubic_p1y_sse2
32462.globl _sk_bicubic_p1y_sse2
Mike Klein86714282017-04-13 17:37:38 -040032463FUNCTION(_sk_bicubic_p1y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032464_sk_bicubic_p1y_sse2:
32465 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8ca33562017-05-23 08:07:43 -040032466 .byte 68,15,40,5,16,18,0,0 // movaps 0x1210(%rip),%xmm8 # 5d70 <_sk_callback_sse2+0x1195>
Mike Klein0a904492017-04-12 12:52:48 -040032467 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
32468 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
32469 .byte 65,15,88,200 // addps %xmm8,%xmm1
Mike Klein8ca33562017-05-23 08:07:43 -040032470 .byte 68,15,40,21,11,18,0,0 // movaps 0x120b(%rip),%xmm10 # 5d80 <_sk_callback_sse2+0x11a5>
Mike Klein0a904492017-04-12 12:52:48 -040032471 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040032472 .byte 68,15,88,21,15,18,0,0 // addps 0x120f(%rip),%xmm10 # 5d90 <_sk_callback_sse2+0x11b5>
Mike Klein0a904492017-04-12 12:52:48 -040032473 .byte 69,15,89,209 // mulps %xmm9,%xmm10
32474 .byte 69,15,88,208 // addps %xmm8,%xmm10
Mike Klein0a904492017-04-12 12:52:48 -040032475 .byte 69,15,89,209 // mulps %xmm9,%xmm10
Mike Klein8ca33562017-05-23 08:07:43 -040032476 .byte 68,15,88,21,11,18,0,0 // addps 0x120b(%rip),%xmm10 # 5da0 <_sk_callback_sse2+0x11c5>
Mike Klein0a904492017-04-12 12:52:48 -040032477 .byte 68,15,17,144,160,0,0,0 // movups %xmm10,0xa0(%rax)
32478 .byte 72,173 // lods %ds:(%rsi),%rax
32479 .byte 255,224 // jmpq *%rax
32480
32481HIDDEN _sk_bicubic_p3y_sse2
32482.globl _sk_bicubic_p3y_sse2
Mike Klein86714282017-04-13 17:37:38 -040032483FUNCTION(_sk_bicubic_p3y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040032484_sk_bicubic_p3y_sse2:
32485 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein0a904492017-04-12 12:52:48 -040032486 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
Mike Kleinfe560a82017-05-01 12:56:35 -040032487 .byte 68,15,16,64,96 // movups 0x60(%rax),%xmm8
Mike Klein8ca33562017-05-23 08:07:43 -040032488 .byte 15,88,13,253,17,0,0 // addps 0x11fd(%rip),%xmm1 # 5db0 <_sk_callback_sse2+0x11d5>
Mike Kleinfe560a82017-05-01 12:56:35 -040032489 .byte 69,15,40,200 // movaps %xmm8,%xmm9
Mike Klein0a904492017-04-12 12:52:48 -040032490 .byte 69,15,89,201 // mulps %xmm9,%xmm9
Mike Klein8ca33562017-05-23 08:07:43 -040032491 .byte 68,15,89,5,253,17,0,0 // mulps 0x11fd(%rip),%xmm8 # 5dc0 <_sk_callback_sse2+0x11e5>
32492 .byte 68,15,88,5,5,18,0,0 // addps 0x1205(%rip),%xmm8 # 5dd0 <_sk_callback_sse2+0x11f5>
Mike Klein0a904492017-04-12 12:52:48 -040032493 .byte 69,15,89,193 // mulps %xmm9,%xmm8
32494 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
32495 .byte 72,173 // lods %ds:(%rsi),%rax
32496 .byte 255,224 // jmpq *%rax
Mike Klein7fee90c2017-04-07 16:55:09 -040032497
32498HIDDEN _sk_callback_sse2
32499.globl _sk_callback_sse2
32500FUNCTION(_sk_callback_sse2)
32501_sk_callback_sse2:
32502 .byte 65,87 // push %r15
32503 .byte 65,86 // push %r14
Mike Kleinc17dc242017-04-20 16:21:57 -040032504 .byte 65,84 // push %r12
Mike Klein7fee90c2017-04-07 16:55:09 -040032505 .byte 83 // push %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040032506 .byte 72,131,236,72 // sub $0x48,%rsp
32507 .byte 15,41,124,36,48 // movaps %xmm7,0x30(%rsp)
32508 .byte 15,41,116,36,32 // movaps %xmm6,0x20(%rsp)
32509 .byte 15,41,108,36,16 // movaps %xmm5,0x10(%rsp)
32510 .byte 15,41,36,36 // movaps %xmm4,(%rsp)
Mike Klein7fee90c2017-04-07 16:55:09 -040032511 .byte 73,137,214 // mov %rdx,%r14
32512 .byte 73,137,255 // mov %rdi,%r15
32513 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinc17dc242017-04-20 16:21:57 -040032514 .byte 72,137,195 // mov %rax,%rbx
32515 .byte 73,137,244 // mov %rsi,%r12
32516 .byte 15,40,224 // movaps %xmm0,%xmm4
32517 .byte 15,20,225 // unpcklps %xmm1,%xmm4
32518 .byte 15,40,234 // movaps %xmm2,%xmm5
32519 .byte 15,20,235 // unpcklps %xmm3,%xmm5
32520 .byte 15,21,193 // unpckhps %xmm1,%xmm0
32521 .byte 15,21,211 // unpckhps %xmm3,%xmm2
32522 .byte 15,40,204 // movaps %xmm4,%xmm1
32523 .byte 102,15,20,205 // unpcklpd %xmm5,%xmm1
32524 .byte 15,18,236 // movhlps %xmm4,%xmm5
32525 .byte 15,40,216 // movaps %xmm0,%xmm3
32526 .byte 102,15,20,218 // unpcklpd %xmm2,%xmm3
32527 .byte 15,18,208 // movhlps %xmm0,%xmm2
32528 .byte 102,15,17,75,8 // movupd %xmm1,0x8(%rbx)
32529 .byte 15,17,107,24 // movups %xmm5,0x18(%rbx)
32530 .byte 102,15,17,91,40 // movupd %xmm3,0x28(%rbx)
32531 .byte 15,17,83,56 // movups %xmm2,0x38(%rbx)
Mike Klein7fee90c2017-04-07 16:55:09 -040032532 .byte 190,4,0,0,0 // mov $0x4,%esi
Mike Kleinc17dc242017-04-20 16:21:57 -040032533 .byte 72,137,223 // mov %rbx,%rdi
32534 .byte 255,19 // callq *(%rbx)
32535 .byte 72,139,131,136,0,0,0 // mov 0x88(%rbx),%rax
32536 .byte 15,16,32 // movups (%rax),%xmm4
32537 .byte 15,16,64,16 // movups 0x10(%rax),%xmm0
32538 .byte 15,16,88,32 // movups 0x20(%rax),%xmm3
32539 .byte 15,16,80,48 // movups 0x30(%rax),%xmm2
32540 .byte 15,40,236 // movaps %xmm4,%xmm5
32541 .byte 15,20,232 // unpcklps %xmm0,%xmm5
32542 .byte 15,40,203 // movaps %xmm3,%xmm1
32543 .byte 15,20,202 // unpcklps %xmm2,%xmm1
32544 .byte 15,21,224 // unpckhps %xmm0,%xmm4
32545 .byte 15,21,218 // unpckhps %xmm2,%xmm3
32546 .byte 15,40,197 // movaps %xmm5,%xmm0
32547 .byte 102,15,20,193 // unpcklpd %xmm1,%xmm0
32548 .byte 15,18,205 // movhlps %xmm5,%xmm1
32549 .byte 15,40,212 // movaps %xmm4,%xmm2
32550 .byte 102,15,20,211 // unpcklpd %xmm3,%xmm2
32551 .byte 15,18,220 // movhlps %xmm4,%xmm3
32552 .byte 76,137,230 // mov %r12,%rsi
Mike Klein7fee90c2017-04-07 16:55:09 -040032553 .byte 72,173 // lods %ds:(%rsi),%rax
32554 .byte 76,137,255 // mov %r15,%rdi
32555 .byte 76,137,242 // mov %r14,%rdx
Mike Kleinc17dc242017-04-20 16:21:57 -040032556 .byte 15,40,36,36 // movaps (%rsp),%xmm4
32557 .byte 15,40,108,36,16 // movaps 0x10(%rsp),%xmm5
32558 .byte 15,40,116,36,32 // movaps 0x20(%rsp),%xmm6
32559 .byte 15,40,124,36,48 // movaps 0x30(%rsp),%xmm7
32560 .byte 72,131,196,72 // add $0x48,%rsp
Mike Klein7fee90c2017-04-07 16:55:09 -040032561 .byte 91 // pop %rbx
Mike Kleinc17dc242017-04-20 16:21:57 -040032562 .byte 65,92 // pop %r12
Mike Klein7fee90c2017-04-07 16:55:09 -040032563 .byte 65,94 // pop %r14
32564 .byte 65,95 // pop %r15
32565 .byte 255,224 // jmpq *%rax
Mike Klein2229b572017-04-21 10:30:29 -040032566
32567BALIGN16
32568 .byte 0,0 // add %al,(%rax)
32569 .byte 0,63 // add %bh,(%rdi)
32570 .byte 0,0 // add %al,(%rax)
32571 .byte 0,63 // add %bh,(%rdi)
32572 .byte 0,0 // add %al,(%rax)
32573 .byte 0,63 // add %bh,(%rdi)
32574 .byte 0,0 // add %al,(%rax)
32575 .byte 0,63 // add %bh,(%rdi)
32576 .byte 0,0 // add %al,(%rax)
32577 .byte 128,63,0 // cmpb $0x0,(%rdi)
32578 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32579 .byte 63 // (bad)
32580 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040032581 .byte 128,63,1 // cmpb $0x1,(%rdi)
32582 .byte 0,0 // add %al,(%rax)
32583 .byte 0,1 // add %al,(%rcx)
32584 .byte 0,0 // add %al,(%rax)
32585 .byte 0,1 // add %al,(%rcx)
32586 .byte 0,0 // add %al,(%rax)
32587 .byte 0,1 // add %al,(%rcx)
32588 .byte 0,0 // add %al,(%rax)
32589 .byte 0,4,0 // add %al,(%rax,%rax,1)
32590 .byte 0,0 // add %al,(%rax)
32591 .byte 4,0 // add $0x0,%al
32592 .byte 0,0 // add %al,(%rax)
32593 .byte 4,0 // add $0x0,%al
32594 .byte 0,0 // add %al,(%rax)
32595 .byte 4,0 // add $0x0,%al
32596 .byte 0,0 // add %al,(%rax)
32597 .byte 2,0 // add (%rax),%al
32598 .byte 0,0 // add %al,(%rax)
32599 .byte 2,0 // add (%rax),%al
32600 .byte 0,0 // add %al,(%rax)
32601 .byte 2,0 // add (%rax),%al
32602 .byte 0,0 // add %al,(%rax)
32603 .byte 2,0 // add (%rax),%al
32604 .byte 0,0 // add %al,(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040032605 .byte 0,0 // add %al,(%rax)
Mike Kleindb711c92017-05-03 17:57:48 -040032606 .byte 128,60,0,0 // cmpb $0x0,(%rax,%rax,1)
32607 .byte 128,60,0,0 // cmpb $0x0,(%rax,%rax,1)
32608 .byte 128,60,0,0 // cmpb $0x0,(%rax,%rax,1)
32609 .byte 128,60,0,0 // cmpb $0x0,(%rax,%rax,1)
32610 .byte 252 // cld
32611 .byte 190,0,0,252,190 // mov $0xbefc0000,%esi
32612 .byte 0,0 // add %al,(%rax)
32613 .byte 252 // cld
32614 .byte 190,0,0,252,190 // mov $0xbefc0000,%esi
Mike Klein581e6982017-05-03 13:05:13 -040032615 .byte 0,0 // add %al,(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040032616 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040032617 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32618 .byte 63 // (bad)
32619 .byte 0,0 // add %al,(%rax)
32620 .byte 128,63,0 // cmpb $0x0,(%rdi)
32621 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32622 .byte 63 // (bad)
32623 .byte 0,0 // add %al,(%rax)
32624 .byte 128,63,0 // cmpb $0x0,(%rdi)
32625 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32626 .byte 63 // (bad)
32627 .byte 0,0 // add %al,(%rax)
32628 .byte 128,63,0 // cmpb $0x0,(%rdi)
32629 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32630 .byte 63 // (bad)
32631 .byte 0,0 // add %al,(%rax)
32632 .byte 128,63,0 // cmpb $0x0,(%rdi)
32633 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32634 .byte 63 // (bad)
32635 .byte 0,0 // add %al,(%rax)
32636 .byte 128,63,0 // cmpb $0x0,(%rdi)
32637 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32638 .byte 63 // (bad)
32639 .byte 0,0 // add %al,(%rax)
32640 .byte 128,63,0 // cmpb $0x0,(%rdi)
32641 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32642 .byte 63 // (bad)
32643 .byte 0,0 // add %al,(%rax)
32644 .byte 128,63,0 // cmpb $0x0,(%rdi)
32645 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32646 .byte 63 // (bad)
32647 .byte 0,0 // add %al,(%rax)
32648 .byte 128,63,0 // cmpb $0x0,(%rdi)
32649 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32650 .byte 63 // (bad)
32651 .byte 0,0 // add %al,(%rax)
32652 .byte 128,63,0 // cmpb $0x0,(%rdi)
32653 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32654 .byte 63 // (bad)
32655 .byte 0,0 // add %al,(%rax)
32656 .byte 128,63,0 // cmpb $0x0,(%rdi)
32657 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32658 .byte 63 // (bad)
32659 .byte 0,0 // add %al,(%rax)
32660 .byte 128,63,0 // cmpb $0x0,(%rdi)
32661 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32662 .byte 63 // (bad)
32663 .byte 0,0 // add %al,(%rax)
32664 .byte 128,63,0 // cmpb $0x0,(%rdi)
32665 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32666 .byte 63 // (bad)
32667 .byte 0,0 // add %al,(%rax)
32668 .byte 128,63,0 // cmpb $0x0,(%rdi)
32669 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32670 .byte 63 // (bad)
32671 .byte 0,0 // add %al,(%rax)
32672 .byte 128,63,0 // cmpb $0x0,(%rdi)
32673 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32674 .byte 63 // (bad)
32675 .byte 0,0 // add %al,(%rax)
32676 .byte 128,63,0 // cmpb $0x0,(%rdi)
32677 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32678 .byte 63 // (bad)
32679 .byte 0,0 // add %al,(%rax)
32680 .byte 128,63,0 // cmpb $0x0,(%rdi)
32681 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32682 .byte 63 // (bad)
32683 .byte 0,0 // add %al,(%rax)
32684 .byte 128,63,0 // cmpb $0x0,(%rdi)
32685 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32686 .byte 63 // (bad)
32687 .byte 0,0 // add %al,(%rax)
32688 .byte 128,63,0 // cmpb $0x0,(%rdi)
32689 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32690 .byte 63 // (bad)
32691 .byte 0,0 // add %al,(%rax)
32692 .byte 128,63,0 // cmpb $0x0,(%rdi)
32693 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32694 .byte 63 // (bad)
32695 .byte 0,0 // add %al,(%rax)
32696 .byte 128,63,0 // cmpb $0x0,(%rdi)
32697 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32698 .byte 63 // (bad)
32699 .byte 0,0 // add %al,(%rax)
32700 .byte 128,63,0 // cmpb $0x0,(%rdi)
32701 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32702 .byte 63 // (bad)
32703 .byte 0,0 // add %al,(%rax)
32704 .byte 128,63,0 // cmpb $0x0,(%rdi)
32705 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
Mike Klein581e6982017-05-03 13:05:13 -040032706 .byte 191,0,0,128,191 // mov $0xbf800000,%edi
Mike Kleinfe560a82017-05-01 12:56:35 -040032707 .byte 0,0 // add %al,(%rax)
32708 .byte 128,191,0,0,128,191,0 // cmpb $0x0,-0x40800000(%rdi)
Mike Klein581e6982017-05-03 13:05:13 -040032709 .byte 0,224 // add %ah,%al
32710 .byte 64,0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040032711 .byte 224,64 // loopne 4e88 <.literal16+0x1d8>
Mike Kleinfe560a82017-05-01 12:56:35 -040032712 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040032713 .byte 224,64 // loopne 4e8c <.literal16+0x1dc>
Mike Kleinfe560a82017-05-01 12:56:35 -040032714 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040032715 .byte 224,64 // loopne 4e90 <.literal16+0x1e0>
Mike Klein08aa88d2017-05-12 12:59:24 -040032716 .byte 154 // (bad)
32717 .byte 153 // cltd
32718 .byte 153 // cltd
32719 .byte 62,154 // ds (bad)
32720 .byte 153 // cltd
32721 .byte 153 // cltd
32722 .byte 62,154 // ds (bad)
32723 .byte 153 // cltd
32724 .byte 153 // cltd
32725 .byte 62,154 // ds (bad)
32726 .byte 153 // cltd
32727 .byte 153 // cltd
32728 .byte 62,61,10,23,63,61 // ds cmp $0x3d3f170a,%eax
32729 .byte 10,23 // or (%rdi),%dl
32730 .byte 63 // (bad)
32731 .byte 61,10,23,63,61 // cmp $0x3d3f170a,%eax
32732 .byte 10,23 // or (%rdi),%dl
32733 .byte 63 // (bad)
32734 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032735 .byte 71,225,61 // rex.RXB loope 4eb1 <.literal16+0x201>
Mike Klein08aa88d2017-05-12 12:59:24 -040032736 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032737 .byte 71,225,61 // rex.RXB loope 4eb5 <.literal16+0x205>
Mike Klein08aa88d2017-05-12 12:59:24 -040032738 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032739 .byte 71,225,61 // rex.RXB loope 4eb9 <.literal16+0x209>
Mike Klein08aa88d2017-05-12 12:59:24 -040032740 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032741 .byte 71,225,61 // rex.RXB loope 4ebd <.literal16+0x20d>
Mike Kleinbb338332017-05-04 12:42:52 -040032742 .byte 0,0 // add %al,(%rax)
32743 .byte 128,63,0 // cmpb $0x0,(%rdi)
32744 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32745 .byte 63 // (bad)
32746 .byte 0,0 // add %al,(%rax)
32747 .byte 128,63,154 // cmpb $0x9a,(%rdi)
32748 .byte 153 // cltd
32749 .byte 153 // cltd
32750 .byte 62,154 // ds (bad)
32751 .byte 153 // cltd
32752 .byte 153 // cltd
32753 .byte 62,154 // ds (bad)
32754 .byte 153 // cltd
32755 .byte 153 // cltd
32756 .byte 62,154 // ds (bad)
32757 .byte 153 // cltd
32758 .byte 153 // cltd
32759 .byte 62,61,10,23,63,61 // ds cmp $0x3d3f170a,%eax
32760 .byte 10,23 // or (%rdi),%dl
32761 .byte 63 // (bad)
32762 .byte 61,10,23,63,61 // cmp $0x3d3f170a,%eax
32763 .byte 10,23 // or (%rdi),%dl
32764 .byte 63 // (bad)
32765 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032766 .byte 71,225,61 // rex.RXB loope 4ef1 <.literal16+0x241>
Mike Kleinbb338332017-05-04 12:42:52 -040032767 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032768 .byte 71,225,61 // rex.RXB loope 4ef5 <.literal16+0x245>
Mike Kleinbb338332017-05-04 12:42:52 -040032769 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032770 .byte 71,225,61 // rex.RXB loope 4ef9 <.literal16+0x249>
Mike Kleinbb338332017-05-04 12:42:52 -040032771 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032772 .byte 71,225,61 // rex.RXB loope 4efd <.literal16+0x24d>
Mike Kleinbb338332017-05-04 12:42:52 -040032773 .byte 0,0 // add %al,(%rax)
32774 .byte 128,63,0 // cmpb $0x0,(%rdi)
32775 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32776 .byte 63 // (bad)
32777 .byte 0,0 // add %al,(%rax)
32778 .byte 128,63,154 // cmpb $0x9a,(%rdi)
32779 .byte 153 // cltd
32780 .byte 153 // cltd
32781 .byte 62,154 // ds (bad)
32782 .byte 153 // cltd
32783 .byte 153 // cltd
32784 .byte 62,154 // ds (bad)
32785 .byte 153 // cltd
32786 .byte 153 // cltd
32787 .byte 62,154 // ds (bad)
32788 .byte 153 // cltd
32789 .byte 153 // cltd
32790 .byte 62,61,10,23,63,61 // ds cmp $0x3d3f170a,%eax
32791 .byte 10,23 // or (%rdi),%dl
32792 .byte 63 // (bad)
32793 .byte 61,10,23,63,61 // cmp $0x3d3f170a,%eax
32794 .byte 10,23 // or (%rdi),%dl
32795 .byte 63 // (bad)
32796 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032797 .byte 71,225,61 // rex.RXB loope 4f31 <.literal16+0x281>
Mike Kleinbb338332017-05-04 12:42:52 -040032798 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032799 .byte 71,225,61 // rex.RXB loope 4f35 <.literal16+0x285>
Mike Kleinbb338332017-05-04 12:42:52 -040032800 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032801 .byte 71,225,61 // rex.RXB loope 4f39 <.literal16+0x289>
Mike Kleinbb338332017-05-04 12:42:52 -040032802 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032803 .byte 71,225,61 // rex.RXB loope 4f3d <.literal16+0x28d>
Mike Kleinbb338332017-05-04 12:42:52 -040032804 .byte 0,0 // add %al,(%rax)
32805 .byte 128,63,0 // cmpb $0x0,(%rdi)
32806 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32807 .byte 63 // (bad)
32808 .byte 0,0 // add %al,(%rax)
32809 .byte 128,63,154 // cmpb $0x9a,(%rdi)
32810 .byte 153 // cltd
32811 .byte 153 // cltd
32812 .byte 62,154 // ds (bad)
32813 .byte 153 // cltd
32814 .byte 153 // cltd
32815 .byte 62,154 // ds (bad)
32816 .byte 153 // cltd
32817 .byte 153 // cltd
32818 .byte 62,154 // ds (bad)
32819 .byte 153 // cltd
32820 .byte 153 // cltd
32821 .byte 62,61,10,23,63,61 // ds cmp $0x3d3f170a,%eax
32822 .byte 10,23 // or (%rdi),%dl
32823 .byte 63 // (bad)
32824 .byte 61,10,23,63,61 // cmp $0x3d3f170a,%eax
32825 .byte 10,23 // or (%rdi),%dl
32826 .byte 63 // (bad)
32827 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032828 .byte 71,225,61 // rex.RXB loope 4f71 <.literal16+0x2c1>
Mike Kleinbb338332017-05-04 12:42:52 -040032829 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032830 .byte 71,225,61 // rex.RXB loope 4f75 <.literal16+0x2c5>
Mike Kleinbb338332017-05-04 12:42:52 -040032831 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032832 .byte 71,225,61 // rex.RXB loope 4f79 <.literal16+0x2c9>
Mike Kleinbb338332017-05-04 12:42:52 -040032833 .byte 174 // scas %es:(%rdi),%al
Mike Klein8ca33562017-05-23 08:07:43 -040032834 .byte 71,225,61 // rex.RXB loope 4f7d <.literal16+0x2cd>
Mike Kleinfe560a82017-05-01 12:56:35 -040032835 .byte 0,0 // add %al,(%rax)
32836 .byte 128,63,0 // cmpb $0x0,(%rdi)
32837 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32838 .byte 63 // (bad)
32839 .byte 0,0 // add %al,(%rax)
32840 .byte 128,63,0 // cmpb $0x0,(%rdi)
32841 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32842 .byte 63 // (bad)
32843 .byte 0,0 // add %al,(%rax)
32844 .byte 128,63,0 // cmpb $0x0,(%rdi)
32845 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32846 .byte 63 // (bad)
32847 .byte 0,0 // add %al,(%rax)
32848 .byte 128,63,0 // cmpb $0x0,(%rdi)
32849 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32850 .byte 63 // (bad)
Mike Klein08aa88d2017-05-12 12:59:24 -040032851 .byte 0,0 // add %al,(%rax)
32852 .byte 128,63,0 // cmpb $0x0,(%rdi)
32853 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32854 .byte 63 // (bad)
32855 .byte 0,0 // add %al,(%rax)
32856 .byte 128,63,145 // cmpb $0x91,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040032857 .byte 131,158,61,145,131,158,61 // sbbl $0x3d,-0x617c6ec3(%rsi)
32858 .byte 145 // xchg %eax,%ecx
32859 .byte 131,158,61,145,131,158,61 // sbbl $0x3d,-0x617c6ec3(%rsi)
32860 .byte 154 // (bad)
32861 .byte 153 // cltd
32862 .byte 153 // cltd
32863 .byte 62,154 // ds (bad)
32864 .byte 153 // cltd
32865 .byte 153 // cltd
32866 .byte 62,154 // ds (bad)
32867 .byte 153 // cltd
32868 .byte 153 // cltd
32869 .byte 62,154 // ds (bad)
32870 .byte 153 // cltd
32871 .byte 153 // cltd
32872 .byte 62,92 // ds pop %rsp
32873 .byte 143 // (bad)
32874 .byte 50,63 // xor (%rdi),%bh
32875 .byte 92 // pop %rsp
32876 .byte 143 // (bad)
32877 .byte 50,63 // xor (%rdi),%bh
32878 .byte 92 // pop %rsp
32879 .byte 143 // (bad)
32880 .byte 50,63 // xor (%rdi),%bh
32881 .byte 92 // pop %rsp
32882 .byte 143 // (bad)
32883 .byte 50,63 // xor (%rdi),%bh
32884 .byte 10,215 // or %bh,%dl
32885 .byte 35,59 // and (%rbx),%edi
32886 .byte 10,215 // or %bh,%dl
32887 .byte 35,59 // and (%rbx),%edi
32888 .byte 10,215 // or %bh,%dl
32889 .byte 35,59 // and (%rbx),%edi
32890 .byte 10,215 // or %bh,%dl
32891 .byte 35,59 // and (%rbx),%edi
32892 .byte 174 // scas %es:(%rdi),%al
32893 .byte 71,97 // rex.RXB (bad)
32894 .byte 61,174,71,97,61 // cmp $0x3d6147ae,%eax
32895 .byte 174 // scas %es:(%rdi),%al
32896 .byte 71,97 // rex.RXB (bad)
32897 .byte 61,174,71,97,61 // cmp $0x3d6147ae,%eax
Mike Kleinf45e3d72017-05-15 17:36:59 -040032898 .byte 82 // push %rdx
32899 .byte 184,78,65,82,184 // mov $0xb852414e,%eax
32900 .byte 78 // rex.WRX
32901 .byte 65,82 // push %r10
32902 .byte 184,78,65,82,184 // mov $0xb852414e,%eax
32903 .byte 78 // rex.WRX
32904 .byte 65,57,215 // cmp %edx,%r15d
32905 .byte 32,187,57,215,32,187 // and %bh,-0x44df28c7(%rbx)
32906 .byte 57,215 // cmp %edx,%edi
32907 .byte 32,187,57,215,32,187 // and %bh,-0x44df28c7(%rbx)
32908 .byte 186,159,98,60,186 // mov $0xba3c629f,%edx
32909 .byte 159 // lahf
32910 .byte 98 // (bad)
32911 .byte 60,186 // cmp $0xba,%al
32912 .byte 159 // lahf
32913 .byte 98 // (bad)
32914 .byte 60,186 // cmp $0xba,%al
32915 .byte 159 // lahf
32916 .byte 98 // (bad)
32917 .byte 60,13 // cmp $0xd,%al
32918 .byte 20,145 // adc $0x91,%al
Mike Kleinfe560a82017-05-01 12:56:35 -040032919 .byte 63 // (bad)
Mike Kleinf45e3d72017-05-15 17:36:59 -040032920 .byte 13,20,145,63,13 // or $0xd3f9114,%eax
32921 .byte 20,145 // adc $0x91,%al
32922 .byte 63 // (bad)
32923 .byte 13,20,145,63,141 // or $0x8d3f9114,%eax
32924 .byte 158 // sahf
32925 .byte 20,62 // adc $0x3e,%al
32926 .byte 141,158,20,62,141,158 // lea -0x6172c1ec(%rsi),%ebx
32927 .byte 20,62 // adc $0x3e,%al
32928 .byte 141,158,20,62,168,177 // lea -0x4e57c1ec(%rsi),%ebx
32929 .byte 152 // cwtl
32930 .byte 59,168,177,152,59,168 // cmp -0x57c4674f(%rax),%ebp
32931 .byte 177,152 // mov $0x98,%cl
32932 .byte 59,168,177,152,59,0 // cmp 0x3b98b1(%rax),%ebp
Mike Kleinfe560a82017-05-01 12:56:35 -040032933 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32934 .byte 63 // (bad)
32935 .byte 0,0 // add %al,(%rax)
32936 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinf45e3d72017-05-15 17:36:59 -040032937 .byte 0,128,63,0,0,192 // add %al,-0x3fffffc1(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040032938 .byte 64,0,0 // add %al,(%rax)
32939 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
32940 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
32941 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
32942 .byte 0,64,0 // add %al,0x0(%rax)
32943 .byte 0,0 // add %al,(%rax)
32944 .byte 64,0,0 // add %al,(%rax)
32945 .byte 0,64,0 // add %al,0x0(%rax)
32946 .byte 0,0 // add %al,(%rax)
32947 .byte 64,0,0 // add %al,(%rax)
32948 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
32949 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
32950 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
32951 .byte 128,64,171,170 // addb $0xaa,-0x55(%rax)
32952 .byte 42,62 // sub (%rsi),%bh
32953 .byte 171 // stos %eax,%es:(%rdi)
32954 .byte 170 // stos %al,%es:(%rdi)
32955 .byte 42,62 // sub (%rsi),%bh
32956 .byte 171 // stos %eax,%es:(%rdi)
32957 .byte 170 // stos %al,%es:(%rdi)
32958 .byte 42,62 // sub (%rsi),%bh
32959 .byte 171 // stos %eax,%es:(%rdi)
32960 .byte 170 // stos %al,%es:(%rdi)
32961 .byte 42,62 // sub (%rsi),%bh
32962 .byte 0,0 // add %al,(%rax)
32963 .byte 0,63 // add %bh,(%rdi)
32964 .byte 0,0 // add %al,(%rax)
32965 .byte 0,63 // add %bh,(%rdi)
32966 .byte 0,0 // add %al,(%rax)
32967 .byte 0,63 // add %bh,(%rdi)
32968 .byte 0,0 // add %al,(%rax)
32969 .byte 0,63 // add %bh,(%rdi)
Mike Klein5664e652017-05-01 16:01:38 -040032970 .byte 0,0 // add %al,(%rax)
32971 .byte 0,63 // add %bh,(%rdi)
32972 .byte 0,0 // add %al,(%rax)
32973 .byte 0,63 // add %bh,(%rdi)
32974 .byte 0,0 // add %al,(%rax)
32975 .byte 0,63 // add %bh,(%rdi)
32976 .byte 0,0 // add %al,(%rax)
32977 .byte 0,63 // add %bh,(%rdi)
Mike Klein879a08a2017-05-01 15:34:01 -040032978 .byte 171 // stos %eax,%es:(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040032979 .byte 170 // stos %al,%es:(%rdi)
32980 .byte 170 // stos %al,%es:(%rdi)
32981 .byte 62,171 // ds stos %eax,%es:(%rdi)
32982 .byte 170 // stos %al,%es:(%rdi)
32983 .byte 170 // stos %al,%es:(%rdi)
32984 .byte 62,171 // ds stos %eax,%es:(%rdi)
32985 .byte 170 // stos %al,%es:(%rdi)
32986 .byte 170 // stos %al,%es:(%rdi)
32987 .byte 62,171 // ds stos %eax,%es:(%rdi)
32988 .byte 170 // stos %al,%es:(%rdi)
32989 .byte 170 // stos %al,%es:(%rdi)
32990 .byte 62,0,0 // add %al,%ds:(%rax)
Mike Klein879a08a2017-05-01 15:34:01 -040032991 .byte 128,63,0 // cmpb $0x0,(%rdi)
32992 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
32993 .byte 63 // (bad)
Mike Kleinfb11acd2017-05-01 14:22:10 -040032994 .byte 0,0 // add %al,(%rax)
Mike Klein5664e652017-05-01 16:01:38 -040032995 .byte 128,63,171 // cmpb $0xab,(%rdi)
32996 .byte 170 // stos %al,%es:(%rdi)
32997 .byte 42,63 // sub (%rdi),%bh
32998 .byte 171 // stos %eax,%es:(%rdi)
32999 .byte 170 // stos %al,%es:(%rdi)
33000 .byte 42,63 // sub (%rdi),%bh
33001 .byte 171 // stos %eax,%es:(%rdi)
33002 .byte 170 // stos %al,%es:(%rdi)
33003 .byte 42,63 // sub (%rdi),%bh
33004 .byte 171 // stos %eax,%es:(%rdi)
33005 .byte 170 // stos %al,%es:(%rdi)
33006 .byte 42,63 // sub (%rdi),%bh
33007 .byte 0,0 // add %al,(%rax)
33008 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
Mike Kleinfb11acd2017-05-01 14:22:10 -040033009 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
33010 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
Mike Klein879a08a2017-05-01 15:34:01 -040033011 .byte 192,64,0,0 // rolb $0x0,0x0(%rax)
33012 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
33013 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
33014 .byte 128,64,0,0 // addb $0x0,0x0(%rax)
33015 .byte 128,64,171,170 // addb $0xaa,-0x55(%rax)
Mike Klein5664e652017-05-01 16:01:38 -040033016 .byte 42,62 // sub (%rsi),%bh
33017 .byte 171 // stos %eax,%es:(%rdi)
33018 .byte 170 // stos %al,%es:(%rdi)
33019 .byte 42,62 // sub (%rsi),%bh
33020 .byte 171 // stos %eax,%es:(%rdi)
33021 .byte 170 // stos %al,%es:(%rdi)
33022 .byte 42,62 // sub (%rsi),%bh
33023 .byte 171 // stos %eax,%es:(%rdi)
33024 .byte 170 // stos %al,%es:(%rdi)
33025 .byte 42,62 // sub (%rsi),%bh
33026 .byte 171 // stos %eax,%es:(%rdi)
33027 .byte 170 // stos %al,%es:(%rdi)
Mike Kleinfb11acd2017-05-01 14:22:10 -040033028 .byte 170 // stos %al,%es:(%rdi)
33029 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
33030 .byte 171 // stos %eax,%es:(%rdi)
33031 .byte 170 // stos %al,%es:(%rdi)
33032 .byte 170 // stos %al,%es:(%rdi)
33033 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
Mike Kleinfe560a82017-05-01 12:56:35 -040033034 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33035 .byte 128,59,129 // cmpb $0x81,(%rbx)
33036 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
33037 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33038 .byte 128,59,0 // cmpb $0x0,(%rbx)
Mike Klein308e6242017-04-27 13:56:33 -040033039 .byte 248 // clc
33040 .byte 0,0 // add %al,(%rax)
33041 .byte 0,248 // add %bh,%al
33042 .byte 0,0 // add %al,(%rax)
33043 .byte 0,248 // add %bh,%al
33044 .byte 0,0 // add %al,(%rax)
33045 .byte 0,248 // add %bh,%al
33046 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033047 .byte 8,33 // or %ah,(%rcx)
33048 .byte 132,55 // test %dh,(%rdi)
33049 .byte 8,33 // or %ah,(%rcx)
33050 .byte 132,55 // test %dh,(%rdi)
33051 .byte 8,33 // or %ah,(%rcx)
33052 .byte 132,55 // test %dh,(%rdi)
33053 .byte 8,33 // or %ah,(%rcx)
33054 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040033055 .byte 224,7 // loopne 5159 <.literal16+0x4a9>
Mike Klein308e6242017-04-27 13:56:33 -040033056 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033057 .byte 224,7 // loopne 515d <.literal16+0x4ad>
Mike Klein308e6242017-04-27 13:56:33 -040033058 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033059 .byte 224,7 // loopne 5161 <.literal16+0x4b1>
Mike Klein308e6242017-04-27 13:56:33 -040033060 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033061 .byte 224,7 // loopne 5165 <.literal16+0x4b5>
Mike Klein308e6242017-04-27 13:56:33 -040033062 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033063 .byte 33,8 // and %ecx,(%rax)
33064 .byte 2,58 // add (%rdx),%bh
33065 .byte 33,8 // and %ecx,(%rax)
33066 .byte 2,58 // add (%rdx),%bh
33067 .byte 33,8 // and %ecx,(%rax)
33068 .byte 2,58 // add (%rdx),%bh
33069 .byte 33,8 // and %ecx,(%rax)
33070 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040033071 .byte 31 // (bad)
33072 .byte 0,0 // add %al,(%rax)
33073 .byte 0,31 // add %bl,(%rdi)
33074 .byte 0,0 // add %al,(%rax)
33075 .byte 0,31 // add %bl,(%rdi)
33076 .byte 0,0 // add %al,(%rax)
33077 .byte 0,31 // add %bl,(%rdi)
33078 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033079 .byte 0,8 // add %cl,(%rax)
33080 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
33081 .byte 8,33 // or %ah,(%rcx)
33082 .byte 4,61 // add $0x3d,%al
33083 .byte 8,33 // or %ah,(%rcx)
33084 .byte 4,61 // add $0x3d,%al
bungeman6f9f2592017-05-10 13:50:12 -040033085 .byte 255,0 // incl (%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033086 .byte 0,0 // add %al,(%rax)
bungeman6f9f2592017-05-10 13:50:12 -040033087 .byte 255,0 // incl (%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033088 .byte 0,0 // add %al,(%rax)
bungeman6f9f2592017-05-10 13:50:12 -040033089 .byte 255,0 // incl (%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040033090 .byte 0,0 // add %al,(%rax)
bungeman6f9f2592017-05-10 13:50:12 -040033091 .byte 255,0 // incl (%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040033092 .byte 0,0 // add %al,(%rax)
bungeman6f9f2592017-05-10 13:50:12 -040033093 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33094 .byte 128,59,129 // cmpb $0x81,(%rbx)
33095 .byte 128,128,59,255,0,255,0 // addb $0x0,-0xff00c5(%rax)
33096 .byte 255,0 // incl (%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033097 .byte 255,0 // incl (%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040033098 .byte 0,0 // add %al,(%rax)
33099 .byte 0,0 // add %al,(%rax)
33100 .byte 0,0 // add %al,(%rax)
33101 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033102 .byte 128,0,128 // addb $0x80,(%rax)
33103 .byte 55 // (bad)
33104 .byte 128,0,128 // addb $0x80,(%rax)
33105 .byte 55 // (bad)
33106 .byte 128,0,128 // addb $0x80,(%rax)
33107 .byte 55 // (bad)
33108 .byte 128,0,128 // addb $0x80,(%rax)
33109 .byte 55 // (bad)
33110 .byte 255,0 // incl (%rax)
33111 .byte 255,0 // incl (%rax)
33112 .byte 255,0 // incl (%rax)
33113 .byte 255,0 // incl (%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040033114 .byte 0,0 // add %al,(%rax)
33115 .byte 0,0 // add %al,(%rax)
33116 .byte 0,0 // add %al,(%rax)
33117 .byte 0,0 // add %al,(%rax)
33118 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033119 .byte 128,63,0 // cmpb $0x0,(%rdi)
33120 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33121 .byte 63 // (bad)
33122 .byte 0,0 // add %al,(%rax)
33123 .byte 128,63,0 // cmpb $0x0,(%rdi)
33124 .byte 0,127,67 // add %bh,0x43(%rdi)
33125 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033126 .byte 127,67 // jg 523b <.literal16+0x58b>
Mike Kleinfe560a82017-05-01 12:56:35 -040033127 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033128 .byte 127,67 // jg 523f <.literal16+0x58f>
Mike Kleinfe560a82017-05-01 12:56:35 -040033129 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033130 .byte 127,67 // jg 5243 <.literal16+0x593>
Mike Kleinfe560a82017-05-01 12:56:35 -040033131 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33132 .byte 128,59,129 // cmpb $0x81,(%rbx)
33133 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
33134 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33135 .byte 128,59,0 // cmpb $0x0,(%rbx)
Mike Kleinb4bbc642017-04-27 08:59:55 -040033136 .byte 0,0 // add %al,(%rax)
33137 .byte 52,0 // xor $0x0,%al
33138 .byte 0,0 // add %al,(%rax)
33139 .byte 52,0 // xor $0x0,%al
33140 .byte 0,0 // add %al,(%rax)
33141 .byte 52,0 // xor $0x0,%al
33142 .byte 0,0 // add %al,(%rax)
33143 .byte 52,255 // xor $0xff,%al
33144 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033145 .byte 127,0 // jg 5234 <.literal16+0x584>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033146 .byte 255 // (bad)
33147 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033148 .byte 127,0 // jg 5238 <.literal16+0x588>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033149 .byte 255 // (bad)
33150 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033151 .byte 127,0 // jg 523c <.literal16+0x58c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033152 .byte 255 // (bad)
33153 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033154 .byte 127,0 // jg 5240 <.literal16+0x590>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033155 .byte 0,0 // add %al,(%rax)
33156 .byte 0,63 // add %bh,(%rdi)
33157 .byte 0,0 // add %al,(%rax)
33158 .byte 0,63 // add %bh,(%rdi)
33159 .byte 0,0 // add %al,(%rax)
33160 .byte 0,63 // add %bh,(%rdi)
33161 .byte 0,0 // add %al,(%rax)
33162 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040033163 .byte 119,115 // ja 52c5 <.literal16+0x615>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033164 .byte 248 // clc
33165 .byte 194,119,115 // retq $0x7377
33166 .byte 248 // clc
33167 .byte 194,119,115 // retq $0x7377
33168 .byte 248 // clc
33169 .byte 194,119,115 // retq $0x7377
33170 .byte 248 // clc
33171 .byte 194,117,191 // retq $0xbf75
33172 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
33173 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033174 .byte 117,191 // jne 5229 <.literal16+0x579>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033175 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
33176 .byte 63 // (bad)
33177 .byte 249 // stc
33178 .byte 68,180,62 // rex.R mov $0x3e,%spl
33179 .byte 249 // stc
33180 .byte 68,180,62 // rex.R mov $0x3e,%spl
33181 .byte 249 // stc
33182 .byte 68,180,62 // rex.R mov $0x3e,%spl
33183 .byte 249 // stc
33184 .byte 68,180,62 // rex.R mov $0x3e,%spl
33185 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Klein8ca33562017-05-23 08:07:43 -040033186 .byte 233,220,63,163,233 // jmpq ffffffffe9a3926a <_sk_callback_sse2+0xffffffffe9a3468f>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033187 .byte 220,63 // fdivrl (%rdi)
33188 .byte 0,0 // add %al,(%rax)
33189 .byte 128,63,0 // cmpb $0x0,(%rdi)
33190 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33191 .byte 63 // (bad)
33192 .byte 0,0 // add %al,(%rax)
33193 .byte 128,63,81 // cmpb $0x51,(%rdi)
33194 .byte 140,242 // mov %?,%edx
33195 .byte 66,81 // rex.X push %rcx
33196 .byte 140,242 // mov %?,%edx
33197 .byte 66,81 // rex.X push %rcx
33198 .byte 140,242 // mov %?,%edx
33199 .byte 66,81 // rex.X push %rcx
33200 .byte 140,242 // mov %?,%edx
33201 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
33202 .byte 63 // (bad)
33203 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
33204 .byte 63 // (bad)
33205 .byte 248 // clc
33206 .byte 245 // cmc
33207 .byte 154 // (bad)
33208 .byte 64,248 // rex clc
33209 .byte 245 // cmc
33210 .byte 154 // (bad)
33211 .byte 64,248 // rex clc
33212 .byte 245 // cmc
33213 .byte 154 // (bad)
33214 .byte 64,248 // rex clc
33215 .byte 245 // cmc
33216 .byte 154 // (bad)
33217 .byte 64,254 // rex (bad)
33218 .byte 210,221 // rcr %cl,%ch
33219 .byte 65,254 // rex.B (bad)
33220 .byte 210,221 // rcr %cl,%ch
33221 .byte 65,254 // rex.B (bad)
33222 .byte 210,221 // rcr %cl,%ch
33223 .byte 65,254 // rex.B (bad)
33224 .byte 210,221 // rcr %cl,%ch
33225 .byte 65,0,0 // add %al,(%r8)
33226 .byte 0,75,0 // add %cl,0x0(%rbx)
33227 .byte 0,0 // add %al,(%rax)
33228 .byte 75,0,0 // rex.WXB add %al,(%r8)
33229 .byte 0,75,0 // add %cl,0x0(%rbx)
33230 .byte 0,0 // add %al,(%rax)
33231 .byte 75,0,0 // rex.WXB add %al,(%r8)
33232 .byte 0,52,0 // add %dh,(%rax,%rax,1)
33233 .byte 0,0 // add %al,(%rax)
33234 .byte 52,0 // xor $0x0,%al
33235 .byte 0,0 // add %al,(%rax)
33236 .byte 52,0 // xor $0x0,%al
33237 .byte 0,0 // add %al,(%rax)
33238 .byte 52,255 // xor $0xff,%al
33239 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033240 .byte 127,0 // jg 5304 <.literal16+0x654>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033241 .byte 255 // (bad)
33242 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033243 .byte 127,0 // jg 5308 <.literal16+0x658>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033244 .byte 255 // (bad)
33245 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033246 .byte 127,0 // jg 530c <.literal16+0x65c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033247 .byte 255 // (bad)
33248 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033249 .byte 127,0 // jg 5310 <.literal16+0x660>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033250 .byte 0,0 // add %al,(%rax)
33251 .byte 0,63 // add %bh,(%rdi)
33252 .byte 0,0 // add %al,(%rax)
33253 .byte 0,63 // add %bh,(%rdi)
33254 .byte 0,0 // add %al,(%rax)
33255 .byte 0,63 // add %bh,(%rdi)
33256 .byte 0,0 // add %al,(%rax)
33257 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040033258 .byte 119,115 // ja 5395 <.literal16+0x6e5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033259 .byte 248 // clc
33260 .byte 194,119,115 // retq $0x7377
33261 .byte 248 // clc
33262 .byte 194,119,115 // retq $0x7377
33263 .byte 248 // clc
33264 .byte 194,119,115 // retq $0x7377
33265 .byte 248 // clc
33266 .byte 194,117,191 // retq $0xbf75
33267 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
33268 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033269 .byte 117,191 // jne 52f9 <.literal16+0x649>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033270 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
33271 .byte 63 // (bad)
33272 .byte 249 // stc
33273 .byte 68,180,62 // rex.R mov $0x3e,%spl
33274 .byte 249 // stc
33275 .byte 68,180,62 // rex.R mov $0x3e,%spl
33276 .byte 249 // stc
33277 .byte 68,180,62 // rex.R mov $0x3e,%spl
33278 .byte 249 // stc
33279 .byte 68,180,62 // rex.R mov $0x3e,%spl
33280 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Klein8ca33562017-05-23 08:07:43 -040033281 .byte 233,220,63,163,233 // jmpq ffffffffe9a3933a <_sk_callback_sse2+0xffffffffe9a3475f>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033282 .byte 220,63 // fdivrl (%rdi)
33283 .byte 0,0 // add %al,(%rax)
33284 .byte 128,63,0 // cmpb $0x0,(%rdi)
33285 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33286 .byte 63 // (bad)
33287 .byte 0,0 // add %al,(%rax)
33288 .byte 128,63,81 // cmpb $0x51,(%rdi)
33289 .byte 140,242 // mov %?,%edx
33290 .byte 66,81 // rex.X push %rcx
33291 .byte 140,242 // mov %?,%edx
33292 .byte 66,81 // rex.X push %rcx
33293 .byte 140,242 // mov %?,%edx
33294 .byte 66,81 // rex.X push %rcx
33295 .byte 140,242 // mov %?,%edx
33296 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
33297 .byte 63 // (bad)
33298 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
33299 .byte 63 // (bad)
33300 .byte 248 // clc
33301 .byte 245 // cmc
33302 .byte 154 // (bad)
33303 .byte 64,248 // rex clc
33304 .byte 245 // cmc
33305 .byte 154 // (bad)
33306 .byte 64,248 // rex clc
33307 .byte 245 // cmc
33308 .byte 154 // (bad)
33309 .byte 64,248 // rex clc
33310 .byte 245 // cmc
33311 .byte 154 // (bad)
33312 .byte 64,254 // rex (bad)
33313 .byte 210,221 // rcr %cl,%ch
33314 .byte 65,254 // rex.B (bad)
33315 .byte 210,221 // rcr %cl,%ch
33316 .byte 65,254 // rex.B (bad)
33317 .byte 210,221 // rcr %cl,%ch
33318 .byte 65,254 // rex.B (bad)
33319 .byte 210,221 // rcr %cl,%ch
33320 .byte 65,0,0 // add %al,(%r8)
33321 .byte 0,75,0 // add %cl,0x0(%rbx)
33322 .byte 0,0 // add %al,(%rax)
33323 .byte 75,0,0 // rex.WXB add %al,(%r8)
33324 .byte 0,75,0 // add %cl,0x0(%rbx)
33325 .byte 0,0 // add %al,(%rax)
33326 .byte 75,0,0 // rex.WXB add %al,(%r8)
33327 .byte 0,52,0 // add %dh,(%rax,%rax,1)
33328 .byte 0,0 // add %al,(%rax)
33329 .byte 52,0 // xor $0x0,%al
33330 .byte 0,0 // add %al,(%rax)
33331 .byte 52,0 // xor $0x0,%al
33332 .byte 0,0 // add %al,(%rax)
33333 .byte 52,255 // xor $0xff,%al
33334 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033335 .byte 127,0 // jg 53d4 <.literal16+0x724>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033336 .byte 255 // (bad)
33337 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033338 .byte 127,0 // jg 53d8 <.literal16+0x728>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033339 .byte 255 // (bad)
33340 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033341 .byte 127,0 // jg 53dc <.literal16+0x72c>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033342 .byte 255 // (bad)
33343 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033344 .byte 127,0 // jg 53e0 <.literal16+0x730>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033345 .byte 0,0 // add %al,(%rax)
33346 .byte 0,63 // add %bh,(%rdi)
33347 .byte 0,0 // add %al,(%rax)
33348 .byte 0,63 // add %bh,(%rdi)
33349 .byte 0,0 // add %al,(%rax)
33350 .byte 0,63 // add %bh,(%rdi)
33351 .byte 0,0 // add %al,(%rax)
33352 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040033353 .byte 119,115 // ja 5465 <.literal16+0x7b5>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033354 .byte 248 // clc
33355 .byte 194,119,115 // retq $0x7377
33356 .byte 248 // clc
33357 .byte 194,119,115 // retq $0x7377
33358 .byte 248 // clc
33359 .byte 194,119,115 // retq $0x7377
33360 .byte 248 // clc
33361 .byte 194,117,191 // retq $0xbf75
33362 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
33363 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033364 .byte 117,191 // jne 53c9 <.literal16+0x719>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033365 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
33366 .byte 63 // (bad)
33367 .byte 249 // stc
33368 .byte 68,180,62 // rex.R mov $0x3e,%spl
33369 .byte 249 // stc
33370 .byte 68,180,62 // rex.R mov $0x3e,%spl
33371 .byte 249 // stc
33372 .byte 68,180,62 // rex.R mov $0x3e,%spl
33373 .byte 249 // stc
33374 .byte 68,180,62 // rex.R mov $0x3e,%spl
33375 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Klein8ca33562017-05-23 08:07:43 -040033376 .byte 233,220,63,163,233 // jmpq ffffffffe9a3940a <_sk_callback_sse2+0xffffffffe9a3482f>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033377 .byte 220,63 // fdivrl (%rdi)
33378 .byte 0,0 // add %al,(%rax)
33379 .byte 128,63,0 // cmpb $0x0,(%rdi)
33380 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33381 .byte 63 // (bad)
33382 .byte 0,0 // add %al,(%rax)
33383 .byte 128,63,81 // cmpb $0x51,(%rdi)
33384 .byte 140,242 // mov %?,%edx
33385 .byte 66,81 // rex.X push %rcx
33386 .byte 140,242 // mov %?,%edx
33387 .byte 66,81 // rex.X push %rcx
33388 .byte 140,242 // mov %?,%edx
33389 .byte 66,81 // rex.X push %rcx
33390 .byte 140,242 // mov %?,%edx
33391 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
33392 .byte 63 // (bad)
33393 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
33394 .byte 63 // (bad)
33395 .byte 248 // clc
33396 .byte 245 // cmc
33397 .byte 154 // (bad)
33398 .byte 64,248 // rex clc
33399 .byte 245 // cmc
33400 .byte 154 // (bad)
33401 .byte 64,248 // rex clc
33402 .byte 245 // cmc
33403 .byte 154 // (bad)
33404 .byte 64,248 // rex clc
33405 .byte 245 // cmc
33406 .byte 154 // (bad)
33407 .byte 64,254 // rex (bad)
33408 .byte 210,221 // rcr %cl,%ch
33409 .byte 65,254 // rex.B (bad)
33410 .byte 210,221 // rcr %cl,%ch
33411 .byte 65,254 // rex.B (bad)
33412 .byte 210,221 // rcr %cl,%ch
33413 .byte 65,254 // rex.B (bad)
33414 .byte 210,221 // rcr %cl,%ch
33415 .byte 65,0,0 // add %al,(%r8)
33416 .byte 0,75,0 // add %cl,0x0(%rbx)
33417 .byte 0,0 // add %al,(%rax)
33418 .byte 75,0,0 // rex.WXB add %al,(%r8)
33419 .byte 0,75,0 // add %cl,0x0(%rbx)
33420 .byte 0,0 // add %al,(%rax)
33421 .byte 75,0,0 // rex.WXB add %al,(%r8)
33422 .byte 0,52,0 // add %dh,(%rax,%rax,1)
33423 .byte 0,0 // add %al,(%rax)
33424 .byte 52,0 // xor $0x0,%al
33425 .byte 0,0 // add %al,(%rax)
33426 .byte 52,0 // xor $0x0,%al
33427 .byte 0,0 // add %al,(%rax)
33428 .byte 52,255 // xor $0xff,%al
33429 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033430 .byte 127,0 // jg 54a4 <.literal16+0x7f4>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033431 .byte 255 // (bad)
33432 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033433 .byte 127,0 // jg 54a8 <.literal16+0x7f8>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033434 .byte 255 // (bad)
33435 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033436 .byte 127,0 // jg 54ac <.literal16+0x7fc>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033437 .byte 255 // (bad)
33438 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033439 .byte 127,0 // jg 54b0 <.literal16+0x800>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033440 .byte 0,0 // add %al,(%rax)
33441 .byte 0,63 // add %bh,(%rdi)
33442 .byte 0,0 // add %al,(%rax)
33443 .byte 0,63 // add %bh,(%rdi)
33444 .byte 0,0 // add %al,(%rax)
33445 .byte 0,63 // add %bh,(%rdi)
33446 .byte 0,0 // add %al,(%rax)
33447 .byte 0,63 // add %bh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040033448 .byte 119,115 // ja 5535 <.literal16+0x885>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033449 .byte 248 // clc
33450 .byte 194,119,115 // retq $0x7377
33451 .byte 248 // clc
33452 .byte 194,119,115 // retq $0x7377
33453 .byte 248 // clc
33454 .byte 194,119,115 // retq $0x7377
33455 .byte 248 // clc
33456 .byte 194,117,191 // retq $0xbf75
33457 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
33458 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033459 .byte 117,191 // jne 5499 <.literal16+0x7e9>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033460 .byte 191,63,117,191,191 // mov $0xbfbf753f,%edi
33461 .byte 63 // (bad)
33462 .byte 249 // stc
33463 .byte 68,180,62 // rex.R mov $0x3e,%spl
33464 .byte 249 // stc
33465 .byte 68,180,62 // rex.R mov $0x3e,%spl
33466 .byte 249 // stc
33467 .byte 68,180,62 // rex.R mov $0x3e,%spl
33468 .byte 249 // stc
33469 .byte 68,180,62 // rex.R mov $0x3e,%spl
33470 .byte 163,233,220,63,163,233,220,63,163 // movabs %eax,0xa33fdce9a33fdce9
Mike Klein8ca33562017-05-23 08:07:43 -040033471 .byte 233,220,63,163,233 // jmpq ffffffffe9a394da <_sk_callback_sse2+0xffffffffe9a348ff>
Mike Kleinb4bbc642017-04-27 08:59:55 -040033472 .byte 220,63 // fdivrl (%rdi)
33473 .byte 0,0 // add %al,(%rax)
33474 .byte 128,63,0 // cmpb $0x0,(%rdi)
33475 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33476 .byte 63 // (bad)
33477 .byte 0,0 // add %al,(%rax)
33478 .byte 128,63,81 // cmpb $0x51,(%rdi)
33479 .byte 140,242 // mov %?,%edx
33480 .byte 66,81 // rex.X push %rcx
33481 .byte 140,242 // mov %?,%edx
33482 .byte 66,81 // rex.X push %rcx
33483 .byte 140,242 // mov %?,%edx
33484 .byte 66,81 // rex.X push %rcx
33485 .byte 140,242 // mov %?,%edx
33486 .byte 66,141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%r15,4),%edi
33487 .byte 63 // (bad)
33488 .byte 141,188,190,63,141,188,190 // lea -0x414372c1(%rsi,%rdi,4),%edi
33489 .byte 63 // (bad)
33490 .byte 248 // clc
33491 .byte 245 // cmc
33492 .byte 154 // (bad)
33493 .byte 64,248 // rex clc
33494 .byte 245 // cmc
33495 .byte 154 // (bad)
33496 .byte 64,248 // rex clc
33497 .byte 245 // cmc
33498 .byte 154 // (bad)
33499 .byte 64,248 // rex clc
33500 .byte 245 // cmc
33501 .byte 154 // (bad)
33502 .byte 64,254 // rex (bad)
33503 .byte 210,221 // rcr %cl,%ch
33504 .byte 65,254 // rex.B (bad)
33505 .byte 210,221 // rcr %cl,%ch
33506 .byte 65,254 // rex.B (bad)
33507 .byte 210,221 // rcr %cl,%ch
33508 .byte 65,254 // rex.B (bad)
33509 .byte 210,221 // rcr %cl,%ch
33510 .byte 65,0,0 // add %al,(%r8)
33511 .byte 0,75,0 // add %cl,0x0(%rbx)
33512 .byte 0,0 // add %al,(%rax)
33513 .byte 75,0,0 // rex.WXB add %al,(%r8)
33514 .byte 0,75,0 // add %cl,0x0(%rbx)
33515 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033516 .byte 75,0,0 // rex.WXB add %al,(%r8)
33517 .byte 200,66,0,0 // enterq $0x42,$0x0
33518 .byte 200,66,0,0 // enterq $0x42,$0x0
33519 .byte 200,66,0,0 // enterq $0x42,$0x0
33520 .byte 200,66,0,0 // enterq $0x42,$0x0
Mike Klein8ca33562017-05-23 08:07:43 -040033521 .byte 127,67 // jg 55b7 <.literal16+0x907>
Mike Kleinfe560a82017-05-01 12:56:35 -040033522 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033523 .byte 127,67 // jg 55bb <.literal16+0x90b>
Mike Kleinfe560a82017-05-01 12:56:35 -040033524 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033525 .byte 127,67 // jg 55bf <.literal16+0x90f>
Mike Kleinfe560a82017-05-01 12:56:35 -040033526 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033527 .byte 127,67 // jg 55c3 <.literal16+0x913>
Mike Kleinfe560a82017-05-01 12:56:35 -040033528 .byte 0,0 // add %al,(%rax)
33529 .byte 0,195 // add %al,%bl
33530 .byte 0,0 // add %al,(%rax)
33531 .byte 0,195 // add %al,%bl
33532 .byte 0,0 // add %al,(%rax)
33533 .byte 0,195 // add %al,%bl
33534 .byte 0,0 // add %al,(%rax)
33535 .byte 0,195 // add %al,%bl
33536 .byte 0,0 // add %al,(%rax)
33537 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
33538 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
33539 .byte 128,65,0,0 // addb $0x0,0x0(%rcx)
33540 .byte 128,65,203,61 // addb $0x3d,-0x35(%rcx)
33541 .byte 13,60,203,61,13 // or $0xd3dcb3c,%eax
33542 .byte 60,203 // cmp $0xcb,%al
33543 .byte 61,13,60,203,61 // cmp $0x3dcb3c0d,%eax
33544 .byte 13,60,111,18,3 // or $0x3126f3c,%eax
33545 .byte 59,111,18 // cmp 0x12(%rdi),%ebp
33546 .byte 3,59 // add (%rbx),%edi
33547 .byte 111 // outsl %ds:(%rsi),(%dx)
33548 .byte 18,3 // adc (%rbx),%al
33549 .byte 59,111,18 // cmp 0x12(%rdi),%ebp
33550 .byte 3,59 // add (%rbx),%edi
33551 .byte 10,215 // or %bh,%dl
33552 .byte 163,59,10,215,163,59,10,215,163 // movabs %eax,0xa3d70a3ba3d70a3b
33553 .byte 59,10 // cmp (%rdx),%ecx
33554 .byte 215 // xlat %ds:(%rbx)
33555 .byte 163,59,194,24,17,60,194,24,17 // movabs %eax,0x1118c23c1118c23b
33556 .byte 60,194 // cmp $0xc2,%al
33557 .byte 24,17 // sbb %dl,(%rcx)
33558 .byte 60,194 // cmp $0xc2,%al
33559 .byte 24,17 // sbb %dl,(%rcx)
33560 .byte 60,203 // cmp $0xcb,%al
33561 .byte 61,13,190,203,61 // cmp $0x3dcbbe0d,%eax
33562 .byte 13,190,203,61,13 // or $0xd3dcbbe,%eax
33563 .byte 190,203,61,13,190 // mov $0xbe0d3dcb,%esi
33564 .byte 80 // push %rax
33565 .byte 128,3,62 // addb $0x3e,(%rbx)
33566 .byte 80 // push %rax
33567 .byte 128,3,62 // addb $0x3e,(%rbx)
33568 .byte 80 // push %rax
33569 .byte 128,3,62 // addb $0x3e,(%rbx)
33570 .byte 80 // push %rax
33571 .byte 128,3,62 // addb $0x3e,(%rbx)
33572 .byte 31 // (bad)
33573 .byte 215 // xlat %ds:(%rbx)
Mike Klein8ca33562017-05-23 08:07:43 -040033574 .byte 118,63 // jbe 5643 <.literal16+0x993>
Mike Kleinfe560a82017-05-01 12:56:35 -040033575 .byte 31 // (bad)
33576 .byte 215 // xlat %ds:(%rbx)
Mike Klein8ca33562017-05-23 08:07:43 -040033577 .byte 118,63 // jbe 5647 <.literal16+0x997>
Mike Kleinfe560a82017-05-01 12:56:35 -040033578 .byte 31 // (bad)
33579 .byte 215 // xlat %ds:(%rbx)
Mike Klein8ca33562017-05-23 08:07:43 -040033580 .byte 118,63 // jbe 564b <.literal16+0x99b>
Mike Kleinfe560a82017-05-01 12:56:35 -040033581 .byte 31 // (bad)
33582 .byte 215 // xlat %ds:(%rbx)
Mike Klein8ca33562017-05-23 08:07:43 -040033583 .byte 118,63 // jbe 564f <.literal16+0x99f>
Mike Kleinfe560a82017-05-01 12:56:35 -040033584 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
33585 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
33586 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
33587 .byte 246,64,83,63 // testb $0x3f,0x53(%rax)
33588 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33589 .byte 128,59,129 // cmpb $0x81,(%rbx)
33590 .byte 128,128,59,129,128,128,59 // addb $0x3b,-0x7f7f7ec5(%rax)
33591 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33592 .byte 128,59,0 // cmpb $0x0,(%rbx)
33593 .byte 0,127,67 // add %bh,0x43(%rdi)
33594 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033595 .byte 127,67 // jg 568b <.literal16+0x9db>
Mike Kleinfe560a82017-05-01 12:56:35 -040033596 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033597 .byte 127,67 // jg 568f <.literal16+0x9df>
Mike Kleinfe560a82017-05-01 12:56:35 -040033598 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033599 .byte 127,67 // jg 5693 <.literal16+0x9e3>
Mike Kleinfe560a82017-05-01 12:56:35 -040033600 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33601 .byte 128,59,129 // cmpb $0x81,(%rbx)
33602 .byte 128,128,59,0,0,128,63 // addb $0x3f,-0x7fffffc5(%rax)
33603 .byte 0,0 // add %al,(%rax)
33604 .byte 128,63,0 // cmpb $0x0,(%rdi)
33605 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33606 .byte 63 // (bad)
33607 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33608 .byte 128,59,129 // cmpb $0x81,(%rbx)
33609 .byte 128,128,59,0,0,128,63 // addb $0x3f,-0x7fffffc5(%rax)
33610 .byte 0,0 // add %al,(%rax)
33611 .byte 128,63,0 // cmpb $0x0,(%rdi)
33612 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33613 .byte 63 // (bad)
33614 .byte 255,0 // incl (%rax)
Mike Klein0aa742f2017-04-27 13:36:57 -040033615 .byte 0,0 // add %al,(%rax)
33616 .byte 255,0 // incl (%rax)
33617 .byte 0,0 // add %al,(%rax)
33618 .byte 255,0 // incl (%rax)
33619 .byte 0,0 // add %al,(%rax)
33620 .byte 255,0 // incl (%rax)
33621 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033622 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33623 .byte 128,59,129 // cmpb $0x81,(%rbx)
33624 .byte 128,128,59,0,248,0,0 // addb $0x0,0xf8003b(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040033625 .byte 0,248 // add %bh,%al
Mike Klein0aa742f2017-04-27 13:36:57 -040033626 .byte 0,0 // add %al,(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040033627 .byte 0,248 // add %bh,%al
Mike Klein0aa742f2017-04-27 13:36:57 -040033628 .byte 0,0 // add %al,(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040033629 .byte 0,248 // add %bh,%al
Mike Klein0aa742f2017-04-27 13:36:57 -040033630 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033631 .byte 8,33 // or %ah,(%rcx)
33632 .byte 132,55 // test %dh,(%rdi)
33633 .byte 8,33 // or %ah,(%rcx)
33634 .byte 132,55 // test %dh,(%rdi)
33635 .byte 8,33 // or %ah,(%rcx)
33636 .byte 132,55 // test %dh,(%rdi)
33637 .byte 8,33 // or %ah,(%rcx)
33638 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040033639 .byte 224,7 // loopne 56d9 <.literal16+0xa29>
Mike Klein0aa742f2017-04-27 13:36:57 -040033640 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033641 .byte 224,7 // loopne 56dd <.literal16+0xa2d>
Mike Klein0aa742f2017-04-27 13:36:57 -040033642 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033643 .byte 224,7 // loopne 56e1 <.literal16+0xa31>
Mike Klein0aa742f2017-04-27 13:36:57 -040033644 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033645 .byte 224,7 // loopne 56e5 <.literal16+0xa35>
Mike Klein0aa742f2017-04-27 13:36:57 -040033646 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033647 .byte 33,8 // and %ecx,(%rax)
33648 .byte 2,58 // add (%rdx),%bh
33649 .byte 33,8 // and %ecx,(%rax)
33650 .byte 2,58 // add (%rdx),%bh
33651 .byte 33,8 // and %ecx,(%rax)
33652 .byte 2,58 // add (%rdx),%bh
33653 .byte 33,8 // and %ecx,(%rax)
33654 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040033655 .byte 31 // (bad)
33656 .byte 0,0 // add %al,(%rax)
33657 .byte 0,31 // add %bl,(%rdi)
33658 .byte 0,0 // add %al,(%rax)
33659 .byte 0,31 // add %bl,(%rdi)
33660 .byte 0,0 // add %al,(%rax)
33661 .byte 0,31 // add %bl,(%rdi)
33662 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033663 .byte 0,8 // add %cl,(%rax)
33664 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
33665 .byte 8,33 // or %ah,(%rcx)
33666 .byte 4,61 // add $0x3d,%al
33667 .byte 8,33 // or %ah,(%rcx)
33668 .byte 4,61 // add $0x3d,%al
Mike Klein308e6242017-04-27 13:56:33 -040033669 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033670 .byte 128,63,0 // cmpb $0x0,(%rdi)
33671 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33672 .byte 63 // (bad)
33673 .byte 0,0 // add %al,(%rax)
33674 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Klein308e6242017-04-27 13:56:33 -040033675 .byte 248 // clc
33676 .byte 0,0 // add %al,(%rax)
33677 .byte 0,248 // add %bh,%al
33678 .byte 0,0 // add %al,(%rax)
33679 .byte 0,248 // add %bh,%al
33680 .byte 0,0 // add %al,(%rax)
33681 .byte 0,248 // add %bh,%al
33682 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033683 .byte 8,33 // or %ah,(%rcx)
33684 .byte 132,55 // test %dh,(%rdi)
33685 .byte 8,33 // or %ah,(%rcx)
33686 .byte 132,55 // test %dh,(%rdi)
33687 .byte 8,33 // or %ah,(%rcx)
33688 .byte 132,55 // test %dh,(%rdi)
33689 .byte 8,33 // or %ah,(%rcx)
33690 .byte 132,55 // test %dh,(%rdi)
Mike Klein8ca33562017-05-23 08:07:43 -040033691 .byte 224,7 // loopne 5749 <.literal16+0xa99>
Mike Klein308e6242017-04-27 13:56:33 -040033692 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033693 .byte 224,7 // loopne 574d <.literal16+0xa9d>
Mike Klein308e6242017-04-27 13:56:33 -040033694 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033695 .byte 224,7 // loopne 5751 <.literal16+0xaa1>
Mike Klein308e6242017-04-27 13:56:33 -040033696 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033697 .byte 224,7 // loopne 5755 <.literal16+0xaa5>
Mike Klein308e6242017-04-27 13:56:33 -040033698 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033699 .byte 33,8 // and %ecx,(%rax)
33700 .byte 2,58 // add (%rdx),%bh
33701 .byte 33,8 // and %ecx,(%rax)
33702 .byte 2,58 // add (%rdx),%bh
33703 .byte 33,8 // and %ecx,(%rax)
33704 .byte 2,58 // add (%rdx),%bh
33705 .byte 33,8 // and %ecx,(%rax)
33706 .byte 2,58 // add (%rdx),%bh
Mike Klein308e6242017-04-27 13:56:33 -040033707 .byte 31 // (bad)
33708 .byte 0,0 // add %al,(%rax)
33709 .byte 0,31 // add %bl,(%rdi)
33710 .byte 0,0 // add %al,(%rax)
33711 .byte 0,31 // add %bl,(%rdi)
33712 .byte 0,0 // add %al,(%rax)
33713 .byte 0,31 // add %bl,(%rdi)
33714 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033715 .byte 0,8 // add %cl,(%rax)
33716 .byte 33,4,61,8,33,4,61 // and %eax,0x3d042108(,%rdi,1)
33717 .byte 8,33 // or %ah,(%rcx)
33718 .byte 4,61 // add $0x3d,%al
33719 .byte 8,33 // or %ah,(%rcx)
33720 .byte 4,61 // add $0x3d,%al
Mike Klein308e6242017-04-27 13:56:33 -040033721 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033722 .byte 128,63,0 // cmpb $0x0,(%rdi)
33723 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33724 .byte 63 // (bad)
33725 .byte 0,0 // add %al,(%rax)
33726 .byte 128,63,0 // cmpb $0x0,(%rdi)
33727 .byte 0,248 // add %bh,%al
33728 .byte 65,0,0 // add %al,(%r8)
33729 .byte 248 // clc
33730 .byte 65,0,0 // add %al,(%r8)
33731 .byte 248 // clc
33732 .byte 65,0,0 // add %al,(%r8)
33733 .byte 248 // clc
33734 .byte 65,0,0 // add %al,(%r8)
Mike Klein8ca33562017-05-23 08:07:43 -040033735 .byte 124,66 // jl 57e6 <.literal16+0xb36>
Mike Kleinfe560a82017-05-01 12:56:35 -040033736 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033737 .byte 124,66 // jl 57ea <.literal16+0xb3a>
Mike Kleinfe560a82017-05-01 12:56:35 -040033738 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033739 .byte 124,66 // jl 57ee <.literal16+0xb3e>
Mike Kleinfe560a82017-05-01 12:56:35 -040033740 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033741 .byte 124,66 // jl 57f2 <.literal16+0xb42>
Mike Kleinfe560a82017-05-01 12:56:35 -040033742 .byte 0,240 // add %dh,%al
33743 .byte 0,0 // add %al,(%rax)
33744 .byte 0,240 // add %dh,%al
33745 .byte 0,0 // add %al,(%rax)
33746 .byte 0,240 // add %dh,%al
33747 .byte 0,0 // add %al,(%rax)
33748 .byte 0,240 // add %dh,%al
33749 .byte 0,0 // add %al,(%rax)
33750 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
33751 .byte 136,55 // mov %dh,(%rdi)
33752 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
33753 .byte 136,55 // mov %dh,(%rdi)
33754 .byte 0,15 // add %cl,(%rdi)
33755 .byte 0,0 // add %al,(%rax)
33756 .byte 0,15 // add %cl,(%rdi)
33757 .byte 0,0 // add %al,(%rax)
33758 .byte 0,15 // add %cl,(%rdi)
33759 .byte 0,0 // add %al,(%rax)
33760 .byte 0,15 // add %cl,(%rdi)
33761 .byte 0,0 // add %al,(%rax)
33762 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
33763 .byte 136,57 // mov %bh,(%rcx)
33764 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
33765 .byte 136,57 // mov %bh,(%rcx)
Mike Klein308e6242017-04-27 13:56:33 -040033766 .byte 240,0,0 // lock add %al,(%rax)
33767 .byte 0,240 // add %dh,%al
33768 .byte 0,0 // add %al,(%rax)
33769 .byte 0,240 // add %dh,%al
33770 .byte 0,0 // add %al,(%rax)
33771 .byte 0,240 // add %dh,%al
33772 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033773 .byte 0,137,136,136,59,137 // add %cl,-0x76c47778(%rcx)
33774 .byte 136,136,59,137,136,136 // mov %cl,-0x777776c5(%rax)
33775 .byte 59,137,136,136,59,15 // cmp 0xf3b8888(%rcx),%ecx
33776 .byte 0,0 // add %al,(%rax)
33777 .byte 0,15 // add %cl,(%rdi)
33778 .byte 0,0 // add %al,(%rax)
33779 .byte 0,15 // add %cl,(%rdi)
33780 .byte 0,0 // add %al,(%rax)
33781 .byte 0,15 // add %cl,(%rdi)
33782 .byte 0,0 // add %al,(%rax)
33783 .byte 0,137,136,136,61,137 // add %cl,-0x76c27778(%rcx)
33784 .byte 136,136,61,137,136,136 // mov %cl,-0x777776c3(%rax)
33785 .byte 61,137,136,136,61 // cmp $0x3d888889,%eax
33786 .byte 0,240 // add %dh,%al
33787 .byte 0,0 // add %al,(%rax)
33788 .byte 0,240 // add %dh,%al
33789 .byte 0,0 // add %al,(%rax)
33790 .byte 0,240 // add %dh,%al
33791 .byte 0,0 // add %al,(%rax)
33792 .byte 0,240 // add %dh,%al
33793 .byte 0,0 // add %al,(%rax)
33794 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
33795 .byte 136,55 // mov %dh,(%rdi)
33796 .byte 137,136,136,55,137,136 // mov %ecx,-0x7776c878(%rax)
33797 .byte 136,55 // mov %dh,(%rdi)
Mike Klein308e6242017-04-27 13:56:33 -040033798 .byte 0,15 // add %cl,(%rdi)
33799 .byte 0,0 // add %al,(%rax)
33800 .byte 0,15 // add %cl,(%rdi)
33801 .byte 0,0 // add %al,(%rax)
33802 .byte 0,15 // add %cl,(%rdi)
33803 .byte 0,0 // add %al,(%rax)
33804 .byte 0,15 // add %cl,(%rdi)
33805 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033806 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
33807 .byte 136,57 // mov %bh,(%rcx)
33808 .byte 137,136,136,57,137,136 // mov %ecx,-0x7776c678(%rax)
33809 .byte 136,57 // mov %bh,(%rcx)
Mike Klein308e6242017-04-27 13:56:33 -040033810 .byte 240,0,0 // lock add %al,(%rax)
33811 .byte 0,240 // add %dh,%al
33812 .byte 0,0 // add %al,(%rax)
33813 .byte 0,240 // add %dh,%al
33814 .byte 0,0 // add %al,(%rax)
33815 .byte 0,240 // add %dh,%al
33816 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033817 .byte 0,137,136,136,59,137 // add %cl,-0x76c47778(%rcx)
33818 .byte 136,136,59,137,136,136 // mov %cl,-0x777776c5(%rax)
33819 .byte 59,137,136,136,59,15 // cmp 0xf3b8888(%rcx),%ecx
Mike Klein308e6242017-04-27 13:56:33 -040033820 .byte 0,0 // add %al,(%rax)
33821 .byte 0,15 // add %cl,(%rdi)
33822 .byte 0,0 // add %al,(%rax)
33823 .byte 0,15 // add %cl,(%rdi)
33824 .byte 0,0 // add %al,(%rax)
33825 .byte 0,15 // add %cl,(%rdi)
33826 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033827 .byte 0,137,136,136,61,137 // add %cl,-0x76c27778(%rcx)
33828 .byte 136,136,61,137,136,136 // mov %cl,-0x777776c3(%rax)
33829 .byte 61,137,136,136,61 // cmp $0x3d888889,%eax
Mike Klein308e6242017-04-27 13:56:33 -040033830 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033831 .byte 112,65 // jo 58f5 <.literal16+0xc45>
Mike Klein308e6242017-04-27 13:56:33 -040033832 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033833 .byte 112,65 // jo 58f9 <.literal16+0xc49>
Mike Klein308e6242017-04-27 13:56:33 -040033834 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033835 .byte 112,65 // jo 58fd <.literal16+0xc4d>
Mike Klein308e6242017-04-27 13:56:33 -040033836 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033837 .byte 112,65 // jo 5901 <.literal16+0xc51>
Mike Kleinfe560a82017-05-01 12:56:35 -040033838 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040033839 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033840 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040033841 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033842 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040033843 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033844 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040033845 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033846 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33847 .byte 128,59,129 // cmpb $0x81,(%rbx)
33848 .byte 128,128,59,255,0,0,0 // addb $0x0,0xff3b(%rax)
33849 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040033850 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033851 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040033852 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033853 .byte 255,0 // incl (%rax)
Mike Klein308e6242017-04-27 13:56:33 -040033854 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033855 .byte 129,128,128,59,129,128,128,59,129,128// addl $0x80813b80,-0x7f7ec480(%rax)
33856 .byte 128,59,129 // cmpb $0x81,(%rbx)
33857 .byte 128,128,59,0,0,127,67 // addb $0x43,0x7f00003b(%rax)
Mike Klein308e6242017-04-27 13:56:33 -040033858 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033859 .byte 127,67 // jg 594b <.literal16+0xc9b>
Mike Klein308e6242017-04-27 13:56:33 -040033860 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033861 .byte 127,67 // jg 594f <.literal16+0xc9f>
Mike Klein308e6242017-04-27 13:56:33 -040033862 .byte 0,0 // add %al,(%rax)
Mike Klein8ca33562017-05-23 08:07:43 -040033863 .byte 127,67 // jg 5953 <.literal16+0xca3>
Mike Klein0aa742f2017-04-27 13:36:57 -040033864 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040033865 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033866 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
33867 .byte 0,0 // add %al,(%rax)
33868 .byte 0,0 // add %al,(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040033869 .byte 0,56 // add %bh,(%rax)
33870 .byte 0,0 // add %al,(%rax)
33871 .byte 0,56 // add %bh,(%rax)
33872 .byte 0,0 // add %al,(%rax)
33873 .byte 0,56 // add %bh,(%rax)
33874 .byte 0,0 // add %al,(%rax)
33875 .byte 0,56 // add %bh,(%rax)
33876 .byte 0,0 // add %al,(%rax)
33877 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
33878 .byte 0,0 // add %al,(%rax)
33879 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
33880 .byte 0,4,0 // add %al,(%rax,%rax,1)
33881 .byte 128,0,4 // addb $0x4,(%rax)
33882 .byte 0,128,0,4,0,128 // add %al,-0x7ffffc00(%rax)
33883 .byte 0,4,0 // add %al,(%rax,%rax,1)
33884 .byte 128,0,128 // addb $0x80,(%rax)
33885 .byte 0,0 // add %al,(%rax)
33886 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
33887 .byte 0,0 // add %al,(%rax)
33888 .byte 0,128,0,0,0,0 // add %al,0x0(%rax)
33889 .byte 0,56 // add %bh,(%rax)
33890 .byte 0,0 // add %al,(%rax)
33891 .byte 0,56 // add %bh,(%rax)
33892 .byte 0,0 // add %al,(%rax)
33893 .byte 0,56 // add %bh,(%rax)
33894 .byte 0,0 // add %al,(%rax)
33895 .byte 0,56 // add %bh,(%rax)
33896 .byte 0,0 // add %al,(%rax)
33897 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
33898 .byte 0,0 // add %al,(%rax)
33899 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
33900 .byte 0,4,0 // add %al,(%rax,%rax,1)
33901 .byte 128,0,4 // addb $0x4,(%rax)
33902 .byte 0,128,0,4,0,128 // add %al,-0x7ffffc00(%rax)
33903 .byte 0,4,0 // add %al,(%rax,%rax,1)
33904 .byte 128,0,0 // addb $0x0,(%rax)
33905 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
33906 .byte 0,0 // add %al,(%rax)
33907 .byte 0,128,0,0,0,128 // add %al,-0x80000000(%rax)
33908 .byte 0,0 // add %al,(%rax)
33909 .byte 128,56,0 // cmpb $0x0,(%rax)
33910 .byte 0,128,56,0,0,128 // add %al,-0x7fffffc8(%rax)
33911 .byte 56,0 // cmp %al,(%rax)
33912 .byte 0,128,56,0,64,254 // add %al,-0x1bfffc8(%rax)
33913 .byte 255,0 // incl (%rax)
33914 .byte 64,254 // rex (bad)
33915 .byte 255,0 // incl (%rax)
33916 .byte 64,254 // rex (bad)
33917 .byte 255,0 // incl (%rax)
33918 .byte 64,254 // rex (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040033919 .byte 255,128,0,128,55,128 // incl -0x7fc88000(%rax)
33920 .byte 0,128,55,128,0,128 // add %al,-0x7fff7fc9(%rax)
33921 .byte 55 // (bad)
33922 .byte 128,0,128 // addb $0x80,(%rax)
33923 .byte 55 // (bad)
33924 .byte 128,0,128 // addb $0x80,(%rax)
33925 .byte 55 // (bad)
33926 .byte 128,0,128 // addb $0x80,(%rax)
33927 .byte 55 // (bad)
33928 .byte 128,0,128 // addb $0x80,(%rax)
33929 .byte 55 // (bad)
33930 .byte 128,0,128 // addb $0x80,(%rax)
33931 .byte 55 // (bad)
33932 .byte 0,0 // add %al,(%rax)
33933 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinb4bbc642017-04-27 08:59:55 -040033934 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33935 .byte 63 // (bad)
33936 .byte 0,0 // add %al,(%rax)
33937 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinfe560a82017-05-01 12:56:35 -040033938 .byte 255 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040033939 .byte 127,71 // jg 5a3b <.literal16+0xd8b>
Mike Kleinfe560a82017-05-01 12:56:35 -040033940 .byte 0,255 // add %bh,%bh
Mike Klein8ca33562017-05-23 08:07:43 -040033941 .byte 127,71 // jg 5a3f <.literal16+0xd8f>
Mike Kleinfe560a82017-05-01 12:56:35 -040033942 .byte 0,255 // add %bh,%bh
Mike Klein8ca33562017-05-23 08:07:43 -040033943 .byte 127,71 // jg 5a43 <.literal16+0xd93>
Mike Kleinfe560a82017-05-01 12:56:35 -040033944 .byte 0,255 // add %bh,%bh
Mike Klein8ca33562017-05-23 08:07:43 -040033945 .byte 127,71 // jg 5a47 <.literal16+0xd97>
Mike Kleinfe560a82017-05-01 12:56:35 -040033946 .byte 0,0 // add %al,(%rax)
33947 .byte 128,63,0 // cmpb $0x0,(%rdi)
Mike Kleinb4bbc642017-04-27 08:59:55 -040033948 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33949 .byte 63 // (bad)
33950 .byte 0,0 // add %al,(%rax)
33951 .byte 128,63,0 // cmpb $0x0,(%rdi)
33952 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33953 .byte 63 // (bad)
33954 .byte 0,0 // add %al,(%rax)
33955 .byte 128,63,0 // cmpb $0x0,(%rdi)
33956 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33957 .byte 63 // (bad)
33958 .byte 0,0 // add %al,(%rax)
33959 .byte 128,63,0 // cmpb $0x0,(%rdi)
33960 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33961 .byte 63 // (bad)
33962 .byte 0,0 // add %al,(%rax)
33963 .byte 128,63,0 // cmpb $0x0,(%rdi)
33964 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33965 .byte 63 // (bad)
33966 .byte 0,0 // add %al,(%rax)
Mike Klein9f85d682017-05-23 07:52:01 -040033967 .byte 128,63,0 // cmpb $0x0,(%rdi)
33968 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33969 .byte 63 // (bad)
33970 .byte 0,0 // add %al,(%rax)
33971 .byte 128,63,0 // cmpb $0x0,(%rdi)
33972 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33973 .byte 63 // (bad)
33974 .byte 0,0 // add %al,(%rax)
33975 .byte 128,63,0 // cmpb $0x0,(%rdi)
33976 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33977 .byte 63 // (bad)
33978 .byte 0,0 // add %al,(%rax)
33979 .byte 128,191,0,0,128,191,0 // cmpb $0x0,-0x40800000(%rdi)
33980 .byte 0,128,191,0,0,128 // add %al,-0x7fffff41(%rax)
33981 .byte 191,0,0,0,63 // mov $0x3f000000,%edi
33982 .byte 0,0 // add %al,(%rax)
33983 .byte 0,63 // add %bh,(%rdi)
33984 .byte 0,0 // add %al,(%rax)
33985 .byte 0,63 // add %bh,(%rdi)
33986 .byte 0,0 // add %al,(%rax)
33987 .byte 0,63 // add %bh,(%rdi)
33988 .byte 0,0 // add %al,(%rax)
33989 .byte 128,63,0 // cmpb $0x0,(%rdi)
33990 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
33991 .byte 63 // (bad)
33992 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040033993 .byte 128,63,208 // cmpb $0xd0,(%rdi)
33994 .byte 179,89 // mov $0x59,%bl
33995 .byte 62,208 // ds (bad)
33996 .byte 179,89 // mov $0x59,%bl
33997 .byte 62,208 // ds (bad)
33998 .byte 179,89 // mov $0x59,%bl
33999 .byte 62,208 // ds (bad)
34000 .byte 179,89 // mov $0x59,%bl
34001 .byte 62,89 // ds pop %rcx
34002 .byte 23 // (bad)
34003 .byte 55 // (bad)
34004 .byte 63 // (bad)
34005 .byte 89 // pop %rcx
34006 .byte 23 // (bad)
34007 .byte 55 // (bad)
34008 .byte 63 // (bad)
34009 .byte 89 // pop %rcx
34010 .byte 23 // (bad)
34011 .byte 55 // (bad)
34012 .byte 63 // (bad)
34013 .byte 89 // pop %rcx
34014 .byte 23 // (bad)
34015 .byte 55 // (bad)
34016 .byte 63 // (bad)
34017 .byte 152 // cwtl
34018 .byte 221,147,61,152,221,147 // fstl -0x6c2267c3(%rbx)
34019 .byte 61,152,221,147,61 // cmp $0x3d93dd98,%eax
34020 .byte 152 // cwtl
Herb Derby4de13042017-05-15 10:49:39 -040034021 .byte 221,147,61,1,0,0 // fstl 0x13d(%rbx)
34022 .byte 0,1 // add %al,(%rcx)
34023 .byte 0,0 // add %al,(%rax)
34024 .byte 0,1 // add %al,(%rcx)
34025 .byte 0,0 // add %al,(%rax)
34026 .byte 0,1 // add %al,(%rcx)
34027 .byte 0,0 // add %al,(%rax)
34028 .byte 0,111,43 // add %ch,0x2b(%rdi)
34029 .byte 231,187 // out %eax,$0xbb
Herb Derby7eb86982017-05-02 19:04:39 -040034030 .byte 111 // outsl %ds:(%rsi),(%dx)
34031 .byte 43,231 // sub %edi,%esp
34032 .byte 187,111,43,231,187 // mov $0xbbe72b6f,%ebx
Herb Derby4de13042017-05-15 10:49:39 -040034033 .byte 111 // outsl %ds:(%rsi),(%dx)
34034 .byte 43,231 // sub %edi,%esp
34035 .byte 187,159,215,202,60 // mov $0x3ccad79f,%ebx
Herb Derby7eb86982017-05-02 19:04:39 -040034036 .byte 159 // lahf
34037 .byte 215 // xlat %ds:(%rbx)
34038 .byte 202,60,159 // lret $0x9f3c
34039 .byte 215 // xlat %ds:(%rbx)
34040 .byte 202,60,159 // lret $0x9f3c
34041 .byte 215 // xlat %ds:(%rbx)
Herb Derby7eb86982017-05-02 19:04:39 -040034042 .byte 202,60,212 // lret $0xd43c
34043 .byte 100,84 // fs push %rsp
34044 .byte 189,212,100,84,189 // mov $0xbd5464d4,%ebp
34045 .byte 212 // (bad)
34046 .byte 100,84 // fs push %rsp
34047 .byte 189,212,100,84,189 // mov $0xbd5464d4,%ebp
34048 .byte 169,240,34,62,169 // test $0xa93e22f0,%eax
34049 .byte 240,34,62 // lock and (%rsi),%bh
34050 .byte 169,240,34,62,169 // test $0xa93e22f0,%eax
34051 .byte 240,34,62 // lock and (%rsi),%bh
34052 .byte 0,0 // add %al,(%rax)
34053 .byte 128,62,0 // cmpb $0x0,(%rsi)
34054 .byte 0,128,62,0,0,128 // add %al,-0x7fffffc2(%rax)
34055 .byte 62,0,0 // add %al,%ds:(%rax)
34056 .byte 128,62,0 // cmpb $0x0,(%rsi)
34057 .byte 0,0 // add %al,(%rax)
34058 .byte 63 // (bad)
34059 .byte 0,0 // add %al,(%rax)
34060 .byte 0,63 // add %bh,(%rdi)
34061 .byte 0,0 // add %al,(%rax)
34062 .byte 0,63 // add %bh,(%rdi)
34063 .byte 0,0 // add %al,(%rax)
34064 .byte 0,63 // add %bh,(%rdi)
34065 .byte 0,0 // add %al,(%rax)
34066 .byte 128,63,0 // cmpb $0x0,(%rdi)
34067 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
34068 .byte 63 // (bad)
34069 .byte 0,0 // add %al,(%rax)
34070 .byte 128,63,0 // cmpb $0x0,(%rdi)
34071 .byte 0,0 // add %al,(%rax)
Mike Kleinfe560a82017-05-01 12:56:35 -040034072 .byte 63 // (bad)
34073 .byte 0,0 // add %al,(%rax)
34074 .byte 0,63 // add %bh,(%rdi)
34075 .byte 0,0 // add %al,(%rax)
34076 .byte 0,63 // add %bh,(%rdi)
34077 .byte 0,0 // add %al,(%rax)
34078 .byte 0,63 // add %bh,(%rdi)
34079 .byte 0,0 // add %al,(%rax)
Mike Kleinb4bbc642017-04-27 08:59:55 -040034080 .byte 128,63,0 // cmpb $0x0,(%rdi)
34081 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
Mike Klein2229b572017-04-21 10:30:29 -040034082 .byte 63 // (bad)
Mike Kleinfe560a82017-05-01 12:56:35 -040034083 .byte 0,0 // add %al,(%rax)
34084 .byte 128,63,0 // cmpb $0x0,(%rdi)
34085 .byte 0,0 // add %al,(%rax)
34086 .byte 191,0,0,0,191 // mov $0xbf000000,%edi
34087 .byte 0,0 // add %al,(%rax)
34088 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
34089 .byte 0,0 // add %al,(%rax)
34090 .byte 128,63,0 // cmpb $0x0,(%rdi)
34091 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
34092 .byte 63 // (bad)
34093 .byte 0,0 // add %al,(%rax)
34094 .byte 128,63,0 // cmpb $0x0,(%rdi)
34095 .byte 0,0 // add %al,(%rax)
34096 .byte 63 // (bad)
34097 .byte 0,0 // add %al,(%rax)
34098 .byte 0,63 // add %bh,(%rdi)
34099 .byte 0,0 // add %al,(%rax)
34100 .byte 0,63 // add %bh,(%rdi)
34101 .byte 0,0 // add %al,(%rax)
34102 .byte 0,63 // add %bh,(%rdi)
34103 .byte 0,0 // add %al,(%rax)
34104 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
34105 .byte 0,0 // add %al,(%rax)
34106 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
34107 .byte 0,0 // add %al,(%rax)
34108 .byte 128,63,0 // cmpb $0x0,(%rdi)
34109 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
34110 .byte 63 // (bad)
34111 .byte 0,0 // add %al,(%rax)
34112 .byte 128,63,0 // cmpb $0x0,(%rdi)
34113 .byte 0,0 // add %al,(%rax)
34114 .byte 63 // (bad)
34115 .byte 0,0 // add %al,(%rax)
34116 .byte 0,63 // add %bh,(%rdi)
34117 .byte 0,0 // add %al,(%rax)
34118 .byte 0,63 // add %bh,(%rdi)
34119 .byte 0,0 // add %al,(%rax)
34120 .byte 0,63 // add %bh,(%rdi)
34121 .byte 0,0 // add %al,(%rax)
34122 .byte 192,191,0,0,192,191,0 // sarb $0x0,-0x40400000(%rdi)
34123 .byte 0,192 // add %al,%al
34124 .byte 191,0,0,192,191 // mov $0xbfc00000,%edi
34125 .byte 0,0 // add %al,(%rax)
34126 .byte 128,63,0 // cmpb $0x0,(%rdi)
34127 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
34128 .byte 63 // (bad)
34129 .byte 0,0 // add %al,(%rax)
34130 .byte 128,63,114 // cmpb $0x72,(%rdi)
34131 .byte 28,199 // sbb $0xc7,%al
Mike Klein8ca33562017-05-23 08:07:43 -040034132 .byte 62,114,28 // jb,pt 5c02 <.literal16+0xf52>
Mike Kleinfe560a82017-05-01 12:56:35 -040034133 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034134 .byte 62,114,28 // jb,pt 5c06 <.literal16+0xf56>
Mike Kleinfe560a82017-05-01 12:56:35 -040034135 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034136 .byte 62,114,28 // jb,pt 5c0a <.literal16+0xf5a>
Mike Kleinfe560a82017-05-01 12:56:35 -040034137 .byte 199 // (bad)
34138 .byte 62,171 // ds stos %eax,%es:(%rdi)
34139 .byte 170 // stos %al,%es:(%rdi)
34140 .byte 170 // stos %al,%es:(%rdi)
34141 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
34142 .byte 171 // stos %eax,%es:(%rdi)
34143 .byte 170 // stos %al,%es:(%rdi)
34144 .byte 170 // stos %al,%es:(%rdi)
34145 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
34146 .byte 0,0 // add %al,(%rax)
34147 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
34148 .byte 0,0 // add %al,(%rax)
34149 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
34150 .byte 0,0 // add %al,(%rax)
34151 .byte 128,63,0 // cmpb $0x0,(%rdi)
34152 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
34153 .byte 63 // (bad)
34154 .byte 0,0 // add %al,(%rax)
34155 .byte 128,63,85 // cmpb $0x55,(%rdi)
34156 .byte 85 // push %rbp
34157 .byte 149 // xchg %eax,%ebp
34158 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
34159 .byte 85 // push %rbp
34160 .byte 85 // push %rbp
34161 .byte 149 // xchg %eax,%ebp
34162 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
34163 .byte 0,0 // add %al,(%rax)
34164 .byte 192,63,0 // sarb $0x0,(%rdi)
34165 .byte 0,192 // add %al,%al
34166 .byte 63 // (bad)
34167 .byte 0,0 // add %al,(%rax)
34168 .byte 192,63,0 // sarb $0x0,(%rdi)
34169 .byte 0,192 // add %al,%al
34170 .byte 63 // (bad)
34171 .byte 0,0 // add %al,(%rax)
34172 .byte 0,63 // add %bh,(%rdi)
34173 .byte 0,0 // add %al,(%rax)
34174 .byte 0,63 // add %bh,(%rdi)
34175 .byte 0,0 // add %al,(%rax)
34176 .byte 0,63 // add %bh,(%rdi)
34177 .byte 0,0 // add %al,(%rax)
34178 .byte 0,63 // add %bh,(%rdi)
34179 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Klein8ca33562017-05-23 08:07:43 -040034180 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63ea95 <_sk_callback_sse2+0x3d639eba>
Mike Kleinfe560a82017-05-01 12:56:35 -040034181 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
34182 .byte 0,63 // add %bh,(%rdi)
34183 .byte 0,0 // add %al,(%rax)
34184 .byte 0,63 // add %bh,(%rdi)
34185 .byte 0,0 // add %al,(%rax)
34186 .byte 0,63 // add %bh,(%rdi)
34187 .byte 0,0 // add %al,(%rax)
34188 .byte 0,63 // add %bh,(%rdi)
34189 .byte 85 // push %rbp
34190 .byte 85 // push %rbp
34191 .byte 149 // xchg %eax,%ebp
34192 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
34193 .byte 85 // push %rbp
34194 .byte 85 // push %rbp
34195 .byte 149 // xchg %eax,%ebp
34196 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
34197 .byte 0,0 // add %al,(%rax)
34198 .byte 192,63,0 // sarb $0x0,(%rdi)
34199 .byte 0,192 // add %al,%al
34200 .byte 63 // (bad)
34201 .byte 0,0 // add %al,(%rax)
34202 .byte 192,63,0 // sarb $0x0,(%rdi)
34203 .byte 0,192 // add %al,%al
34204 .byte 63 // (bad)
34205 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Klein8ca33562017-05-23 08:07:43 -040034206 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63ead5 <_sk_callback_sse2+0x3d639efa>
Mike Kleinfe560a82017-05-01 12:56:35 -040034207 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
34208 .byte 192,63,0 // sarb $0x0,(%rdi)
34209 .byte 0,192 // add %al,%al
34210 .byte 63 // (bad)
34211 .byte 0,0 // add %al,(%rax)
34212 .byte 192,63,0 // sarb $0x0,(%rdi)
34213 .byte 0,192 // add %al,%al
34214 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034215 .byte 114,28 // jb 5cce <.literal16+0x101e>
Mike Kleinfe560a82017-05-01 12:56:35 -040034216 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034217 .byte 62,114,28 // jb,pt 5cd2 <.literal16+0x1022>
Mike Kleinfe560a82017-05-01 12:56:35 -040034218 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034219 .byte 62,114,28 // jb,pt 5cd6 <.literal16+0x1026>
Mike Kleinfe560a82017-05-01 12:56:35 -040034220 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034221 .byte 62,114,28 // jb,pt 5cda <.literal16+0x102a>
Mike Kleinfe560a82017-05-01 12:56:35 -040034222 .byte 199 // (bad)
34223 .byte 62,171 // ds stos %eax,%es:(%rdi)
34224 .byte 170 // stos %al,%es:(%rdi)
34225 .byte 170 // stos %al,%es:(%rdi)
34226 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
34227 .byte 171 // stos %eax,%es:(%rdi)
34228 .byte 170 // stos %al,%es:(%rdi)
34229 .byte 170 // stos %al,%es:(%rdi)
34230 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
34231 .byte 0,0 // add %al,(%rax)
34232 .byte 192,191,0,0,192,191,0 // sarb $0x0,-0x40400000(%rdi)
34233 .byte 0,192 // add %al,%al
34234 .byte 191,0,0,192,191 // mov $0xbfc00000,%edi
34235 .byte 0,0 // add %al,(%rax)
34236 .byte 128,63,0 // cmpb $0x0,(%rdi)
34237 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
34238 .byte 63 // (bad)
34239 .byte 0,0 // add %al,(%rax)
34240 .byte 128,63,114 // cmpb $0x72,(%rdi)
34241 .byte 28,199 // sbb $0xc7,%al
Mike Klein8ca33562017-05-23 08:07:43 -040034242 .byte 62,114,28 // jb,pt 5d12 <.literal16+0x1062>
Mike Kleinfe560a82017-05-01 12:56:35 -040034243 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034244 .byte 62,114,28 // jb,pt 5d16 <.literal16+0x1066>
Mike Kleinfe560a82017-05-01 12:56:35 -040034245 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034246 .byte 62,114,28 // jb,pt 5d1a <.literal16+0x106a>
Mike Kleinfe560a82017-05-01 12:56:35 -040034247 .byte 199 // (bad)
34248 .byte 62,171 // ds stos %eax,%es:(%rdi)
34249 .byte 170 // stos %al,%es:(%rdi)
34250 .byte 170 // stos %al,%es:(%rdi)
34251 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
34252 .byte 171 // stos %eax,%es:(%rdi)
34253 .byte 170 // stos %al,%es:(%rdi)
34254 .byte 170 // stos %al,%es:(%rdi)
34255 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
34256 .byte 0,0 // add %al,(%rax)
34257 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
34258 .byte 0,0 // add %al,(%rax)
34259 .byte 0,191,0,0,0,191 // add %bh,-0x41000000(%rdi)
34260 .byte 0,0 // add %al,(%rax)
34261 .byte 128,63,0 // cmpb $0x0,(%rdi)
34262 .byte 0,128,63,0,0,128 // add %al,-0x7fffffc1(%rax)
34263 .byte 63 // (bad)
34264 .byte 0,0 // add %al,(%rax)
34265 .byte 128,63,85 // cmpb $0x55,(%rdi)
34266 .byte 85 // push %rbp
34267 .byte 149 // xchg %eax,%ebp
34268 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
34269 .byte 85 // push %rbp
34270 .byte 85 // push %rbp
34271 .byte 149 // xchg %eax,%ebp
34272 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
34273 .byte 0,0 // add %al,(%rax)
34274 .byte 192,63,0 // sarb $0x0,(%rdi)
34275 .byte 0,192 // add %al,%al
34276 .byte 63 // (bad)
34277 .byte 0,0 // add %al,(%rax)
34278 .byte 192,63,0 // sarb $0x0,(%rdi)
34279 .byte 0,192 // add %al,%al
34280 .byte 63 // (bad)
34281 .byte 0,0 // add %al,(%rax)
34282 .byte 0,63 // add %bh,(%rdi)
34283 .byte 0,0 // add %al,(%rax)
34284 .byte 0,63 // add %bh,(%rdi)
34285 .byte 0,0 // add %al,(%rax)
34286 .byte 0,63 // add %bh,(%rdi)
34287 .byte 0,0 // add %al,(%rax)
34288 .byte 0,63 // add %bh,(%rdi)
34289 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Klein8ca33562017-05-23 08:07:43 -040034290 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63eba5 <_sk_callback_sse2+0x3d639fca>
Mike Kleinfe560a82017-05-01 12:56:35 -040034291 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
34292 .byte 0,63 // add %bh,(%rdi)
34293 .byte 0,0 // add %al,(%rax)
34294 .byte 0,63 // add %bh,(%rdi)
34295 .byte 0,0 // add %al,(%rax)
34296 .byte 0,63 // add %bh,(%rdi)
34297 .byte 0,0 // add %al,(%rax)
34298 .byte 0,63 // add %bh,(%rdi)
34299 .byte 85 // push %rbp
34300 .byte 85 // push %rbp
34301 .byte 149 // xchg %eax,%ebp
34302 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
34303 .byte 85 // push %rbp
34304 .byte 85 // push %rbp
34305 .byte 149 // xchg %eax,%ebp
34306 .byte 191,85,85,149,191 // mov $0xbf955555,%edi
34307 .byte 0,0 // add %al,(%rax)
34308 .byte 192,63,0 // sarb $0x0,(%rdi)
34309 .byte 0,192 // add %al,%al
34310 .byte 63 // (bad)
34311 .byte 0,0 // add %al,(%rax)
34312 .byte 192,63,0 // sarb $0x0,(%rdi)
34313 .byte 0,192 // add %al,%al
34314 .byte 63 // (bad)
34315 .byte 57,142,99,61,57,142 // cmp %ecx,-0x71c6c29d(%rsi)
Mike Klein8ca33562017-05-23 08:07:43 -040034316 .byte 99,61,57,142,99,61 // movslq 0x3d638e39(%rip),%edi # 3d63ebe5 <_sk_callback_sse2+0x3d63a00a>
Mike Kleinfe560a82017-05-01 12:56:35 -040034317 .byte 57,142,99,61,0,0 // cmp %ecx,0x3d63(%rsi)
34318 .byte 192,63,0 // sarb $0x0,(%rdi)
34319 .byte 0,192 // add %al,%al
34320 .byte 63 // (bad)
34321 .byte 0,0 // add %al,(%rax)
34322 .byte 192,63,0 // sarb $0x0,(%rdi)
34323 .byte 0,192 // add %al,%al
34324 .byte 63 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034325 .byte 114,28 // jb 5dde <.literal16+0x112e>
Mike Kleinfe560a82017-05-01 12:56:35 -040034326 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034327 .byte 62,114,28 // jb,pt 5de2 <_sk_callback_sse2+0x1207>
Mike Kleinfe560a82017-05-01 12:56:35 -040034328 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034329 .byte 62,114,28 // jb,pt 5de6 <_sk_callback_sse2+0x120b>
Mike Kleinfe560a82017-05-01 12:56:35 -040034330 .byte 199 // (bad)
Mike Klein8ca33562017-05-23 08:07:43 -040034331 .byte 62,114,28 // jb,pt 5dea <_sk_callback_sse2+0x120f>
Mike Kleinfe560a82017-05-01 12:56:35 -040034332 .byte 199 // (bad)
34333 .byte 62,171 // ds stos %eax,%es:(%rdi)
34334 .byte 170 // stos %al,%es:(%rdi)
34335 .byte 170 // stos %al,%es:(%rdi)
34336 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
34337 .byte 171 // stos %eax,%es:(%rdi)
34338 .byte 170 // stos %al,%es:(%rdi)
34339 .byte 170 // stos %al,%es:(%rdi)
34340 .byte 190,171,170,170,190 // mov $0xbeaaaaab,%esi
Mike Kleind7e06ae2017-03-29 16:33:06 -040034341#endif