From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1895) id BBBF63950C01; Tue, 8 Jun 2021 12:36:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BBBF63950C01 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Wilco Dijkstra To: glibc-cvs@sourceware.org Subject: [glibc] AArch64: Add support for roundeven[f] X-Act-Checkin: glibc X-Git-Author: Wilco Dijkstra X-Git-Refname: refs/heads/master X-Git-Oldrev: b190bccc8a7e4919d3bd68a153577284f201819a X-Git-Newrev: 6a86bc099219a656be479d5f31ff90ec7860b112 Message-Id: <20210608123610.BBBF63950C01@sourceware.org> Date: Tue, 8 Jun 2021 12:36:10 +0000 (GMT) X-BeenThere: glibc-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Glibc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Jun 2021 12:36:10 -0000 https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=6a86bc099219a656be479d5f31ff90ec7860b112 commit 6a86bc099219a656be479d5f31ff90ec7860b112 Author: Wilco Dijkstra Date: Tue Jun 8 13:33:09 2021 +0100 AArch64: Add support for roundeven[f] Add inline assembler for the roundeven functions. Passes GLIBC regression. Note GCC does not inline the builtin (PR100966), so this cannot be used for now. Diff: --- sysdeps/aarch64/fpu/s_roundeven.c | 29 +++++++++++++++++++++++++++++ sysdeps/aarch64/fpu/s_roundevenf.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/sysdeps/aarch64/fpu/s_roundeven.c b/sysdeps/aarch64/fpu/s_roundeven.c new file mode 100644 index 0000000000..d74b40daf5 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_roundeven.c @@ -0,0 +1,29 @@ +/* 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 +#include + +double +__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 new file mode 100644 index 0000000000..dfc492c2f8 --- /dev/null +++ b/sysdeps/aarch64/fpu/s_roundevenf.c @@ -0,0 +1,28 @@ +/* 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 +#include + +float +__roundevenf (float x) +{ + asm volatile ("frintn \t%s0, %s1" : "=w" (x) : "w" (x)); + return x; +} +libm_alias_float (__roundeven, roundeven)