You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.0 KiB
63 lines
2.0 KiB
# SPDX-License-Identifier: Apache-2.0 |
|
|
|
# Determines what argument to give to -mfpu= based on the |
|
# KConfig'uration and sets this to GCC_M_FPU |
|
|
|
if(CONFIG_FPU) |
|
|
|
if("${ARCH}" STREQUAL "arm") |
|
if(CONFIG_CPU_AARCH32_CORTEX_R) |
|
if(CONFIG_CPU_CORTEX_R4 OR CONFIG_CPU_CORTEX_R5 OR CONFIG_CPU_CORTEX_R8) # VFPv3 |
|
if(CONFIG_VFP_FEATURE_DOUBLE_PRECISION) |
|
set(GCC_M_FPU vfpv3-d16) |
|
elseif(CONFIG_VFP_FEATURE_SINGLE_PRECISION) |
|
set(GCC_M_FPU vfpv3xd) |
|
endif() |
|
if(CONFIG_VFP_FEATURE_HALF_PRECISION) |
|
set(GCC_M_FPU ${GCC_M_FPU}-fp16) |
|
endif() |
|
elseif(CONFIG_CPU_CORTEX_R52) |
|
if(CONFIG_VFP_FEATURE_DOUBLE_PRECISION) |
|
set(GCC_M_FPU neon-fp-armv8) |
|
elseif(CONFIG_VFP_FEATURE_SINGLE_PRECISION) |
|
set(GCC_M_FPU fpv5-sp-d16) |
|
endif() |
|
endif() |
|
elseif(CONFIG_CPU_CORTEX_M) |
|
# Defines a mapping from GCC_M_CPU to FPU |
|
if(CONFIG_CPU_HAS_FPU_DOUBLE_PRECISION) |
|
set(PRECISION_TOKEN) |
|
else() |
|
set(PRECISION_TOKEN sp-) |
|
endif() |
|
|
|
set(FPU_FOR_cortex-m4 fpv4-${PRECISION_TOKEN}d16) |
|
set(FPU_FOR_cortex-m7 fpv5-${PRECISION_TOKEN}d16) |
|
set(FPU_FOR_cortex-m33 fpv5-${PRECISION_TOKEN}d16) |
|
set(FPU_FOR_cortex-m33+nodsp fpv5-${PRECISION_TOKEN}d16) |
|
set(FPU_FOR_cortex-m55 auto) |
|
set(FPU_FOR_cortex-m55+nomve.fp auto) |
|
set(FPU_FOR_cortex-m55+nomve auto) |
|
set(FPU_FOR_cortex-m55+nodsp auto) |
|
set(FPU_FOR_cortex-m85 auto) |
|
set(FPU_FOR_cortex-m85+nomve.fp auto) |
|
set(FPU_FOR_cortex-m85+nomve auto) |
|
set(FPU_FOR_cortex-m85+nodsp auto) |
|
|
|
set(GCC_M_FPU ${FPU_FOR_${GCC_M_CPU}}) |
|
elseif(CONFIG_CPU_AARCH32_CORTEX_A) |
|
if(CONFIG_CPU_CORTEX_A7) |
|
set(GCC_M_FPU vfpv4-d16) |
|
elseif(CONFIG_CPU_CORTEX_A9) |
|
set(GCC_M_FPU vfpv3) |
|
if(NOT CONFIG_VFP_FEATURE_REGS_S64_D32) |
|
set(GCC_M_FPU ${GCC_M_FPU}-d16) |
|
endif() |
|
if(CONFIG_VFP_FEATURE_HALF_PRECISION) |
|
set(GCC_M_FPU ${GCC_M_FPU}-fp16) |
|
endif() |
|
endif() |
|
endif() |
|
endif() |
|
|
|
endif() #CONFIG_FPU
|
|
|