tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

jsimd.h (56955B)


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