From patchwork Wed Jun 23 22:28:43 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: 43990 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 455D0394AC37 for ; Wed, 23 Jun 2021 22:32:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 455D0394AC37 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1624487520; bh=j7m4h1osDiUa64Fyb7+bCNAj+RDx4O559ql9hgfmS6g=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=o9QZNFfP8XPJcfHVf0qJ9J2mXMiQmCGK2Q3BEIwiJB4K/a6NAnoEcpqJLciGEaxUc /KP6mq3sLi3HrqA9sYIoPes9PRGqC0Yt3sl/DQawxkIEJhjcrrDSDwdEEGhso2NF9a nu8Wp40rXxAHAgh4A3jQ9tnOo7VrNNoxwWlpXPPQ= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pf1-x430.google.com (mail-pf1-x430.google.com [IPv6:2607:f8b0:4864:20::430]) by sourceware.org (Postfix) with ESMTPS id C5B0D394AC1B for ; Wed, 23 Jun 2021 22:28:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C5B0D394AC1B Received: by mail-pf1-x430.google.com with SMTP id c5so3489353pfv.8 for ; Wed, 23 Jun 2021 15:28:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=j7m4h1osDiUa64Fyb7+bCNAj+RDx4O559ql9hgfmS6g=; b=l+n+7ZMOW1t8DmoV8WFDdnGWGnKaYmiCcWLgI6AWojm0mNRoZnqDy1B+IJjZBnTG+Z UCWgFGGaXUz4UMOj68hH5PguacD8sQ0wRJoZDm0Kz1jkNRwjJHqBtFaeASMHVT/00yzu FF1oED4RhPk7PNFpjKtEnfuWF6CZ6CIP8rlH6vLdeMn+5iupqqKvLTs47Voluui2YQxl Ytn5Xy2aeW9MVHBuBrAvLSiRcqeY/+2NxbesEHnr7QF0Klm85tyIeoJEmeursxfl+9Nw w/u5jDuV0RpURmW77h0wnat/4f49qhL+jqIcs9Omq/gwpV7IpjrnCOVCWdTTNgA6Wwsf iDBg== X-Gm-Message-State: AOAM5327GJio7RsPe2f3aQNimonOknHBcAQ35+Xdu/b0qj+y9MJTytwj NrRRW5iU5rRG51oujOxOxtQ= X-Google-Smtp-Source: ABdhPJwfyWL2cOARFIavolTDwHrNYGd9bW1UZ7xkUL1bfghEATg/S25SXMJGhmVPZz0apot5cwxsyw== X-Received: by 2002:aa7:96bb:0:b029:2fa:f102:468c with SMTP id g27-20020aa796bb0000b02902faf102468cmr1598588pfk.25.1624487338977; Wed, 23 Jun 2021 15:28:58 -0700 (PDT) Received: from gnu-cfl-2.localdomain ([172.56.39.115]) by smtp.gmail.com with ESMTPSA id mj17sm6220437pjb.12.2021.06.23.15.28.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Jun 2021 15:28:57 -0700 (PDT) Received: from gnu-tgl-2.localdomain (gnu-tgl-2 [192.168.1.34]) by gnu-cfl-2.localdomain (Postfix) with ESMTPS id 8FC7FC0099; Wed, 23 Jun 2021 15:28:56 -0700 (PDT) Received: from gnu-tgl-2.lan (localhost [IPv6:::1]) by gnu-tgl-2.localdomain (Postfix) with ESMTP id 7B6713002BB; Wed, 23 Jun 2021 15:28:46 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH v8 1/4] math: redirect roundeven function Date: Wed, 23 Jun 2021 15:28:43 -0700 Message-Id: <20210623222846.2162301-2-hjl.tools@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210623222846.2162301-1-hjl.tools@gmail.com> References: <20210623222846.2162301-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3032.6 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_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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" Cc: Shen-Ta Hsieh Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" From: Shen-Ta Hsieh This patch redirect roundeven function for futhermore changes. Signed-off-by: Shen-Ta Hsieh Reviewed-by: H.J. Lu --- include/math.h | 2 +- sysdeps/ieee754/dbl-64/s_roundeven.c | 4 +++- sysdeps/ieee754/float128/s_roundevenf128.c | 1 + sysdeps/ieee754/flt-32/s_roundevenf.c | 3 +++ sysdeps/ieee754/ldbl-128/s_roundevenl.c | 1 + sysdeps/ieee754/ldbl-96/s_roundevenl.c | 1 + 6 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/math.h b/include/math.h index e1c2a4eb64..b4772d3d3b 100644 --- a/include/math.h +++ b/include/math.h @@ -38,7 +38,6 @@ libm_hidden_proto (__issignaling) libm_hidden_proto (__issignalingf) libm_hidden_proto (__exp) libm_hidden_proto (__expf) -libm_hidden_proto (__roundeven) # if !defined __NO_LONG_DOUBLE_MATH \ && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0 @@ -159,6 +158,7 @@ fabsf128 (_Float128 x) MATH_REDIRECT (sqrt, "__ieee754_", MATH_REDIRECT_UNARY_ARGS) MATH_REDIRECT (ceil, "__", MATH_REDIRECT_UNARY_ARGS) MATH_REDIRECT (floor, "__", MATH_REDIRECT_UNARY_ARGS) +MATH_REDIRECT (roundeven, "__", MATH_REDIRECT_UNARY_ARGS) MATH_REDIRECT (rint, "__", MATH_REDIRECT_UNARY_ARGS) MATH_REDIRECT (trunc, "__", MATH_REDIRECT_UNARY_ARGS) MATH_REDIRECT (round, "__", MATH_REDIRECT_UNARY_ARGS) diff --git a/sysdeps/ieee754/dbl-64/s_roundeven.c b/sysdeps/ieee754/dbl-64/s_roundeven.c index 943b2c634c..5deff3bb8a 100644 --- a/sysdeps/ieee754/dbl-64/s_roundeven.c +++ b/sysdeps/ieee754/dbl-64/s_roundeven.c @@ -16,6 +16,7 @@ License along with the GNU C Library; if not, see . */ +#define NO_MATH_REDIRECT #include #include #include @@ -66,5 +67,6 @@ __roundeven (double x) INSERT_WORDS64 (x, ix); return x; } -hidden_def (__roundeven) +#ifndef __roundeven libm_alias_double (__roundeven, roundeven) +#endif diff --git a/sysdeps/ieee754/float128/s_roundevenf128.c b/sysdeps/ieee754/float128/s_roundevenf128.c index 5a9b3f395f..e0faf727f6 100644 --- a/sysdeps/ieee754/float128/s_roundevenf128.c +++ b/sysdeps/ieee754/float128/s_roundevenf128.c @@ -1,2 +1,3 @@ +#define NO_MATH_REDIRECT #include #include "../ldbl-128/s_roundevenl.c" diff --git a/sysdeps/ieee754/flt-32/s_roundevenf.c b/sysdeps/ieee754/flt-32/s_roundevenf.c index ae54365bbe..2cc0d7b001 100644 --- a/sysdeps/ieee754/flt-32/s_roundevenf.c +++ b/sysdeps/ieee754/flt-32/s_roundevenf.c @@ -17,6 +17,7 @@ License along with the GNU C Library; if not, see . */ +#define NO_MATH_REDIRECT #include #include #include @@ -67,4 +68,6 @@ __roundevenf (float x) SET_FLOAT_WORD (x, ix); return x; } +#ifndef __roundevenf libm_alias_float (__roundeven, roundeven) +#endif diff --git a/sysdeps/ieee754/ldbl-128/s_roundevenl.c b/sysdeps/ieee754/ldbl-128/s_roundevenl.c index 02765be0e0..7c9c11fad2 100644 --- a/sysdeps/ieee754/ldbl-128/s_roundevenl.c +++ b/sysdeps/ieee754/ldbl-128/s_roundevenl.c @@ -17,6 +17,7 @@ License along with the GNU C Library; if not, see . */ +#define NO_MATH_REDIRECT #include #include #include diff --git a/sysdeps/ieee754/ldbl-96/s_roundevenl.c b/sysdeps/ieee754/ldbl-96/s_roundevenl.c index 8340116ed8..f826829c31 100644 --- a/sysdeps/ieee754/ldbl-96/s_roundevenl.c +++ b/sysdeps/ieee754/ldbl-96/s_roundevenl.c @@ -17,6 +17,7 @@ License along with the GNU C Library; if not, see . */ +#define NO_MATH_REDIRECT #include #include #include From patchwork Wed Jun 23 22:28:44 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: 43992 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 3BCA23954801 for ; Wed, 23 Jun 2021 22:33:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3BCA23954801 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1624487609; bh=T9HMzohSzAaguyUiWfbulDxD18MlwKT+ywru0JHjeD4=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=IbMBwKxvwXvoBZx69xiNCAC1YhYhQiRjB32TU2kQx1soKtlqKaSqFnnpr/gVDG1s+ TAdQBL9o/VYPodP5T0wZHxxOLTcIyeqltJ5pni3XFejV7RUg0zEBYH2M+RFUpGKQDU MTvGnTkzky98bJ60trOuEF41RGdIy1PvXc33bGV0= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pg1-x52b.google.com (mail-pg1-x52b.google.com [IPv6:2607:f8b0:4864:20::52b]) by sourceware.org (Postfix) with ESMTPS id F388039551C4 for ; Wed, 23 Jun 2021 22:28:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F388039551C4 Received: by mail-pg1-x52b.google.com with SMTP id h4so3001434pgp.5 for ; Wed, 23 Jun 2021 15:28:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=T9HMzohSzAaguyUiWfbulDxD18MlwKT+ywru0JHjeD4=; b=HxyJQRv0/e7XBcPnnkYrCG7fc/1F7yHQv1OQKvU9Awfg8qE4Exvh2adkKMsYYOQKEz m9joPIaGgbdh1TD0af+DG7gGXemb7QqXwTbWI84GRi7e9CD3suW6QdPBnDXqOyX6Ec2q +hiKGDGe8vFhhwwZFUjSST5tGF0qBxAsjiD4DXo9K8hcee0tqL40n+QhnchqdjX54IH1 JBF/RhkFOAR2xopwy1DyjuUJSNYQdcEWKUw0b7hGJBBnIksjJNIzNZGO327iR0n0K4cw a5AzDpn9CRpmyNeOGANnX16bAGHKXf5ERZEp2zy3NQFLun2aMKmpjuyQvZVz5kOyAoHW 1ESA== X-Gm-Message-State: AOAM531obvE3VDYrkOfAeX0El+Wb6oSeK5iS/dS+24U5QE9nMjIXSk77 o7LEqQcCGKgmVhWcorrH4as= X-Google-Smtp-Source: ABdhPJyBGS4ZCWE9CdeepIIJWmEScMtecYWEty8Kh905q8oGQjjRFxKRpFd8vlcBkI7SGm8ihaMZ6Q== X-Received: by 2002:a63:ae01:: with SMTP id q1mr1612530pgf.216.1624487339188; Wed, 23 Jun 2021 15:28:59 -0700 (PDT) Received: from gnu-cfl-2.localdomain ([172.56.39.115]) by smtp.gmail.com with ESMTPSA id em22sm6975006pjb.27.2021.06.23.15.28.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Jun 2021 15:28:57 -0700 (PDT) Received: from gnu-tgl-2.localdomain (gnu-tgl-2 [192.168.1.34]) by gnu-cfl-2.localdomain (Postfix) with ESMTPS id 904FEC035E; Wed, 23 Jun 2021 15:28:56 -0700 (PDT) Received: from gnu-tgl-2.lan (localhost [IPv6:::1]) by gnu-tgl-2.localdomain (Postfix) with ESMTP id 7C54B3002BD; Wed, 23 Jun 2021 15:28:46 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH v8 2/4] Update math: redirect roundeven function Date: Wed, 23 Jun 2021 15:28:44 -0700 Message-Id: <20210623222846.2162301-3-hjl.tools@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210623222846.2162301-1-hjl.tools@gmail.com> References: <20210623222846.2162301-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3032.6 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_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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" Cc: Shen-Ta Hsieh Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Redirect target specific roundeven functions for aarch64, ldbl-128ibm and riscv. --- sysdeps/aarch64/fpu/s_roundeven.c | 2 +- sysdeps/aarch64/fpu/s_roundevenf.c | 1 + sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c | 1 + sysdeps/riscv/rv64/rvd/s_roundeven.c | 2 +- sysdeps/riscv/rvf/s_roundevenf.c | 1 + 5 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sysdeps/aarch64/fpu/s_roundeven.c b/sysdeps/aarch64/fpu/s_roundeven.c index d74b40daf5..fbce9aaded 100644 --- a/sysdeps/aarch64/fpu/s_roundeven.c +++ b/sysdeps/aarch64/fpu/s_roundeven.c @@ -16,6 +16,7 @@ License along with the GNU C Library; if not, see . */ +#define NO_MATH_REDIRECT #include #include @@ -25,5 +26,4 @@ __roundeven (double x) asm volatile ("frintn \t%d0, %d1" : "=w" (x) : "w" (x)); return x; } -hidden_def (__roundeven) libm_alias_double (__roundeven, roundeven) diff --git a/sysdeps/aarch64/fpu/s_roundevenf.c b/sysdeps/aarch64/fpu/s_roundevenf.c index dfc492c2f8..7985ca5f30 100644 --- a/sysdeps/aarch64/fpu/s_roundevenf.c +++ b/sysdeps/aarch64/fpu/s_roundevenf.c @@ -16,6 +16,7 @@ License along with the GNU C Library; if not, see . */ +#define NO_MATH_REDIRECT #include #include diff --git a/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c b/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c index 6701970f4a..90eecf496b 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c @@ -17,6 +17,7 @@ License along with the GNU C Library; if not, see . */ +#define NO_MATH_REDIRECT #include #include diff --git a/sysdeps/riscv/rv64/rvd/s_roundeven.c b/sysdeps/riscv/rv64/rvd/s_roundeven.c index e77d8307d1..02dd0f7a9a 100644 --- a/sysdeps/riscv/rv64/rvd/s_roundeven.c +++ b/sysdeps/riscv/rv64/rvd/s_roundeven.c @@ -16,6 +16,7 @@ License along with the GNU C Library; if not, see . */ +#define NO_MATH_REDIRECT #include #include #include @@ -49,5 +50,4 @@ __roundeven (double x) return x; } -hidden_def (__roundeven) libm_alias_double (__roundeven, roundeven) diff --git a/sysdeps/riscv/rvf/s_roundevenf.c b/sysdeps/riscv/rvf/s_roundevenf.c index fa594d46bd..be22d047e2 100644 --- a/sysdeps/riscv/rvf/s_roundevenf.c +++ b/sysdeps/riscv/rvf/s_roundevenf.c @@ -16,6 +16,7 @@ License along with the GNU C Library; if not, see . */ +#define NO_MATH_REDIRECT #include #include #include From patchwork Wed Jun 23 22:28:45 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: 43991 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 74713394AC1D for ; Wed, 23 Jun 2021 22:32:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 74713394AC1D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1624487564; bh=I9u9ou2iRq4CzQdGW8Lh3nKyIIJ30vIFEk8Rzt6E5vE=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=bDvhL2lu1r6OlVUPPBATHRnc1X4eSA+kfFTXTI/rJ8sg0PRZb8zQ0yIZMUvU7SawR Kqvz7IS6553qNlCIR0lbhID2swwceFbTmHQYQhhwMnbA3oKnx5zsOQ5gOjo5Ecd8NW Iq3zhYbdoA/huQjY3kSwtArZJjeH/C0eRZM192NM= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pg1-x530.google.com (mail-pg1-x530.google.com [IPv6:2607:f8b0:4864:20::530]) by sourceware.org (Postfix) with ESMTPS id 275D8395C402 for ; Wed, 23 Jun 2021 22:28:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 275D8395C402 Received: by mail-pg1-x530.google.com with SMTP id e22so2984776pgv.10 for ; Wed, 23 Jun 2021 15:28:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=I9u9ou2iRq4CzQdGW8Lh3nKyIIJ30vIFEk8Rzt6E5vE=; b=qx/wOHEsYzPejqmFdZETVC8OnYzkKn08r9foL4VIwChDmgoxzy7YFOfUFSTKhVIhj+ tNT3pQ7EsCmw56s3HYuMP8EKYu4a5lpDTqihlpnVDyP6bvV1bRFF2/yyoL4z1jKDlWnb /D058SxsSoxQpCUKcLz9GSua1Tc0IK8i62dE+ypm09JugALE88Mu+0sjLD7pOEgEByiN 1+jXjQ1uzmxGeONB+NBNR1bKSIFyH7D0D0glcN2ksQyhtt08rC4QJ7J1MIn1A1yb3X1/ bg1cG0X093C9+/BB+GJBUdOZq6+sAYf2rA8f9Fy4LchUgOl78tDV4C4HsZomGZrUb16Q hfew== X-Gm-Message-State: AOAM5320YzkNUCT71AYa8BqkddR7E5qboWUfUhLEyWCkykOUzEQ372Jv vtUsNBHpCN4WWgihx4xF2WU= X-Google-Smtp-Source: ABdhPJwcdeDXk58hq5yyQTWUC7O/wnL4qwnu3WC1Qj9HZKF/ANJJmjq4ha3v31JhBGrK+P0KfC+FBg== X-Received: by 2002:a63:c112:: with SMTP id w18mr1578644pgf.375.1624487338278; Wed, 23 Jun 2021 15:28:58 -0700 (PDT) Received: from gnu-cfl-2.localdomain ([172.56.39.115]) by smtp.gmail.com with ESMTPSA id i125sm745177pfc.7.2021.06.23.15.28.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Jun 2021 15:28:57 -0700 (PDT) Received: from gnu-tgl-2.localdomain (gnu-tgl-2 [192.168.1.34]) by gnu-cfl-2.localdomain (Postfix) with ESMTPS id 9B5BDC04CF; Wed, 23 Jun 2021 15:28:56 -0700 (PDT) Received: from gnu-tgl-2.lan (localhost [IPv6:::1]) by gnu-tgl-2.localdomain (Postfix) with ESMTP id 7D8D73002BE; Wed, 23 Jun 2021 15:28:46 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH v8 3/4] x86_64: roundeven with sse4.1 support Date: Wed, 23 Jun 2021 15:28:45 -0700 Message-Id: <20210623222846.2162301-4-hjl.tools@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210623222846.2162301-1-hjl.tools@gmail.com> References: <20210623222846.2162301-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3031.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, KAM_STOCKGEN, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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" Cc: Shen-Ta Hsieh Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" From: Shen-Ta Hsieh This patch adds support for the sse4.1 hardware floating point roundeven. Here is some benchmark results on my systems: =AMD Ryzen 9 3900X 12-Core Processor= * benchmark result before this commit | | roundeven | roundevenf | |------------|--------------|--------------| | duration | 3.75587e+09 | 3.75114e+09 | | iterations | 3.93053e+08 | 4.35402e+08 | | max | 52.592 | 58.71 | | min | 7.98 | 7.22 | | mean | 9.55563 | 8.61535 | * benchmark result after this commit | | roundeven | roundevenf | |------------|---------------|--------------| | duration | 3.73815e+09 | 3.73738e+09 | | iterations | 5.82692e+08 | 5.91498e+08 | | max | 56.468 | 51.642 | | min | 6.27 | 6.156 | | mean | 6.41532 | 6.3185 | =Intel(R) Pentium(R) CPU D1508 @ 2.20GHz= * benchmark result before this commit | | roundeven | roundevenf | |------------|--------------|--------------| | duration | 2.18208e+09 | 2.18258e+09 | | iterations | 2.39932e+08 | 2.46924e+08 | | max | 96.378 | 98.035 | | min | 6.776 | 5.94 | | mean | 9.09456 | 8.83907 | * benchmark result after this commit | | roundeven | roundevenf | |------------|--------------|--------------| | duration | 2.17415e+09 | 2.17005e+09 | | iterations | 3.56193e+08 | 4.09824e+08 | | max | 51.693 | 97.192 | | min | 5.926 | 5.093 | | mean | 6.10385 | 5.29507 | Signed-off-by: Shen-Ta Hsieh Reviewed-by: H.J. Lu --- sysdeps/x86_64/fpu/multiarch/Makefile | 5 +-- sysdeps/x86_64/fpu/multiarch/s_roundeven-c.c | 2 ++ .../x86_64/fpu/multiarch/s_roundeven-sse4_1.S | 24 ++++++++++++++ sysdeps/x86_64/fpu/multiarch/s_roundeven.c | 31 +++++++++++++++++++ sysdeps/x86_64/fpu/multiarch/s_roundevenf-c.c | 3 ++ .../fpu/multiarch/s_roundevenf-sse4_1.S | 24 ++++++++++++++ sysdeps/x86_64/fpu/multiarch/s_roundevenf.c | 31 +++++++++++++++++++ 7 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundeven-c.c create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundeven.c create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundevenf-c.c create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundevenf-sse4_1.S create mode 100644 sysdeps/x86_64/fpu/multiarch/s_roundevenf.c diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile index 57892c56bb..d425ffd6d3 100644 --- a/sysdeps/x86_64/fpu/multiarch/Makefile +++ b/sysdeps/x86_64/fpu/multiarch/Makefile @@ -1,11 +1,12 @@ ifeq ($(subdir),math) libm-sysdep_routines += s_floor-c s_ceil-c s_floorf-c s_ceilf-c \ s_rint-c s_rintf-c s_nearbyint-c s_nearbyintf-c \ - s_trunc-c s_truncf-c + s_roundeven-c s_roundevenf-c s_trunc-c s_truncf-c libm-sysdep_routines += s_ceil-sse4_1 s_ceilf-sse4_1 s_floor-sse4_1 \ s_floorf-sse4_1 s_nearbyint-sse4_1 \ - s_nearbyintf-sse4_1 s_rint-sse4_1 s_rintf-sse4_1 \ + s_nearbyintf-sse4_1 s_roundeven-sse4_1 \ + s_roundevenf-sse4_1 s_rint-sse4_1 s_rintf-sse4_1 \ s_trunc-sse4_1 s_truncf-sse4_1 libm-sysdep_routines += e_exp-fma e_log-fma e_pow-fma s_atan-fma \ diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundeven-c.c b/sysdeps/x86_64/fpu/multiarch/s_roundeven-c.c new file mode 100644 index 0000000000..c7be43cb22 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/s_roundeven-c.c @@ -0,0 +1,2 @@ +#define __roundeven __roundeven_c +#include diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S new file mode 100644 index 0000000000..6ae8f6b1d3 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S @@ -0,0 +1,24 @@ +/* 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 + + .section .text.sse4.1,"ax",@progbits +ENTRY(__roundeven_sse41) + roundsd $8, %xmm0, %xmm0 + ret +END(__roundeven_sse41) diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundeven.c b/sysdeps/x86_64/fpu/multiarch/s_roundeven.c new file mode 100644 index 0000000000..d92eda652a --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/s_roundeven.c @@ -0,0 +1,31 @@ +/* Multiple versions of __roundeven. + 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 + +#define roundeven __redirect_roundeven +#define __roundeven __redirect___roundeven +#include +#undef roundeven +#undef __roundeven + +#define SYMBOL_NAME roundeven +#include "ifunc-sse4_1.h" + +libc_ifunc_redirected (__redirect_roundeven, __roundeven, IFUNC_SELECTOR ()); +libm_alias_double (__roundeven, roundeven) diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundevenf-c.c b/sysdeps/x86_64/fpu/multiarch/s_roundevenf-c.c new file mode 100644 index 0000000000..72a6e7d1fb --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/s_roundevenf-c.c @@ -0,0 +1,3 @@ +#undef __roundevenf +#define __roundevenf __roundevenf_c +#include diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundevenf-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_roundevenf-sse4_1.S new file mode 100644 index 0000000000..a76e10807e --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/s_roundevenf-sse4_1.S @@ -0,0 +1,24 @@ +/* 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 + + .section .text.sse4.1,"ax",@progbits +ENTRY(__roundevenf_sse41) + roundss $8, %xmm0, %xmm0 + ret +END(__roundevenf_sse41) diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundevenf.c b/sysdeps/x86_64/fpu/multiarch/s_roundevenf.c new file mode 100644 index 0000000000..2ee196e68f --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/s_roundevenf.c @@ -0,0 +1,31 @@ +/* Multiple versions of __roundevenf. + 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 + +#define roundevenf __redirect_roundevenf +#define __roundevenf __redirect___roundevenf +#include +#undef roundevenf +#undef __roundevenf + +#define SYMBOL_NAME roundevenf +#include "ifunc-sse4_1.h" + +libc_ifunc_redirected (__redirect_roundevenf, __roundevenf, IFUNC_SELECTOR ()); +libm_alias_float (__roundeven, roundeven) From patchwork Wed Jun 23 22:28:46 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: 43988 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 70CB438930FE for ; Wed, 23 Jun 2021 22:30:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 70CB438930FE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1624487430; bh=ViVTVfCwaioz2oIBHx35X8bsaqAai4/eULtqo9GCe1g=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=t5Bd2edqoB3qtsjUoOuIm8EsF9Hiqj2RPOqnZ61RD0LdWsFs7JYfAi9QUDqvEvuXH adejI3rlE6JXS9mXRQ3/xnNLc7dtn5pIatcY2w7UOmgnRT5FO18FXTKIoq+0is1hXY 4czm9RQpZ22MqBbqN5zrhZ+xiNzOYNNWF07eYkXg= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pg1-x52f.google.com (mail-pg1-x52f.google.com [IPv6:2607:f8b0:4864:20::52f]) by sourceware.org (Postfix) with ESMTPS id EC185394AC37 for ; Wed, 23 Jun 2021 22:28:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EC185394AC37 Received: by mail-pg1-x52f.google.com with SMTP id e22so2984772pgv.10 for ; Wed, 23 Jun 2021 15:28:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ViVTVfCwaioz2oIBHx35X8bsaqAai4/eULtqo9GCe1g=; b=EabYp8rDEr9aYZQ9FXD5DDdqQELtNTaEDLwSCYHpxEpmEaG4kNyWDGFNjjQ0sqOzp8 tIE0NxuCUTKEWJEVOPa8x7kOh3szPSq2HkrfIGqGPragayiv995/SYM34um9wBjUSL9v S1YHqKptmoFq1FaWeVpX5/ESYseVkqWIi7EwjkPNKBXRVvcRj17o1EqRiV+o+zD6eTfk iWMrDujwLh5YVqKvVj9GIgfWYuy05agvm8zuZo+aeBw0Pk0+g8UzuMYfDYkMz5zL6spN 9bXnjxrQzBS02MSfhxz8YDRKbRusiQfaxX3f6/nvF07sfBukpEPqBXuDABvl3tW/cWzJ RyFA== X-Gm-Message-State: AOAM533jUagHcN8ApUvcT+6OvePWoti7O6E4+OHITPpPFs9Rxpin8+kt rIWYtgjzYCLwUkZhhEU//aU= X-Google-Smtp-Source: ABdhPJybBloMx4HDIat6CubmOAPJ30GK5/VT22pxsPgyBwZj5UAQ2k7yDYWuYycD881lT3hy2NCNsw== X-Received: by 2002:a62:e717:0:b029:301:964e:49f0 with SMTP id s23-20020a62e7170000b0290301964e49f0mr1869444pfh.22.1624487338127; Wed, 23 Jun 2021 15:28:58 -0700 (PDT) Received: from gnu-cfl-2.localdomain ([172.56.39.115]) by smtp.gmail.com with ESMTPSA id m4sm6016681pjv.41.2021.06.23.15.28.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Jun 2021 15:28:57 -0700 (PDT) Received: from gnu-tgl-2.localdomain (gnu-tgl-2 [192.168.1.34]) by gnu-cfl-2.localdomain (Postfix) with ESMTPS id 9C260C05B2; Wed, 23 Jun 2021 15:28:56 -0700 (PDT) Received: from gnu-tgl-2.lan (localhost [IPv6:::1]) by gnu-tgl-2.localdomain (Postfix) with ESMTP id 8907A3002C1; Wed, 23 Jun 2021 15:28:46 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH v8 4/4] Use GCC builtins for roundeven functions if desired. Date: Wed, 23 Jun 2021 15:28:46 -0700 Message-Id: <20210623222846.2162301-5-hjl.tools@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210623222846.2162301-1-hjl.tools@gmail.com> References: <20210623222846.2162301-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3032.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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" Cc: Shen-Ta Hsieh Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" From: Shen-Ta Hsieh This patch is using the corresponding GCC builtin for roundevenf, roundeven and roundevenl if the USE_FUNCTION_BUILTIN macros are defined to one in math-use-builtins.h. These builtin functions is supported since GCC 10. The code of the generic implementation is not changed. Signed-off-by: Shen-Ta Hsieh Reviewed-by: H.J. Lu --- sysdeps/generic/math-use-builtins-roundeven.h | 4 ++++ sysdeps/generic/math-use-builtins.h | 1 + sysdeps/ieee754/dbl-64/s_roundeven.c | 5 +++++ sysdeps/ieee754/float128/float128_private.h | 2 ++ sysdeps/ieee754/flt-32/s_roundevenf.c | 5 +++++ sysdeps/ieee754/ldbl-128/s_roundevenl.c | 5 +++++ 6 files changed, 22 insertions(+) create mode 100644 sysdeps/generic/math-use-builtins-roundeven.h diff --git a/sysdeps/generic/math-use-builtins-roundeven.h b/sysdeps/generic/math-use-builtins-roundeven.h new file mode 100644 index 0000000000..bd2e84c93f --- /dev/null +++ b/sysdeps/generic/math-use-builtins-roundeven.h @@ -0,0 +1,4 @@ +#define USE_ROUNDEVEN_BUILTIN 0 +#define USE_ROUNDEVENF_BUILTIN 0 +#define USE_ROUNDEVENL_BUILTIN 0 +#define USE_ROUNDEVENF128_BUILTIN 0 diff --git a/sysdeps/generic/math-use-builtins.h b/sysdeps/generic/math-use-builtins.h index cc3e9f2201..19d2d1cf3c 100644 --- a/sysdeps/generic/math-use-builtins.h +++ b/sysdeps/generic/math-use-builtins.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include diff --git a/sysdeps/ieee754/dbl-64/s_roundeven.c b/sysdeps/ieee754/dbl-64/s_roundeven.c index 5deff3bb8a..88c051e9fe 100644 --- a/sysdeps/ieee754/dbl-64/s_roundeven.c +++ b/sysdeps/ieee754/dbl-64/s_roundeven.c @@ -21,6 +21,7 @@ #include #include #include +#include #define BIAS 0x3ff #define MANT_DIG 53 @@ -29,6 +30,9 @@ double __roundeven (double x) { +#if USE_ROUNDEVEN_BUILTIN + return __builtin_roundeven (x); +#else uint64_t ix, ux; EXTRACT_WORDS64 (ix, x); ux = ix & 0x7fffffffffffffffULL; @@ -66,6 +70,7 @@ __roundeven (double x) ix &= 0x8000000000000000ULL; INSERT_WORDS64 (x, ix); return x; +#endif /* ! USE_ROUNDEVEN_BUILTIN */ } #ifndef __roundeven libm_alias_double (__roundeven, roundeven) diff --git a/sysdeps/ieee754/float128/float128_private.h b/sysdeps/ieee754/float128/float128_private.h index 979138851b..b6b6d3d5fd 100644 --- a/sysdeps/ieee754/float128/float128_private.h +++ b/sysdeps/ieee754/float128/float128_private.h @@ -152,6 +152,8 @@ #define USE_TRUNCL_BUILTIN USE_TRUNCF128_BUILTIN #undef USE_ROUNDL_BUILTIN #define USE_ROUNDL_BUILTIN USE_ROUNDF128_BUILTIN +#undef USE_ROUNDEVENL_BUILTIN +#define USE_ROUNDEVENL_BUILTIN USE_ROUNDEVENF128_BUILTIN #undef USE_COPYSIGNL_BUILTIN #define USE_COPYSIGNL_BUILTIN USE_COPYSIGNF128_BUILTIN #undef USE_FMAL_BUILTIN diff --git a/sysdeps/ieee754/flt-32/s_roundevenf.c b/sysdeps/ieee754/flt-32/s_roundevenf.c index 2cc0d7b001..4f568579d8 100644 --- a/sysdeps/ieee754/flt-32/s_roundevenf.c +++ b/sysdeps/ieee754/flt-32/s_roundevenf.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #define BIAS 0x7f @@ -30,6 +31,9 @@ float __roundevenf (float x) { +#if USE_ROUNDEVENF_BUILTIN + return __builtin_roundevenf (x); +#else uint32_t ix, ux; GET_FLOAT_WORD (ix, x); ux = ix & 0x7fffffff; @@ -67,6 +71,7 @@ __roundevenf (float x) ix &= 0x80000000; SET_FLOAT_WORD (x, ix); return x; +#endif /* ! USE_ROUNDEVENF_BUILTIN */ } #ifndef __roundevenf libm_alias_float (__roundeven, roundeven) diff --git a/sysdeps/ieee754/ldbl-128/s_roundevenl.c b/sysdeps/ieee754/ldbl-128/s_roundevenl.c index 7c9c11fad2..afbf13d4f2 100644 --- a/sysdeps/ieee754/ldbl-128/s_roundevenl.c +++ b/sysdeps/ieee754/ldbl-128/s_roundevenl.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #define BIAS 0x3fff @@ -30,6 +31,9 @@ _Float128 __roundevenl (_Float128 x) { +#if USE_ROUNDEVENL_BUILTIN + return __builtin_roundevenl (x); +#else uint64_t hx, lx, uhx; GET_LDOUBLE_WORDS64 (hx, lx, x); uhx = hx & 0x7fffffffffffffffULL; @@ -101,5 +105,6 @@ __roundevenl (_Float128 x) } SET_LDOUBLE_WORDS64 (x, hx, lx); return x; +#endif /* ! USE_ROUNDEVENL_BUILTIN */ } libm_alias_ldouble (__roundeven, roundeven)