about summary refs log tree commit diff
path: root/sysdeps/aarch64/fpu/Makefile
blob: e8af35099d7b9f8f2ffaab0ecc4fe4be8fd46154 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
libmvec-supported-funcs = acos \
                          acosh \
                          asin \
                          asinh \
                          atan \
                          atanh \
                          atan2 \
                          cos \
                          cosh \
                          erf \
                          erfc \
                          exp \
                          exp10 \
                          exp2 \
                          expm1 \
                          log \
                          log10 \
                          log1p \
                          log2 \
                          sin \
                          sinh \
                          tan \
                          tanh

float-advsimd-funcs = $(libmvec-supported-funcs)
double-advsimd-funcs = $(libmvec-supported-funcs)
float-sve-funcs = $(libmvec-supported-funcs)
double-sve-funcs = $(libmvec-supported-funcs)

ifeq ($(subdir),mathvec)
libmvec-support = $(addsuffix f_advsimd,$(float-advsimd-funcs)) \
                  $(addsuffix _advsimd,$(double-advsimd-funcs)) \
                  $(addsuffix f_sve,$(float-sve-funcs)) \
                  $(addsuffix _sve,$(double-sve-funcs)) \
                  v_log_data \
                  v_exp_data \
                  v_log2_data \
                  v_log10_data \
                  erf_data \
                  erff_data \
                  sv_erf_data \
                  sv_erff_data \
                  v_exp_tail_data \
                  erfc_data \
                  erfcf_data
endif

sve-cflags = -march=armv8-a+sve


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))
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)) > $@

ifeq (${STATIC-BENCHTESTS},yes)
libmvec-benchtests = $(common-objpfx)mathvec/libmvec.a $(common-objpfx)math/libm.a
else
libmvec-benchtests = $(libmvec) $(libm)
endif

$(addprefix $(objpfx)bench-,$(bench-libmvec)): $(libmvec-benchtests)

ifeq ($(build-mathvec),yes)
libmvec-tests += float-advsimd double-advsimd float-sve double-sve
endif

define sve-float-cflags-template
CFLAGS-$(1)f_sve.c += $(sve-cflags)
CFLAGS-bench-float-sve-$(1).c += $(sve-cflags)
endef

define sve-double-cflags-template
CFLAGS-$(1)_sve.c += $(sve-cflags)
CFLAGS-bench-double-sve-$(1).c += $(sve-cflags)
endef

$(foreach f,$(float-sve-funcs), $(eval $(call sve-float-cflags-template,$(f))))
$(foreach f,$(double-sve-funcs), $(eval $(call sve-double-cflags-template,$(f))))

CFLAGS-test-float-sve-wrappers.c = $(sve-cflags)
CFLAGS-test-double-sve-wrappers.c = $(sve-cflags)