diff options
author | Matt Sarett <msarett@google.com> | 2016-02-15 14:41:27 -0500 |
---|---|---|
committer | Matt Sarett <msarett@google.com> | 2016-02-15 14:41:27 -0500 |
commit | 9c946e22fcad10c2a44c0380c0909da6732097ce (patch) | |
tree | 2d78045a535e4e8c22cd9af5888856006b9b747c /pngpriv.h | |
parent | 08bd7654bc15ee53a6f3c6199aedfab636027588 (diff) | |
download | libpng-9c946e22fcad10c2a44c0380c0909da6732097ce.tar.gz |
Add SSSE3 and SSE2 optimized png filter functions
Diffstat (limited to 'pngpriv.h')
-rw-r--r-- | pngpriv.h | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -182,6 +182,18 @@ # endif #endif /* PNG_ARM_NEON_OPT > 0 */ +#ifndef PNG_INTEL_SSE2_OPT +# if defined(__SSE3__) || defined(__SSSE3__) +# define PNG_INTEL_SSE2_OPT 2 +# elif defined(__SSE2__) +# define PNG_INTEL_SSE2_OPT 1 +# endif +#endif + +#if PNG_INTEL_SSE2_OPT > 0 +# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_sse2 +#endif + /* Is this a build of a DLL where compilation of the object modules requires * different preprocessor settings to those required for a simple library? If * so PNG_BUILD_DLL must be set. @@ -1189,6 +1201,19 @@ PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_neon,(png_row_infop PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_neon,(png_row_infop row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); + /* Choose the best filter to use and filter the row data */ PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr, png_row_infop row_info),PNG_EMPTY); @@ -1915,6 +1940,8 @@ PNG_INTERNAL_FUNCTION(void, PNG_FILTER_OPTIMIZATIONS, (png_structp png_ptr, */ PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_neon, (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_sse2, + (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); #endif PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr, |