From patchwork Mon Sep 7 06:23:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Han-Kuan Chen X-Patchwork-Id: 40364 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 82FB33870883; Mon, 7 Sep 2020 06:23:09 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from transporter.internal.sifive.com (unknown [64.62.193.209]) by sourceware.org (Postfix) with ESMTPS id 1D2473851C25 for ; Mon, 7 Sep 2020 06:23:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 1D2473851C25 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=hankuan.chen@sifive.com Received: from gamma15.internal.sifive.com (gamma15.internal.sifive.com [10.14.21.64]) by transporter.internal.sifive.com (Postfix) with ESMTPS id D374320105; Sun, 6 Sep 2020 23:23:05 -0700 (PDT) Received: from localhost (gamma15.internal.sifive.com [local]) by gamma15.internal.sifive.com (OpenSMTPD) with ESMTPA id 8068d94c; Mon, 7 Sep 2020 06:23:05 +0000 (UTC) From: Han-Kuan Chen To: hankuan.chen@sifive.com Subject: [PATCH] RISC-V: Add floating point rounding mode (RMM) Date: Sun, 6 Sep 2020 23:23:00 -0700 Message-Id: <1599459780-252633-1-git-send-email-hankuan.chen@sifive.com> X-Mailer: git-send-email 2.7.4 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, UNPARSEABLE_RELAY 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: , Cc: libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Current implementation only support four standard rounding modes. However, RISC-V has an additional rounding mode (RNE), which should be defined in fenv.h. RMM is defined as 0x4 in riscv-spec. Follow riscv-newlib name (FE_TONEAREST_MM). --- sysdeps/riscv/bits/fenv.h | 5 ++++- sysdeps/riscv/rvf/fesetround.c | 1 + sysdeps/riscv/sfp-machine.h | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sysdeps/riscv/bits/fenv.h b/sysdeps/riscv/bits/fenv.h index c592bdd..b20f5d5 100644 --- a/sysdeps/riscv/bits/fenv.h +++ b/sysdeps/riscv/bits/fenv.h @@ -55,7 +55,10 @@ enum FE_DOWNWARD, FE_UPWARD = #define FE_UPWARD (0x3) - FE_UPWARD + FE_UPWARD, + FE_TONEAREST_MM = +#define FE_TONEAREST_MM (0x4) + FE_TONEAREST_MM }; diff --git a/sysdeps/riscv/rvf/fesetround.c b/sysdeps/riscv/rvf/fesetround.c index bd1ecff..d16822f 100644 --- a/sysdeps/riscv/rvf/fesetround.c +++ b/sysdeps/riscv/rvf/fesetround.c @@ -28,6 +28,7 @@ __fesetround (int round) case FE_TOWARDZERO: case FE_DOWNWARD: case FE_UPWARD: + case FE_TONEAREST_MM: riscv_setround (round); return 0; default: diff --git a/sysdeps/riscv/sfp-machine.h b/sysdeps/riscv/sfp-machine.h index bbeb9b3..9977233 100644 --- a/sysdeps/riscv/sfp-machine.h +++ b/sysdeps/riscv/sfp-machine.h @@ -101,6 +101,7 @@ #define FP_RND_ZERO FE_TOWARDZERO #define FP_RND_PINF FE_UPWARD #define FP_RND_MINF FE_DOWNWARD +#define FP_RND_AWAYZERO FE_TONEAREST_MM #define FP_EX_INVALID FE_INVALID #define FP_EX_OVERFLOW FE_OVERFLOW