From patchwork Fri Mar 9 14:26:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 883664 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 3zyV8N2Gq8z9sbd for ; Sat, 10 Mar 2018 01:27:32 +1100 (AEDT) Received: from localhost ([::1]:45571 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1euIzZ-0000xG-KT for incoming@patchwork.ozlabs.org; Fri, 09 Mar 2018 09:27:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58908) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1euIyq-0000vf-1H for qemu-devel@nongnu.org; Fri, 09 Mar 2018 09:26:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1euIym-0007Bb-0I for qemu-devel@nongnu.org; Fri, 09 Mar 2018 09:26:43 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:50665) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1euIyl-0007AR-NJ for qemu-devel@nongnu.org; Fri, 09 Mar 2018 09:26:39 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue105 [212.227.15.183]) with ESMTPSA (Nemesis) id 0LxwHc-1eZMJl0Bz2-015HCH; Fri, 09 Mar 2018 15:26:37 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Fri, 9 Mar 2018 15:26:23 +0100 Message-Id: <20180309142630.2170-2-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180309142630.2170-1-laurent@vivier.eu> References: <20180309142630.2170-1-laurent@vivier.eu> X-Provags-ID: V03:K0:dwpV5mhn2taJ0Z3UIXH3vVba2sQmYl2x7+0zyCYNM4+H+tDvpeC CsXV6OzGZ3vXhfeMNIa4n02kdcDcsF6HJECrie/JzvglCMAIkl35mZ2q1D9sTAs+q0ZRGti mE7FupliNpjLTY9fkfJsUvwlVRYuXiE5JA6Eexmgmy7kjg1vBc9IKUSx51aRS30abI6ZDTn kkI5QEkroIOJ0rthsTYEQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:MCwzZ6xI4y8=:smQCRD13+vvCpPhaVtkI0e 3TigoXYkqKJ+u+Axg5Kho+EBsA0UAnt3eOt8hc5B5KWgGfXoTIOFy0yhYj/fWZXQQCgH6DWH0 132EpBF5LL85oKdCsh3Hs+8QjaDcepoG60VCSOAGD247lm6hap9A8x+utXgP9xr223YOzk/TR py63leWFOxcUclfTZKNhmps9zFiaRtacvmGYpzFjLC8X0FwzFgAG3JwnouLnEzHxmasHnSzUr kD61NzZ2b6rzWKBqr5gnLGKRuGa9UDMUgfaR4kizo9wjcC3VoGk6kKgitMahJFgv7UrVleKrA HyMxXLwMM8QBsf16W61d3x1Gz+cw+rNl/4A8ze9tARR0KLh1+sALByry9gnekmy6cGnUPBGBf z9e7ftbah5QtIfyR6NcMKkZpJ4uP6kSTIGDjRdsJLrMqqhqFfWLCypLVxZ/5WdLtKx7ve7ddY 7yz/KbzFiq3qZWUXGDlmFZXXXbt6K6Bnb4bfXceeJhyTbT9fW5dylkINovPlWzCjBsCz3hx8M Gvvx1alExn6maTAGWRZBOy84o50CTI4PF/rBsrGzCjOzKkGTNUWqdFmc3IGLjpu/Qnx/U3G+q jXrOHna/Ugi9HAlgMo+RzusgyzR9XvVeTwApKAnpT5K/QpbaU50+CnhcsCKvttrZRsE2NZV/7 gjmfSDVERu0CPeT2GSlEFOfRiycAjzMFJXl4MdgVgN+S3i7LHzOWzoUZd0Q0tD2HKbQm1y6z/ BRyvo7IA016VBwWg8wp/kfuPC77DK7t680EXOg== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.72.192.75 Subject: [Qemu-devel] [PULL 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