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