123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #define _POSIX_SOURCE 1
- #include <stdio.h>
- #include "../pngpriv.h"
- #ifdef PNG_READ_SUPPORTED
- #if PNG_POWERPC_VSX_OPT > 0
- #ifdef PNG_POWERPC_VSX_CHECK_SUPPORTED
- #ifndef PNG_POWERPC_VSX_FILE
- # ifdef __linux__
- # define PNG_POWERPC_VSX_FILE "contrib/powerpc-vsx/linux_aux.c"
- # endif
- #endif
- #ifdef PNG_POWERPC_VSX_FILE
- #include <signal.h> /* for sig_atomic_t */
- static int png_have_vsx(png_structp png_ptr);
- #include PNG_POWERPC_VSX_FILE
- #else
- # error "PNG_POWERPC_VSX_FILE undefined: no support for run-time POWERPC VSX checks"
- #endif
- #endif
- void
- png_init_filter_functions_vsx(png_structp pp, unsigned int bpp)
- {
-
- #ifdef PNG_POWERPC_VSX_API_SUPPORTED
- switch ((pp->options >> PNG_POWERPC_VSX) & 3)
- {
- case PNG_OPTION_UNSET:
-
- #endif
- #ifdef PNG_POWERPC_VSX_CHECK_SUPPORTED
- {
- static volatile sig_atomic_t no_vsx = -1;
- if (no_vsx < 0)
- no_vsx = !png_have_vsx(pp);
- if (no_vsx)
- return;
- }
- #ifdef PNG_POWERPC_VSX_API_SUPPORTED
- break;
- #endif
- #endif
- #ifdef PNG_POWERPC_VSX_API_SUPPORTED
- default:
- return;
- case PNG_OPTION_ON:
-
- break;
- }
- #endif
-
- pp->read_filter[PNG_FILTER_VALUE_UP-1] = png_read_filter_row_up_vsx;
- if (bpp == 3)
- {
- pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub3_vsx;
- pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg3_vsx;
- pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = png_read_filter_row_paeth3_vsx;
- }
- else if (bpp == 4)
- {
- pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub4_vsx;
- pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg4_vsx;
- pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = png_read_filter_row_paeth4_vsx;
- }
- }
- #endif
- #endif
|