[libc] Improve memcpy for ARM Cortex-M supporting unaligned accesses. (#144872)
This implementation has been compiled with the [pigweed toolchain](https://pigweed.dev/toolchain.html) and tested on: - Raspberry Pi Pico 2 with the following options\ `--target=armv8m.main-none-eabi` `-march=armv8m.main+fp+dsp` `-mcpu=cortex-m33` - Raspberry Pi Pico with the following options\ `--target=armv6m-none-eabi` `-march=armv6m` `-mcpu=cortex-m0+` They both compile down to a little bit more than 200 bytes and are between 2 and 10 times faster than byte per byte copies. For best performance the following options can be set in the `libc/config/baremetal/arm/config.json` ``` { "codegen": { "LIBC_CONF_KEEP_FRAME_POINTER": { "value": false } }, "general": { "LIBC_ADD_NULL_CHECKS": { "value": false } } } ```
This commit is contained in:
committed by
GitHub
parent
0e268791c5
commit
7289b6789e
@@ -4218,6 +4218,7 @@ libc_support_library(
|
||||
"src/string/memory_utils/aarch64/inline_memcpy.h",
|
||||
"src/string/memory_utils/aarch64/inline_memmove.h",
|
||||
"src/string/memory_utils/aarch64/inline_memset.h",
|
||||
"src/string/memory_utils/arm/inline_memcpy.h",
|
||||
"src/string/memory_utils/generic/aligned_access.h",
|
||||
"src/string/memory_utils/generic/byte_per_byte.h",
|
||||
"src/string/memory_utils/inline_bcmp.h",
|
||||
|
||||
Reference in New Issue
Block a user