From: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
To: "H.J. Lu" <hjl.tools@gmail.com>
Cc: libc-alpha@sourceware.org, Joseph Myers <josmyers@redhat.com>,
Florian Weimer <fweimer@redhat.com>
Subject: Re: [PATCH v3 1/7] math: Add support for auto static math tests
Date: Mon, 20 May 2024 14:21:03 -0300 [thread overview]
Message-ID: <23180d8b-097a-4b25-8fc0-3056350ed240@linaro.org> (raw)
In-Reply-To: <CAMe9rOqLjqWeKJ4M3xC6b-rpGE3zQXst3tr8rwkJ98Z+rwmLAA@mail.gmail.com>
On 20/05/24 13:48, H.J. Lu wrote:
> On Tue, Apr 2, 2024 at 7:06 AM Adhemerval Zanella
> <adhemerval.zanella@linaro.org> wrote:
>>
>> It basically copy the already in place rules for dynamic tests for
>> auto-generated math functions for all support types. To avoid the
>> need to duplicate .inc files, a .SECONDEXPANSION rules is adeed for
>> the gen-libm-test.py generation.
>>
>> New tests are added on the new rules 'libm-test-funcs-auto-static',
>> 'libm-test-funcs-noauto-static', and 'libm-test-funcs-narrow-static';
>> similar to the non-static counterparts.
>>
>> To avoid add extra build and disk requirement, the new math static
>> tests are only enable with a new define 'build-math-static-tests'.
>> ---
>> Makeconfig | 5 ++
>> Makefile.help | 4 ++
>> math/Makefile | 113 +++++++++++++++++++++++++++++++++++-
>> math/test-double-static.h | 1 +
>> math/test-float-static.h | 1 +
>> math/test-float128-static.h | 1 +
>> math/test-float32-static.h | 1 +
>> math/test-float32x-static.h | 1 +
>> math/test-float64-static.h | 1 +
>> math/test-float64x-static.h | 1 +
>> math/test-ibm128-static.h | 1 +
>> math/test-ldouble-static.h | 1 +
>> 12 files changed, 128 insertions(+), 3 deletions(-)
>> create mode 100644 math/test-double-static.h
>> create mode 100644 math/test-float-static.h
>> create mode 100644 math/test-float128-static.h
>> create mode 100644 math/test-float32-static.h
>> create mode 100644 math/test-float32x-static.h
>> create mode 100644 math/test-float64-static.h
>> create mode 100644 math/test-float64x-static.h
>> create mode 100644 math/test-ibm128-static.h
>> create mode 100644 math/test-ldouble-static.h
>>
>> diff --git a/Makeconfig b/Makeconfig
>> index 85e00cef94..9d287da67b 100644
>> --- a/Makeconfig
>> +++ b/Makeconfig
>> @@ -742,6 +742,11 @@ run-built-tests = yes
>> endif
>> endif
>>
>> +# Whether to build the static math tests
>> +ifndef build-math-static-tests
>> +build-math-static-tests = no
>> +endif
>> +
>> # Whether to stop immediately when a test fails. Nonempty means to
>> # stop, empty means not to stop.
>> ifndef stop-on-test-failure
>> diff --git a/Makefile.help b/Makefile.help
>> index b49df9c5c9..17e7154797 100644
>> --- a/Makefile.help
>> +++ b/Makefile.help
>> @@ -33,6 +33,10 @@ test
>> Note that this will rebuild the test if needed, but will not
>> rebuild what "make all" would have rebuilt.
>>
>> +build-math-static-tests
>> + Enable extra math tests for static linking. Use like this:
>> + make test t=math/test-float-exp10-static build-math-static-tests=yes
>> +
>> --
>> Other useful hints:
>>
>> diff --git a/math/Makefile b/math/Makefile
>> index 79ef4ebb65..98a98d6851 100644
>> --- a/math/Makefile
>> +++ b/math/Makefile
>> @@ -274,8 +274,10 @@ endif
>>
>> libm-vec-tests = $(addprefix test-,$(libmvec-tests))
>> libm-test-support = $(foreach t,$(test-types),libm-test-support-$(t))
>> -test-extras += $(libm-test-support)
>> -extra-test-objs += $(addsuffix .o, $(libm-test-support))
>> +libm-test-support-static = $(foreach t,$(test-types),libm-test-support-$(t)-static)
>> +test-extras += $(libm-test-support) $(libm-test-support-static)
>> +extra-test-objs += $(addsuffix .o, $(libm-test-support)) \
>> + $(addsuffix .o, $(libm-test-support-static))
>> libm-vec-test-wrappers = $(addsuffix -wrappers, $(libm-vec-tests))
>> test-extras += $(libm-vec-test-wrappers)
>> extra-test-objs += $(addsuffix .o, $(libm-vec-test-wrappers))
>> @@ -305,7 +307,7 @@ libm-test-funcs-noauto = canonicalize ceil cimag conj copysign cproj creal \
>> nextup remainder remquo rint round roundeven scalb \
>> scalbln scalbn setpayload setpayloadsig signbit \
>> significand totalorder totalordermag trunc ufromfp \
>> - ufromfpx compat_totalorder compat_totalordermag
>> + ufromfpx
>
> Please submit a separate patch to sort Makefile first.
The Makefile is already sorted since c0d59e3e0da12b294b85acf055e6e75b18d8dd2a,
I will rebase and send a new version.
>
>> libm-test-funcs-compat = compat_totalorder compat_totalordermag
>> libm-test-funcs-narrow = add div fma mul sqrt sub
>> libm-test-funcs-all = $(libm-test-funcs-auto) $(libm-test-funcs-noauto)
>> @@ -364,6 +366,71 @@ $(libm-test-c-narrow-obj): $(objpfx)libm-test%.c: libm-test%.inc \
>> $(make-target-directory)
>> $(PYTHON) gen-libm-test.py -c $< -a auto-libm-test-out$* -C $@
>>
>> +
>> +libm-test-funcs-auto-static = \
>> + $(libm-test-funcs-auto) \
>> + # libm-test-funcs-auto-static
>> +libm-test-funcs-noauto-static = \
>> + $(libm-test-funcs-noauto) \
>> + # libm-test-funcs-noauto-static
>> +libm-test-funcs-narrow-static = \
>> + $(libm-test-funcs-narrow) \
>> + # libm-test-funcs-narrow-static
>> +libm-test-funcs-all-static = $(libm-test-funcs-auto-static) $(libm-test-funcs-noauto-static)
>> +
>> +libm-test-c-auto-static = $(foreach f,$(libm-test-funcs-auto-static),libm-test-$(f)-static.c)
>> +libm-test-c-noauto-static = $(foreach f,$(libm-test-funcs-noauto-static),libm-test-$(f)-static.c)
>> +libm-test-c-narrow-static = $(foreach f,$(libm-test-funcs-narrow-static),\
>> + libm-test-narrow-$(f)-static.c)
>> +generated += $(libm-test-c-auto-static) $(libm-test-c-noauto-static) $(libm-test-c-narrow-static)
>> +
>> +libm-tests-normal-static = $(foreach t,$(libm-tests-base-normal),\
>> + $(foreach f,$(libm-test-funcs-all-static),\
>> + $(t)-$(f)-static))
>> +libm-tests-narrow-static = $(foreach t,$(libm-tests-base-narrow-static),\
>> + $(foreach f,$(libm-test-funcs-narrow-static),\
>> + $(t)-$(f)-static))
>> +libm-tests-vector-static = $(foreach t,$(libmvec-tests-static),\
>> + $(foreach f,$($(t)-funcs),test-$(t)-$(f)-static))
>> +libm-tests-static = $(libm-tests-normal-static) $(libm-tests-narrow-static) $(libm-tests-vector-static)
>> +libm-tests-for-type-static = $(foreach f,$(libm-test-funcs-all-static),\
>> + test-$(1)-$(f)-static test-i$(1)-$(f)-static) \
>> + $(filter test-$(1)-%,$(libm-tests-vector-static) \
>> + $(libm-tests-narrow-static))
>> +
>> +libm-tests.o += $(addsuffix .o,$(libm-tests-static))
>> +
>> +ifeq ($(build-math-static-tests),yes)
>> +tests-static += $(libm-tests-static)
>> +generated += $(addsuffix .c,$(libm-tests)) \
>> + $(foreach t,$(test-types),libm-test-support-$(t)-static.c)
>> +endif
>> +
>> +libm-test-c-auto-obj-static = $(addprefix $(objpfx),$(libm-test-c-auto-static))
>> +libm-test-c-noauto-obj-static = $(addprefix $(objpfx),$(libm-test-c-noauto-static))
>> +libm-test-c-narrow-obj-static = $(addprefix $(objpfx),$(libm-test-c-narrow-static))
>> +
>> +# Use the same input test definitions for both dynamic and static tests.
>> +.SECONDEXPANSION:
>> +$(libm-test-c-noauto-obj-static): $(objpfx)libm-test%.c: libm-test$$(subst -static,,%).inc \
>> + gen-libm-test.py
>> + $(make-target-directory)
>> + $(PYTHON) gen-libm-test.py -c $< -a /dev/null -C $@
>> +
>> +.SECONDEXPANSION:
>> +$(libm-test-c-auto-obj-static): $(objpfx)libm-test%.c: libm-test$$(subst -static,,%).inc \
>> + gen-libm-test.py \
>> + auto-libm-test-out$$(subst -static,,%)
>> + $(make-target-directory)
>> + $(PYTHON) gen-libm-test.py -c $< -a auto-libm-test-out`echo $* | sed 's/-static//'` -C $@
>> +
>> +.SECONDEXPANSION:
>> +$(libm-test-c-narrow-obj-static): $(objpfx)libm-test%.c: libm-test$$(subst -static,,%).inc \
>> + gen-libm-test.py \
>> + auto-libm-test-out$$(subst -static,,%)
>> + $(make-target-directory)
>> + $(PYTHON) gen-libm-test.py -c $< -a auto-libm-test-out`echo $* | sed 's/-static//'` -C $@
>> +
>> # Tests for totalorder compat symbols reuse the table of tests as
>> # processed by gen-libm-test.py, so add dependencies on the generated
>> # .c files.
>> @@ -505,6 +572,18 @@ $(foreach t,$(libm-tests-normal),$(objpfx)$(t).c): $(objpfx)test-%.c:
>> echo "#include <libm-test-$$func.c>"; \
>> ) > $@
>>
>> +$(foreach t,$(libm-tests-normal-static),$(objpfx)$(t).c): $(objpfx)test-%.c:
>> + type_func=$*; \
>> + type=$${type_func%%-*}; \
>> + func=$${type_func#*-}; \
>> + ( \
>> + echo "#include <test-$$type.h>"; \
>> + echo "#include <test-math-exceptions.h>"; \
>> + echo "#include <test-math-errno.h>"; \
>> + echo "#include <test-math-scalar.h>"; \
>> + echo "#include <libm-test-$$func.c>"; \
>> + ) > $@
>> +
>> $(foreach t,$(libm-tests-narrow),$(objpfx)$(t).c): $(objpfx)test-%.c:
>> type_pair_func=$*; \
>> type_pair=$${type_pair_func%-*}; \
>> @@ -539,6 +618,13 @@ $(foreach t,$(test-types),\
>> echo "#include <libm-test-support.c>"; \
>> ) > $@
>>
>> +$(foreach t,$(test-types),\
>> + $(objpfx)libm-test-support-$(t)-static.c): $(objpfx)libm-test-support-%.c:
>> + ( \
>> + echo "#include <test-$*.h>"; \
>> + echo "#include <libm-test-support.c>"; \
>> + ) > $@
>> +
>> $(addprefix $(objpfx), $(libm-tests.o)): $(objpfx)libm-test-ulps.h
>>
>> define o-iterator-doit
>> @@ -548,6 +634,13 @@ endef
>> object-suffixes-left := $(libm-tests-base)
>> include $(o-iterator)
>>
>> +define o-iterator-doit
>> +$(foreach f,$(libm-test-funcs-all-static),\
>> + $(objpfx)$(o)-$(f)-static.o): $(objpfx)$(o)%.o: $(objpfx)libm-test%.c
>> +endef
>> +object-suffixes-left := $(libm-tests-base)
>> +include $(o-iterator)
>> +
>> define o-iterator-doit
>> $(foreach f,$(libm-test-funcs-narrow),\
>> $(objpfx)$(o)-$(f).o): $(objpfx)$(o)%.o: \
>> @@ -563,6 +656,13 @@ endef
>> object-suffixes-left := $(libm-tests-base-normal)
>> include $(o-iterator)
>>
>> +define o-iterator-doit
>> +$(foreach f,$(libm-test-funcs-all-static),\
>> + $(objpfx)$(o)-$(f)-static.o): CFLAGS += $(libm-test-no-inline-cflags)
>> +endef
>> +object-suffixes-left := $(libm-tests-base-normal)
>> +include $(o-iterator)
>> +
>> define o-iterator-doit
>> $(foreach f,$(libm-test-funcs-narrow),\
>> $(objpfx)$(o)-$(f).o): CFLAGS += $(libm-test-no-inline-cflags)
>> @@ -584,6 +684,13 @@ endef
>> object-suffixes-left := $(test-types)
>> include $(o-iterator)
>>
>> +define o-iterator-doit
>> +$(addprefix $(objpfx),\
>> + $(call libm-tests-for-type-static,$(o))): $(objpfx)libm-test-support-$(o)-static.o
>> +endef
>> +object-suffixes-left := $(test-types)
>> +include $(o-iterator)
>> +
>> define o-iterator-doit
>> $(objpfx)libm-test-support-$(o).o: CFLAGS += $(libm-test-no-inline-cflags)
>> endef
>> diff --git a/math/test-double-static.h b/math/test-double-static.h
>> new file mode 100644
>> index 0000000000..d53f46819f
>> --- /dev/null
>> +++ b/math/test-double-static.h
>> @@ -0,0 +1 @@
>> +#include "test-double.h"
>> diff --git a/math/test-float-static.h b/math/test-float-static.h
>> new file mode 100644
>> index 0000000000..7834c9e1f1
>> --- /dev/null
>> +++ b/math/test-float-static.h
>> @@ -0,0 +1 @@
>> +#include "test-float.h"
>> diff --git a/math/test-float128-static.h b/math/test-float128-static.h
>> new file mode 100644
>> index 0000000000..5f8206456a
>> --- /dev/null
>> +++ b/math/test-float128-static.h
>> @@ -0,0 +1 @@
>> +#include "test-float128.h"
>> diff --git a/math/test-float32-static.h b/math/test-float32-static.h
>> new file mode 100644
>> index 0000000000..2df27d1ca0
>> --- /dev/null
>> +++ b/math/test-float32-static.h
>> @@ -0,0 +1 @@
>> +#include "test-float32.h"
>> diff --git a/math/test-float32x-static.h b/math/test-float32x-static.h
>> new file mode 100644
>> index 0000000000..62f78b49d8
>> --- /dev/null
>> +++ b/math/test-float32x-static.h
>> @@ -0,0 +1 @@
>> +#include "test-float32x.h"
>> diff --git a/math/test-float64-static.h b/math/test-float64-static.h
>> new file mode 100644
>> index 0000000000..807c174df1
>> --- /dev/null
>> +++ b/math/test-float64-static.h
>> @@ -0,0 +1 @@
>> +#include "test-float64.h"
>> diff --git a/math/test-float64x-static.h b/math/test-float64x-static.h
>> new file mode 100644
>> index 0000000000..a7801dbc10
>> --- /dev/null
>> +++ b/math/test-float64x-static.h
>> @@ -0,0 +1 @@
>> +#include "test-float64x.h"
>> diff --git a/math/test-ibm128-static.h b/math/test-ibm128-static.h
>> new file mode 100644
>> index 0000000000..b66a57050b
>> --- /dev/null
>> +++ b/math/test-ibm128-static.h
>> @@ -0,0 +1 @@
>> +#include "test-ibm128.h"
>> diff --git a/math/test-ldouble-static.h b/math/test-ldouble-static.h
>> new file mode 100644
>> index 0000000000..beabedb817
>> --- /dev/null
>> +++ b/math/test-ldouble-static.h
>> @@ -0,0 +1 @@
>> +#include "test-ldouble.h"
>> --
>> 2.34.1
>>
>
>
next prev parent reply other threads:[~2024-05-20 17:21 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-02 14:06 [PATCH v3 0/7] Fix some libm static issues Adhemerval Zanella
2024-04-02 14:06 ` [PATCH v3 1/7] math: Add support for auto static math tests Adhemerval Zanella
2024-05-20 16:48 ` H.J. Lu
2024-05-20 17:21 ` Adhemerval Zanella Netto [this message]
2024-04-02 14:06 ` [PATCH v3 2/7] math: Fix i386 and m68k fmod/fmodf on static build (BZ 31488) Adhemerval Zanella
2024-05-11 9:59 ` Aurelien Jarno
2024-05-21 12:40 ` H.J. Lu
2024-05-21 12:54 ` Adhemerval Zanella Netto
2024-04-02 14:06 ` [PATCH v3 3/7] math: Fix i386 and m68k exp10 on static build Adhemerval Zanella
2024-05-11 9:59 ` Aurelien Jarno
2024-05-21 12:48 ` H.J. Lu
2024-05-21 12:54 ` Adhemerval Zanella Netto
2024-04-02 14:06 ` [PATCH v3 4/7] math: Fix isnanf128 " Adhemerval Zanella
2024-05-20 16:51 ` H.J. Lu
2024-05-20 18:53 ` Adhemerval Zanella Netto
2024-05-20 21:34 ` H.J. Lu
2024-05-21 12:32 ` Adhemerval Zanella Netto
2024-05-21 12:36 ` H.J. Lu
2024-05-21 12:56 ` Adhemerval Zanella Netto
2024-04-02 14:06 ` [PATCH v3 5/7] math: Provided copysignf128 for static libm on alpha, s390, and sparcv9 Adhemerval Zanella
2024-05-20 16:55 ` H.J. Lu
2024-05-20 19:04 ` Adhemerval Zanella Netto
2024-04-02 14:06 ` [PATCH v3 6/7] math: Provide frexpf128 " Adhemerval Zanella
2024-05-20 16:57 ` H.J. Lu
2024-05-20 19:06 ` Adhemerval Zanella Netto
2024-04-02 14:06 ` [PATCH v3 7/7] math: Provide modf128 " Adhemerval Zanella
2024-05-20 16:59 ` H.J. Lu
2024-05-20 19:07 ` Adhemerval Zanella Netto
2024-05-21 15:40 ` H.J. Lu
2024-05-21 16:41 ` Adhemerval Zanella Netto
2024-05-20 16:31 ` [PATCH v3 0/7] Fix some libm static issues Adhemerval Zanella Netto
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=23180d8b-097a-4b25-8fc0-3056350ed240@linaro.org \
--to=adhemerval.zanella@linaro.org \
--cc=fweimer@redhat.com \
--cc=hjl.tools@gmail.com \
--cc=josmyers@redhat.com \
--cc=libc-alpha@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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 read-only IMAP folder(s) and NNTP newsgroup(s).