2021-09-04 00:30:36 +08:00
|
|
|
# Files shared with other projects. Pass a file path to the
|
|
|
|
# get_glibc_shared_code() function in the python library
|
|
|
|
# scripts/glibc_shared_code.py to get a dict object with this information. See
|
|
|
|
# the library sources for more information.
|
|
|
|
|
|
|
|
# The headers on most of these files indicate that glibc is the canonical
|
|
|
|
# source for these files, although in many cases there seem to be useful
|
|
|
|
# changes in the gnulib versions that could be merged back in. Not all gnulib
|
|
|
|
# files contain such a header and it is not always consistent in its format, so
|
|
|
|
# it would be useful to make sure that all gnulib files that are using glibc as
|
|
|
|
# upstream have a greppable header.
|
|
|
|
#
|
|
|
|
# These files are quite hard to find without a header to grep for and each file
|
|
|
|
# has to be compared manually so this list is likely incomplete or may contain
|
|
|
|
# errors.
|
|
|
|
gnulib:
|
|
|
|
argp/argp-ba.c
|
|
|
|
argp/argp-ba.c
|
|
|
|
argp/argp-eexst.c
|
|
|
|
argp/argp-fmtstream.c
|
|
|
|
argp/argp-fmtstream.h
|
|
|
|
argp/argp-fs-xinl.c
|
|
|
|
argp/argp-help.c
|
|
|
|
argp/argp-namefrob.h
|
|
|
|
argp/argp-parse.c
|
|
|
|
argp/argp-pv.c
|
|
|
|
argp/argp-pvh.c
|
|
|
|
argp/argp-xinl.c
|
|
|
|
argp/argp.h
|
|
|
|
dirent/alphasort.c
|
|
|
|
dirent/scandir.c
|
2021-09-22 08:53:13 +08:00
|
|
|
# Merged from gnulib 2021-09-21
|
|
|
|
include/intprops.h
|
|
|
|
# Merged from gnulib 2021-09-21
|
|
|
|
include/regex.h
|
2021-09-04 00:30:36 +08:00
|
|
|
locale/programs/3level.h
|
|
|
|
# Merged from gnulib 2014-6-23
|
|
|
|
malloc/obstack.c
|
|
|
|
# Merged from gnulib 2014-6-23
|
|
|
|
malloc/obstack.h
|
|
|
|
# Merged from gnulib 2014-07-10
|
|
|
|
misc/error.c
|
|
|
|
misc/error.h
|
|
|
|
misc/getpass.c
|
|
|
|
misc/mkdtemp.c
|
2021-09-22 08:53:13 +08:00
|
|
|
# Merged from gnulib 2021-09-21
|
|
|
|
misc/sys/cdefs.h
|
2021-09-04 00:30:36 +08:00
|
|
|
posix/fnmatch_loop.c
|
|
|
|
# Intended to be the same. Gnulib copy contains glibc changes.
|
|
|
|
posix/getopt.c
|
|
|
|
# Intended to be the same. Gnulib copy contains glibc changes.
|
|
|
|
posix/getopt1.c
|
|
|
|
# Intended to be the same. Gnulib copy contains glibc changes.
|
|
|
|
posix/getopt_int.h
|
|
|
|
posix/glob.c
|
2021-09-22 08:53:13 +08:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-04 00:30:36 +08:00
|
|
|
posix/regcomp.c
|
2021-09-22 08:53:13 +08:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-04 00:30:36 +08:00
|
|
|
posix/regex.c
|
2021-09-22 08:53:13 +08:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-04 00:30:36 +08:00
|
|
|
posix/regex.h
|
2021-09-22 08:53:13 +08:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-04 00:30:36 +08:00
|
|
|
posix/regex_internal.c
|
2021-09-22 08:53:13 +08:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-04 00:30:36 +08:00
|
|
|
posix/regex_internal.h
|
2021-09-22 08:53:13 +08:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-04 00:30:36 +08:00
|
|
|
posix/regexec.c
|
|
|
|
posix/spawn.c
|
|
|
|
posix/spawn_faction_addclose.c
|
|
|
|
posix/spawn_faction_adddup2.c
|
|
|
|
posix/spawn_faction_addopen.c
|
|
|
|
posix/spawn_faction_destroy.c
|
|
|
|
posix/spawn_faction_init.c
|
|
|
|
posix/spawn_int.h
|
|
|
|
posix/spawnattr_destroy.c
|
|
|
|
posix/spawnattr_getdefault.c
|
|
|
|
posix/spawnattr_getflags.c
|
|
|
|
posix/spawnattr_getpgroup.c
|
|
|
|
posix/spawnattr_getschedparam.c
|
|
|
|
posix/spawnattr_getschedpolicy.c
|
|
|
|
posix/spawnattr_getsigmask.c
|
|
|
|
posix/spawnattr_init.c
|
|
|
|
posix/spawnattr_setdefault.c
|
|
|
|
posix/spawnattr_setflags.c
|
|
|
|
posix/spawnattr_setpgroup.c
|
|
|
|
posix/spawnattr_setschedparam.c
|
|
|
|
posix/spawnattr_setschedpolicy.c
|
|
|
|
posix/spawnattr_setsigmask.c
|
|
|
|
posix/spawnp.c
|
|
|
|
stdlib/atoll.c
|
|
|
|
stdlib/getsubopt.c
|
|
|
|
stdlib/setenv.c
|
|
|
|
stdlib/strtoll.c
|
|
|
|
stdlib/strtoul.c
|
|
|
|
# Merged from gnulib 2014-6-26, needs merge back
|
|
|
|
string/memchr.c
|
|
|
|
string/memcmp.c
|
|
|
|
string/memmem.c
|
|
|
|
string/mempcpy.c
|
|
|
|
string/memrchr.c
|
|
|
|
string/rawmemchr.c
|
|
|
|
string/stpcpy.c
|
|
|
|
string/stpncpy.c
|
|
|
|
string/str-two-way.h
|
|
|
|
string/strcasestr.c
|
|
|
|
string/strcspn.c
|
|
|
|
string/strdup.c
|
|
|
|
string/strndup.c
|
|
|
|
string/strpbrk.c
|
|
|
|
string/strsignal.c
|
|
|
|
string/strstr.c
|
|
|
|
string/strtok_r.c
|
|
|
|
string/strverscmp.c
|
2023-10-11 03:22:39 +08:00
|
|
|
# Merged from gnulib 2024-04-08 (gnulib commit 3238349628)
|
|
|
|
stdio-common/tmpdir.c
|
|
|
|
stdio-common/tmpdir.h
|
2021-09-04 00:30:36 +08:00
|
|
|
sysdeps/generic/pty-private.h
|
|
|
|
sysdeps/generic/siglist.h
|
|
|
|
sysdeps/posix/euidaccess.c
|
|
|
|
sysdeps/posix/gai_strerror.c
|
|
|
|
sysdeps/posix/getcwd.c
|
|
|
|
sysdeps/posix/pwrite.c
|
|
|
|
sysdeps/posix/spawni.c
|
2023-10-11 03:22:39 +08:00
|
|
|
# Merged from gnulib 2024-04-08 (gnulib commit 3238349628)
|
2021-09-04 00:30:36 +08:00
|
|
|
sysdeps/posix/tempname.c
|
|
|
|
# Merged from gnulib 2014-6-27
|
|
|
|
time/mktime.c
|
|
|
|
time/mktime-internal.h
|
|
|
|
time/strptime.c
|
|
|
|
time/timegm.c
|
|
|
|
|
|
|
|
# The last merge was 2014-12-11 and merged gettext 0.19.3 into glibc with a
|
|
|
|
# patch submitted to the gettext mailing list for changes that could be merged
|
|
|
|
# back.
|
|
|
|
#
|
|
|
|
# This commit was omitted from the merge as it does not appear to be compatible
|
|
|
|
# with how glibc expects things to work:
|
|
|
|
#
|
|
|
|
# commit 279b57fc367251666f00e8e2b599b83703451afb
|
|
|
|
# Author: Bruno Haible <bruno@clisp.org>
|
|
|
|
# Date: Fri Jun 14 12:03:49 2002 +0000
|
|
|
|
#
|
|
|
|
# Make absolute pathnames inside $LANGUAGE work.
|
|
|
|
gettext:
|
|
|
|
intl/bindtextdom.c
|
|
|
|
intl/dcgettext.c
|
|
|
|
intl/dcigettext.c
|
|
|
|
intl/dcngettext.c
|
|
|
|
intl/dgettext.c
|
|
|
|
intl/dngettext.c
|
|
|
|
intl/explodename.c
|
|
|
|
intl/finddomain.c
|
|
|
|
intl/gettext.c
|
|
|
|
intl/gettextP.h
|
|
|
|
intl/gmo.h
|
|
|
|
intl/hash-string.c
|
|
|
|
intl/hash-string.h
|
|
|
|
intl/l10nflist.c
|
|
|
|
intl/loadinfo.h
|
|
|
|
intl/loadmsgcat.c
|
|
|
|
intl/locale.alias
|
|
|
|
intl/localealias.c
|
|
|
|
intl/ngettext.c
|
|
|
|
intl/plural-exp.c
|
|
|
|
intl/plural-exp.h
|
|
|
|
intl/plural.y
|
|
|
|
intl/textdomain.c
|
|
|
|
|
2024-10-24 20:30:25 +08:00
|
|
|
# The following files are bundled from upstream Linux 6.10 for FUSE testing
|
|
|
|
# support.
|
|
|
|
linux:
|
|
|
|
support/bundled/linux/COPYING
|
|
|
|
support/bundled/linux/LICENSES
|
|
|
|
support/bundled/linux/LICENSES/exceptions/Linux-syscall-note
|
|
|
|
support/bundled/linux/LICENSES/preferred/GPL-2.0
|
|
|
|
support/bundled/linux/include/uapi/linux/fuse.h
|
|
|
|
|
2021-09-04 00:30:36 +08:00
|
|
|
# The following files are shared with the upstream Unicode project and must be
|
|
|
|
# updated regularly to stay in sync with the upstream unicode releases.
|
|
|
|
#
|
2024-09-12 21:02:55 +08:00
|
|
|
# Merged from Unicode 16.0.0 release.
|
2021-09-04 00:30:36 +08:00
|
|
|
unicode:
|
|
|
|
localedata/unicode-gen/UnicodeData.txt
|
|
|
|
localedata/unicode-gen/unicode-license.txt
|
|
|
|
localedata/unicode-gen/DerivedCoreProperties.txt
|
|
|
|
localedata/unicode-gen/EastAsianWidth.txt
|
localedata: Fix several issues with the set of characters considered 0-width [BZ #31370]
= `Default_Ignorable_Code_Point`s should have width 0 =
Unicode specifies (https://www.unicode.org/faq/unsup_char.html#3) that characters
with the `Default_Ignorable_Code_Point` property
> should be rendered as completely invisible (and non advancing, i.e. “zero width”),
if not explicitly supported in rendering.
Hence, `wcwidth()` should give them all a width of 0, with two exceptions:
- the soft hyphen (U+00AD SOFT HYPHEN) is assigned width 1 by longstanding precedent
- U+115F HANGUL CHOSEONG FILLER needs a carveout
due to the unique behavior of the conjoining Korean jamo characters.
One composed Hangul "syllable block" like 퓛
is made up of two to three individual component characters, or "jamo".
These are all assigned an `East_Asian_Width` of `Wide`
by Unicode, which would normally mean they would all be assigned
width 2 by glibc; a combination of (leading choseong jamo) +
(medial jungseong jamo) + (trailing jongseong jamo) would then have width 2 + 2 + 2 = 6.
However, glibc (and other wcwidth implementations) special-cases jungseong and jongseong,
assigning them all width 0,
to ensure that the complete block has width 2 + 0 + 0 = 2 as it should.
U+115F is meant for use in syllable blocks
that are intentionally missing a leading jamo;
it must be assigned a width of 2 even though it has no visible display
to ensure that the complete block has width 2.
However, `wcwidth()` currently (before this patch)
incorrectly assigns non-zero width to
U+3164 HANGUL FILLER and U+FFA0 HALFWIDTH HANGUL FILLER;
this commit fixes that.
Unicode spec references:
- Hangul: §3.12 https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf#G24646 and
§18.6 https://www.unicode.org/versions/Unicode15.0.0/ch18.pdf#G31028
- `Default_Ignorable_Code_Point`: §5.21 https://www.unicode.org/versions/Unicode15.0.0/ch05.pdf#G40095.
= Non-`Default_Ignorable_Code_Point` format controls should be visible =
The Unicode Standard, §5.21 - Characters Ignored for Display
(https://www.unicode.org/versions/Unicode15.0.0/ch05.pdf#G40095)
says the following:
> A small number of format characters (General_Category = Cf )
> are also not given the Default_Ignorable_Code_Point property.
> This may surprise implementers, who often assume
> that all format characters are generally ignored in fallback display.
> The exact list of these exceptional format characters
> can be found in the Unicode Character Database.
> There are, however, three important sets of such format characters to note:
>
> - prepended concatenation marks
> - interlinear annotation characters
> - Egyptian hieroglyph format controls
>
> The prepended concatenation marks always have a visible display.
> See “Prepended Concatenation Marks” in [*Section 23.2, Layout Controls*](https://www.unicode.org/versions/Unicode15.1.0/ch23.pdf#M9.35858.HeadingBreak.132.Layout.Controls)
> for more discussion of the use and display of these signs.
>
> The other two notable sets of format characters that exceptionally are not ignored
> in fallback display consist of the interlinear annotation characters,
> U+FFF9 INTERLINEAR ANNOTATION ANCHOR through
> U+FFFB INTERLINEAR ANNOTATION TERMINATOR,
> and the Egyptian hieroglyph format controls,
> U+13430 EGYPTIAN HIEROGLYPH VERTICAL JOINER through
> U+1343F EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE.
> These characters should have a visible glyph display for fallback rendering,
> because if they are not displayed,
> it is too easy to misread the resulting displayed text.
> See “Annotation Characters” in [*Section 23.8, Specials*](https://www.unicode.org/versions/Unicode15.1.0/ch23.pdf#M9.21335.Heading.133.Specials),
> as well as [*Section 11.4, Egyptian Hieroglyphs*](https://www.unicode.org/versions/Unicode15.1.0/ch11.pdf#M9.73291.Heading.1418.Egyptian.Hieroglyphs)
> for more discussion of the use and display of these characters.
glibc currently correctly assigns non-zero width to the prepended concatenation marks,
but it incorrectly gives zero width to the interlinear annotation characters
(which a generic terminal cannot interpret)
and the Egyptian hieroglyph format controls
(which are not widely supported in rendering implementations at present).
This commit fixes both these issues as well.
= Derive Hangul syllable type from Unicode data =
Previosuly, the jungseong and jongseong jamo ranges
were hard-coded into the script. With this commit, they are instead parsed
from the HangulSyllableType.txt data file published by Unicode.
This does not affect the end result.
Signed-off-by: Jules Bertholet <julesbertholet@quoi.xyz>
2024-02-24 04:54:57 +08:00
|
|
|
localedata/unicode-gen/HangulSyllableType.txt
|
2021-09-04 00:30:36 +08:00
|
|
|
|
|
|
|
# The following files are shared with the upstream tzcode project and must be
|
|
|
|
# updated regularly to stay in sync with the upstream releases.
|
|
|
|
#
|
2024-09-05 20:33:09 +08:00
|
|
|
# Currently synced to TZDB 2024b, announced and distributed here:
|
|
|
|
# https://github.com/eggert/tz/releases/tag/2024b
|
2021-09-04 00:30:36 +08:00
|
|
|
tzcode:
|
|
|
|
timezone/private.h
|
|
|
|
timezone/tzfile.h
|
timezone: sync to TZDB 2024a
Sync tzselect, zdump, zic to TZDB 2024a.
This patch incorporates the following TZDB source code changes,
listed roughly in descending order of importance.
zic now supports links to links, needed for future tzdata
zic now defaults to '-b slim'
zic now updates output files atomically
zic has new options -R, -l -, -p -
zic -r now uses -00 for unspecified timestamps
zdump now uses [lo,hi) for both -c and -t
Fix several integer overflow bugs
zic now checks input bytes more carefully
Simplify and fix new TZDIR setup
Default time_t to 64 bits on glibc 2.34+ 32-bit
zic now generates TZ strings that conform to POSIX when all-year DST
zic -v now shows extreme-int tm_year transitions
Fix zic bug in last time type of Asia/Gaza etc.
Fix zic bug with Palestine after 2075
Fix bug uncovered by recent change to Iran history
Fix 'zic -b fat' bug with Port Moresby 32-bit data
Fix zic bug with -r @X where X is deduced from TZ
Fix bug with zic -r cutoff before 1st transition
Fix leap second expiry and truncation
Fix zic bug on Linux 2.6.16 and 2.6.17
Fix bug with 'zic -d /a/b/c' if /a is unwriteable
Don't mistruncate TZif files at leap seconds
Fix zdump undefined behavior if !USE_LTZ
zdump -v reports localtime+gmtime failures better
Fix zdump diagnostic for missing timezone
Don't assume nonempty argv
Port better to C23
Do not assume negative >> behavior
I18nize zdump a bit better
Port zdump to right_only installations
New tzselect menu option 'now'
tzselect can now use current time to help choose
Improve tzselect behavior for Turkey etc.
tzselect: do not create temporary files
tzselect: work around mawk bug with {2,}
tzselect: Port to POSIX awk, which prohibits -v newlines
Do not use empty RE in tzselect
Don't set TZ in tzselect
Avoid sed, expr in tzselect
tzselect: Fix problems with spaces in TZDIR
Improve tzselect diagnostics
Remove zic workaround for Qt bug 53071
Remove zic support for "min" in Rule lines
Remove zic support for zic -y, Rule TYPEs, pacificnew
Remove tzselect workaround for Bash 1.14.7 bug
* SHARED-FILES: Update to match current sync.
* config.h.in (HAVE_STRERROR): Remove; no longer needed.
* timezone/Makefile ($(objpfx)zic.o): Depend on tzdir.h.
($(objpfx)tzdir.h): New rule to build a placeholder.
* timezone/private.h, timezone/tzfile.h, timezone/version:
* timezone/zdump.c, timezone/zic.c: Copy verbatim from TZDB 2024a.
2024-04-07 14:39:53 +08:00
|
|
|
timezone/tzselect.ksh
|
|
|
|
timezone/version
|
2021-09-04 00:30:36 +08:00
|
|
|
timezone/zdump.c
|
|
|
|
timezone/zic.c
|
|
|
|
|
|
|
|
# The following files are shared with the upstream tzdata project but is not
|
|
|
|
# synchronized regularly. The data files themselves are used only for testing
|
|
|
|
# purposes and their data is never used to generate any output. We synchronize
|
|
|
|
# them only to stay on top of newer data that might help with testing.
|
|
|
|
#
|
timezone: sync to TZDB 2024a
Sync tzselect, zdump, zic to TZDB 2024a.
This patch incorporates the following TZDB source code changes,
listed roughly in descending order of importance.
zic now supports links to links, needed for future tzdata
zic now defaults to '-b slim'
zic now updates output files atomically
zic has new options -R, -l -, -p -
zic -r now uses -00 for unspecified timestamps
zdump now uses [lo,hi) for both -c and -t
Fix several integer overflow bugs
zic now checks input bytes more carefully
Simplify and fix new TZDIR setup
Default time_t to 64 bits on glibc 2.34+ 32-bit
zic now generates TZ strings that conform to POSIX when all-year DST
zic -v now shows extreme-int tm_year transitions
Fix zic bug in last time type of Asia/Gaza etc.
Fix zic bug with Palestine after 2075
Fix bug uncovered by recent change to Iran history
Fix 'zic -b fat' bug with Port Moresby 32-bit data
Fix zic bug with -r @X where X is deduced from TZ
Fix bug with zic -r cutoff before 1st transition
Fix leap second expiry and truncation
Fix zic bug on Linux 2.6.16 and 2.6.17
Fix bug with 'zic -d /a/b/c' if /a is unwriteable
Don't mistruncate TZif files at leap seconds
Fix zdump undefined behavior if !USE_LTZ
zdump -v reports localtime+gmtime failures better
Fix zdump diagnostic for missing timezone
Don't assume nonempty argv
Port better to C23
Do not assume negative >> behavior
I18nize zdump a bit better
Port zdump to right_only installations
New tzselect menu option 'now'
tzselect can now use current time to help choose
Improve tzselect behavior for Turkey etc.
tzselect: do not create temporary files
tzselect: work around mawk bug with {2,}
tzselect: Port to POSIX awk, which prohibits -v newlines
Do not use empty RE in tzselect
Don't set TZ in tzselect
Avoid sed, expr in tzselect
tzselect: Fix problems with spaces in TZDIR
Improve tzselect diagnostics
Remove zic workaround for Qt bug 53071
Remove zic support for "min" in Rule lines
Remove zic support for zic -y, Rule TYPEs, pacificnew
Remove tzselect workaround for Bash 1.14.7 bug
* SHARED-FILES: Update to match current sync.
* config.h.in (HAVE_STRERROR): Remove; no longer needed.
* timezone/Makefile ($(objpfx)zic.o): Depend on tzdir.h.
($(objpfx)tzdir.h): New rule to build a placeholder.
* timezone/private.h, timezone/tzfile.h, timezone/version:
* timezone/zdump.c, timezone/zic.c: Copy verbatim from TZDB 2024a.
2024-04-07 14:39:53 +08:00
|
|
|
# Currently synced to tzcode 2009i, announced and distributed here:
|
|
|
|
# https://mm.icann.org/pipermail/tz/2009-June/040697.html
|
|
|
|
# https://data.iana.org/time-zones/releases/tzdata2009i.tar.gz
|
2021-09-04 00:30:36 +08:00
|
|
|
tzdata:
|
|
|
|
timezone/africa
|
|
|
|
timezone/antarctica
|
|
|
|
timezone/asia
|
|
|
|
timezone/australasia
|
|
|
|
timezone/europe
|
|
|
|
timezone/northamerica
|
|
|
|
timezone/southamerica
|
|
|
|
timezone/pacificnew
|
|
|
|
timezone/etcetera
|
|
|
|
timezone/factory
|
|
|
|
timezone/backward
|
|
|
|
timezone/systemv
|
|
|
|
timezone/solar87
|
|
|
|
timezone/solar88
|
|
|
|
timezone/solar89
|
|
|
|
timezone/iso3166.tab
|
|
|
|
timezone/zone.tab
|
|
|
|
timezone/leapseconds
|
|
|
|
# This is yearistype.sh in the parent project
|
|
|
|
timezone/yearistype
|
replace tgammaf by the CORE-MATH implementation
The CORE-MATH implementation is correctly rounded (for any rounding mode).
This can be checked by exhaustive tests in a few minutes since there are
less than 2^32 values to check against for example GNU MPFR.
This patch also adds some bench values for tgammaf.
Tested on x86_64 and x86 (cfarm26).
With the initial GNU libc code it gave on an Intel(R) Core(TM) i7-8700:
"tgammaf": {
"": {
"duration": 3.50188e+09,
"iterations": 2e+07,
"max": 602.891,
"min": 65.1415,
"mean": 175.094
}
}
With the new code:
"tgammaf": {
"": {
"duration": 3.30825e+09,
"iterations": 5e+07,
"max": 211.592,
"min": 32.0325,
"mean": 66.1649
}
}
With the initial GNU libc code it gave on cfarm26 (i686):
"tgammaf": {
"": {
"duration": 3.70505e+09,
"iterations": 6e+06,
"max": 2420.23,
"min": 243.154,
"mean": 617.509
}
}
With the new code:
"tgammaf": {
"": {
"duration": 3.24497e+09,
"iterations": 1.8e+07,
"max": 1238.15,
"min": 101.155,
"mean": 180.276
}
}
Signed-off-by: Alexei Sibidanov <sibid@uvic.ca>
Signed-off-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
Changes in v2:
- include <math.h> (fix the linknamespace failures)
- restored original benchtests/strcoll-inputs/filelist#en_US.UTF-8 file
- restored original wrapper code (math/w_tgammaf_compat.c),
except for the dealing with the sign
- removed the tgammaf/float entries in all libm-test-ulps files
- address other comments from Joseph Myers
(https://sourceware.org/pipermail/libc-alpha/2024-July/158736.html)
Changes in v3:
- pass NULL argument for signgam from w_tgammaf_compat.c
- use of math_narrow_eval
- added more comments
Changes in v4:
- initialize local_signgam to 0 in math/w_tgamma_template.c
- replace sysdeps/ieee754/dbl-64/gamma_productf.c by dummy file
Changes in v5:
- do not mention local_signgam any more in math/w_tgammaf_compat.c
- initialize local_signgam to 1 instead of 0 in w_tgamma_template.c
and added comment
Changes in v6:
- pass NULL as 2nd argument of __ieee754_gammaf_r in
w_tgammaf_compat.c, and check for NULL in e_gammaf_r.c
Changes in v7:
- added Signed-off-by line for Alexei Sibidanov (author of the code)
Changes in v8:
- added Signed-off-by line for Paul Zimmermann (submitted of the patch)
Changes in v9:
- address comments from review by Adhemerval Zanella
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2024-10-08 17:28:04 +08:00
|
|
|
|
|
|
|
# The following files are shared with the CORE-MATH project
|
|
|
|
sysdeps/ieee754/flt-32/e_gammaf_r.c
|
|
|
|
(file src/binary32/tgamma/tgammaf.c in CORE-MATH)
|
|
|
|
Instructions to merge new versions:
|
|
|
|
- change the function name from cr_tgammaf to __ieee754_gammaf_r
|
|
|
|
- add "int *signgamp" as 2nd argument and add at the beginning:
|
|
|
|
if (signgamp != NULL) *signgamp = 1;
|
|
|
|
- remove the errno stuff (this is done by the wrapper)
|
|
|
|
- replace 0x1p127f * 0x1p127f by math_narrow_eval (x * 0x1p127f)
|
|
|
|
- replace 0x1p-127f * sgn[k&1] by math_narrow_eval (0x1p-127f * sgn[k&1])
|
|
|
|
- add libm_alias_finite (__ieee754_gammaf_r, __gammaf_r) at the end
|
math: Use exp10m1f from CORE-MATH
The CORE-MATH implementation is correctly rounded (for any rounding mode)
and shows better performance compared to the generic exp10m1f.
The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow). I mostly
fixed some small issues in corner cases (sNaN handling, -INFINITY,
a specific overflow check).
Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1):
Latency master patched improvement
x86_64 45.4690 49.5845 -9.05%
x86_64v2 46.1604 36.2665 21.43%
x86_64v3 37.8442 31.0359 17.99%
i686 121.367 93.0079 23.37%
aarch64 21.1126 15.0165 28.87%
power10 12.7426 8.4929 33.35%
reciprocal-throughput master patched improvement
x86_64 19.6005 17.4005 11.22%
x86_64v2 19.6008 11.1977 42.87%
x86_64v3 17.5427 10.2898 41.34%
i686 59.4215 60.9675 -2.60%
aarch64 13.9814 7.9173 43.37%
power10 6.7814 6.4258 5.24%
The generic implementation calls __ieee754_exp10f which has an
optimized version, although it is not correctly rounded, which is
the main culprit of the the latency difference for x86_64 and
throughp for i686.
Signed-off-by: Alexei Sibidanov <sibid@uvic.ca>
Signed-off-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Reviewed-by: DJ Delorie <dj@redhat.com>
2024-10-26 02:21:47 +08:00
|
|
|
sysdeps/ieee754/flt-32/s_exp10m1f.c
|
|
|
|
(file src/binary32/exp10m1/exp10m1f.c in CORE-MATH)
|
|
|
|
- The code was adapted to use glibc code style and internal
|
|
|
|
functions to handle errno, overflow, and underflow.
|
math: Use exp2m1f from CORE-MATH
The CORE-MATH implementation is correctly rounded (for any rounding mode)
and shows better performance compared to the generic exp2m1f.
The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow). The
only change is to handle FLT_MAX_EXP for FE_DOWNWARD or FE_TOWARDZERO.
The benchmark inputs are based on exp2f ones.
Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1):
Latency master patched improvement
x86_64 40.6042 48.7104 -19.96%
x86_64v2 40.7506 35.9032 11.90%
x86_64v3 35.2301 31.7956 9.75%
i686 102.094 94.6657 7.28%
aarch64 18.2704 15.1387 17.14%
power10 11.9444 8.2402 31.01%
reciprocal-throughput master patched improvement
x86_64 20.8683 16.1428 22.64%
x86_64v2 19.5076 10.4474 46.44%
x86_64v3 19.2106 10.4014 45.86%
i686 56.4054 59.3004 -5.13%
aarch64 12.0781 7.3953 38.77%
power10 6.5306 5.9388 9.06%
The generic implementation calls __ieee754_exp2f and x86_64 provides
an optimized ifunc version (built with -mfma -mavx2, not correctly
rounded). This explains the performance difference for x86_64.
Same for i686, where the ABI provides an optimized __ieee754_exp2f
version built with '-msse2 -mfpmath=sse'. When built wth same
flags, the new algorithm shows a better performance:
master patched improvement
latency 102.094 91.2823 10.59%
reciprocal-throughput 56.4054 52.7984 6.39%
Signed-off-by: Alexei Sibidanov <sibid@uvic.ca>
Signed-off-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Reviewed-by: DJ Delorie <dj@redhat.com>
2024-10-26 02:21:48 +08:00
|
|
|
sysdeps/ieee754/flt-32/s_exp2m1f.c
|
|
|
|
(file src/binary32/exp2m1/exp2m1f.c in CORE-MATH)
|
|
|
|
- The code was adapted to use glibc code style and internal
|
|
|
|
functions to handle errno, overflow, and underflow.
|
2024-10-26 02:21:49 +08:00
|
|
|
sysdeps/ieee754/flt-32/s_expm1f.c
|
|
|
|
(file src/binary32/expm1/expm1f.c in CORE-MATH)
|
|
|
|
- The code was adapted to use glibc code style and internal
|
|
|
|
functions to handle errno, overflow, and underflow.
|