vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Dec 17 20:04:46 2018 +0200| [797c455918e4b874f0b22e166df8eb6174bf35fd] | committer: Rémi Denis-Courmont
aarch64: allow run-time NEON detection (if NEON is disabled in the C compiler settings) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=797c455918e4b874f0b22e166df8eb6174bf35fd --- configure.ac | 60 ++++++++++++++------------ modules/video_filter/deinterlace/merge_arm64.S | 1 + 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/configure.ac b/configure.ac index eedb12da6d..9b42a0b07d 100644 --- a/configure.ac +++ b/configure.ac @@ -1465,46 +1465,50 @@ AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"]) AC_ARG_ENABLE([neon], AS_HELP_STRING([--disable-neon], - [disable NEON optimizations (default auto)]),, [ - AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"]) + [disable ARM NEON optimizations (default auto)]),, [ + case "${host_cpu}" in + "arm") + enable_neon="32" + ;; + "aarch64") + enable_neon="64" + ;; + *) + enable_neon="no" + ;; + esac ]) AS_IF([test "${enable_neon}" != "no"], [ VLC_SAVE_FLAGS - CFLAGS="${CFLAGS} -mfpu=neon -mhard-float" AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM(,[[ + AS_IF([test "${enable_neon}" != "64"], [ + CFLAGS="${CFLAGS} -mfpu=neon -mhard-float" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM(,[[ asm volatile("vqmovun.s64 d0, q1":::"d0"); ]]) + ], [ + ac_cv_arm_neon="32" + ], [ + ac_cv_arm_neon="no" + ]) ], [ - ac_cv_arm_neon="yes" - ], [ - ac_cv_arm_neon="no" - ]) - ]) - VLC_RESTORE_FLAGS -]) -AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "yes"]) - -AC_ARG_ENABLE([arm64], - AS_HELP_STRING([--disable-arm64], - [disable arm 64-bit optimizations (default auto)]),, [ - AS_IF([test "${host_cpu}" = "aarch64"], [enable_arm64="yes"] ,[enable_arm64="no"]) -]) -AS_IF([test "${enable_arm64}" != "no"], [ - AC_CACHE_CHECK([if $CCAS groks ARM 64 SIMD assembly], [ac_cv_arm64], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM(,[[ + CFLAGS="${CFLAGS} -march=armv8-a+simd" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM(,[[ asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0"); ]]) - ], [ - ac_cv_arm64="yes" - ], [ - ac_cv_arm64="no" + ], [ + ac_cv_arm_neon="64" + ], [ + ac_cv_arm_neon="no" + ]) ]) ]) + VLC_RESTORE_FLAGS ]) -AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm64}" = "yes"]) +AM_CONDITIONAL([HAVE_NEON], [test "${ac_cv_arm_neon}" = "32"]) +AM_CONDITIONAL([HAVE_ARM64], [test "${ac_cv_arm_neon}" = "64"]) AC_ARG_ENABLE([sve], AS_HELP_STRING([--disable-sve], diff --git a/modules/video_filter/deinterlace/merge_arm64.S b/modules/video_filter/deinterlace/merge_arm64.S index 7b70678891..9efc8f76b3 100644 --- a/modules/video_filter/deinterlace/merge_arm64.S +++ b/modules/video_filter/deinterlace/merge_arm64.S @@ -21,6 +21,7 @@ #include "../../arm_neon/asm.S" + .arch_extension simd .text #define DEST x0 _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
