From nobody Tue Oct 28 02:08:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1522129429374660.8018724488899; Mon, 26 Mar 2018 22:43:49 -0700 (PDT) Received: from localhost ([::1]:60532 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0hOe-0007An-Fk for importer@patchew.org; Tue, 27 Mar 2018 01:43:48 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35792) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0hFI-0007P9-83 for qemu-devel@nongnu.org; Tue, 27 Mar 2018 01:34:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0hFE-0005OW-Vh for qemu-devel@nongnu.org; Tue, 27 Mar 2018 01:34:08 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:39087) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0hFE-0005OJ-Pu for qemu-devel@nongnu.org; Tue, 27 Mar 2018 01:34:04 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 7A0EB2167A; Tue, 27 Mar 2018 01:34:04 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 27 Mar 2018 01:34:04 -0400 Received: from localhost (flamenco.cs.columbia.edu [128.59.20.216]) by mail.messagingengine.com (Postfix) with ESMTPA id 2D160E43DF; Tue, 27 Mar 2018 01:34:04 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=braap.org; h=cc :date:from:in-reply-to:message-id:references:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=mesmtp; bh=PwR0bHnOIZaElv VfyKNBiRIb4u/hrvKxFB+kJ6Xm8O0=; b=ZYWsdfRLfV4gsPPBfifGVUKN46sNbM d62XiBIa719vwbd5xVVfC+yPpxgecpQUAtbyfTY+tKdGp8qoAAMS3j1371N/Fq7x R8CMkTTaH5dIecJCskuuhcMYKzAw2SKo7KuUar5iQEWFN+S3EZu/UPAVQOCmy5WS wgnIR4ARXKg84= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=PwR0bHnOIZaElvVfyKNBiRIb4u/hrvKxFB+kJ6Xm8O0=; b=XbPPDRPw bUvJLacKeA8JrOgiIKDo8Wvvpmdp0LAKqbmz6mTs9V/OU/Grwb4Qw4wJL0BSzKLu HE8sfvKNmLTWQgBo16HndHQg6ZktFYsPYE5/xdlzxlqZtDOOdpbTEiSHe0AMoAYm Tzv7XmGoc3ZUF7DwPIy9+CRlnJRrqWm0QlaL4cyIviPufuUAkq0juZMPde6jAzB8 bP6iUI/hG115igwLmi5I3wAZicbwaHXKHX0X8Sj7GDBeaUSYK5pYBT2HIEZOSodu uE4N/o0Lwaa4O/AykOU4ZwuLAabfdNvC6Sh3rcYSiZN5m6hiksJj+pILXbeHDE/W 5gKxxs7RbJpKzw== X-ME-Sender: From: "Emilio G. Cota" To: qemu-devel@nongnu.org Date: Tue, 27 Mar 2018 01:34:00 -0400 Message-Id: <1522128840-498-15-git-send-email-cota@braap.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1522128840-498-1-git-send-email-cota@braap.org> References: <1522128840-498-1-git-send-email-cota@braap.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.29 Subject: [Qemu-devel] [PATCH v2 14/14] hardfloat: support float32_to_float64 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: Peter Maydell , Mark Cave-Ayland , Richard Henderson , Laurent Vivier , Paolo Bonzini , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Performance improvement for SPEC06fp for the last few commits: qemu-aarch64 SPEC06fp (test set) speedup over = QEMU 4c2c1015905 Host: Intel(R) Core(TM) i7-6700K CPU @= 4.00GHz error bars: 95% confidence inter= val 6 +-+---+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----= +-----+-----+----+-----+-----+-----+---+-+ 5 +-+..........................+++.......................................= .......................................+-+ 4 +-+...........................@@=3D+...................................= ...........................+addsub +-+ 3 +-+........+++++.+++++........@@=3D+............+++++...............+++= ........................+++++++++++ +-+ | +%@&+ |&& %%@&+ +%%@=3D +%%&=3D++%%&=3D +%%&=3D = +++ +++++ ++++++%%@=3D++%%&=3D +%%&=3D ++++ | 2 +-+..+%@&++%%@&.+%%@&+$$%@=3D+#$%@=3D+#$%&=3D##$%&=3D*#$%&=3D.+%@&=3D..= .+=3D=3D##%@&++%%@&+++++++$$%@=3D**$%@=3D*#$%&=3D*+f%&=3D##$@&=3D+-+ 1 +-+**#$@&**#%@&**#%@&**$%@=3D**$%@=3D**$%&=3D*#$%&=3D*#$%&**#$@&**#$@&*= *#%@&**#%@&**#%@=3D**$%@=3D**$%@=3D*#$%&=3D+sqr&=3D*#$@&=3D+-+ 0 +-+**#$@&**#%@&**#%@&**$%@=3D**$%@=3D**$%&=3D*#$%&=3D*#$%&**#$@&**#$@&*= *#%@&**#%@&**#%@=3D**$%@=3D**$%@=3D*#$%&=3D*+cm&=3D*#$@&=3D+-+ 416.game433.434.435.436.cac437.leslie444.447.de450.so453.454.ca459.Ge= msF465.ton470.lb48482.sph+f32f64ean qemu-aarch64 NBench score; higher is= better Host: Intel(R) Core(TM) i7-6700K CPU @= 4.00GHz 16 +-+-------------------+---------------------+----------------------+--= -------------------+-------------------+-+ 14 +-+..........................................+++++++***............+++= ..+++++................................+-+ 12 +-+.........................................@@@@&&=3D=3D=3D+*.........= ...@@@&&&=3D=3D**..................+before +-+ 10 +-+.........................................@..@.&..=3D.*............@= .@..&.=3D.*............@@@&&&=3D=3D***ub +-+ 8 +-+.....................................++++@..@.&..=3D.*............@= .@..&.=3D.*............@+@..&+=3D +*ul +-+ 6 +-+...................@@@@&&=3D=3D=3D**..++###$$$%%..@.&..=3D.*..***##= #$$++@.@..&.=3D.*.......$$$%%%.@..&+=3D +*iv +-+ 4 +-+............###$$$%%..@.&..=3D.*..***.#..$.%..@.&..=3D.*..*+*..#+$%= %%.@..&.=3D.*..***###+$++%.@..&+=3D +*ma +-+ 2 +-+.........****.#..$.%..@.&..=3D.*..*.*.#..$.%..@.&..=3D.*..*.*..#.$.= .%.@..&.=3D.*..*.*..#.$..%.@..&+=3D+s*rt +-+ 0 +-+---------****##$$$%%@@@&&=3D=3D=3D**--***##$$$%%@@@&&=3D=3D=3D**--*= **###$$%%%@@&&&=3D=3D**--***###$$%%%@@&&&=3D=3D***mp-------+-+ FOURIER NEURAL NET LU DECOMPOSITION = gmean +f32f64 Images in png: https://imgur.com/a/rkuZW Signed-off-by: Emilio G. Cota --- fpu/softfloat.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 2b86d73..d0f1f65 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -3660,7 +3660,8 @@ float128 uint64_to_float128(uint64_t a, float_status = *status) | Arithmetic. *-------------------------------------------------------------------------= ---*/ =20 -float64 float32_to_float64(float32 a, float_status *status) +static float64 __attribute__((noinline)) +soft_float32_to_float64(float32 a, float_status *status) { flag aSign; int aExp; @@ -3685,6 +3686,20 @@ float64 float32_to_float64(float32 a, float_status *= status) =20 } =20 +float64 float32_to_float64(float32 a, float_status *status) +{ + if (likely(float32_is_normal(a))) { + float f =3D *(float *)&a; + double r =3D f; + + return *(float64 *)&r; + } else if (float32_is_zero(a)) { + return float64_set_sign(float64_zero, float32_is_neg(a)); + } else { + return soft_float32_to_float64(a, status); + } +} + /*------------------------------------------------------------------------= ---- | Returns the result of converting the single-precision floating-point val= ue | `a' to the extended double-precision floating-point format. The convers= ion --=20 2.7.4