7acf1f306cc1740680e8566371d46d44d00420b9
[platform/upstream/glibc.git] / sysdeps / x86_64 / fpu / Makeconfig
1 # Generate libmvec.mk for libmvec ABI tests.
2
3 # Copyright (C) 2021 Free Software Foundation, Inc.
4 # This file is part of the GNU C Library.
5
6 # The GNU C Library is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU Lesser General Public
8 # License as published by the Free Software Foundation; either
9 # version 2.1 of the License, or (at your option) any later version.
10
11 # The GNU C Library is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 # Lesser General Public License for more details.
15
16 # You should have received a copy of the GNU Lesser General Public
17 # License along with the GNU C Library; if not, see
18 # <https://www.gnu.org/licenses/>.
19
20 -include $(common-objpfx)libmvec.mk
21 postclean-generated += libmvec.mk
22
23 # Define for both math and mathvec directories.
24 libmvec-funcs = \
25   acos \
26   cos \
27   exp \
28   log \
29   pow \
30   sin \
31   sincos \
32
33 # Define libmvec function for benchtests directory.
34 libmvec-bench-funcs = \
35   cos \
36   exp \
37   log \
38   pow \
39   sin \
40
41 bench-libmvec-double = \
42   $(addprefix double-vlen1-, $(libmvec-bench-funcs)) \
43   $(addprefix double-vlen2-, $(libmvec-bench-funcs)) \
44   $(addprefix double-vlen4-, $(libmvec-bench-funcs)) \
45   $(addprefix double-vlen4-avx2-, $(libmvec-bench-funcs)) \
46   $(addprefix double-vlen8-, $(libmvec-bench-funcs)) \
47
48 bench-libmvec-float = \
49   $(addsuffix f, $(addprefix float-vlen1-, $(libmvec-bench-funcs))) \
50   $(addsuffix f, $(addprefix float-vlen4-, $(libmvec-bench-funcs))) \
51   $(addsuffix f, $(addprefix float-vlen8-, $(libmvec-bench-funcs))) \
52   $(addsuffix f, $(addprefix float-vlen8-avx2-, $(libmvec-bench-funcs))) \
53   $(addsuffix f, $(addprefix float-vlen16-, $(libmvec-bench-funcs))) \
54
55 # The base libmvec ABI tests.
56 libmvec-abi-func-tests = \
57   $(addprefix test-double-libmvec-,$(libmvec-funcs)) \
58   $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-funcs)))
59
60 # The AVX libmvec ABI tests.
61 libmvec-abi-func-avx-tests = \
62   $(addsuffix -avx,$(libmvec-abi-func-tests))
63 #
64 # The AVX2 libmvec ABI tests.
65 libmvec-abi-func-avx2-tests = \
66   $(addsuffix -avx2,$(libmvec-abi-func-tests))
67 #
68 # The AVX512F libmvec ABI tests.
69 libmvec-abi-func-avx512f-tests = \
70   $(addsuffix -avx512f,$(libmvec-abi-func-tests))
71
72 $(common-objpfx)libmvec.mk: $(common-objpfx)config.make
73         (echo "ifeq (\$$(subdir)\$$(build-mathvec),mathyes)"; \
74          echo; \
75          for i in "" "-avx" "-avx2" "-avx512f"; do \
76            for t in $(libmvec-abi-func-tests); do \
77              echo "\$$(objpfx)$$t$$i: \\"; \
78              echo "  \$$(objpfx)$$t$$i.o \\"; \
79              echo "  \$$(objpfx)test-libmvec$$i.o \$$(libmvec)"; \
80              echo; \
81            done; \
82          done; \
83          for t in $(libmvec-funcs); do \
84            echo "CFLAGS-test-double-libmvec-$$t.c = \\"; \
85            echo "  \$$(libmvec-abi-test-cflags)"; \
86            echo "CFLAGS-test-double-libmvec-$$t-avx.c = \\"; \
87            echo "  \$$(libmvec-abi-test-cflags) \\"; \
88            echo "  \$$(double-vlen4-arch-ext-cflags)"; \
89            echo "CFLAGS-test-double-libmvec-$$t-avx2.c = \\"; \
90            echo "  \$$(libmvec-abi-test-cflags) \\"; \
91            echo "  \$$(double-vlen4-arch-ext2-cflags)"; \
92            echo "CFLAGS-test-double-libmvec-$$t-avx512f.c = \\"; \
93            echo "  \$$(libmvec-abi-test-cflags) \\"; \
94            echo "  \$$(double-vlen8-arch-ext-cflags)"; \
95            echo; \
96            echo "CFLAGS-test-float-libmvec-$${t}f.c = \\"; \
97            echo "  \$$(libmvec-abi-test-cflags)"; \
98            echo "CFLAGS-test-float-libmvec-$${t}f-avx.c = \\"; \
99            echo "  \$$(libmvec-abi-test-cflags) \\"; \
100            echo "  \$$(float-vlen8-arch-ext-cflags)"; \
101            echo "CFLAGS-test-float-libmvec-$${t}f-avx2.c = \\"; \
102            echo "  \$$(libmvec-abi-test-cflags) \\"; \
103            echo "  \$$(float-vlen8-arch-ext2-cflags)"; \
104            echo "CFLAGS-test-float-libmvec-$${t}f-avx512f.c = \\"; \
105            echo "  \$$(libmvec-abi-test-cflags) \\"; \
106            echo "  \$$(float-vlen16-arch-ext-cflags)"; \
107            echo; \
108          done; \
109          echo "endif"; \
110          echo "ifeq (\$$(subdir),benchtests)"; \
111          for t in $(libmvec-bench-funcs); do \
112            echo "CFLAGS-bench-double-vlen4-$$t.c = \\"; \
113            echo "  \$$(double-vlen4-arch-ext-cflags)"; \
114            echo "CFLAGS-bench-double-vlen4-avx2-$$t.c = \\"; \
115            echo "  \$$(double-vlen4-arch-ext2-cflags)"; \
116            echo "CFLAGS-bench-double-vlen8-$$t.c = \\"; \
117            echo "  \$$(double-vlen8-arch-ext-cflags)"; \
118            echo; \
119            echo "CFLAGS-bench-float-vlen8-$${t}f.c = \\"; \
120            echo "  \$$(float-vlen8-arch-ext-cflags)"; \
121            echo "CFLAGS-bench-float-vlen8-avx2-$${t}f.c = \\"; \
122            echo "  \$$(float-vlen8-arch-ext2-cflags)"; \
123            echo "CFLAGS-bench-float-vlen16-$${t}f.c = \\"; \
124            echo "  \$$(float-vlen16-arch-ext-cflags)"; \
125            echo; \
126          done; \
127          echo "endif") > $@T
128         mv -f $@T $@