1
0
mirror of https://https.git.savannah.gnu.org/git/gnulib.git synced 2026-04-28 06:33:36 +00:00

5 Commits

Author SHA1 Message Date
Paul Eggert
ac50a945f8 stdbit-h: don’t depend on stdint-h
* modules/stdc_load8, modules/stdc_load8_aligned:
* modules/stdc_store8, modules/stdc_store8_aligned:
* modules/stdc_memreverse8u:
(Depends-on): Remove stdint-h, as Gnulib should be able to assume
the small subset of C99 <stdint.h> that stdbit.in.h uses.
2026-03-16 00:03:12 -07:00
Bruno Haible
56df453390 stdc_load8_aligned, stdc_store8_aligned: Don't use <byteswap.h>.
* lib/stdbit.in.h: Don't include <byteswap.h>.
(_GL_STDBIT_BSWAP16, _GL_STDBIT_BSWAP32, _GL_STDBIT_BSWAP64): Remove
macros.
(stdc_memreverse8u8, stdc_memreverse8u16, stdc_memreverse8u32,
stdc_memreverse8u64): Generalize: Take uint_least* parameter.
(stdc_load8_aligned_*, stdc_store8_aligned_*): Use stdc_memreverse8u16,
stdc_memreverse8u32, stdc_memreverse8u64 instead of _GL_STDBIT_BSWAP16,
_GL_STDBIT_BSWAP32, _GL_STDBIT_BSWAP64.
2026-03-15 13:24:24 +01:00
Paul Eggert
b70f85852a stdbit-h: restore optimization for RISC-V etc
Problem reported by Bruno Haible in:
https://lists.gnu.org/r/bug-gnulib/2026-03/msg00098.html
This patch does the optimization in a different way,
preferring plain ‘if’ to ‘#if’ if either will do.
* lib/stdbit.in.h: Bring back includes for byteswap.h, string.h.
(_GL_STDBIT_OPTIMIZE_VIA_MEMCPY, _GL_STDBIT_ASSUME_ALIGNED)
(_GL_STDBIT_BIGENDIAN): New macros.
(stdc_load8_beu16, stdc_load8_leu16):
Bring back casts to uint_fast16_t.
(stdc_load8_aligned_beu16, stdc_load8_aligned_beu32)
(stdc_load8_aligned_beu64, stdc_load8_aligned_leu16)
(stdc_load8_aligned_leu32, stdc_load8_aligned_leu64)
(stdc_load8_aligned_bes8, stdc_load8_aligned_bes16)
(stdc_load8_aligned_bes32, stdc_load8_aligned_bes64)
(stdc_load8_aligned_les8, stdc_load8_aligned_les16)
(stdc_load8_aligned_les32, stdc_load8_aligned_les64)
(stdc_store8_aligned_beu16, stdc_store8_aligned_beu32)
(stdc_store8_aligned_beu64, stdc_store8_aligned_leu16)
(stdc_store8_aligned_leu32, stdc_store8_aligned_leu64)
(stdc_store8_aligned_bes8, stdc_store8_aligned_bes16)
(stdc_store8_aligned_bes32, stdc_store8_aligned_bes64)
(stdc_store8_aligned_les8, stdc_store8_aligned_les16)
(stdc_store8_aligned_les32, stdc_store8_aligned_les64):
Bring back the memcpy optimization if _GL_STDBIT_OPTIMIZE_VIA_MEMCPY.
* modules/stdc_load8_aligned (Depends-on):
* modules/stdc_store8_aligned (Depends-on):
Go back to depending on byteswap.
2026-03-13 18:22:05 -07:00
Paul Eggert
b1996e0f1d stdbit-h: simpler fix for -fno-strict-aliasing
* lib/stdbit.in.h: Do not include byteswap.h.
(_GL_LOADSTORE8_VARIANT_A, _GL_LOADSTORE8_VARIANT_E)
(_GL_LOADSTORE8_VARIANT_F): Remove.
(stdc_load8_aligned_beu8, stdc_load8_aligned_beu16)
(stdc_load8_aligned_beu32, stdc_load8_aligned_beu64)
(stdc_load8_aligned_leu8, stdc_load8_aligned_leu16)
(stdc_load8_aligned_leu32, stdc_load8_aligned_leu64)
(stdc_load8_aligned_bes8, stdc_load8_aligned_bes16)
(stdc_load8_aligned_bes32, stdc_load8_aligned_bes64)
(stdc_load8_aligned_les8, stdc_load8_aligned_les16)
(stdc_load8_aligned_les32, stdc_load8_aligned_les64)
(stdc_store8_aligned_beu8, stdc_store8_aligned_beu16)
(stdc_store8_aligned_beu32, stdc_store8_aligned_beu64)
(stdc_store8_aligned_leu8, stdc_store8_aligned_leu16)
(stdc_store8_aligned_leu32, stdc_store8_aligned_leu64)
(stdc_store8_aligned_bes8, stdc_store8_aligned_bes16)
(stdc_store8_aligned_bes32, stdc_store8_aligned_bes64)
(stdc_store8_aligned_les8, stdc_store8_aligned_les16)
(stdc_store8_aligned_les32, stdc_store8_aligned_les64):
Simplifly by deferring to their unaligned counterparts.
* modules/stdc_load8_aligned (Depends-on):
Depend on stdc_load8, not byteswap.
* modules/stdc_store8_aligned (Depends-on):
Depend on stdc_store8, not byteswap.
2026-03-13 12:49:05 -07:00
Bruno Haible
b4c0796671 stdc_load8_aligned: New module.
* lib/stdbit.in.h: Include <stdint.h>, <byteswap.h>.
(_GL_STDC_LOAD8_ALIGNED_INLINE): New macro.
(stdc_load8_aligned_beu{8,16,32,64}, stdc_load8_aligned_leu{8,16,32,64},
stdc_load8_aligned_bes{8,16,32,64}, stdc_load8_aligned_les{8,16,32,64}):
New functions.
* lib/stdc_load8_aligned.c: New file.
* m4/stdbit_h.m4 (gl_STDBIT_H_REQUIRE_DEFAULTS): Initialize
GNULIB_STDC_LOAD8_ALIGNED.
* modules/stdbit-h (Makefile.am): Substitute GNULIB_STDC_LOAD8_ALIGNED.
* modules/stdc_load8_aligned: New file.
* doc/posix-functions/stdc_load8_aligned_beu8.texi: Mention the new
module.
* doc/posix-functions/stdc_load8_aligned_beu16.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_beu32.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_beu64.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_leu8.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_leu16.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_leu32.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_leu64.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_bes8.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_bes16.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_bes32.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_bes64.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_les8.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_les16.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_les32.texi: Likewise.
* doc/posix-functions/stdc_load8_aligned_les64.texi: Likewise.
2026-03-12 15:31:41 +01:00