aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorHoernchen <la@tfc-server.de>2013-05-06 21:52:19 +0200
committerHoernchen <la@tfc-server.de>2013-05-06 21:52:19 +0200
commit80b4ad29212c4745ade265cedbd16f22072761ed (patch)
treeeaa3ca32d99c1b25554bec529e6d670f19f14d3f /CMakeLists.txt
parent2d9e29ee46b3b0d3f2552eca4c0a5b0f21d1e8d2 (diff)
offer avx and sse to speed up float->uint8 for tx
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt26
1 files changed, 26 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 41845d7..823fddd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -43,6 +43,15 @@ include(GrVersion) #setup version info
########################################################################
# Compiler specific setup
########################################################################
+
+ SET(USE_SIMD "no" CACHE STRING "Use SIMD instructions")
+ SET(USE_SIMD_VALUES "no" "SSE2" "AVX")
+ SET_PROPERTY(CACHE USE_SIMD PROPERTY STRINGS ${USE_SIMD_VALUES})
+ LIST(FIND USE_SIMD_VALUES ${USE_SIMD} USE_SIMD_INDEX)
+ IF(${USE_SIMD_INDEX} EQUAL -1)
+ message(FATAL_ERROR "Option ${USE_SIMD} not supported, valid entries are ${USE_SIMD_VALUES}")
+ ENDIF()
+
IF(CMAKE_COMPILER_IS_GNUCXX)
ADD_DEFINITIONS(-Wall)
ADD_DEFINITIONS(-Wextra)
@@ -56,6 +65,23 @@ IF(CMAKE_COMPILER_IS_GNUCXX)
ADD_DEFINITIONS(-fvisibility=hidden)
ADD_DEFINITIONS(-fvisibility-inlines-hidden)
ENDIF(NOT WIN32)
+ IF(USE_SIMD MATCHES SSE2)
+ ADD_DEFINITIONS(-msse2)
+ ADD_DEFINITIONS(-DUSE_SSE2)
+ ENDIF()
+ IF(USE_SIMD MATCHES AVX)
+ ADD_DEFINITIONS(-march=native)
+ ADD_DEFINITIONS(-DUSE_AVX)
+ ENDIF()
+ELSEIF(MSVC)
+ IF(USE_SIMD MATCHES SSE2)
+ ADD_DEFINITIONS(/arch:SSE2)
+ ADD_DEFINITIONS(-DUSE_SSE2)
+ ENDIF()
+ IF(USE_SIMD MATCHES AVX)
+ ADD_DEFINITIONS(/arch:AVX)
+ ADD_DEFINITIONS(-DUSE_AVX)
+ ENDIF()
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
########################################################################