blob: 776edbbaf2f841c8040f5d807c40a06eed70ed7e [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
DRC392e0482011-02-18 20:43:04 +00005 * Copyright 2011 D. R. Commander
DRC34347862014-05-06 09:53:21 +00006 * Copyright (C) 2013-2014, MIPS Technologies, Inc., California
DRC49eaa752013-09-27 17:39:57 +00007 *
Pierre Ossman2ae181c2009-03-09 13:21:27 +00008 * Based on the x86 SIMD extension for IJG JPEG library,
9 * Copyright (C) 1999-2006, MIYASAKA Masaru.
DRCaf1ca9b2011-02-02 05:42:37 +000010 * For conditions of distribution and use, see copyright notice in jsimdext.inc
Pierre Ossman2ae181c2009-03-09 13:21:27 +000011 *
12 */
13
14/* Bitmask for supported acceleration methods */
15
DRC321e0682011-05-03 08:47:43 +000016#define JSIMD_NONE 0x00
17#define JSIMD_MMX 0x01
18#define JSIMD_3DNOW 0x02
19#define JSIMD_SSE 0x04
20#define JSIMD_SSE2 0x08
21#define JSIMD_ARM_NEON 0x10
DRC0be9fa52013-07-24 21:50:20 +000022#define JSIMD_MIPS_DSPR2 0x20
Pierre Ossman2ae181c2009-03-09 13:21:27 +000023
Pierre Ossman2ae181c2009-03-09 13:21:27 +000024/* SIMD Ext: retrieve SIMD/CPU information */
DRCbc56b752014-05-16 10:43:44 +000025EXTERN(unsigned int) jpeg_simd_cpu_support (void);
Pierre Ossman2ae181c2009-03-09 13:21:27 +000026
DRCbc56b752014-05-16 10:43:44 +000027/* RGB & extended RGB --> YCC Colorspace Conversion */
Pierre Ossman5eb84ff2009-03-09 13:25:30 +000028EXTERN(void) jsimd_rgb_ycc_convert_mmx
DRCbc56b752014-05-16 10:43:44 +000029 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
30 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000031EXTERN(void) jsimd_extrgb_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_extrgbx_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_extbgr_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_extbgrx_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_extxbgr_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_extxrgb_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);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +000049
Pierre Ossmaneea72152009-03-09 13:34:17 +000050extern const int jconst_rgb_ycc_convert_sse2[];
51EXTERN(void) jsimd_rgb_ycc_convert_sse2
DRCbc56b752014-05-16 10:43:44 +000052 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
53 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +000054EXTERN(void) jsimd_extrgb_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_extrgbx_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_extbgr_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_extbgrx_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_extxbgr_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_extxrgb_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);
72
73EXTERN(void) jsimd_rgb_ycc_convert_neon
74 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
75 JDIMENSION output_row, int num_rows);
76EXTERN(void) jsimd_extrgb_ycc_convert_neon
77 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
78 JDIMENSION output_row, int num_rows);
79EXTERN(void) jsimd_extrgbx_ycc_convert_neon
80 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
81 JDIMENSION output_row, int num_rows);
82EXTERN(void) jsimd_extbgr_ycc_convert_neon
83 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
84 JDIMENSION output_row, int num_rows);
85EXTERN(void) jsimd_extbgrx_ycc_convert_neon
86 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
87 JDIMENSION output_row, int num_rows);
88EXTERN(void) jsimd_extxbgr_ycc_convert_neon
89 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
90 JDIMENSION output_row, int num_rows);
91EXTERN(void) jsimd_extxrgb_ycc_convert_neon
92 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
93 JDIMENSION output_row, int num_rows);
94
95EXTERN(void) jsimd_rgb_ycc_convert_mips_dspr2
96 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
97 JDIMENSION output_row, int num_rows);
98EXTERN(void) jsimd_extrgb_ycc_convert_mips_dspr2
99 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
100 JDIMENSION output_row, int num_rows);
101EXTERN(void) jsimd_extrgbx_ycc_convert_mips_dspr2
102 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
103 JDIMENSION output_row, int num_rows);
104EXTERN(void) jsimd_extbgr_ycc_convert_mips_dspr2
105 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
106 JDIMENSION output_row, int num_rows);
107EXTERN(void) jsimd_extbgrx_ycc_convert_mips_dspr2
108 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
109 JDIMENSION output_row, int num_rows);
110EXTERN(void) jsimd_extxbgr_ycc_convert_mips_dspr2
111 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
112 JDIMENSION output_row, int num_rows);
113EXTERN(void) jsimd_extxrgb_ycc_convert_mips_dspr2
114 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
115 JDIMENSION output_row, int num_rows);
116
117/* RGB & extended RGB --> Grayscale Colorspace Conversion */
118EXTERN(void) jsimd_rgb_gray_convert_mmx
119 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
120 JDIMENSION output_row, int num_rows);
121EXTERN(void) jsimd_extrgb_gray_convert_mmx
122 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
123 JDIMENSION output_row, int num_rows);
124EXTERN(void) jsimd_extrgbx_gray_convert_mmx
125 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
126 JDIMENSION output_row, int num_rows);
127EXTERN(void) jsimd_extbgr_gray_convert_mmx
128 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
129 JDIMENSION output_row, int num_rows);
130EXTERN(void) jsimd_extbgrx_gray_convert_mmx
131 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
132 JDIMENSION output_row, int num_rows);
133EXTERN(void) jsimd_extxbgr_gray_convert_mmx
134 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
135 JDIMENSION output_row, int num_rows);
136EXTERN(void) jsimd_extxrgb_gray_convert_mmx
137 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
138 JDIMENSION output_row, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000139
DRCc8666332011-02-18 11:23:45 +0000140extern const int jconst_rgb_gray_convert_sse2[];
141EXTERN(void) jsimd_rgb_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000142 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
143 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000144EXTERN(void) jsimd_extrgb_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000145 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
146 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000147EXTERN(void) jsimd_extrgbx_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000148 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
149 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000150EXTERN(void) jsimd_extbgr_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000151 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
152 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000153EXTERN(void) jsimd_extbgrx_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000154 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
155 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000156EXTERN(void) jsimd_extxbgr_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000157 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
158 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000159EXTERN(void) jsimd_extxrgb_gray_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000160 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
161 JDIMENSION output_row, int num_rows);
162
163EXTERN(void) jsimd_rgb_gray_convert_mips_dspr2
164 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
165 JDIMENSION output_row, int num_rows);
166EXTERN(void) jsimd_extrgb_gray_convert_mips_dspr2
167 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
168 JDIMENSION output_row, int num_rows);
169EXTERN(void) jsimd_extrgbx_gray_convert_mips_dspr2
170 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
171 JDIMENSION output_row, int num_rows);
172EXTERN(void) jsimd_extbgr_gray_convert_mips_dspr2
173 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
174 JDIMENSION output_row, int num_rows);
175EXTERN(void) jsimd_extbgrx_gray_convert_mips_dspr2
176 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
177 JDIMENSION output_row, int num_rows);
178EXTERN(void) jsimd_extxbgr_gray_convert_mips_dspr2
179 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
180 JDIMENSION output_row, int num_rows);
181EXTERN(void) jsimd_extxrgb_gray_convert_mips_dspr2
182 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
183 JDIMENSION output_row, int num_rows);
184
185/* YCC --> RGB & extended RGB Colorspace Conversion */
186EXTERN(void) jsimd_ycc_rgb_convert_mmx
187 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
188 JSAMPARRAY output_buf, int num_rows);
189EXTERN(void) jsimd_ycc_extrgb_convert_mmx
190 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
191 JSAMPARRAY output_buf, int num_rows);
192EXTERN(void) jsimd_ycc_extrgbx_convert_mmx
193 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
194 JSAMPARRAY output_buf, int num_rows);
195EXTERN(void) jsimd_ycc_extbgr_convert_mmx
196 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
197 JSAMPARRAY output_buf, int num_rows);
198EXTERN(void) jsimd_ycc_extbgrx_convert_mmx
199 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
200 JSAMPARRAY output_buf, int num_rows);
201EXTERN(void) jsimd_ycc_extxbgr_convert_mmx
202 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
203 JSAMPARRAY output_buf, int num_rows);
204EXTERN(void) jsimd_ycc_extxrgb_convert_mmx
205 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
206 JSAMPARRAY output_buf, int num_rows);
DRCc8666332011-02-18 11:23:45 +0000207
Pierre Ossmaneea72152009-03-09 13:34:17 +0000208extern const int jconst_ycc_rgb_convert_sse2[];
209EXTERN(void) jsimd_ycc_rgb_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000210 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
211 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000212EXTERN(void) jsimd_ycc_extrgb_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000213 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
214 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000215EXTERN(void) jsimd_ycc_extrgbx_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000216 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
217 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000218EXTERN(void) jsimd_ycc_extbgr_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000219 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
220 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000221EXTERN(void) jsimd_ycc_extbgrx_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000222 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
223 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000224EXTERN(void) jsimd_ycc_extxbgr_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000225 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
226 JSAMPARRAY output_buf, int num_rows);
DRCf25c0712009-04-03 12:00:51 +0000227EXTERN(void) jsimd_ycc_extxrgb_convert_sse2
DRCbc56b752014-05-16 10:43:44 +0000228 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
229 JSAMPARRAY output_buf, int num_rows);
DRC7a9376c2011-08-12 19:27:20 +0000230
DRC321e0682011-05-03 08:47:43 +0000231EXTERN(void) jsimd_ycc_rgb_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000232 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
233 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000234EXTERN(void) jsimd_ycc_extrgb_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000235 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
236 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000237EXTERN(void) jsimd_ycc_extrgbx_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000238 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
239 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000240EXTERN(void) jsimd_ycc_extbgr_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000241 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
242 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000243EXTERN(void) jsimd_ycc_extbgrx_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000244 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
245 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000246EXTERN(void) jsimd_ycc_extxbgr_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000247 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
248 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000249EXTERN(void) jsimd_ycc_extxrgb_convert_neon
DRCbc56b752014-05-16 10:43:44 +0000250 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
251 JSAMPARRAY output_buf, int num_rows);
DRC321e0682011-05-03 08:47:43 +0000252
DRCbc56b752014-05-16 10:43:44 +0000253EXTERN(void) jsimd_ycc_rgb_convert_mips_dspr2
254 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
255 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000256EXTERN(void) jsimd_ycc_extrgb_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000257 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
258 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000259EXTERN(void) jsimd_ycc_extrgbx_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000260 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
261 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000262EXTERN(void) jsimd_ycc_extbgr_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000263 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
264 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000265EXTERN(void) jsimd_ycc_extbgrx_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000266 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
267 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000268EXTERN(void) jsimd_ycc_extxbgr_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000269 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
270 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000271EXTERN(void) jsimd_ycc_extxrgb_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000272 (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
273 JSAMPARRAY output_buf, int num_rows);
DRC0be9fa52013-07-24 21:50:20 +0000274
DRCbc56b752014-05-16 10:43:44 +0000275/* NULL Colorspace Conversion */
DRC1b3fd7e2014-05-15 18:26:01 +0000276EXTERN(void) jsimd_c_null_convert_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000277 (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
278 JDIMENSION output_row, int num_rows, int num_components);
DRC1b3fd7e2014-05-15 18:26:01 +0000279
DRCbc56b752014-05-16 10:43:44 +0000280/* h2v1 Downsampling */
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000281EXTERN(void) jsimd_h2v1_downsample_mmx
DRCbc56b752014-05-16 10:43:44 +0000282 (JDIMENSION image_width, int max_v_samp_factor,
283 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
284 JSAMPARRAY input_data, JSAMPARRAY output_data);
285
286EXTERN(void) jsimd_h2v1_downsample_sse2
287 (JDIMENSION image_width, int max_v_samp_factor,
288 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
289 JSAMPARRAY input_data, JSAMPARRAY output_data);
290
291EXTERN(void) jsimd_h2v1_downsample_mips_dspr2
292 (JDIMENSION image_width, int max_v_samp_factor,
293 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
294 JSAMPARRAY input_data, JSAMPARRAY output_data);
295
296/* h2v2 Downsampling */
297EXTERN(void) jsimd_h2v2_downsample_mmx
298 (JDIMENSION image_width, int max_v_samp_factor,
299 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
300 JSAMPARRAY input_data, JSAMPARRAY output_data);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000301
Pierre Ossmaneea72152009-03-09 13:34:17 +0000302EXTERN(void) jsimd_h2v2_downsample_sse2
DRCbc56b752014-05-16 10:43:44 +0000303 (JDIMENSION image_width, int max_v_samp_factor,
304 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
305 JSAMPARRAY input_data, JSAMPARRAY output_data);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000306
DRC6f2d3c22013-07-27 21:48:18 +0000307EXTERN(void) jsimd_h2v2_downsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000308 (JDIMENSION image_width, int max_v_samp_factor,
309 JDIMENSION v_samp_factor, JDIMENSION width_blocks,
310 JSAMPARRAY input_data, JSAMPARRAY output_data);
311
312/* h2v2 Smooth Downsampling */
DRC6a61c1e2014-05-14 15:00:10 +0000313EXTERN(void) jsimd_h2v2_smooth_downsample_mips_dspr2
DRCc728cfd2014-05-18 19:36:05 +0000314 (JSAMPARRAY input_data, JSAMPARRAY output_data,
315 JDIMENSION v_samp_factor, int max_v_samp_factor,
316 int smoothing_factor, JDIMENSION width_blocks,
317 JDIMENSION image_width);
318
DRC6f2d3c22013-07-27 21:48:18 +0000319
DRCbc56b752014-05-16 10:43:44 +0000320/* Upsampling */
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000321EXTERN(void) jsimd_h2v1_upsample_mmx
DRCbc56b752014-05-16 10:43:44 +0000322 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
323 JSAMPARRAY * output_data_ptr);
324EXTERN(void) jsimd_h2v2_upsample_mmx
325 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
326 JSAMPARRAY * output_data_ptr);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000327
Pierre Ossmaneea72152009-03-09 13:34:17 +0000328EXTERN(void) jsimd_h2v1_upsample_sse2
DRCbc56b752014-05-16 10:43:44 +0000329 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
330 JSAMPARRAY * output_data_ptr);
331EXTERN(void) jsimd_h2v2_upsample_sse2
332 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
333 JSAMPARRAY * output_data_ptr);
334
335EXTERN(void) jsimd_h2v1_upsample_mips_dspr2
336 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
337 JSAMPARRAY * output_data_ptr);
338EXTERN(void) jsimd_h2v2_upsample_mips_dspr2
339 (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
340 JSAMPARRAY * output_data_ptr);
341
342/* Fancy Upsampling */
343EXTERN(void) jsimd_h2v1_fancy_upsample_mmx
344 (int max_v_samp_factor, JDIMENSION downsampled_width,
345 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
346EXTERN(void) jsimd_h2v2_fancy_upsample_mmx
347 (int max_v_samp_factor, JDIMENSION downsampled_width,
348 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000349
350extern const int jconst_fancy_upsample_sse2[];
Pierre Ossmaneea72152009-03-09 13:34:17 +0000351EXTERN(void) jsimd_h2v1_fancy_upsample_sse2
DRCbc56b752014-05-16 10:43:44 +0000352 (int max_v_samp_factor, JDIMENSION downsampled_width,
353 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
354EXTERN(void) jsimd_h2v2_fancy_upsample_sse2
355 (int max_v_samp_factor, JDIMENSION downsampled_width,
356 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000357
DRC316617f2012-06-13 05:17:03 +0000358EXTERN(void) jsimd_h2v1_fancy_upsample_neon
DRCbc56b752014-05-16 10:43:44 +0000359 (int max_v_samp_factor, JDIMENSION downsampled_width,
360 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
DRC316617f2012-06-13 05:17:03 +0000361
DRC86fbf352013-07-27 21:44:14 +0000362EXTERN(void) jsimd_h2v1_fancy_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000363 (int max_v_samp_factor, JDIMENSION downsampled_width,
364 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
DRC86fbf352013-07-27 21:44:14 +0000365EXTERN(void) jsimd_h2v2_fancy_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000366 (int max_v_samp_factor, JDIMENSION downsampled_width,
367 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
368
369/* Merged Upsampling */
370EXTERN(void) jsimd_h2v1_merged_upsample_mmx
371 (JDIMENSION output_width, JSAMPIMAGE input_buf,
372 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
373EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mmx
374 (JDIMENSION output_width, JSAMPIMAGE input_buf,
375 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
376EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mmx
377 (JDIMENSION output_width, JSAMPIMAGE input_buf,
378 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
379EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mmx
380 (JDIMENSION output_width, JSAMPIMAGE input_buf,
381 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
382EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mmx
383 (JDIMENSION output_width, JSAMPIMAGE input_buf,
384 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
385EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mmx
386 (JDIMENSION output_width, JSAMPIMAGE input_buf,
387 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
388EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mmx
389 (JDIMENSION output_width, JSAMPIMAGE input_buf,
390 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
391
392EXTERN(void) jsimd_h2v2_merged_upsample_mmx
393 (JDIMENSION output_width, JSAMPIMAGE input_buf,
394 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
395EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mmx
396 (JDIMENSION output_width, JSAMPIMAGE input_buf,
397 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
398EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mmx
399 (JDIMENSION output_width, JSAMPIMAGE input_buf,
400 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
401EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mmx
402 (JDIMENSION output_width, JSAMPIMAGE input_buf,
403 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
404EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mmx
405 (JDIMENSION output_width, JSAMPIMAGE input_buf,
406 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
407EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mmx
408 (JDIMENSION output_width, JSAMPIMAGE input_buf,
409 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
410EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mmx
411 (JDIMENSION output_width, JSAMPIMAGE input_buf,
412 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
413
414extern const int jconst_merged_upsample_sse2[];
415EXTERN(void) jsimd_h2v1_merged_upsample_sse2
416 (JDIMENSION output_width, JSAMPIMAGE input_buf,
417 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
418EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_sse2
419 (JDIMENSION output_width, JSAMPIMAGE input_buf,
420 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
421EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_sse2
422 (JDIMENSION output_width, JSAMPIMAGE input_buf,
423 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
424EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_sse2
425 (JDIMENSION output_width, JSAMPIMAGE input_buf,
426 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
427EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_sse2
428 (JDIMENSION output_width, JSAMPIMAGE input_buf,
429 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
430EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_sse2
431 (JDIMENSION output_width, JSAMPIMAGE input_buf,
432 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
433EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_sse2
434 (JDIMENSION output_width, JSAMPIMAGE input_buf,
435 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
436
437EXTERN(void) jsimd_h2v2_merged_upsample_sse2
438 (JDIMENSION output_width, JSAMPIMAGE input_buf,
439 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
440EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_sse2
441 (JDIMENSION output_width, JSAMPIMAGE input_buf,
442 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
443EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_sse2
444 (JDIMENSION output_width, JSAMPIMAGE input_buf,
445 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
446EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_sse2
447 (JDIMENSION output_width, JSAMPIMAGE input_buf,
448 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
449EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_sse2
450 (JDIMENSION output_width, JSAMPIMAGE input_buf,
451 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
452EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_sse2
453 (JDIMENSION output_width, JSAMPIMAGE input_buf,
454 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
455EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_sse2
456 (JDIMENSION output_width, JSAMPIMAGE input_buf,
457 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
458
459EXTERN(void) jsimd_h2v1_merged_upsample_mips_dspr2
460 (JDIMENSION output_width, JSAMPIMAGE input_buf,
461 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
462EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mips_dspr2
463 (JDIMENSION output_width, JSAMPIMAGE input_buf,
464 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
465EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mips_dspr2
466 (JDIMENSION output_width, JSAMPIMAGE input_buf,
467 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
468EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mips_dspr2
469 (JDIMENSION output_width, JSAMPIMAGE input_buf,
470 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
471EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mips_dspr2
472 (JDIMENSION output_width, JSAMPIMAGE input_buf,
473 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
474EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mips_dspr2
475 (JDIMENSION output_width, JSAMPIMAGE input_buf,
476 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
477EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mips_dspr2
478 (JDIMENSION output_width, JSAMPIMAGE input_buf,
479 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRC86fbf352013-07-27 21:44:14 +0000480
DRCb844eaa2014-05-13 18:40:14 +0000481EXTERN(void) jsimd_h2v2_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000482 (JDIMENSION output_width, JSAMPIMAGE input_buf,
483 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000484EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000485 (JDIMENSION output_width, JSAMPIMAGE input_buf,
486 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000487EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000488 (JDIMENSION output_width, JSAMPIMAGE input_buf,
489 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000490EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000491 (JDIMENSION output_width, JSAMPIMAGE input_buf,
492 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000493EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000494 (JDIMENSION output_width, JSAMPIMAGE input_buf,
495 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000496EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000497 (JDIMENSION output_width, JSAMPIMAGE input_buf,
498 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000499EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mips_dspr2
DRCbc56b752014-05-16 10:43:44 +0000500 (JDIMENSION output_width, JSAMPIMAGE input_buf,
501 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
DRCb844eaa2014-05-13 18:40:14 +0000502
DRCbc56b752014-05-16 10:43:44 +0000503/* Sample Conversion */
504EXTERN(void) jsimd_convsamp_mmx
505 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
DRC16962c12013-07-27 21:50:02 +0000506
DRCbc56b752014-05-16 10:43:44 +0000507EXTERN(void) jsimd_convsamp_sse2
508 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000509
DRCbc56b752014-05-16 10:43:44 +0000510EXTERN(void) jsimd_convsamp_neon
511 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000512
DRCbc56b752014-05-16 10:43:44 +0000513EXTERN(void) jsimd_convsamp_mips_dspr2
514 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
DRCb7400542011-08-10 23:31:13 +0000515
DRCbc56b752014-05-16 10:43:44 +0000516/* Floating Point Sample Conversion */
517EXTERN(void) jsimd_convsamp_float_3dnow
518 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
DRCfff6c232013-10-12 21:39:20 +0000519
DRCbc56b752014-05-16 10:43:44 +0000520EXTERN(void) jsimd_convsamp_float_sse
521 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
Pierre Ossman65d03172009-03-09 13:28:10 +0000522
DRCbc56b752014-05-16 10:43:44 +0000523EXTERN(void) jsimd_convsamp_float_sse2
524 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
Pierre Ossman018fc422009-03-09 13:31:56 +0000525
DRCbc56b752014-05-16 10:43:44 +0000526EXTERN(void) jsimd_convsamp_float_mips_dspr2
527 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000528
DRCbc56b752014-05-16 10:43:44 +0000529/* Slow Integer Forward DCT */
530EXTERN(void) jsimd_fdct_islow_mmx (DCTELEM * data);
DRC3d727282013-10-09 18:39:44 +0000531
DRCbc56b752014-05-16 10:43:44 +0000532extern const int jconst_fdct_islow_sse2[];
533EXTERN(void) jsimd_fdct_islow_sse2 (DCTELEM * data);
534
535EXTERN(void) jsimd_fdct_islow_mips_dspr2 (DCTELEM * data);
536
537/* Fast Integer Forward DCT */
538EXTERN(void) jsimd_fdct_ifast_mmx (DCTELEM * data);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000539
Pierre Ossmaneea72152009-03-09 13:34:17 +0000540extern const int jconst_fdct_ifast_sse2[];
DRCbc56b752014-05-16 10:43:44 +0000541EXTERN(void) jsimd_fdct_ifast_sse2 (DCTELEM * data);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000542
DRCbc56b752014-05-16 10:43:44 +0000543EXTERN(void) jsimd_fdct_ifast_neon (DCTELEM * data);
DRCb7400542011-08-10 23:31:13 +0000544
DRCbc56b752014-05-16 10:43:44 +0000545EXTERN(void) jsimd_fdct_ifast_mips_dspr2 (DCTELEM * data);
DRCa6b7fbd2013-09-30 18:13:27 +0000546
DRCbc56b752014-05-16 10:43:44 +0000547/* Floating Point Forward DCT */
548EXTERN(void) jsimd_fdct_float_3dnow (FAST_FLOAT * data);
Pierre Ossman65d03172009-03-09 13:28:10 +0000549
Pierre Ossman018fc422009-03-09 13:31:56 +0000550extern const int jconst_fdct_float_sse[];
DRCbc56b752014-05-16 10:43:44 +0000551EXTERN(void) jsimd_fdct_float_sse (FAST_FLOAT * data);
Pierre Ossman018fc422009-03-09 13:31:56 +0000552
DRCbc56b752014-05-16 10:43:44 +0000553/* Quantization */
554EXTERN(void) jsimd_quantize_mmx
555 (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000556
DRCbc56b752014-05-16 10:43:44 +0000557EXTERN(void) jsimd_quantize_sse2
558 (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000559
DRCbc56b752014-05-16 10:43:44 +0000560EXTERN(void) jsimd_quantize_neon
561 (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
DRC82bd5212011-08-17 21:00:59 +0000562
DRCbc56b752014-05-16 10:43:44 +0000563EXTERN(void) jsimd_quantize_mips_dspr2
564 (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
DRCa6b7fbd2013-09-30 18:13:27 +0000565
DRCbc56b752014-05-16 10:43:44 +0000566/* Floating Point Quantization */
567EXTERN(void) jsimd_quantize_float_3dnow
568 (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
Pierre Ossman65d03172009-03-09 13:28:10 +0000569
DRCbc56b752014-05-16 10:43:44 +0000570EXTERN(void) jsimd_quantize_float_sse
571 (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
Pierre Ossman018fc422009-03-09 13:31:56 +0000572
DRCbc56b752014-05-16 10:43:44 +0000573EXTERN(void) jsimd_quantize_float_sse2
574 (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000575
DRCbc56b752014-05-16 10:43:44 +0000576EXTERN(void) jsimd_quantize_float_mips_dspr2
577 (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
DRC3d727282013-10-09 18:39:44 +0000578
DRCbc56b752014-05-16 10:43:44 +0000579/* Scaled Inverse DCT */
580EXTERN(void) jsimd_idct_2x2_mmx
581 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
582 JDIMENSION output_col);
583EXTERN(void) jsimd_idct_4x4_mmx
584 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
585 JDIMENSION output_col);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000586
Pierre Ossmaneea72152009-03-09 13:34:17 +0000587extern const int jconst_idct_red_sse2[];
DRCbc56b752014-05-16 10:43:44 +0000588EXTERN(void) jsimd_idct_2x2_sse2
589 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
590 JDIMENSION output_col);
591EXTERN(void) jsimd_idct_4x4_sse2
592 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
593 JDIMENSION output_col);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000594
DRCbc56b752014-05-16 10:43:44 +0000595EXTERN(void) jsimd_idct_2x2_neon
596 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
597 JDIMENSION output_col);
598EXTERN(void) jsimd_idct_4x4_neon
599 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
600 JDIMENSION output_col);
DRC8c60d222011-06-17 21:12:58 +0000601
DRCbc56b752014-05-16 10:43:44 +0000602EXTERN(void) jsimd_idct_2x2_mips_dspr2
603 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
604 JDIMENSION output_col);
605EXTERN(void) jsimd_idct_4x4_mips_dspr2
606 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
607 JDIMENSION output_col, int * workspace);
608EXTERN(void) jsimd_idct_6x6_mips_dspr2
609 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
610 JDIMENSION output_col);
611EXTERN(void) jsimd_idct_12x12_pass1_mips_dspr2
612 (JCOEFPTR coef_block, void * dct_table, int * workspace);
613EXTERN(void) jsimd_idct_12x12_pass2_mips_dspr2
614 (int * workspace, int * output);
DRCe5005912013-09-27 17:51:08 +0000615
DRCbc56b752014-05-16 10:43:44 +0000616/* Slow Integer Inverse DCT */
617EXTERN(void) jsimd_idct_islow_mmx
618 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
619 JDIMENSION output_col);
Pierre Ossman5eb84ff2009-03-09 13:25:30 +0000620
Pierre Ossmaneea72152009-03-09 13:34:17 +0000621extern const int jconst_idct_islow_sse2[];
DRCbc56b752014-05-16 10:43:44 +0000622EXTERN(void) jsimd_idct_islow_sse2
623 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
624 JDIMENSION output_col);
625
626EXTERN(void) jsimd_idct_islow_neon
627 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
628 JDIMENSION output_col);
629
630EXTERN(void) jsimd_idct_islow_mips_dspr2
DRCc728cfd2014-05-18 19:36:05 +0000631 (void * dct_table, JCOEFPTR coef_block, int * output_buf,
632 JSAMPLE * output_col);
DRCbc56b752014-05-16 10:43:44 +0000633
634/* Fast Integer Inverse DCT */
635EXTERN(void) jsimd_idct_ifast_mmx
636 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
637 JDIMENSION output_col);
638
Pierre Ossmaneea72152009-03-09 13:34:17 +0000639extern const int jconst_idct_ifast_sse2[];
DRCbc56b752014-05-16 10:43:44 +0000640EXTERN(void) jsimd_idct_ifast_sse2
641 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
642 JDIMENSION output_col);
Pierre Ossmaneea72152009-03-09 13:34:17 +0000643
DRCbc56b752014-05-16 10:43:44 +0000644EXTERN(void) jsimd_idct_ifast_neon
645 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
646 JDIMENSION output_col);
DRC321e0682011-05-03 08:47:43 +0000647
DRCbc56b752014-05-16 10:43:44 +0000648EXTERN(void) jsimd_idct_ifast_cols_mips_dspr2
649 (JCOEF * inptr, IFAST_MULT_TYPE * quantptr, DCTELEM * wsptr,
650 const int * idct_coefs);
651EXTERN(void) jsimd_idct_ifast_rows_mips_dspr2
652 (DCTELEM * wsptr, JSAMPARRAY output_buf, JDIMENSION output_col,
653 const int * idct_coefs);
DRCd3131c12013-10-08 02:18:59 +0000654
DRCbc56b752014-05-16 10:43:44 +0000655/* Floating Point Inverse DCT */
656EXTERN(void) jsimd_idct_float_3dnow
657 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
658 JDIMENSION output_col);
Pierre Ossman65d03172009-03-09 13:28:10 +0000659
Pierre Ossman018fc422009-03-09 13:31:56 +0000660extern const int jconst_idct_float_sse[];
DRCbc56b752014-05-16 10:43:44 +0000661EXTERN(void) jsimd_idct_float_sse
662 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
663 JDIMENSION output_col);
Pierre Ossman018fc422009-03-09 13:31:56 +0000664
Pierre Ossmaneea72152009-03-09 13:34:17 +0000665extern const int jconst_idct_float_sse2[];
DRCbc56b752014-05-16 10:43:44 +0000666EXTERN(void) jsimd_idct_float_sse2
667 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
668 JDIMENSION output_col);