4 * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
5 * Copyright (C) 2011, 2014-2016, 2018, 2020, 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-2018, Loongson Technology Corporation Limited, BeiJing.
10 * Copyright (C) 2020, Arm Limited.
12 * Based on the x86 SIMD extension for IJG JPEG library,
13 * Copyright (C) 1999-2006, MIYASAKA Masaru.
14 * For conditions of distribution and use, see copyright notice in jsimdext.inc
18 /* Bitmask for supported acceleration methods */
20 #define JSIMD_NONE 0x00
21 #define JSIMD_MMX 0x01
22 #define JSIMD_3DNOW 0x02
23 #define JSIMD_SSE 0x04
24 #define JSIMD_SSE2 0x08
25 #define JSIMD_NEON 0x10
26 #define JSIMD_DSPR2 0x20
27 #define JSIMD_ALTIVEC 0x40
28 #define JSIMD_AVX2 0x80
29 #define JSIMD_MMI 0x100
31 /* SIMD Ext: retrieve SIMD/CPU information */
32 EXTERN(unsigned int) jpeg_simd_cpu_support(void);
34 /* RGB & extended RGB --> YCC Colorspace Conversion */
35 EXTERN(void) jsimd_rgb_ycc_convert_mmx
36 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
37 JDIMENSION output_row, int num_rows);
38 EXTERN(void) jsimd_extrgb_ycc_convert_mmx
39 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
40 JDIMENSION output_row, int num_rows);
41 EXTERN(void) jsimd_extrgbx_ycc_convert_mmx
42 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
43 JDIMENSION output_row, int num_rows);
44 EXTERN(void) jsimd_extbgr_ycc_convert_mmx
45 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
46 JDIMENSION output_row, int num_rows);
47 EXTERN(void) jsimd_extbgrx_ycc_convert_mmx
48 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
49 JDIMENSION output_row, int num_rows);
50 EXTERN(void) jsimd_extxbgr_ycc_convert_mmx
51 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
52 JDIMENSION output_row, int num_rows);
53 EXTERN(void) jsimd_extxrgb_ycc_convert_mmx
54 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
55 JDIMENSION output_row, int num_rows);
57 extern const int jconst_rgb_ycc_convert_sse2[];
58 EXTERN(void) jsimd_rgb_ycc_convert_sse2
59 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
60 JDIMENSION output_row, int num_rows);
61 EXTERN(void) jsimd_extrgb_ycc_convert_sse2
62 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
63 JDIMENSION output_row, int num_rows);
64 EXTERN(void) jsimd_extrgbx_ycc_convert_sse2
65 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
66 JDIMENSION output_row, int num_rows);
67 EXTERN(void) jsimd_extbgr_ycc_convert_sse2
68 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
69 JDIMENSION output_row, int num_rows);
70 EXTERN(void) jsimd_extbgrx_ycc_convert_sse2
71 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
72 JDIMENSION output_row, int num_rows);
73 EXTERN(void) jsimd_extxbgr_ycc_convert_sse2
74 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
75 JDIMENSION output_row, int num_rows);
76 EXTERN(void) jsimd_extxrgb_ycc_convert_sse2
77 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
78 JDIMENSION output_row, int num_rows);
80 extern const int jconst_rgb_ycc_convert_avx2[];
81 EXTERN(void) jsimd_rgb_ycc_convert_avx2
82 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
83 JDIMENSION output_row, int num_rows);
84 EXTERN(void) jsimd_extrgb_ycc_convert_avx2
85 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
86 JDIMENSION output_row, int num_rows);
87 EXTERN(void) jsimd_extrgbx_ycc_convert_avx2
88 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
89 JDIMENSION output_row, int num_rows);
90 EXTERN(void) jsimd_extbgr_ycc_convert_avx2
91 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
92 JDIMENSION output_row, int num_rows);
93 EXTERN(void) jsimd_extbgrx_ycc_convert_avx2
94 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
95 JDIMENSION output_row, int num_rows);
96 EXTERN(void) jsimd_extxbgr_ycc_convert_avx2
97 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
98 JDIMENSION output_row, int num_rows);
99 EXTERN(void) jsimd_extxrgb_ycc_convert_avx2
100 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
101 JDIMENSION output_row, int num_rows);
103 EXTERN(void) jsimd_rgb_ycc_convert_neon
104 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
105 JDIMENSION output_row, int num_rows);
106 EXTERN(void) jsimd_extrgb_ycc_convert_neon
107 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
108 JDIMENSION output_row, int num_rows);
109 EXTERN(void) jsimd_extrgbx_ycc_convert_neon
110 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
111 JDIMENSION output_row, int num_rows);
112 EXTERN(void) jsimd_extbgr_ycc_convert_neon
113 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
114 JDIMENSION output_row, int num_rows);
115 EXTERN(void) jsimd_extbgrx_ycc_convert_neon
116 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
117 JDIMENSION output_row, int num_rows);
118 EXTERN(void) jsimd_extxbgr_ycc_convert_neon
119 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
120 JDIMENSION output_row, int num_rows);
121 EXTERN(void) jsimd_extxrgb_ycc_convert_neon
122 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
123 JDIMENSION output_row, int num_rows);
125 #ifndef NEON_INTRINSICS
127 EXTERN(void) jsimd_extrgb_ycc_convert_neon_slowld3
128 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
129 JDIMENSION output_row, int num_rows);
130 EXTERN(void) jsimd_extbgr_ycc_convert_neon_slowld3
131 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
132 JDIMENSION output_row, int num_rows);
136 EXTERN(void) jsimd_rgb_ycc_convert_dspr2
137 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
138 JDIMENSION output_row, int num_rows);
139 EXTERN(void) jsimd_extrgb_ycc_convert_dspr2
140 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
141 JDIMENSION output_row, int num_rows);
142 EXTERN(void) jsimd_extrgbx_ycc_convert_dspr2
143 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
144 JDIMENSION output_row, int num_rows);
145 EXTERN(void) jsimd_extbgr_ycc_convert_dspr2
146 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
147 JDIMENSION output_row, int num_rows);
148 EXTERN(void) jsimd_extbgrx_ycc_convert_dspr2
149 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
150 JDIMENSION output_row, int num_rows);
151 EXTERN(void) jsimd_extxbgr_ycc_convert_dspr2
152 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
153 JDIMENSION output_row, int num_rows);
154 EXTERN(void) jsimd_extxrgb_ycc_convert_dspr2
155 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
156 JDIMENSION output_row, int num_rows);
158 EXTERN(void) jsimd_rgb_ycc_convert_mmi
159 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
160 JDIMENSION output_row, int num_rows);
161 EXTERN(void) jsimd_extrgb_ycc_convert_mmi
162 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
163 JDIMENSION output_row, int num_rows);
164 EXTERN(void) jsimd_extrgbx_ycc_convert_mmi
165 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
166 JDIMENSION output_row, int num_rows);
167 EXTERN(void) jsimd_extbgr_ycc_convert_mmi
168 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
169 JDIMENSION output_row, int num_rows);
170 EXTERN(void) jsimd_extbgrx_ycc_convert_mmi
171 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
172 JDIMENSION output_row, int num_rows);
173 EXTERN(void) jsimd_extxbgr_ycc_convert_mmi
174 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
175 JDIMENSION output_row, int num_rows);
176 EXTERN(void) jsimd_extxrgb_ycc_convert_mmi
177 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
178 JDIMENSION output_row, int num_rows);
180 EXTERN(void) jsimd_rgb_ycc_convert_altivec
181 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
182 JDIMENSION output_row, int num_rows);
183 EXTERN(void) jsimd_extrgb_ycc_convert_altivec
184 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
185 JDIMENSION output_row, int num_rows);
186 EXTERN(void) jsimd_extrgbx_ycc_convert_altivec
187 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
188 JDIMENSION output_row, int num_rows);
189 EXTERN(void) jsimd_extbgr_ycc_convert_altivec
190 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
191 JDIMENSION output_row, int num_rows);
192 EXTERN(void) jsimd_extbgrx_ycc_convert_altivec
193 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
194 JDIMENSION output_row, int num_rows);
195 EXTERN(void) jsimd_extxbgr_ycc_convert_altivec
196 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
197 JDIMENSION output_row, int num_rows);
198 EXTERN(void) jsimd_extxrgb_ycc_convert_altivec
199 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
200 JDIMENSION output_row, int num_rows);
202 /* RGB & extended RGB --> Grayscale Colorspace Conversion */
203 EXTERN(void) jsimd_rgb_gray_convert_mmx
204 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
205 JDIMENSION output_row, int num_rows);
206 EXTERN(void) jsimd_extrgb_gray_convert_mmx
207 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
208 JDIMENSION output_row, int num_rows);
209 EXTERN(void) jsimd_extrgbx_gray_convert_mmx
210 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
211 JDIMENSION output_row, int num_rows);
212 EXTERN(void) jsimd_extbgr_gray_convert_mmx
213 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
214 JDIMENSION output_row, int num_rows);
215 EXTERN(void) jsimd_extbgrx_gray_convert_mmx
216 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
217 JDIMENSION output_row, int num_rows);
218 EXTERN(void) jsimd_extxbgr_gray_convert_mmx
219 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
220 JDIMENSION output_row, int num_rows);
221 EXTERN(void) jsimd_extxrgb_gray_convert_mmx
222 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
223 JDIMENSION output_row, int num_rows);
225 extern const int jconst_rgb_gray_convert_sse2[];
226 EXTERN(void) jsimd_rgb_gray_convert_sse2
227 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
228 JDIMENSION output_row, int num_rows);
229 EXTERN(void) jsimd_extrgb_gray_convert_sse2
230 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
231 JDIMENSION output_row, int num_rows);
232 EXTERN(void) jsimd_extrgbx_gray_convert_sse2
233 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
234 JDIMENSION output_row, int num_rows);
235 EXTERN(void) jsimd_extbgr_gray_convert_sse2
236 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
237 JDIMENSION output_row, int num_rows);
238 EXTERN(void) jsimd_extbgrx_gray_convert_sse2
239 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
240 JDIMENSION output_row, int num_rows);
241 EXTERN(void) jsimd_extxbgr_gray_convert_sse2
242 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
243 JDIMENSION output_row, int num_rows);
244 EXTERN(void) jsimd_extxrgb_gray_convert_sse2
245 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
246 JDIMENSION output_row, int num_rows);
248 extern const int jconst_rgb_gray_convert_avx2[];
249 EXTERN(void) jsimd_rgb_gray_convert_avx2
250 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
251 JDIMENSION output_row, int num_rows);
252 EXTERN(void) jsimd_extrgb_gray_convert_avx2
253 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
254 JDIMENSION output_row, int num_rows);
255 EXTERN(void) jsimd_extrgbx_gray_convert_avx2
256 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
257 JDIMENSION output_row, int num_rows);
258 EXTERN(void) jsimd_extbgr_gray_convert_avx2
259 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
260 JDIMENSION output_row, int num_rows);
261 EXTERN(void) jsimd_extbgrx_gray_convert_avx2
262 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
263 JDIMENSION output_row, int num_rows);
264 EXTERN(void) jsimd_extxbgr_gray_convert_avx2
265 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
266 JDIMENSION output_row, int num_rows);
267 EXTERN(void) jsimd_extxrgb_gray_convert_avx2
268 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
269 JDIMENSION output_row, int num_rows);
271 EXTERN(void) jsimd_rgb_gray_convert_neon
272 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
273 JDIMENSION output_row, int num_rows);
274 EXTERN(void) jsimd_extrgb_gray_convert_neon
275 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
276 JDIMENSION output_row, int num_rows);
277 EXTERN(void) jsimd_extrgbx_gray_convert_neon
278 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
279 JDIMENSION output_row, int num_rows);
280 EXTERN(void) jsimd_extbgr_gray_convert_neon
281 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
282 JDIMENSION output_row, int num_rows);
283 EXTERN(void) jsimd_extbgrx_gray_convert_neon
284 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
285 JDIMENSION output_row, int num_rows);
286 EXTERN(void) jsimd_extxbgr_gray_convert_neon
287 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
288 JDIMENSION output_row, int num_rows);
289 EXTERN(void) jsimd_extxrgb_gray_convert_neon
290 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
291 JDIMENSION output_row, int num_rows);
293 EXTERN(void) jsimd_rgb_gray_convert_dspr2
294 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
295 JDIMENSION output_row, int num_rows);
296 EXTERN(void) jsimd_extrgb_gray_convert_dspr2
297 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
298 JDIMENSION output_row, int num_rows);
299 EXTERN(void) jsimd_extrgbx_gray_convert_dspr2
300 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
301 JDIMENSION output_row, int num_rows);
302 EXTERN(void) jsimd_extbgr_gray_convert_dspr2
303 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
304 JDIMENSION output_row, int num_rows);
305 EXTERN(void) jsimd_extbgrx_gray_convert_dspr2
306 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
307 JDIMENSION output_row, int num_rows);
308 EXTERN(void) jsimd_extxbgr_gray_convert_dspr2
309 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
310 JDIMENSION output_row, int num_rows);
311 EXTERN(void) jsimd_extxrgb_gray_convert_dspr2
312 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
313 JDIMENSION output_row, int num_rows);
315 EXTERN(void) jsimd_rgb_gray_convert_mmi
316 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
317 JDIMENSION output_row, int num_rows);
318 EXTERN(void) jsimd_extrgb_gray_convert_mmi
319 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
320 JDIMENSION output_row, int num_rows);
321 EXTERN(void) jsimd_extrgbx_gray_convert_mmi
322 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
323 JDIMENSION output_row, int num_rows);
324 EXTERN(void) jsimd_extbgr_gray_convert_mmi
325 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
326 JDIMENSION output_row, int num_rows);
327 EXTERN(void) jsimd_extbgrx_gray_convert_mmi
328 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
329 JDIMENSION output_row, int num_rows);
330 EXTERN(void) jsimd_extxbgr_gray_convert_mmi
331 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
332 JDIMENSION output_row, int num_rows);
333 EXTERN(void) jsimd_extxrgb_gray_convert_mmi
334 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
335 JDIMENSION output_row, int num_rows);
337 EXTERN(void) jsimd_rgb_gray_convert_altivec
338 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
339 JDIMENSION output_row, int num_rows);
340 EXTERN(void) jsimd_extrgb_gray_convert_altivec
341 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
342 JDIMENSION output_row, int num_rows);
343 EXTERN(void) jsimd_extrgbx_gray_convert_altivec
344 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
345 JDIMENSION output_row, int num_rows);
346 EXTERN(void) jsimd_extbgr_gray_convert_altivec
347 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
348 JDIMENSION output_row, int num_rows);
349 EXTERN(void) jsimd_extbgrx_gray_convert_altivec
350 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
351 JDIMENSION output_row, int num_rows);
352 EXTERN(void) jsimd_extxbgr_gray_convert_altivec
353 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
354 JDIMENSION output_row, int num_rows);
355 EXTERN(void) jsimd_extxrgb_gray_convert_altivec
356 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
357 JDIMENSION output_row, int num_rows);
359 /* YCC --> RGB & extended RGB Colorspace Conversion */
360 EXTERN(void) jsimd_ycc_rgb_convert_mmx
361 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
362 JSAMPARRAY output_buf, int num_rows);
363 EXTERN(void) jsimd_ycc_extrgb_convert_mmx
364 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
365 JSAMPARRAY output_buf, int num_rows);
366 EXTERN(void) jsimd_ycc_extrgbx_convert_mmx
367 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
368 JSAMPARRAY output_buf, int num_rows);
369 EXTERN(void) jsimd_ycc_extbgr_convert_mmx
370 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
371 JSAMPARRAY output_buf, int num_rows);
372 EXTERN(void) jsimd_ycc_extbgrx_convert_mmx
373 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
374 JSAMPARRAY output_buf, int num_rows);
375 EXTERN(void) jsimd_ycc_extxbgr_convert_mmx
376 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
377 JSAMPARRAY output_buf, int num_rows);
378 EXTERN(void) jsimd_ycc_extxrgb_convert_mmx
379 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
380 JSAMPARRAY output_buf, int num_rows);
382 extern const int jconst_ycc_rgb_convert_sse2[];
383 EXTERN(void) jsimd_ycc_rgb_convert_sse2
384 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
385 JSAMPARRAY output_buf, int num_rows);
386 EXTERN(void) jsimd_ycc_extrgb_convert_sse2
387 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
388 JSAMPARRAY output_buf, int num_rows);
389 EXTERN(void) jsimd_ycc_extrgbx_convert_sse2
390 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
391 JSAMPARRAY output_buf, int num_rows);
392 EXTERN(void) jsimd_ycc_extbgr_convert_sse2
393 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
394 JSAMPARRAY output_buf, int num_rows);
395 EXTERN(void) jsimd_ycc_extbgrx_convert_sse2
396 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
397 JSAMPARRAY output_buf, int num_rows);
398 EXTERN(void) jsimd_ycc_extxbgr_convert_sse2
399 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
400 JSAMPARRAY output_buf, int num_rows);
401 EXTERN(void) jsimd_ycc_extxrgb_convert_sse2
402 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
403 JSAMPARRAY output_buf, int num_rows);
405 extern const int jconst_ycc_rgb_convert_avx2[];
406 EXTERN(void) jsimd_ycc_rgb_convert_avx2
407 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
408 JSAMPARRAY output_buf, int num_rows);
409 EXTERN(void) jsimd_ycc_extrgb_convert_avx2
410 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
411 JSAMPARRAY output_buf, int num_rows);
412 EXTERN(void) jsimd_ycc_extrgbx_convert_avx2
413 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
414 JSAMPARRAY output_buf, int num_rows);
415 EXTERN(void) jsimd_ycc_extbgr_convert_avx2
416 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
417 JSAMPARRAY output_buf, int num_rows);
418 EXTERN(void) jsimd_ycc_extbgrx_convert_avx2
419 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
420 JSAMPARRAY output_buf, int num_rows);
421 EXTERN(void) jsimd_ycc_extxbgr_convert_avx2
422 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
423 JSAMPARRAY output_buf, int num_rows);
424 EXTERN(void) jsimd_ycc_extxrgb_convert_avx2
425 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
426 JSAMPARRAY output_buf, int num_rows);
428 EXTERN(void) jsimd_ycc_rgb_convert_neon
429 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
430 JSAMPARRAY output_buf, int num_rows);
431 EXTERN(void) jsimd_ycc_extrgb_convert_neon
432 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
433 JSAMPARRAY output_buf, int num_rows);
434 EXTERN(void) jsimd_ycc_extrgbx_convert_neon
435 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
436 JSAMPARRAY output_buf, int num_rows);
437 EXTERN(void) jsimd_ycc_extbgr_convert_neon
438 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
439 JSAMPARRAY output_buf, int num_rows);
440 EXTERN(void) jsimd_ycc_extbgrx_convert_neon
441 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
442 JSAMPARRAY output_buf, int num_rows);
443 EXTERN(void) jsimd_ycc_extxbgr_convert_neon
444 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
445 JSAMPARRAY output_buf, int num_rows);
446 EXTERN(void) jsimd_ycc_extxrgb_convert_neon
447 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
448 JSAMPARRAY output_buf, int num_rows);
449 EXTERN(void) jsimd_ycc_rgb565_convert_neon
450 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
451 JSAMPARRAY output_buf, int num_rows);
453 #ifndef NEON_INTRINSICS
455 EXTERN(void) jsimd_ycc_extrgb_convert_neon_slowst3
456 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
457 JSAMPARRAY output_buf, int num_rows);
458 EXTERN(void) jsimd_ycc_extbgr_convert_neon_slowst3
459 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
460 JSAMPARRAY output_buf, int num_rows);
464 EXTERN(void) jsimd_ycc_rgb_convert_dspr2
465 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
466 JSAMPARRAY output_buf, int num_rows);
467 EXTERN(void) jsimd_ycc_extrgb_convert_dspr2
468 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
469 JSAMPARRAY output_buf, int num_rows);
470 EXTERN(void) jsimd_ycc_extrgbx_convert_dspr2
471 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
472 JSAMPARRAY output_buf, int num_rows);
473 EXTERN(void) jsimd_ycc_extbgr_convert_dspr2
474 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
475 JSAMPARRAY output_buf, int num_rows);
476 EXTERN(void) jsimd_ycc_extbgrx_convert_dspr2
477 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
478 JSAMPARRAY output_buf, int num_rows);
479 EXTERN(void) jsimd_ycc_extxbgr_convert_dspr2
480 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
481 JSAMPARRAY output_buf, int num_rows);
482 EXTERN(void) jsimd_ycc_extxrgb_convert_dspr2
483 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
484 JSAMPARRAY output_buf, int num_rows);
486 EXTERN(void) jsimd_ycc_rgb_convert_mmi
487 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
488 JSAMPARRAY output_buf, int num_rows);
489 EXTERN(void) jsimd_ycc_extrgb_convert_mmi
490 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
491 JSAMPARRAY output_buf, int num_rows);
492 EXTERN(void) jsimd_ycc_extrgbx_convert_mmi
493 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
494 JSAMPARRAY output_buf, int num_rows);
495 EXTERN(void) jsimd_ycc_extbgr_convert_mmi
496 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
497 JSAMPARRAY output_buf, int num_rows);
498 EXTERN(void) jsimd_ycc_extbgrx_convert_mmi
499 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
500 JSAMPARRAY output_buf, int num_rows);
501 EXTERN(void) jsimd_ycc_extxbgr_convert_mmi
502 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
503 JSAMPARRAY output_buf, int num_rows);
504 EXTERN(void) jsimd_ycc_extxrgb_convert_mmi
505 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
506 JSAMPARRAY output_buf, int num_rows);
508 EXTERN(void) jsimd_ycc_rgb_convert_altivec
509 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
510 JSAMPARRAY output_buf, int num_rows);
511 EXTERN(void) jsimd_ycc_extrgb_convert_altivec
512 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
513 JSAMPARRAY output_buf, int num_rows);
514 EXTERN(void) jsimd_ycc_extrgbx_convert_altivec
515 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
516 JSAMPARRAY output_buf, int num_rows);
517 EXTERN(void) jsimd_ycc_extbgr_convert_altivec
518 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
519 JSAMPARRAY output_buf, int num_rows);
520 EXTERN(void) jsimd_ycc_extbgrx_convert_altivec
521 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
522 JSAMPARRAY output_buf, int num_rows);
523 EXTERN(void) jsimd_ycc_extxbgr_convert_altivec
524 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
525 JSAMPARRAY output_buf, int num_rows);
526 EXTERN(void) jsimd_ycc_extxrgb_convert_altivec
527 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
528 JSAMPARRAY output_buf, int num_rows);
530 /* NULL Colorspace Conversion */
531 EXTERN(void) jsimd_c_null_convert_dspr2
532 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
533 JDIMENSION output_row, int num_rows, int num_components);
535 /* h2v1 Downsampling */
536 EXTERN(void) jsimd_h2v1_downsample_mmx
537 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
538 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
540 EXTERN(void) jsimd_h2v1_downsample_sse2
541 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
542 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
544 EXTERN(void) jsimd_h2v1_downsample_avx2
545 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
546 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
548 EXTERN(void) jsimd_h2v1_downsample_neon
549 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
550 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
552 EXTERN(void) jsimd_h2v1_downsample_dspr2
553 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
554 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
556 EXTERN(void) jsimd_h2v1_downsample_altivec
557 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
558 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
560 /* h2v2 Downsampling */
561 EXTERN(void) jsimd_h2v2_downsample_mmx
562 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
563 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
565 EXTERN(void) jsimd_h2v2_downsample_sse2
566 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
567 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
569 EXTERN(void) jsimd_h2v2_downsample_avx2
570 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
571 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
573 EXTERN(void) jsimd_h2v2_downsample_neon
574 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
575 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
577 EXTERN(void) jsimd_h2v2_downsample_dspr2
578 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
579 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
581 EXTERN(void) jsimd_h2v2_downsample_mmi
582 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
583 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
585 EXTERN(void) jsimd_h2v2_downsample_altivec
586 (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
587 JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
589 /* h2v2 Smooth Downsampling */
590 EXTERN(void) jsimd_h2v2_smooth_downsample_dspr2
591 (JSAMPARRAY input_data, JSAMPARRAY output_data, JDIMENSION v_samp_factor,
592 int max_v_samp_factor, int smoothing_factor, JDIMENSION width_in_blocks,
593 JDIMENSION image_width);
597 EXTERN(void) jsimd_h2v1_upsample_mmx
598 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
599 JSAMPARRAY *output_data_ptr);
600 EXTERN(void) jsimd_h2v2_upsample_mmx
601 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
602 JSAMPARRAY *output_data_ptr);
604 EXTERN(void) jsimd_h2v1_upsample_sse2
605 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
606 JSAMPARRAY *output_data_ptr);
607 EXTERN(void) jsimd_h2v2_upsample_sse2
608 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
609 JSAMPARRAY *output_data_ptr);
611 EXTERN(void) jsimd_h2v1_upsample_avx2
612 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
613 JSAMPARRAY *output_data_ptr);
614 EXTERN(void) jsimd_h2v2_upsample_avx2
615 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
616 JSAMPARRAY *output_data_ptr);
618 EXTERN(void) jsimd_h2v1_upsample_neon
619 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
620 JSAMPARRAY *output_data_ptr);
621 EXTERN(void) jsimd_h2v2_upsample_neon
622 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
623 JSAMPARRAY *output_data_ptr);
625 EXTERN(void) jsimd_h2v1_upsample_dspr2
626 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
627 JSAMPARRAY *output_data_ptr);
628 EXTERN(void) jsimd_h2v2_upsample_dspr2
629 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
630 JSAMPARRAY *output_data_ptr);
632 EXTERN(void) jsimd_int_upsample_dspr2
633 (UINT8 h_expand, UINT8 v_expand, JSAMPARRAY input_data,
634 JSAMPARRAY *output_data_ptr, JDIMENSION output_width,
635 int max_v_samp_factor);
637 EXTERN(void) jsimd_h2v1_upsample_altivec
638 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
639 JSAMPARRAY *output_data_ptr);
640 EXTERN(void) jsimd_h2v2_upsample_altivec
641 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
642 JSAMPARRAY *output_data_ptr);
644 /* Fancy Upsampling */
645 EXTERN(void) jsimd_h2v1_fancy_upsample_mmx
646 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
647 JSAMPARRAY *output_data_ptr);
648 EXTERN(void) jsimd_h2v2_fancy_upsample_mmx
649 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
650 JSAMPARRAY *output_data_ptr);
652 extern const int jconst_fancy_upsample_sse2[];
653 EXTERN(void) jsimd_h2v1_fancy_upsample_sse2
654 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
655 JSAMPARRAY *output_data_ptr);
656 EXTERN(void) jsimd_h2v2_fancy_upsample_sse2
657 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
658 JSAMPARRAY *output_data_ptr);
660 extern const int jconst_fancy_upsample_avx2[];
661 EXTERN(void) jsimd_h2v1_fancy_upsample_avx2
662 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
663 JSAMPARRAY *output_data_ptr);
664 EXTERN(void) jsimd_h2v2_fancy_upsample_avx2
665 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
666 JSAMPARRAY *output_data_ptr);
668 EXTERN(void) jsimd_h2v1_fancy_upsample_neon
669 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
670 JSAMPARRAY *output_data_ptr);
671 EXTERN(void) jsimd_h2v2_fancy_upsample_neon
672 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
673 JSAMPARRAY *output_data_ptr);
674 EXTERN(void) jsimd_h1v2_fancy_upsample_neon
675 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
676 JSAMPARRAY *output_data_ptr);
678 EXTERN(void) jsimd_h2v1_fancy_upsample_dspr2
679 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
680 JSAMPARRAY *output_data_ptr);
681 EXTERN(void) jsimd_h2v2_fancy_upsample_dspr2
682 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
683 JSAMPARRAY *output_data_ptr);
685 EXTERN(void) jsimd_h2v1_fancy_upsample_mmi
686 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
687 JSAMPARRAY *output_data_ptr);
688 EXTERN(void) jsimd_h2v2_fancy_upsample_mmi
689 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
690 JSAMPARRAY *output_data_ptr);
692 EXTERN(void) jsimd_h2v1_fancy_upsample_altivec
693 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
694 JSAMPARRAY *output_data_ptr);
695 EXTERN(void) jsimd_h2v2_fancy_upsample_altivec
696 (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
697 JSAMPARRAY *output_data_ptr);
699 /* Merged Upsampling */
700 EXTERN(void) jsimd_h2v1_merged_upsample_mmx
701 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
702 JSAMPARRAY output_buf);
703 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mmx
704 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
705 JSAMPARRAY output_buf);
706 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mmx
707 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
708 JSAMPARRAY output_buf);
709 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mmx
710 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
711 JSAMPARRAY output_buf);
712 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mmx
713 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
714 JSAMPARRAY output_buf);
715 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mmx
716 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
717 JSAMPARRAY output_buf);
718 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mmx
719 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
720 JSAMPARRAY output_buf);
722 EXTERN(void) jsimd_h2v2_merged_upsample_mmx
723 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
724 JSAMPARRAY output_buf);
725 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mmx
726 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
727 JSAMPARRAY output_buf);
728 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mmx
729 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
730 JSAMPARRAY output_buf);
731 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mmx
732 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
733 JSAMPARRAY output_buf);
734 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mmx
735 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
736 JSAMPARRAY output_buf);
737 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mmx
738 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
739 JSAMPARRAY output_buf);
740 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mmx
741 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
742 JSAMPARRAY output_buf);
744 extern const int jconst_merged_upsample_sse2[];
745 EXTERN(void) jsimd_h2v1_merged_upsample_sse2
746 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
747 JSAMPARRAY output_buf);
748 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_sse2
749 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
750 JSAMPARRAY output_buf);
751 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_sse2
752 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
753 JSAMPARRAY output_buf);
754 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_sse2
755 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
756 JSAMPARRAY output_buf);
757 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_sse2
758 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
759 JSAMPARRAY output_buf);
760 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_sse2
761 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
762 JSAMPARRAY output_buf);
763 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_sse2
764 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
765 JSAMPARRAY output_buf);
767 EXTERN(void) jsimd_h2v2_merged_upsample_sse2
768 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
769 JSAMPARRAY output_buf);
770 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_sse2
771 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
772 JSAMPARRAY output_buf);
773 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_sse2
774 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
775 JSAMPARRAY output_buf);
776 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_sse2
777 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
778 JSAMPARRAY output_buf);
779 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_sse2
780 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
781 JSAMPARRAY output_buf);
782 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_sse2
783 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
784 JSAMPARRAY output_buf);
785 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_sse2
786 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
787 JSAMPARRAY output_buf);
789 extern const int jconst_merged_upsample_avx2[];
790 EXTERN(void) jsimd_h2v1_merged_upsample_avx2
791 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
792 JSAMPARRAY output_buf);
793 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_avx2
794 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
795 JSAMPARRAY output_buf);
796 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_avx2
797 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
798 JSAMPARRAY output_buf);
799 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_avx2
800 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
801 JSAMPARRAY output_buf);
802 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_avx2
803 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
804 JSAMPARRAY output_buf);
805 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_avx2
806 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
807 JSAMPARRAY output_buf);
808 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_avx2
809 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
810 JSAMPARRAY output_buf);
812 EXTERN(void) jsimd_h2v2_merged_upsample_avx2
813 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
814 JSAMPARRAY output_buf);
815 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_avx2
816 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
817 JSAMPARRAY output_buf);
818 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_avx2
819 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
820 JSAMPARRAY output_buf);
821 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_avx2
822 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
823 JSAMPARRAY output_buf);
824 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_avx2
825 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
826 JSAMPARRAY output_buf);
827 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_avx2
828 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
829 JSAMPARRAY output_buf);
830 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_avx2
831 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
832 JSAMPARRAY output_buf);
834 EXTERN(void) jsimd_h2v1_merged_upsample_neon
835 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
836 JSAMPARRAY output_buf);
837 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_neon
838 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
839 JSAMPARRAY output_buf);
840 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_neon
841 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
842 JSAMPARRAY output_buf);
843 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_neon
844 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
845 JSAMPARRAY output_buf);
846 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_neon
847 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
848 JSAMPARRAY output_buf);
849 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_neon
850 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
851 JSAMPARRAY output_buf);
852 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_neon
853 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
854 JSAMPARRAY output_buf);
856 EXTERN(void) jsimd_h2v2_merged_upsample_neon
857 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
858 JSAMPARRAY output_buf);
859 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_neon
860 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
861 JSAMPARRAY output_buf);
862 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_neon
863 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
864 JSAMPARRAY output_buf);
865 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_neon
866 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
867 JSAMPARRAY output_buf);
868 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_neon
869 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
870 JSAMPARRAY output_buf);
871 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_neon
872 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
873 JSAMPARRAY output_buf);
874 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_neon
875 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
876 JSAMPARRAY output_buf);
878 EXTERN(void) jsimd_h2v1_merged_upsample_dspr2
879 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
880 JSAMPARRAY output_buf, JSAMPLE *range);
881 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_dspr2
882 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
883 JSAMPARRAY output_buf, JSAMPLE *range);
884 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_dspr2
885 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
886 JSAMPARRAY output_buf, JSAMPLE *range);
887 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_dspr2
888 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
889 JSAMPARRAY output_buf, JSAMPLE *range);
890 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_dspr2
891 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
892 JSAMPARRAY output_buf, JSAMPLE *range);
893 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_dspr2
894 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
895 JSAMPARRAY output_buf, JSAMPLE *range);
896 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_dspr2
897 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
898 JSAMPARRAY output_buf, JSAMPLE *range);
900 EXTERN(void) jsimd_h2v2_merged_upsample_dspr2
901 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
902 JSAMPARRAY output_buf, JSAMPLE *range);
903 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_dspr2
904 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
905 JSAMPARRAY output_buf, JSAMPLE *range);
906 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_dspr2
907 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
908 JSAMPARRAY output_buf, JSAMPLE *range);
909 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_dspr2
910 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
911 JSAMPARRAY output_buf, JSAMPLE *range);
912 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_dspr2
913 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
914 JSAMPARRAY output_buf, JSAMPLE *range);
915 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_dspr2
916 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
917 JSAMPARRAY output_buf, JSAMPLE *range);
918 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_dspr2
919 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
920 JSAMPARRAY output_buf, JSAMPLE *range);
922 EXTERN(void) jsimd_h2v1_merged_upsample_mmi
923 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
924 JSAMPARRAY output_buf);
925 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mmi
926 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
927 JSAMPARRAY output_buf);
928 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mmi
929 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
930 JSAMPARRAY output_buf);
931 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mmi
932 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
933 JSAMPARRAY output_buf);
934 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mmi
935 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
936 JSAMPARRAY output_buf);
937 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mmi
938 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
939 JSAMPARRAY output_buf);
940 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mmi
941 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
942 JSAMPARRAY output_buf);
944 EXTERN(void) jsimd_h2v2_merged_upsample_mmi
945 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
946 JSAMPARRAY output_buf);
947 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mmi
948 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
949 JSAMPARRAY output_buf);
950 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mmi
951 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
952 JSAMPARRAY output_buf);
953 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mmi
954 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
955 JSAMPARRAY output_buf);
956 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mmi
957 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
958 JSAMPARRAY output_buf);
959 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mmi
960 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
961 JSAMPARRAY output_buf);
962 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mmi
963 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
964 JSAMPARRAY output_buf);
966 EXTERN(void) jsimd_h2v1_merged_upsample_altivec
967 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
968 JSAMPARRAY output_buf);
969 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_altivec
970 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
971 JSAMPARRAY output_buf);
972 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_altivec
973 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
974 JSAMPARRAY output_buf);
975 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_altivec
976 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
977 JSAMPARRAY output_buf);
978 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_altivec
979 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
980 JSAMPARRAY output_buf);
981 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_altivec
982 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
983 JSAMPARRAY output_buf);
984 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_altivec
985 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
986 JSAMPARRAY output_buf);
988 EXTERN(void) jsimd_h2v2_merged_upsample_altivec
989 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
990 JSAMPARRAY output_buf);
991 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_altivec
992 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
993 JSAMPARRAY output_buf);
994 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_altivec
995 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
996 JSAMPARRAY output_buf);
997 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_altivec
998 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
999 JSAMPARRAY output_buf);
1000 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_altivec
1001 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
1002 JSAMPARRAY output_buf);
1003 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_altivec
1004 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
1005 JSAMPARRAY output_buf);
1006 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_altivec
1007 (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
1008 JSAMPARRAY output_buf);
1010 /* Sample Conversion */
1011 EXTERN(void) jsimd_convsamp_mmx
1012 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1014 EXTERN(void) jsimd_convsamp_sse2
1015 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1017 EXTERN(void) jsimd_convsamp_avx2
1018 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1020 EXTERN(void) jsimd_convsamp_neon
1021 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1023 EXTERN(void) jsimd_convsamp_dspr2
1024 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1026 EXTERN(void) jsimd_convsamp_altivec
1027 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1029 /* Floating Point Sample Conversion */
1030 EXTERN(void) jsimd_convsamp_float_3dnow
1031 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
1033 EXTERN(void) jsimd_convsamp_float_sse
1034 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
1036 EXTERN(void) jsimd_convsamp_float_sse2
1037 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
1039 EXTERN(void) jsimd_convsamp_float_dspr2
1040 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
1042 /* Accurate Integer Forward DCT */
1043 EXTERN(void) jsimd_fdct_islow_mmx(DCTELEM *data);
1045 extern const int jconst_fdct_islow_sse2[];
1046 EXTERN(void) jsimd_fdct_islow_sse2(DCTELEM *data);
1048 extern const int jconst_fdct_islow_avx2[];
1049 EXTERN(void) jsimd_fdct_islow_avx2(DCTELEM *data);
1051 EXTERN(void) jsimd_fdct_islow_neon(DCTELEM *data);
1053 EXTERN(void) jsimd_fdct_islow_dspr2(DCTELEM *data);
1055 EXTERN(void) jsimd_fdct_islow_mmi(DCTELEM *data);
1057 EXTERN(void) jsimd_fdct_islow_altivec(DCTELEM *data);
1059 /* Fast Integer Forward DCT */
1060 EXTERN(void) jsimd_fdct_ifast_mmx(DCTELEM *data);
1062 extern const int jconst_fdct_ifast_sse2[];
1063 EXTERN(void) jsimd_fdct_ifast_sse2(DCTELEM *data);
1065 EXTERN(void) jsimd_fdct_ifast_neon(DCTELEM *data);
1067 EXTERN(void) jsimd_fdct_ifast_dspr2(DCTELEM *data);
1069 EXTERN(void) jsimd_fdct_ifast_mmi(DCTELEM *data);
1071 EXTERN(void) jsimd_fdct_ifast_altivec(DCTELEM *data);
1073 /* Floating Point Forward DCT */
1074 EXTERN(void) jsimd_fdct_float_3dnow(FAST_FLOAT *data);
1076 extern const int jconst_fdct_float_sse[];
1077 EXTERN(void) jsimd_fdct_float_sse(FAST_FLOAT *data);
1080 EXTERN(void) jsimd_quantize_mmx
1081 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1083 EXTERN(void) jsimd_quantize_sse2
1084 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1086 EXTERN(void) jsimd_quantize_avx2
1087 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1089 EXTERN(void) jsimd_quantize_neon
1090 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1092 EXTERN(void) jsimd_quantize_dspr2
1093 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1095 EXTERN(void) jsimd_quantize_mmi
1096 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1098 EXTERN(void) jsimd_quantize_altivec
1099 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1101 /* Floating Point Quantization */
1102 EXTERN(void) jsimd_quantize_float_3dnow
1103 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
1105 EXTERN(void) jsimd_quantize_float_sse
1106 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
1108 EXTERN(void) jsimd_quantize_float_sse2
1109 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
1111 EXTERN(void) jsimd_quantize_float_dspr2
1112 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
1114 /* Scaled Inverse DCT */
1115 EXTERN(void) jsimd_idct_2x2_mmx
1116 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1117 JDIMENSION output_col);
1118 EXTERN(void) jsimd_idct_4x4_mmx
1119 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1120 JDIMENSION output_col);
1122 extern const int jconst_idct_red_sse2[];
1123 EXTERN(void) jsimd_idct_2x2_sse2
1124 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1125 JDIMENSION output_col);
1126 EXTERN(void) jsimd_idct_4x4_sse2
1127 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1128 JDIMENSION output_col);
1130 EXTERN(void) jsimd_idct_2x2_neon
1131 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1132 JDIMENSION output_col);
1133 EXTERN(void) jsimd_idct_4x4_neon
1134 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1135 JDIMENSION output_col);
1137 EXTERN(void) jsimd_idct_2x2_dspr2
1138 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1139 JDIMENSION output_col);
1140 EXTERN(void) jsimd_idct_4x4_dspr2
1141 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1142 JDIMENSION output_col, int *workspace);
1143 EXTERN(void) jsimd_idct_6x6_dspr2
1144 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1145 JDIMENSION output_col);
1146 EXTERN(void) jsimd_idct_12x12_pass1_dspr2
1147 (JCOEFPTR coef_block, void *dct_table, int *workspace);
1148 EXTERN(void) jsimd_idct_12x12_pass2_dspr2
1149 (int *workspace, int *output);
1151 /* Accurate Integer Inverse DCT */
1152 EXTERN(void) jsimd_idct_islow_mmx
1153 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1154 JDIMENSION output_col);
1156 extern const int jconst_idct_islow_sse2[];
1157 EXTERN(void) jsimd_idct_islow_sse2
1158 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1159 JDIMENSION output_col);
1161 extern const int jconst_idct_islow_avx2[];
1162 EXTERN(void) jsimd_idct_islow_avx2
1163 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1164 JDIMENSION output_col);
1166 EXTERN(void) jsimd_idct_islow_neon
1167 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1168 JDIMENSION output_col);
1170 EXTERN(void) jsimd_idct_islow_dspr2
1171 (void *dct_table, JCOEFPTR coef_block, int *output_buf, JSAMPLE *output_col);
1173 EXTERN(void) jsimd_idct_islow_mmi
1174 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1175 JDIMENSION output_col);
1177 EXTERN(void) jsimd_idct_islow_altivec
1178 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1179 JDIMENSION output_col);
1181 /* Fast Integer Inverse DCT */
1182 EXTERN(void) jsimd_idct_ifast_mmx
1183 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1184 JDIMENSION output_col);
1186 extern const int jconst_idct_ifast_sse2[];
1187 EXTERN(void) jsimd_idct_ifast_sse2
1188 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1189 JDIMENSION output_col);
1191 EXTERN(void) jsimd_idct_ifast_neon
1192 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1193 JDIMENSION output_col);
1195 EXTERN(void) jsimd_idct_ifast_cols_dspr2
1196 (JCOEF *inptr, IFAST_MULT_TYPE *quantptr, DCTELEM *wsptr,
1197 const int *idct_coefs);
1198 EXTERN(void) jsimd_idct_ifast_rows_dspr2
1199 (DCTELEM *wsptr, JSAMPARRAY output_buf, JDIMENSION output_col,
1200 const int *idct_coefs);
1202 EXTERN(void) jsimd_idct_ifast_mmi
1203 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1204 JDIMENSION output_col);
1206 EXTERN(void) jsimd_idct_ifast_altivec
1207 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1208 JDIMENSION output_col);
1210 /* Floating Point Inverse DCT */
1211 EXTERN(void) jsimd_idct_float_3dnow
1212 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1213 JDIMENSION output_col);
1215 extern const int jconst_idct_float_sse[];
1216 EXTERN(void) jsimd_idct_float_sse
1217 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1218 JDIMENSION output_col);
1220 extern const int jconst_idct_float_sse2[];
1221 EXTERN(void) jsimd_idct_float_sse2
1222 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1223 JDIMENSION output_col);
1225 /* Huffman coding */
1226 extern const int jconst_huff_encode_one_block[];
1227 EXTERN(JOCTET *) jsimd_huff_encode_one_block_sse2
1228 (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
1229 c_derived_tbl *dctbl, c_derived_tbl *actbl);
1231 EXTERN(JOCTET *) jsimd_huff_encode_one_block_neon
1232 (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
1233 c_derived_tbl *dctbl, c_derived_tbl *actbl);
1235 #ifndef NEON_INTRINSICS
1237 EXTERN(JOCTET *) jsimd_huff_encode_one_block_neon_slowtbl
1238 (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
1239 c_derived_tbl *dctbl, c_derived_tbl *actbl);
1243 /* Progressive Huffman encoding */
1244 EXTERN(void) jsimd_encode_mcu_AC_first_prepare_sse2
1245 (const JCOEF *block, const int *jpeg_natural_order_start, int Sl, int Al,
1246 JCOEF *values, size_t *zerobits);
1248 EXTERN(void) jsimd_encode_mcu_AC_first_prepare_neon
1249 (const JCOEF *block, const int *jpeg_natural_order_start, int Sl, int Al,
1250 JCOEF *values, size_t *zerobits);
1252 EXTERN(int) jsimd_encode_mcu_AC_refine_prepare_sse2
1253 (const JCOEF *block, const int *jpeg_natural_order_start, int Sl, int Al,
1254 JCOEF *absvalues, size_t *bits);
1256 EXTERN(int) jsimd_encode_mcu_AC_refine_prepare_neon
1257 (const JCOEF *block, const int *jpeg_natural_order_start, int Sl, int Al,
1258 JCOEF *absvalues, size_t *bits);