From nobody Thu May 16 23:09:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=ilande.co.uk Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1673739066466699.3089216255406; Sat, 14 Jan 2023 15:31:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pGpyh-0006Tz-Ql; Sat, 14 Jan 2023 18:30:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pGpye-0006Ta-Rj for qemu-devel@nongnu.org; Sat, 14 Jan 2023 18:30:22 -0500 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pGpyd-0003va-BG for qemu-devel@nongnu.org; Sat, 14 Jan 2023 18:30:20 -0500 Received: from [2a00:23c4:8baa:d400:877:cbd2:6fe8:34fc] (helo=kentang.home) by mail.ilande.co.uk with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pGpyB-0002Ab-PZ; Sat, 14 Jan 2023 23:29:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=ilande.co.uk; s=20220518; h=Subject:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:To:From:Sender:Reply-To:Cc: Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=gqQm2XCWaXtySI0pAar/Iq1SN/NdQR8Bis5Wnetndlk=; b=J1RCNZ995l6Dxe49m8ptFqwrhJ mDhXWD5cd3jAb3lstS3G2i6c9lHFCc2NrfkiDaAfwG7bY/g5PRx9mjxTgiwpTuHeX/OR6hbrdNmJZ zNHcPB//EoIyeKdvFAIQWuBLrgEJNvsXJl/rk16fYoHmr9DpSjrdOrPCK4MoyLsu7cRtXtmjKsDIg q4OKiKyCTVgPh5xUReLl40+kWrZRSJ4Gzu2gsLBrZSicDjFi9SVjnM2botzTF+mB0h/NrfyOBWEXE sVUAFPUQJre031Etqb1TWzR5+m/FlQEFKzPfcGmXmX2YdAF1ZBJ8z89G39asFiYIBzIS89cyWfEbx rz8pCiLvDRFzxArEUCQi6bqmepojj3KDHFkpGGQXM/Zo5tynaHuBHcT7BaeWVU+2yQfkoquy1ijeM w9t1sAYHpCJon9p++9sSb6/B6l996ubwPqg5d3hpidK4aJNJswO4S2RV63k/Ka9skoMvl6UqzIb29 CA7kg/p24VoxM6/y2BFefaS8VEvBGQNqhK581G3pETnWm5WauClpdeeFTe9cnYs/BTHbXn8jAhFLv 1t9YqCBYBAnyEu50TvargKu5iTf3HBlwagAnXYimq5pkKEc67dVPl+l3Ym5o/YXuSSHW3TiGCLY60 YJplgJheX4aTKQOtL1gSm9TkIG4e3Nnom1y4lONxs=; From: Mark Cave-Ayland To: laurent@vivier.eu, qemu-devel@nongnu.org Date: Sat, 14 Jan 2023 23:29:56 +0000 Message-Id: <20230114232959.118224-2-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230114232959.118224-1-mark.cave-ayland@ilande.co.uk> References: <20230114232959.118224-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8baa:d400:877:cbd2:6fe8:34fc X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH v3 1/4] target/m68k: pass quotient directly into make_quotient() X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.ilande.co.uk) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.ilande.co.uk X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1673739068007100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Reviewed-by: Richard Henderson --- target/m68k/fpu_helper.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c index fdc4937e29..0932c464fd 100644 --- a/target/m68k/fpu_helper.c +++ b/target/m68k/fpu_helper.c @@ -515,16 +515,10 @@ uint32_t HELPER(fmovemd_ld_postinc)(CPUM68KState *env= , uint32_t addr, return fmovem_postinc(env, addr, mask, cpu_ld_float64_ra); } =20 -static void make_quotient(CPUM68KState *env, floatx80 val) +static void make_quotient(CPUM68KState *env, int32_t quotient) { - int32_t quotient; int sign; =20 - if (floatx80_is_any_nan(val)) { - return; - } - - quotient =3D floatx80_to_int32(val, &env->fp_status); sign =3D quotient < 0; if (sign) { quotient =3D -quotient; @@ -538,14 +532,22 @@ void HELPER(fmod)(CPUM68KState *env, FPReg *res, FPRe= g *val0, FPReg *val1) { res->d =3D floatx80_mod(val1->d, val0->d, &env->fp_status); =20 - make_quotient(env, res->d); + if (floatx80_is_any_nan(res->d)) { + return; + } + + make_quotient(env, floatx80_to_int32(res->d, &env->fp_status)); } =20 void HELPER(frem)(CPUM68KState *env, FPReg *res, FPReg *val0, FPReg *val1) { res->d =3D floatx80_rem(val1->d, val0->d, &env->fp_status); =20 - make_quotient(env, res->d); + if (floatx80_is_any_nan(res->d)) { + return; + } + + make_quotient(env, floatx80_to_int32(res->d, &env->fp_status)); } =20 void HELPER(fgetexp)(CPUM68KState *env, FPReg *res, FPReg *val) --=20 2.30.2 From nobody Thu May 16 23:09:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=ilande.co.uk Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1673739066076839.3168811194661; Sat, 14 Jan 2023 15:31:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pGpyr-0006VG-SZ; Sat, 14 Jan 2023 18:30:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pGpym-0006UW-Df for qemu-devel@nongnu.org; Sat, 14 Jan 2023 18:30:28 -0500 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pGpyh-0003y6-CT for qemu-devel@nongnu.org; Sat, 14 Jan 2023 18:30:24 -0500 Received: from [2a00:23c4:8baa:d400:877:cbd2:6fe8:34fc] (helo=kentang.home) by mail.ilande.co.uk with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pGpyF-0002Ab-U3; Sat, 14 Jan 2023 23:29:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=ilande.co.uk; s=20220518; h=Subject:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:To:From:Sender:Reply-To:Cc: Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=TjqbDbXwFP2XVcU1Elo5GLxVz+6l6DjlXAhv1W32K2U=; b=DwuMDcQ+ONEnko4ySVcgkHbuZR T+5m8Yw23sEONdg92tzXy4w0aYJ54eRmFNYzgnuIjWEGfR0dnhb0tkqCuPXmz8sr2MY758zPeRMQv xxaP/9OeX2HS7/e2EXTVnbFUK46IhJhmGrnt9+u2UVDIgRYusSDr7Wj/Q8G/n/TLIwlUQU87KBvwM IjbGyMoKva1svyTfz1HbkIkVj34KZYok/biYgZay1060fJNfKOIbGpOyLfEPBpEBF/nKimw1JIkvm 9f1kEGnSoKO2UXhYt0DFNrQtzk0PsAXFCDt1fD6uMBfK1y6tce8evZidnMhVxzatyJffC9Y3Sti77 KHdzI3Or6r+7pWHXG34U6BuzgVMWrjW+dxFltLY/I3Rb/P9YSNWgG5Ymwb07RwuKxYBxuRh8HzXN8 qZizrSDP4thbqU6CSeJhxn0qsr/7OhaK7UkXVDJugPyIzokkXLdATmp88HVVf7GS9oiBESBWz8+fq kagdJkKoAAmROSN738l+r4qmkl6axyYn1ARiOvyWUZkhaZcCs66aNLpBvTRbXxTylSQu4rHC6RYEY HZ46a0ohet4lPfjEDV2acPEOM9hDxm7oaGLh7LkrOYiOBKwdbQlluUm1j0EO02XfK44ua4dQjrLmw UwW2dP+xqLShez09GpGmKZFVcGvt9hTorSxXqT5TU=; From: Mark Cave-Ayland To: laurent@vivier.eu, qemu-devel@nongnu.org Date: Sat, 14 Jan 2023 23:29:57 +0000 Message-Id: <20230114232959.118224-3-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230114232959.118224-1-mark.cave-ayland@ilande.co.uk> References: <20230114232959.118224-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8baa:d400:877:cbd2:6fe8:34fc X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH v3 2/4] target/m68k: pass sign directly into make_quotient() X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.ilande.co.uk) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.ilande.co.uk X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1673739068020100004 Content-Type: text/plain; charset="utf-8" This enables the quotient parameter to be changed from int32_t to uint32_t = and also allows the extra sign logic in make_quotient() to be removed. Signed-off-by: Mark Cave-Ayland Reviewed-by: Richard Henderson Reviewed-by: Laurent Vivier --- target/m68k/fpu_helper.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c index 0932c464fd..76b34b8988 100644 --- a/target/m68k/fpu_helper.c +++ b/target/m68k/fpu_helper.c @@ -515,39 +515,42 @@ uint32_t HELPER(fmovemd_ld_postinc)(CPUM68KState *env= , uint32_t addr, return fmovem_postinc(env, addr, mask, cpu_ld_float64_ra); } =20 -static void make_quotient(CPUM68KState *env, int32_t quotient) +static void make_quotient(CPUM68KState *env, int sign, uint32_t quotient) { - int sign; - - sign =3D quotient < 0; - if (sign) { - quotient =3D -quotient; - } - quotient =3D (sign << 7) | (quotient & 0x7f); env->fpsr =3D (env->fpsr & ~FPSR_QT_MASK) | (quotient << FPSR_QT_SHIFT= ); } =20 void HELPER(fmod)(CPUM68KState *env, FPReg *res, FPReg *val0, FPReg *val1) { + uint32_t quotient; + int sign; + res->d =3D floatx80_mod(val1->d, val0->d, &env->fp_status); =20 if (floatx80_is_any_nan(res->d)) { return; } =20 - make_quotient(env, floatx80_to_int32(res->d, &env->fp_status)); + sign =3D extractFloatx80Sign(res->d); + quotient =3D floatx80_to_int32(floatx80_abs(res->d), &env->fp_status); + make_quotient(env, sign, quotient); } =20 void HELPER(frem)(CPUM68KState *env, FPReg *res, FPReg *val0, FPReg *val1) { + uint32_t quotient; + int sign; + res->d =3D floatx80_rem(val1->d, val0->d, &env->fp_status); =20 if (floatx80_is_any_nan(res->d)) { return; } =20 - make_quotient(env, floatx80_to_int32(res->d, &env->fp_status)); + sign =3D extractFloatx80Sign(res->d); + quotient =3D floatx80_to_int32(floatx80_abs(res->d), &env->fp_status); + make_quotient(env, sign, quotient); } =20 void HELPER(fgetexp)(CPUM68KState *env, FPReg *res, FPReg *val) --=20 2.30.2 From nobody Thu May 16 23:09:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=ilande.co.uk Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1673739098483546.165231039586; Sat, 14 Jan 2023 15:31:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pGpyo-0006V2-AA; Sat, 14 Jan 2023 18:30:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pGpyn-0006Uq-Is for qemu-devel@nongnu.org; Sat, 14 Jan 2023 18:30:29 -0500 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pGpym-00040r-6D for qemu-devel@nongnu.org; Sat, 14 Jan 2023 18:30:29 -0500 Received: from [2a00:23c4:8baa:d400:877:cbd2:6fe8:34fc] (helo=kentang.home) by mail.ilande.co.uk with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pGpyK-0002Ab-0N; Sat, 14 Jan 2023 23:30:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=ilande.co.uk; s=20220518; h=Subject:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:To:From:Sender:Reply-To:Cc: Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=VRRjLKb32BGUpCHS2k+jXf/P2JX1P862ixDSlV7Xkr0=; b=U5QhgZWHWYABDfBJjOBeZGIH5z eb48IMjZeSZctjBrgBIAqmev2DOkWw/PvNTQ1ZlFplSZhbbxZ8+08kRzmRyF1tbrzXR4q59+w+Moq LKi8xrWF3J5Nsu3Ux33C9WvGRTCg4Sn7WqsL3wBrOBP5nif+cl0hh/CQ68a4KVrvwcgNekNku/SXi Hg0juXpZby94QfTsXJNrAujcCysdCgHaKklV+L2FdKOgUx5pgTrh2WKOao9cqD1uk+Q0Oq81xZQaq e50mrl1y0psxqNVO9UyZBLQD+CcUwNL9xdz9WhcauxMHAhBRzuGyYLdHGvEjoVcZ/boPl4HXUV6IA c0I45pJemTlplYc3l41UigS22maiRDltWysSEcPQFMGUOOdu/Qn5LqcNPasbwxkMoFkQKrGVRbkhQ l/h6oyR3Chz1+x2WW4O4Atfq4TWZTyvo7dhQ2CfS8wRPQKPLHYNaS5EtO6Hln58dQhnYBZIfO1sh8 RiZSrUXs2lDVhqz05SWQXze7bd+/nYmbZ2LPE+0I81Cb2O0o9tGV528ERAIk2LbSDKh99RlvfAH74 FipQUgcRZGeLBXpHzGCyIBF0lBu0oQGxjWBVsFdlwvIJOFPD4ZdW3z3cUImNmLNl3JtSZlTi+YLtL tgPdZqB7aQPWRcOKJQcTOu9Aelbex+2yGk+tWKme8=; From: Mark Cave-Ayland To: laurent@vivier.eu, qemu-devel@nongnu.org Date: Sat, 14 Jan 2023 23:29:58 +0000 Message-Id: <20230114232959.118224-4-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230114232959.118224-1-mark.cave-ayland@ilande.co.uk> References: <20230114232959.118224-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8baa:d400:877:cbd2:6fe8:34fc X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH v3 3/4] target/m68k: fix FPSR quotient byte for fmod instruction X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.ilande.co.uk) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.ilande.co.uk X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1673739099054100001 Content-Type: text/plain; charset="utf-8" The FPSR quotient byte should be set to the value of the quotient and not t= he result. Switch from using floatx80_mod() to floatx80_modrem() which returns the quotient as a uint64_t which can be used for the quotient byte. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Reviewed-by: Richard Henderson --- target/m68k/fpu_helper.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c index 76b34b8988..5fd094a33c 100644 --- a/target/m68k/fpu_helper.c +++ b/target/m68k/fpu_helper.c @@ -523,17 +523,16 @@ static void make_quotient(CPUM68KState *env, int sign= , uint32_t quotient) =20 void HELPER(fmod)(CPUM68KState *env, FPReg *res, FPReg *val0, FPReg *val1) { - uint32_t quotient; - int sign; + uint64_t quotient; + int sign =3D extractFloatx80Sign(val1->d) ^ extractFloatx80Sign(val0->= d); =20 - res->d =3D floatx80_mod(val1->d, val0->d, &env->fp_status); + res->d =3D floatx80_modrem(val1->d, val0->d, true, "ient, + &env->fp_status); =20 if (floatx80_is_any_nan(res->d)) { return; } =20 - sign =3D extractFloatx80Sign(res->d); - quotient =3D floatx80_to_int32(floatx80_abs(res->d), &env->fp_status); make_quotient(env, sign, quotient); } =20 --=20 2.30.2 From nobody Thu May 16 23:09:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=ilande.co.uk Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1673739110969772.0315792497368; Sat, 14 Jan 2023 15:31:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pGpyu-0006Vs-4g; Sat, 14 Jan 2023 18:30:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pGpyr-0006VL-80 for qemu-devel@nongnu.org; Sat, 14 Jan 2023 18:30:33 -0500 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pGpyp-00041Q-KQ for qemu-devel@nongnu.org; Sat, 14 Jan 2023 18:30:33 -0500 Received: from [2a00:23c4:8baa:d400:877:cbd2:6fe8:34fc] (helo=kentang.home) by mail.ilande.co.uk with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pGpyO-0002Ab-3T; Sat, 14 Jan 2023 23:30:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=ilande.co.uk; s=20220518; h=Subject:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:To:From:Sender:Reply-To:Cc: Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=XFnXPBkp6LjeJcFaihNrkxQmXNW2mPQHtodLyt3BjIk=; b=KWiuzCIoCta2g+XAGoEYDmPNjA Lw7wYGPwc5GFdRdhJOThO2w95o/bJ6pGVWar1X2HX16JBnsyBDCXsnHcmeUccd+JHauYSwbbT3Nty u/ksH+VufFlLBRDhVhQZG7KI0oDMwQJ+2Zk7yT4mWrMsgINe/rQglCbb6s0S9gWOo323fFtMJd6UI wKRRJhjTrP236VZiJ56obrSAG1KuFbnKwKVDqYNiLzOca36PVR+APMMACm/y0MQrjyj/zRDgmVrCn P1HWpAjZQUYUwiiHMXW5uxQTLJnosqYPhv/bDZjT2ouRHS8UCNySfoUbXSbPfSnkXPWScKHP1YczE qwxYKUdgAjOVIt7CB/SiTqBohSS2wNwEkd3CmFgSVE2ymvw9I8BOCa7r11rx9YEaNOAvd9SnkblxY ddWmGHBwHGOAkPXpu4ulTUjuJCGoatVusAmf1ifJtb1/O4B9lv63Zy8wNS1wUq4yj1UxOaFhox9ZP efEyJ0rYTQJnVvVxDi+qVWlb1cwKCJSMysCUatGAAjrQTmfF3PF4TDedy/vTL1UfYFxgE49w4dxuO g8hJGP2tx5Gw/ahkFOvPJ8s32LOpwSjvMCS8wmSQY1tPaZ1YgSAdKRSQkg3LchaYV4vTN4jJfhqOQ NhqrApVc40URIfC6Z9VT+ImZJ1hYZmhbRq4gB1kE8=; From: Mark Cave-Ayland To: laurent@vivier.eu, qemu-devel@nongnu.org Date: Sat, 14 Jan 2023 23:29:59 +0000 Message-Id: <20230114232959.118224-5-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230114232959.118224-1-mark.cave-ayland@ilande.co.uk> References: <20230114232959.118224-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8baa:d400:877:cbd2:6fe8:34fc X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH v3 4/4] target/m68k: fix FPSR quotient byte for frem instruction X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.ilande.co.uk) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.ilande.co.uk X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1673739113035100003 Content-Type: text/plain; charset="utf-8" The FPSR quotient byte should be set to the value of the quotient and not t= he result. Manually calculate the quotient in the frem helper in round to near= est even mode (note this is different from the quotient calculated internally f= or fmod), and use it to set the quotient byte accordingly. Signed-off-by: Mark Cave-Ayland Fixes: https://gitlab.com/qemu-project/qemu/-/issues/1314 Reviewed-by: Richard Henderson --- target/m68k/fpu_helper.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c index 5fd094a33c..3a37d8f584 100644 --- a/target/m68k/fpu_helper.c +++ b/target/m68k/fpu_helper.c @@ -538,18 +538,27 @@ void HELPER(fmod)(CPUM68KState *env, FPReg *res, FPRe= g *val0, FPReg *val1) =20 void HELPER(frem)(CPUM68KState *env, FPReg *res, FPReg *val0, FPReg *val1) { - uint32_t quotient; - int sign; - - res->d =3D floatx80_rem(val1->d, val0->d, &env->fp_status); - - if (floatx80_is_any_nan(res->d)) { - return; + FPReg fp_quot; + floatx80 fp_rem; + + fp_rem =3D floatx80_rem(val1->d, val0->d, &env->fp_status); + if (!floatx80_is_any_nan(fp_rem)) { + float_status fp_status =3D { }; + uint32_t quotient; + int sign; + + /* Calculate quotient directly using round to nearest mode */ + set_float_rounding_mode(float_round_nearest_even, &fp_status); + set_floatx80_rounding_precision( + get_floatx80_rounding_precision(&env->fp_status), &fp_status); + fp_quot.d =3D floatx80_div(val1->d, val0->d, &fp_status); + + sign =3D extractFloatx80Sign(fp_quot.d); + quotient =3D floatx80_to_int32(floatx80_abs(fp_quot.d), &env->fp_s= tatus); + make_quotient(env, sign, quotient); } =20 - sign =3D extractFloatx80Sign(res->d); - quotient =3D floatx80_to_int32(floatx80_abs(res->d), &env->fp_status); - make_quotient(env, sign, quotient); + res->d =3D fp_rem; } =20 void HELPER(fgetexp)(CPUM68KState *env, FPReg *res, FPReg *val) --=20 2.30.2