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