diff options
author | Zong Li <zongbox@gmail.com> | 2018-11-30 17:16:38 +0800 |
---|---|---|
committer | Alistair Francis <alistair.francis@wdc.com> | 2020-08-27 08:17:42 -0700 |
commit | 941a55cf590ed23fdca9efff291f1ef82112bd6f (patch) | |
tree | 7fe7351bda1831df355e731cf490c5899879f898 /sysdeps/riscv/rv32/rvd/s_lround.c | |
parent | 5b6113d62efabb123db433b14adddd4a5fb6b7ec (diff) | |
download | glibc-941a55cf590ed23fdca9efff291f1ef82112bd6f.tar.gz glibc-941a55cf590ed23fdca9efff291f1ef82112bd6f.tar.xz glibc-941a55cf590ed23fdca9efff291f1ef82112bd6f.zip |
RISC-V: Add hard float support for 32-bit CPUs
This patch adds support for hardware floating-point support for the RV32IF and RV32IFD platforms. Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
Diffstat (limited to 'sysdeps/riscv/rv32/rvd/s_lround.c')
-rw-r--r-- | sysdeps/riscv/rv32/rvd/s_lround.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sysdeps/riscv/rv32/rvd/s_lround.c b/sysdeps/riscv/rv32/rvd/s_lround.c new file mode 100644 index 0000000000..78bccd47ae --- /dev/null +++ b/sysdeps/riscv/rv32/rvd/s_lround.c @@ -0,0 +1,31 @@ +/* lround(). 32-bit RISC-V (RV32) version. + Copyright (C) 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 + <https://www.gnu.org/licenses/>. */ + +#include <math.h> +#include <libm-alias-double.h> +#include <stdint.h> + +long int +__lround (double x) +{ + int32_t res; + asm ("fcvt.w.d %0, %1, rmm" : "=r" (res) : "f" (x)); + return res; +} + +libm_alias_double (__lround, lround) |