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