1 /*
2  * simd/jsimd.h
3  *
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.
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 */
32 EXTERN(unsigned int) jpeg_simd_cpu_support(void);
33 
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);
56 
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);
79 
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);
102 
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);
124 
125 #ifndef NEON_INTRINSICS
126 
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);
133 
134 #endif
135 
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);
157 
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);
179 
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);
201 
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);
224 
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);
247 
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);
270 
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);
292 
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);
314 
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);
336 
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);
358 
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);
381 
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);
404 
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);
427 
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);
452 
453 #ifndef NEON_INTRINSICS
454 
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);
461 
462 #endif
463 
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);
485 
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);
507 
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);
529 
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);
534 
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);
539 
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);
543 
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);
547 
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);
551 
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);
555 
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);
559 
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);
564 
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);
568 
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);
572 
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);
576 
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);
580 
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);
584 
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);
588 
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);
594 
595 
596 /* Upsampling */
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);
603 
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);
610 
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);
617 
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);
624 
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);
631 
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);
636 
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);
643 
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);
651 
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);
659 
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);
667 
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);
677 
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);
684 
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);
691 
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);
698 
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);
721 
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);
743 
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);
766 
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);
788 
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);
811 
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);
833 
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);
855 
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);
877 
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);
899 
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);
921 
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);
943 
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);
965 
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);
987 
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);
1009 
1010 /* Sample Conversion */
1011 EXTERN(void) jsimd_convsamp_mmx
1012   (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1013 
1014 EXTERN(void) jsimd_convsamp_sse2
1015   (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1016 
1017 EXTERN(void) jsimd_convsamp_avx2
1018   (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1019 
1020 EXTERN(void) jsimd_convsamp_neon
1021   (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1022 
1023 EXTERN(void) jsimd_convsamp_dspr2
1024   (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1025 
1026 EXTERN(void) jsimd_convsamp_altivec
1027   (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
1028 
1029 /* Floating Point Sample Conversion */
1030 EXTERN(void) jsimd_convsamp_float_3dnow
1031   (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
1032 
1033 EXTERN(void) jsimd_convsamp_float_sse
1034   (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
1035 
1036 EXTERN(void) jsimd_convsamp_float_sse2
1037   (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
1038 
1039 EXTERN(void) jsimd_convsamp_float_dspr2
1040   (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
1041 
1042 /* Accurate Integer Forward DCT */
1043 EXTERN(void) jsimd_fdct_islow_mmx(DCTELEM *data);
1044 
1045 extern const int jconst_fdct_islow_sse2[];
1046 EXTERN(void) jsimd_fdct_islow_sse2(DCTELEM *data);
1047 
1048 extern const int jconst_fdct_islow_avx2[];
1049 EXTERN(void) jsimd_fdct_islow_avx2(DCTELEM *data);
1050 
1051 EXTERN(void) jsimd_fdct_islow_neon(DCTELEM *data);
1052 
1053 EXTERN(void) jsimd_fdct_islow_dspr2(DCTELEM *data);
1054 
1055 EXTERN(void) jsimd_fdct_islow_mmi(DCTELEM *data);
1056 
1057 EXTERN(void) jsimd_fdct_islow_altivec(DCTELEM *data);
1058 
1059 /* Fast Integer Forward DCT */
1060 EXTERN(void) jsimd_fdct_ifast_mmx(DCTELEM *data);
1061 
1062 extern const int jconst_fdct_ifast_sse2[];
1063 EXTERN(void) jsimd_fdct_ifast_sse2(DCTELEM *data);
1064 
1065 EXTERN(void) jsimd_fdct_ifast_neon(DCTELEM *data);
1066 
1067 EXTERN(void) jsimd_fdct_ifast_dspr2(DCTELEM *data);
1068 
1069 EXTERN(void) jsimd_fdct_ifast_mmi(DCTELEM *data);
1070 
1071 EXTERN(void) jsimd_fdct_ifast_altivec(DCTELEM *data);
1072 
1073 /* Floating Point Forward DCT */
1074 EXTERN(void) jsimd_fdct_float_3dnow(FAST_FLOAT *data);
1075 
1076 extern const int jconst_fdct_float_sse[];
1077 EXTERN(void) jsimd_fdct_float_sse(FAST_FLOAT *data);
1078 
1079 /* Quantization */
1080 EXTERN(void) jsimd_quantize_mmx
1081   (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1082 
1083 EXTERN(void) jsimd_quantize_sse2
1084   (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1085 
1086 EXTERN(void) jsimd_quantize_avx2
1087   (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1088 
1089 EXTERN(void) jsimd_quantize_neon
1090   (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1091 
1092 EXTERN(void) jsimd_quantize_dspr2
1093   (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1094 
1095 EXTERN(void) jsimd_quantize_mmi
1096   (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1097 
1098 EXTERN(void) jsimd_quantize_altivec
1099   (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
1100 
1101 /* Floating Point Quantization */
1102 EXTERN(void) jsimd_quantize_float_3dnow
1103   (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
1104 
1105 EXTERN(void) jsimd_quantize_float_sse
1106   (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
1107 
1108 EXTERN(void) jsimd_quantize_float_sse2
1109   (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
1110 
1111 EXTERN(void) jsimd_quantize_float_dspr2
1112   (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
1113 
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);
1121 
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);
1129 
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);
1136 
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);
1150 
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);
1155 
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);
1160 
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);
1165 
1166 EXTERN(void) jsimd_idct_islow_neon
1167   (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1168    JDIMENSION output_col);
1169 
1170 EXTERN(void) jsimd_idct_islow_dspr2
1171   (void *dct_table, JCOEFPTR coef_block, int *output_buf, JSAMPLE *output_col);
1172 
1173 EXTERN(void) jsimd_idct_islow_mmi
1174   (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1175    JDIMENSION output_col);
1176 
1177 EXTERN(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 */
1182 EXTERN(void) jsimd_idct_ifast_mmx
1183   (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1184    JDIMENSION output_col);
1185 
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);
1190 
1191 EXTERN(void) jsimd_idct_ifast_neon
1192   (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1193    JDIMENSION output_col);
1194 
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);
1201 
1202 EXTERN(void) jsimd_idct_ifast_mmi
1203   (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1204    JDIMENSION output_col);
1205 
1206 EXTERN(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 */
1211 EXTERN(void) jsimd_idct_float_3dnow
1212   (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
1213    JDIMENSION output_col);
1214 
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);
1219 
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);
1224 
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);
1230 
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);
1234 
1235 #ifndef NEON_INTRINSICS
1236 
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);
1240 
1241 #endif
1242 
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);
1247 
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);
1251 
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);
1255 
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);
1259