Zfinx has provide fcsr like F, so rouding mode should use fcsr instead
of `soft` fenv.

libgcc/ChangeLog:

        * config/riscv/sfp-machine.h (FP_INIT_ROUNDMODE): Check zfinx.
        (FP_HANDLE_EXCEPTIONS): Ditto.
---
 libgcc/config/riscv/sfp-machine.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libgcc/config/riscv/sfp-machine.h 
b/libgcc/config/riscv/sfp-machine.h
index ded594d75d87..38e2817bffa2 100644
--- a/libgcc/config/riscv/sfp-machine.h
+++ b/libgcc/config/riscv/sfp-machine.h
@@ -113,7 +113,7 @@ typedef int __gcc_CMPtype __attribute__ ((mode 
(__libgcc_cmp_return__)));
 
 #define _FP_TININESS_AFTER_ROUNDING 1
 
-#ifdef __riscv_flen
+#if defined(__riscv_flen) || defined(__riscv_zfinx)
 #define FP_INIT_ROUNDMODE                      \
 do {                                           \
   __asm__ volatile ("frrm %0" : "=r" (_frm));  \
-- 
2.40.1

Reply via email to