1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/media/libjpeg/simd/jsimd.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,670 @@ 1.4 +/* 1.5 + * simd/jsimd.h 1.6 + * 1.7 + * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB 1.8 + * Copyright 2011 D. R. Commander 1.9 + * 1.10 + * Based on the x86 SIMD extension for IJG JPEG library, 1.11 + * Copyright (C) 1999-2006, MIYASAKA Masaru. 1.12 + * For conditions of distribution and use, see copyright notice in jsimdext.inc 1.13 + * 1.14 + */ 1.15 + 1.16 +/* Bitmask for supported acceleration methods */ 1.17 + 1.18 +#define JSIMD_NONE 0x00 1.19 +#define JSIMD_MMX 0x01 1.20 +#define JSIMD_3DNOW 0x02 1.21 +#define JSIMD_SSE 0x04 1.22 +#define JSIMD_SSE2 0x08 1.23 +#define JSIMD_ARM_NEON 0x10 1.24 + 1.25 +/* Short forms of external names for systems with brain-damaged linkers. */ 1.26 + 1.27 +#ifdef NEED_SHORT_EXTERNAL_NAMES 1.28 +#define jpeg_simd_cpu_support jSiCpuSupport 1.29 +#define jsimd_rgb_ycc_convert_mmx jSRGBYCCM 1.30 +#define jsimd_extrgb_ycc_convert_mmx jSEXTRGBYCCM 1.31 +#define jsimd_extrgbx_ycc_convert_mmx jSEXTRGBXYCCM 1.32 +#define jsimd_extbgr_ycc_convert_mmx jSEXTBGRYCCM 1.33 +#define jsimd_extbgrx_ycc_convert_mmx jSEXTBGRXYCCM 1.34 +#define jsimd_extxbgr_ycc_convert_mmx jSEXTXBGRYCCM 1.35 +#define jsimd_extxrgb_ycc_convert_mmx jSEXTXRGBYCCM 1.36 +#define jsimd_rgb_gray_convert_mmx jSRGBGRYM 1.37 +#define jsimd_extrgb_gray_convert_mmx jSEXTRGBGRYM 1.38 +#define jsimd_extrgbx_gray_convert_mmx jSEXTRGBXGRYM 1.39 +#define jsimd_extbgr_gray_convert_mmx jSEXTBGRGRYM 1.40 +#define jsimd_extbgrx_gray_convert_mmx jSEXTBGRXGRYM 1.41 +#define jsimd_extxbgr_gray_convert_mmx jSEXTXBGRGRYM 1.42 +#define jsimd_extxrgb_gray_convert_mmx jSEXTXRGBGRYM 1.43 +#define jsimd_ycc_rgb_convert_mmx jSYCCRGBM 1.44 +#define jsimd_ycc_extrgb_convert_mmx jSYCCEXTRGBM 1.45 +#define jsimd_ycc_extrgbx_convert_mmx jSYCCEXTRGBXM 1.46 +#define jsimd_ycc_extbgr_convert_mmx jSYCCEXTBGRM 1.47 +#define jsimd_ycc_extbgrx_convert_mmx jSYCCEXTBGRXM 1.48 +#define jsimd_ycc_extxbgr_convert_mmx jSYCCEXTXBGRM 1.49 +#define jsimd_ycc_extxrgb_convert_mmx jSYCCEXTXRGBM 1.50 +#define jconst_rgb_ycc_convert_sse2 jSCRGBYCCS2 1.51 +#define jsimd_rgb_ycc_convert_sse2 jSRGBYCCS2 1.52 +#define jsimd_extrgb_ycc_convert_sse2 jSEXTRGBYCCS2 1.53 +#define jsimd_extrgbx_ycc_convert_sse2 jSEXTRGBXYCCS2 1.54 +#define jsimd_extbgr_ycc_convert_sse2 jSEXTBGRYCCS2 1.55 +#define jsimd_extbgrx_ycc_convert_sse2 jSEXTBGRXYCCS2 1.56 +#define jsimd_extxbgr_ycc_convert_sse2 jSEXTXBGRYCCS2 1.57 +#define jsimd_extxrgb_ycc_convert_sse2 jSEXTXRGBYCCS2 1.58 +#define jconst_rgb_gray_convert_sse2 jSCRGBGRYS2 1.59 +#define jsimd_rgb_gray_convert_sse2 jSRGBGRYS2 1.60 +#define jsimd_extrgb_gray_convert_sse2 jSEXTRGBGRYS2 1.61 +#define jsimd_extrgbx_gray_convert_sse2 jSEXTRGBXGRYS2 1.62 +#define jsimd_extbgr_gray_convert_sse2 jSEXTBGRGRYS2 1.63 +#define jsimd_extbgrx_gray_convert_sse2 jSEXTBGRXGRYS2 1.64 +#define jsimd_extxbgr_gray_convert_sse2 jSEXTXBGRGRYS2 1.65 +#define jsimd_extxrgb_gray_convert_sse2 jSEXTXRGBGRYS2 1.66 +#define jconst_ycc_rgb_convert_sse2 jSCYCCRGBS2 1.67 +#define jsimd_ycc_rgb_convert_sse2 jSYCCRGBS2 1.68 +#define jsimd_ycc_extrgb_convert_sse2 jSYCCEXTRGBS2 1.69 +#define jsimd_ycc_extrgbx_convert_sse2 jSYCCEXTRGBXS2 1.70 +#define jsimd_ycc_extbgr_convert_sse2 jSYCCEXTBGRS2 1.71 +#define jsimd_ycc_extbgrx_convert_sse2 jSYCCEXTBGRXS2 1.72 +#define jsimd_ycc_extxbgr_convert_sse2 jSYCCEXTXBGRS2 1.73 +#define jsimd_ycc_extxrgb_convert_sse2 jSYCCEXTXRGBS2 1.74 +#define jsimd_h2v2_downsample_mmx jSDnH2V2M 1.75 +#define jsimd_h2v1_downsample_mmx jSDnH2V1M 1.76 +#define jsimd_h2v2_downsample_sse2 jSDnH2V2S2 1.77 +#define jsimd_h2v1_downsample_sse2 jSDnH2V1S2 1.78 +#define jsimd_h2v2_upsample_mmx jSUpH2V2M 1.79 +#define jsimd_h2v1_upsample_mmx jSUpH2V1M 1.80 +#define jsimd_h2v2_fancy_upsample_mmx jSFUpH2V2M 1.81 +#define jsimd_h2v1_fancy_upsample_mmx jSFUpH2V1M 1.82 +#define jsimd_h2v2_merged_upsample_mmx jSMUpH2V2M 1.83 +#define jsimd_h2v2_extrgb_merged_upsample_mmx jSMUpH2V2EXTRGBM 1.84 +#define jsimd_h2v2_extrgbx_merged_upsample_mmx jSMUpH2V2EXTRGBXM 1.85 +#define jsimd_h2v2_extbgr_merged_upsample_mmx jSMUpH2V2EXTBGRM 1.86 +#define jsimd_h2v2_extbgrx_merged_upsample_mmx jSMUpH2V2EXTBGRXM 1.87 +#define jsimd_h2v2_extxbgr_merged_upsample_mmx jSMUpH2V2EXTXBGRM 1.88 +#define jsimd_h2v2_extxrgb_merged_upsample_mmx jSMUpH2V2EXTXRGBM 1.89 +#define jsimd_h2v1_merged_upsample_mmx jSMUpH2V1M 1.90 +#define jsimd_h2v1_extrgb_merged_upsample_mmx jSMUpH2V1EXTRGBM 1.91 +#define jsimd_h2v1_extrgbx_merged_upsample_mmx jSMUpH2V1EXTRGBXM 1.92 +#define jsimd_h2v1_extbgr_merged_upsample_mmx jSMUpH2V1EXTBGRM 1.93 +#define jsimd_h2v1_extbgrx_merged_upsample_mmx jSMUpH2V1EXTBGRXM 1.94 +#define jsimd_h2v1_extxbgr_merged_upsample_mmx jSMUpH2V1EXTXBGRM 1.95 +#define jsimd_h2v1_extxrgb_merged_upsample_mmx jSMUpH2V1EXTXRGBM 1.96 +#define jsimd_h2v2_upsample_sse2 jSUpH2V2S2 1.97 +#define jsimd_h2v1_upsample_sse2 jSUpH2V1S2 1.98 +#define jconst_fancy_upsample_sse2 jSCFUpS2 1.99 +#define jsimd_h2v2_fancy_upsample_sse2 jSFUpH2V2S2 1.100 +#define jsimd_h2v1_fancy_upsample_sse2 jSFUpH2V1S2 1.101 +#define jconst_merged_upsample_sse2 jSCMUpS2 1.102 +#define jsimd_h2v2_merged_upsample_sse2 jSMUpH2V2S2 1.103 +#define jsimd_h2v2_extrgb_merged_upsample_sse2 jSMUpH2V2EXTRGBS2 1.104 +#define jsimd_h2v2_extrgbx_merged_upsample_sse2 jSMUpH2V2EXTRGBXS2 1.105 +#define jsimd_h2v2_extbgr_merged_upsample_sse2 jSMUpH2V2EXTBGRS2 1.106 +#define jsimd_h2v2_extbgrx_merged_upsample_sse2 jSMUpH2V2EXTBGRXS2 1.107 +#define jsimd_h2v2_extxbgr_merged_upsample_sse2 jSMUpH2V2EXTXBGRS2 1.108 +#define jsimd_h2v2_extxrgb_merged_upsample_sse2 jSMUpH2V2EXTXRGBS2 1.109 +#define jsimd_h2v1_merged_upsample_sse2 jSMUpH2V1S2 1.110 +#define jsimd_h2v1_extrgb_merged_upsample_sse2 jSMUpH2V1EXTRGBS2 1.111 +#define jsimd_h2v1_extrgbx_merged_upsample_sse2 jSMUpH2V1EXTRGBXS2 1.112 +#define jsimd_h2v1_extbgr_merged_upsample_sse2 jSMUpH2V1EXTBGRS2 1.113 +#define jsimd_h2v1_extbgrx_merged_upsample_sse2 jSMUpH2V1EXTBGRXS2 1.114 +#define jsimd_h2v1_extxbgr_merged_upsample_sse2 jSMUpH2V1EXTXBGRS2 1.115 +#define jsimd_h2v1_extxrgb_merged_upsample_sse2 jSMUpH2V1EXTXRGBS2 1.116 +#define jsimd_convsamp_mmx jSConvM 1.117 +#define jsimd_convsamp_sse2 jSConvS2 1.118 +#define jsimd_convsamp_float_3dnow jSConvF3D 1.119 +#define jsimd_convsamp_float_sse jSConvFS 1.120 +#define jsimd_convsamp_float_sse2 jSConvFS2 1.121 +#define jsimd_fdct_islow_mmx jSFDMIS 1.122 +#define jsimd_fdct_ifast_mmx jSFDMIF 1.123 +#define jconst_fdct_islow_sse2 jSCFDS2IS 1.124 +#define jsimd_fdct_islow_sse2 jSFDS2IS 1.125 +#define jconst_fdct_ifast_sse2 jSCFDS2IF 1.126 +#define jsimd_fdct_ifast_sse2 jSFDS2IF 1.127 +#define jsimd_fdct_float_3dnow jSFD3DF 1.128 +#define jconst_fdct_float_sse jSCFDSF 1.129 +#define jsimd_fdct_float_sse jSFDSF 1.130 +#define jsimd_quantize_mmx jSQuantM 1.131 +#define jsimd_quantize_sse2 jSQuantS2 1.132 +#define jsimd_quantize_float_3dnow jSQuantF3D 1.133 +#define jsimd_quantize_float_sse jSQuantFS 1.134 +#define jsimd_quantize_float_sse2 jSQuantFS2 1.135 +#define jsimd_idct_2x2_mmx jSIDM22 1.136 +#define jsimd_idct_4x4_mmx jSIDM44 1.137 +#define jconst_idct_red_sse2 jSCIDS2R 1.138 +#define jsimd_idct_2x2_sse2 jSIDS222 1.139 +#define jsimd_idct_4x4_sse2 jSIDS244 1.140 +#define jsimd_idct_islow_mmx jSIDMIS 1.141 +#define jsimd_idct_ifast_mmx jSIDMIF 1.142 +#define jconst_idct_islow_sse2 jSCIDS2IS 1.143 +#define jsimd_idct_islow_sse2 jSIDS2IS 1.144 +#define jconst_idct_ifast_sse2 jSCIDS2IF 1.145 +#define jsimd_idct_ifast_sse2 jSIDS2IF 1.146 +#define jsimd_idct_float_3dnow jSID3DF 1.147 +#define jconst_fdct_float_sse jSCIDSF 1.148 +#define jsimd_idct_float_sse jSIDSF 1.149 +#define jconst_fdct_float_sse2 jSCIDS2F 1.150 +#define jsimd_idct_float_sse2 jSIDS2F 1.151 +#endif /* NEED_SHORT_EXTERNAL_NAMES */ 1.152 + 1.153 +/* SIMD Ext: retrieve SIMD/CPU information */ 1.154 +EXTERN(unsigned int) jpeg_simd_cpu_support JPP((void)); 1.155 + 1.156 +/* SIMD Color Space Conversion */ 1.157 +EXTERN(void) jsimd_rgb_ycc_convert_mmx 1.158 + JPP((JDIMENSION img_width, 1.159 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.160 + JDIMENSION output_row, int num_rows)); 1.161 +EXTERN(void) jsimd_extrgb_ycc_convert_mmx 1.162 + JPP((JDIMENSION img_width, 1.163 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.164 + JDIMENSION output_row, int num_rows)); 1.165 +EXTERN(void) jsimd_extrgbx_ycc_convert_mmx 1.166 + JPP((JDIMENSION img_width, 1.167 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.168 + JDIMENSION output_row, int num_rows)); 1.169 +EXTERN(void) jsimd_extbgr_ycc_convert_mmx 1.170 + JPP((JDIMENSION img_width, 1.171 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.172 + JDIMENSION output_row, int num_rows)); 1.173 +EXTERN(void) jsimd_extbgrx_ycc_convert_mmx 1.174 + JPP((JDIMENSION img_width, 1.175 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.176 + JDIMENSION output_row, int num_rows)); 1.177 +EXTERN(void) jsimd_extxbgr_ycc_convert_mmx 1.178 + JPP((JDIMENSION img_width, 1.179 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.180 + JDIMENSION output_row, int num_rows)); 1.181 +EXTERN(void) jsimd_extxrgb_ycc_convert_mmx 1.182 + JPP((JDIMENSION img_width, 1.183 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.184 + JDIMENSION output_row, int num_rows)); 1.185 + 1.186 +EXTERN(void) jsimd_rgb_gray_convert_mmx 1.187 + JPP((JDIMENSION img_width, 1.188 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.189 + JDIMENSION output_row, int num_rows)); 1.190 +EXTERN(void) jsimd_extrgb_gray_convert_mmx 1.191 + JPP((JDIMENSION img_width, 1.192 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.193 + JDIMENSION output_row, int num_rows)); 1.194 +EXTERN(void) jsimd_extrgbx_gray_convert_mmx 1.195 + JPP((JDIMENSION img_width, 1.196 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.197 + JDIMENSION output_row, int num_rows)); 1.198 +EXTERN(void) jsimd_extbgr_gray_convert_mmx 1.199 + JPP((JDIMENSION img_width, 1.200 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.201 + JDIMENSION output_row, int num_rows)); 1.202 +EXTERN(void) jsimd_extbgrx_gray_convert_mmx 1.203 + JPP((JDIMENSION img_width, 1.204 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.205 + JDIMENSION output_row, int num_rows)); 1.206 +EXTERN(void) jsimd_extxbgr_gray_convert_mmx 1.207 + JPP((JDIMENSION img_width, 1.208 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.209 + JDIMENSION output_row, int num_rows)); 1.210 +EXTERN(void) jsimd_extxrgb_gray_convert_mmx 1.211 + JPP((JDIMENSION img_width, 1.212 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.213 + JDIMENSION output_row, int num_rows)); 1.214 + 1.215 +EXTERN(void) jsimd_ycc_rgb_convert_mmx 1.216 + JPP((JDIMENSION out_width, 1.217 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.218 + JSAMPARRAY output_buf, int num_rows)); 1.219 +EXTERN(void) jsimd_ycc_extrgb_convert_mmx 1.220 + JPP((JDIMENSION out_width, 1.221 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.222 + JSAMPARRAY output_buf, int num_rows)); 1.223 +EXTERN(void) jsimd_ycc_extrgbx_convert_mmx 1.224 + JPP((JDIMENSION out_width, 1.225 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.226 + JSAMPARRAY output_buf, int num_rows)); 1.227 +EXTERN(void) jsimd_ycc_extbgr_convert_mmx 1.228 + JPP((JDIMENSION out_width, 1.229 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.230 + JSAMPARRAY output_buf, int num_rows)); 1.231 +EXTERN(void) jsimd_ycc_extbgrx_convert_mmx 1.232 + JPP((JDIMENSION out_width, 1.233 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.234 + JSAMPARRAY output_buf, int num_rows)); 1.235 +EXTERN(void) jsimd_ycc_extxbgr_convert_mmx 1.236 + JPP((JDIMENSION out_width, 1.237 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.238 + JSAMPARRAY output_buf, int num_rows)); 1.239 +EXTERN(void) jsimd_ycc_extxrgb_convert_mmx 1.240 + JPP((JDIMENSION out_width, 1.241 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.242 + JSAMPARRAY output_buf, int num_rows)); 1.243 + 1.244 +extern const int jconst_rgb_ycc_convert_sse2[]; 1.245 +EXTERN(void) jsimd_rgb_ycc_convert_sse2 1.246 + JPP((JDIMENSION img_width, 1.247 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.248 + JDIMENSION output_row, int num_rows)); 1.249 +EXTERN(void) jsimd_extrgb_ycc_convert_sse2 1.250 + JPP((JDIMENSION img_width, 1.251 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.252 + JDIMENSION output_row, int num_rows)); 1.253 +EXTERN(void) jsimd_extrgbx_ycc_convert_sse2 1.254 + JPP((JDIMENSION img_width, 1.255 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.256 + JDIMENSION output_row, int num_rows)); 1.257 +EXTERN(void) jsimd_extbgr_ycc_convert_sse2 1.258 + JPP((JDIMENSION img_width, 1.259 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.260 + JDIMENSION output_row, int num_rows)); 1.261 +EXTERN(void) jsimd_extbgrx_ycc_convert_sse2 1.262 + JPP((JDIMENSION img_width, 1.263 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.264 + JDIMENSION output_row, int num_rows)); 1.265 +EXTERN(void) jsimd_extxbgr_ycc_convert_sse2 1.266 + JPP((JDIMENSION img_width, 1.267 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.268 + JDIMENSION output_row, int num_rows)); 1.269 +EXTERN(void) jsimd_extxrgb_ycc_convert_sse2 1.270 + JPP((JDIMENSION img_width, 1.271 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.272 + JDIMENSION output_row, int num_rows)); 1.273 + 1.274 +extern const int jconst_rgb_gray_convert_sse2[]; 1.275 +EXTERN(void) jsimd_rgb_gray_convert_sse2 1.276 + JPP((JDIMENSION img_width, 1.277 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.278 + JDIMENSION output_row, int num_rows)); 1.279 +EXTERN(void) jsimd_extrgb_gray_convert_sse2 1.280 + JPP((JDIMENSION img_width, 1.281 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.282 + JDIMENSION output_row, int num_rows)); 1.283 +EXTERN(void) jsimd_extrgbx_gray_convert_sse2 1.284 + JPP((JDIMENSION img_width, 1.285 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.286 + JDIMENSION output_row, int num_rows)); 1.287 +EXTERN(void) jsimd_extbgr_gray_convert_sse2 1.288 + JPP((JDIMENSION img_width, 1.289 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.290 + JDIMENSION output_row, int num_rows)); 1.291 +EXTERN(void) jsimd_extbgrx_gray_convert_sse2 1.292 + JPP((JDIMENSION img_width, 1.293 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.294 + JDIMENSION output_row, int num_rows)); 1.295 +EXTERN(void) jsimd_extxbgr_gray_convert_sse2 1.296 + JPP((JDIMENSION img_width, 1.297 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.298 + JDIMENSION output_row, int num_rows)); 1.299 +EXTERN(void) jsimd_extxrgb_gray_convert_sse2 1.300 + JPP((JDIMENSION img_width, 1.301 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.302 + JDIMENSION output_row, int num_rows)); 1.303 + 1.304 +extern const int jconst_ycc_rgb_convert_sse2[]; 1.305 +EXTERN(void) jsimd_ycc_rgb_convert_sse2 1.306 + JPP((JDIMENSION out_width, 1.307 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.308 + JSAMPARRAY output_buf, int num_rows)); 1.309 +EXTERN(void) jsimd_ycc_extrgb_convert_sse2 1.310 + JPP((JDIMENSION out_width, 1.311 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.312 + JSAMPARRAY output_buf, int num_rows)); 1.313 +EXTERN(void) jsimd_ycc_extrgbx_convert_sse2 1.314 + JPP((JDIMENSION out_width, 1.315 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.316 + JSAMPARRAY output_buf, int num_rows)); 1.317 +EXTERN(void) jsimd_ycc_extbgr_convert_sse2 1.318 + JPP((JDIMENSION out_width, 1.319 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.320 + JSAMPARRAY output_buf, int num_rows)); 1.321 +EXTERN(void) jsimd_ycc_extbgrx_convert_sse2 1.322 + JPP((JDIMENSION out_width, 1.323 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.324 + JSAMPARRAY output_buf, int num_rows)); 1.325 +EXTERN(void) jsimd_ycc_extxbgr_convert_sse2 1.326 + JPP((JDIMENSION out_width, 1.327 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.328 + JSAMPARRAY output_buf, int num_rows)); 1.329 +EXTERN(void) jsimd_ycc_extxrgb_convert_sse2 1.330 + JPP((JDIMENSION out_width, 1.331 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.332 + JSAMPARRAY output_buf, int num_rows)); 1.333 + 1.334 +EXTERN(void) jsimd_rgb_ycc_convert_neon 1.335 + JPP((JDIMENSION img_width, 1.336 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.337 + JDIMENSION output_row, int num_rows)); 1.338 +EXTERN(void) jsimd_extrgb_ycc_convert_neon 1.339 + JPP((JDIMENSION img_width, 1.340 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.341 + JDIMENSION output_row, int num_rows)); 1.342 +EXTERN(void) jsimd_extrgbx_ycc_convert_neon 1.343 + JPP((JDIMENSION img_width, 1.344 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.345 + JDIMENSION output_row, int num_rows)); 1.346 +EXTERN(void) jsimd_extbgr_ycc_convert_neon 1.347 + JPP((JDIMENSION img_width, 1.348 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.349 + JDIMENSION output_row, int num_rows)); 1.350 +EXTERN(void) jsimd_extbgrx_ycc_convert_neon 1.351 + JPP((JDIMENSION img_width, 1.352 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.353 + JDIMENSION output_row, int num_rows)); 1.354 +EXTERN(void) jsimd_extxbgr_ycc_convert_neon 1.355 + JPP((JDIMENSION img_width, 1.356 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.357 + JDIMENSION output_row, int num_rows)); 1.358 +EXTERN(void) jsimd_extxrgb_ycc_convert_neon 1.359 + JPP((JDIMENSION img_width, 1.360 + JSAMPARRAY input_buf, JSAMPIMAGE output_buf, 1.361 + JDIMENSION output_row, int num_rows)); 1.362 + 1.363 +EXTERN(void) jsimd_ycc_rgb_convert_neon 1.364 + JPP((JDIMENSION out_width, 1.365 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.366 + JSAMPARRAY output_buf, int num_rows)); 1.367 +EXTERN(void) jsimd_ycc_extrgb_convert_neon 1.368 + JPP((JDIMENSION out_width, 1.369 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.370 + JSAMPARRAY output_buf, int num_rows)); 1.371 +EXTERN(void) jsimd_ycc_extrgbx_convert_neon 1.372 + JPP((JDIMENSION out_width, 1.373 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.374 + JSAMPARRAY output_buf, int num_rows)); 1.375 +EXTERN(void) jsimd_ycc_extbgr_convert_neon 1.376 + JPP((JDIMENSION out_width, 1.377 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.378 + JSAMPARRAY output_buf, int num_rows)); 1.379 +EXTERN(void) jsimd_ycc_extbgrx_convert_neon 1.380 + JPP((JDIMENSION out_width, 1.381 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.382 + JSAMPARRAY output_buf, int num_rows)); 1.383 +EXTERN(void) jsimd_ycc_extxbgr_convert_neon 1.384 + JPP((JDIMENSION out_width, 1.385 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.386 + JSAMPARRAY output_buf, int num_rows)); 1.387 +EXTERN(void) jsimd_ycc_extxrgb_convert_neon 1.388 + JPP((JDIMENSION out_width, 1.389 + JSAMPIMAGE input_buf, JDIMENSION input_row, 1.390 + JSAMPARRAY output_buf, int num_rows)); 1.391 + 1.392 +/* SIMD Downsample */ 1.393 +EXTERN(void) jsimd_h2v2_downsample_mmx 1.394 + JPP((JDIMENSION image_width, int max_v_samp_factor, 1.395 + JDIMENSION v_samp_factor, JDIMENSION width_blocks, 1.396 + JSAMPARRAY input_data, JSAMPARRAY output_data)); 1.397 +EXTERN(void) jsimd_h2v1_downsample_mmx 1.398 + JPP((JDIMENSION image_width, int max_v_samp_factor, 1.399 + JDIMENSION v_samp_factor, JDIMENSION width_blocks, 1.400 + JSAMPARRAY input_data, JSAMPARRAY output_data)); 1.401 + 1.402 +EXTERN(void) jsimd_h2v2_downsample_sse2 1.403 + JPP((JDIMENSION image_width, int max_v_samp_factor, 1.404 + JDIMENSION v_samp_factor, JDIMENSION width_blocks, 1.405 + JSAMPARRAY input_data, JSAMPARRAY output_data)); 1.406 +EXTERN(void) jsimd_h2v1_downsample_sse2 1.407 + JPP((JDIMENSION image_width, int max_v_samp_factor, 1.408 + JDIMENSION v_samp_factor, JDIMENSION width_blocks, 1.409 + JSAMPARRAY input_data, JSAMPARRAY output_data)); 1.410 + 1.411 +/* SIMD Upsample */ 1.412 +EXTERN(void) jsimd_h2v2_upsample_mmx 1.413 + JPP((int max_v_samp_factor, JDIMENSION output_width, 1.414 + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)); 1.415 +EXTERN(void) jsimd_h2v1_upsample_mmx 1.416 + JPP((int max_v_samp_factor, JDIMENSION output_width, 1.417 + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)); 1.418 + 1.419 +EXTERN(void) jsimd_h2v2_fancy_upsample_mmx 1.420 + JPP((int max_v_samp_factor, JDIMENSION downsampled_width, 1.421 + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)); 1.422 +EXTERN(void) jsimd_h2v1_fancy_upsample_mmx 1.423 + JPP((int max_v_samp_factor, JDIMENSION downsampled_width, 1.424 + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)); 1.425 + 1.426 +EXTERN(void) jsimd_h2v2_merged_upsample_mmx 1.427 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.428 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.429 +EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mmx 1.430 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.431 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.432 +EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mmx 1.433 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.434 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.435 +EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mmx 1.436 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.437 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.438 +EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mmx 1.439 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.440 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.441 +EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mmx 1.442 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.443 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.444 +EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mmx 1.445 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.446 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.447 +EXTERN(void) jsimd_h2v1_merged_upsample_mmx 1.448 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.449 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.450 +EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mmx 1.451 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.452 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.453 +EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mmx 1.454 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.455 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.456 +EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mmx 1.457 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.458 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.459 +EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mmx 1.460 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.461 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.462 +EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mmx 1.463 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.464 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.465 +EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mmx 1.466 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.467 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.468 + 1.469 +EXTERN(void) jsimd_h2v2_upsample_sse2 1.470 + JPP((int max_v_samp_factor, JDIMENSION output_width, 1.471 + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)); 1.472 +EXTERN(void) jsimd_h2v1_upsample_sse2 1.473 + JPP((int max_v_samp_factor, JDIMENSION output_width, 1.474 + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)); 1.475 + 1.476 +extern const int jconst_fancy_upsample_sse2[]; 1.477 +EXTERN(void) jsimd_h2v2_fancy_upsample_sse2 1.478 + JPP((int max_v_samp_factor, JDIMENSION downsampled_width, 1.479 + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)); 1.480 +EXTERN(void) jsimd_h2v1_fancy_upsample_sse2 1.481 + JPP((int max_v_samp_factor, JDIMENSION downsampled_width, 1.482 + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)); 1.483 + 1.484 +extern const int jconst_merged_upsample_sse2[]; 1.485 +EXTERN(void) jsimd_h2v2_merged_upsample_sse2 1.486 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.487 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.488 +EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_sse2 1.489 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.490 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.491 +EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_sse2 1.492 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.493 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.494 +EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_sse2 1.495 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.496 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.497 +EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_sse2 1.498 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.499 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.500 +EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_sse2 1.501 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.502 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.503 +EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_sse2 1.504 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.505 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.506 +EXTERN(void) jsimd_h2v1_merged_upsample_sse2 1.507 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.508 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.509 +EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_sse2 1.510 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.511 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.512 +EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_sse2 1.513 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.514 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.515 +EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_sse2 1.516 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.517 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.518 +EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_sse2 1.519 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.520 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.521 +EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_sse2 1.522 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.523 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.524 +EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_sse2 1.525 + JPP((JDIMENSION output_width, JSAMPIMAGE input_buf, 1.526 + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf)); 1.527 + 1.528 +EXTERN(void) jsimd_h2v1_fancy_upsample_neon 1.529 + JPP((int max_v_samp_factor, JDIMENSION downsampled_width, 1.530 + JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)); 1.531 + 1.532 +/* SIMD Sample Conversion */ 1.533 +EXTERN(void) jsimd_convsamp_mmx JPP((JSAMPARRAY sample_data, 1.534 + JDIMENSION start_col, 1.535 + DCTELEM * workspace)); 1.536 + 1.537 +EXTERN(void) jsimd_convsamp_sse2 JPP((JSAMPARRAY sample_data, 1.538 + JDIMENSION start_col, 1.539 + DCTELEM * workspace)); 1.540 + 1.541 +EXTERN(void) jsimd_convsamp_neon JPP((JSAMPARRAY sample_data, 1.542 + JDIMENSION start_col, 1.543 + DCTELEM * workspace)); 1.544 + 1.545 +EXTERN(void) jsimd_convsamp_float_3dnow JPP((JSAMPARRAY sample_data, 1.546 + JDIMENSION start_col, 1.547 + FAST_FLOAT * workspace)); 1.548 + 1.549 +EXTERN(void) jsimd_convsamp_float_sse JPP((JSAMPARRAY sample_data, 1.550 + JDIMENSION start_col, 1.551 + FAST_FLOAT * workspace)); 1.552 + 1.553 +EXTERN(void) jsimd_convsamp_float_sse2 JPP((JSAMPARRAY sample_data, 1.554 + JDIMENSION start_col, 1.555 + FAST_FLOAT * workspace)); 1.556 + 1.557 +/* SIMD Forward DCT */ 1.558 +EXTERN(void) jsimd_fdct_islow_mmx JPP((DCTELEM * data)); 1.559 +EXTERN(void) jsimd_fdct_ifast_mmx JPP((DCTELEM * data)); 1.560 + 1.561 +extern const int jconst_fdct_ifast_sse2[]; 1.562 +EXTERN(void) jsimd_fdct_islow_sse2 JPP((DCTELEM * data)); 1.563 +extern const int jconst_fdct_islow_sse2[]; 1.564 +EXTERN(void) jsimd_fdct_ifast_sse2 JPP((DCTELEM * data)); 1.565 + 1.566 +EXTERN(void) jsimd_fdct_ifast_neon JPP((DCTELEM * data)); 1.567 + 1.568 +EXTERN(void) jsimd_fdct_float_3dnow JPP((FAST_FLOAT * data)); 1.569 + 1.570 +extern const int jconst_fdct_float_sse[]; 1.571 +EXTERN(void) jsimd_fdct_float_sse JPP((FAST_FLOAT * data)); 1.572 + 1.573 +/* SIMD Quantization */ 1.574 +EXTERN(void) jsimd_quantize_mmx JPP((JCOEFPTR coef_block, 1.575 + DCTELEM * divisors, 1.576 + DCTELEM * workspace)); 1.577 + 1.578 +EXTERN(void) jsimd_quantize_sse2 JPP((JCOEFPTR coef_block, 1.579 + DCTELEM * divisors, 1.580 + DCTELEM * workspace)); 1.581 + 1.582 +EXTERN(void) jsimd_quantize_neon JPP((JCOEFPTR coef_block, 1.583 + DCTELEM * divisors, 1.584 + DCTELEM * workspace)); 1.585 + 1.586 +EXTERN(void) jsimd_quantize_float_3dnow JPP((JCOEFPTR coef_block, 1.587 + FAST_FLOAT * divisors, 1.588 + FAST_FLOAT * workspace)); 1.589 + 1.590 +EXTERN(void) jsimd_quantize_float_sse JPP((JCOEFPTR coef_block, 1.591 + FAST_FLOAT * divisors, 1.592 + FAST_FLOAT * workspace)); 1.593 + 1.594 +EXTERN(void) jsimd_quantize_float_sse2 JPP((JCOEFPTR coef_block, 1.595 + FAST_FLOAT * divisors, 1.596 + FAST_FLOAT * workspace)); 1.597 + 1.598 +/* SIMD Reduced Inverse DCT */ 1.599 +EXTERN(void) jsimd_idct_2x2_mmx JPP((void * dct_table, 1.600 + JCOEFPTR coef_block, 1.601 + JSAMPARRAY output_buf, 1.602 + JDIMENSION output_col)); 1.603 +EXTERN(void) jsimd_idct_4x4_mmx JPP((void * dct_table, 1.604 + JCOEFPTR coef_block, 1.605 + JSAMPARRAY output_buf, 1.606 + JDIMENSION output_col)); 1.607 + 1.608 +extern const int jconst_idct_red_sse2[]; 1.609 +EXTERN(void) jsimd_idct_2x2_sse2 JPP((void * dct_table, 1.610 + JCOEFPTR coef_block, 1.611 + JSAMPARRAY output_buf, 1.612 + JDIMENSION output_col)); 1.613 +EXTERN(void) jsimd_idct_4x4_sse2 JPP((void * dct_table, 1.614 + JCOEFPTR coef_block, 1.615 + JSAMPARRAY output_buf, 1.616 + JDIMENSION output_col)); 1.617 + 1.618 +EXTERN(void) jsimd_idct_2x2_neon JPP((void * dct_table, 1.619 + JCOEFPTR coef_block, 1.620 + JSAMPARRAY output_buf, 1.621 + JDIMENSION output_col)); 1.622 +EXTERN(void) jsimd_idct_4x4_neon JPP((void * dct_table, 1.623 + JCOEFPTR coef_block, 1.624 + JSAMPARRAY output_buf, 1.625 + JDIMENSION output_col)); 1.626 + 1.627 +/* SIMD Inverse DCT */ 1.628 +EXTERN(void) jsimd_idct_islow_mmx JPP((void * dct_table, 1.629 + JCOEFPTR coef_block, 1.630 + JSAMPARRAY output_buf, 1.631 + JDIMENSION output_col)); 1.632 +EXTERN(void) jsimd_idct_ifast_mmx JPP((void * dct_table, 1.633 + JCOEFPTR coef_block, 1.634 + JSAMPARRAY output_buf, 1.635 + JDIMENSION output_col)); 1.636 + 1.637 +extern const int jconst_idct_islow_sse2[]; 1.638 +EXTERN(void) jsimd_idct_islow_sse2 JPP((void * dct_table, 1.639 + JCOEFPTR coef_block, 1.640 + JSAMPARRAY output_buf, 1.641 + JDIMENSION output_col)); 1.642 +extern const int jconst_idct_ifast_sse2[]; 1.643 +EXTERN(void) jsimd_idct_ifast_sse2 JPP((void * dct_table, 1.644 + JCOEFPTR coef_block, 1.645 + JSAMPARRAY output_buf, 1.646 + JDIMENSION output_col)); 1.647 + 1.648 +EXTERN(void) jsimd_idct_islow_neon JPP((void * dct_table, 1.649 + JCOEFPTR coef_block, 1.650 + JSAMPARRAY output_buf, 1.651 + JDIMENSION output_col)); 1.652 +EXTERN(void) jsimd_idct_ifast_neon JPP((void * dct_table, 1.653 + JCOEFPTR coef_block, 1.654 + JSAMPARRAY output_buf, 1.655 + JDIMENSION output_col)); 1.656 + 1.657 +EXTERN(void) jsimd_idct_float_3dnow JPP((void * dct_table, 1.658 + JCOEFPTR coef_block, 1.659 + JSAMPARRAY output_buf, 1.660 + JDIMENSION output_col)); 1.661 + 1.662 +extern const int jconst_idct_float_sse[]; 1.663 +EXTERN(void) jsimd_idct_float_sse JPP((void * dct_table, 1.664 + JCOEFPTR coef_block, 1.665 + JSAMPARRAY output_buf, 1.666 + JDIMENSION output_col)); 1.667 + 1.668 +extern const int jconst_idct_float_sse2[]; 1.669 +EXTERN(void) jsimd_idct_float_sse2 JPP((void * dct_table, 1.670 + JCOEFPTR coef_block, 1.671 + JSAMPARRAY output_buf, 1.672 + JDIMENSION output_col)); 1.673 +