提交 db9d9684 编写于 作者: J John Bowler 提交者: Glenn Randers-Pehrson

[libpng16] Cleaned up ARM NEON compilation handling. The tests are now in

pngpriv.h and detect the broken GCC compilers.
上级 9e9977e1
Libpng 1.6.7beta03 - October 17, 2013 Libpng 1.6.7beta03 - October 18, 2013
This is not intended to be a public release. It will be replaced This is not intended to be a public release. It will be replaced
within a few weeks by a public version or by another test version. within a few weeks by a public version or by another test version.
...@@ -72,12 +72,14 @@ Version 1.6.7beta02 [October 12, 2013] ...@@ -72,12 +72,14 @@ Version 1.6.7beta02 [October 12, 2013]
Make autogen.sh work with automake 1.13 as well as 1.14. Do this by always Make autogen.sh work with automake 1.13 as well as 1.14. Do this by always
removing the 1.14 'compile' script but never checking for it. removing the 1.14 'compile' script but never checking for it.
Version 1.6.7beta03 [October 17, 2013] Version 1.6.7beta03 [October 18, 2013]
Added ARMv8 support (James Yu <james.yu at linaro.org>). Added file Added ARMv8 support (James Yu <james.yu at linaro.org>). Added file
arm/filter_neon_intrinsics.c; enable with configuration flag arm/filter_neon_intrinsics.c; enable with configuration flag
PNG_ARM_NEON_INTRINSICS. PNG_ARM_NEON_INTRINSICS.
Revised pngvalid to generate size images with as many filters as it can Revised pngvalid to generate size images with as many filters as it can
manage, limited by the number of rows. manage, limited by the number of rows.
Cleaned up ARM NEON compilation handling. The tests are now in pngpriv.h
and detect the broken GCC compilers.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit
......
...@@ -4686,12 +4686,14 @@ Version 1.6.7beta02 [October 12, 2013] ...@@ -4686,12 +4686,14 @@ Version 1.6.7beta02 [October 12, 2013]
Make autogen.sh work with automake 1.13 as well as 1.14. Do this by always Make autogen.sh work with automake 1.13 as well as 1.14. Do this by always
removing the 1.14 'compile' script but never checking for it. removing the 1.14 'compile' script but never checking for it.
Version 1.6.7beta03 [October 17, 2013] Version 1.6.7beta03 [October 18, 2013]
Added ARMv8 support (James Yu <james.yu at linaro.org>). Added file Added ARMv8 support (James Yu <james.yu at linaro.org>). Added file
arm/filter_neon_intrinsics.c; enable with configuration flag arm/filter_neon_intrinsics.c; enable with configuration flag
PNG_ARM_NEON_INTRINSICS. PNG_ARM_NEON_INTRINSICS.
Revised pngvalid to generate size images with as many filters as it can Revised pngvalid to generate size images with as many filters as it can
manage, limited by the number of rows. manage, limited by the number of rows.
Cleaned up ARM NEON compilation handling. The tests are now in pngpriv.h
and detect the broken GCC compilers.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit
......
...@@ -22,9 +22,10 @@ ...@@ -22,9 +22,10 @@
/* Assembler NEON support - only works for 32-bit ARM (i.e. it does not work for /* Assembler NEON support - only works for 32-bit ARM (i.e. it does not work for
* ARM64). The code in arm/filter_neon_intrinsics.c supports ARM64, however it * ARM64). The code in arm/filter_neon_intrinsics.c supports ARM64, however it
* only works if -mfpu=neon is specified on the GCC command line. * only works if -mfpu=neon is specified on the GCC command line. See pngpriv.h
* for the logic which sets PNG_USE_ARM_NEON_ASM:
*/ */
#ifndef __ARM_NEON__ /* else use arm/filter_neon_intrinsics.c */ #ifdef PNG_USE_ARM_NEON_ASM /* else use arm/filter_neon_intrinsics.c */
#ifdef PNG_READ_SUPPORTED #ifdef PNG_READ_SUPPORTED
#if PNG_ARM_NEON_OPT > 0 #if PNG_ARM_NEON_OPT > 0
...@@ -241,4 +242,4 @@ func png_read_filter_row_paeth3_neon, export=1 ...@@ -241,4 +242,4 @@ func png_read_filter_row_paeth3_neon, export=1
endfunc endfunc
#endif /* PNG_ARM_NEON_OPT > 0 */ #endif /* PNG_ARM_NEON_OPT > 0 */
#endif /* PNG_READ_SUPPORTED */ #endif /* PNG_READ_SUPPORTED */
#endif /* !__ARM_NEON__ */ #endif /* PNG_USE_ARM_NEON_ASM */
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include "pngpriv.h" #include "pngpriv.h"
/* This code requires -mfpu=neon on the command line: */ /* This code requires -mfpu=neon on the command line: */
#ifdef __ARM_NEON__ /* else use arm/filter_neon.S */ #ifndef PNG_USE_ARM_NEON_ASM /* else use arm/filter_neon.S */
#include <arm_neon.h> #include <arm_neon.h>
...@@ -369,4 +369,4 @@ png_read_filter_row_paeth4_neon(png_row_infop row_info, png_bytep row, ...@@ -369,4 +369,4 @@ png_read_filter_row_paeth4_neon(png_row_infop row_info, png_bytep row,
#endif /* PNG_ARM_NEON_OPT > 0 */ #endif /* PNG_ARM_NEON_OPT > 0 */
#endif /* PNG_READ_SUPPORTED */ #endif /* PNG_READ_SUPPORTED */
#endif /* __ARM_NEON__ */ #endif /* !PNG_USE_ARM_NEON_ASM */
...@@ -128,6 +128,30 @@ ...@@ -128,6 +128,30 @@
# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_neon # define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_neon
#endif #endif
#ifndef PNG_USE_ARM_NEON_ASM
/* By default the 'intrinsics' code in arm/filter_neon_intrinsics.c is used
* if possible - if __ARM_NEON__ is set and the compiler version is not known
* to be broken. ASM code can be forced by -DPNG_USE_ARM_NEON_ASM on the
* command line.
*/
# ifndef __ARM_NEON__
/* The 'intrinsics' code simply won't compile without this -mfpu=neon: */
# define PNG_USE_ARM_NEON_ASM
# endif
#endif
/* Put compiler specific checks below: */
#ifndef PNG_USE_ARM_NEON_ASM
# ifdef __GNUC__
/* GCC 4.5.4 NEON support is known to be broken. 4.6.3 is known to work,
* so if this *is* GCC, or G++, look for a version >4.5
*/
# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)
# define PNG_USE_ARM_NEON_ASM
# endif
# endif
#endif
/* Is this a build of a DLL where compilation of the object modules requires /* 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 * different preprocessor settings to those required for a simple library? If
* so PNG_BUILD_DLL must be set. * so PNG_BUILD_DLL must be set.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册