From patchwork Tue May 21 16:52:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 1937493 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=YQYGKw80; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VkLCB5Vcsz20PS for ; Wed, 22 May 2024 02:55:02 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0C6BB384AB70 for ; Tue, 21 May 2024 16:55:01 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pj1-x1034.google.com (mail-pj1-x1034.google.com [IPv6:2607:f8b0:4864:20::1034]) by sourceware.org (Postfix) with ESMTPS id 7F9E13858D3C for ; Tue, 21 May 2024 16:54:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7F9E13858D3C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7F9E13858D3C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::1034 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716310482; cv=none; b=kVXXk082sToqZMXCHUINjpdHeX9Dk9inzfdvJ3lBjyTlkssiBtN22xiU6YD+SSYLnZxabnWu1rN+aexnSg5Hdc7Ct0IC8ITmpgxIcKEq+nV5Sfm23iPN4dXBiRM2vZQI/0a2ZVCCoOP7JpDQ5YKA6o0v7Xw6zISqvOfjJ0KcVhE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716310482; c=relaxed/simple; bh=3A+hisGxAjTgAsewesrYDDy8b5Bkr+XQfMpfQ6Cwmp8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=MjlNHWAao2Bv0gxwhtpkbOx2GyEikLBrISlPneWqZ5zhNxF/eYR/YQkKaRFNrjb+albkcVDzCpHMMNFIRpzJjGIMlnAGlTMQb7SAAVzQklDvt9d/EAPrTlI+r92rHbn85yUkJiRf2chs9TFZPGv11s+C7VTcw9twt6zps8mnFPE= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-2b433dd2566so1467391a91.2 for ; Tue, 21 May 2024 09:54:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1716310478; x=1716915278; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=auzSUJvzCvg7yyJ2qGjqR9HEStLU83DSoa85R4sU04k=; b=YQYGKw809x7Vjw10oMuWE2dYm/YPxBYW8Q0mUIhlmCzZmdpIXoERoW3+nNTneVvWB4 PnWVgBOnqmqtJZGcdDnFz5a7lTizaw9k1yk3IiXgbRAto5xoEL9st125XjzSv6o+im+q lGQJCfdmGpM13ZFxPw0a7dY0dGbwiIvYcl5WzIJ6FMpCqNvoRHCDi83yI/71tG1S0U6M 2FIDfa//6Yoo3tXfDg23MdTiIyAOEdWAoemKaB08WA+bX5vFmjUELfR0HQ8gY7Oi6ub7 kTPYqp6gNgqXHeImfvuobQ1OaycFLMAc0RMbPFrgDURxUPb2SOFQWnWVxZbqHD3R09lH 6qfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716310478; x=1716915278; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=auzSUJvzCvg7yyJ2qGjqR9HEStLU83DSoa85R4sU04k=; b=DE5RtGUodETS7F0DaG+K/ogY36W+ftYWmCIZ+UhuSmyUF7MkwamerRmsOkAyPrOhTv M0KVaK7cCxfRGakYbJAdip/GS8rAwqdG93bsZJ18FteF3yZV7pk92LqMnybMB3tKeJDX uDiYRfNJfVWyg6eraxHrszsXkBYE0rH0hl8zD/WUwG7HjLxxnC4IawXQuYWa91Kiv1Ph 2IMATaOTNeK2lMoOLVVMAqCXfWTh8S31NUiNnTkPkRbhtU3d7Rmz8TRbjtwVo3YZZDfY xlgQ5j6+KwfMt/YLK9oge4rnc2QnjbKEHgwmq2g0YSA69g+6wKliyFVPq/dGBSuXkxI2 409g== X-Gm-Message-State: AOJu0Yw2tOs7UwnrplKQ0csKV4bvoulzHN0QW9j5V8LETDIu0Z+wkNR2 LJ0tc2KaHNbHEOotTv71rB6wln/8wtxZcxjHMxOwzw4eDTwbKx3sKiOD2rPGg+zV8/ep5hJH4Eu C X-Google-Smtp-Source: AGHT+IFDQJXI1ybJWqwkvhYJ7syKXKg5OOCSPQd9BBP1zGW6hmpuD96eu8glKIhWNNHgNXbFtp/j4w== X-Received: by 2002:a17:90a:5508:b0:2b6:ab87:59c8 with SMTP id 98e67ed59e1d1-2b6cc7745a4mr26674213a91.13.1716310477552; Tue, 21 May 2024 09:54:37 -0700 (PDT) Received: from mandiga.. ([2804:1b3:a7c2:f76a:a4a6:1329:be7a:c724]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2bd92b3d2b0sm1620774a91.3.2024.05.21.09.54.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 May 2024 09:54:37 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Cc: "H . J . Lu" Subject: [PATCH v4 1/5] math: Add support for auto static math tests Date: Tue, 21 May 2024 13:52:53 -0300 Message-ID: <20240521165430.2998944-2-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240521165430.2998944-1-adhemerval.zanella@linaro.org> References: <20240521165430.2998944-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org 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'. Reviewed-by: H.J. Lu --- Makeconfig | 5 ++ Makefile.help | 4 ++ math/Makefile | 120 ++++++++++++++++++++++++++++++++++-- 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, 133 insertions(+), 5 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 9fe664ae3a..29819363da 100644 --- a/Makeconfig +++ b/Makeconfig @@ -768,6 +768,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 36024a5039..58e5c070cf 100644 --- a/math/Makefile +++ b/math/Makefile @@ -593,8 +593,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)) @@ -664,12 +666,10 @@ libm-test-funcs-auto = \ y1 \ yn \ # libm-test-funcs-auto -libm-test-funcs-noauto = \ +libm-test-funcs-noauto-base = \ canonicalize \ ceil \ cimag \ - compat_totalorder \ - compat_totalordermag \ conj \ copysign \ cproj \ @@ -740,6 +740,11 @@ libm-test-funcs-noauto = \ trunc \ ufromfp \ ufromfpx \ + # libm-test-funcs-noauto-base +libm-test-funcs-noauto = \ + $(libm-test-funcs-noauto-base) \ + compat_totalorder \ + compat_totalordermag \ # libm-test-funcs-noauto libm-test-funcs-compat = \ compat_totalorder \ @@ -816,6 +821,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-base) \ + # 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. @@ -1044,6 +1114,18 @@ $(foreach t,$(libm-tests-normal),$(objpfx)$(t).c): $(objpfx)test-%.c: echo "#include "; \ ) > $@ +$(foreach t,$(libm-tests-normal-static),$(objpfx)$(t).c): $(objpfx)test-%.c: + type_func=$*; \ + type=$${type_func%%-*}; \ + func=$${type_func#*-}; \ + ( \ + echo "#include "; \ + echo "#include "; \ + echo "#include "; \ + echo "#include "; \ + echo "#include "; \ + ) > $@ + $(foreach t,$(libm-tests-narrow),$(objpfx)$(t).c): $(objpfx)test-%.c: type_pair_func=$*; \ type_pair=$${type_pair_func%-*}; \ @@ -1078,6 +1160,13 @@ $(foreach t,$(test-types),\ echo "#include "; \ ) > $@ +$(foreach t,$(test-types),\ + $(objpfx)libm-test-support-$(t)-static.c): $(objpfx)libm-test-support-%.c: + ( \ + echo "#include "; \ + echo "#include "; \ + ) > $@ + $(addprefix $(objpfx), $(libm-tests.o)): $(objpfx)libm-test-ulps.h define o-iterator-doit @@ -1087,6 +1176,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: \ @@ -1102,6 +1198,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) @@ -1123,6 +1226,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"