Skip to content

gcc: Disable use of SIMD registers in memcpy/memset/memmove expansions #995

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

keith-packard
Copy link
Contributor

@keith-packard keith-packard commented Aug 6, 2025

Avoid using FPU/SIMD registers in code which doesn't explicitly use floating types or SIMD operations.

GCC PR: zephyrproject-rtos/gcc#60

@stephanosio stephanosio added the DNM DO NOT MERGE label Aug 11, 2025
@stephanosio
Copy link
Member

@keith-packard zephyrproject-rtos/gcc#60 is merged. Please update the gcc submodule ref to the merged commit.

vfprintf doesn't perform any floating point math when printing floats,
by removing the use of float types, we can avoid using float registers
entirely.

Signed-off-by: Keith Packard <[email protected]>
The memory operations inlining code for gcc 14 uses SIMD registers
which requires switching on the FPU and saving/restoring those
registers. For interrupt handlers, that also means disabling
interrupts so nested interrupts don't work after the first register
access. An upstream patch has been proposed to switch off the SIMD
register usage for this case and avoid these effects.

Signed-off-by: Keith Packard <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DNM DO NOT MERGE
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants