From patchwork Thu Oct 14 21:07:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 46247 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C9890385843D for ; Thu, 14 Oct 2021 21:08:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C9890385843D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1634245697; bh=WCnhfCzXfDq9zVphJljMdHvFsUBkICy4rE4m+qp6XyY=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=qA5oeCkHZbxjELZlKScFOtn3Gko3InZbzmDCT/bYBrRHOwCqC3VGtvCUSAulzy4TY OO2xE0cCZlrzbU8Us1YqyTz2Ht83TSrP+U1HYT5bgIg4ZwjV53M/1HNivk5bbHrTJG y6QXTHohFB0RrAPCxMj1hlFMXxin2AymHAYz9duU= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) by sourceware.org (Postfix) with ESMTPS id 41D083858412 for ; Thu, 14 Oct 2021 21:07:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 41D083858412 Received: by mail-pg1-x532.google.com with SMTP id e7so6670905pgk.2 for ; Thu, 14 Oct 2021 14:07:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=WCnhfCzXfDq9zVphJljMdHvFsUBkICy4rE4m+qp6XyY=; b=FZ8v1VqrRmRuVaSRD9roboP9fZhkCakmfFOjSUobC0bQfw55vlJF/aud4YaW3NtMZH pZETTh30sWTalrQbyz7ALsVRe9Oa/6ovJgJyBN4gK9VvNcrRVZIndHYfdHwmpLal6sj8 fMVUAdLZuKu3owtMivZqMSshiYJdRRl0ze2GeNro+HlTcMITK9B+O+9JDy7E/v79wBi2 cfGGRHSP8T9cNlwoEeLdfzsouHDl3ueHxOdovWul03LuaRi1zwpMhUTKK9M//25LAzs8 ofwFLa+oovdjNRI0NBVN5tYUIse5jh5EYpjSE5SRiIGwytGVq32RlcRjUsHgsWbOkRuC EmVQ== X-Gm-Message-State: AOAM5334yG3IjalUdPof2eQI5IqAVvXGNnFiVo4t6/Bwuu32p2NCSE6W oo1EW7v2RnLELIWZBceWi8mkOlJ0Xpc= X-Google-Smtp-Source: ABdhPJxWjNYxfdWz11qZUuOhPoXzKFOLA+JLFmLJ9BKPsVL3GfD96VBFjecsNAAYCwrwKMGmDL1Lzg== X-Received: by 2002:a62:1b8e:0:b0:44c:9318:f6e1 with SMTP id b136-20020a621b8e000000b0044c9318f6e1mr7871353pfb.84.1634245674229; Thu, 14 Oct 2021 14:07:54 -0700 (PDT) Received: from gnu-cfl-2.localdomain ([172.58.39.6]) by smtp.gmail.com with ESMTPSA id i123sm3275778pfg.157.2021.10.14.14.07.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Oct 2021 14:07:53 -0700 (PDT) Received: from gnu-cfl-2.. (localhost [IPv6:::1]) by gnu-cfl-2.localdomain (Postfix) with ESMTP id D0502C02CB; Thu, 14 Oct 2021 14:07:52 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH] x86-64: Add sysdeps/x86_64/fpu/Makeconfig Date: Thu, 14 Oct 2021 14:07:52 -0700 Message-Id: <20211014210752.1989774-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Spam-Status: No, score=-3032.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: "H.J. Lu via Libc-alpha" From: "H.J. Lu" Reply-To: "H.J. Lu" Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" 1. Add sysdeps/x86_64/fpu/Makeconfig to auto-generate libmvec.mk, which contains libmvec ABI test dependencies and CFLAGS, in the build directory. 2. Include libmvec.mk for libmvec ABI test dependencies and CFLAGS. --- sysdeps/x86_64/fpu/Makeconfig | 89 +++++++++++++++++++ sysdeps/x86_64/fpu/Makefile | 122 ++++++++------------------ sysdeps/x86_64/fpu/multiarch/Makefile | 68 +++++--------- 3 files changed, 146 insertions(+), 133 deletions(-) create mode 100644 sysdeps/x86_64/fpu/Makeconfig diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig new file mode 100644 index 0000000000..b1506a4e01 --- /dev/null +++ b/sysdeps/x86_64/fpu/Makeconfig @@ -0,0 +1,89 @@ +# Generate libmvec.mk for libmvec ABI tests. + +# Copyright (C) 2021 Free Software Foundation, Inc. +# This file is part of the GNU C Library. + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, see +# . + +-include $(common-objpfx)libmvec.mk +postclean-generated += libmvec.mk + +# Define for both math and mathvec directories. +libmvec-funcs = \ + cos \ + exp \ + log \ + pow \ + sin \ + sincos \ + +# FIXME: Add ABI tests for all libmvec functions and replace +# libmvec-abi-funcs with libmvec-funcs. +libmvec-abi-funcs = \ + sincos + +libmvec-abi-funcs-tests = \ + $(addprefix test-double-libmvec-,$(libmvec-abi-funcs)) \ + $(addsuffix f,$(addprefix test-float-libmvec-,$(libmvec-abi-funcs))) + +empty:= +space:=$(empty) $(empty) +libmvec-abi-func-avx-list = $(space) -avx -avx2 +libmvec-abi-func-avx-tests = \ + $(foreach l,$(libmvec-abi-func-avx-list), \ + $(addsuffix $(l),$(libmvec-abi-funcs-tests))) +libmvec-abi-func-avx512f-tests = \ + $(addsuffix -avx512f,$(libmvec-abi-funcs-tests)) +libmvec-abi-func-tests = \ + $(libmvec-abi-func-avx-tests) \ + $(libmvec-abi-func-avx512f-tests) + +$(common-objpfx)libmvec.mk: $(common-objpfx)config.make + (echo "ifeq (\$$(subdir)\$$(build-mathvec),mathyes)"; \ + echo; \ + for t in $(libmvec-abi-func-tests); do \ + echo "\$$(objpfx)$$t: \\"; \ + echo " \$$(objpfx)$$t.o \\"; \ + echo " \$$(objpfx)test-libmvec.o \$$(libmvec)"; \ + echo; \ + done; \ + for t in $(libmvec-abi-funcs); do \ + echo "CFLAGS-test-double-libmvec-$$t.c = \\"; \ + echo " \$$(libmvec-abi-test-cflags)"; \ + echo "CFLAGS-test-double-libmvec-$$t-avx.c = \\"; \ + echo " \$$(libmvec-abi-test-cflags) \\"; \ + echo " \$$(double-vlen4-arch-ext-cflags)"; \ + echo "CFLAGS-test-double-libmvec-$$t-avx2.c = \\"; \ + echo " \$$(libmvec-abi-test-cflags) \\"; \ + echo " \$$(double-vlen4-arch-ext2-cflags)"; \ + echo "CFLAGS-test-double-libmvec-$$t-avx512f.c = \\"; \ + echo " \$$(libmvec-abi-test-cflags) \\"; \ + echo " \$$(double-vlen8-arch-ext-cflags)"; \ + echo; \ + echo "CFLAGS-test-float-libmvec-$${t}f.c = \\"; \ + echo " \$$(libmvec-abi-test-cflags)"; \ + echo "CFLAGS-test-float-libmvec-$${t}f-avx.c = \\"; \ + echo " \$$(libmvec-abi-test-cflags) \\"; \ + echo " \$$(float-vlen8-arch-ext-cflags)"; \ + echo "CFLAGS-test-float-libmvec-$${t}f-avx2.c = \\"; \ + echo " \$$(libmvec-abi-test-cflags) \\"; \ + echo " \$$(float-vlen8-arch-ext2-cflags)"; \ + echo "CFLAGS-test-float-libmvec-$${t}f-avx512f.c = \\"; \ + echo " \$$(libmvec-abi-test-cflags) \\"; \ + echo " \$$(float-vlen16-arch-ext-cflags)"; \ + echo; \ + done; \ + echo "endif") > $@T + mv -f $@T $@ diff --git a/sysdeps/x86_64/fpu/Makefile b/sysdeps/x86_64/fpu/Makefile index e5a65750c0..d83ff7e2d4 100644 --- a/sysdeps/x86_64/fpu/Makefile +++ b/sysdeps/x86_64/fpu/Makefile @@ -1,87 +1,48 @@ ifeq ($(subdir),mathvec) -libmvec-support += svml_d_cos2_core svml_d_cos4_core_avx \ - svml_d_cos4_core svml_d_cos8_core \ - svml_d_sin2_core svml_d_sin4_core_avx \ - svml_d_sin4_core svml_d_sin8_core svml_d_trig_data \ - svml_s_cosf4_core svml_s_cosf8_core_avx \ - svml_s_cosf8_core svml_s_cosf16_core svml_s_trig_data \ - svml_s_sinf4_core svml_s_sinf8_core_avx \ - svml_s_sinf8_core svml_s_sinf16_core \ - svml_d_sincos2_core svml_d_sincos4_core_avx \ - svml_d_sincos4_core svml_d_sincos8_core \ - svml_d_log2_core svml_d_log4_core_avx svml_d_log4_core \ - svml_d_log8_core svml_d_log_data svml_s_logf4_core \ - svml_s_logf8_core_avx svml_s_logf8_core svml_s_logf16_core \ - svml_s_logf_data svml_d_exp2_core svml_d_exp4_core_avx \ - svml_d_exp4_core svml_d_exp8_core svml_d_exp_data \ - svml_s_expf4_core svml_s_expf8_core_avx svml_s_expf8_core \ - svml_s_expf16_core svml_s_expf_data svml_d_pow2_core \ - svml_d_pow4_core_avx svml_d_pow4_core svml_d_pow8_core \ - svml_d_pow_data svml_s_powf4_core svml_s_powf8_core_avx \ - svml_s_powf8_core svml_s_powf16_core svml_s_powf_data \ - svml_s_sincosf4_core svml_s_sincosf8_core_avx \ - svml_s_sincosf8_core svml_s_sincosf16_core +libmvec-double-func-list = \ + 2_core \ + 4_core \ + 4_core_avx \ + 8_core +libmvec-float-func-list = \ + f4_core \ + f8_core \ + f8_core_avx \ + f16_core +libmvec-support += \ + svml_d_exp_data \ + svml_d_log_data \ + svml_d_pow_data \ + svml_d_trig_data \ + svml_s_expf_data \ + svml_s_logf_data \ + svml_s_powf_data \ + svml_s_trig_data \ + $(foreach l,$(libmvec-double-func-list), \ + $(addprefix svml_d_,$(addsuffix $(l),$(libmvec-funcs)))) \ + $(foreach l,$(libmvec-float-func-list), \ + $(addprefix svml_s_,$(addsuffix $(l),$(libmvec-funcs)))) endif # Variables for libmvec tests. -ifeq ($(subdir),math) -ifeq ($(build-mathvec),yes) +ifeq ($(subdir)$(build-mathvec),mathyes) libmvec-tests += double-vlen2 double-vlen4 double-vlen4-avx2 \ float-vlen4 float-vlen8 float-vlen8-avx2 -tests += test-double-libmvec-sincos test-double-libmvec-sincos-avx \ - test-double-libmvec-sincos-avx2 test-float-libmvec-sincosf \ - test-float-libmvec-sincosf-avx test-float-libmvec-sincosf-avx2 -test-extras += test-libmvec test-libmvec-avx \ - test-libmvec-avx2 test-libmvec-avx512f -extra-test-objs += test-libmvec.o test-libmvec-avx.o \ - test-libmvec-avx2.o test-libmvec-avx512f.o -$(objpfx)test-double-libmvec-sincos: \ - $(objpfx)test-double-libmvec-sincos.o \ - $(objpfx)test-libmvec.o $(libmvec) - -$(objpfx)test-double-libmvec-sincos-avx: \ - $(objpfx)test-double-libmvec-sincos-avx.o \ - $(objpfx)test-libmvec-avx.o $(libmvec) - -$(objpfx)test-double-libmvec-sincos-avx2: \ - $(objpfx)test-double-libmvec-sincos-avx2.o \ - $(objpfx)test-libmvec-avx2.o $(libmvec) - -$(objpfx)test-float-libmvec-sincosf: \ - $(objpfx)test-float-libmvec-sincosf.o \ - $(objpfx)test-libmvec.o $(libmvec) - -$(objpfx)test-float-libmvec-sincosf-avx: \ - $(objpfx)test-float-libmvec-sincosf-avx.o \ - $(objpfx)test-libmvec-avx.o $(libmvec) - -$(objpfx)test-float-libmvec-sincosf-avx2: \ - $(objpfx)test-float-libmvec-sincosf-avx2.o \ - $(objpfx)test-libmvec-avx2.o $(libmvec) +tests += $(libmvec-abi-func-avx-tests) libmvec-tests += double-vlen8 float-vlen16 -tests += test-double-libmvec-sincos-avx512f \ - test-float-libmvec-sincosf-avx512f -test-extras += test-libmvec-avx512f -extra-test-objs += test-libmvec-avx512f.o -$(objpfx)test-double-libmvec-sincos-avx512f: \ - $(objpfx)test-double-libmvec-sincos-avx512f.o \ - $(objpfx)test-libmvec-avx512f.o $(libmvec) +tests += $(libmvec-abi-func-avx512f-tests) -$(objpfx)test-float-libmvec-sincosf-avx512f: \ - $(objpfx)test-float-libmvec-sincosf-avx512f.o \ - $(objpfx)test-libmvec-avx512f.o $(libmvec) - -double-vlen2-funcs = cos exp log pow sin sincos -double-vlen4-funcs = cos exp log pow sin sincos -double-vlen4-avx2-funcs = cos exp log pow sin sincos -double-vlen8-funcs = cos exp log pow sin sincos -float-vlen4-funcs = cos exp log pow sin sincos -float-vlen8-funcs = cos exp log pow sin sincos -float-vlen8-avx2-funcs = cos exp log pow sin sincos -float-vlen16-funcs = cos exp log pow sin sincos +double-vlen2-funcs = $(libmvec-funcs) +double-vlen4-funcs = $(libmvec-funcs) +double-vlen4-avx2-funcs = $(libmvec-funcs) +double-vlen8-funcs = $(libmvec-funcs) +float-vlen4-funcs = $(libmvec-funcs) +float-vlen8-funcs = $(libmvec-funcs) +float-vlen8-avx2-funcs = $(libmvec-funcs) +float-vlen16-funcs = $(libmvec-funcs) double-vlen4-arch-ext-cflags = -mavx double-vlen4-arch-ext2-cflags = -mavx2 @@ -91,22 +52,13 @@ float-vlen8-arch-ext-cflags = -mavx float-vlen8-arch-ext2-cflags = -mavx2 float-vlen16-arch-ext-cflags = -mavx512f -libmvec-sincos-cflags = $(libm-test-fast-math-cflags) -fno-inline -fopenmp -Wno-unknown-pragmas +libmvec-abi-test-cflags = \ + $(libm-test-fast-math-cflags) \ + -fno-inline -fopenmp -Wno-unknown-pragmas CFLAGS-test-double-vlen4-avx2-wrappers.c = $(double-vlen4-arch-ext2-cflags) CFLAGS-test-float-vlen8-avx2-wrappers.c = $(float-vlen8-arch-ext2-cflags) - -CFLAGS-test-double-libmvec-sincos.c = $(libmvec-sincos-cflags) -CFLAGS-test-double-libmvec-sincos-avx.c = $(libmvec-sincos-cflags) $(double-vlen4-arch-ext-cflags) -CFLAGS-test-double-libmvec-sincos-avx2.c = $(libmvec-sincos-cflags) $(double-vlen4-arch-ext2-cflags) -CFLAGS-test-double-libmvec-sincos-avx512f.c = $(libmvec-sincos-cflags) $(double-vlen8-arch-ext-cflags) - -CFLAGS-test-float-libmvec-sincosf.c = $(libmvec-sincos-cflags) -CFLAGS-test-float-libmvec-sincosf-avx.c = $(libmvec-sincos-cflags) $(float-vlen8-arch-ext-cflags) -CFLAGS-test-float-libmvec-sincosf-avx2.c = $(libmvec-sincos-cflags) $(float-vlen8-arch-ext2-cflags) -CFLAGS-test-float-libmvec-sincosf-avx512f.c = $(libmvec-sincos-cflags) $(float-vlen16-arch-ext-cflags) -endif endif ifeq ($(subdir)$(config-cflags-mprefer-vector-width),mathyes) diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile index d425ffd6d3..ec796277a5 100644 --- a/sysdeps/x86_64/fpu/multiarch/Makefile +++ b/sysdeps/x86_64/fpu/multiarch/Makefile @@ -59,52 +59,24 @@ CFLAGS-s_tan-avx.c = -msse2avx -DSSE2AVX endif ifeq ($(subdir),mathvec) -libmvec-sysdep_routines += svml_d_cos2_core_sse4 svml_d_cos4_core_avx2 \ - svml_d_cos8_core_avx512 svml_d_sin2_core_sse4 \ - svml_d_sin4_core_avx2 svml_d_sin8_core_avx512 \ - svml_d_log2_core_sse4 svml_d_log4_core_avx2 \ - svml_d_log8_core_avx512 svml_d_sincos2_core_sse4 \ - svml_d_sincos4_core_avx2 svml_d_sincos8_core_avx512 \ - svml_s_cosf4_core_sse4 svml_s_cosf8_core_avx2 \ - svml_s_cosf16_core_avx512 svml_s_sinf4_core_sse4 \ - svml_s_sinf8_core_avx2 svml_s_sinf16_core_avx512 \ - svml_s_logf4_core_sse4 svml_s_logf8_core_avx2 \ - svml_s_logf16_core_avx512 svml_d_exp2_core_sse4 \ - svml_d_exp4_core_avx2 svml_d_exp8_core_avx512 \ - svml_s_expf4_core_sse4 svml_s_expf8_core_avx2 \ - svml_s_expf16_core_avx512 svml_d_pow2_core_sse4 \ - svml_d_pow4_core_avx2 svml_d_pow8_core_avx512 \ - svml_s_powf4_core_sse4 svml_s_powf8_core_avx2 \ - svml_s_powf16_core_avx512 svml_s_sincosf4_core_sse4 \ - svml_s_sincosf8_core_avx2 \ - svml_s_sincosf16_core_avx512 \ - svml_d_cos2_core-sse2 svml_d_cos4_core-sse \ - svml_d_cos8_core-avx2 svml_d_exp2_core-sse2 \ - svml_d_exp4_core-sse svml_d_exp8_core-avx2 \ - svml_d_log2_core-sse2 svml_d_log4_core-sse \ - svml_d_log8_core-avx2 svml_d_pow2_core-sse2 \ - svml_d_pow4_core-sse svml_d_pow8_core-avx2 \ - svml_d_sin2_core-sse2 svml_d_sin4_core-sse \ - svml_d_sin8_core-avx2 \ - svml_d_sincos2_core-sse2 \ - svml_d_sincos4_core-sse \ - svml_d_sincos8_core-avx2 \ - svml_s_cosf16_core-avx2 \ - svml_s_cosf4_core-sse2 \ - svml_s_cosf8_core-sse \ - svml_s_expf16_core-avx2 \ - svml_s_expf4_core-sse2 \ - svml_s_expf8_core-sse \ - svml_s_logf16_core-avx2 \ - svml_s_logf4_core-sse2 \ - svml_s_logf8_core-sse \ - svml_s_powf16_core-avx2 \ - svml_s_powf4_core-sse2 \ - svml_s_powf8_core-sse \ - svml_s_sincosf16_core-avx2 \ - svml_s_sincosf4_core-sse2 \ - svml_s_sincosf8_core-sse \ - svml_s_sinf16_core-avx2 \ - svml_s_sinf4_core-sse2 \ - svml_s_sinf8_core-sse +libmvec-multiarch-double-func-list = \ + 2_core-sse2 \ + 2_core_sse4 \ + 4_core-sse \ + 4_core_avx2 \ + 8_core-avx2 \ + 8_core_avx512 +libmvec-multiarch-float-func-list = \ + f4_core-sse2 \ + f4_core_sse4 \ + f8_core-sse \ + f8_core_avx2 \ + f16_core-avx2 \ + f16_core_avx512 + +libmvec-sysdep_routines += \ + $(foreach l,$(libmvec-multiarch-double-func-list), \ + $(addprefix svml_d_,$(addsuffix $(l),$(libmvec-funcs)))) \ + $(foreach l,$(libmvec-multiarch-float-func-list), \ + $(addprefix svml_s_,$(addsuffix $(l),$(libmvec-funcs)))) endif