diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c89f6f..61912b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,28 @@ add_library(${DECODER_LIB_NAME} $ ) +# SIMD命令をどこまで使うか? +set(USE_SIMD_INTRINSICS "" CACHE STRING "Using SIMD operations (SSE41 or AVX2)") +if("${USE_SIMD_INTRINSICS}" STREQUAL "SSE41") + add_compile_definitions(SRLA_USE_SSE41) + if(NOT MSVC) + add_compile_options(-msse4.1) + endif() +elseif("${USE_SIMD_INTRINSICS}" STREQUAL "AVX2") + add_compile_definitions(SRLA_USE_AVX2) + if(MSVC) + add_compile_options(/arch:AVX2) + else() + add_compile_options(-msse4.1 -mavx2) + endif() +endif() + +# 最適化オプション +if(MSVC) + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Oi /Ot /Oy /GL") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG") +endif() + # 依存するプロジェクト add_subdirectory(libs) diff --git a/libs/srla_decoder/CMakeLists.txt b/libs/srla_decoder/CMakeLists.txt index 710e03e..cfd3ef8 100644 --- a/libs/srla_decoder/CMakeLists.txt +++ b/libs/srla_decoder/CMakeLists.txt @@ -41,11 +41,3 @@ set_target_properties(${LIB_NAME} C_STANDARD 90 C_EXTENSIONS OFF MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) - -# SIMD命令をどこまで使うか? -set(USE_SIMD_INTRINSICS "" CACHE STRING "Using SIMD operations (SSE41 or AVX2)") -if("${USE_SIMD_INTRINSICS}" STREQUAL "SSE41") - add_compile_definitions(SRLADECODER_USE_SSE41) -elseif("${USE_SIMD_INTRINSICS}" STREQUAL "AVX2") - add_compile_definitions(SRLADECODER_USE_AVX2) -endif() diff --git a/libs/srla_decoder/src/srla_lpc_synthesize.c b/libs/srla_decoder/src/srla_lpc_synthesize.c index 31f016b..889e6aa 100644 --- a/libs/srla_decoder/src/srla_lpc_synthesize.c +++ b/libs/srla_decoder/src/srla_lpc_synthesize.c @@ -5,7 +5,7 @@ #include "srla_utility.h" /* LPC係数により合成(in-place) */ -#if defined(SRLADECODER_USE_SSE41) +#if defined(SRLA_USE_SSE41) #ifdef _MSC_VER #include #define DECLALIGN(x) __declspec(align(x)) @@ -104,7 +104,7 @@ void SRLALPC_Synthesize( data[smpl] -= (predict >> coef_rshift); } } -#elif defined(SRLADECODER_USE_AVX2) +#elif defined(SRLA_USE_AVX2) #ifdef _MSC_VER #include #define DECLALIGN(x) __declspec(align(x)) diff --git a/libs/srla_encoder/CMakeLists.txt b/libs/srla_encoder/CMakeLists.txt index 471bfd6..35698bf 100644 --- a/libs/srla_encoder/CMakeLists.txt +++ b/libs/srla_encoder/CMakeLists.txt @@ -41,11 +41,3 @@ set_target_properties(${LIB_NAME} C_STANDARD 90 C_EXTENSIONS OFF MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" ) - -# SIMD命令をどこまで使うか? -set(USE_SIMD_INTRINSICS "" CACHE STRING "Using SIMD operations (SSE41 or AVX2)") -if("${USE_SIMD_INTRINSICS}" STREQUAL "SSE41") - add_compile_definitions(SRLAENCODER_USE_SSE41) -elseif("${USE_SIMD_INTRINSICS}" STREQUAL "AVX2") - add_compile_definitions(SRLAENCODER_USE_AVX2) -endif() diff --git a/libs/srla_encoder/src/srla_lpc_predict.c b/libs/srla_encoder/src/srla_lpc_predict.c index 67a4482..27bb32a 100644 --- a/libs/srla_encoder/src/srla_lpc_predict.c +++ b/libs/srla_encoder/src/srla_lpc_predict.c @@ -4,7 +4,7 @@ #include "srla_internal.h" /* LPC係数により予測/誤差出力 */ -#if defined(SRLAENCODER_USE_SSE41) +#if defined(SRLA_USE_SSE41) #ifdef _MSC_VER #include #define DECLALIGN(x) __declspec(align(x)) @@ -107,7 +107,7 @@ void SRLALPC_Predict( residual[smpl] += (predict >> coef_rshift); } } -#elif defined(SRLAENCODER_USE_AVX2) +#elif defined(SRLA_USE_AVX2) #ifdef _MSC_VER #include #define DECLALIGN(x) __declspec(align(x))