media/libjpeg/simd/jsimd.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /*
     2  * simd/jsimd.h
     3  *
     4  * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
     5  * Copyright 2011 D. R. Commander
     6  * 
     7  * Based on the x86 SIMD extension for IJG JPEG library,
     8  * Copyright (C) 1999-2006, MIYASAKA Masaru.
     9  * For conditions of distribution and use, see copyright notice in jsimdext.inc
    10  *
    11  */
    13 /* Bitmask for supported acceleration methods */
    15 #define JSIMD_NONE       0x00
    16 #define JSIMD_MMX        0x01
    17 #define JSIMD_3DNOW      0x02
    18 #define JSIMD_SSE        0x04
    19 #define JSIMD_SSE2       0x08
    20 #define JSIMD_ARM_NEON   0x10
    22 /* Short forms of external names for systems with brain-damaged linkers. */
    24 #ifdef NEED_SHORT_EXTERNAL_NAMES
    25 #define jpeg_simd_cpu_support                 jSiCpuSupport
    26 #define jsimd_rgb_ycc_convert_mmx             jSRGBYCCM
    27 #define jsimd_extrgb_ycc_convert_mmx          jSEXTRGBYCCM
    28 #define jsimd_extrgbx_ycc_convert_mmx         jSEXTRGBXYCCM
    29 #define jsimd_extbgr_ycc_convert_mmx          jSEXTBGRYCCM
    30 #define jsimd_extbgrx_ycc_convert_mmx         jSEXTBGRXYCCM
    31 #define jsimd_extxbgr_ycc_convert_mmx         jSEXTXBGRYCCM
    32 #define jsimd_extxrgb_ycc_convert_mmx         jSEXTXRGBYCCM
    33 #define jsimd_rgb_gray_convert_mmx            jSRGBGRYM
    34 #define jsimd_extrgb_gray_convert_mmx         jSEXTRGBGRYM
    35 #define jsimd_extrgbx_gray_convert_mmx        jSEXTRGBXGRYM
    36 #define jsimd_extbgr_gray_convert_mmx         jSEXTBGRGRYM
    37 #define jsimd_extbgrx_gray_convert_mmx        jSEXTBGRXGRYM
    38 #define jsimd_extxbgr_gray_convert_mmx        jSEXTXBGRGRYM
    39 #define jsimd_extxrgb_gray_convert_mmx        jSEXTXRGBGRYM
    40 #define jsimd_ycc_rgb_convert_mmx             jSYCCRGBM
    41 #define jsimd_ycc_extrgb_convert_mmx          jSYCCEXTRGBM
    42 #define jsimd_ycc_extrgbx_convert_mmx         jSYCCEXTRGBXM
    43 #define jsimd_ycc_extbgr_convert_mmx          jSYCCEXTBGRM
    44 #define jsimd_ycc_extbgrx_convert_mmx         jSYCCEXTBGRXM
    45 #define jsimd_ycc_extxbgr_convert_mmx         jSYCCEXTXBGRM
    46 #define jsimd_ycc_extxrgb_convert_mmx         jSYCCEXTXRGBM
    47 #define jconst_rgb_ycc_convert_sse2           jSCRGBYCCS2
    48 #define jsimd_rgb_ycc_convert_sse2            jSRGBYCCS2
    49 #define jsimd_extrgb_ycc_convert_sse2         jSEXTRGBYCCS2
    50 #define jsimd_extrgbx_ycc_convert_sse2        jSEXTRGBXYCCS2
    51 #define jsimd_extbgr_ycc_convert_sse2         jSEXTBGRYCCS2
    52 #define jsimd_extbgrx_ycc_convert_sse2        jSEXTBGRXYCCS2
    53 #define jsimd_extxbgr_ycc_convert_sse2        jSEXTXBGRYCCS2
    54 #define jsimd_extxrgb_ycc_convert_sse2        jSEXTXRGBYCCS2
    55 #define jconst_rgb_gray_convert_sse2          jSCRGBGRYS2
    56 #define jsimd_rgb_gray_convert_sse2           jSRGBGRYS2
    57 #define jsimd_extrgb_gray_convert_sse2        jSEXTRGBGRYS2
    58 #define jsimd_extrgbx_gray_convert_sse2       jSEXTRGBXGRYS2
    59 #define jsimd_extbgr_gray_convert_sse2        jSEXTBGRGRYS2
    60 #define jsimd_extbgrx_gray_convert_sse2       jSEXTBGRXGRYS2
    61 #define jsimd_extxbgr_gray_convert_sse2       jSEXTXBGRGRYS2
    62 #define jsimd_extxrgb_gray_convert_sse2       jSEXTXRGBGRYS2
    63 #define jconst_ycc_rgb_convert_sse2           jSCYCCRGBS2
    64 #define jsimd_ycc_rgb_convert_sse2            jSYCCRGBS2
    65 #define jsimd_ycc_extrgb_convert_sse2         jSYCCEXTRGBS2
    66 #define jsimd_ycc_extrgbx_convert_sse2        jSYCCEXTRGBXS2
    67 #define jsimd_ycc_extbgr_convert_sse2         jSYCCEXTBGRS2
    68 #define jsimd_ycc_extbgrx_convert_sse2        jSYCCEXTBGRXS2
    69 #define jsimd_ycc_extxbgr_convert_sse2        jSYCCEXTXBGRS2
    70 #define jsimd_ycc_extxrgb_convert_sse2        jSYCCEXTXRGBS2
    71 #define jsimd_h2v2_downsample_mmx             jSDnH2V2M
    72 #define jsimd_h2v1_downsample_mmx             jSDnH2V1M
    73 #define jsimd_h2v2_downsample_sse2            jSDnH2V2S2
    74 #define jsimd_h2v1_downsample_sse2            jSDnH2V1S2
    75 #define jsimd_h2v2_upsample_mmx               jSUpH2V2M
    76 #define jsimd_h2v1_upsample_mmx               jSUpH2V1M
    77 #define jsimd_h2v2_fancy_upsample_mmx         jSFUpH2V2M
    78 #define jsimd_h2v1_fancy_upsample_mmx         jSFUpH2V1M
    79 #define jsimd_h2v2_merged_upsample_mmx        jSMUpH2V2M
    80 #define jsimd_h2v2_extrgb_merged_upsample_mmx jSMUpH2V2EXTRGBM
    81 #define jsimd_h2v2_extrgbx_merged_upsample_mmx jSMUpH2V2EXTRGBXM
    82 #define jsimd_h2v2_extbgr_merged_upsample_mmx jSMUpH2V2EXTBGRM
    83 #define jsimd_h2v2_extbgrx_merged_upsample_mmx jSMUpH2V2EXTBGRXM
    84 #define jsimd_h2v2_extxbgr_merged_upsample_mmx jSMUpH2V2EXTXBGRM
    85 #define jsimd_h2v2_extxrgb_merged_upsample_mmx jSMUpH2V2EXTXRGBM
    86 #define jsimd_h2v1_merged_upsample_mmx        jSMUpH2V1M
    87 #define jsimd_h2v1_extrgb_merged_upsample_mmx jSMUpH2V1EXTRGBM
    88 #define jsimd_h2v1_extrgbx_merged_upsample_mmx jSMUpH2V1EXTRGBXM
    89 #define jsimd_h2v1_extbgr_merged_upsample_mmx jSMUpH2V1EXTBGRM
    90 #define jsimd_h2v1_extbgrx_merged_upsample_mmx jSMUpH2V1EXTBGRXM
    91 #define jsimd_h2v1_extxbgr_merged_upsample_mmx jSMUpH2V1EXTXBGRM
    92 #define jsimd_h2v1_extxrgb_merged_upsample_mmx jSMUpH2V1EXTXRGBM
    93 #define jsimd_h2v2_upsample_sse2              jSUpH2V2S2
    94 #define jsimd_h2v1_upsample_sse2              jSUpH2V1S2
    95 #define jconst_fancy_upsample_sse2            jSCFUpS2
    96 #define jsimd_h2v2_fancy_upsample_sse2        jSFUpH2V2S2
    97 #define jsimd_h2v1_fancy_upsample_sse2        jSFUpH2V1S2
    98 #define jconst_merged_upsample_sse2           jSCMUpS2
    99 #define jsimd_h2v2_merged_upsample_sse2       jSMUpH2V2S2
   100 #define jsimd_h2v2_extrgb_merged_upsample_sse2 jSMUpH2V2EXTRGBS2
   101 #define jsimd_h2v2_extrgbx_merged_upsample_sse2 jSMUpH2V2EXTRGBXS2
   102 #define jsimd_h2v2_extbgr_merged_upsample_sse2 jSMUpH2V2EXTBGRS2
   103 #define jsimd_h2v2_extbgrx_merged_upsample_sse2 jSMUpH2V2EXTBGRXS2
   104 #define jsimd_h2v2_extxbgr_merged_upsample_sse2 jSMUpH2V2EXTXBGRS2
   105 #define jsimd_h2v2_extxrgb_merged_upsample_sse2 jSMUpH2V2EXTXRGBS2
   106 #define jsimd_h2v1_merged_upsample_sse2       jSMUpH2V1S2
   107 #define jsimd_h2v1_extrgb_merged_upsample_sse2 jSMUpH2V1EXTRGBS2
   108 #define jsimd_h2v1_extrgbx_merged_upsample_sse2 jSMUpH2V1EXTRGBXS2
   109 #define jsimd_h2v1_extbgr_merged_upsample_sse2 jSMUpH2V1EXTBGRS2
   110 #define jsimd_h2v1_extbgrx_merged_upsample_sse2 jSMUpH2V1EXTBGRXS2
   111 #define jsimd_h2v1_extxbgr_merged_upsample_sse2 jSMUpH2V1EXTXBGRS2
   112 #define jsimd_h2v1_extxrgb_merged_upsample_sse2 jSMUpH2V1EXTXRGBS2
   113 #define jsimd_convsamp_mmx                    jSConvM
   114 #define jsimd_convsamp_sse2                   jSConvS2
   115 #define jsimd_convsamp_float_3dnow            jSConvF3D
   116 #define jsimd_convsamp_float_sse              jSConvFS
   117 #define jsimd_convsamp_float_sse2             jSConvFS2
   118 #define jsimd_fdct_islow_mmx                  jSFDMIS
   119 #define jsimd_fdct_ifast_mmx                  jSFDMIF
   120 #define jconst_fdct_islow_sse2                jSCFDS2IS
   121 #define jsimd_fdct_islow_sse2                 jSFDS2IS
   122 #define jconst_fdct_ifast_sse2                jSCFDS2IF
   123 #define jsimd_fdct_ifast_sse2                 jSFDS2IF
   124 #define jsimd_fdct_float_3dnow                jSFD3DF
   125 #define jconst_fdct_float_sse                 jSCFDSF
   126 #define jsimd_fdct_float_sse                  jSFDSF
   127 #define jsimd_quantize_mmx                    jSQuantM
   128 #define jsimd_quantize_sse2                   jSQuantS2
   129 #define jsimd_quantize_float_3dnow            jSQuantF3D
   130 #define jsimd_quantize_float_sse              jSQuantFS
   131 #define jsimd_quantize_float_sse2             jSQuantFS2
   132 #define jsimd_idct_2x2_mmx                    jSIDM22
   133 #define jsimd_idct_4x4_mmx                    jSIDM44
   134 #define jconst_idct_red_sse2                  jSCIDS2R
   135 #define jsimd_idct_2x2_sse2                   jSIDS222
   136 #define jsimd_idct_4x4_sse2                   jSIDS244
   137 #define jsimd_idct_islow_mmx                  jSIDMIS
   138 #define jsimd_idct_ifast_mmx                  jSIDMIF
   139 #define jconst_idct_islow_sse2                jSCIDS2IS
   140 #define jsimd_idct_islow_sse2                 jSIDS2IS
   141 #define jconst_idct_ifast_sse2                jSCIDS2IF
   142 #define jsimd_idct_ifast_sse2                 jSIDS2IF
   143 #define jsimd_idct_float_3dnow                jSID3DF
   144 #define jconst_fdct_float_sse                 jSCIDSF
   145 #define jsimd_idct_float_sse                  jSIDSF
   146 #define jconst_fdct_float_sse2                jSCIDS2F
   147 #define jsimd_idct_float_sse2                 jSIDS2F
   148 #endif /* NEED_SHORT_EXTERNAL_NAMES */
   150 /* SIMD Ext: retrieve SIMD/CPU information */
   151 EXTERN(unsigned int) jpeg_simd_cpu_support JPP((void));
   153 /* SIMD Color Space Conversion */
   154 EXTERN(void) jsimd_rgb_ycc_convert_mmx
   155         JPP((JDIMENSION img_width,
   156              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   157              JDIMENSION output_row, int num_rows));
   158 EXTERN(void) jsimd_extrgb_ycc_convert_mmx
   159         JPP((JDIMENSION img_width,
   160              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   161              JDIMENSION output_row, int num_rows));
   162 EXTERN(void) jsimd_extrgbx_ycc_convert_mmx
   163         JPP((JDIMENSION img_width,
   164              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   165              JDIMENSION output_row, int num_rows));
   166 EXTERN(void) jsimd_extbgr_ycc_convert_mmx
   167         JPP((JDIMENSION img_width,
   168              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   169              JDIMENSION output_row, int num_rows));
   170 EXTERN(void) jsimd_extbgrx_ycc_convert_mmx
   171         JPP((JDIMENSION img_width,
   172              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   173              JDIMENSION output_row, int num_rows));
   174 EXTERN(void) jsimd_extxbgr_ycc_convert_mmx
   175         JPP((JDIMENSION img_width,
   176              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   177              JDIMENSION output_row, int num_rows));
   178 EXTERN(void) jsimd_extxrgb_ycc_convert_mmx
   179         JPP((JDIMENSION img_width,
   180              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   181              JDIMENSION output_row, int num_rows));
   183 EXTERN(void) jsimd_rgb_gray_convert_mmx
   184         JPP((JDIMENSION img_width,
   185              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   186              JDIMENSION output_row, int num_rows));
   187 EXTERN(void) jsimd_extrgb_gray_convert_mmx
   188         JPP((JDIMENSION img_width,
   189              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   190              JDIMENSION output_row, int num_rows));
   191 EXTERN(void) jsimd_extrgbx_gray_convert_mmx
   192         JPP((JDIMENSION img_width,
   193              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   194              JDIMENSION output_row, int num_rows));
   195 EXTERN(void) jsimd_extbgr_gray_convert_mmx
   196         JPP((JDIMENSION img_width,
   197              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   198              JDIMENSION output_row, int num_rows));
   199 EXTERN(void) jsimd_extbgrx_gray_convert_mmx
   200         JPP((JDIMENSION img_width,
   201              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   202              JDIMENSION output_row, int num_rows));
   203 EXTERN(void) jsimd_extxbgr_gray_convert_mmx
   204         JPP((JDIMENSION img_width,
   205              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   206              JDIMENSION output_row, int num_rows));
   207 EXTERN(void) jsimd_extxrgb_gray_convert_mmx
   208         JPP((JDIMENSION img_width,
   209              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   210              JDIMENSION output_row, int num_rows));
   212 EXTERN(void) jsimd_ycc_rgb_convert_mmx
   213         JPP((JDIMENSION out_width,
   214              JSAMPIMAGE input_buf, JDIMENSION input_row,
   215              JSAMPARRAY output_buf, int num_rows));
   216 EXTERN(void) jsimd_ycc_extrgb_convert_mmx
   217         JPP((JDIMENSION out_width,
   218              JSAMPIMAGE input_buf, JDIMENSION input_row,
   219              JSAMPARRAY output_buf, int num_rows));
   220 EXTERN(void) jsimd_ycc_extrgbx_convert_mmx
   221         JPP((JDIMENSION out_width,
   222              JSAMPIMAGE input_buf, JDIMENSION input_row,
   223              JSAMPARRAY output_buf, int num_rows));
   224 EXTERN(void) jsimd_ycc_extbgr_convert_mmx
   225         JPP((JDIMENSION out_width,
   226              JSAMPIMAGE input_buf, JDIMENSION input_row,
   227              JSAMPARRAY output_buf, int num_rows));
   228 EXTERN(void) jsimd_ycc_extbgrx_convert_mmx
   229         JPP((JDIMENSION out_width,
   230              JSAMPIMAGE input_buf, JDIMENSION input_row,
   231              JSAMPARRAY output_buf, int num_rows));
   232 EXTERN(void) jsimd_ycc_extxbgr_convert_mmx
   233         JPP((JDIMENSION out_width,
   234              JSAMPIMAGE input_buf, JDIMENSION input_row,
   235              JSAMPARRAY output_buf, int num_rows));
   236 EXTERN(void) jsimd_ycc_extxrgb_convert_mmx
   237         JPP((JDIMENSION out_width,
   238              JSAMPIMAGE input_buf, JDIMENSION input_row,
   239              JSAMPARRAY output_buf, int num_rows));
   241 extern const int jconst_rgb_ycc_convert_sse2[];
   242 EXTERN(void) jsimd_rgb_ycc_convert_sse2
   243         JPP((JDIMENSION img_width,
   244              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   245              JDIMENSION output_row, int num_rows));
   246 EXTERN(void) jsimd_extrgb_ycc_convert_sse2
   247         JPP((JDIMENSION img_width,
   248              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   249              JDIMENSION output_row, int num_rows));
   250 EXTERN(void) jsimd_extrgbx_ycc_convert_sse2
   251         JPP((JDIMENSION img_width,
   252              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   253              JDIMENSION output_row, int num_rows));
   254 EXTERN(void) jsimd_extbgr_ycc_convert_sse2
   255         JPP((JDIMENSION img_width,
   256              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   257              JDIMENSION output_row, int num_rows));
   258 EXTERN(void) jsimd_extbgrx_ycc_convert_sse2
   259         JPP((JDIMENSION img_width,
   260              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   261              JDIMENSION output_row, int num_rows));
   262 EXTERN(void) jsimd_extxbgr_ycc_convert_sse2
   263         JPP((JDIMENSION img_width,
   264              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   265              JDIMENSION output_row, int num_rows));
   266 EXTERN(void) jsimd_extxrgb_ycc_convert_sse2
   267         JPP((JDIMENSION img_width,
   268              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   269              JDIMENSION output_row, int num_rows));
   271 extern const int jconst_rgb_gray_convert_sse2[];
   272 EXTERN(void) jsimd_rgb_gray_convert_sse2
   273         JPP((JDIMENSION img_width,
   274              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   275              JDIMENSION output_row, int num_rows));
   276 EXTERN(void) jsimd_extrgb_gray_convert_sse2
   277         JPP((JDIMENSION img_width,
   278              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   279              JDIMENSION output_row, int num_rows));
   280 EXTERN(void) jsimd_extrgbx_gray_convert_sse2
   281         JPP((JDIMENSION img_width,
   282              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   283              JDIMENSION output_row, int num_rows));
   284 EXTERN(void) jsimd_extbgr_gray_convert_sse2
   285         JPP((JDIMENSION img_width,
   286              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   287              JDIMENSION output_row, int num_rows));
   288 EXTERN(void) jsimd_extbgrx_gray_convert_sse2
   289         JPP((JDIMENSION img_width,
   290              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   291              JDIMENSION output_row, int num_rows));
   292 EXTERN(void) jsimd_extxbgr_gray_convert_sse2
   293         JPP((JDIMENSION img_width,
   294              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   295              JDIMENSION output_row, int num_rows));
   296 EXTERN(void) jsimd_extxrgb_gray_convert_sse2
   297         JPP((JDIMENSION img_width,
   298              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   299              JDIMENSION output_row, int num_rows));
   301 extern const int jconst_ycc_rgb_convert_sse2[];
   302 EXTERN(void) jsimd_ycc_rgb_convert_sse2
   303         JPP((JDIMENSION out_width,
   304              JSAMPIMAGE input_buf, JDIMENSION input_row,
   305              JSAMPARRAY output_buf, int num_rows));
   306 EXTERN(void) jsimd_ycc_extrgb_convert_sse2
   307         JPP((JDIMENSION out_width,
   308              JSAMPIMAGE input_buf, JDIMENSION input_row,
   309              JSAMPARRAY output_buf, int num_rows));
   310 EXTERN(void) jsimd_ycc_extrgbx_convert_sse2
   311         JPP((JDIMENSION out_width,
   312              JSAMPIMAGE input_buf, JDIMENSION input_row,
   313              JSAMPARRAY output_buf, int num_rows));
   314 EXTERN(void) jsimd_ycc_extbgr_convert_sse2
   315         JPP((JDIMENSION out_width,
   316              JSAMPIMAGE input_buf, JDIMENSION input_row,
   317              JSAMPARRAY output_buf, int num_rows));
   318 EXTERN(void) jsimd_ycc_extbgrx_convert_sse2
   319         JPP((JDIMENSION out_width,
   320              JSAMPIMAGE input_buf, JDIMENSION input_row,
   321              JSAMPARRAY output_buf, int num_rows));
   322 EXTERN(void) jsimd_ycc_extxbgr_convert_sse2
   323         JPP((JDIMENSION out_width,
   324              JSAMPIMAGE input_buf, JDIMENSION input_row,
   325              JSAMPARRAY output_buf, int num_rows));
   326 EXTERN(void) jsimd_ycc_extxrgb_convert_sse2
   327         JPP((JDIMENSION out_width,
   328              JSAMPIMAGE input_buf, JDIMENSION input_row,
   329              JSAMPARRAY output_buf, int num_rows));
   331 EXTERN(void) jsimd_rgb_ycc_convert_neon
   332         JPP((JDIMENSION img_width,
   333              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   334              JDIMENSION output_row, int num_rows));
   335 EXTERN(void) jsimd_extrgb_ycc_convert_neon
   336         JPP((JDIMENSION img_width,
   337              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   338              JDIMENSION output_row, int num_rows));
   339 EXTERN(void) jsimd_extrgbx_ycc_convert_neon
   340         JPP((JDIMENSION img_width,
   341              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   342              JDIMENSION output_row, int num_rows));
   343 EXTERN(void) jsimd_extbgr_ycc_convert_neon
   344         JPP((JDIMENSION img_width,
   345              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   346              JDIMENSION output_row, int num_rows));
   347 EXTERN(void) jsimd_extbgrx_ycc_convert_neon
   348         JPP((JDIMENSION img_width,
   349              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   350              JDIMENSION output_row, int num_rows));
   351 EXTERN(void) jsimd_extxbgr_ycc_convert_neon
   352         JPP((JDIMENSION img_width,
   353              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   354              JDIMENSION output_row, int num_rows));
   355 EXTERN(void) jsimd_extxrgb_ycc_convert_neon
   356         JPP((JDIMENSION img_width,
   357              JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
   358              JDIMENSION output_row, int num_rows));
   360 EXTERN(void) jsimd_ycc_rgb_convert_neon
   361         JPP((JDIMENSION out_width,
   362              JSAMPIMAGE input_buf, JDIMENSION input_row,
   363              JSAMPARRAY output_buf, int num_rows));
   364 EXTERN(void) jsimd_ycc_extrgb_convert_neon
   365         JPP((JDIMENSION out_width,
   366              JSAMPIMAGE input_buf, JDIMENSION input_row,
   367              JSAMPARRAY output_buf, int num_rows));
   368 EXTERN(void) jsimd_ycc_extrgbx_convert_neon
   369         JPP((JDIMENSION out_width,
   370              JSAMPIMAGE input_buf, JDIMENSION input_row,
   371              JSAMPARRAY output_buf, int num_rows));
   372 EXTERN(void) jsimd_ycc_extbgr_convert_neon
   373         JPP((JDIMENSION out_width,
   374              JSAMPIMAGE input_buf, JDIMENSION input_row,
   375              JSAMPARRAY output_buf, int num_rows));
   376 EXTERN(void) jsimd_ycc_extbgrx_convert_neon
   377         JPP((JDIMENSION out_width,
   378              JSAMPIMAGE input_buf, JDIMENSION input_row,
   379              JSAMPARRAY output_buf, int num_rows));
   380 EXTERN(void) jsimd_ycc_extxbgr_convert_neon
   381         JPP((JDIMENSION out_width,
   382              JSAMPIMAGE input_buf, JDIMENSION input_row,
   383              JSAMPARRAY output_buf, int num_rows));
   384 EXTERN(void) jsimd_ycc_extxrgb_convert_neon
   385         JPP((JDIMENSION out_width,
   386              JSAMPIMAGE input_buf, JDIMENSION input_row,
   387              JSAMPARRAY output_buf, int num_rows));
   389 /* SIMD Downsample */
   390 EXTERN(void) jsimd_h2v2_downsample_mmx
   391         JPP((JDIMENSION image_width, int max_v_samp_factor,
   392              JDIMENSION v_samp_factor, JDIMENSION width_blocks,
   393              JSAMPARRAY input_data, JSAMPARRAY output_data));
   394 EXTERN(void) jsimd_h2v1_downsample_mmx
   395         JPP((JDIMENSION image_width, int max_v_samp_factor,
   396              JDIMENSION v_samp_factor, JDIMENSION width_blocks,
   397              JSAMPARRAY input_data, JSAMPARRAY output_data));
   399 EXTERN(void) jsimd_h2v2_downsample_sse2
   400         JPP((JDIMENSION image_width, int max_v_samp_factor,
   401              JDIMENSION v_samp_factor, JDIMENSION width_blocks,
   402              JSAMPARRAY input_data, JSAMPARRAY output_data));
   403 EXTERN(void) jsimd_h2v1_downsample_sse2
   404         JPP((JDIMENSION image_width, int max_v_samp_factor,
   405              JDIMENSION v_samp_factor, JDIMENSION width_blocks,
   406              JSAMPARRAY input_data, JSAMPARRAY output_data));
   408 /* SIMD Upsample */
   409 EXTERN(void) jsimd_h2v2_upsample_mmx
   410         JPP((int max_v_samp_factor, JDIMENSION output_width,
   411              JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));
   412 EXTERN(void) jsimd_h2v1_upsample_mmx
   413         JPP((int max_v_samp_factor, JDIMENSION output_width,
   414              JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));
   416 EXTERN(void) jsimd_h2v2_fancy_upsample_mmx
   417         JPP((int max_v_samp_factor, JDIMENSION downsampled_width,
   418              JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));
   419 EXTERN(void) jsimd_h2v1_fancy_upsample_mmx
   420         JPP((int max_v_samp_factor, JDIMENSION downsampled_width,
   421              JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));
   423 EXTERN(void) jsimd_h2v2_merged_upsample_mmx
   424         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   425              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   426 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mmx
   427         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   428              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   429 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mmx
   430         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   431              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   432 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mmx
   433         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   434              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   435 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mmx
   436         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   437              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   438 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mmx
   439         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   440              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   441 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mmx
   442         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   443              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   444 EXTERN(void) jsimd_h2v1_merged_upsample_mmx
   445         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   446              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   447 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mmx
   448         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   449              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   450 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mmx
   451         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   452              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   453 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mmx
   454         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   455              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   456 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mmx
   457         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   458              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   459 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mmx
   460         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   461              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   462 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mmx
   463         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   464              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   466 EXTERN(void) jsimd_h2v2_upsample_sse2
   467         JPP((int max_v_samp_factor, JDIMENSION output_width,
   468              JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));
   469 EXTERN(void) jsimd_h2v1_upsample_sse2
   470         JPP((int max_v_samp_factor, JDIMENSION output_width,
   471              JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));
   473 extern const int jconst_fancy_upsample_sse2[];
   474 EXTERN(void) jsimd_h2v2_fancy_upsample_sse2
   475         JPP((int max_v_samp_factor, JDIMENSION downsampled_width,
   476              JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));
   477 EXTERN(void) jsimd_h2v1_fancy_upsample_sse2
   478         JPP((int max_v_samp_factor, JDIMENSION downsampled_width,
   479              JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));
   481 extern const int jconst_merged_upsample_sse2[];
   482 EXTERN(void) jsimd_h2v2_merged_upsample_sse2
   483         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   484              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   485 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_sse2
   486         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   487              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   488 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_sse2
   489         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   490              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   491 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_sse2
   492         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   493              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   494 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_sse2
   495         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   496              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   497 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_sse2
   498         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   499              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   500 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_sse2
   501         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   502              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   503 EXTERN(void) jsimd_h2v1_merged_upsample_sse2
   504         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   505              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   506 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_sse2
   507         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   508              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   509 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_sse2
   510         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   511              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   512 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_sse2
   513         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   514              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   515 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_sse2
   516         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   517              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   518 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_sse2
   519         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   520              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   521 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_sse2
   522         JPP((JDIMENSION output_width, JSAMPIMAGE input_buf,
   523              JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf));
   525 EXTERN(void) jsimd_h2v1_fancy_upsample_neon
   526         JPP((int max_v_samp_factor, JDIMENSION downsampled_width,
   527              JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));
   529 /* SIMD Sample Conversion */
   530 EXTERN(void) jsimd_convsamp_mmx JPP((JSAMPARRAY sample_data,
   531                                      JDIMENSION start_col,
   532                                      DCTELEM * workspace));
   534 EXTERN(void) jsimd_convsamp_sse2 JPP((JSAMPARRAY sample_data,
   535                                       JDIMENSION start_col,
   536                                       DCTELEM * workspace));
   538 EXTERN(void) jsimd_convsamp_neon JPP((JSAMPARRAY sample_data,
   539                                       JDIMENSION start_col,
   540                                       DCTELEM * workspace));
   542 EXTERN(void) jsimd_convsamp_float_3dnow JPP((JSAMPARRAY sample_data,
   543                                              JDIMENSION start_col,
   544                                              FAST_FLOAT * workspace));
   546 EXTERN(void) jsimd_convsamp_float_sse JPP((JSAMPARRAY sample_data,
   547                                            JDIMENSION start_col,
   548                                            FAST_FLOAT * workspace));
   550 EXTERN(void) jsimd_convsamp_float_sse2 JPP((JSAMPARRAY sample_data,
   551                                             JDIMENSION start_col,
   552                                             FAST_FLOAT * workspace));
   554 /* SIMD Forward DCT */
   555 EXTERN(void) jsimd_fdct_islow_mmx JPP((DCTELEM * data));
   556 EXTERN(void) jsimd_fdct_ifast_mmx JPP((DCTELEM * data));
   558 extern const int jconst_fdct_ifast_sse2[];
   559 EXTERN(void) jsimd_fdct_islow_sse2 JPP((DCTELEM * data));
   560 extern const int jconst_fdct_islow_sse2[];
   561 EXTERN(void) jsimd_fdct_ifast_sse2 JPP((DCTELEM * data));
   563 EXTERN(void) jsimd_fdct_ifast_neon JPP((DCTELEM * data));
   565 EXTERN(void) jsimd_fdct_float_3dnow JPP((FAST_FLOAT * data));
   567 extern const int jconst_fdct_float_sse[];
   568 EXTERN(void) jsimd_fdct_float_sse JPP((FAST_FLOAT * data));
   570 /* SIMD Quantization */
   571 EXTERN(void) jsimd_quantize_mmx JPP((JCOEFPTR coef_block,
   572                                      DCTELEM * divisors,
   573                                      DCTELEM * workspace));
   575 EXTERN(void) jsimd_quantize_sse2 JPP((JCOEFPTR coef_block,
   576                                       DCTELEM * divisors,
   577                                       DCTELEM * workspace));
   579 EXTERN(void) jsimd_quantize_neon JPP((JCOEFPTR coef_block,
   580                                       DCTELEM * divisors,
   581                                       DCTELEM * workspace));
   583 EXTERN(void) jsimd_quantize_float_3dnow JPP((JCOEFPTR coef_block,
   584                                              FAST_FLOAT * divisors,
   585                                              FAST_FLOAT * workspace));
   587 EXTERN(void) jsimd_quantize_float_sse JPP((JCOEFPTR coef_block,
   588                                            FAST_FLOAT * divisors,
   589                                            FAST_FLOAT * workspace));
   591 EXTERN(void) jsimd_quantize_float_sse2 JPP((JCOEFPTR coef_block,
   592                                             FAST_FLOAT * divisors,
   593                                             FAST_FLOAT * workspace));
   595 /* SIMD Reduced Inverse DCT */
   596 EXTERN(void) jsimd_idct_2x2_mmx JPP((void * dct_table,
   597                                      JCOEFPTR coef_block,
   598                                      JSAMPARRAY output_buf,
   599                                      JDIMENSION output_col));
   600 EXTERN(void) jsimd_idct_4x4_mmx JPP((void * dct_table,
   601                                      JCOEFPTR coef_block,
   602                                      JSAMPARRAY output_buf,
   603                                      JDIMENSION output_col));
   605 extern const int jconst_idct_red_sse2[];
   606 EXTERN(void) jsimd_idct_2x2_sse2 JPP((void * dct_table,
   607                                       JCOEFPTR coef_block,
   608                                       JSAMPARRAY output_buf,
   609                                       JDIMENSION output_col));
   610 EXTERN(void) jsimd_idct_4x4_sse2 JPP((void * dct_table,
   611                                       JCOEFPTR coef_block,
   612                                       JSAMPARRAY output_buf,
   613                                       JDIMENSION output_col));
   615 EXTERN(void) jsimd_idct_2x2_neon JPP((void * dct_table,
   616                                       JCOEFPTR coef_block,
   617                                       JSAMPARRAY output_buf,
   618                                       JDIMENSION output_col));
   619 EXTERN(void) jsimd_idct_4x4_neon JPP((void * dct_table,
   620                                       JCOEFPTR coef_block,
   621                                       JSAMPARRAY output_buf,
   622                                       JDIMENSION output_col));
   624 /* SIMD Inverse DCT */
   625 EXTERN(void) jsimd_idct_islow_mmx JPP((void * dct_table,
   626                                        JCOEFPTR coef_block,
   627                                        JSAMPARRAY output_buf,
   628                                        JDIMENSION output_col));
   629 EXTERN(void) jsimd_idct_ifast_mmx JPP((void * dct_table,
   630                                        JCOEFPTR coef_block,
   631                                        JSAMPARRAY output_buf,
   632                                        JDIMENSION output_col));
   634 extern const int jconst_idct_islow_sse2[];
   635 EXTERN(void) jsimd_idct_islow_sse2 JPP((void * dct_table,
   636                                         JCOEFPTR coef_block,
   637                                         JSAMPARRAY output_buf,
   638                                         JDIMENSION output_col));
   639 extern const int jconst_idct_ifast_sse2[];
   640 EXTERN(void) jsimd_idct_ifast_sse2 JPP((void * dct_table,
   641                                         JCOEFPTR coef_block,
   642                                         JSAMPARRAY output_buf,
   643                                         JDIMENSION output_col));
   645 EXTERN(void) jsimd_idct_islow_neon JPP((void * dct_table,
   646                                         JCOEFPTR coef_block,
   647                                         JSAMPARRAY output_buf,
   648                                         JDIMENSION output_col));
   649 EXTERN(void) jsimd_idct_ifast_neon JPP((void * dct_table,
   650                                         JCOEFPTR coef_block,
   651                                         JSAMPARRAY output_buf,
   652                                         JDIMENSION output_col));
   654 EXTERN(void) jsimd_idct_float_3dnow JPP((void * dct_table,
   655                                          JCOEFPTR coef_block,
   656                                          JSAMPARRAY output_buf,
   657                                          JDIMENSION output_col));
   659 extern const int jconst_idct_float_sse[];
   660 EXTERN(void) jsimd_idct_float_sse JPP((void * dct_table,
   661                                        JCOEFPTR coef_block,
   662                                        JSAMPARRAY output_buf,
   663                                        JDIMENSION output_col));
   665 extern const int jconst_idct_float_sse2[];
   666 EXTERN(void) jsimd_idct_float_sse2 JPP((void * dct_table,
   667                                         JCOEFPTR coef_block,
   668                                         JSAMPARRAY output_buf,
   669                                         JDIMENSION output_col));

mercurial