From patchwork Fri Aug 5 14:15:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Lucas Mateus Martins Araujo e Castro X-Patchwork-Id: 12937333 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2F759C00140 for ; Fri, 5 Aug 2022 14:19:53 +0000 (UTC) Received: from localhost ([::1]:51510 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJyB5-0001qi-UN for qemu-devel@archiver.kernel.org; Fri, 05 Aug 2022 10:19:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45022) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJy6x-000800-94; Fri, 05 Aug 2022 10:15:36 -0400 Received: from [200.168.210.66] (port=13350 helo=outlook.eldorado.org.br) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJy6q-0004vg-7N; Fri, 05 Aug 2022 10:15:29 -0400 Received: from p9ibm ([10.10.71.235]) by outlook.eldorado.org.br over TLS secured channel with Microsoft SMTPSVC(8.5.9600.16384); Fri, 5 Aug 2022 11:15:23 -0300 Received: from eldorado.org.br (unknown [10.10.70.45]) by p9ibm (Postfix) with ESMTP id 2CE04800358; Fri, 5 Aug 2022 11:15:23 -0300 (-03) From: "Lucas Mateus Castro(alqotel)" To: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Cc: richard.henderson@linaro.org, danielhb413@gmail.com, "Lucas Mateus Castro (alqotel)" Subject: [PATCH 0/2] Floating-point OE/UE exception bug Date: Fri, 5 Aug 2022 11:15:20 -0300 Message-Id: <20220805141522.412864-1-lucas.araujo@eldorado.org.br> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-OriginalArrivalTime: 05 Aug 2022 14:15:23.0460 (UTC) FILETIME=[CD60C040:01D8A8D5] X-Host-Lookup-Failed: Reverse DNS lookup failed for 200.168.210.66 (failed) Received-SPF: pass client-ip=200.168.210.66; envelope-from=lucas.araujo@eldorado.org.br; helo=outlook.eldorado.org.br X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, PDS_HP_HELO_NORDNS=0.659, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: "Lucas Mateus Castro (alqotel)" Changes in v2: - Completely reworked the solution: * Created re_bias in FloatFmt, it is 3/4 of the total exponent range of a FP type * Added rebias bools that dictates if the result should have its exponent add/subtract the re_bias value if an overflow/underflow occurs. * ppc_store_fpscr sets/unsets rebias if OE/UE is set/unset The PowerISA defines that if an overflow exception happen with FPSCR.OE set, the exponent of the intermediate result is subtracted 1536 in double precision operations and is added 1536 in an underflow exception, currently this behavior is not QEMU's behavior, this patch series fixes that. Currently there's no test in this patch series as there's no way to disable MSR.FE0 and MSR.FE1 in linux user, so any overflow/underflow exception with OE/UE set causes a trapping exception. Lucas Mateus Castro (alqotel) (2): fpu: Add rebias bool, value and operation target/ppc: Bugfix FP when OE/UE are set fpu/softfloat-parts.c.inc | 21 +++++++++++++++++++-- fpu/softfloat.c | 2 ++ include/fpu/softfloat-types.h | 4 ++++ target/ppc/cpu.c | 2 ++ target/ppc/fpu_helper.c | 2 -- 5 files changed, 27 insertions(+), 4 deletions(-) Reviewed-by: Alex Bennée