[PATCH 3/3] AArch64: additional mathvec build system cleanups.

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Wed Jun 17 18:45:00 GMT 2026



On 16/06/26 05:40, Pierre Blanchard wrote:
> Rely on a single list of ISAs and precisions for
> source, tests and benchmarks.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
> OK for master? If so please commit for me as I don't have commit rights.
> Thanks,
> Pierre
>  sysdeps/aarch64/fpu/Makefile | 96 ++++++++++++++++++++----------------
>  1 file changed, 53 insertions(+), 43 deletions(-)
> 
> diff --git a/sysdeps/aarch64/fpu/Makefile b/sysdeps/aarch64/fpu/Makefile
> index 40d6509c89..67952cc5f2 100644
> --- a/sysdeps/aarch64/fpu/Makefile
> +++ b/sysdeps/aarch64/fpu/Makefile
> @@ -42,34 +42,40 @@ float-advsimd-funcs = $(libmvec-supported-funcs)
>  double-advsimd-funcs = $(libmvec-supported-funcs)
>  float-sve-funcs = $(libmvec-supported-funcs)
>  double-sve-funcs = $(libmvec-supported-funcs)
> +mathvec-types = float double
> +mathvec-subdirs = advsimd sve
>  
>  ifeq ($(subdir),mathvec)
> -generated-dirs += advsimd sve
> -generated += advsimd/stamp sve/stamp
> -before-compile += $(addprefix $(objpfx),advsimd/stamp sve/stamp)
> +generated-dirs += $(mathvec-subdirs)
> +generated += $(addsuffix /stamp,$(mathvec-subdirs))
> +before-compile += $(addprefix $(objpfx),$(addsuffix /stamp,$(mathvec-subdirs)))
>  
> -$(objpfx)advsimd/stamp $(objpfx)sve/stamp:
> +$(addprefix $(objpfx),$(addsuffix /stamp,$(mathvec-subdirs))):
>  	$(make-target-directory)
>  	touch $@
>  
> -sysd-rules-patterns += advsimd/%:advsimd/% sve/%:sve/%
> -
> -libmvec-support = $(addprefix advsimd/,$(addsuffix f,$(float-advsimd-funcs))) \
> -                  $(addprefix advsimd/,$(double-advsimd-funcs)) \
> -                  $(addprefix sve/,$(addsuffix f,$(float-sve-funcs))) \
> -                  $(addprefix sve/,$(double-sve-funcs)) \
> -                  v_log_data \
> -                  v_exp_data \
> -                  v_log2_data \
> -                  v_log10_data \
> -                  erf_data \
> -                  erff_data \
> -                  v_exp_tail_data \
> -                  erfc_data \
> -                  erfcf_data \
> -                  v_pow_exp_data \
> -                  v_pow_log_data \
> -                  v_powf_data
> +sysd-rules-patterns += $(foreach dir,$(mathvec-subdirs),$(dir)/%:$(dir)/%)
> +
> +define libmvec-routines-for
> +$(addprefix $(1)/,$(addsuffix f,$(float-$(1)-funcs))) \
> +$(addprefix $(1)/,$(double-$(1)-funcs))
> +endef
> +
> +libmvec-vector-routines = $(foreach dir,$(mathvec-subdirs),\
> +                           $(call libmvec-routines-for,$(dir)))
> +libmvec-data-routines = v_log_data \
> +                        v_exp_data \
> +                        v_log2_data \
> +                        v_log10_data \
> +                        erf_data \
> +                        erff_data \
> +                        v_exp_tail_data \
> +                        erfc_data \
> +                        erfcf_data \
> +                        v_pow_exp_data \
> +                        v_pow_log_data \
> +                        v_powf_data

Change to new scheme:

libmvec-data-routines = \
  v_log_data \
  ...
  v_powf_data \
  # libmvec-data-routines

It makes adding/removing entries diff a bit less verbose.

The rest looks ok, thanks.

> +libmvec-support = $(libmvec-vector-routines) $(libmvec-data-routines)
>  endif
>  
>  # Enable SVE for building libmvec.  Since CFLAGS may contain a -mcpu or -march,
> @@ -78,21 +84,27 @@ endif
>  
>  sve-cflags = -mcpu=generic+sve -march=armv8-a+sve -mtune=neoverse-v1
>  
> +bench-script-advsimd = bench_libmvec_advsimd.py
> +bench-script-sve = bench_libmvec_sve.py
> +
> +define bench-libmvec-for
> +$(addprefix $(1)-$(2)-,$($(1)-$(2)-funcs))
> +endef
> +
>  ifeq ($(build-mathvec),yes)
> -bench-libmvec = $(addprefix float-advsimd-,$(float-advsimd-funcs)) \
> -                $(addprefix double-advsimd-,$(double-advsimd-funcs)) \
> -                $(addprefix float-sve-,$(float-sve-funcs)) \
> -                $(addprefix double-sve-,$(double-sve-funcs))
> +bench-libmvec = $(foreach type,$(mathvec-types),\
> +                 $(foreach dir,$(mathvec-subdirs),\
> +                 $(call bench-libmvec-for,$(type),$(dir))))
>  endif
>  
> -$(objpfx)bench-float-advsimd-%.c:
> -	$(PYTHON) $(..)sysdeps/aarch64/fpu/scripts/bench_libmvec_advsimd.py $(basename $(@F)) > $@
> -$(objpfx)bench-double-advsimd-%.c:
> -	$(PYTHON) $(..)sysdeps/aarch64/fpu/scripts/bench_libmvec_advsimd.py $(basename $(@F)) > $@
> -$(objpfx)bench-float-sve-%.c:
> -	$(PYTHON) $(..)sysdeps/aarch64/fpu/scripts/bench_libmvec_sve.py $(basename $(@F)) > $@
> -$(objpfx)bench-double-sve-%.c:
> -	$(PYTHON) $(..)sysdeps/aarch64/fpu/scripts/bench_libmvec_sve.py $(basename $(@F)) > $@
> +define bench-libmvec-rule
> +$(objpfx)bench-$(1)-$(2)-%.c:
> +	$$(PYTHON) $$(..)sysdeps/aarch64/fpu/scripts/$$(bench-script-$(2)) $$(basename $$(@F)) > $$@
> +endef
> +
> +$(foreach type,$(mathvec-types),\
> +  $(foreach dir,$(mathvec-subdirs),\
> +    $(eval $(call bench-libmvec-rule,$(type),$(dir)))))
>  
>  ifeq (${STATIC-BENCHTESTS},yes)
>  libmvec-benchtests = $(common-objpfx)mathvec/libmvec.a $(common-objpfx)math/libm.a
> @@ -103,19 +115,17 @@ endif
>  $(addprefix $(objpfx)bench-,$(bench-libmvec)): $(libmvec-benchtests)
>  
>  ifeq ($(build-mathvec),yes)
> -libmvec-tests += float-advsimd double-advsimd float-sve double-sve
> +libmvec-tests += $(foreach type,$(mathvec-types),\
> +                  $(foreach dir,$(mathvec-subdirs),$(type)-$(dir)))
>  endif
>  
> -define sve-bench-float-cflags-template
> -CFLAGS-bench-float-sve-$(1).c += $(sve-cflags)
> -endef
> -
> -define sve-bench-double-cflags-template
> -CFLAGS-bench-double-sve-$(1).c += $(sve-cflags)
> +define sve-bench-cflags-template
> +CFLAGS-bench-$(1)-sve-$(2).c += $(sve-cflags)
>  endef
>  
> -$(foreach f,$(float-sve-funcs), $(eval $(call sve-bench-float-cflags-template,$(f))))
> -$(foreach f,$(double-sve-funcs), $(eval $(call sve-bench-double-cflags-template,$(f))))
> +$(foreach type,$(mathvec-types),\
> +  $(foreach f,$($(type)-sve-funcs),\
> +    $(eval $(call sve-bench-cflags-template,$(type),$(f)))))
>  
>  # Specialize CFLAGS used for building SVE sources.
>  define sve-object-cflags-template



More information about the Libc-alpha mailing list