This adds FPU sharing support with a lazy context switching algorithm. Every thread is allowed to use FPU/SIMD registers. In fact, the compiler may insert FPU reg accesses in anycontext to optimize even non-FP code unless the -mgeneral-regs-only compiler flag is used, but Zephyr currently doesn't support such a build. It is therefore possible to do FP access in IRS as well with this patch although IRQs are then disabled to prevent nested IRQs in such cases. Because the thread object grows in size, some tests have to be adjusted. Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
59 lines
1.5 KiB
YAML
59 lines
1.5 KiB
YAML
tests:
|
|
kernel.fpu_sharing.generic.arc:
|
|
extra_args: PI_NUM_ITERATIONS=500
|
|
filter: CONFIG_ISA_ARCV2 and CONFIG_CPU_HAS_FPU
|
|
slow: true
|
|
tags: kernel
|
|
timeout: 600
|
|
min_ram: 16
|
|
kernel.fpu_sharing.generic.arm:
|
|
extra_args: PI_NUM_ITERATIONS=70000
|
|
filter: CONFIG_ARMV7_M_ARMV8_M_FP
|
|
slow: true
|
|
tags: kernel
|
|
timeout: 600
|
|
min_ram: 16
|
|
kernel.fpu_sharing.generic.arm64:
|
|
extra_args: PI_NUM_ITERATIONS=70000
|
|
arch_allow: arm64
|
|
filter: CONFIG_CPU_CORTEX_A
|
|
slow: true
|
|
tags: kernel
|
|
timeout: 600
|
|
kernel.fpu_sharing.generic.riscv32:
|
|
extra_args: PI_NUM_ITERATIONS=500
|
|
filter: CONFIG_CPU_HAS_FPU
|
|
arch_allow: riscv32
|
|
tags: kernel
|
|
timeout: 600
|
|
min_ram: 16
|
|
kernel.fpu_sharing.generic.riscv64:
|
|
extra_args: PI_NUM_ITERATIONS=500
|
|
filter: CONFIG_CPU_HAS_FPU
|
|
arch_allow: riscv64
|
|
tags: kernel
|
|
timeout: 600
|
|
min_ram: 16
|
|
kernel.fpu_sharing.generic.sparc:
|
|
extra_args: PI_NUM_ITERATIONS=70000
|
|
filter: CONFIG_CPU_HAS_FPU
|
|
arch_allow: sparc
|
|
tags: kernel
|
|
timeout: 600
|
|
kernel.fpu_sharing.generic.x86.fpu:
|
|
extra_args: CONF_FILE=prj_x86.conf
|
|
extra_configs:
|
|
- CONFIG_X86_SSE_FP_MATH=n
|
|
platform_allow: qemu_x86 qemu_x86_lakemont
|
|
slow: true
|
|
tags: kernel
|
|
timeout: 600
|
|
kernel.fpu_sharing.generic.x86.sse:
|
|
extra_args: CONF_FILE=prj_x86.conf
|
|
extra_configs:
|
|
- CONFIG_X86_SSE_FP_MATH=y
|
|
platform_allow: qemu_x86 qemu_x86_lakemont
|
|
slow: true
|
|
tags: kernel
|
|
timeout: 600
|