blob: a39fafa751c6bb0305d765bd8440060c7c65c404 [file] [log] [blame]
Pierre Ossman2ae181c2009-03-09 13:21:27 +00001/*
2 * simd/jsimd.h
3 *
4 * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
DRCf3a86842016-01-07 00:19:43 -06005 * Copyright (C) 2011, 2014-2016 D. R. Commander
DRC34347862014-05-06 09:53:21 +00006 * Copyright (C) 2013-2014, MIPS Technologies, Inc., California
DRCd729f4d2014-08-23 15:47:51 +00007 * Copyright (C) 2014 Linaro Limited
DRC499c4702016-01-13 03:13:20 -06008 * Copyright (C) 2015-2016 Matthieu Darbois
DRC49eaa752013-09-27 17:39:57 +00009 *
Pierre Ossman2ae181c2009-03-09 13:21:27 +000010 * Based on the x86 SIMD extension for IJG JPEG library,
11 * Copyright (C) 1999-2006, MIYASAKA Masaru.
DRCaf1ca9b2011-02-02 05:42:37 +000012 * For conditions of distribution and use, see copyright notice in jsimdext.inc
Pierre Ossman2ae181c2009-03-09 13:21:27 +000013 *
14 */
15
16/* Bitmask for supported acceleration methods */
17
DRC321e0682011-05-03 08:47:43 +000018#define JSIMD_NONE 0x00
19#define JSIMD_MMX 0x01
20#define JSIMD_3DNOW 0x02
21#define JSIMD_SSE 0x04
22#define JSIMD_SSE2 0x08
23#define JSIMD_ARM_NEON 0x10
DRC0be9fa52013-07-24 21:50:20 +000024#define JSIMD_MIPS_DSPR2 0x20
DRCcd2d8e12014-09-05 06:33:42 +000025#define JSIMD_ALTIVEC 0x40
Pierre Ossman2ae181c2009-03-09 13:21:27 +000026
Pierre Ossman2ae181c2009-03-09 13:21:27 +000027/* SIMD Ext: retrieve SIMD/CPU information */
DRCbc56b752014-05-16 10:43:44 +000028EXTERN(unsigned int) jpeg_simd_cpu_support (void);
Pierre Ossman2ae181c2009-03-09 13:21:27 +000029
DRCbc56b752014-05-16 10:43:44 +000030/* RGB & extended RGB --> YCC Colorspace Conversion */
Pierre Ossman5eb84ff2009-03-09 13:25:30 +000031EXTERN(void) jsimd_rgb_ycc_convert_mmx
DRCbc56b752014-05-16 10:43:44 +000032 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
33 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000034EXTERN(void) jsimd_extrgb_ycc_convert_mmx
DRCbc56b752014-05-16 10:43:44 +000035 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
36 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000037EXTERN(void) jsimd_extrgbx_ycc_convert_mmx
DRCbc56b752014-05-16 10:43:44 +000038 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
39 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000040EXTERN(void) jsimd_extbgr_ycc_convert_mmx
DRCbc56b752014-05-16 10:43:44 +000041 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
42 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000043EXTERN(void) jsimd_extbgrx_ycc_convert_mmx
DRCbc56b752014-05-16 10:43:44 +000044 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
45 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000046EXTERN(void) jsimd_extxbgr_ycc_convert_mmx
DRCbc56b752014-05-16 10:43:44 +000047 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
48 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000049EXTERN(void) jsimd_extxrgb_ycc_convert_mmx
DRCbc56b752014-05-16 10:43:44 +000050 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
51 JDIMENSION output_row, int num_rows);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +000052
Pierre Ossmaneea72152009-03-09 13:34:17 +000053extern const int jconst_rgb_ycc_convert_sse2[];
54EXTERN(void) jsimd_rgb_ycc_convert_sse2
DRCbc56b752014-05-16 10:43:44 +000055 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
56 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000057EXTERN(void) jsimd_extrgb_ycc_convert_sse2
DRCbc56b752014-05-16 10:43:44 +000058 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
59 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000060EXTERN(void) jsimd_extrgbx_ycc_convert_sse2
DRCbc56b752014-05-16 10:43:44 +000061 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
62 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000063EXTERN(void) jsimd_extbgr_ycc_convert_sse2
DRCbc56b752014-05-16 10:43:44 +000064 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
65 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000066EXTERN(void) jsimd_extbgrx_ycc_convert_sse2
DRCbc56b752014-05-16 10:43:44 +000067 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
68 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000069EXTERN(void) jsimd_extxbgr_ycc_convert_sse2
DRCbc56b752014-05-16 10:43:44 +000070 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
71 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000072EXTERN(void) jsimd_extxrgb_ycc_convert_sse2
DRCbc56b752014-05-16 10:43:44 +000073 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
74 JDIMENSION output_row, int num_rows);
75
76EXTERN(void) jsimd_rgb_ycc_convert_neon
77 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
78 JDIMENSION output_row, int num_rows);
79EXTERN(void) jsimd_extrgb_ycc_convert_neon
80 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
81 JDIMENSION output_row, int num_rows);
82EXTERN(void) jsimd_extrgbx_ycc_convert_neon
83 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
84 JDIMENSION output_row, int num_rows);
85EXTERN(void) jsimd_extbgr_ycc_convert_neon
86 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
87 JDIMENSION output_row, int num_rows);
88EXTERN(void) jsimd_extbgrx_ycc_convert_neon
89 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
90 JDIMENSION output_row, int num_rows);
91EXTERN(void) jsimd_extxbgr_ycc_convert_neon
92 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
93 JDIMENSION output_row, int num_rows);
94EXTERN(void) jsimd_extxrgb_ycc_convert_neon
95 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
96 JDIMENSION output_row, int num_rows);
97
DRC46ecffa2016-02-07 22:05:56 -060098EXTERN(void) jsimd_extrgb_ycc_convert_neon_slowld3
99 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
100 JDIMENSION output_row, int num_rows);
101EXTERN(void) jsimd_extbgr_ycc_convert_neon_slowld3
102 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
103 JDIMENSION output_row, int num_rows);
104
DRCbc56b752014-05-16 10:43:44 +0000105EXTERN(void) jsimd_rgb_ycc_convert_mips_dspr2
106 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
107 JDIMENSION output_row, int num_rows);
108EXTERN(void) jsimd_extrgb_ycc_convert_mips_dspr2
109 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
110 JDIMENSION output_row, int num_rows);
111EXTERN(void) jsimd_extrgbx_ycc_convert_mips_dspr2
112 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
113 JDIMENSION output_row, int num_rows);
114EXTERN(void) jsimd_extbgr_ycc_convert_mips_dspr2
115 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
116 JDIMENSION output_row, int num_rows);
117EXTERN(void) jsimd_extbgrx_ycc_convert_mips_dspr2
118 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
119 JDIMENSION output_row, int num_rows);
120EXTERN(void) jsimd_extxbgr_ycc_convert_mips_dspr2
121 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
122 JDIMENSION output_row, int num_rows);
123EXTERN(void) jsimd_extxrgb_ycc_convert_mips_dspr2
124 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
125 JDIMENSION output_row, int num_rows);
126
DRC62bae202014-12-22 13:42:26 +0000127EXTERN(void) jsimd_rgb_ycc_convert_altivec
128 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
129 JDIMENSION output_row, int num_rows);
130EXTERN(void) jsimd_extrgb_ycc_convert_altivec
131 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
132 JDIMENSION output_row, int num_rows);
133EXTERN(void) jsimd_extrgbx_ycc_convert_altivec
134 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
135 JDIMENSION output_row, int num_rows);
136EXTERN(void) jsimd_extbgr_ycc_convert_altivec
137 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
138 JDIMENSION output_row, int num_rows);
139EXTERN(void) jsimd_extbgrx_ycc_convert_altivec
140 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
141 JDIMENSION output_row, int num_rows);
142EXTERN(void) jsimd_extxbgr_ycc_convert_altivec
143 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
144 JDIMENSION output_row, int num_rows);
145EXTERN(void) jsimd_extxrgb_ycc_convert_altivec
146 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
147 JDIMENSION output_row, int num_rows);
148
DRCbc56b752014-05-16 10:43:44 +0000149/* RGB & extended RGB --> Grayscale Colorspace Conversion */
150EXTERN(void) jsimd_rgb_gray_convert_mmx
151 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
152 JDIMENSION output_row, int num_rows);
153EXTERN(void) jsimd_extrgb_gray_convert_mmx
154 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
155 JDIMENSION output_row, int num_rows);
156EXTERN(void) jsimd_extrgbx_gray_convert_mmx
157 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
158 JDIMENSION output_row, int num_rows);
159EXTERN(void) jsimd_extbgr_gray_convert_mmx
160 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
161 JDIMENSION output_row, int num_rows);
162EXTERN(void) jsimd_extbgrx_gray_convert_mmx
163 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
164 JDIMENSION output_row, int num_rows);
165EXTERN(void) jsimd_extxbgr_gray_convert_mmx
166 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
167 JDIMENSION output_row, int num_rows);
168EXTERN(void) jsimd_extxrgb_gray_convert_mmx
169 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
170 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000171
DRCc8666332011-02-18 11:23:45 +0000172extern const int jconst_rgb_gray_convert_sse2[];
173EXTERN(void) jsimd_rgb_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000174 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
175 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000176EXTERN(void) jsimd_extrgb_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000177 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
178 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000179EXTERN(void) jsimd_extrgbx_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000180 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
181 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000182EXTERN(void) jsimd_extbgr_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000183 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
184 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000185EXTERN(void) jsimd_extbgrx_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000186 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
187 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000188EXTERN(void) jsimd_extxbgr_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000189 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
190 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000191EXTERN(void) jsimd_extxrgb_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000192 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
193 JDIMENSION output_row, int num_rows);
194
195EXTERN(void) jsimd_rgb_gray_convert_mips_dspr2
196 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
197 JDIMENSION output_row, int num_rows);
198EXTERN(void) jsimd_extrgb_gray_convert_mips_dspr2
199 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
200 JDIMENSION output_row, int num_rows);
201EXTERN(void) jsimd_extrgbx_gray_convert_mips_dspr2
202 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
203 JDIMENSION output_row, int num_rows);
204EXTERN(void) jsimd_extbgr_gray_convert_mips_dspr2
205 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
206 JDIMENSION output_row, int num_rows);
207EXTERN(void) jsimd_extbgrx_gray_convert_mips_dspr2
208 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
209 JDIMENSION output_row, int num_rows);
210EXTERN(void) jsimd_extxbgr_gray_convert_mips_dspr2
211 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
212 JDIMENSION output_row, int num_rows);
213EXTERN(void) jsimd_extxrgb_gray_convert_mips_dspr2
214 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
215 JDIMENSION output_row, int num_rows);
216
DRCb1fec4f2014-12-22 14:10:33 +0000217EXTERN(void) jsimd_rgb_gray_convert_altivec
218 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
219 JDIMENSION output_row, int num_rows);
220EXTERN(void) jsimd_extrgb_gray_convert_altivec
221 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
222 JDIMENSION output_row, int num_rows);
223EXTERN(void) jsimd_extrgbx_gray_convert_altivec
224 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
225 JDIMENSION output_row, int num_rows);
226EXTERN(void) jsimd_extbgr_gray_convert_altivec
227 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
228 JDIMENSION output_row, int num_rows);
229EXTERN(void) jsimd_extbgrx_gray_convert_altivec
230 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
231 JDIMENSION output_row, int num_rows);
232EXTERN(void) jsimd_extxbgr_gray_convert_altivec
233 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
234 JDIMENSION output_row, int num_rows);
235EXTERN(void) jsimd_extxrgb_gray_convert_altivec
236 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
237 JDIMENSION output_row, int num_rows);
238
DRCbc56b752014-05-16 10:43:44 +0000239/* YCC --> RGB & extended RGB Colorspace Conversion */
240EXTERN(void) jsimd_ycc_rgb_convert_mmx
241 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
242 JSAMPARRAY output_buf, int num_rows);
243EXTERN(void) jsimd_ycc_extrgb_convert_mmx
244 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
245 JSAMPARRAY output_buf, int num_rows);
246EXTERN(void) jsimd_ycc_extrgbx_convert_mmx
247 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
248 JSAMPARRAY output_buf, int num_rows);
249EXTERN(void) jsimd_ycc_extbgr_convert_mmx
250 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
251 JSAMPARRAY output_buf, int num_rows);
252EXTERN(void) jsimd_ycc_extbgrx_convert_mmx
253 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
254 JSAMPARRAY output_buf, int num_rows);
255EXTERN(void) jsimd_ycc_extxbgr_convert_mmx
256 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
257 JSAMPARRAY output_buf, int num_rows);
258EXTERN(void) jsimd_ycc_extxrgb_convert_mmx
259 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
260 JSAMPARRAY output_buf, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000261
Pierre Ossmaneea72152009-03-09 13:34:17 +0000262extern const int jconst_ycc_rgb_convert_sse2[];
263EXTERN(void) jsimd_ycc_rgb_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000264 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
265 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000266EXTERN(void) jsimd_ycc_extrgb_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000267 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
268 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000269EXTERN(void) jsimd_ycc_extrgbx_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000270 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
271 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000272EXTERN(void) jsimd_ycc_extbgr_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000273 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
274 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000275EXTERN(void) jsimd_ycc_extbgrx_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000276 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
277 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000278EXTERN(void) jsimd_ycc_extxbgr_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000279 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
280 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000281EXTERN(void) jsimd_ycc_extxrgb_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000282 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
283 JSAMPARRAY output_buf, int num_rows);
DRC7a9376c2011-08-12 19:27:20 +0000284
DRC321e0682011-05-03 08:47:43 +0000285EXTERN(void) jsimd_ycc_rgb_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000286 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
287 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000288EXTERN(void) jsimd_ycc_extrgb_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000289 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
290 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000291EXTERN(void) jsimd_ycc_extrgbx_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000292 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
293 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000294EXTERN(void) jsimd_ycc_extbgr_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000295 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
296 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000297EXTERN(void) jsimd_ycc_extbgrx_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000298 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
299 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000300EXTERN(void) jsimd_ycc_extxbgr_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000301 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
302 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000303EXTERN(void) jsimd_ycc_extxrgb_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000304 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
305 JSAMPARRAY output_buf, int num_rows);
DRCd729f4d2014-08-23 15:47:51 +0000306EXTERN(void) jsimd_ycc_rgb565_convert_neon
307 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
308 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000309
DRC46ecffa2016-02-07 22:05:56 -0600310EXTERN(void) jsimd_ycc_extrgb_convert_neon_slowst3
311 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
312 JSAMPARRAY output_buf, int num_rows);
313EXTERN(void) jsimd_ycc_extbgr_convert_neon_slowst3
314 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
315 JSAMPARRAY output_buf, int num_rows);
316
DRCbc56b752014-05-16 10:43:44 +0000317EXTERN(void) jsimd_ycc_rgb_convert_mips_dspr2
318 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
319 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000320EXTERN(void) jsimd_ycc_extrgb_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000321 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
322 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000323EXTERN(void) jsimd_ycc_extrgbx_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000324 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
325 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000326EXTERN(void) jsimd_ycc_extbgr_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000327 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
328 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000329EXTERN(void) jsimd_ycc_extbgrx_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000330 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
331 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000332EXTERN(void) jsimd_ycc_extxbgr_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000333 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
334 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000335EXTERN(void) jsimd_ycc_extxrgb_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000336 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
337 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000338
DRCac4daa72015-01-10 22:56:26 +0000339EXTERN(void) jsimd_ycc_rgb_convert_altivec
340 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
341 JSAMPARRAY output_buf, int num_rows);
342EXTERN(void) jsimd_ycc_extrgb_convert_altivec
343 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
344 JSAMPARRAY output_buf, int num_rows);
345EXTERN(void) jsimd_ycc_extrgbx_convert_altivec
346 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
347 JSAMPARRAY output_buf, int num_rows);
348EXTERN(void) jsimd_ycc_extbgr_convert_altivec
349 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
350 JSAMPARRAY output_buf, int num_rows);
351EXTERN(void) jsimd_ycc_extbgrx_convert_altivec
352 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
353 JSAMPARRAY output_buf, int num_rows);
354EXTERN(void) jsimd_ycc_extxbgr_convert_altivec
355 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
356 JSAMPARRAY output_buf, int num_rows);
357EXTERN(void) jsimd_ycc_extxrgb_convert_altivec
358 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
359 JSAMPARRAY output_buf, int num_rows);
360
DRCbc56b752014-05-16 10:43:44 +0000361/* NULL Colorspace Conversion */
DRC1b3fd7e2014-05-15 18:26:01 +0000362EXTERN(void) jsimd_c_null_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000363 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
364 JDIMENSION output_row, int num_rows, int num_components);
DRC1b3fd7e2014-05-15 18:26:01 +0000365
DRCbc56b752014-05-16 10:43:44 +0000366/* h2v1 Downsampling */
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000367EXTERN(void) jsimd_h2v1_downsample_mmx
DRCbc56b752014-05-16 10:43:44 +0000368 (JDIMENSION image_width, int max_v_samp_factor,
369 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
370 JSAMPARRAY input_data, JSAMPARRAY output_data);
371
372EXTERN(void) jsimd_h2v1_downsample_sse2
373 (JDIMENSION image_width, int max_v_samp_factor,
374 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
375 JSAMPARRAY input_data, JSAMPARRAY output_data);
376
DRCec6941f2016-01-15 09:29:11 -0600377EXTERN(void) jsimd_h2v1_downsample_neon
378 (JDIMENSION image_width, int max_v_samp_factor,
379 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
380 JSAMPARRAY input_data, JSAMPARRAY output_data);
381
DRCbc56b752014-05-16 10:43:44 +0000382EXTERN(void) jsimd_h2v1_downsample_mips_dspr2
383 (JDIMENSION image_width, int max_v_samp_factor,
384 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
385 JSAMPARRAY input_data, JSAMPARRAY output_data);
386
DRC22048202015-01-08 06:18:33 +0000387EXTERN(void) jsimd_h2v1_downsample_altivec
388 (JDIMENSION image_width, int max_v_samp_factor,
389 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
390 JSAMPARRAY input_data, JSAMPARRAY output_data);
391
DRCbc56b752014-05-16 10:43:44 +0000392/* h2v2 Downsampling */
393EXTERN(void) jsimd_h2v2_downsample_mmx
394 (JDIMENSION image_width, int max_v_samp_factor,
395 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
396 JSAMPARRAY input_data, JSAMPARRAY output_data);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000397
Pierre Ossmaneea72152009-03-09 13:34:17 +0000398EXTERN(void) jsimd_h2v2_downsample_sse2
DRCbc56b752014-05-16 10:43:44 +0000399 (JDIMENSION image_width, int max_v_samp_factor,
400 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
401 JSAMPARRAY input_data, JSAMPARRAY output_data);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000402
DRCec6941f2016-01-15 09:29:11 -0600403EXTERN(void) jsimd_h2v2_downsample_neon
404 (JDIMENSION image_width, int max_v_samp_factor,
405 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
406 JSAMPARRAY input_data, JSAMPARRAY output_data);
407
DRC6f2d3c22013-07-27 21:48:18 +0000408EXTERN(void) jsimd_h2v2_downsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000409 (JDIMENSION image_width, int max_v_samp_factor,
410 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
411 JSAMPARRAY input_data, JSAMPARRAY output_data);
412
DRC22048202015-01-08 06:18:33 +0000413EXTERN(void) jsimd_h2v2_downsample_altivec
414 (JDIMENSION image_width, int max_v_samp_factor,
415 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
416 JSAMPARRAY input_data, JSAMPARRAY output_data);
417
DRCbc56b752014-05-16 10:43:44 +0000418/* h2v2 Smooth Downsampling */
DRC6a61c1e2014-05-14 15:00:10 +0000419EXTERN(void) jsimd_h2v2_smooth_downsample_mips_dspr2
DRCc728cfd2014-05-18 19:36:05 +0000420 (JSAMPARRAY input_data, JSAMPARRAY output_data,
421 JDIMENSION v_samp_factor, int max_v_samp_factor,
422 int smoothing_factor, JDIMENSION width_blocks,
423 JDIMENSION image_width);
424
DRC6f2d3c22013-07-27 21:48:18 +0000425
DRCbc56b752014-05-16 10:43:44 +0000426/* Upsampling */
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000427EXTERN(void) jsimd_h2v1_upsample_mmx
DRCbc56b752014-05-16 10:43:44 +0000428 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
DRCbd498032016-02-19 08:53:33 -0600429 JSAMPARRAY *output_data_ptr);
DRCbc56b752014-05-16 10:43:44 +0000430EXTERN(void) jsimd_h2v2_upsample_mmx
431 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
DRCbd498032016-02-19 08:53:33 -0600432 JSAMPARRAY *output_data_ptr);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000433
Pierre Ossmaneea72152009-03-09 13:34:17 +0000434EXTERN(void) jsimd_h2v1_upsample_sse2
DRCbc56b752014-05-16 10:43:44 +0000435 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
DRCbd498032016-02-19 08:53:33 -0600436 JSAMPARRAY *output_data_ptr);
DRCbc56b752014-05-16 10:43:44 +0000437EXTERN(void) jsimd_h2v2_upsample_sse2
438 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
DRCbd498032016-02-19 08:53:33 -0600439 JSAMPARRAY *output_data_ptr);
DRCbc56b752014-05-16 10:43:44 +0000440
441EXTERN(void) jsimd_h2v1_upsample_mips_dspr2
442 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
DRCbd498032016-02-19 08:53:33 -0600443 JSAMPARRAY *output_data_ptr);
DRCbc56b752014-05-16 10:43:44 +0000444EXTERN(void) jsimd_h2v2_upsample_mips_dspr2
445 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
DRCbd498032016-02-19 08:53:33 -0600446 JSAMPARRAY *output_data_ptr);
DRCbc56b752014-05-16 10:43:44 +0000447
DRC5ef46302014-05-18 20:04:47 +0000448EXTERN(void) jsimd_int_upsample_mips_dspr2
449 (UINT8 h_expand, UINT8 v_expand, JSAMPARRAY input_data,
DRCbd498032016-02-19 08:53:33 -0600450 JSAMPARRAY *output_data_ptr, JDIMENSION output_width,
DRC5ef46302014-05-18 20:04:47 +0000451 int max_v_samp_factor);
452
DRCc641cdd2015-01-14 15:41:11 +0000453EXTERN(void) jsimd_h2v1_upsample_altivec
454 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
DRCbd498032016-02-19 08:53:33 -0600455 JSAMPARRAY *output_data_ptr);
DRCc641cdd2015-01-14 15:41:11 +0000456EXTERN(void) jsimd_h2v2_upsample_altivec
457 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
DRCbd498032016-02-19 08:53:33 -0600458 JSAMPARRAY *output_data_ptr);
DRC5ef46302014-05-18 20:04:47 +0000459
DRCbc56b752014-05-16 10:43:44 +0000460/* Fancy Upsampling */
461EXTERN(void) jsimd_h2v1_fancy_upsample_mmx
462 (int max_v_samp_factor, JDIMENSION downsampled_width,
DRCbd498032016-02-19 08:53:33 -0600463 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
DRCbc56b752014-05-16 10:43:44 +0000464EXTERN(void) jsimd_h2v2_fancy_upsample_mmx
465 (int max_v_samp_factor, JDIMENSION downsampled_width,
DRCbd498032016-02-19 08:53:33 -0600466 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000467
468extern const int jconst_fancy_upsample_sse2[];
Pierre Ossmaneea72152009-03-09 13:34:17 +0000469EXTERN(void) jsimd_h2v1_fancy_upsample_sse2
DRCbc56b752014-05-16 10:43:44 +0000470 (int max_v_samp_factor, JDIMENSION downsampled_width,
DRCbd498032016-02-19 08:53:33 -0600471 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
DRCbc56b752014-05-16 10:43:44 +0000472EXTERN(void) jsimd_h2v2_fancy_upsample_sse2
473 (int max_v_samp_factor, JDIMENSION downsampled_width,
DRCbd498032016-02-19 08:53:33 -0600474 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000475
DRC316617f2012-06-13 05:17:03 +0000476EXTERN(void) jsimd_h2v1_fancy_upsample_neon
DRCbc56b752014-05-16 10:43:44 +0000477 (int max_v_samp_factor, JDIMENSION downsampled_width,
DRCbd498032016-02-19 08:53:33 -0600478 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
DRC316617f2012-06-13 05:17:03 +0000479
DRC86fbf352013-07-27 21:44:14 +0000480EXTERN(void) jsimd_h2v1_fancy_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000481 (int max_v_samp_factor, JDIMENSION downsampled_width,
DRCbd498032016-02-19 08:53:33 -0600482 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
DRC86fbf352013-07-27 21:44:14 +0000483EXTERN(void) jsimd_h2v2_fancy_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000484 (int max_v_samp_factor, JDIMENSION downsampled_width,
DRCbd498032016-02-19 08:53:33 -0600485 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
DRCbc56b752014-05-16 10:43:44 +0000486
DRC52a4ec62015-01-13 09:02:29 +0000487EXTERN(void) jsimd_h2v1_fancy_upsample_altivec
488 (int max_v_samp_factor, JDIMENSION downsampled_width,
DRCbd498032016-02-19 08:53:33 -0600489 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
DRC52a4ec62015-01-13 09:02:29 +0000490EXTERN(void) jsimd_h2v2_fancy_upsample_altivec
491 (int max_v_samp_factor, JDIMENSION downsampled_width,
DRCbd498032016-02-19 08:53:33 -0600492 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
DRC52a4ec62015-01-13 09:02:29 +0000493
DRCbc56b752014-05-16 10:43:44 +0000494/* Merged Upsampling */
495EXTERN(void) jsimd_h2v1_merged_upsample_mmx
496 (JDIMENSION output_width, JSAMPIMAGE input_buf,
497 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
498EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mmx
499 (JDIMENSION output_width, JSAMPIMAGE input_buf,
500 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
501EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mmx
502 (JDIMENSION output_width, JSAMPIMAGE input_buf,
503 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
504EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mmx
505 (JDIMENSION output_width, JSAMPIMAGE input_buf,
506 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
507EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mmx
508 (JDIMENSION output_width, JSAMPIMAGE input_buf,
509 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
510EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mmx
511 (JDIMENSION output_width, JSAMPIMAGE input_buf,
512 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
513EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mmx
514 (JDIMENSION output_width, JSAMPIMAGE input_buf,
515 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
516
517EXTERN(void) jsimd_h2v2_merged_upsample_mmx
518 (JDIMENSION output_width, JSAMPIMAGE input_buf,
519 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
520EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mmx
521 (JDIMENSION output_width, JSAMPIMAGE input_buf,
522 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
523EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mmx
524 (JDIMENSION output_width, JSAMPIMAGE input_buf,
525 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
526EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mmx
527 (JDIMENSION output_width, JSAMPIMAGE input_buf,
528 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
529EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mmx
530 (JDIMENSION output_width, JSAMPIMAGE input_buf,
531 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
532EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mmx
533 (JDIMENSION output_width, JSAMPIMAGE input_buf,
534 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
535EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mmx
536 (JDIMENSION output_width, JSAMPIMAGE input_buf,
537 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
538
539extern const int jconst_merged_upsample_sse2[];
540EXTERN(void) jsimd_h2v1_merged_upsample_sse2
541 (JDIMENSION output_width, JSAMPIMAGE input_buf,
542 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
543EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_sse2
544 (JDIMENSION output_width, JSAMPIMAGE input_buf,
545 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
546EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_sse2
547 (JDIMENSION output_width, JSAMPIMAGE input_buf,
548 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
549EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_sse2
550 (JDIMENSION output_width, JSAMPIMAGE input_buf,
551 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
552EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_sse2
553 (JDIMENSION output_width, JSAMPIMAGE input_buf,
554 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
555EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_sse2
556 (JDIMENSION output_width, JSAMPIMAGE input_buf,
557 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
558EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_sse2
559 (JDIMENSION output_width, JSAMPIMAGE input_buf,
560 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
561
562EXTERN(void) jsimd_h2v2_merged_upsample_sse2
563 (JDIMENSION output_width, JSAMPIMAGE input_buf,
564 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
565EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_sse2
566 (JDIMENSION output_width, JSAMPIMAGE input_buf,
567 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
568EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_sse2
569 (JDIMENSION output_width, JSAMPIMAGE input_buf,
570 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
571EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_sse2
572 (JDIMENSION output_width, JSAMPIMAGE input_buf,
573 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
574EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_sse2
575 (JDIMENSION output_width, JSAMPIMAGE input_buf,
576 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
577EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_sse2
578 (JDIMENSION output_width, JSAMPIMAGE input_buf,
579 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
580EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_sse2
581 (JDIMENSION output_width, JSAMPIMAGE input_buf,
582 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
583
584EXTERN(void) jsimd_h2v1_merged_upsample_mips_dspr2
585 (JDIMENSION output_width, JSAMPIMAGE input_buf,
586 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
587EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mips_dspr2
588 (JDIMENSION output_width, JSAMPIMAGE input_buf,
589 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
590EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mips_dspr2
591 (JDIMENSION output_width, JSAMPIMAGE input_buf,
592 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
593EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mips_dspr2
594 (JDIMENSION output_width, JSAMPIMAGE input_buf,
595 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
596EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mips_dspr2
597 (JDIMENSION output_width, JSAMPIMAGE input_buf,
598 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
599EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mips_dspr2
600 (JDIMENSION output_width, JSAMPIMAGE input_buf,
601 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
602EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mips_dspr2
603 (JDIMENSION output_width, JSAMPIMAGE input_buf,
604 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRC86fbf352013-07-27 21:44:14 +0000605
DRCb844eaa2014-05-13 18:40:14 +0000606EXTERN(void) jsimd_h2v2_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000607 (JDIMENSION output_width, JSAMPIMAGE input_buf,
608 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000609EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000610 (JDIMENSION output_width, JSAMPIMAGE input_buf,
611 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000612EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000613 (JDIMENSION output_width, JSAMPIMAGE input_buf,
614 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000615EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000616 (JDIMENSION output_width, JSAMPIMAGE input_buf,
617 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000618EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000619 (JDIMENSION output_width, JSAMPIMAGE input_buf,
620 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000621EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000622 (JDIMENSION output_width, JSAMPIMAGE input_buf,
623 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000624EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000625 (JDIMENSION output_width, JSAMPIMAGE input_buf,
626 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000627
DRC86af36a2015-01-14 13:27:32 +0000628EXTERN(void) jsimd_h2v1_merged_upsample_altivec
629 (JDIMENSION output_width, JSAMPIMAGE input_buf,
630 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
631EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_altivec
632 (JDIMENSION output_width, JSAMPIMAGE input_buf,
633 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
634EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_altivec
635 (JDIMENSION output_width, JSAMPIMAGE input_buf,
636 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
637EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_altivec
638 (JDIMENSION output_width, JSAMPIMAGE input_buf,
639 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
640EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_altivec
641 (JDIMENSION output_width, JSAMPIMAGE input_buf,
642 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
643EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_altivec
644 (JDIMENSION output_width, JSAMPIMAGE input_buf,
645 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
646EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_altivec
647 (JDIMENSION output_width, JSAMPIMAGE input_buf,
648 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
649
650EXTERN(void) jsimd_h2v2_merged_upsample_altivec
651 (JDIMENSION output_width, JSAMPIMAGE input_buf,
652 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
653EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_altivec
654 (JDIMENSION output_width, JSAMPIMAGE input_buf,
655 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
656EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_altivec
657 (JDIMENSION output_width, JSAMPIMAGE input_buf,
658 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
659EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_altivec
660 (JDIMENSION output_width, JSAMPIMAGE input_buf,
661 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
662EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_altivec
663 (JDIMENSION output_width, JSAMPIMAGE input_buf,
664 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
665EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_altivec
666 (JDIMENSION output_width, JSAMPIMAGE input_buf,
667 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
668EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_altivec
669 (JDIMENSION output_width, JSAMPIMAGE input_buf,
670 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
671
DRCbc56b752014-05-16 10:43:44 +0000672/* Sample Conversion */
673EXTERN(void) jsimd_convsamp_mmx
DRCbd498032016-02-19 08:53:33 -0600674 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
DRC16962c12013-07-27 21:50:02 +0000675
DRCbc56b752014-05-16 10:43:44 +0000676EXTERN(void) jsimd_convsamp_sse2
DRCbd498032016-02-19 08:53:33 -0600677 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000678
DRCbc56b752014-05-16 10:43:44 +0000679EXTERN(void) jsimd_convsamp_neon
DRCbd498032016-02-19 08:53:33 -0600680 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000681
DRCbc56b752014-05-16 10:43:44 +0000682EXTERN(void) jsimd_convsamp_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600683 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
DRCb7400542011-08-10 23:31:13 +0000684
DRC577ecd92014-12-23 04:14:54 +0000685EXTERN(void) jsimd_convsamp_altivec
DRCbd498032016-02-19 08:53:33 -0600686 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
DRC577ecd92014-12-23 04:14:54 +0000687
DRCbc56b752014-05-16 10:43:44 +0000688/* Floating Point Sample Conversion */
689EXTERN(void) jsimd_convsamp_float_3dnow
DRCbd498032016-02-19 08:53:33 -0600690 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
DRCfff6c232013-10-12 21:39:20 +0000691
DRCbc56b752014-05-16 10:43:44 +0000692EXTERN(void) jsimd_convsamp_float_sse
DRCbd498032016-02-19 08:53:33 -0600693 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
Pierre Ossman65d03172009-03-09 13:28:10 +0000694
DRCbc56b752014-05-16 10:43:44 +0000695EXTERN(void) jsimd_convsamp_float_sse2
DRCbd498032016-02-19 08:53:33 -0600696 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
Pierre Ossman018fc422009-03-09 13:31:56 +0000697
DRCbc56b752014-05-16 10:43:44 +0000698EXTERN(void) jsimd_convsamp_float_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600699 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000700
DRCbc56b752014-05-16 10:43:44 +0000701/* Slow Integer Forward DCT */
DRCbd498032016-02-19 08:53:33 -0600702EXTERN(void) jsimd_fdct_islow_mmx (DCTELEM *data);
DRC3d727282013-10-09 18:39:44 +0000703
DRCbc56b752014-05-16 10:43:44 +0000704extern const int jconst_fdct_islow_sse2[];
DRCbd498032016-02-19 08:53:33 -0600705EXTERN(void) jsimd_fdct_islow_sse2 (DCTELEM *data);
DRCbc56b752014-05-16 10:43:44 +0000706
DRCbd498032016-02-19 08:53:33 -0600707EXTERN(void) jsimd_fdct_islow_neon (DCTELEM *data);
DRCec6941f2016-01-15 09:29:11 -0600708
DRCbd498032016-02-19 08:53:33 -0600709EXTERN(void) jsimd_fdct_islow_mips_dspr2 (DCTELEM *data);
DRCbc56b752014-05-16 10:43:44 +0000710
DRCbd498032016-02-19 08:53:33 -0600711EXTERN(void) jsimd_fdct_islow_altivec (DCTELEM *data);
DRCfb0c3942014-12-17 08:04:39 +0000712
DRCbc56b752014-05-16 10:43:44 +0000713/* Fast Integer Forward DCT */
DRCbd498032016-02-19 08:53:33 -0600714EXTERN(void) jsimd_fdct_ifast_mmx (DCTELEM *data);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000715
Pierre Ossmaneea72152009-03-09 13:34:17 +0000716extern const int jconst_fdct_ifast_sse2[];
DRCbd498032016-02-19 08:53:33 -0600717EXTERN(void) jsimd_fdct_ifast_sse2 (DCTELEM *data);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000718
DRCbd498032016-02-19 08:53:33 -0600719EXTERN(void) jsimd_fdct_ifast_neon (DCTELEM *data);
DRCb7400542011-08-10 23:31:13 +0000720
DRCbd498032016-02-19 08:53:33 -0600721EXTERN(void) jsimd_fdct_ifast_mips_dspr2 (DCTELEM *data);
DRCa6b7fbd2013-09-30 18:13:27 +0000722
DRCbd498032016-02-19 08:53:33 -0600723EXTERN(void) jsimd_fdct_ifast_altivec (DCTELEM *data);
DRCcd2d8e12014-09-05 06:33:42 +0000724
DRCbc56b752014-05-16 10:43:44 +0000725/* Floating Point Forward DCT */
DRCbd498032016-02-19 08:53:33 -0600726EXTERN(void) jsimd_fdct_float_3dnow (FAST_FLOAT *data);
Pierre Ossman65d03172009-03-09 13:28:10 +0000727
Pierre Ossman018fc422009-03-09 13:31:56 +0000728extern const int jconst_fdct_float_sse[];
DRCbd498032016-02-19 08:53:33 -0600729EXTERN(void) jsimd_fdct_float_sse (FAST_FLOAT *data);
Pierre Ossman018fc422009-03-09 13:31:56 +0000730
DRCbc56b752014-05-16 10:43:44 +0000731/* Quantization */
732EXTERN(void) jsimd_quantize_mmx
DRCbd498032016-02-19 08:53:33 -0600733 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000734
DRCbc56b752014-05-16 10:43:44 +0000735EXTERN(void) jsimd_quantize_sse2
DRCbd498032016-02-19 08:53:33 -0600736 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000737
DRCbc56b752014-05-16 10:43:44 +0000738EXTERN(void) jsimd_quantize_neon
DRCbd498032016-02-19 08:53:33 -0600739 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
DRC82bd5212011-08-17 21:00:59 +0000740
DRCbc56b752014-05-16 10:43:44 +0000741EXTERN(void) jsimd_quantize_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600742 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
DRCa6b7fbd2013-09-30 18:13:27 +0000743
DRC577ecd92014-12-23 04:14:54 +0000744EXTERN(void) jsimd_quantize_altivec
DRCbd498032016-02-19 08:53:33 -0600745 (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
DRC577ecd92014-12-23 04:14:54 +0000746
DRCbc56b752014-05-16 10:43:44 +0000747/* Floating Point Quantization */
748EXTERN(void) jsimd_quantize_float_3dnow
DRCbd498032016-02-19 08:53:33 -0600749 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
Pierre Ossman65d03172009-03-09 13:28:10 +0000750
DRCbc56b752014-05-16 10:43:44 +0000751EXTERN(void) jsimd_quantize_float_sse
DRCbd498032016-02-19 08:53:33 -0600752 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
Pierre Ossman018fc422009-03-09 13:31:56 +0000753
DRCbc56b752014-05-16 10:43:44 +0000754EXTERN(void) jsimd_quantize_float_sse2
DRCbd498032016-02-19 08:53:33 -0600755 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000756
DRCbc56b752014-05-16 10:43:44 +0000757EXTERN(void) jsimd_quantize_float_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600758 (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
DRC3d727282013-10-09 18:39:44 +0000759
DRCbc56b752014-05-16 10:43:44 +0000760/* Scaled Inverse DCT */
761EXTERN(void) jsimd_idct_2x2_mmx
DRCbd498032016-02-19 08:53:33 -0600762 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000763 JDIMENSION output_col);
764EXTERN(void) jsimd_idct_4x4_mmx
DRCbd498032016-02-19 08:53:33 -0600765 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000766 JDIMENSION output_col);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000767
Pierre Ossmaneea72152009-03-09 13:34:17 +0000768extern const int jconst_idct_red_sse2[];
DRCbc56b752014-05-16 10:43:44 +0000769EXTERN(void) jsimd_idct_2x2_sse2
DRCbd498032016-02-19 08:53:33 -0600770 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000771 JDIMENSION output_col);
772EXTERN(void) jsimd_idct_4x4_sse2
DRCbd498032016-02-19 08:53:33 -0600773 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000774 JDIMENSION output_col);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000775
DRCbc56b752014-05-16 10:43:44 +0000776EXTERN(void) jsimd_idct_2x2_neon
DRCbd498032016-02-19 08:53:33 -0600777 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000778 JDIMENSION output_col);
779EXTERN(void) jsimd_idct_4x4_neon
DRCbd498032016-02-19 08:53:33 -0600780 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000781 JDIMENSION output_col);
DRC8c60d222011-06-17 21:12:58 +0000782
DRCbc56b752014-05-16 10:43:44 +0000783EXTERN(void) jsimd_idct_2x2_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600784 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000785 JDIMENSION output_col);
786EXTERN(void) jsimd_idct_4x4_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600787 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
788 JDIMENSION output_col, int *workspace);
DRCbc56b752014-05-16 10:43:44 +0000789EXTERN(void) jsimd_idct_6x6_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600790 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000791 JDIMENSION output_col);
792EXTERN(void) jsimd_idct_12x12_pass1_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600793 (JCOEFPTR coef_block, void *dct_table, int *workspace);
DRCbc56b752014-05-16 10:43:44 +0000794EXTERN(void) jsimd_idct_12x12_pass2_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600795 (int *workspace, int *output);
DRCe5005912013-09-27 17:51:08 +0000796
DRCbc56b752014-05-16 10:43:44 +0000797/* Slow Integer Inverse DCT */
798EXTERN(void) jsimd_idct_islow_mmx
DRCbd498032016-02-19 08:53:33 -0600799 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000800 JDIMENSION output_col);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000801
Pierre Ossmaneea72152009-03-09 13:34:17 +0000802extern const int jconst_idct_islow_sse2[];
DRCbc56b752014-05-16 10:43:44 +0000803EXTERN(void) jsimd_idct_islow_sse2
DRCbd498032016-02-19 08:53:33 -0600804 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000805 JDIMENSION output_col);
806
807EXTERN(void) jsimd_idct_islow_neon
DRCbd498032016-02-19 08:53:33 -0600808 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000809 JDIMENSION output_col);
810
811EXTERN(void) jsimd_idct_islow_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600812 (void *dct_table, JCOEFPTR coef_block, int *output_buf,
813 JSAMPLE *output_col);
DRCbc56b752014-05-16 10:43:44 +0000814
DRC06911622014-12-20 01:17:39 +0000815EXTERN(void) jsimd_idct_islow_altivec
DRCbd498032016-02-19 08:53:33 -0600816 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRC06911622014-12-20 01:17:39 +0000817 JDIMENSION output_col);
818
DRCbc56b752014-05-16 10:43:44 +0000819/* Fast Integer Inverse DCT */
820EXTERN(void) jsimd_idct_ifast_mmx
DRCbd498032016-02-19 08:53:33 -0600821 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000822 JDIMENSION output_col);
823
Pierre Ossmaneea72152009-03-09 13:34:17 +0000824extern const int jconst_idct_ifast_sse2[];
DRCbc56b752014-05-16 10:43:44 +0000825EXTERN(void) jsimd_idct_ifast_sse2
DRCbd498032016-02-19 08:53:33 -0600826 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000827 JDIMENSION output_col);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000828
DRCbc56b752014-05-16 10:43:44 +0000829EXTERN(void) jsimd_idct_ifast_neon
DRCbd498032016-02-19 08:53:33 -0600830 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000831 JDIMENSION output_col);
DRC321e0682011-05-03 08:47:43 +0000832
DRCbc56b752014-05-16 10:43:44 +0000833EXTERN(void) jsimd_idct_ifast_cols_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600834 (JCOEF *inptr, IFAST_MULT_TYPE *quantptr, DCTELEM *wsptr,
835 const int *idct_coefs);
DRCbc56b752014-05-16 10:43:44 +0000836EXTERN(void) jsimd_idct_ifast_rows_mips_dspr2
DRCbd498032016-02-19 08:53:33 -0600837 (DCTELEM *wsptr, JSAMPARRAY output_buf, JDIMENSION output_col,
838 const int *idct_coefs);
DRCd3131c12013-10-08 02:18:59 +0000839
DRC6cb7f402014-12-18 10:12:29 +0000840EXTERN(void) jsimd_idct_ifast_altivec
DRCbd498032016-02-19 08:53:33 -0600841 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRC6cb7f402014-12-18 10:12:29 +0000842 JDIMENSION output_col);
843
DRCbc56b752014-05-16 10:43:44 +0000844/* Floating Point Inverse DCT */
845EXTERN(void) jsimd_idct_float_3dnow
DRCbd498032016-02-19 08:53:33 -0600846 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000847 JDIMENSION output_col);
Pierre Ossman65d03172009-03-09 13:28:10 +0000848
Pierre Ossman018fc422009-03-09 13:31:56 +0000849extern const int jconst_idct_float_sse[];
DRCbc56b752014-05-16 10:43:44 +0000850EXTERN(void) jsimd_idct_float_sse
DRCbd498032016-02-19 08:53:33 -0600851 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000852 JDIMENSION output_col);
Pierre Ossman018fc422009-03-09 13:31:56 +0000853
Pierre Ossmaneea72152009-03-09 13:34:17 +0000854extern const int jconst_idct_float_sse2[];
DRCbc56b752014-05-16 10:43:44 +0000855EXTERN(void) jsimd_idct_float_sse2
DRCbd498032016-02-19 08:53:33 -0600856 (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
DRCbc56b752014-05-16 10:43:44 +0000857 JDIMENSION output_col);
DRCf3a86842016-01-07 00:19:43 -0600858
859/* Huffman coding */
860extern const int jconst_huff_encode_one_block[];
861EXTERN(JOCTET*) jsimd_huff_encode_one_block_sse2
DRCbd498032016-02-19 08:53:33 -0600862 (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
DRCf3a86842016-01-07 00:19:43 -0600863 c_derived_tbl *dctbl, c_derived_tbl *actbl);
DRC499c4702016-01-13 03:13:20 -0600864
865EXTERN(JOCTET*) jsimd_huff_encode_one_block_neon
DRCbd498032016-02-19 08:53:33 -0600866 (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
DRC499c4702016-01-13 03:13:20 -0600867 c_derived_tbl *dctbl, c_derived_tbl *actbl);
DRC8632f1b2016-02-09 00:38:58 -0600868
869EXTERN(JOCTET*) jsimd_huff_encode_one_block_neon_slowtbl
DRCbd498032016-02-19 08:53:33 -0600870 (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
DRC8632f1b2016-02-09 00:38:58 -0600871 c_derived_tbl *dctbl, c_derived_tbl *actbl);