blob: 2435d77254bf80ae40a30fa6e5ed01d32bf22a6e [file] [log] [blame]
# Copyright (c) 2025 IAR Systems AB
#
# SPDX-License-Identifier: Apache-2.0
# Determines what argument to give to --fpu= based on the
# KConfiguration and sets this to ICCARM_FPU
if(CONFIG_FPU)
# 32-bit
if("${ARCH}" STREQUAL "arm")
if(CONFIG_CPU_AARCH32_CORTEX_R)
if(CONFIG_CPU_CORTEX_R4 OR CONFIG_CPU_CORTEX_R5) # VFPv3
if(CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
set(ICCARM_FPU VFPv3_D16)
elseif(CONFIG_VFP_FEATURE_SINGLE_PRECISION)
set(ICCARM_FPU VFPv3-SP)
endif()
if(CONFIG_VFP_FEATURE_HALF_PRECISION)
set(ICCARM_FPU ${ICCARM_FPU}_Fp16)
endif()
elseif(CONFIG_CPU_CORTEX_R52)
if(CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
set(ICCARM_FPU VFPv5_D16)
elseif(CONFIG_VFP_FEATURE_SINGLE_PRECISION)
set(ICCARM_FPU VFPv5-SP)
endif()
endif()
elseif(CONFIG_CPU_CORTEX_M)
# Defines a mapping from ICCARM_CPU to FPU
if(CONFIG_CPU_HAS_FPU_DOUBLE_PRECISION)
set(PRECISION_TOKEN _D16)
else()
set(PRECISION_TOKEN -SP)
endif()
set(FPU_FOR_Cortex-M4 FPv4${PRECISION_TOKEN})
set(FPU_FOR_Cortex-M7 FPv5${PRECISION_TOKEN})
set(FPU_FOR_Cortex-M33 FPv5${PRECISION_TOKEN})
set(FPU_FOR_Cortex-M33.no_dsp FPv5${PRECISION_TOKEN})
set(FPU_FOR_Cortex-M55 auto)
set(FPU_FOR_Cortex-M55.no_mve auto)
# We don't have this one?
set(FPU_FOR_Cortex-M55.no_dsp auto)
set(ICCARM_FPU ${FPU_FOR_${ICCARM_CPU}})
endif()
# 64-bit
else()
set(ICCARM_FPU none)
endif()
endif() #CONFIG_FPU