git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/5] bswap.h: Rework ntohl handling
@ 2025-07-15 19:12 Sebastian Andrzej Siewior
  2025-07-15 19:12 ` [PATCH v3 1/5] bswap.h: Add support for __BYTE_ORDER__ Sebastian Andrzej Siewior
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Sebastian Andrzej Siewior @ 2025-07-15 19:12 UTC (permalink / raw)
  To: git; +Cc: Sebastian Andrzej Siewior

Hi,

this series continues the rework of the bswap32/64()/ nothl() handling. 

I've been looking at recent compiler and they manage to recognize the
manual shifting and use an optimize opcode if available. The ntohl
version provided by glibc already provides an "optimized" version which
makes an optimisation in git almost not needed.
One of the motivation behind overwriting/ providing an optimized
version was to provide a macro instead of using a function call. One
libc that is still providing ntohl as a function call is musl.

While ntohl() is provided by the libc, the ntohll() is not. I found it
only on Windows provided by winsock.h.

I haven't touched the put/get_be*() macros. gcc & clang are both smart
enough to swap the content accordingly and perform a single store/ load.
Only the msvc seems to strugle here and performs multiple bytes stores/
loads and shifts.

v2…v3 https://lore.kernel.org/all/20250611221444.1567638-1-sebastian@breakpoint.cc/
  - Fixed typos in the patch description

Sebastian Andrzej Siewior (5):
  bswap.h: Add support for __BYTE_ORDER__
  bswap.h: Define GIT_LITTLE_ENDIAN on msvc as little endian
  bswap.h: Always overwrite ntohl/ ntohll macros
  bswap.h: Remove optimized x86 version of bswap32/64
  bswap.h: Provide a built-in based version of bswap32/64 if possible

 compat/bswap.h | 114 +++++++++++++++++++++----------------------------
 1 file changed, 48 insertions(+), 66 deletions(-)

-- 
2.50.0


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-07-16  5:01 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-15 19:12 [PATCH v3 0/5] bswap.h: Rework ntohl handling Sebastian Andrzej Siewior
2025-07-15 19:12 ` [PATCH v3 1/5] bswap.h: Add support for __BYTE_ORDER__ Sebastian Andrzej Siewior
2025-07-15 19:12 ` [PATCH v3 2/5] bswap.h: Define GIT_LITTLE_ENDIAN on msvc as little endian Sebastian Andrzej Siewior
2025-07-15 19:12 ` [PATCH v3 3/5] bswap.h: Always overwrite ntohl/ ntohll macros Sebastian Andrzej Siewior
2025-07-15 19:12 ` [PATCH v3 4/5] bswap.h: Remove optimized x86 version of bswap32/64 Sebastian Andrzej Siewior
2025-07-15 19:12 ` [PATCH v3 5/5] bswap.h: Provide a built-in based version of bswap32/64 if possible Sebastian Andrzej Siewior
2025-07-15 21:52 ` [PATCH v3 0/5] bswap.h: Rework ntohl handling Junio C Hamano
2025-07-15 22:36   ` brian m. carlson
2025-07-16  5:01   ` Sebastian Andrzej Siewior

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).