]> git.ipfire.org Git - thirdparty/git.git/commit
bswap.h: provide a built-in based version of bswap32/64 if possible
authorSebastian Andrzej Siewior <sebastian@breakpoint.cc>
Tue, 15 Jul 2025 19:12:30 +0000 (21:12 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 15 Jul 2025 21:36:51 +0000 (14:36 -0700)
commitf4ac32c03af5ac53964a05c4de435da53a59615c
treeb962c42b74172edecdc00ec32ddae38cf33f56e5
parent0132f114efe90fb5f0baf61dbda8a1a33eace929
bswap.h: provide a built-in based version of bswap32/64 if possible

The compiler is in general able to recognize the endian shift and
replace it with an optimized opcode if possible. On certain
architectures such as RiscV or MIPS the situation can get complicated.
They don't provide an optimized opcode and masking the "higher" bits may
required loading a constant which needs shifting. This causes the
compiler to emit a lot of instructions for the operation.

The provided builtin directive on these architecture calls a function
which does the operation instead of emitting the code for operation.

Bring back the change from commit 6547d1c9 (bswap.h: add support for
built-in bswap functions, 2025-04-23). The bswap32/64 macro can now be
defined unconditionally so it won't regress on big endian architectures.

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/bswap.h