2022-11-21 21:29:40 +00:00
|
|
|
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
|
|
# SPDX-License-Identifier: Apache-2.0.
|
|
|
|
|
|
|
|
if (USE_CPU_EXTENSIONS)
|
2023-11-16 15:17:19 +00:00
|
|
|
if (ENABLE_AVX2)
|
2023-11-14 05:55:06 +00:00
|
|
|
set (AVX2_CFLAGS "-mavx -mavx2")
|
|
|
|
set (HAVE_AVX2_INTRINSICS 1)
|
|
|
|
set (HAVE_MM256_EXTRACT_EPI64 1)
|
2022-11-21 21:29:40 +00:00
|
|
|
endif()
|
2023-11-14 05:55:06 +00:00
|
|
|
endif()
|
2022-11-21 21:29:40 +00:00
|
|
|
|
|
|
|
macro(simd_add_definition_if target definition)
|
|
|
|
if(${definition})
|
|
|
|
target_compile_definitions(${target} PRIVATE -D${definition})
|
|
|
|
endif(${definition})
|
|
|
|
endmacro(simd_add_definition_if)
|
|
|
|
|
|
|
|
# Configure private preprocessor definitions for SIMD-related features
|
|
|
|
# Does not set any processor feature codegen flags
|
|
|
|
function(simd_add_definitions target)
|
|
|
|
simd_add_definition_if(${target} HAVE_AVX2_INTRINSICS)
|
|
|
|
simd_add_definition_if(${target} HAVE_MM256_EXTRACT_EPI64)
|
|
|
|
endfunction(simd_add_definitions)
|
|
|
|
|
|
|
|
# Adds source files only if AVX2 is supported. These files will be built with
|
|
|
|
# avx2 intrinsics enabled.
|
|
|
|
# Usage: simd_add_source_avx2(target file1.c file2.c ...)
|
|
|
|
function(simd_add_source_avx2 target)
|
|
|
|
foreach(file ${ARGN})
|
|
|
|
target_sources(${target} PRIVATE ${file})
|
|
|
|
set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "${AVX2_CFLAGS}")
|
|
|
|
endforeach()
|
|
|
|
endfunction(simd_add_source_avx2)
|