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) ...@@ -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_TOOLS "Enable applications in tools sub directory." ON)
option(ENABLE_WERROR "Converts warnings to errors at compile time." OFF) 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. # $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) option(BUILD_SHARED_LIBS "CMake should generate a shared library build." OFF)
......
...@@ -8,35 +8,64 @@ ...@@ -8,35 +8,64 @@
## Media Patent License 1.0 was not distributed with this source code in the ## 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. ## PATENTS file, you can obtain it at www.aomedia.org/license/patent.
## ##
if ("${AOM_TARGET_CPU}" STREQUAL "arm64") if ("${AOM_TARGET_CPU}" STREQUAL "arm64")
set(ARCH_ARM 1) set(ARCH_ARM 1)
set(HAVE_NEON 1)
set(RTCD_ARCH_ARM "yes") set(RTCD_ARCH_ARM "yes")
if (ENABLE_NEON)
set(HAVE_NEON 1)
set(RTCD_HAVE_NEON "yes") 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") elseif ("${AOM_TARGET_CPU}" MATCHES "^armv7")
set(ARCH_ARM 1) set(ARCH_ARM 1)
set(HAVE_NEON 1)
set(HAVE_NEON_ASM 1)
set(RTCD_ARCH_ARM "yes") set(RTCD_ARCH_ARM "yes")
if (ENABLE_NEON)
set(HAVE_NEON 1)
set(RTCD_HAVE_NEON "yes") 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") 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") elseif ("${AOM_TARGET_CPU}" MATCHES "^mips")
set(ARCH_MIPS 1) set(ARCH_MIPS 1)
set(RTCD_ARCH_MIPS "yes")
if ("${AOM_TARGET_CPU}" STREQUAL "mips32") if ("${AOM_TARGET_CPU}" STREQUAL "mips32")
set(HAVE_MIPS32 1) set(HAVE_MIPS32 1)
set(RTCD_HAVE_MIPS32 "yes")
elseif ("${AOM_TARGET_CPU}" STREQUAL "mips64") elseif ("${AOM_TARGET_CPU}" STREQUAL "mips64")
set(HAVE_MIPS64 1) set(HAVE_MIPS64 1)
set(RTCD_HAVE_MIPS64 "yes")
endif () endif ()
set(RTCD_ARCH_MIPS "yes") # HAVE_DSPR2 is set by mips toolchain files.
if (ENABLE_DSPR2 AND HAVE_DSPR2)
if (HAVE_DSPR2)
set(RTCD_HAVE_DSPR2 "yes") set(RTCD_HAVE_DSPR2 "yes")
else ()
set(HAVE_DSPR2 0)
set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-dspr2)
endif () endif ()
if (HAVE_MSA) # HAVE_MSA is set by mips toolchain files.
if (ENABLE_MSA AND HAVE_MSA)
set(RTCD_HAVE_MSA "yes") set(RTCD_HAVE_MSA "yes")
else ()
set(HAVE_MSA 0)
set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-msa)
endif () endif ()
elseif ("${AOM_TARGET_CPU}" MATCHES "^x86") elseif ("${AOM_TARGET_CPU}" MATCHES "^x86")
if ("${AOM_TARGET_CPU}" STREQUAL "x86") if ("${AOM_TARGET_CPU}" STREQUAL "x86")
...@@ -47,22 +76,18 @@ elseif ("${AOM_TARGET_CPU}" MATCHES "^x86") ...@@ -47,22 +76,18 @@ elseif ("${AOM_TARGET_CPU}" MATCHES "^x86")
set(RTCD_ARCH_X86_64 "yes") set(RTCD_ARCH_X86_64 "yes")
endif () endif ()
set(HAVE_MMX 1) set(X86_FLAVORS "MMX;SSE;SSE2;SSE3;SSSE3;SSE4_1;AVX;AVX2")
set(HAVE_SSE 1) foreach (flavor ${X86_FLAVORS})
set(HAVE_SSE2 1) if (ENABLE_${flavor} AND NOT disable_remaining_flavors)
set(HAVE_SSE3 1) set(HAVE_${flavor} 1)
set(HAVE_SSSE3 1) set(RTCD_HAVE_${flavor} "yes")
set(HAVE_SSE4_1 1) else ()
set(HAVE_AVX 1) set(disable_remaining_flavors 1)
set(HAVE_AVX2 1) set(HAVE_${flavor} 0)
set(RTCD_HAVE_MMX "yes") string(TOLOWER ${flavor} flavor)
set(RTCD_HAVE_SSE "yes") set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-${flavor})
set(RTCD_HAVE_SSE2 "yes") endif ()
set(RTCD_HAVE_SSE3 "yes") endforeach ()
set(RTCD_HAVE_SSSE3 "yes")
set(RTCD_HAVE_SSE4_1 "yes")
set(RTCD_HAVE_AVX "yes")
set(RTCD_HAVE_AVX2 "yes")
endif () endif ()
foreach (config_var ${AOM_CONFIG_VARS}) 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