From patchwork Tue Jun 9 21:32:59 2020
ContentType: text/plain; charset="utf8"
MIMEVersion: 1.0
ContentTransferEncoding: 7bit
Subject: [11/13] riscv: Use sqrt{f} builtin
XPatchworkSubmitter: Stafford Horne via Libcalpha
XPatchworkId: 36804
MessageId: <20200609213301.359113511adhemerval.zanella@linaro.org>
To: libcalpha@sourceware.org
Date: Tue, 9 Jun 2020 18:32:59 0300
From: Adhemerval Zanella via Libcalpha
ListId: Libcalpha mailing list
Checked with a build for riscv64linuxgnurv64imaclp64 (no
builtin support), riscv64linuxgnurv64imafdclp64, and
riscv64linuxgnurv64imafdclp64d.

sysdeps/riscv/rvd/e_sqrt.c  28 
sysdeps/riscv/rvd/mathusebuiltinssqrt.h  4 ++++
sysdeps/riscv/rvf/e_sqrtf.c  28 
3 files changed, 4 insertions(+), 56 deletions()
delete mode 100644 sysdeps/riscv/rvd/e_sqrt.c
create mode 100644 sysdeps/riscv/rvd/mathusebuiltinssqrt.h
delete mode 100644 sysdeps/riscv/rvf/e_sqrtf.c

2.25.1
diff git a/sysdeps/riscv/rvd/e_sqrt.c b/sysdeps/riscv/rvd/e_sqrt.c
deleted file mode 100644
index 7defcb5785..0000000000
 a/sysdeps/riscv/rvd/e_sqrt.c
+++ /dev/null
@@ 1,28 +0,0 @@
/* Double precision floating point square root. RISCV version.
 Copyright (C) 20172020 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
__ieee754_sqrt (double x)
{
 asm ("fsqrt.d %0, %1" : "=f" (x) : "f" (x));
 return x;
}
libm_alias_finite (__ieee754_sqrt, __sqrt)
diff git a/sysdeps/riscv/rvd/mathusebuiltinssqrt.h b/sysdeps/riscv/rvd/mathusebuiltinssqrt.h
new file mode 100644
index 0000000000..e94c915ba6
 /dev/null
+++ b/sysdeps/riscv/rvd/mathusebuiltinssqrt.h
@@ 0,0 +1,4 @@
+#define USE_SQRT_BUILTIN 1
+#define USE_SQRTF_BUILTIN 1
+#define USE_SQRTL_BUILTIN 0
+#define USE_SQRTF128_BUILTIN 0
diff git a/sysdeps/riscv/rvf/e_sqrtf.c b/sysdeps/riscv/rvf/e_sqrtf.c
deleted file mode 100644
index 04835e3e53..0000000000
 a/sysdeps/riscv/rvf/e_sqrtf.c
+++ /dev/null
@@ 1,28 +0,0 @@
/* Single precision floating point square root. RISCV version.
 Copyright (C) 20172020 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
__ieee754_sqrtf (float x)
{
 asm ("fsqrt.s %0, %1" : "=f" (x) : "f" (x));
 return x;
}
libm_alias_finite (__ieee754_sqrtf, __sqrtf)