From patchwork Fri Sep 4 19:45:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 40363 X-Patchwork-Delegate: dj@redhat.com 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 3F22A386F434; Fri, 4 Sep 2020 19:55:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3F22A386F434 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1599249352; bh=qtVdBDYfKY0hk11/quuM6/MFw3eiAw4y9DErjagzvo8=; 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=Unt5vRxjdzEyghIHL2QRXZvHHdSstO5MV29SGofJSlqlrWTHBrbJ9sYaniw8pFHX8 S6BGXCDdLY7GupguVsYjYPlfbpv5rByYmehfm2PJ715H2zRHesATUZ34NswafM9cQt nSw6rmESFW4tlDhQVbd//SKDoqS4aa+1h9rbUqKc= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from esa2.hgst.iphmx.com (esa2.hgst.iphmx.com [68.232.143.124]) by sourceware.org (Postfix) with ESMTPS id 17A7F385701F for ; Fri, 4 Sep 2020 19:55:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 17A7F385701F IronPort-SDR: kQMhggnnA235Yhg4c+nkxQbtw9wdIJXzV5Yz5n+Y9OXyTyISIdwbcQqs3Wt11b9j4hLYpTrqCn XCPvRLnBgwxmSeRvZjrB2E1gFTXMJxQW458rHhtQnTMQ19DwKLQEhd3ys8aYzXmeZ1MMwFlWyc +BWA3OrLbU2/x+bZT6UCK6tLJ8/pOzSyspl5Tin1QBJinvuDLLPHk5U2D42B7QiMIkvkeSDd5y TPtUVuYAUsFQ5IxUGtoFPwmZ8h6aCzG7PHzWDCoQ65s4vvcb2QNjC+QSq1cWzN4leKXLVlCLE4 prY= X-IronPort-AV: E=Sophos;i="5.76,391,1592841600"; d="scan'208";a="249884213" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 05 Sep 2020 03:55:59 +0800 IronPort-SDR: r/HlUYihIxwEQPcU7yBDcy2t2eP+t/HU2EIv+4G7X8IVozKXD9SzpfqP2eoFHAcbQY0Okbijy2 RPZNDzzr4BEQ== Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Sep 2020 12:42:18 -0700 IronPort-SDR: bwi0yGuniyKX6s/ooy5Gte/7a3ZdUqr4lFKHtvglzmhO5bCtzvokr7AD8yseHZ0E8TvbilsWQP 1GZWwAU4FUOg== WDCIronportException: Internal Received: from b9f8262.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.59.253]) by uls-op-cesaip02.wdc.com with ESMTP; 04 Sep 2020 12:55:46 -0700 To: libc-alpha@sourceware.org Subject: [PATCH 2/2] riscv: Remove RV32 floating point functions Date: Fri, 4 Sep 2020 12:45:14 -0700 Message-Id: <20200904194514.666290-2-alistair.francis@wdc.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200904194514.666290-1-alistair.francis@wdc.com> References: <20200904194514.666290-1-alistair.francis@wdc.com> MIME-Version: 1.0 X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_ASCII_DIVIDERS, KAM_SHORT, SPF_HELO_PASS, 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: Alistair Francis via Libc-alpha From: Alistair Francis Reply-To: Alistair Francis Cc: alistair.francis@wdc.com Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" We don't need RV32 specific floating point functions, instead make them generic for RISC-V. --- sysdeps/riscv/rv32/rvd/Implies | 1 - sysdeps/riscv/rv64/rvd/s_lrint.c | 30 ----------------------- sysdeps/riscv/rv64/rvd/s_lround.c | 30 ----------------------- sysdeps/riscv/rv64/rvf/s_lrintf.c | 31 ------------------------ sysdeps/riscv/rv64/rvf/s_lroundf.c | 31 ------------------------ sysdeps/riscv/{rv32 => }/rvd/s_lrint.c | 15 +++++++++--- sysdeps/riscv/{rv32 => }/rvd/s_lround.c | 15 +++++++++--- sysdeps/riscv/{rv32 => }/rvf/s_lrintf.c | 14 ++++++++--- sysdeps/riscv/{rv32 => }/rvf/s_lroundf.c | 14 ++++++++--- 9 files changed, 44 insertions(+), 137 deletions(-) delete mode 100644 sysdeps/riscv/rv64/rvd/s_lrint.c delete mode 100644 sysdeps/riscv/rv64/rvd/s_lround.c delete mode 100644 sysdeps/riscv/rv64/rvf/s_lrintf.c delete mode 100644 sysdeps/riscv/rv64/rvf/s_lroundf.c rename sysdeps/riscv/{rv32 => }/rvd/s_lrint.c (81%) rename sysdeps/riscv/{rv32 => }/rvd/s_lround.c (80%) rename sysdeps/riscv/{rv32 => }/rvf/s_lrintf.c (81%) rename sysdeps/riscv/{rv32 => }/rvf/s_lroundf.c (81%) diff --git a/sysdeps/riscv/rv32/rvd/Implies b/sysdeps/riscv/rv32/rvd/Implies index 1151214e8f..9438838e98 100644 --- a/sysdeps/riscv/rv32/rvd/Implies +++ b/sysdeps/riscv/rv32/rvd/Implies @@ -1,3 +1,2 @@ -riscv/rv32/rvf riscv/rvd riscv/rvf diff --git a/sysdeps/riscv/rv64/rvd/s_lrint.c b/sysdeps/riscv/rv64/rvd/s_lrint.c deleted file mode 100644 index d9f65a27c5..0000000000 --- a/sysdeps/riscv/rv64/rvd/s_lrint.c +++ /dev/null @@ -1,30 +0,0 @@ -/* lrint(). RISC-V version. - Copyright (C) 2017-2020 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 -#include - -long int -__lrint (double x) -{ - int64_t res; - asm ("fcvt.l.d %0, %1" : "=r" (res) : "f" (x)); - return res; -} - -libm_alias_double (__lrint, lrint) diff --git a/sysdeps/riscv/rv64/rvd/s_lround.c b/sysdeps/riscv/rv64/rvd/s_lround.c deleted file mode 100644 index 73e513c783..0000000000 --- a/sysdeps/riscv/rv64/rvd/s_lround.c +++ /dev/null @@ -1,30 +0,0 @@ -/* llround(). RISC-V version. - Copyright (C) 2017-2020 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 -#include - -long int -__lround (double x) -{ - int64_t res; - asm ("fcvt.l.d %0, %1, rmm" : "=r" (res) : "f" (x)); - return res; -} - -libm_alias_double (__lround, lround) diff --git a/sysdeps/riscv/rv64/rvf/s_lrintf.c b/sysdeps/riscv/rv64/rvf/s_lrintf.c deleted file mode 100644 index c7c033c3be..0000000000 --- a/sysdeps/riscv/rv64/rvf/s_lrintf.c +++ /dev/null @@ -1,31 +0,0 @@ -/* lrintf(). RISC-V version. - Copyright (C) 2017-2020 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 -#include -#include - -long int -__lrintf (float x) -{ - int64_t res; - asm ("fcvt.l.s %0, %1" : "=r" (res) : "f" (x)); - return res; -} - -libm_alias_float (__lrint, lrint) diff --git a/sysdeps/riscv/rv64/rvf/s_lroundf.c b/sysdeps/riscv/rv64/rvf/s_lroundf.c deleted file mode 100644 index 76817cadad..0000000000 --- a/sysdeps/riscv/rv64/rvf/s_lroundf.c +++ /dev/null @@ -1,31 +0,0 @@ -/* lroundf(). RISC-V version. - Copyright (C) 2017-2020 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 -#include -#include - -long int -__lroundf (float x) -{ - int64_t res; - asm ("fcvt.l.s %0, %1, rmm" : "=r" (res) : "f" (x)); - return res; -} - -libm_alias_float (__lround, lround) diff --git a/sysdeps/riscv/rv32/rvd/s_lrint.c b/sysdeps/riscv/rvd/s_lrint.c similarity index 81% rename from sysdeps/riscv/rv32/rvd/s_lrint.c rename to sysdeps/riscv/rvd/s_lrint.c index bdec792f18..46a7fb3da4 100644 --- a/sysdeps/riscv/rv32/rvd/s_lrint.c +++ b/sysdeps/riscv/rvd/s_lrint.c @@ -1,4 +1,4 @@ -/* lrint(). The 32-bit RISC-V (RV32) version. +/* lrint(). RISC-V version. Copyright (C) 2020 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -16,15 +16,22 @@ License along with the GNU C Library. If not, see . */ -#include #include #include +#if __WORDSIZE == 64 +# define OP "fcvt.l.d" +#elif __WORDSIZE == 32 +# define OP "fcvt.w.d" +#else +# error Unsupported +#endif + long int __lrint (double x) { - int32_t res; - asm ("fcvt.w.d %0, %1" : "=r" (res) : "f" (x)); + long int res; + asm (OP "\t%0, %1" : "=r" (res) : "f" (x)); return res; } diff --git a/sysdeps/riscv/rv32/rvd/s_lround.c b/sysdeps/riscv/rvd/s_lround.c similarity index 80% rename from sysdeps/riscv/rv32/rvd/s_lround.c rename to sysdeps/riscv/rvd/s_lround.c index 78bccd47ae..95753dcb39 100644 --- a/sysdeps/riscv/rv32/rvd/s_lround.c +++ b/sysdeps/riscv/rvd/s_lround.c @@ -1,4 +1,4 @@ -/* lround(). 32-bit RISC-V (RV32) version. +/* llround(). RISC-V version. Copyright (C) 2020 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -16,15 +16,22 @@ License along with the GNU C Library. If not, see . */ -#include #include #include +#if __WORDSIZE == 64 +# define OP "fcvt.l.d" +#elif __WORDSIZE == 32 +# define OP "fcvt.w.d" +#else +# error Unsupported +#endif + long int __lround (double x) { - int32_t res; - asm ("fcvt.w.d %0, %1, rmm" : "=r" (res) : "f" (x)); + long int res; + asm (OP "\t%0, %1, rmm" : "=r" (res) : "f" (x)); return res; } diff --git a/sysdeps/riscv/rv32/rvf/s_lrintf.c b/sysdeps/riscv/rvf/s_lrintf.c similarity index 81% rename from sysdeps/riscv/rv32/rvf/s_lrintf.c rename to sysdeps/riscv/rvf/s_lrintf.c index b8e1df439e..84fca99526 100644 --- a/sysdeps/riscv/rv32/rvf/s_lrintf.c +++ b/sysdeps/riscv/rvf/s_lrintf.c @@ -1,4 +1,4 @@ -/* lrintf(). 32-bit RISC-V (RV32) version. +/* lrintf(). RISC-V version. Copyright (C) 2020 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -20,11 +20,19 @@ #include #include +#if __WORDSIZE == 64 +# define OP "fcvt.l.s" +#elif __WORDSIZE == 32 +# define OP "fcvt.w.s" +#else +# error Unsupported +#endif + long int __lrintf (float x) { - int32_t res; - asm ("fcvt.w.s %0, %1" : "=r" (res) : "f" (x)); + long res; + asm (OP "\t%0, %1" : "=r" (res) : "f" (x)); return res; } diff --git a/sysdeps/riscv/rv32/rvf/s_lroundf.c b/sysdeps/riscv/rvf/s_lroundf.c similarity index 81% rename from sysdeps/riscv/rv32/rvf/s_lroundf.c rename to sysdeps/riscv/rvf/s_lroundf.c index 32f9925084..eba9b7adce 100644 --- a/sysdeps/riscv/rv32/rvf/s_lroundf.c +++ b/sysdeps/riscv/rvf/s_lroundf.c @@ -1,4 +1,4 @@ -/* lroundf(). 32-bit RISC-V (RV32) version. +/* lroundf(). RISC-V version. Copyright (C) 2020 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -20,11 +20,19 @@ #include #include +#if __WORDSIZE == 64 +# define OP "fcvt.l.s" +#elif __WORDSIZE == 32 +# define OP "fcvt.w.s" +#else +# error Unsupported +#endif + long int __lroundf (float x) { - int32_t res; - asm ("fcvt.w.s %0, %1, rmm" : "=r" (res) : "f" (x)); + long res; + asm (OP "\t%0, %1, rmm" : "=r" (res) : "f" (x)); return res; }