Commit e3bae4a3 authored by Tom Finegan's avatar Tom Finegan Committed by James Zern

Add CMake options for disabling SIMD flavors.

BUG=aomedia:733

Change-Id: I7044c55611a3ea9555347f9c4fef03e3042560e2
parent 6cc1fd31
......@@ -29,6 +29,24 @@ option(ENABLE_NASM "Use nasm instead of yasm for x86 assembly." OFF)
option(ENABLE_TOOLS "Enable applications in tools sub directory." ON)
option(ENABLE_WERROR "Converts warnings to errors at compile time." OFF)
# ARM assembly/intrinsics flags.
option(ENABLE_NEON "Enables NEON optimizations on ARM targets." ON)
option(ENABLE_NEON_ASM "Enables NEON ASM optimizations on ARM targets." ON)
# MIPS assembly/intrinsics flags.
option(ENABLE_DSPR2 "Enables DSPR2 optimizations on MIPS targets." OFF)
option(ENABLE_MSA "Enables MSA optimizations on MIPS targets." OFF)
# x86/x86_64 assembly/intrinsics flags.
option(ENABLE_MMX "Enables MMX optimizations on x86/x86_64 targets." ON)
option(ENABLE_SSE "Enables SSE optimizations on x86/x86_64 targets." ON)
option(ENABLE_SSE2 "Enables SSE2 optimizations on x86/x86_64 targets." ON)
option(ENABLE_SSE3 "Enables SSE3 optimizations on x86/x86_64 targets." ON)
option(ENABLE_SSSE3 "Enables SSSE3 optimizations on x86/x86_64 targets." ON)
option(ENABLE_SSE4_1 "Enables SSE4_1 optimizations on x86/x86_64 targets." ON)
option(ENABLE_AVX "Enables AVX optimizations on x86/x86_64 targets." ON)
option(ENABLE_AVX2 "Enables AVX2 optimizations on x86/x86_64 targets." ON)
# $BUILD_SHARED_LIBS is a CMake built-in-- it's listed here for visibility.
option(BUILD_SHARED_LIBS "CMake should generate a shared library build." OFF)
......
......@@ -8,35 +8,64 @@
## Media Patent License 1.0 was not distributed with this source code in the
## PATENTS file, you can obtain it at www.aomedia.org/license/patent.
##
if ("${AOM_TARGET_CPU}" STREQUAL "arm64")
set(ARCH_ARM 1)
set(HAVE_NEON 1)
set(RTCD_ARCH_ARM "yes")
set(RTCD_HAVE_NEON "yes")
if (ENABLE_NEON)
set(HAVE_NEON 1)
set(RTCD_HAVE_NEON "yes")
else ()
set(HAVE_NEON 0)
set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-neon)
endif ()
elseif ("${AOM_TARGET_CPU}" MATCHES "^armv7")
set(ARCH_ARM 1)
set(HAVE_NEON 1)
set(HAVE_NEON_ASM 1)
set(RTCD_ARCH_ARM "yes")
set(RTCD_HAVE_NEON "yes")
set(RTCD_HAVE_NEON_ASM "yes")
if (ENABLE_NEON)
set(HAVE_NEON 1)
set(RTCD_HAVE_NEON "yes")
else ()
set(HAVE_NEON 0)
set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-neon)
endif ()
if (ENABLE_NEON_ASM)
set(HAVE_NEON_ASM 1)
set(RTCD_HAVE_NEON_ASM "yes")
else ()
set(HAVE_NEON_ASM 0)
endif ()
set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-neon_asm)
elseif ("${AOM_TARGET_CPU}" MATCHES "^mips")
set(ARCH_MIPS 1)
set(RTCD_ARCH_MIPS "yes")
if ("${AOM_TARGET_CPU}" STREQUAL "mips32")
set(HAVE_MIPS32 1)
set(RTCD_HAVE_MIPS32 "yes")
elseif ("${AOM_TARGET_CPU}" STREQUAL "mips64")
set(HAVE_MIPS64 1)
set(RTCD_HAVE_MIPS64 "yes")
endif ()
set(RTCD_ARCH_MIPS "yes")
if (HAVE_DSPR2)
# HAVE_DSPR2 is set by mips toolchain files.
if (ENABLE_DSPR2 AND HAVE_DSPR2)
set(RTCD_HAVE_DSPR2 "yes")
else ()
set(HAVE_DSPR2 0)
set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-dspr2)
endif ()
if (HAVE_MSA)
# HAVE_MSA is set by mips toolchain files.
if (ENABLE_MSA AND HAVE_MSA)
set(RTCD_HAVE_MSA "yes")
else ()
set(HAVE_MSA 0)
set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-msa)
endif ()
elseif ("${AOM_TARGET_CPU}" MATCHES "^x86")
if ("${AOM_TARGET_CPU}" STREQUAL "x86")
......@@ -47,22 +76,18 @@ elseif ("${AOM_TARGET_CPU}" MATCHES "^x86")
set(RTCD_ARCH_X86_64 "yes")
endif ()
set(HAVE_MMX 1)
set(HAVE_SSE 1)
set(HAVE_SSE2 1)
set(HAVE_SSE3 1)
set(HAVE_SSSE3 1)
set(HAVE_SSE4_1 1)
set(HAVE_AVX 1)
set(HAVE_AVX2 1)
set(RTCD_HAVE_MMX "yes")
set(RTCD_HAVE_SSE "yes")
set(RTCD_HAVE_SSE2 "yes")
set(RTCD_HAVE_SSE3 "yes")
set(RTCD_HAVE_SSSE3 "yes")
set(RTCD_HAVE_SSE4_1 "yes")
set(RTCD_HAVE_AVX "yes")
set(RTCD_HAVE_AVX2 "yes")
set(X86_FLAVORS "MMX;SSE;SSE2;SSE3;SSSE3;SSE4_1;AVX;AVX2")
foreach (flavor ${X86_FLAVORS})
if (ENABLE_${flavor} AND NOT disable_remaining_flavors)
set(HAVE_${flavor} 1)
set(RTCD_HAVE_${flavor} "yes")
else ()
set(disable_remaining_flavors 1)
set(HAVE_${flavor} 0)
string(TOLOWER ${flavor} flavor)
set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-${flavor})
endif ()
endforeach ()
endif ()
foreach (config_var ${AOM_CONFIG_VARS})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment