summaryrefslogtreecommitdiff
path: root/pngpriv.h
diff options
context:
space:
mode:
authorMatt Sarett <msarett@google.com>2016-02-15 14:41:27 -0500
committerMatt Sarett <msarett@google.com>2016-02-15 14:41:27 -0500
commit9c946e22fcad10c2a44c0380c0909da6732097ce (patch)
tree2d78045a535e4e8c22cd9af5888856006b9b747c /pngpriv.h
parent08bd7654bc15ee53a6f3c6199aedfab636027588 (diff)
downloadlibpng-9c946e22fcad10c2a44c0380c0909da6732097ce.tar.gz
Add SSSE3 and SSE2 optimized png filter functions
Diffstat (limited to 'pngpriv.h')
-rw-r--r--pngpriv.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/pngpriv.h b/pngpriv.h
index e210a01c5..9f4d6302d 100644
--- a/pngpriv.h
+++ b/pngpriv.h
@@ -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,