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 21postclean-generated += libmvec.mk 22 23# Define for both math and mathvec directories. 24libmvec-funcs = \ 25 acos \ 26 cos \ 27 exp \ 28 log \ 29 pow \ 30 sin \ 31 sincos \ 32 33# Define libmvec function for benchtests directory. 34libmvec-bench-funcs = \ 35 cos \ 36 exp \ 37 log \ 38 pow \ 39 sin \ 40 41bench-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 48bench-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. 56libmvec-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. 61libmvec-abi-func-avx-tests = \ 62 $(addsuffix -avx,$(libmvec-abi-func-tests)) 63# 64# The AVX2 libmvec ABI tests. 65libmvec-abi-func-avx2-tests = \ 66 $(addsuffix -avx2,$(libmvec-abi-func-tests)) 67# 68# The AVX512F libmvec ABI tests. 69libmvec-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 $@ 129