configure: set WEBP_HAVE_AVX2 when available

this is used to set WEBP_USE_AVX2 in files where the build flag won't be
used, i.e., dsp/enc.c, which enables VP8EncDspInitAVX2() to be called

Change-Id: I362f4ba39ca40d3e07a081292d5f743c649d9d7f
This commit is contained in:
James Zern 2014-06-03 23:29:23 -07:00
parent a2ac8a420e
commit 230a055501
3 changed files with 16 additions and 6 deletions

View File

@ -60,6 +60,11 @@ TEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wvla])
AC_SUBST([AM_CFLAGS]) AC_SUBST([AM_CFLAGS])
TEST_AND_ADD_CFLAGS([AVX2_FLAGS], [-mavx2]) TEST_AND_ADD_CFLAGS([AVX2_FLAGS], [-mavx2])
# Assume the presence of any flag is enough. This could be made more robust
# with a header and/or compile check if needed.
AS_IF([test -n "$AVX2_FLAGS"], [
AC_DEFINE(WEBP_HAVE_AVX2, [1],
[Set to 1 if AVX2 is supported])])
AC_SUBST([AVX2_FLAGS]) AC_SUBST([AVX2_FLAGS])
dnl === CLEAR_LIBVARS([var_pfx]) dnl === CLEAR_LIBVARS([var_pfx])

View File

@ -14,6 +14,10 @@
#ifndef WEBP_DSP_DSP_H_ #ifndef WEBP_DSP_DSP_H_
#define WEBP_DSP_DSP_H_ #define WEBP_DSP_DSP_H_
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "../webp/types.h" #include "../webp/types.h"
#ifdef __cplusplus #ifdef __cplusplus
@ -40,7 +44,7 @@ extern "C" {
#define WEBP_USE_SSE2 #define WEBP_USE_SSE2
#endif #endif
#if defined(__AVX2__) #if defined(__AVX2__) || defined(WEBP_HAVE_AVX2)
#define WEBP_USE_AVX2 #define WEBP_USE_AVX2
#endif #endif

View File

@ -720,17 +720,18 @@ void VP8EncDspInit(void) {
if (VP8GetCPUInfo(kSSE2)) { if (VP8GetCPUInfo(kSSE2)) {
VP8EncDspInitSSE2(); VP8EncDspInitSSE2();
} }
// TODO(jzern): this should be conditionally included based on a configure #endif
// (HAVE_AVX2) define. We can't use WEBP_USE_AVX2/__AVX2__ here as -mavx2 #if defined(WEBP_USE_AVX2)
// won't be defined for this file.
if (VP8GetCPUInfo(kAVX2)) { if (VP8GetCPUInfo(kAVX2)) {
VP8EncDspInitAVX2(); VP8EncDspInitAVX2();
} }
#elif defined(WEBP_USE_NEON) #endif
#if defined(WEBP_USE_NEON)
if (VP8GetCPUInfo(kNEON)) { if (VP8GetCPUInfo(kNEON)) {
VP8EncDspInitNEON(); VP8EncDspInitNEON();
} }
#elif defined(WEBP_USE_MIPS32) #endif
#if defined(WEBP_USE_MIPS32)
if (VP8GetCPUInfo(kMIPS32)) { if (VP8GetCPUInfo(kMIPS32)) {
VP8EncDspInitMIPS32(); VP8EncDspInitMIPS32();
} }