forked from zephyrproject-rtos/zephyr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgcc-m-fpu.cmake
51 lines (45 loc) · 1.65 KB
/
gcc-m-fpu.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 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}})
endif()
endif()
endif() #CONFIG_FPU