Files
TheRock/rocm-systems/projects/rocprofiler-systems/external/timemory/cmake/Modules/ConfigCpuArch.cmake
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

86 lines
2.6 KiB
CMake

#
# Configures architecture options
#
set(_CpuArch_COMPONENTS)
if(TIMEMORY_BUILD_PORTABLE)
set(CpuArch_FIND_DEFAULT ON)
if(MSVC)
set(_CpuArch_COMPONENTS OPTIONAL_COMPONENTS sse sse2 avx avx2)
else()
set(_CpuArch_COMPONENTS
OPTIONAL_COMPONENTS
sse
sse2
sse3
ssse3
sse4
sse4_1
sse4_2
fma
avx
avx2
altivec)
endif()
endif()
find_package(CpuArch ${_CpuArch_COMPONENTS})
if(CpuArch_FOUND)
if(VECTOR_INTERFACE_TARGET AND VECTOR_DEFINITION)
set(_VEC_256 OFF)
set(_VEC_512 OFF)
foreach(_ARCH ${CpuArch_FEATURES})
if("${_ARCH}" MATCHES ".*avx512.*" OR "${_ARCH}" MATCHES ".*AVX512.*")
set(_VEC_512 ON)
elseif("${_ARCH}" MATCHES ".*avx.*" OR "${_ARCH}" MATCHES ".*AVX.*")
set(_VEC_256 ON)
endif()
endforeach()
if(_VEC_512)
set(TIMEMORY_VEC 512)
elseif(_VEC_256)
set(TIMEMORY_VEC 256)
else()
set(TIMEMORY_VEC 128)
endif()
timemory_message(STATUS "Compiling with vector width: ${TIMEMORY_VEC}")
timemory_target_compile_definitions(${VECTOR_INTERFACE_TARGET} INTERFACE
${VECTOR_DEFINITION}=${TIMEMORY_VEC})
endif()
if(ARCH_INTERFACE_TARGET)
if(CpuArch_FEATURES)
foreach(_ARCH ${CpuArch_FEATURES})
if(MSVC)
add_target_flag_if_avail(${ARCH_INTERFACE_TARGET} "/arch:${_ARCH}")
else()
add_target_flag_if_avail(${ARCH_INTERFACE_TARGET} "-m${_ARCH}")
endif()
endforeach()
# intel compiler
if(CMAKE_C_COMPILER_IS_INTEL OR CMAKE_CXX_COMPILER_IS_INTEL)
list(LENGTH CpuArch_FEATURES NUM_FEATURES)
math(EXPR LAST_FEATURE_IDX "${NUM_FEATURES}-1")
list(GET CpuArch_FEATURES ${LAST_FEATURE_IDX} _ARCH)
if(_ARCH)
add_target_flag_if_avail(${ARCH_INTERFACE_TARGET} "-ax${_ARCH}")
endif()
unset(_ARCH)
unset(NUM_FEATURES)
unset(LAST_FEATURE_IDX)
endif()
else()
if(MSVC)
add_target_flag_if_avail(${ARCH_INTERFACE_TARGET} "/arch")
else()
add_target_flag_if_avail(${ARCH_INTERFACE_TARGET} "-march=native")
endif()
endif()
endif()
endif()