4 * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
5 * Copyright (C) 2011, 2014-2016, 2018, D. R. Commander.
6 * Copyright (C) 2013-2014, MIPS Technologies, Inc., California.
7 * Copyright (C) 2014, Linaro Limited.
8 * Copyright (C) 2015-2016, 2018, Matthieu Darbois.
9 * Copyright (C) 2016-2017, Loongson Technology Corporation Limited, BeiJing.
11 * Based on the x86 SIMD extension for IJG JPEG library,
12 * Copyright (C) 1999-2006, MIYASAKA Masaru.
13 * For conditions of distribution and use, see copyright notice in jsimdext.inc
17 /* Bitmask for supported acceleration methods */
19 #define JSIMD_NONE 0x00
20 #define JSIMD_MMX 0x01
21 #define JSIMD_3DNOW 0x02
22 #define JSIMD_SSE 0x04
23 #define JSIMD_SSE2 0x08
24 #define JSIMD_NEON 0x10
25 #define JSIMD_DSPR2 0x20
26 #define JSIMD_ALTIVEC 0x40
27 #define JSIMD_AVX2 0x80
28 #define JSIMD_MMI 0x100
30 /* SIMD Ext: retrieve SIMD/CPU information */
31 EXTERN(unsigned int) jpeg_simd_cpu_support(void);
33 /* RGB & extended RGB --> YCC Colorspace Conversion */
34 EXTERN(void) jsimd_rgb_ycc_convert_mmx
35 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
36 JDIMENSION output_row, int num_rows);
37 EXTERN(void) jsimd_extrgb_ycc_convert_mmx
38 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
39 JDIMENSION output_row, int num_rows);
40 EXTERN(void) jsimd_extrgbx_ycc_convert_mmx
41 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
42 JDIMENSION output_row, int num_rows);
43 EXTERN(void) jsimd_extbgr_ycc_convert_mmx
44 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
45 JDIMENSION output_row, int num_rows);
46 EXTERN(void) jsimd_extbgrx_ycc_convert_mmx
47 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
48 JDIMENSION output_row, int num_rows);
49 EXTERN(void) jsimd_extxbgr_ycc_convert_mmx
50 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
51 JDIMENSION output_row, int num_rows);
52 EXTERN(void) jsimd_extxrgb_ycc_convert_mmx
53 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
54 JDIMENSION output_row, int num_rows);
56 extern const int jconst_rgb_ycc_convert_sse2[];
57 EXTERN(void) jsimd_rgb_ycc_convert_sse2
58 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
59 JDIMENSION output_row, int num_rows);
60 EXTERN(void) jsimd_extrgb_ycc_convert_sse2
61 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
62 JDIMENSION output_row, int num_rows);
63 EXTERN(void) jsimd_extrgbx_ycc_convert_sse2
64 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
65 JDIMENSION output_row, int num_rows);
66 EXTERN(void) jsimd_extbgr_ycc_convert_sse2
67 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
68 JDIMENSION output_row, int num_rows);
69 EXTERN(void) jsimd_extbgrx_ycc_convert_sse2
70 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
71 JDIMENSION output_row, int num_rows);
72 EXTERN(void) jsimd_extxbgr_ycc_convert_sse2
73 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
74 JDIMENSION output_row, int num_rows);
75 EXTERN(void) jsimd_extxrgb_ycc_convert_sse2
76 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
77 JDIMENSION output_row, int num_rows);
79 extern const int jconst_rgb_ycc_convert_avx2[];
80 EXTERN(void) jsimd_rgb_ycc_convert_avx2
81 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
82 JDIMENSION output_row, int num_rows);
83 EXTERN(void) jsimd_extrgb_ycc_convert_avx2
84 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
85 JDIMENSION output_row, int num_rows);
86 EXTERN(void) jsimd_extrgbx_ycc_convert_avx2
87 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
88 JDIMENSION output_row, int num_rows);
89 EXTERN(void) jsimd_extbgr_ycc_convert_avx2
90 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
91 JDIMENSION output_row, int num_rows);
92 EXTERN(void) jsimd_extbgrx_ycc_convert_avx2
93 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
94 JDIMENSION output_row, int num_rows);
95 EXTERN(void) jsimd_extxbgr_ycc_convert_avx2
96 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
97 JDIMENSION output_row, int num_rows);
98 EXTERN(void) jsimd_extxrgb_ycc_convert_avx2
99 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
100 JDIMENSION output_row, int num_rows);
102 EXTERN(void) jsimd_rgb_ycc_convert_neon
103 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
104 JDIMENSION output_row, int num_rows);
105 EXTERN(void) jsimd_extrgb_ycc_convert_neon
106 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
107 JDIMENSION output_row, int num_rows);
108 EXTERN(void) jsimd_extrgbx_ycc_convert_neon
109 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
110 JDIMENSION output_row, int num_rows);
111 EXTERN(void) jsimd_extbgr_ycc_convert_neon
112 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
113 JDIMENSION output_row, int num_rows);
114 EXTERN(void) jsimd_extbgrx_ycc_convert_neon
115 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
116 JDIMENSION output_row, int num_rows);
117 EXTERN(void) jsimd_extxbgr_ycc_convert_neon
118 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
119 JDIMENSION output_row, int num_rows);
120 EXTERN(void) jsimd_extxrgb_ycc_convert_neon
121 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
122 JDIMENSION output_row, int num_rows);
124 EXTERN(void) jsimd_extrgb_ycc_convert_neon_slowld3
125 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
126 JDIMENSION output_row, int num_rows);
127 EXTERN(void) jsimd_extbgr_ycc_convert_neon_slowld3
128 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
129 JDIMENSION output_row, int num_rows);
131 EXTERN(void) jsimd_rgb_ycc_convert_dspr2
132 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
133 JDIMENSION output_row, int num_rows);
134 EXTERN(void) jsimd_extrgb_ycc_convert_dspr2
135 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
136 JDIMENSION output_row, int num_rows);
137 EXTERN(void) jsimd_extrgbx_ycc_convert_dspr2
138 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
139 JDIMENSION output_row, int num_rows);
140 EXTERN(void) jsimd_extbgr_ycc_convert_dspr2
141 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
142 JDIMENSION output_row, int num_rows);
143 EXTERN(void) jsimd_extbgrx_ycc_convert_dspr2
144 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
145 JDIMENSION output_row, int num_rows);
146 EXTERN(void) jsimd_extxbgr_ycc_convert_dspr2
147 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
148 JDIMENSION output_row, int num_rows);
149 EXTERN(void) jsimd_extxrgb_ycc_convert_dspr2
150 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
151 JDIMENSION output_row, int num_rows);
153 EXTERN(void) jsimd_rgb_ycc_convert_mmi
154 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
155 JDIMENSION output_row, int num_rows);
156 EXTERN(void) jsimd_extrgb_ycc_convert_mmi
157 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
158 JDIMENSION output_row, int num_rows);
159 EXTERN(void) jsimd_extrgbx_ycc_convert_mmi
160 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
161 JDIMENSION output_row, int num_rows);
162 EXTERN(void) jsimd_extbgr_ycc_convert_mmi
163 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
164 JDIMENSION output_row, int num_rows);
165 EXTERN(void) jsimd_extbgrx_ycc_convert_mmi
166 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
167 JDIMENSION output_row, int num_rows);
168 EXTERN(void) jsimd_extxbgr_ycc_convert_mmi
169 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
170 JDIMENSION output_row, int num_rows);
171 EXTERN(void) jsimd_extxrgb_ycc_convert_mmi
172 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
173 JDIMENSION output_row, int num_rows);
175 EXTERN(void) jsimd_rgb_ycc_convert_altivec
176 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
177 JDIMENSION output_row, int num_rows);
178 EXTERN(void) jsimd_extrgb_ycc_convert_altivec
179 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
180 JDIMENSION output_row, int num_rows);
181 EXTERN(void) jsimd_extrgbx_ycc_convert_altivec
182 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
183 JDIMENSION output_row, int num_rows);
184 EXTERN(void) jsimd_extbgr_ycc_convert_altivec
185 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
186 JDIMENSION output_row, int num_rows);
187 EXTERN(void) jsimd_extbgrx_ycc_convert_altivec
188 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
189 JDIMENSION output_row, int num_rows);
190 EXTERN(void) jsimd_extxbgr_ycc_convert_altivec
191 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
192 JDIMENSION output_row, int num_rows);
193 EXTERN(void) jsimd_extxrgb_ycc_convert_altivec
194 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
195 JDIMENSION output_row, int num_rows);
197 /* RGB & extended RGB --> Grayscale Colorspace Conversion */
198 EXTERN(void) jsimd_rgb_gray_convert_mmx
199 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
200 JDIMENSION output_row, int num_rows);
201 EXTERN(void) jsimd_extrgb_gray_convert_mmx
202 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
203 JDIMENSION output_row, int num_rows);
204 EXTERN(void) jsimd_extrgbx_gray_convert_mmx
205 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
206 JDIMENSION output_row, int num_rows);
207 EXTERN(void) jsimd_extbgr_gray_convert_mmx
208 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
209 JDIMENSION output_row, int num_rows);
210 EXTERN(void) jsimd_extbgrx_gray_convert_mmx
211 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
212 JDIMENSION output_row, int num_rows);
213 EXTERN(void) jsimd_extxbgr_gray_convert_mmx
214 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
215 JDIMENSION output_row, int num_rows);
216 EXTERN(void) jsimd_extxrgb_gray_convert_mmx
217 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
218 JDIMENSION output_row, int num_rows);
220 extern const int jconst_rgb_gray_convert_sse2[];
221 EXTERN(void) jsimd_rgb_gray_convert_sse2
222 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
223 JDIMENSION output_row, int num_rows);
224 EXTERN(void) jsimd_extrgb_gray_convert_sse2
225 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
226 JDIMENSION output_row, int num_rows);
227 EXTERN(void) jsimd_extrgbx_gray_convert_sse2
228 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
229 JDIMENSION output_row, int num_rows);
230 EXTERN(void) jsimd_extbgr_gray_convert_sse2
231 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
232 JDIMENSION output_row, int num_rows);
233 EXTERN(void) jsimd_extbgrx_gray_convert_sse2
234 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
235 JDIMENSION output_row, int num_rows);
236 EXTERN(void) jsimd_extxbgr_gray_convert_sse2
237 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
238 JDIMENSION output_row, int num_rows);
239 EXTERN(void) jsimd_extxrgb_gray_convert_sse2
240 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
241 JDIMENSION output_row, int num_rows);
243 extern const int jconst_rgb_gray_convert_avx2[];
244 EXTERN(void) jsimd_rgb_gray_convert_avx2
245 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
246 JDIMENSION output_row, int num_rows);
247 EXTERN(void) jsimd_extrgb_gray_convert_avx2
248 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
249 JDIMENSION output_row, int num_rows);
250 EXTERN(void) jsimd_extrgbx_gray_convert_avx2
251 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
252 JDIMENSION output_row, int num_rows);
253 EXTERN(void) jsimd_extbgr_gray_convert_avx2
254 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
255 JDIMENSION output_row, int num_rows);
256 EXTERN(void) jsimd_extbgrx_gray_convert_avx2
257 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
258 JDIMENSION output_row, int num_rows);
259 EXTERN(void) jsimd_extxbgr_gray_convert_avx2
260 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
261 JDIMENSION output_row, int num_rows);
262 EXTERN(void) jsimd_extxrgb_gray_convert_avx2
263 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
264 JDIMENSION output_row, int num_rows);
266 EXTERN(void) jsimd_rgb_gray_convert_dspr2
267 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
268 JDIMENSION output_row, int num_rows);
269 EXTERN(void) jsimd_extrgb_gray_convert_dspr2
270 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
271 JDIMENSION output_row, int num_rows);
272 EXTERN(void) jsimd_extrgbx_gray_convert_dspr2
273 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
274 JDIMENSION output_row, int num_rows);
275 EXTERN(void) jsimd_extbgr_gray_convert_dspr2
276 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
277 JDIMENSION output_row, int num_rows);
278 EXTERN(void) jsimd_extbgrx_gray_convert_dspr2
279 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
280 JDIMENSION output_row, int num_rows);
281 EXTERN(void) jsimd_extxbgr_gray_convert_dspr2
282 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
283 JDIMENSION output_row, int num_rows);
284 EXTERN(void) jsimd_extxrgb_gray_convert_dspr2
285 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
286 JDIMENSION output_row, int num_rows);
288 EXTERN(void) jsimd_rgb_gray_convert_altivec
289 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
290 JDIMENSION output_row, int num_rows);
291 EXTERN(void) jsimd_extrgb_gray_convert_altivec
292 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
293 JDIMENSION output_row, int num_rows);
294 EXTERN(void) jsimd_extrgbx_gray_convert_altivec
295 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
296 JDIMENSION output_row, int num_rows);
297 EXTERN(void) jsimd_extbgr_gray_convert_altivec
298 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
299 JDIMENSION output_row, int num_rows);
300 EXTERN(void) jsimd_extbgrx_gray_convert_altivec
301 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
302 JDIMENSION output_row, int num_rows);
303 EXTERN(void) jsimd_extxbgr_gray_convert_altivec
304 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
305 JDIMENSION output_row, int num_rows);
306 EXTERN(void) jsimd_extxrgb_gray_convert_altivec
307 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
308 JDIMENSION output_row, int num_rows);
310 /* YCC --> RGB & extended RGB Colorspace Conversion */
311 EXTERN(void) jsimd_ycc_rgb_convert_mmx
312 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
313 JSAMPARRAY output_buf, int num_rows);
314 EXTERN(void) jsimd_ycc_extrgb_convert_mmx
315 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
316 JSAMPARRAY output_buf, int num_rows);
317 EXTERN(void) jsimd_ycc_extrgbx_convert_mmx
318 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
319 JSAMPARRAY output_buf, int num_rows);
320 EXTERN(void) jsimd_ycc_extbgr_convert_mmx
321 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
322 JSAMPARRAY output_buf, int num_rows);
323 EXTERN(void) jsimd_ycc_extbgrx_convert_mmx
324 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
325 JSAMPARRAY output_buf, int num_rows);
326 EXTERN(void) jsimd_ycc_extxbgr_convert_mmx
327 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
328 JSAMPARRAY output_buf, int num_rows);
329 EXTERN(void) jsimd_ycc_extxrgb_convert_mmx
330 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
331 JSAMPARRAY output_buf, int num_rows);
333 extern const int jconst_ycc_rgb_convert_sse2[];
334 EXTERN(void) jsimd_ycc_rgb_convert_sse2
335 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
336 JSAMPARRAY output_buf, int num_rows);
337 EXTERN(void) jsimd_ycc_extrgb_convert_sse2
338 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
339 JSAMPARRAY output_buf, int num_rows);
340 EXTERN(void) jsimd_ycc_extrgbx_convert_sse2
341 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
342 JSAMPARRAY output_buf, int num_rows);
343 EXTERN(void) jsimd_ycc_extbgr_convert_sse2
344 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
345 JSAMPARRAY output_buf, int num_rows);
346 EXTERN(void) jsimd_ycc_extbgrx_convert_sse2
347 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
348 JSAMPARRAY output_buf, int num_rows);
349 EXTERN(void) jsimd_ycc_extxbgr_convert_sse2
350 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
351 JSAMPARRAY output_buf, int num_rows);
352 EXTERN(void) jsimd_ycc_extxrgb_convert_sse2
353 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
354 JSAMPARRAY output_buf, int num_rows);
356 extern const int jconst_ycc_rgb_convert_avx2[];
357 EXTERN(void) jsimd_ycc_rgb_convert_avx2
358 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
359 JSAMPARRAY output_buf, int num_rows);
360 EXTERN(void) jsimd_ycc_extrgb_convert_avx2
361 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
362 JSAMPARRAY output_buf, int num_rows);
363 EXTERN(void) jsimd_ycc_extrgbx_convert_avx2
364 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
365 JSAMPARRAY output_buf, int num_rows);
366 EXTERN(void) jsimd_ycc_extbgr_convert_avx2
367 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
368 JSAMPARRAY output_buf, int num_rows);
369 EXTERN(void) jsimd_ycc_extbgrx_convert_avx2
370 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
371 JSAMPARRAY output_buf, int num_rows);
372 EXTERN(void) jsimd_ycc_extxbgr_convert_avx2
373 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
374 JSAMPARRAY output_buf, int num_rows);
375 EXTERN(void) jsimd_ycc_extxrgb_convert_avx2
376 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
377 JSAMPARRAY output_buf, int num_rows);
379 EXTERN(void) jsimd_ycc_rgb_convert_neon
380 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
381 JSAMPARRAY output_buf, int num_rows);
382 EXTERN(void) jsimd_ycc_extrgb_convert_neon
383 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
384 JSAMPARRAY output_buf, int num_rows);
385 EXTERN(void) jsimd_ycc_extrgbx_convert_neon
386 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
387 JSAMPARRAY output_buf, int num_rows);
388 EXTERN(void) jsimd_ycc_extbgr_convert_neon
389 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
390 JSAMPARRAY output_buf, int num_rows);
391 EXTERN(void) jsimd_ycc_extbgrx_convert_neon
392 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
393 JSAMPARRAY output_buf, int num_rows);
394 EXTERN(void) jsimd_ycc_extxbgr_convert_neon
395 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
396 JSAMPARRAY output_buf, int num_rows);
397 EXTERN(void) jsimd_ycc_extxrgb_convert_neon
398 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
399 JSAMPARRAY output_buf, int num_rows);
400 EXTERN(void) jsimd_ycc_rgb565_convert_neon
401 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
402 JSAMPARRAY output_buf, int num_rows);
404 EXTERN(void) jsimd_ycc_extrgb_convert_neon_slowst3
405 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
406 JSAMPARRAY output_buf, int num_rows);
407 EXTERN(void) jsimd_ycc_extbgr_convert_neon_slowst3
408 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
409 JSAMPARRAY output_buf, int num_rows);
411 EXTERN(void) jsimd_ycc_rgb_convert_dspr2
412 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
413 JSAMPARRAY output_buf, int num_rows);
414 EXTERN(void) jsimd_ycc_extrgb_convert_dspr2
415 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
416 JSAMPARRAY output_buf, int num_rows);
417 EXTERN(void) jsimd_ycc_extrgbx_convert_dspr2
418 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
419 JSAMPARRAY output_buf, int num_rows);
420 EXTERN(void) jsimd_ycc_extbgr_convert_dspr2
421 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
422 JSAMPARRAY output_buf, int num_rows);
423 EXTERN(void) jsimd_ycc_extbgrx_convert_dspr2
424 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
425 JSAMPARRAY output_buf, int num_rows);
426 EXTERN(void) jsimd_ycc_extxbgr_convert_dspr2
427 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
428 JSAMPARRAY output_buf, int num_rows);
429 EXTERN(void) jsimd_ycc_extxrgb_convert_dspr2
430 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
431 JSAMPARRAY output_buf, int num_rows);
433 EXTERN(void) jsimd_ycc_rgb_convert_mmi
434 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
435 JSAMPARRAY output_buf, int num_rows);
436 EXTERN(void) jsimd_ycc_extrgb_convert_mmi
437 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
438 JSAMPARRAY output_buf, int num_rows);
439 EXTERN(void) jsimd_ycc_extrgbx_convert_mmi
440 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
441 JSAMPARRAY output_buf, int num_rows);
442 EXTERN(void) jsimd_ycc_extbgr_convert_mmi
443 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
444 JSAMPARRAY output_buf, int num_rows);
445 EXTERN(void) jsimd_ycc_extbgrx_convert_mmi
446 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
447 JSAMPARRAY output_buf, int num_rows);
448 EXTERN(void) jsimd_ycc_extxbgr_convert_mmi
449 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
450 JSAMPARRAY output_buf, int num_rows);
451 EXTERN(void) jsimd_ycc_extxrgb_convert_mmi
452 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
453 JSAMPARRAY output_buf, int num_rows);
455 EXTERN(void) jsimd_ycc_rgb_convert_altivec
456 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
457 JSAMPARRAY output_buf, int num_rows);
458 EXTERN(void) jsimd_ycc_extrgb_convert_altivec
459 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
460 JSAMPARRAY output_buf, int num_rows);
461 EXTERN(void) jsimd_ycc_extrgbx_convert_altivec
462 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
463 JSAMPARRAY output_buf, int num_rows);
464 EXTERN(void) jsimd_ycc_extbgr_convert_altivec
465 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
466 JSAMPARRAY output_buf, int num_rows);
467 EXTERN(void) jsimd_ycc_extbgrx_convert_altivec
468 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
469 JSAMPARRAY output_buf, int num_rows);
470 EXTERN(void) jsimd_ycc_extxbgr_convert_altivec
471 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
472 JSAMPARRAY output_buf, int num_rows);
473 EXTERN(void) jsimd_ycc_extxrgb_convert_altivec
474 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
475 JSAMPARRAY output_buf, int num_rows);
477 /* NULL Colorspace Conversion */
478 EXTERN(void) jsimd_c_null_convert_dspr2
479 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
480 JDIMENSION output_row, int num_rows, int num_components);
482 /* h2v1 Downsampling */
483 EXTERN(void) jsimd_h2v1_downsample_mmx
484 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
485 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
487 EXTERN(void) jsimd_h2v1_downsample_sse2
488 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
489 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
491 EXTERN(void) jsimd_h2v1_downsample_avx2
492 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
493 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
495 EXTERN(void) jsimd_h2v1_downsample_neon
496 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
497 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
499 EXTERN(void) jsimd_h2v1_downsample_dspr2
500 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
501 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
503 EXTERN(void) jsimd_h2v1_downsample_altivec
504 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
505 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
507 /* h2v2 Downsampling */
508 EXTERN(void) jsimd_h2v2_downsample_mmx
509 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
510 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
512 EXTERN(void) jsimd_h2v2_downsample_sse2
513 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
514 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
516 EXTERN(void) jsimd_h2v2_downsample_avx2
517 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
518 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
520 EXTERN(void) jsimd_h2v2_downsample_neon
521 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
522 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
524 EXTERN(void) jsimd_h2v2_downsample_dspr2
525 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
526 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
528 EXTERN(void) jsimd_h2v2_downsample_mmi
529 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
530 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
532 EXTERN(void) jsimd_h2v2_downsample_altivec
533 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
534 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
536 /* h2v2 Smooth Downsampling */
537 EXTERN(void) jsimd_h2v2_smooth_downsample_dspr2
538 (JSAMPARRAY input_data, JSAMPARRAY output_data, JDIMENSION v_samp_factor,
539 int max_v_samp_factor, int smoothing_factor, JDIMENSION width_in_blocks,
540 JDIMENSION image_width);
544 EXTERN(void) jsimd_h2v1_upsample_mmx
545 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
546 JSAMPARRAY *output_data_ptr);
547 EXTERN(void) jsimd_h2v2_upsample_mmx
548 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
549 JSAMPARRAY *output_data_ptr);
551 EXTERN(void) jsimd_h2v1_upsample_sse2
552 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
553 JSAMPARRAY *output_data_ptr);
554 EXTERN(void) jsimd_h2v2_upsample_sse2
555 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
556 JSAMPARRAY *output_data_ptr);
558 EXTERN(void) jsimd_h2v1_upsample_avx2
559 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
560 JSAMPARRAY *output_data_ptr);
561 EXTERN(void) jsimd_h2v2_upsample_avx2
562 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
563 JSAMPARRAY *output_data_ptr);
565 EXTERN(void) jsimd_h2v1_upsample_dspr2
566 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
567 JSAMPARRAY *output_data_ptr);
568 EXTERN(void) jsimd_h2v2_upsample_dspr2
569 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
570 JSAMPARRAY *output_data_ptr);
572 EXTERN(void) jsimd_int_upsample_dspr2
573 (UINT8 h_expand, UINT8 v_expand, JSAMPARRAY input_data,
574 JSAMPARRAY *output_data_ptr, JDIMENSION output_width,
575 int max_v_samp_factor);
577 EXTERN(void) jsimd_h2v1_upsample_altivec
578 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
579 JSAMPARRAY *output_data_ptr);
580 EXTERN(void) jsimd_h2v2_upsample_altivec
581 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
582 JSAMPARRAY *output_data_ptr);
584 /* Fancy Upsampling */
585 EXTERN(void) jsimd_h2v1_fancy_upsample_mmx
586 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
587 JSAMPARRAY *output_data_ptr);
588 EXTERN(void) jsimd_h2v2_fancy_upsample_mmx
589 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
590 JSAMPARRAY *output_data_ptr);
592 extern const int jconst_fancy_upsample_sse2[];
593 EXTERN(void) jsimd_h2v1_fancy_upsample_sse2
594 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
595 JSAMPARRAY *output_data_ptr);
596 EXTERN(void) jsimd_h2v2_fancy_upsample_sse2
597 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
598 JSAMPARRAY *output_data_ptr);
600 extern const int jconst_fancy_upsample_avx2[];
601 EXTERN(void) jsimd_h2v1_fancy_upsample_avx2
602 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
603 JSAMPARRAY *output_data_ptr);
604 EXTERN(void) jsimd_h2v2_fancy_upsample_avx2
605 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
606 JSAMPARRAY *output_data_ptr);
608 EXTERN(void) jsimd_h2v1_fancy_upsample_neon
609 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
610 JSAMPARRAY *output_data_ptr);
612 EXTERN(void) jsimd_h2v1_fancy_upsample_dspr2
613 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
614 JSAMPARRAY *output_data_ptr);
615 EXTERN(void) jsimd_h2v2_fancy_upsample_dspr2
616 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
617 JSAMPARRAY *output_data_ptr);
619 EXTERN(void) jsimd_h2v2_fancy_upsample_mmi
620 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
621 JSAMPARRAY *output_data_ptr);
623 EXTERN(void) jsimd_h2v1_fancy_upsample_altivec
624 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
625 JSAMPARRAY *output_data_ptr);
626 EXTERN(void) jsimd_h2v2_fancy_upsample_altivec
627 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
628 JSAMPARRAY *output_data_ptr);
630 /* Merged Upsampling */
631 EXTERN(void) jsimd_h2v1_merged_upsample_mmx
632 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
633 JSAMPARRAY output_buf);
634 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mmx
635 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
636 JSAMPARRAY output_buf);
637 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mmx
638 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
639 JSAMPARRAY output_buf);
640 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mmx
641 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
642 JSAMPARRAY output_buf);
643 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mmx
644 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
645 JSAMPARRAY output_buf);
646 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mmx
647 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
648 JSAMPARRAY output_buf);
649 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mmx
650 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
651 JSAMPARRAY output_buf);
653 EXTERN(void) jsimd_h2v2_merged_upsample_mmx
654 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
655 JSAMPARRAY output_buf);
656 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mmx
657 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
658 JSAMPARRAY output_buf);
659 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mmx
660 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
661 JSAMPARRAY output_buf);
662 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mmx
663 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
664 JSAMPARRAY output_buf);
665 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mmx
666 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
667 JSAMPARRAY output_buf);
668 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mmx
669 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
670 JSAMPARRAY output_buf);
671 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mmx
672 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
673 JSAMPARRAY output_buf);
675 extern const int jconst_merged_upsample_sse2[];
676 EXTERN(void) jsimd_h2v1_merged_upsample_sse2
677 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
678 JSAMPARRAY output_buf);
679 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_sse2
680 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
681 JSAMPARRAY output_buf);
682 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_sse2
683 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
684 JSAMPARRAY output_buf);
685 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_sse2
686 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
687 JSAMPARRAY output_buf);
688 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_sse2
689 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
690 JSAMPARRAY output_buf);
691 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_sse2
692 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
693 JSAMPARRAY output_buf);
694 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_sse2
695 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
696 JSAMPARRAY output_buf);
698 EXTERN(void) jsimd_h2v2_merged_upsample_sse2
699 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
700 JSAMPARRAY output_buf);
701 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_sse2
702 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
703 JSAMPARRAY output_buf);
704 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_sse2
705 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
706 JSAMPARRAY output_buf);
707 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_sse2
708 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
709 JSAMPARRAY output_buf);
710 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_sse2
711 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
712 JSAMPARRAY output_buf);
713 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_sse2
714 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
715 JSAMPARRAY output_buf);
716 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_sse2
717 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
718 JSAMPARRAY output_buf);
720 extern const int jconst_merged_upsample_avx2[];
721 EXTERN(void) jsimd_h2v1_merged_upsample_avx2
722 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
723 JSAMPARRAY output_buf);
724 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_avx2
725 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
726 JSAMPARRAY output_buf);
727 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_avx2
728 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
729 JSAMPARRAY output_buf);
730 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_avx2
731 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
732 JSAMPARRAY output_buf);
733 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_avx2
734 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
735 JSAMPARRAY output_buf);
736 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_avx2
737 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
738 JSAMPARRAY output_buf);
739 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_avx2
740 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
741 JSAMPARRAY output_buf);
743 EXTERN(void) jsimd_h2v2_merged_upsample_avx2
744 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
745 JSAMPARRAY output_buf);
746 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_avx2
747 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
748 JSAMPARRAY output_buf);
749 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_avx2
750 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
751 JSAMPARRAY output_buf);
752 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_avx2
753 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
754 JSAMPARRAY output_buf);
755 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_avx2
756 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
757 JSAMPARRAY output_buf);
758 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_avx2
759 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
760 JSAMPARRAY output_buf);
761 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_avx2
762 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
763 JSAMPARRAY output_buf);
765 EXTERN(void) jsimd_h2v1_merged_upsample_dspr2
766 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
767 JSAMPARRAY output_buf, JSAMPLE *range);
768 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_dspr2
769 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
770 JSAMPARRAY output_buf, JSAMPLE *range);
771 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_dspr2
772 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
773 JSAMPARRAY output_buf, JSAMPLE *range);
774 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_dspr2
775 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
776 JSAMPARRAY output_buf, JSAMPLE *range);
777 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_dspr2
778 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
779 JSAMPARRAY output_buf, JSAMPLE *range);
780 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_dspr2
781 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
782 JSAMPARRAY output_buf, JSAMPLE *range);
783 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_dspr2
784 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
785 JSAMPARRAY output_buf, JSAMPLE *range);
787 EXTERN(void) jsimd_h2v2_merged_upsample_dspr2
788 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
789 JSAMPARRAY output_buf, JSAMPLE *range);
790 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_dspr2
791 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
792 JSAMPARRAY output_buf, JSAMPLE *range);
793 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_dspr2
794 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
795 JSAMPARRAY output_buf, JSAMPLE *range);
796 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_dspr2
797 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
798 JSAMPARRAY output_buf, JSAMPLE *range);
799 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_dspr2
800 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
801 JSAMPARRAY output_buf, JSAMPLE *range);
802 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_dspr2
803 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
804 JSAMPARRAY output_buf, JSAMPLE *range);
805 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_dspr2
806 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
807 JSAMPARRAY output_buf, JSAMPLE *range);
809 EXTERN(void) jsimd_h2v1_merged_upsample_altivec
810 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
811 JSAMPARRAY output_buf);
812 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_altivec
813 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
814 JSAMPARRAY output_buf);
815 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_altivec
816 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
817 JSAMPARRAY output_buf);
818 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_altivec
819 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
820 JSAMPARRAY output_buf);
821 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_altivec
822 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
823 JSAMPARRAY output_buf);
824 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_altivec
825 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
826 JSAMPARRAY output_buf);
827 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_altivec
828 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
829 JSAMPARRAY output_buf);
831 EXTERN(void) jsimd_h2v2_merged_upsample_altivec
832 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
833 JSAMPARRAY output_buf);
834 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_altivec
835 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
836 JSAMPARRAY output_buf);
837 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_altivec
838 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
839 JSAMPARRAY output_buf);
840 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_altivec
841 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
842 JSAMPARRAY output_buf);
843 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_altivec
844 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
845 JSAMPARRAY output_buf);
846 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_altivec
847 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
848 JSAMPARRAY output_buf);
849 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_altivec
850 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
851 JSAMPARRAY output_buf);
853 /* Sample Conversion */
854 EXTERN(void) jsimd_convsamp_mmx
855 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
857 EXTERN(void) jsimd_convsamp_sse2
858 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
860 EXTERN(void) jsimd_convsamp_avx2
861 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
863 EXTERN(void) jsimd_convsamp_neon
864 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
866 EXTERN(void) jsimd_convsamp_dspr2
867 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
869 EXTERN(void) jsimd_convsamp_altivec
870 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
872 /* Floating Point Sample Conversion */
873 EXTERN(void) jsimd_convsamp_float_3dnow
874 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
876 EXTERN(void) jsimd_convsamp_float_sse
877 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
879 EXTERN(void) jsimd_convsamp_float_sse2
880 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
882 EXTERN(void) jsimd_convsamp_float_dspr2
883 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
885 /* Slow Integer Forward DCT */
886 EXTERN(void) jsimd_fdct_islow_mmx(DCTELEM *data);
888 extern const int jconst_fdct_islow_sse2[];
889 EXTERN(void) jsimd_fdct_islow_sse2(DCTELEM *data);
891 extern const int jconst_fdct_islow_avx2[];
892 EXTERN(void) jsimd_fdct_islow_avx2(DCTELEM *data);
894 EXTERN(void) jsimd_fdct_islow_neon(DCTELEM *data);
896 EXTERN(void) jsimd_fdct_islow_dspr2(DCTELEM *data);
898 EXTERN(void) jsimd_fdct_islow_mmi(DCTELEM *data);
900 EXTERN(void) jsimd_fdct_islow_altivec(DCTELEM *data);
902 /* Fast Integer Forward DCT */
903 EXTERN(void) jsimd_fdct_ifast_mmx(DCTELEM *data);
905 extern const int jconst_fdct_ifast_sse2[];
906 EXTERN(void) jsimd_fdct_ifast_sse2(DCTELEM *data);
908 EXTERN(void) jsimd_fdct_ifast_neon(DCTELEM *data);
910 EXTERN(void) jsimd_fdct_ifast_dspr2(DCTELEM *data);
912 EXTERN(void) jsimd_fdct_ifast_altivec(DCTELEM *data);
914 /* Floating Point Forward DCT */
915 EXTERN(void) jsimd_fdct_float_3dnow(FAST_FLOAT *data);
917 extern const int jconst_fdct_float_sse[];
918 EXTERN(void) jsimd_fdct_float_sse(FAST_FLOAT *data);
921 EXTERN(void) jsimd_quantize_mmx
922 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
924 EXTERN(void) jsimd_quantize_sse2
925 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
927 EXTERN(void) jsimd_quantize_avx2
928 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
930 EXTERN(void) jsimd_quantize_neon
931 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
933 EXTERN(void) jsimd_quantize_dspr2
934 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
936 EXTERN(void) jsimd_quantize_mmi
937 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
939 EXTERN(void) jsimd_quantize_altivec
940 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
942 /* Floating Point Quantization */
943 EXTERN(void) jsimd_quantize_float_3dnow
944 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
946 EXTERN(void) jsimd_quantize_float_sse
947 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
949 EXTERN(void) jsimd_quantize_float_sse2
950 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
952 EXTERN(void) jsimd_quantize_float_dspr2
953 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
955 /* Scaled Inverse DCT */
956 EXTERN(void) jsimd_idct_2x2_mmx
957 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
958 JDIMENSION output_col);
959 EXTERN(void) jsimd_idct_4x4_mmx
960 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
961 JDIMENSION output_col);
963 extern const int jconst_idct_red_sse2[];
964 EXTERN(void) jsimd_idct_2x2_sse2
965 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
966 JDIMENSION output_col);
967 EXTERN(void) jsimd_idct_4x4_sse2
968 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
969 JDIMENSION output_col);
971 EXTERN(void) jsimd_idct_2x2_neon
972 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
973 JDIMENSION output_col);
974 EXTERN(void) jsimd_idct_4x4_neon
975 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
976 JDIMENSION output_col);
978 EXTERN(void) jsimd_idct_2x2_dspr2
979 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
980 JDIMENSION output_col);
981 EXTERN(void) jsimd_idct_4x4_dspr2
982 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
983 JDIMENSION output_col, int *workspace);
984 EXTERN(void) jsimd_idct_6x6_dspr2
985 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
986 JDIMENSION output_col);
987 EXTERN(void) jsimd_idct_12x12_pass1_dspr2
988 (JCOEFPTR coef_block, void *dct_table, int *workspace);
989 EXTERN(void) jsimd_idct_12x12_pass2_dspr2
990 (int *workspace, int *output);
992 /* Slow Integer Inverse DCT */
993 EXTERN(void) jsimd_idct_islow_mmx
994 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
995 JDIMENSION output_col);
997 extern const int jconst_idct_islow_sse2[];
998 EXTERN(void) jsimd_idct_islow_sse2
999 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1000 JDIMENSION output_col);
1002 extern const int jconst_idct_islow_avx2[];
1003 EXTERN(void) jsimd_idct_islow_avx2
1004 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1005 JDIMENSION output_col);
1007 EXTERN(void) jsimd_idct_islow_neon
1008 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1009 JDIMENSION output_col);
1011 EXTERN(void) jsimd_idct_islow_dspr2
1012 (void *dct_table, JCOEFPTR coef_block, int *output_buf, JSAMPLE *output_col);
1014 EXTERN(void) jsimd_idct_islow_mmi
1015 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1016 JDIMENSION output_col);
1018 EXTERN(void) jsimd_idct_islow_altivec
1019 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1020 JDIMENSION output_col);
1022 /* Fast Integer Inverse DCT */
1023 EXTERN(void) jsimd_idct_ifast_mmx
1024 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1025 JDIMENSION output_col);
1027 extern const int jconst_idct_ifast_sse2[];
1028 EXTERN(void) jsimd_idct_ifast_sse2
1029 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1030 JDIMENSION output_col);
1032 EXTERN(void) jsimd_idct_ifast_neon
1033 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1034 JDIMENSION output_col);
1036 EXTERN(void) jsimd_idct_ifast_cols_dspr2
1037 (JCOEF *inptr, IFAST_MULT_TYPE *quantptr, DCTELEM *wsptr,
1038 const int *idct_coefs);
1039 EXTERN(void) jsimd_idct_ifast_rows_dspr2
1040 (DCTELEM *wsptr, JSAMPARRAY output_buf, JDIMENSION output_col,
1041 const int *idct_coefs);
1043 EXTERN(void) jsimd_idct_ifast_altivec
1044 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1045 JDIMENSION output_col);
1047 /* Floating Point Inverse DCT */
1048 EXTERN(void) jsimd_idct_float_3dnow
1049 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1050 JDIMENSION output_col);
1052 extern const int jconst_idct_float_sse[];
1053 EXTERN(void) jsimd_idct_float_sse
1054 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1055 JDIMENSION output_col);
1057 extern const int jconst_idct_float_sse2[];
1058 EXTERN(void) jsimd_idct_float_sse2
1059 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1060 JDIMENSION output_col);
1062 /* Huffman coding */
1063 extern const int jconst_huff_encode_one_block[];
1064 EXTERN(JOCTET *) jsimd_huff_encode_one_block_sse2
1065 (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
1066 c_derived_tbl *dctbl, c_derived_tbl *actbl);
1068 EXTERN(JOCTET *) jsimd_huff_encode_one_block_neon
1069 (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
1070 c_derived_tbl *dctbl, c_derived_tbl *actbl);
1072 EXTERN(JOCTET *) jsimd_huff_encode_one_block_neon_slowtbl
1073 (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
1074 c_derived_tbl *dctbl, c_derived_tbl *actbl);
1076 /* Progressive Huffman encoding */
1077 EXTERN(void) jsimd_encode_mcu_AC_first_prepare_sse2
1078 (const JCOEF *block, const int *jpeg_natural_order_start, int Sl, int Al,
1079 JCOEF *values, size_t *zerobits);
1081 EXTERN(int) jsimd_encode_mcu_AC_refine_prepare_sse2
1082 (const JCOEF *block, const int *jpeg_natural_order_start, int Sl, int Al,
1083 JCOEF *absvalues, size_t *bits);
1085 /* TIZEN_PRODUCT_TV */
1086 EXTERN(void) jsimd_pick_color
1087 JPP((JSAMPARRAY output_buf,
1089 JDIMENSION out_width));
1091 EXTERN(void) jsimd_h2v1_fancy_upsample_neon
1092 JPP((int max_v_samp_factor, JDIMENSION downsampled_width,
1093 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));