From nobody Tue Feb 10 20:50:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1657961999368504.8710338607673; Sat, 16 Jul 2022 01:59:59 -0700 (PDT) Received: from localhost ([::1]:38182 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oCdeY-0005TL-Ay for importer@patchew.org; Sat, 16 Jul 2022 04:59:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56484) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oCdZN-0005cn-DR for qemu-devel@nongnu.org; Sat, 16 Jul 2022 04:54:37 -0400 Received: from mail.loongson.cn ([114.242.206.163]:50094 helo=loongson.cn) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oCdZL-0006eW-F4 for qemu-devel@nongnu.org; Sat, 16 Jul 2022 04:54:37 -0400 Received: from localhost.localdomain (unknown [10.2.5.185]) by mail.loongson.cn (Coremail) with SMTP id AQAAf9Dxz9PCfNJijWQiAA--.28082S4; Sat, 16 Jul 2022 16:54:30 +0800 (CST) From: Song Gao To: qemu-devel@nongnu.org Cc: richard.henderson@linaro.org, alex.bennee@linaro.org, f4bug@amsat.org, gaosong@loongson.cn, peter.maydell@linaro.org, yangxiaojuan@loongson.cn Subject: [PATCH 2/8] fpu/softfloat: Add LoongArch specialization for pickNaNMulAdd Date: Sat, 16 Jul 2022 16:54:20 +0800 Message-Id: <20220716085426.3098060-3-gaosong@loongson.cn> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220716085426.3098060-1-gaosong@loongson.cn> References: <20220716085426.3098060-1-gaosong@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: AQAAf9Dxz9PCfNJijWQiAA--.28082S4 X-Coremail-Antispam: 1UD129KBjvJXoW7uw18Cr15CrWfJFWrKw47XFb_yoW8GF45pr y7trWrKa47Gr17CF4SywnYvw15uwn3WF97Ka4ay34kArs8JFWrWF1rKr17tryrXFW8KrWa yw42vFW3uF1DArJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnUUvcSsGvfC2KfnxnUUI43ZEXa7xR_UUUUUUUUU== X-CM-SenderInfo: 5jdr20tqj6z05rqj20fqof0/ Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=gaosong@loongson.cn; helo=loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1657962000104100001 Content-Type: text/plain; charset="utf-8" LoongArch system follows IEEE754-2008 specificationa. The (inf,zero,nan) case sets InvalidOp and returns the input value 'c', and Prefer sNaN over qNaN, in the c, a, b order. Signed-off-by: Song Gao Reviewed-by: Richard Henderson --- fpu/softfloat-specialize.c.inc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/fpu/softfloat-specialize.c.inc b/fpu/softfloat-specialize.c.inc index 943e3301d2..948e1c1b24 100644 --- a/fpu/softfloat-specialize.c.inc +++ b/fpu/softfloat-specialize.c.inc @@ -574,6 +574,29 @@ static int pickNaNMulAdd(FloatClass a_cls, FloatClass = b_cls, FloatClass c_cls, return 1; } } +#elif defined(TARGET_LOONGARCH64) + /* + * For LoongArch systems that conform to IEEE754-2008, the (inf,zero,n= an) + * case sets InvalidOp and returns the input value 'c' + */ + if (infzero) { + float_raise(float_flag_invalid | float_flag_invalid_imz, status); + return 2; + } + /* Prefer sNaN over qNaN, in the c, a, b order. */ + if (is_snan(c_cls)) { + return 2; + } else if (is_snan(a_cls)) { + return 0; + } else if (is_snan(b_cls)) { + return 1; + } else if (is_qnan(c_cls)) { + return 2; + } else if (is_qnan(a_cls)) { + return 0; + } else { + return 1; + } #elif defined(TARGET_PPC) /* For PPC, the (inf,zero,qnan) case sets InvalidOp, but we prefer * to return an input NaN if we have one (ie c) rather than generating --=20 2.31.1