From patchwork Fri Mar 9 14:57:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 883686 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=vivier.eu Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zyVvt1tQkz9sby for ; Sat, 10 Mar 2018 02:01:46 +1100 (AEDT) Received: from localhost ([::1]:45771 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1euJWi-0006TT-4A for incoming@patchwork.ozlabs.org; Fri, 09 Mar 2018 10:01:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38120) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1euJSh-0003Is-QB for qemu-devel@nongnu.org; Fri, 09 Mar 2018 09:57:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1euJSe-0002wa-D2 for qemu-devel@nongnu.org; Fri, 09 Mar 2018 09:57:35 -0500 Received: from mout.kundenserver.de ([212.227.17.10]:51599) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1euJSe-0002vf-42 for qemu-devel@nongnu.org; Fri, 09 Mar 2018 09:57:32 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue102 [212.227.15.183]) with ESMTPSA (Nemesis) id 0McFi3-1fCoRx2Wmt-00Jaow; Fri, 09 Mar 2018 15:57:30 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Fri, 9 Mar 2018 15:57:10 +0100 Message-Id: <20180309145717.9603-2-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180309145717.9603-1-laurent@vivier.eu> References: <20180309145717.9603-1-laurent@vivier.eu> X-Provags-ID: V03:K0:VdxWMQcG9Px92PtGKS8P8o+akFqNJp2t8ucbkMhWETpeH8GnhNy LLev6+MewAhU24+L1LueChE5KBDX8V3zSfCbgLn5aEIJrPjm9Z32x/SaFvZTecykZ8RAEgw UQ/Pocb01mSENfUqxLpHe3bApUb7qzkdiNMCHqo+3vojNraAkhvGT3GMwBR9bUJZHb1UOBK yWyk7zwvsnCxj7nCajZYQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:ZvShg4hPDB4=:KX2mVkcuN4UwahbD/cfpAi AMlY0mfX6LboZTFsmbXszlzbKnlRmn4s58V545NSL3sdKX9hjcXwPJkSZ4tET+km2v6ljzMPD R3L5zCA9j8cnpqtViqIUa9+7ZNovKiGFzb3qs5cEFiOFuYA8VKDdCXiyTa+GxQXv5NsnEpA9m C62lCH8WiSHk/FJ6dHpRJdx/aPoMdKprrQQy/xLJ7eKKMyPaqSynzJ0V2J2/8NOLhxk+rZmGC rC1s2eAwb4ELLN7NUZdnZqzqQltZiIocl8r+8IK5dcnffyFkgzf10ESm4kJ4QhuOqw+UCTxXH MR8dtAxuV0yOxTLFs3kUx6NEwIh/GJSB08NToSfNYEvmfk7W7mWX7e+LGS4s1nN746p5oG6Tv qI9jJCDwi4hkycbj67fhseFDLfWOWbg91BdN19Jj6hc66k8p70IPKBGMxtEDOWMZkeWM8GU1Q E/VNQP3YbPLv7kG09GkemXXLLNzMfKU4H+Oqeb7bzNcV3lPJxRAtTIaoYhu9juPneIKBd7WEa jgOE3w8MB9CVcxhxSV6cjBnOblMtCvXv6IcscXb0tAPG6Xp9NSoGFOXrCSQDl4HLkW9LXfUr6 UIqqhJLrks9obOQ5U4NeUivg8qoDqeqnRgNKs57PqIQ4ET2UvbC0tNa6qgeSfkTJkMRuWAA65 9FRZP1xf1EnN6cAZJnEmIvckCs6Ag9aJKXT6K6H24CHnClKhiKHurp8v8kM+Or40hR9wXMCQU Qi6UEoFmMWiuGPB3sFAhvsW7wHqgGpS/Kv4i/A== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.10 Subject: [Qemu-devel] [PULL v2 1/8] target/m68k: define floatx80_move() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This functions is needed by upcoming m68k softfloat functions. Source code copied for WinUAE (tag 3500) (The WinUAE file has been copied from QEMU and has the QEMU licensing notice) Signed-off-by: Laurent Vivier Message-Id: <20180305203910.10391-2-laurent@vivier.eu> --- target/m68k/softfloat.c | 27 +++++++++++++++++++++++++++ target/m68k/softfloat.h | 1 + 2 files changed, 28 insertions(+) diff --git a/target/m68k/softfloat.c b/target/m68k/softfloat.c index 9cb141900c..55eb7a260a 100644 --- a/target/m68k/softfloat.c +++ b/target/m68k/softfloat.c @@ -247,3 +247,30 @@ floatx80 floatx80_scale(floatx80 a, floatx80 b, float_status *status) return roundAndPackFloatx80(status->floatx80_rounding_precision, aSign, aExp, aSig, 0, status); } + +floatx80 floatx80_move(floatx80 a, float_status *status) +{ + flag aSign; + int32_t aExp; + uint64_t aSig; + + aSig = extractFloatx80Frac(a); + aExp = extractFloatx80Exp(a); + aSign = extractFloatx80Sign(a); + + if (aExp == 0x7FFF) { + if ((uint64_t)(aSig << 1)) { + return propagateFloatx80NaNOneArg(a, status); + } + return a; + } + if (aExp == 0) { + if (aSig == 0) { + return a; + } + normalizeRoundAndPackFloatx80(status->floatx80_rounding_precision, + aSign, aExp, aSig, 0, status); + } + return roundAndPackFloatx80(status->floatx80_rounding_precision, aSign, + aExp, aSig, 0, status); +} diff --git a/target/m68k/softfloat.h b/target/m68k/softfloat.h index 78fbc0cd0c..18561b870d 100644 --- a/target/m68k/softfloat.h +++ b/target/m68k/softfloat.h @@ -26,4 +26,5 @@ floatx80 floatx80_mod(floatx80 a, floatx80 b, float_status *status); floatx80 floatx80_getman(floatx80 a, float_status *status); floatx80 floatx80_getexp(floatx80 a, float_status *status); floatx80 floatx80_scale(floatx80 a, floatx80 b, float_status *status); +floatx80 floatx80_move(floatx80 a, float_status *status); #endif