-
- Downloads
libatomic: Add support for LSE and LSE2
Add support for AArch64 LSE and LSE2 to libatomic. Disable outline atomics, and use LSE ifuncs for 1-8 byte atomics and LSE2 ifuncs for 16-byte atomics. On Neoverse V1, 16-byte atomics are ~4x faster due to avoiding locks. Note this is safe since we swap all 16-byte atomics using the same ifunc, so they either use locks or LSE2 atomics, but never a mix. This also improves ABI compatibility with LLVM: its inlined 16-byte atomics are compatible with the new libatomic if LSE2 is supported. libatomic/ * Makefile.in: Regenerated with automake 1.15.1. * Makefile.am: Add atomic_16.S for AArch64. * configure.tgt: Disable outline atomics in AArch64 build. * config/linux/aarch64/atomic_16.S: New file - implementation of ifuncs for 16-byte atomics. * config/linux/aarch64/host-config.h: Enable ifuncs, use LSE (HWCAP_ATOMICS) for 1-8-byte atomics and LSE2 (HWCAP_USCAT) for 16-byte atomics.
Showing
- libatomic/Makefile.am 2 additions, 0 deletionslibatomic/Makefile.am
- libatomic/Makefile.in 49 additions, 13 deletionslibatomic/Makefile.in
- libatomic/config/linux/aarch64/atomic_16.S 462 additions, 0 deletionslibatomic/config/linux/aarch64/atomic_16.S
- libatomic/config/linux/aarch64/host-config.h 13 additions, 5 deletionslibatomic/config/linux/aarch64/host-config.h
- libatomic/configure.tgt 1 addition, 0 deletionslibatomic/configure.tgt
Loading
Please register or sign in to comment