| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * jsimd_x86_64.c |    2  * jsimd_x86_64.c | 
|    3  * |    3  * | 
|    4  * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB |    4  * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB | 
|    5  * Copyright 2009-2011 D. R. Commander |    5  * Copyright 2009-2011 D. R. Commander | 
|    6  *  |    6  *  | 
|    7  * Based on the x86 SIMD extension for IJG JPEG library, |    7  * Based on the x86 SIMD extension for IJG JPEG library, | 
|    8  * Copyright (C) 1999-2006, MIYASAKA Masaru. |    8  * Copyright (C) 1999-2006, MIYASAKA Masaru. | 
|    9  * For conditions of distribution and use, see copyright notice in jsimdext.inc |    9  * For conditions of distribution and use, see copyright notice in jsimdext.inc | 
|   10  * |   10  * | 
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   86                        JDIMENSION output_row, int num_rows) |   86                        JDIMENSION output_row, int num_rows) | 
|   87 { |   87 { | 
|   88   void (*sse2fct)(JDIMENSION, JSAMPARRAY, JSAMPIMAGE, JDIMENSION, int); |   88   void (*sse2fct)(JDIMENSION, JSAMPARRAY, JSAMPIMAGE, JDIMENSION, int); | 
|   89  |   89  | 
|   90   switch(cinfo->in_color_space) |   90   switch(cinfo->in_color_space) | 
|   91   { |   91   { | 
|   92     case JCS_EXT_RGB: |   92     case JCS_EXT_RGB: | 
|   93       sse2fct=jsimd_extrgb_ycc_convert_sse2; |   93       sse2fct=jsimd_extrgb_ycc_convert_sse2; | 
|   94       break; |   94       break; | 
|   95     case JCS_EXT_RGBX: |   95     case JCS_EXT_RGBX: | 
 |   96     case JCS_EXT_RGBA: | 
|   96       sse2fct=jsimd_extrgbx_ycc_convert_sse2; |   97       sse2fct=jsimd_extrgbx_ycc_convert_sse2; | 
|   97       break; |   98       break; | 
|   98     case JCS_EXT_BGR: |   99     case JCS_EXT_BGR: | 
|   99       sse2fct=jsimd_extbgr_ycc_convert_sse2; |  100       sse2fct=jsimd_extbgr_ycc_convert_sse2; | 
|  100       break; |  101       break; | 
|  101     case JCS_EXT_BGRX: |  102     case JCS_EXT_BGRX: | 
 |  103     case JCS_EXT_BGRA: | 
|  102       sse2fct=jsimd_extbgrx_ycc_convert_sse2; |  104       sse2fct=jsimd_extbgrx_ycc_convert_sse2; | 
|  103       break; |  105       break; | 
|  104     case JCS_EXT_XBGR: |  106     case JCS_EXT_XBGR: | 
 |  107     case JCS_EXT_ABGR: | 
|  105       sse2fct=jsimd_extxbgr_ycc_convert_sse2; |  108       sse2fct=jsimd_extxbgr_ycc_convert_sse2; | 
|  106       break; |  109       break; | 
|  107     case JCS_EXT_XRGB: |  110     case JCS_EXT_XRGB: | 
 |  111     case JCS_EXT_ARGB: | 
|  108       sse2fct=jsimd_extxrgb_ycc_convert_sse2; |  112       sse2fct=jsimd_extxrgb_ycc_convert_sse2; | 
|  109       break; |  113       break; | 
|  110     default: |  114     default: | 
|  111       sse2fct=jsimd_rgb_ycc_convert_sse2; |  115       sse2fct=jsimd_rgb_ycc_convert_sse2; | 
|  112       break; |  116       break; | 
|  113   } |  117   } | 
|  114  |  118  | 
|  115   sse2fct(cinfo->image_width, input_buf, output_buf, output_row, num_rows); |  119   sse2fct(cinfo->image_width, input_buf, output_buf, output_row, num_rows); | 
|  116 } |  120 } | 
|  117  |  121  | 
|  118 GLOBAL(void) |  122 GLOBAL(void) | 
|  119 jsimd_rgb_gray_convert (j_compress_ptr cinfo, |  123 jsimd_rgb_gray_convert (j_compress_ptr cinfo, | 
|  120                         JSAMPARRAY input_buf, JSAMPIMAGE output_buf, |  124                         JSAMPARRAY input_buf, JSAMPIMAGE output_buf, | 
|  121                         JDIMENSION output_row, int num_rows) |  125                         JDIMENSION output_row, int num_rows) | 
|  122 { |  126 { | 
|  123   void (*sse2fct)(JDIMENSION, JSAMPARRAY, JSAMPIMAGE, JDIMENSION, int); |  127   void (*sse2fct)(JDIMENSION, JSAMPARRAY, JSAMPIMAGE, JDIMENSION, int); | 
|  124  |  128  | 
|  125   switch(cinfo->in_color_space) |  129   switch(cinfo->in_color_space) | 
|  126   { |  130   { | 
|  127     case JCS_EXT_RGB: |  131     case JCS_EXT_RGB: | 
|  128       sse2fct=jsimd_extrgb_gray_convert_sse2; |  132       sse2fct=jsimd_extrgb_gray_convert_sse2; | 
|  129       break; |  133       break; | 
|  130     case JCS_EXT_RGBX: |  134     case JCS_EXT_RGBX: | 
 |  135     case JCS_EXT_RGBA: | 
|  131       sse2fct=jsimd_extrgbx_gray_convert_sse2; |  136       sse2fct=jsimd_extrgbx_gray_convert_sse2; | 
|  132       break; |  137       break; | 
|  133     case JCS_EXT_BGR: |  138     case JCS_EXT_BGR: | 
|  134       sse2fct=jsimd_extbgr_gray_convert_sse2; |  139       sse2fct=jsimd_extbgr_gray_convert_sse2; | 
|  135       break; |  140       break; | 
|  136     case JCS_EXT_BGRX: |  141     case JCS_EXT_BGRX: | 
 |  142     case JCS_EXT_BGRA: | 
|  137       sse2fct=jsimd_extbgrx_gray_convert_sse2; |  143       sse2fct=jsimd_extbgrx_gray_convert_sse2; | 
|  138       break; |  144       break; | 
|  139     case JCS_EXT_XBGR: |  145     case JCS_EXT_XBGR: | 
 |  146     case JCS_EXT_ABGR: | 
|  140       sse2fct=jsimd_extxbgr_gray_convert_sse2; |  147       sse2fct=jsimd_extxbgr_gray_convert_sse2; | 
|  141       break; |  148       break; | 
|  142     case JCS_EXT_XRGB: |  149     case JCS_EXT_XRGB: | 
 |  150     case JCS_EXT_ARGB: | 
|  143       sse2fct=jsimd_extxrgb_gray_convert_sse2; |  151       sse2fct=jsimd_extxrgb_gray_convert_sse2; | 
|  144       break; |  152       break; | 
|  145     default: |  153     default: | 
|  146       sse2fct=jsimd_rgb_gray_convert_sse2; |  154       sse2fct=jsimd_rgb_gray_convert_sse2; | 
|  147       break; |  155       break; | 
|  148   } |  156   } | 
|  149  |  157  | 
|  150   sse2fct(cinfo->image_width, input_buf, output_buf, output_row, num_rows); |  158   sse2fct(cinfo->image_width, input_buf, output_buf, output_row, num_rows); | 
|  151 } |  159 } | 
|  152  |  160  | 
|  153 GLOBAL(void) |  161 GLOBAL(void) | 
|  154 jsimd_ycc_rgb_convert (j_decompress_ptr cinfo, |  162 jsimd_ycc_rgb_convert (j_decompress_ptr cinfo, | 
|  155                        JSAMPIMAGE input_buf, JDIMENSION input_row, |  163                        JSAMPIMAGE input_buf, JDIMENSION input_row, | 
|  156                        JSAMPARRAY output_buf, int num_rows) |  164                        JSAMPARRAY output_buf, int num_rows) | 
|  157 { |  165 { | 
|  158   void (*sse2fct)(JDIMENSION, JSAMPIMAGE, JDIMENSION, JSAMPARRAY, int); |  166   void (*sse2fct)(JDIMENSION, JSAMPIMAGE, JDIMENSION, JSAMPARRAY, int); | 
|  159  |  167  | 
|  160   switch(cinfo->out_color_space) |  168   switch(cinfo->out_color_space) | 
|  161   { |  169   { | 
|  162     case JCS_EXT_RGB: |  170     case JCS_EXT_RGB: | 
|  163       sse2fct=jsimd_ycc_extrgb_convert_sse2; |  171       sse2fct=jsimd_ycc_extrgb_convert_sse2; | 
|  164       break; |  172       break; | 
|  165     case JCS_EXT_RGBX: |  173     case JCS_EXT_RGBX: | 
 |  174     case JCS_EXT_RGBA: | 
|  166       sse2fct=jsimd_ycc_extrgbx_convert_sse2; |  175       sse2fct=jsimd_ycc_extrgbx_convert_sse2; | 
|  167       break; |  176       break; | 
|  168     case JCS_EXT_BGR: |  177     case JCS_EXT_BGR: | 
|  169       sse2fct=jsimd_ycc_extbgr_convert_sse2; |  178       sse2fct=jsimd_ycc_extbgr_convert_sse2; | 
|  170       break; |  179       break; | 
|  171     case JCS_EXT_BGRX: |  180     case JCS_EXT_BGRX: | 
 |  181     case JCS_EXT_BGRA: | 
|  172       sse2fct=jsimd_ycc_extbgrx_convert_sse2; |  182       sse2fct=jsimd_ycc_extbgrx_convert_sse2; | 
|  173       break; |  183       break; | 
|  174     case JCS_EXT_XBGR: |  184     case JCS_EXT_XBGR: | 
 |  185     case JCS_EXT_ABGR: | 
|  175       sse2fct=jsimd_ycc_extxbgr_convert_sse2; |  186       sse2fct=jsimd_ycc_extxbgr_convert_sse2; | 
|  176       break; |  187       break; | 
|  177     case JCS_EXT_XRGB: |  188     case JCS_EXT_XRGB: | 
 |  189     case JCS_EXT_ARGB: | 
|  178       sse2fct=jsimd_ycc_extxrgb_convert_sse2; |  190       sse2fct=jsimd_ycc_extxrgb_convert_sse2; | 
|  179       break; |  191       break; | 
|  180     default: |  192     default: | 
|  181       sse2fct=jsimd_ycc_rgb_convert_sse2; |  193       sse2fct=jsimd_ycc_rgb_convert_sse2; | 
|  182       break; |  194       break; | 
|  183   } |  195   } | 
|  184  |  196  | 
|  185   sse2fct(cinfo->output_width, input_buf, input_row, output_buf, num_rows); |  197   sse2fct(cinfo->output_width, input_buf, input_row, output_buf, num_rows); | 
|  186 } |  198 } | 
|  187  |  199  | 
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  366                             JSAMPARRAY output_buf) |  378                             JSAMPARRAY output_buf) | 
|  367 { |  379 { | 
|  368   void (*sse2fct)(JDIMENSION, JSAMPIMAGE, JDIMENSION, JSAMPARRAY); |  380   void (*sse2fct)(JDIMENSION, JSAMPIMAGE, JDIMENSION, JSAMPARRAY); | 
|  369  |  381  | 
|  370   switch(cinfo->out_color_space) |  382   switch(cinfo->out_color_space) | 
|  371   { |  383   { | 
|  372     case JCS_EXT_RGB: |  384     case JCS_EXT_RGB: | 
|  373       sse2fct=jsimd_h2v2_extrgb_merged_upsample_sse2; |  385       sse2fct=jsimd_h2v2_extrgb_merged_upsample_sse2; | 
|  374       break; |  386       break; | 
|  375     case JCS_EXT_RGBX: |  387     case JCS_EXT_RGBX: | 
 |  388     case JCS_EXT_RGBA: | 
|  376       sse2fct=jsimd_h2v2_extrgbx_merged_upsample_sse2; |  389       sse2fct=jsimd_h2v2_extrgbx_merged_upsample_sse2; | 
|  377       break; |  390       break; | 
|  378     case JCS_EXT_BGR: |  391     case JCS_EXT_BGR: | 
|  379       sse2fct=jsimd_h2v2_extbgr_merged_upsample_sse2; |  392       sse2fct=jsimd_h2v2_extbgr_merged_upsample_sse2; | 
|  380       break; |  393       break; | 
|  381     case JCS_EXT_BGRX: |  394     case JCS_EXT_BGRX: | 
 |  395     case JCS_EXT_BGRA: | 
|  382       sse2fct=jsimd_h2v2_extbgrx_merged_upsample_sse2; |  396       sse2fct=jsimd_h2v2_extbgrx_merged_upsample_sse2; | 
|  383       break; |  397       break; | 
|  384     case JCS_EXT_XBGR: |  398     case JCS_EXT_XBGR: | 
 |  399     case JCS_EXT_ABGR: | 
|  385       sse2fct=jsimd_h2v2_extxbgr_merged_upsample_sse2; |  400       sse2fct=jsimd_h2v2_extxbgr_merged_upsample_sse2; | 
|  386       break; |  401       break; | 
|  387     case JCS_EXT_XRGB: |  402     case JCS_EXT_XRGB: | 
 |  403     case JCS_EXT_ARGB: | 
|  388       sse2fct=jsimd_h2v2_extxrgb_merged_upsample_sse2; |  404       sse2fct=jsimd_h2v2_extxrgb_merged_upsample_sse2; | 
|  389       break; |  405       break; | 
|  390     default: |  406     default: | 
|  391       sse2fct=jsimd_h2v2_merged_upsample_sse2; |  407       sse2fct=jsimd_h2v2_merged_upsample_sse2; | 
|  392       break; |  408       break; | 
|  393   } |  409   } | 
|  394  |  410  | 
|  395   sse2fct(cinfo->output_width, input_buf, in_row_group_ctr, output_buf); |  411   sse2fct(cinfo->output_width, input_buf, in_row_group_ctr, output_buf); | 
|  396 } |  412 } | 
|  397  |  413  | 
|  398 GLOBAL(void) |  414 GLOBAL(void) | 
|  399 jsimd_h2v1_merged_upsample (j_decompress_ptr cinfo, |  415 jsimd_h2v1_merged_upsample (j_decompress_ptr cinfo, | 
|  400                             JSAMPIMAGE input_buf, |  416                             JSAMPIMAGE input_buf, | 
|  401                             JDIMENSION in_row_group_ctr, |  417                             JDIMENSION in_row_group_ctr, | 
|  402                             JSAMPARRAY output_buf) |  418                             JSAMPARRAY output_buf) | 
|  403 { |  419 { | 
|  404   void (*sse2fct)(JDIMENSION, JSAMPIMAGE, JDIMENSION, JSAMPARRAY); |  420   void (*sse2fct)(JDIMENSION, JSAMPIMAGE, JDIMENSION, JSAMPARRAY); | 
|  405  |  421  | 
|  406   switch(cinfo->out_color_space) |  422   switch(cinfo->out_color_space) | 
|  407   { |  423   { | 
|  408     case JCS_EXT_RGB: |  424     case JCS_EXT_RGB: | 
|  409       sse2fct=jsimd_h2v1_extrgb_merged_upsample_sse2; |  425       sse2fct=jsimd_h2v1_extrgb_merged_upsample_sse2; | 
|  410       break; |  426       break; | 
|  411     case JCS_EXT_RGBX: |  427     case JCS_EXT_RGBX: | 
 |  428     case JCS_EXT_RGBA: | 
|  412       sse2fct=jsimd_h2v1_extrgbx_merged_upsample_sse2; |  429       sse2fct=jsimd_h2v1_extrgbx_merged_upsample_sse2; | 
|  413       break; |  430       break; | 
|  414     case JCS_EXT_BGR: |  431     case JCS_EXT_BGR: | 
|  415       sse2fct=jsimd_h2v1_extbgr_merged_upsample_sse2; |  432       sse2fct=jsimd_h2v1_extbgr_merged_upsample_sse2; | 
|  416       break; |  433       break; | 
|  417     case JCS_EXT_BGRX: |  434     case JCS_EXT_BGRX: | 
 |  435     case JCS_EXT_BGRA: | 
|  418       sse2fct=jsimd_h2v1_extbgrx_merged_upsample_sse2; |  436       sse2fct=jsimd_h2v1_extbgrx_merged_upsample_sse2; | 
|  419       break; |  437       break; | 
|  420     case JCS_EXT_XBGR: |  438     case JCS_EXT_XBGR: | 
 |  439     case JCS_EXT_ABGR: | 
|  421       sse2fct=jsimd_h2v1_extxbgr_merged_upsample_sse2; |  440       sse2fct=jsimd_h2v1_extxbgr_merged_upsample_sse2; | 
|  422       break; |  441       break; | 
|  423     case JCS_EXT_XRGB: |  442     case JCS_EXT_XRGB: | 
 |  443     case JCS_EXT_ARGB: | 
|  424       sse2fct=jsimd_h2v1_extxrgb_merged_upsample_sse2; |  444       sse2fct=jsimd_h2v1_extxrgb_merged_upsample_sse2; | 
|  425       break; |  445       break; | 
|  426     default: |  446     default: | 
|  427       sse2fct=jsimd_h2v1_merged_upsample_sse2; |  447       sse2fct=jsimd_h2v1_merged_upsample_sse2; | 
|  428       break; |  448       break; | 
|  429   } |  449   } | 
|  430  |  450  | 
|  431   sse2fct(cinfo->output_width, input_buf, in_row_group_ctr, output_buf); |  451   sse2fct(cinfo->output_width, input_buf, in_row_group_ctr, output_buf); | 
|  432 } |  452 } | 
|  433  |  453  | 
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  724  |  744  | 
|  725 GLOBAL(void) |  745 GLOBAL(void) | 
|  726 jsimd_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr, |  746 jsimd_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr, | 
|  727                 JCOEFPTR coef_block, JSAMPARRAY output_buf, |  747                 JCOEFPTR coef_block, JSAMPARRAY output_buf, | 
|  728                 JDIMENSION output_col) |  748                 JDIMENSION output_col) | 
|  729 { |  749 { | 
|  730   jsimd_idct_float_sse2(compptr->dct_table, coef_block, |  750   jsimd_idct_float_sse2(compptr->dct_table, coef_block, | 
|  731                         output_buf, output_col); |  751                         output_buf, output_col); | 
|  732 } |  752 } | 
|  733  |  753  | 
| OLD | NEW |