From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211477; cv=none; d=zohomail.com; s=zohoarc; b=NHPEweTnp7E8ucYvmRuiH98FjXMR7zTwDrsKt6H0OC2oI/h4GjS0kt5+GqsO2Xc9FIzZ0Bak/nge33AQPhf+WAqeKEahVEtvIpdf9sPZLgMLAq/m/fySnuPXeLuMeplv3W/Tfnajk3WHUTkHxxs6lml4hZLYbb2y2In3xMM25+w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211477; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PKtv+p36Hy41OyLkt25kLH4CmBx913v33ogitpjaG94=; b=jj2Y7+mkILyG2msH/fiXoBHRFEOV+bjTXmnXHEEZr9y+/LkoQZ40dBlG0Umro+GB43Y+v/B36dl7mSt+6ODaJN0oEYCNyrHknYMPub+wzH34xqcm2ZjxWAlPqikL7DFwwI83FRIBkzIHh2oIg9k34tDuSvLMsSVdOpkUpRvlpKE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721147713257.241148388486636; Sun, 26 Apr 2026 06:51:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzis-0006wX-C7; Sun, 26 Apr 2026 09:40:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGziY-0006kW-UK for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:16 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGziX-0008F5-0I for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:14 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-c76cce85bd9so3529160a12.1 for ; Sun, 26 Apr 2026 06:40:12 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210811; x=1777815611; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PKtv+p36Hy41OyLkt25kLH4CmBx913v33ogitpjaG94=; b=iluiijfz9KXD3wweyOpHYNQw9bD/u8u3WyvW87JCfLjMvNUGGp8z3JpLE8w7l+a7/U 4PtJOSP7wnWxWv2u065xUHI4jRkcKRfdZg2L5e00QlzckxHk9Pu8b00oE4uZNiYoCahK Lz2eso94fKcqHG4PRuTax39MXohnJh3weox9Zh2qZ863JSee+No+131G5wzSZgvvuXNA /UxQPgk9pyo/glc3+dpz4ior16U8KHs8CJTokgNGLAd61yViBjUllzqDPLGNT4NaqJuM +BkNLeDZnWgA+7ce5O0oWftpFFt7M3+AtLjULG7gKUASGBXNCwrGVsZ3A+e1m34wTUY8 YS5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210811; x=1777815611; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=PKtv+p36Hy41OyLkt25kLH4CmBx913v33ogitpjaG94=; b=LqEjt2BxmNl3T9GZt9xOsBpkgXbYJRMPo5JhQscvquHeeqU5RZnB7tAgGTiJCkJS+C j7N4ALLwzBIS4ayQ8AHgGvm4i58WADHDzkjLmTDqrRvc9qt4pNkRhGjUbOsT9WY36mY8 3cZGytCqYXd+j7lp+7rGVq+pAPtWqoR0bqfHWQ4RVO/waNSSC4z3XL3ztLfDgK2YDTHK cNM+viUR50vFU//x39lttMNPbFhX4ZDJkXVb9AAg/dRx7NoiCHZxGcwbw61F9Ai7fw4O d8Ym5rea6W97/emcMQ3Ty+sbTpfVEK1LwY80ZzORJOkqaeJxRv0znYKZ5SnOWdFE+pQm XHiA== X-Gm-Message-State: AOJu0YzsGQbPYKmAQzmpIGXEL8eOBe6ASVwsLWMGjmFComMnwDZbI33V IHTYcqo/gTQK/B1jLJzsiZQlW8xtLYgUKoKQGWMGGN/sBC8WI1zHkv9soi14KoXgeDocxrE7E7c p7m2L55U= X-Gm-Gg: AeBDies2+0are1PB49oZ9wRWbMK61sYQDJmkacuqHprjl+PUEVdFaWeaoysbaJV0AdC cN/mHGpfzFOx4+UqCzsf08aGW6q145+nlt7eizckZCITxwpKaq6FBTd6VnvhuI/woLvfKKIIgUZ evyakadx7vkPwa/DrER8/Z3QBwvnRpCSaCIr8jYvqtHWoSXKb7VJXIUEYJTAKGJ3t6iXc85l4W5 JBeZ6yGES+cXfhYb987iuL4gH0qq52ya0UNllkNCcFimjSrlGF9ggiAVYoPVGhmjAc7VTg0Xmwh 0XrS8ESwfuPx9DADDLmyIwo2abNXQgRT35vxtMWeDIZhkPgUP4wRFLOObOkSYt7orKDXEz9xJnv gewPVLCuu/8ZgJFNF+ulJC/C3XXxgqqyPifRUid1lczJMqWqQbeWZOh4TPS4QD6VxGrUiRywMiW 2eGgObr/gtrBR3mpXn442lsVLWtL45TPy+JjNdT4HQ X-Received: by 2002:a17:903:1a4e:b0:2b0:4aeb:dedc with SMTP id d9443c01a7336-2b5f9f1c60cmr397206465ad.26.1777210811416; Sun, 26 Apr 2026 06:40:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 01/84] fpu: Drop parts_canonicalize Date: Sun, 26 Apr 2026 23:38:38 +1000 Message-ID: <20260426134002.865628-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211479440154100 Content-Type: text/plain; charset="utf-8" Use the specific parts{64,12}_canonicalize at each site. Drop the forward declarations. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 91c34307c8..f9997f5236 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -806,14 +806,6 @@ static FloatParts128 *parts128_pick_nan_muladd(FloatPa= rts128 *a, #define parts_pick_nan_muladd(A, B, C, S, ABM, ABCM) \ PARTS_GENERIC_64_128(pick_nan_muladd, A)(A, B, C, S, ABM, ABCM) =20 -static void parts64_canonicalize(FloatParts64 *p, float_status *status, - const FloatFmt *fmt); -static void parts128_canonicalize(FloatParts128 *p, float_status *status, - const FloatFmt *fmt); - -#define parts_canonicalize(A, S, F) \ - PARTS_GENERIC_64_128(canonicalize, A)(A, S, F) - static void parts64_uncanon_normal(FloatParts64 *p, float_status *status, const FloatFmt *fmt, bool saturate); static void parts128_uncanon_normal(FloatParts128 *p, float_status *status, @@ -1723,28 +1715,28 @@ static void float4_e2m1_unpack_canonical(FloatParts= 64 *p, float4_e2m1 f, float_status *s) { float4_e2m1_unpack_raw(p, f); - parts_canonicalize(p, s, &float4_e2m1_params); + parts64_canonicalize(p, s, &float4_e2m1_params); } =20 static void float8_e4m3_unpack_canonical(FloatParts64 *p, float8_e4m3 f, float_status *s) { float8_e4m3_unpack_raw(p, f); - parts_canonicalize(p, s, &float8_e4m3_params); + parts64_canonicalize(p, s, &float8_e4m3_params); } =20 static void float8_e5m2_unpack_canonical(FloatParts64 *p, float8_e5m2 f, float_status *s) { float8_e5m2_unpack_raw(p, f); - parts_canonicalize(p, s, &float8_e5m2_params); + parts64_canonicalize(p, s, &float8_e5m2_params); } =20 static void float16a_unpack_canonical(FloatParts64 *p, float16 f, float_status *s, const FloatFmt *par= ams) { float16_unpack_raw(p, f); - parts_canonicalize(p, s, params); + parts64_canonicalize(p, s, params); } =20 static void float16_unpack_canonical(FloatParts64 *p, float16 f, @@ -1757,7 +1749,7 @@ static void bfloat16_unpack_canonical(FloatParts64 *p= , bfloat16 f, float_status *s) { bfloat16_unpack_raw(p, f); - parts_canonicalize(p, s, &bfloat16_params); + parts64_canonicalize(p, s, &bfloat16_params); } =20 static float8_e4m3 float8_e4m3_round_pack_canonical(FloatParts64 *p, @@ -1801,7 +1793,7 @@ static void float32_unpack_canonical(FloatParts64 *p,= float32 f, float_status *s) { float32_unpack_raw(p, f); - parts_canonicalize(p, s, &float32_params); + parts64_canonicalize(p, s, &float32_params); } =20 static float32 float32_round_pack_canonical(FloatParts64 *p, @@ -1815,7 +1807,7 @@ static void float64_unpack_canonical(FloatParts64 *p,= float64 f, float_status *s) { float64_unpack_raw(p, f); - parts_canonicalize(p, s, &float64_params); + parts64_canonicalize(p, s, &float64_params); } =20 static float64 float64_round_pack_canonical(FloatParts64 *p, @@ -1878,7 +1870,7 @@ static void float128_unpack_canonical(FloatParts128 *= p, float128 f, float_status *s) { float128_unpack_raw(p, f); - parts_canonicalize(p, s, &float128_params); + parts128_canonicalize(p, s, &float128_params); } =20 static float128 float128_round_pack_canonical(FloatParts128 *p, @@ -1910,7 +1902,7 @@ static bool floatx80_unpack_canonical(FloatParts128 *= p, floatx80 f, floatx80_unpack_raw(p, f); =20 if (likely(p->exp !=3D floatx80_params[floatx80_precision_x].exp_max))= { - parts_canonicalize(p, s, &floatx80_params[floatx80_precision_x]); + parts128_canonicalize(p, s, &floatx80_params[floatx80_precision_x]= ); } else { /* The explicit integer bit is ignored, after invalid checks. */ p->frac_hi &=3D MAKE_64BIT_MASK(0, 63); @@ -5611,7 +5603,7 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, parts_uncanon(r, status, fmt, false); r_flags =3D status->float_exception_flags; r->frac &=3D (1ULL << fmt->frac_size) - 1; - parts_canonicalize(r, status, fmt); + parts64_canonicalize(r, status, fmt); =20 /* POp table "Results: DIVIDE TO INTEGER (Part 2 of 2)" */ if (is_q_smallish) { --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211390; cv=none; d=zohomail.com; s=zohoarc; b=clodUFetHAvUwJVp+Ktj4Rzgmdw5P1XxSVA7j9dryC/Ngbe15buE/lMvLhZcA0Xg+Kxy5NgiLERL9ufNNbB9yRxRjwunrlSKAzQ6Hq6y/bhxkafIv5TZ7jHc7povMJIqVni4gUHULO+PgKkAtJQs9PBCcXm7531OFZPghDOkSKU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211390; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2jIspN7Eqx+KKzfnFI2Tg1oMhKcfN1oaYCYjnDfppv8=; b=YWdC9r1z/QEjBDI3dU6GK5cLUXFquQ6hbW4hm0rnGKrgAF000X3j92163m4kfyilN6b/mv2Vq1j6etz8FPBYCR94RGM/VYEqMxZuKq6o3MwYZsRlreIG39oqMhkBw0Uf0idlFymQ7az5yqyRnb5OsIKAt+6I1b5V3eC9C0/2Oo8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211390385395.9231957313219; Sun, 26 Apr 2026 06:49:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzis-0006w3-9p; Sun, 26 Apr 2026 09:40:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzie-0006qY-6v for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:20 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzia-0008Fs-Pu for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:19 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2a8fba3f769so41654215ad.2 for ; Sun, 26 Apr 2026 06:40:15 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210814; x=1777815614; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2jIspN7Eqx+KKzfnFI2Tg1oMhKcfN1oaYCYjnDfppv8=; b=cGkoZjkkewP78dNyhMh/9+FicRJlOqtY2l0cqD8Pg2MbImOvyVwC2ABO9LK4GbN7G4 1K7ZxiOnRasUt4moJnj4lCI+AJ6PxuT+bo7o3pOgmbCzzAvBri4a/LxRWnVzl265E/Qb xW6VmP3xX2LM5OoZJ/EFi8cvJGzY8jVGanqMy5LB3M96JqXJiniDEbbiKcmgQ7YuMzRC rVEYxCeJAhM9qIQCuR6WWA2I4S4U//u22U53Fz4qzwaJXnJaft4Y4ktdHz2VsEnUhLGO jfJrFyMPTgCBo3wQHL80D+4EKvtzllYtWe1xJHDx9jyPImXMKvymnh+1TJjeUYIpuqJY AOXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210814; x=1777815614; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=2jIspN7Eqx+KKzfnFI2Tg1oMhKcfN1oaYCYjnDfppv8=; b=FWBaa0i7mSa9WgXqXHdGfoMuP7+C9qo0rLTDZZeX2+bKSY0w3nJV2SwtEkjFJbEekJ +8SvQalYE/29X83coSi3/Hj3RyAt87IdcXH5/l9ptAjVoSX6iffkLEZEoDAW/u+zvPWi ZKBJCHD67pUI8be/g3XgCBgp3PhXn+BLZHO9Mo2O8x+lfscPVKVxc9XTeQcK8a8MtfuX VhB1i8Cc/KuUdQYLpsQE2cugl9fi8hu3JqmD4PjzIUeX0Ls2tL56MYwnNw7PNFo1MRc7 HJr8QnYZt5Gc+YPzFS3Rdz6vIZh1GY85zCCoQRzpX3CXecPzHa0+iWrXwSAlnLJ9acSR 6zTA== X-Gm-Message-State: AOJu0YwpjBO7PgvKhAxsd3nEBukI+wy0afj0osnCX0XkvC3jTWH3R1vw QD+5rBw7Em4X9fCRuT+3XMcwdSNXUAy5HlQ41NE0fe9Upe+Bua87zP0FUrJiUZHs9monsbWLCo2 JUMClnUA= X-Gm-Gg: AeBDietKJgmrL5lbwmcazDdqVDuB4fNSAn3Aywl65Boa6SdFW1eMfRxJRRr+IGeVWjA 38cIGMlzvrOIA4tJwFOdDjMpUepcjX3ynOjFxPKhClmp3tkye6aRE7e6uE6f4RPS7lOC4xrnnsc 2yBXYlCsh5s0LpGC6NXan7dlQdQxV01+fpD1uvSvMZYHwsG3ak6y22sJxjTSSS7lor8Wbjp0wDB qCA9CkxLbLktxZNmp/1gsAbpS500jxyTqkxCZM647BRF8AJpgSyauW98xSZXEy+meGU2zXKhiVo 4p1wt79NIk9XLC5BNs0vvnaFrLV3OrqOyK40KaYEp9hpRvZJlemWSU2ZdRVHzzq8xcigshVbbww 6hZfpXTUiejOkqvh2MW3Cdh5NCOiNmArEQxDXh0mmiMQAmPL7bz4JbSnX79rV2TjZHws5l0D71Q 8Twlx49qS5+ESb+0WwpKZowoDNpJ8gsCitiZlySZKP X-Received: by 2002:a17:903:3905:b0:2b0:7e4d:f43f with SMTP id d9443c01a7336-2b5f9ffe73amr379940045ad.41.1777210814005; Sun, 26 Apr 2026 06:40:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 02/84] fpu: Drop parts_uncanon Date: Sun, 26 Apr 2026 23:38:39 +1000 Message-ID: <20260426134002.865628-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211391610158500 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_uncanon at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 44 ++++++++++++++++++-------------------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index f9997f5236..7c13a7848e 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -814,14 +814,6 @@ static void parts128_uncanon_normal(FloatParts128 *p, = float_status *status, #define parts_uncanon_normal(A, S, F, X) \ PARTS_GENERIC_64_128(uncanon_normal, A)(A, S, F, X) =20 -static void parts64_uncanon(FloatParts64 *p, float_status *status, - const FloatFmt *fmt, bool saturate); -static void parts128_uncanon(FloatParts128 *p, float_status *status, - const FloatFmt *fmt, bool saturate); - -#define parts_uncanon(A, S, F, X) \ - PARTS_GENERIC_64_128(uncanon, A)(A, S, F, X) - static void parts64_add_normal(FloatParts64 *a, FloatParts64 *b); static void parts128_add_normal(FloatParts128 *a, FloatParts128 *b); static void parts256_add_normal(FloatParts256 *a, FloatParts256 *b); @@ -1756,7 +1748,7 @@ static float8_e4m3 float8_e4m3_round_pack_canonical(F= loatParts64 *p, float_status *s, bool saturate) { - parts_uncanon(p, s, &float8_e4m3_params, saturate); + parts64_uncanon(p, s, &float8_e4m3_params, saturate); return float8_e4m3_pack_raw(p); } =20 @@ -1764,7 +1756,7 @@ static float8_e5m2 float8_e5m2_round_pack_canonical(F= loatParts64 *p, float_status *s, bool saturate) { - parts_uncanon(p, s, &float8_e5m2_params, saturate); + parts64_uncanon(p, s, &float8_e5m2_params, saturate); return float8_e5m2_pack_raw(p); } =20 @@ -1772,7 +1764,7 @@ static float16 float16a_round_pack_canonical(FloatPar= ts64 *p, float_status *s, const FloatFmt *params) { - parts_uncanon(p, s, params, false); + parts64_uncanon(p, s, params, false); return float16_pack_raw(p); } =20 @@ -1785,7 +1777,7 @@ static float16 float16_round_pack_canonical(FloatPart= s64 *p, static bfloat16 bfloat16_round_pack_canonical(FloatParts64 *p, float_status *s) { - parts_uncanon(p, s, &bfloat16_params, false); + parts64_uncanon(p, s, &bfloat16_params, false); return bfloat16_pack_raw(p); } =20 @@ -1799,7 +1791,7 @@ static void float32_unpack_canonical(FloatParts64 *p,= float32 f, static float32 float32_round_pack_canonical(FloatParts64 *p, float_status *s) { - parts_uncanon(p, s, &float32_params, false); + parts64_uncanon(p, s, &float32_params, false); return float32_pack_raw(p); } =20 @@ -1813,14 +1805,14 @@ static void float64_unpack_canonical(FloatParts64 *= p, float64 f, static float64 float64_round_pack_canonical(FloatParts64 *p, float_status *s) { - parts_uncanon(p, s, &float64_params, false); + parts64_uncanon(p, s, &float64_params, false); return float64_pack_raw(p); } =20 static float64 float64r32_pack_raw(FloatParts64 *p) { /* - * In parts_uncanon, we placed the fraction for float32 at the lsb. + * In parts64_uncanon, we placed the fraction for float32 at the lsb. * We need to adjust the fraction higher so that the least N bits are * zero, and the fraction is adjacent to the float64 implicit bit. */ @@ -1862,7 +1854,7 @@ static float64 float64r32_pack_raw(FloatParts64 *p) static float64 float64r32_round_pack_canonical(FloatParts64 *p, float_status *s) { - parts_uncanon(p, s, &float32_params, false); + parts64_uncanon(p, s, &float32_params, false); return float64r32_pack_raw(p); } =20 @@ -1876,7 +1868,7 @@ static void float128_unpack_canonical(FloatParts128 *= p, float128 f, static float128 float128_round_pack_canonical(FloatParts128 *p, float_status *s) { - parts_uncanon(p, s, &float128_params, false); + parts128_uncanon(p, s, &float128_params, false); return float128_pack_raw(p); } =20 @@ -1924,7 +1916,7 @@ static floatx80 floatx80_round_pack_canonical(FloatPa= rts128 *p, case float_class_normal: case float_class_denormal: if (s->floatx80_rounding_precision =3D=3D floatx80_precision_x) { - parts_uncanon_normal(p, s, fmt, false); + parts128_uncanon_normal(p, s, fmt, false); frac =3D p->frac_hi; exp =3D p->exp; } else { @@ -1933,7 +1925,7 @@ static floatx80 floatx80_round_pack_canonical(FloatPa= rts128 *p, p64.sign =3D p->sign; p64.exp =3D p->exp; frac_truncjam(&p64, p); - parts_uncanon_normal(&p64, s, fmt, false); + parts64_uncanon_normal(&p64, s, fmt, false); frac =3D p64.frac; exp =3D p64.exp; } @@ -2331,7 +2323,7 @@ float16_muladd_scalbn(float16 a, float16 b, float16 c, pr =3D parts_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); =20 /* Round before applying negate result. */ - parts_uncanon(pr, status, &float16_params, false); + parts64_uncanon(pr, status, &float16_params, false); if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } @@ -2356,7 +2348,7 @@ float32_muladd_scalbn(float32 a, float32 b, float32 c, pr =3D parts_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); =20 /* Round before applying negate result. */ - parts_uncanon(pr, status, &float32_params, false); + parts64_uncanon(pr, status, &float32_params, false); if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } @@ -2375,7 +2367,7 @@ float64_muladd_scalbn(float64 a, float64 b, float64 c, pr =3D parts_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); =20 /* Round before applying negate result. */ - parts_uncanon(pr, status, &float64_params, false); + parts64_uncanon(pr, status, &float64_params, false); if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } @@ -2534,7 +2526,7 @@ float64 float64r32_muladd(float64 a, float64 b, float= 64 c, pr =3D parts_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); =20 /* Round before applying negate result. */ - parts_uncanon(pr, status, &float32_params, false); + parts64_uncanon(pr, status, &float32_params, false); if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } @@ -2552,7 +2544,7 @@ bfloat16 QEMU_FLATTEN bfloat16_muladd(bfloat16 a, bfl= oat16 b, bfloat16 c, pr =3D parts_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); =20 /* Round before applying negate result. */ - parts_uncanon(pr, status, &bfloat16_params, false); + parts64_uncanon(pr, status, &bfloat16_params, false); if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } @@ -2570,7 +2562,7 @@ float128 QEMU_FLATTEN float128_muladd(float128 a, flo= at128 b, float128 c, pr =3D parts_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); =20 /* Round before applying negate result. */ - parts_uncanon(pr, status, &float128_params, false); + parts128_uncanon(pr, status, &float128_params, false); if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } @@ -5600,7 +5592,7 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, /* Round remainder to the target format */ *r =3D *r_precise; status->float_exception_flags =3D 0; - parts_uncanon(r, status, fmt, false); + parts64_uncanon(r, status, fmt, false); r_flags =3D status->float_exception_flags; r->frac &=3D (1ULL << fmt->frac_size) - 1; parts64_canonicalize(r, status, fmt); --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211209; cv=none; d=zohomail.com; s=zohoarc; b=RmpigrsjvdBRa+Mo75iwJ++wQUtOXqm0PRe6eHIRwWyc/onJehxkH2uDG4vNX2jfI06gTGvBd5tmjaRDwtbIdFOGxGOpgItZ4fyUOnBvAtD5gQ1iAA6DOZRXI73K39mnu2DjAmTi1cOU7Q1rmI/4gb+P3fiTz8lM2gHj3lmy6bg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211209; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=e/MQvoUvAYu+yjHEPgbSDsDM+i+7vZ7bw4Zw94qnE14=; b=X7cwGmu7bAUyWeIis2Y/MSTw/L1YdSsJaoT/Xc1Zty1ptMYfctggxi48y6x3GsI1K5F8YySQfZ2auVN9wj9pOABAWU1o3jnfYFeCciXYXvOoB16Y96oqIERd2NdpI45neONHTZVMlwajcxGXfsIUOk5k4KrFFUeeQUVh12gerhU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721120914830.502381536340977; Sun, 26 Apr 2026 06:46:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGziv-0006yA-Ej; Sun, 26 Apr 2026 09:40:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzid-0006qO-TZ for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:20 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzic-0008GR-Ce for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:19 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2ad617d5b80so54568745ad.1 for ; Sun, 26 Apr 2026 06:40:17 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210816; x=1777815616; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=e/MQvoUvAYu+yjHEPgbSDsDM+i+7vZ7bw4Zw94qnE14=; b=Xp4XTg/LrTM8okfHj9KN8yuao49JKS9rv/+JS48NUrMVRJwuVTO8IiRIgog7hcbRzx QnUQym6QPXq1C0hVDQmVz75llq2B0wo43BMK7cmpqTroJIGr2rm+Vl2lN1kgVt+eWWkj MO3W7n3wBCQxRMCIzS8aYh4/ilmOLnxi4/RJQYF6t3RHMQQ5Mt3HaHi6pjHGOup4MQ1n Z9HhbwznGk/p6pbfisqA+CwwtbpyiTi3Zzbnm+k4/zuMve2eXztAFmaQnSajbGDxuR1k B7poPcWoRyRDR7ts075RoDjKazPX+hBxSaJ1Q74Lnt75g7ZXBuYXGW2vbIId6VWqt+JS XRVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210816; x=1777815616; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=e/MQvoUvAYu+yjHEPgbSDsDM+i+7vZ7bw4Zw94qnE14=; b=sHHcamsKQeDK5oFEIZCTEhMD+8STr+H8dXf0LvKZKoEB+h/dr/YVG59Vuefmkl5uk3 GQyxnPavKUfUgD40shbwCsAOLTnsw6taisEm20bKkaJSTh79bM41D1NfP5KzZ57pSNIM +APTqO/JPoGx0XZ2G+HsfPPhHD5Mf12Wj+CvPrRa+rEVM3p5S5W0YS/VQjXKNDain0bz tWuC8Kajv2M4mryrh2qDCzjfWHZMySJ0Cf3Rpl6V+nDgW5w8S9DbHdqo3jnlGGTT0C6K FMPJYiI88kmy7uvMrB8g0wyrPDTdqRwXgicKbUEDogegTrEtNu1i68F2BeQG6ylukC9G ObVg== X-Gm-Message-State: AOJu0Ywea3V6qZhpLDFzjnars7X020LeHTAl3MD2Nm1wSu5Ifidrl/aQ JF9tyMPLPKQ8Q62iHYxiMtZYT/trkvdLxT3+Ml+Ntf+wP/7UkBCZF1CkHYOdNAnEUap9pgdRk/5 RgQSlj9o= X-Gm-Gg: AeBDieuyQgfEuUCAq0i4KeBdPie2F/xsW3djLA8NSubqaq0J0ZcDezi5AslUJqSS/zb ZOcTToLp0PD+YDKyo3CVBTVqobHbvIyUOQwMxqEL4p8UVT9jnzE/M/QEYF3uWWW1durSkphcbRH /ll4kkyWa02DjOmaWCXRi5cSdaXBj/d1KFfV3EBlm/7vVmN6NCGz5o9eSJLBOBlQH3WYyObDQHl eXC5OqKsBwQ8QDBEEH15U5dGiXBSI43iX54CofRt823dH2mzzxkl7bgZGuGs4EjINC8KJNhzyaC Ien7FD592Yw7/VUuskFNji3pGAabY5tpLUDF3mnCH806o91E8S+DlpQ/rSfc1OSZD5l+9AE6vCY w6oF8PLPzCm9aHMHFM/snZ7PTIS9IwsujvBwWeiUNLhxaSvlE+n0fhSloeFZgjA8wiPDvE2fy/F OCjzC2QhfKWZq8tMf2dtu0yDcCZ/OweMJjOV6lUpNg X-Received: by 2002:a17:903:3805:b0:2b2:4dd2:dcf5 with SMTP id d9443c01a7336-2b5f9f527famr392838925ad.20.1777210816513; Sun, 26 Apr 2026 06:40:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 03/84] fpu: Drop parts_uncanon_normal Date: Sun, 26 Apr 2026 23:38:40 +1000 Message-ID: <20260426134002.865628-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211210930158500 Content-Type: text/plain; charset="utf-8" Use partsN(uncanon_normal) and the single call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 8 -------- fpu/softfloat-parts.c.inc | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 7c13a7848e..4876a8bb27 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -806,14 +806,6 @@ static FloatParts128 *parts128_pick_nan_muladd(FloatPa= rts128 *a, #define parts_pick_nan_muladd(A, B, C, S, ABM, ABCM) \ PARTS_GENERIC_64_128(pick_nan_muladd, A)(A, B, C, S, ABM, ABCM) =20 -static void parts64_uncanon_normal(FloatParts64 *p, float_status *status, - const FloatFmt *fmt, bool saturate); -static void parts128_uncanon_normal(FloatParts128 *p, float_status *status, - const FloatFmt *fmt, bool saturate); - -#define parts_uncanon_normal(A, S, F, X) \ - PARTS_GENERIC_64_128(uncanon_normal, A)(A, S, F, X) - static void parts64_add_normal(FloatParts64 *a, FloatParts64 *b); static void parts128_add_normal(FloatParts128 *a, FloatParts128 *b); static void parts256_add_normal(FloatParts256 *a, FloatParts256 *b); diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 3c323c0cec..948eb7bd6a 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -482,7 +482,7 @@ static void partsN(uncanon)(FloatPartsN *p, float_statu= s *s, const FloatFmt *fmt, bool saturate) { if (likely(is_anynorm(p->cls))) { - parts_uncanon_normal(p, s, fmt, saturate); + partsN(uncanon_normal)(p, s, fmt, saturate); } else { switch (p->cls) { case float_class_zero: --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211194; cv=none; d=zohomail.com; s=zohoarc; b=T2kzVQL83KkSwpMnVuCglKgk66nJ331kcOla9VnouwF57u+kELeYTO41ZJLK2S4ZuHlOW8jQQ6xHUZJT9S7VN36q2XmNxSAoSI8X06PP7/1Iuax2a4LwJuOOmWlIBlbg44REaJEX68ndR6ZhowCeYl1+5kM3SrwFtYlezWMDcV0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211194; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wkmJsSnzSIeu5aRXxhdaCCtrL9SrqbsTI14aS+J1vKY=; b=Rrkv7aX3rtKeJ+pGxrn5JKiw+gOvzDhcVvWFsthzmg/t8Xg+GdCRE6llXmsHDgkcj7J6y1OMYz6ZfwWYGD5Yl15eM2fGx3XbPMiN6VF9t+tNLcp1F/8PaP8XrCiKerU1VCIPyN6nrt1OUrp2Yc3WuBePB36cQMTOm+b5io2Spf0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211194056308.3714463982444; Sun, 26 Apr 2026 06:46:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzix-00071E-Px; Sun, 26 Apr 2026 09:40:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzig-0006sk-RJ for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:23 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzie-0008Gz-Qa for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:22 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2ab46931cf1so70757525ad.0 for ; Sun, 26 Apr 2026 06:40:20 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210819; x=1777815619; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wkmJsSnzSIeu5aRXxhdaCCtrL9SrqbsTI14aS+J1vKY=; b=gCqTIaqgBcFXbgxd5O5WwlXUC7zl++LqUqdvJVFsNcdSTzP9ogHEzCrlIg3sOpHiz4 FEDmFc+ieU4WRktixM3kq1zCmhaiQpBUOltll3EIKhyLXJuaD2b+UMB2BhD02yTZ/Rw0 XrYYwU1FIjTk1x+0IEUA9zlrAE0U/UfWY41gpgXzmYzuhGFlPW9ukbTRLYAGohN6p96B T18dU+60hMXINkh9D1QUjRMJjItzoCHPYm86SfgMKErz0/O8T7V6QT7Z7b2nzPY8Diof +dTZa3grknqmJJC9PPjSf9qRNTrQFPHXPi3XKRaMPoIU43CqDKFrQoki15E/vTtOEvsu B4pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210819; x=1777815619; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wkmJsSnzSIeu5aRXxhdaCCtrL9SrqbsTI14aS+J1vKY=; b=cfsDnxRnsm3TQx+xOkEX43l7flsOqzMLCi1GhMNIm5WtNdGFmDDoPoSjmfHXd02mrt sz5AV4gmkiOdvd7kYApKrGjDY6yQTRPqKaJIwpVfZGJ027sEqV5cDo1qEqeD5TeQCp59 7rprqOhr76VwnR5aWZr/QMRNjxVtsSvmNp0h2IYP9WgEzf9clfa9PZfKvAQE3yxeE0/K 3xwC4VUL34Ob8/54IIx2OUGoTWKmVtGRfysoi4UBrMOwlh54GTN3/Hyv3iMn1kgsrAc+ wjLhg/atdTV1ed6O/Cme0ChzOX+A5B0Eo3hH02HBBsvc66ev81Qm4K2ra2nNHHjGef9C efqw== X-Gm-Message-State: AOJu0YzARY2uMFtdVQuGMypY2JTcO4dFlaE0KnP5HPQCquKf9ysgZlni 0qeyvAk2+5ghW1xv+4nm6vGsxiKM7WA6fq0ybhKa3XQF0qF4azwDKC1TyV+YgnOlAB2LfI6jUho wQwJ2eX8= X-Gm-Gg: AeBDietCUVYmzTzpgyCCXQOfo1YBsUkNpzYig0piZKVylSCOky9aylTNEV1sgLFYRq4 X71TMZsmCzwUQCSZ0pC+W0DLICloufpAPgLBoSX6qG4j/KC7lTExxyk3MyvfF0PB24OR0GMtXTM E+m9RcTThWfraj/NjWpzV2ZWahm+ME4L3MEPhp1mj2XLVg9+HLdttn/zDf0tcHQZZn3AFE23A7U vQHuNKMnndaIpxGHpyY0FqwVHMBJoSjRp6uR3fJbKEAXWB66F43iahEpASGElVogZZ5rO4roctY HO7971cgxolVei9NpFdVyvfxTvlkIpa/Bs9WXyGuN6tzOeWWJoLJXJMR2wYzBZn0RypC4Pj4pwk DS23v1usJA5Ab8WyiWlXtmM1yOHX87wIhVq8lmoiSa5/cevm2hLBjLGOsa20XYdUc5syFvqDsvb i5YXp+hIayy0WJgM3VGltk1B9rmGcijm9U83bzfLoGQ1oLVeeRBYQ= X-Received: by 2002:a17:903:3910:b0:2b7:88f9:9c28 with SMTP id d9443c01a7336-2b788f9a0c6mr204799165ad.5.1777210819079; Sun, 26 Apr 2026 06:40:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 04/84] fpu: Drop parts_default_nan Date: Sun, 26 Apr 2026 23:38:41 +1000 Message-ID: <20260426134002.865628-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211194975158500 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_default_nan at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 23 +++++++++++------------ fpu/softfloat-parts.c.inc | 24 ++++++++++++------------ 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 4876a8bb27..76c1d4e38a 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,7 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const Fl= oatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -#define parts_default_nan(P, S) PARTS_GENERIC_64_128(default_nan, P)(P,= S) #define parts_silence_nan(P, S) PARTS_GENERIC_64_128(silence_nan, P)(P,= S) =20 static void parts64_return_nan(FloatParts64 *a, float_status *s); @@ -3156,7 +3155,7 @@ float32 floatx80_to_float32(floatx80 a, float_status = *s) if (floatx80_unpack_canonical(&p128, a, s)) { parts_float_to_float_narrow(&p64, &p128, s); } else { - parts_default_nan(&p64, s); + parts64_default_nan(&p64, s); } return float32_round_pack_canonical(&p64, s); } @@ -3169,7 +3168,7 @@ float64 floatx80_to_float64(floatx80 a, float_status = *s) if (floatx80_unpack_canonical(&p128, a, s)) { parts_float_to_float_narrow(&p64, &p128, s); } else { - parts_default_nan(&p64, s); + parts64_default_nan(&p64, s); } return float64_round_pack_canonical(&p64, s); } @@ -3181,7 +3180,7 @@ float128 floatx80_to_float128(floatx80 a, float_statu= s *s) if (floatx80_unpack_canonical(&p, a, s)) { parts_float_to_float(&p, s); } else { - parts_default_nan(&p, s); + parts128_default_nan(&p, s); } return float128_round_pack_canonical(&p, s); } @@ -3486,7 +3485,7 @@ static int32_t floatx80_to_int32_scalbn(floatx80 a, F= loatRoundMode rmode, FloatParts128 p; =20 if (!floatx80_unpack_canonical(&p, a, s)) { - parts_default_nan(&p, s); + parts128_default_nan(&p, s); } return parts_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s); } @@ -3497,7 +3496,7 @@ static int64_t floatx80_to_int64_scalbn(floatx80 a, F= loatRoundMode rmode, FloatParts128 p; =20 if (!floatx80_unpack_canonical(&p, a, s)) { - parts_default_nan(&p, s); + parts128_default_nan(&p, s); } return parts_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s); } @@ -4984,7 +4983,7 @@ float16 float16_default_nan(float_status *status) { FloatParts64 p; =20 - parts_default_nan(&p, status); + parts64_default_nan(&p, status); p.frac >>=3D float16_params.frac_shift; return float16_pack_raw(&p); } @@ -4993,7 +4992,7 @@ float32 float32_default_nan(float_status *status) { FloatParts64 p; =20 - parts_default_nan(&p, status); + parts64_default_nan(&p, status); p.frac >>=3D float32_params.frac_shift; return float32_pack_raw(&p); } @@ -5002,7 +5001,7 @@ float64 float64_default_nan(float_status *status) { FloatParts64 p; =20 - parts_default_nan(&p, status); + parts64_default_nan(&p, status); p.frac >>=3D float64_params.frac_shift; return float64_pack_raw(&p); } @@ -5011,7 +5010,7 @@ float128 float128_default_nan(float_status *status) { FloatParts128 p; =20 - parts_default_nan(&p, status); + parts128_default_nan(&p, status); frac_shr(&p, float128_params.frac_shift); return float128_pack_raw(&p); } @@ -5020,7 +5019,7 @@ bfloat16 bfloat16_default_nan(float_status *status) { FloatParts64 p; =20 - parts_default_nan(&p, status); + parts64_default_nan(&p, status); p.frac >>=3D bfloat16_params.frac_shift; return bfloat16_pack_raw(&p); } @@ -5537,7 +5536,7 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, *n =3D *r; *cc =3D 1; } else if (a->cls =3D=3D float_class_inf || b->cls =3D=3D float_class_= zero) { - parts_default_nan(r, status); + parts64_default_nan(r, status); *n =3D *r; *cc =3D 1; status->float_exception_flags |=3D float_flag_invalid; diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 948eb7bd6a..37ce731101 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -21,14 +21,14 @@ static void partsN(return_nan)(FloatPartsN *a, float_st= atus *s) case float_class_snan: float_raise(float_flag_invalid | float_flag_invalid_snan, s); if (s->default_nan_mode) { - parts_default_nan(a, s); + partsN(default_nan)(a, s); } else { parts_silence_nan(a, s); } break; case float_class_qnan: if (s->default_nan_mode) { - parts_default_nan(a, s); + partsN(default_nan)(a, s); } break; default: @@ -49,7 +49,7 @@ static FloatPartsN *partsN(pick_nan)(FloatPartsN *a, Floa= tPartsN *b, } =20 if (s->default_nan_mode) { - parts_default_nan(a, s); + partsN(default_nan)(a, s); return a; } =20 @@ -184,7 +184,7 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN= *a, FloatPartsN *b, return ret; =20 default_nan: - parts_default_nan(a, s); + partsN(default_nan)(a, s); return a; } =20 @@ -281,7 +281,7 @@ static void partsN(uncanon_e4m3_overflow)(FloatPartsN *= p, float_status *s, p->exp =3D fmt->exp_max; p->frac_hi =3D E4M3_NORMAL_FRAC_MAX; } else { - parts_default_nan(p, s); + partsN(default_nan)(p, s); } } =20 @@ -568,7 +568,7 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Floa= tPartsN *b, } /* Inf - Inf */ float_raise(float_flag_invalid | float_flag_invalid_isi, s); - parts_default_nan(a, s); + partsN(default_nan)(a, s); return a; } } else { @@ -641,7 +641,7 @@ static FloatPartsN *partsN(mul)(FloatPartsN *a, FloatPa= rtsN *b, /* Inf * Zero =3D=3D NaN */ if (unlikely(ab_mask =3D=3D float_cmask_infzero)) { float_raise(float_flag_invalid | float_flag_invalid_imz, s); - parts_default_nan(a, s); + partsN(default_nan)(a, s); return a; } =20 @@ -796,7 +796,7 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *= a, FloatPartsN *b, goto finish_sign; =20 d_nan: - parts_default_nan(a, s); + partsN(default_nan)(a, s); return a; } =20 @@ -864,7 +864,7 @@ static FloatPartsN *partsN(div)(FloatPartsN *a, FloatPa= rtsN *b, return a; =20 d_nan: - parts_default_nan(a, s); + partsN(default_nan)(a, s); return a; } =20 @@ -896,7 +896,7 @@ static FloatPartsN *partsN(modrem)(FloatPartsN *a, Floa= tPartsN *b, /* Inf % N; N % 0 */ if (a->cls =3D=3D float_class_inf || b->cls =3D=3D float_class_zero) { float_raise(float_flag_invalid, s); - parts_default_nan(a, s); + partsN(default_nan)(a, s); return a; } =20 @@ -1118,7 +1118,7 @@ static void partsN(sqrt)(FloatPartsN *a, float_status= *status, =20 d_nan: float_raise(float_flag_invalid | float_flag_invalid_sqrt, status); - parts_default_nan(a, status); + partsN(default_nan)(a, status); } =20 /* @@ -1879,5 +1879,5 @@ static void partsN(log2)(FloatPartsN *a, float_status= *s, const FloatFmt *fmt) =20 d_nan: float_raise(float_flag_invalid, s); - parts_default_nan(a, s); + partsN(default_nan)(a, s); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211258; cv=none; d=zohomail.com; s=zohoarc; b=EOKFikt1/yIXloOxH9PtnS6hlU+1svYtrTcYKgtDVpBuOdbGUOS0Fzg+ZHRpXz+WF2+auanCkL2kDDbGsUpb8qQe1J9RZM6jLwN1UPtqRaBSKURfjkc4AzMieuw66YLuC3quoEoINEuyMhGZaNSPaCb1RLdtTNIkHzF02yFJpRM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211258; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9KAbrnKtdB2obY97v0/ml9qt9upYXt9w/FfYgYu/A0Y=; b=Bk4eGP5mccxpvv1D2t/y/vuZnQZCGsPN8I9JNdsHtBjoDkqfq3PJplHY+7/wCjxNRFWslLB5fiUMd0XZohu3aNzAu3xfxTIARvPGfbzkb1gJYv+nmARJXwtfO6biQTppGGKN7+pWpQ9u7CiQ46ga35zbCpvv2hAmTpRHNd7V2u0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211258253418.61550393394907; Sun, 26 Apr 2026 06:47:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzit-0006xZ-4f; Sun, 26 Apr 2026 09:40:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzil-0006tQ-99 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:28 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzih-0008JP-72 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:24 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b2ea1b3962so53559515ad.0 for ; Sun, 26 Apr 2026 06:40:22 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210822; x=1777815622; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9KAbrnKtdB2obY97v0/ml9qt9upYXt9w/FfYgYu/A0Y=; b=UdJJGtWA2UHep/T01rHJHUfx602TN0eQvhNyv6uKYiAMMveN3E+I7XHSlY2nktnPvY T/zw0B8R1EHmz5ehZhigBfQYtTKdwB6HRaDt3wi2hf5lHXxWUDQTldKYj9f6eti/wCqg CnziWP6Yr8maO+aFbTCt258eYZiOuGjn+JMczUPQS6/8o1jYu5sPIc8BDJp/gW1M8mEd r/umj8dU4G5p6z2Nb2zXzN3EDdbnd2YkqZH+lhfq6IBMviyQ1XVVR2S2BVMCke76jE1+ HQF3QKN2jilok/Qb6dsKpMjOPyJYy5H+1YJlasbGvVQWl8L/sbKLwQR/1JXY4vTeU84f 71gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210822; x=1777815622; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=9KAbrnKtdB2obY97v0/ml9qt9upYXt9w/FfYgYu/A0Y=; b=qu3ZIdAElSE2Gjc26HL8wd3vCKfxQW/H8kHBDikF+cy3eNM3Sx5jEwqwLRTNWXS0B4 qhG0PbWoyeZLQR4jcR0L44efD7qObWJ4hswlFv3zakVJgYJTmumoKnuCdVbuHF/mX/TI nlS8/DQhiCLn4RDkXtL0UfQV+SiHDMKUCZJCqh3poYAtKykP2EJGzX4ywZuuKF2DftrA rDksTExFP0jkPLlxvpK9z9ewbvOgYGtLc/Nhjm5g2CRnFnWJPI765/ZhzGMS8ycnTBrz ZN0ye3DIoE6hUdyekZwuqOUqO8dyNx2gt+TDgOU/xVeFyI79y66n/oBVMUEaaKoblCe5 Xv3g== X-Gm-Message-State: AOJu0Yzvx1txXB1jpjBSzqtZae3nKz27pOvyWDokDCOnWHSFzPqXxSmy AhOB0N4iJRaFLPlyawfeslGjjSxmOxU5GBIw1IKQ1kgiW/7/wr3Fem0/MYg68gFpmUf1YvsS3yZ y+fbA80o= X-Gm-Gg: AeBDies3o6kMWN53w7ZN4JBFNFCLkmeJtcMLDu/bGIdxjk6jywIZQBe27SCYklMpuv7 l/CPf//bJ185Mj+gsttnzayVil3W64ICqLinRg+56HJtt1tWNfK56pTVR/7vJGZRmFAmRURxNuc 8m+xVJvIDytTUu+MCb17riRMpTghUvlTsiwgaTCyfFT4dWTlLXUDCFV/Jvs52jIBo+dGyl9NBq7 OnoRe+/+8wAmF3RIbe/4SjPYYv99JlALaDjOHiF/5M2QEzhjDPbYyA7m6yY4kGGqTOeg2qh2g1C WBXtfRJjn8IIgF9Bo4ut2p/gRmyRxD/iMT7kS2fDW65iyR5XkqxMLKspMTv7uP0kmBA5WlSqnSQ aQ+OVyjwKi3UVHwfsm+x6oXK/XmsbHFtmCeKiMzYx/XlToYIvsc8JqWpzrdA7g/EkDTcjvmW4N3 rhhQ59H/PCKTBdSjbrgndIGp94IWOD3WnUuAkb5VSu X-Received: by 2002:a17:903:328b:b0:2b2:4bf9:1766 with SMTP id d9443c01a7336-2b5f9fe5d26mr312490405ad.33.1777210821683; Sun, 26 Apr 2026 06:40:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 05/84] fpu: Drop parts_silence_nan Date: Sun, 26 Apr 2026 23:38:42 +1000 Message-ID: <20260426134002.865628-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211259021158500 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_silence_nan at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 12 +++++------- fpu/softfloat-parts.c.inc | 6 +++--- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 76c1d4e38a..571b5f09f3 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,8 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const Fl= oatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -#define parts_silence_nan(P, S) PARTS_GENERIC_64_128(silence_nan, P)(P,= S) - static void parts64_return_nan(FloatParts64 *a, float_status *s); static void parts128_return_nan(FloatParts128 *a, float_status *s); =20 @@ -5034,7 +5032,7 @@ float16 float16_silence_nan(float16 a, float_status *= status) =20 float16_unpack_raw(&p, a); p.frac <<=3D float16_params.frac_shift; - parts_silence_nan(&p, status); + parts64_silence_nan(&p, status); p.frac >>=3D float16_params.frac_shift; return float16_pack_raw(&p); } @@ -5045,7 +5043,7 @@ float32 float32_silence_nan(float32 a, float_status *= status) =20 float32_unpack_raw(&p, a); p.frac <<=3D float32_params.frac_shift; - parts_silence_nan(&p, status); + parts64_silence_nan(&p, status); p.frac >>=3D float32_params.frac_shift; return float32_pack_raw(&p); } @@ -5056,7 +5054,7 @@ float64 float64_silence_nan(float64 a, float_status *= status) =20 float64_unpack_raw(&p, a); p.frac <<=3D float64_params.frac_shift; - parts_silence_nan(&p, status); + parts64_silence_nan(&p, status); p.frac >>=3D float64_params.frac_shift; return float64_pack_raw(&p); } @@ -5067,7 +5065,7 @@ bfloat16 bfloat16_silence_nan(bfloat16 a, float_statu= s *status) =20 bfloat16_unpack_raw(&p, a); p.frac <<=3D bfloat16_params.frac_shift; - parts_silence_nan(&p, status); + parts64_silence_nan(&p, status); p.frac >>=3D bfloat16_params.frac_shift; return bfloat16_pack_raw(&p); } @@ -5078,7 +5076,7 @@ float128 float128_silence_nan(float128 a, float_statu= s *status) =20 float128_unpack_raw(&p, a); frac_shl(&p, float128_params.frac_shift); - parts_silence_nan(&p, status); + parts128_silence_nan(&p, status); frac_shr(&p, float128_params.frac_shift); return float128_pack_raw(&p); } diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 37ce731101..0d4a63fbff 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -23,7 +23,7 @@ static void partsN(return_nan)(FloatPartsN *a, float_stat= us *s) if (s->default_nan_mode) { partsN(default_nan)(a, s); } else { - parts_silence_nan(a, s); + partsN(silence_nan)(a, s); } break; case float_class_qnan: @@ -109,7 +109,7 @@ static FloatPartsN *partsN(pick_nan)(FloatPartsN *a, Fl= oatPartsN *b, } =20 if (is_snan(ret->cls)) { - parts_silence_nan(ret, s); + partsN(silence_nan)(ret, s); } return ret; } @@ -179,7 +179,7 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN= *a, FloatPartsN *b, } =20 if (is_snan(ret->cls)) { - parts_silence_nan(ret, s); + partsN(silence_nan)(ret, s); } return ret; =20 --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211183; cv=none; d=zohomail.com; s=zohoarc; b=Ca8bROQxR1aQgQnhT+lxao6SqUUxgh/LG6FyaH5AecL3lLwCE341KLnpZCDvuoSkb6R92Dt6H3l8S9uAgbksgLLwhDjWQ3ineLcLom38mED9IghaMCIh6ApiIJ2jvqRRkM6P8fWuucbmdSkYKdR679TfDnwVaBbN4wW19iQEOI4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211183; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=x6wsmVd73VCzlO8AzrX6yswqohzZ2bXhumdtuV1u1Y8=; b=mYqPNE/BhwlOwwTk6OTzkL0yiCJHKI48/U0LXfFXXaf2YNyMkWew61iBKRZ0PZw6FKeL1lZ+aU00nypsml53IUIlLwi958s91f8rhWe5DZOD7twb8O4XeWQ3ob1e7Kcn2v8YUTFDbzMk+d5pDOG079JDJgQ4wiZ3HTMuS0oDxYo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211183413757.5579796995204; Sun, 26 Apr 2026 06:46:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzit-0006y8-VH; Sun, 26 Apr 2026 09:40:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzio-0006u5-A0 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:31 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzil-0008Ju-33 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:30 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2ad617d5b80so54568995ad.1 for ; Sun, 26 Apr 2026 06:40:25 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210824; x=1777815624; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=x6wsmVd73VCzlO8AzrX6yswqohzZ2bXhumdtuV1u1Y8=; b=h14aDPIAlScXyBCdQycR3weMp+AnleutMlOiS1ro3rGfI+Q+CDctHsNUliBdbrSJ7g KNcMwjgWlYETNb3bgp2jqRPop4bfi3UfBqyprPiZLPJSMigpEqYDtk2cHbpUIEcXDNdT J5XRQFCIJxPgML7PZG4MaVMOp+2r9NY0OZ+4tdYgoF7LnHBivYp7WRdXjeyrAxS17Xur K+Q5yj6vgCz3hdvcgBFheLFdEnFpZSe80hmDZoqYessbD9yNUfUAMYXV1gybUr/Rm2xf 11JfXcpfM4eqOyCVSB35zSKFyt7N+NOlsfrVB/o1yAOdalQ9tfP85e6G63MYYPqZfJTD jdRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210824; x=1777815624; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=x6wsmVd73VCzlO8AzrX6yswqohzZ2bXhumdtuV1u1Y8=; b=Ef36yY1cOq1VweNGMr1yytjcwKQlB23MuYlOfCf3P4wgjHW7SoUNPt6Q4JGR3ccfTQ Yd71l6zGIfNd9kcKA6EFVqvJVH+exdRxH2XzHke7t5wzdDKqCaFqioFSojZ0zYA28FMg /vmF8MRUsCJAoJP3AtqI3uOJoq6wgcyURT9WWq9vW+tzuw7cuII3Qgr3Ah7kghS8f6EH QutXf44K9AiqQDy6Qkbil7NuieQooOhHbBHQgnKrJ5w8D4sbu+o58XiO0R4pGPwem9zb dmJtKy22FIdso/0q/93W4u8gBzXB1VQfBOP7jW+wKNFrcARaE+D7uymx0nFwTGP8srJH 0tzw== X-Gm-Message-State: AOJu0Yw4+X9Us3XgDJ80VyQq91Bk/UtDYcToHq85MxaHGOnprWA3h6QX W2aHVSYZHgIhFf4zOZo2mMmFC97o6nVmTN0I2xmpLoQZc6MfTf3ZZNzF5spt67jogDw/qZEZ3mb 56yPVmZI= X-Gm-Gg: AeBDieuHkkddKxCsY/nQeYcM7MByOoLpuOJFhVpwvTqPPBgBiN0YHQQkVpObruhDHe7 zOFECbz7amaegAaLWvwnwUZd8i1MGhGYHinIlvU7n8SYdynbUJ4fNFu5JesETDkd22PM20GqyuW Bp0u0cWOcRGDdM1Wlq7cgraqK1H8nOT7BXyimwEt/ZBk9JFmuSxZkPaRQVGbKveY5h79V4GRTi/ SJKiiWnSR8nwFJ3jZb/g3jIMMAJ5Cc7m3mU5eXMhxLqTVMSLW2baCbZui7OFs2VXA06YPZ3rMM7 Wv+BmUWV89QeW+alTX/150FnYejyOxYinjVHk7uNSbQn9Lbh9Q6RfhxlgAF6Oz5U2Wh+3/l0iMB +3cRlAAcZl7Gg+28W21kXmzxk4biGfDA1kONmXGLN13qkveCyn50iXGk//SF6NrVlJWSI4G/bTI 4VuJcIiwQEzVfl6bcsuSgsShMnS8D7ClYDRqtZMvy9 X-Received: by 2002:a17:903:1a88:b0:2b0:5ec1:97c1 with SMTP id d9443c01a7336-2b5f9e85ceemr395971105ad.7.1777210824355; Sun, 26 Apr 2026 06:40:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 06/84] fpu: Drop parts_return_nan Date: Sun, 26 Apr 2026 23:38:43 +1000 Message-ID: <20260426134002.865628-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211184790158500 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_return_nan at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 17 ++++++----------- fpu/softfloat-parts.c.inc | 8 ++++---- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 571b5f09f3..50a625fd0a 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,11 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static void parts64_return_nan(FloatParts64 *a, float_status *s); -static void parts128_return_nan(FloatParts128 *a, float_status *s); - -#define parts_return_nan(P, S) PARTS_GENERIC_64_128(return_nan, P)(P, = S) - static FloatParts64 *parts64_pick_nan(FloatParts64 *a, FloatParts64 *b, float_status *s); static FloatParts128 *parts128_pick_nan(FloatParts128 *a, FloatParts128 *b, @@ -2831,7 +2826,7 @@ static void parts_float_to_e5m2(FloatParts64 *a, floa= t_status *s, bool saturate) switch (a->cls) { case float_class_snan: case float_class_qnan: - parts_return_nan(a, s); + parts64_return_nan(a, s); break; =20 case float_class_inf: @@ -2858,7 +2853,7 @@ static void parts_float_to_e5m2(FloatParts64 *a, floa= t_status *s, bool saturate) static void parts64_float_to_float(FloatParts64 *a, float_status *s) { if (is_nan(a->cls)) { - parts_return_nan(a, s); + parts64_return_nan(a, s); } if (a->cls =3D=3D float_class_denormal) { float_raise(float_flag_input_denormal_used, s); @@ -2868,7 +2863,7 @@ static void parts64_float_to_float(FloatParts64 *a, f= loat_status *s) static void parts128_float_to_float(FloatParts128 *a, float_status *s) { if (is_nan(a->cls)) { - parts_return_nan(a, s); + parts128_return_nan(a, s); } if (a->cls =3D=3D float_class_denormal) { float_raise(float_flag_input_denormal_used, s); @@ -2896,7 +2891,7 @@ static void parts_float_to_float_narrow(FloatParts64 = *a, FloatParts128 *b, case float_class_qnan: /* Discard the low bits of the NaN. */ a->frac =3D b->frac_hi; - parts_return_nan(a, s); + parts64_return_nan(a, s); break; default: break; @@ -2912,7 +2907,7 @@ static void parts_float_to_float_widen(FloatParts128 = *a, FloatParts64 *b, frac_widen(a, b); =20 if (is_nan(a->cls)) { - parts_return_nan(a, s); + parts128_return_nan(a, s); } if (a->cls =3D=3D float_class_denormal) { float_raise(float_flag_input_denormal_used, s); @@ -5474,7 +5469,7 @@ float32 float32_exp2(float32 a, float_status *status) break; case float_class_snan: case float_class_qnan: - parts_return_nan(&xp, status); + parts64_return_nan(&xp, status); return float32_round_pack_canonical(&xp, status); case float_class_inf: return xp.sign ? float32_zero : a; diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 0d4a63fbff..3bde254bfe 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -941,7 +941,7 @@ static void partsN(sqrt)(FloatPartsN *a, float_status *= status, break; case float_class_snan: case float_class_qnan: - parts_return_nan(a, status); + partsN(return_nan)(a, status); return; case float_class_zero: return; @@ -1263,7 +1263,7 @@ static void partsN(round_to_int)(FloatPartsN *a, Floa= tRoundMode rmode, switch (a->cls) { case float_class_qnan: case float_class_snan: - parts_return_nan(a, s); + partsN(return_nan)(a, s); break; case float_class_zero: case float_class_inf: @@ -1735,7 +1735,7 @@ static void partsN(scalbn)(FloatPartsN *a, int n, flo= at_status *s) switch (a->cls) { case float_class_snan: case float_class_qnan: - parts_return_nan(a, s); + partsN(return_nan)(a, s); break; case float_class_zero: case float_class_inf: @@ -1770,7 +1770,7 @@ static void partsN(log2)(FloatPartsN *a, float_status= *s, const FloatFmt *fmt) break; case float_class_snan: case float_class_qnan: - parts_return_nan(a, s); + partsN(return_nan)(a, s); return; case float_class_zero: float_raise(float_flag_divbyzero, s); --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777210883; cv=none; d=zohomail.com; s=zohoarc; b=dP4m0SIz12hVv47zMIm0FmWtc6K6HSbTFkKpufkGIdp8620teiZ8SzlHsWwlQX9Ph2lRCMKSKI0vt8ecH09/xBvbtgJVvGEAxkL+q1wKtDu3G4D9J/bNKyvBtQ59TB1yW2ey6aEI6eXYFZ7PEgkjhka+3pd49YdbgUMTnScQyDE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777210883; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5pFIOX/z0+aGze4rLka9drPNkmHdGrfhz/CpEbxvoxw=; b=gHd9AsOIbh/T9KzdrJCOhrz91PKRl5Jp1Cp5nVc6+mHlY65lVbAHgBo0hqb4da4BtXBd8PINMtpv6SOX2frYcz/QoEx5TMl2/uFybKjRpl4viN8W7eC/Jxdlv8aM9Se05hmLY+REKofRtUCVGlwQeGgdkSUHRLuuBPWcgvTJ7cE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777210883408244.5794044083957; Sun, 26 Apr 2026 06:41:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzj9-00074v-SU; Sun, 26 Apr 2026 09:40:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzio-0006u7-Hf for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:32 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzim-0008Kx-B8 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:30 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2b24fcc2b5dso58382585ad.1 for ; Sun, 26 Apr 2026 06:40:27 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210827; x=1777815627; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5pFIOX/z0+aGze4rLka9drPNkmHdGrfhz/CpEbxvoxw=; b=NCV3ODXJo0xM5MnNXxBhLXkMWAjjiXZOaPCd7RvQ6RJc4pDyLj5IkDSs9meCriZ+e8 qJhPoQW9VD47kgn2AtULqAHn/sqUQ19vznUKSY8E/5ZPYbzmkEvXWmKRTzbl2Jkkz0f7 aqwjFDrXypy9mCcEUTE7VLcnrpujkZC0/UT+JuW1OreG2Z374wu3ZCMojAMtuJkexpa4 6GxaKTls2/aapjK8DL6QBULbKpGlxA+Jcff7rLN7Ukg5aKVbCKtTDIr8YzhvtEuvqf/T rk1F7rTSDqci57/Ysga48E2iP/n4b97UwCCsDrXeEp+wuefer5FOSA0PcmJV9+r689C5 TwBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210827; x=1777815627; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=5pFIOX/z0+aGze4rLka9drPNkmHdGrfhz/CpEbxvoxw=; b=Jefh5H4O+T0teQjd+h8TFRIpD3A1R794PLVHXD6GCc5zKrpYTP+3n7Ak12XE7mgxEj iCqv/fiIsePCtwMhMhSq4XQZIujkMHHX5xcQyyEyAn5flQC7B/RkWGsHX4xnLaz1rgci 32VB2qVIG/ipbhAVV39XgM6C2+6qRsJ0nBmKzBq727PMpIKRq1AEk5As82n9mWaqV3p2 bxxvF0iMsV6lRqQn8TErZNynAlWhl9sP085Mq2bj3Wp7pEWnximqzpS3dqelQXo3wJd8 dKo8zL4VIlSVQUVPLs62bUUmjl5Dpy4Yeg8n/0JpLcYl+BmVJbjCaNNkHu4rik/Zw2e3 yW3g== X-Gm-Message-State: AOJu0Yx1x1cyPBeRH/0up4318cO6Y2Xt7HRr54eySqH3q311Vqqzuyju WScZKfDSGCLcCpmo14XwpQm4U7+W0tRMQbfnj7zXBU/L1ZPgFs3D3SDmCXLJ31ABKITusJqKqLN yCHQqokY= X-Gm-Gg: AeBDietcMPILek1VTWYkyUHfAeWWuD+LyHp7d+/qraoLwX+oYlr/KVJ0EG+gUXJj1LN Fysn9XYvGuCRjKJ7ZgbLDE0XbNBQUrrolFcwdwHwxcbuK3E+KYt5/6N0fbLjwX6s83ln3o4BwRE CfSq4U6E/EC7Tq/ND/3PpEOtI297WyQoNGjmXi+3sERisup8bOoBCmmjV1mJoZ5IzYU+kTjeHfA yUKVWRAkLacmbsscesMt1623tO6I01sXJJr6E+YK+1J0buWuj5dlFsEswieqb83KM8plvBWhair 1E1dM4KDQ1TqexzCNIvPilT+ep45kOlV26XH2szQICRpxza6EE5SEEA2uw7ouFjF0ObsukxKixb mP+T09dmRXaRNK5vh2Ujgg7YUtXI8gmamr0XoUZli3iI+zsAbbrC+wdVaUSa9hBcD++iMzClMbN +DSEYILiSR+84hky5PJpWIbnFMpwM7mZ5YE2o4K4Gx X-Received: by 2002:a17:903:b8f:b0:2b2:5857:583e with SMTP id d9443c01a7336-2b5f9fc0641mr398974785ad.31.1777210826884; Sun, 26 Apr 2026 06:40:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 07/84] fpu: Drop parts_pick_nan Date: Sun, 26 Apr 2026 23:38:44 +1000 Message-ID: <20260426134002.865628-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777210887502154100 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_pick_nan at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 11 ++--------- fpu/softfloat-parts.c.inc | 10 +++++----- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 50a625fd0a..98ddc00936 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,13 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static FloatParts64 *parts64_pick_nan(FloatParts64 *a, FloatParts64 *b, - float_status *s); -static FloatParts128 *parts128_pick_nan(FloatParts128 *a, FloatParts128 *b, - float_status *s); - -#define parts_pick_nan(A, B, S) PARTS_GENERIC_64_128(pick_nan, A)(A, B,= S) - static FloatParts64 *parts64_pick_nan_muladd(FloatParts64 *a, FloatParts64= *b, FloatParts64 *c, float_status= *s, int ab_mask, int abc_mask); @@ -5175,7 +5168,7 @@ floatx80 propagateFloatx80NaN(floatx80 a, floatx80 b,= float_status *status) return floatx80_default_nan(status); } =20 - pr =3D parts_pick_nan(&pa, &pb, status); + pr =3D parts128_pick_nan(&pa, &pb, status); return floatx80_round_pack_canonical(pr, status); } =20 @@ -5525,7 +5518,7 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, { /* POp table "Results: DIVIDE TO INTEGER (Part 1 of 2)" */ if ((float_cmask(a->cls) | float_cmask(b->cls)) & float_cmask_anynan) { - *r =3D *parts_pick_nan(a, b, status); + *r =3D *parts64_pick_nan(a, b, status); *n =3D *r; *cc =3D 1; } else if (a->cls =3D=3D float_class_inf || b->cls =3D=3D float_class_= zero) { diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 3bde254bfe..1a2eb7852d 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -604,7 +604,7 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Floa= tPartsN *b, return b; =20 p_nan: - return parts_pick_nan(a, b, s); + return partsN(pick_nan)(a, b, s); } =20 /* @@ -646,7 +646,7 @@ static FloatPartsN *partsN(mul)(FloatPartsN *a, FloatPa= rtsN *b, } =20 if (unlikely(ab_mask & float_cmask_anynan)) { - return parts_pick_nan(a, b, s); + return partsN(pick_nan)(a, b, s); } =20 /* Multiply by 0 or Inf */ @@ -832,7 +832,7 @@ static FloatPartsN *partsN(div)(FloatPartsN *a, FloatPa= rtsN *b, =20 /* All the NaN cases */ if (unlikely(ab_mask & float_cmask_anynan)) { - return parts_pick_nan(a, b, s); + return partsN(pick_nan)(a, b, s); } =20 if ((ab_mask & float_cmask_denormal) && b->cls !=3D float_class_zero) { @@ -890,7 +890,7 @@ static FloatPartsN *partsN(modrem)(FloatPartsN *a, Floa= tPartsN *b, =20 /* All the NaN cases */ if (unlikely(ab_mask & float_cmask_anynan)) { - return parts_pick_nan(a, b, s); + return partsN(pick_nan)(a, b, s); } =20 /* Inf % N; N % 0 */ @@ -1592,7 +1592,7 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, Fl= oatPartsN *b, return is_nan(a->cls) ? b : a; } =20 - return parts_pick_nan(a, b, s); + return partsN(pick_nan)(a, b, s); } =20 if (ab_mask & float_cmask_denormal) { --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211243; cv=none; d=zohomail.com; s=zohoarc; b=mvDDWRpGqxW3wDHYtRzFaQ7GvPvSXnm5SHSdTaBZwRQtrQ9zNcQcZzgxbYZtaeqAr/TT09TBg9G+neCeR5X0ZguaUhYPesqZi5EOw1wo+f99O5AZsm2mpYHYecXxvkJMPMD3g+MoaSwQk1h2P2kXepcF0ssvavOMPJytLZ4uRI0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211243; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TlT+GS6oouXmdq2YCgctHeMhphC7kkcEJPxhLWLaRK0=; b=LiKn3AOhK2vsiwe/Dwsu87ez5L00/zPDXBQP55EmV79uSeHlz6C49RdHVcHttiXcI5Xa/t+GlXMpc/cMFAFBXNrfjrrAohgg1hVQhgUfP29jeLYXFVD2/TEM1VrAxSh7p80spsJY/ZFiKI3JGcJfY+GY2nf55ZpCyF0feKNgH1s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211243283170.09328399448043; Sun, 26 Apr 2026 06:47:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzix-00070c-Hv; Sun, 26 Apr 2026 09:40:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzis-0006x7-Sa for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:34 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzip-0008Lb-3H for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:34 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-36146ae9dd4so7702316a91.3 for ; Sun, 26 Apr 2026 06:40:30 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210829; x=1777815629; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TlT+GS6oouXmdq2YCgctHeMhphC7kkcEJPxhLWLaRK0=; b=DNTB51ktkOOlM8mabPrH6wSXWkPd0YYI0UQoLq9CqA7P3c+FbdTgvjUzW34n7E9b9s uk8+Bu2TncJd3uF7+gN9uY0V6zsHc1hhsQnYAdZnL4WqgiIe3X5a8kD34rpxbXEZC1oY amIf8aYWgJ2VyQePhhFYmjDXIdwE9tE58Vx9ZlUWWcyQRr27xsLWElgFffFxpcSHKvh2 zqz4DZU5aSf/tP9cDuUeBb22t7wVfrRWnWTchIQ1ysF6Ab16lKqBS6t+4Dpj+zrcmgAf v0gKbPUUX13sDtBP2lQhDWnU0jO9vlFIBqCuX63UL11SdztcoefHyZeSlQh0unhgAwZM jUtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210829; x=1777815629; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=TlT+GS6oouXmdq2YCgctHeMhphC7kkcEJPxhLWLaRK0=; b=d8jm25HLtcm0HW8CicRyoqfGUVvnNIAYgwHRnkbIGGlHFlBLcEsqYAhyaqt1394p0d +ggjaaPdn5Co/Q9HfbJ6v92MCpFL+GdYUwWfw5+pDXN8zw318714oZSnHXakCRrJoes5 t9oOfW/TcxWBgcGiP6PazhtkPAqis7w9AgWwm8COUO3lq43R/F6uNZpc83+KsRfum1uR ZtUz/IQlUQHyyxWH9l/7r/lbAhOAupnq3g6R3eYrjG1Zds9WRkYESs78qqcpXqj98t4n GRqKQJJVMX7iwP2cKYOXwM8Gv7A7+Z1xgn3MWPbZsdNJOVACjSXMtlVRmJVJuaUa+EsD h5rw== X-Gm-Message-State: AOJu0YzdoSl3LVGOSo4JKoGezkv98QjcHmES9X/b8umCQK82xv+GgKRn PFP6PJmEoMWcGUQTGXtr64PNJsJ0eO7BKcNomv7ePHoqe8O2358rezyUnG5Pv1R1HmQ7AzvzyVH QKx33DBE= X-Gm-Gg: AeBDieuE1KIH1DfVAT7YuIokcnNk9H9Sz2JbsFfqBfqB0p2s/m9x+P8Z5evBunvP7iB BPK9B3h9kjYnxlCdVVYQ+3l3kwPq7v95867rX6Bxxc0HpI6RKZrOVm4fu+VqhN7PdTEUl8xG5II vBeLDJ8JqvLHLvzEBi5/5pjBDM2kAz7nx/mt2Gzhz1XBdTyld5sElKaLpHjhc1PTQ/xp0yv2bbP d2jyNHjlJGs1fORRg9wj7QBRZimnjRI3gdToYnDENxvBTfBI2rRdDmE3kPDcaO7soHDQabEsECV IxZfSZbq+R1sZ3Hs+Qq4oL6utTz8WE5sJUnKGt4Fn/dKStUKmKQH9balZUqb0SjxBxBDaV7C7e7 ALqaPieWD3Oantee2aQ8FtuFjk4hZDbUxsPvyK0NzJh20xeyF6L6fauVlkqIHu7yX3jU1Z7oEP2 I0eLwirnSOoShFZHvquWXr7u0NYebZNE03N9NhQ4OL X-Received: by 2002:a17:902:f551:b0:2b7:9ed0:4f92 with SMTP id d9443c01a7336-2b79ed0505amr160356565ad.32.1777210829465; Sun, 26 Apr 2026 06:40:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 08/84] fpu: Drop parts_pick_nan_muladd Date: Sun, 26 Apr 2026 23:38:45 +1000 Message-ID: <20260426134002.865628-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211244087154100 Content-Type: text/plain; charset="utf-8" Use partsN() at the only call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 12 ------------ fpu/softfloat-parts.c.inc | 2 +- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 98ddc00936..e5d8b9573a 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,18 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static FloatParts64 *parts64_pick_nan_muladd(FloatParts64 *a, FloatParts64= *b, - FloatParts64 *c, float_status= *s, - int ab_mask, int abc_mask); -static FloatParts128 *parts128_pick_nan_muladd(FloatParts128 *a, - FloatParts128 *b, - FloatParts128 *c, - float_status *s, - int ab_mask, int abc_mask); - -#define parts_pick_nan_muladd(A, B, C, S, ABM, ABCM) \ - PARTS_GENERIC_64_128(pick_nan_muladd, A)(A, B, C, S, ABM, ABCM) - static void parts64_add_normal(FloatParts64 *a, FloatParts64 *b); static void parts128_add_normal(FloatParts128 *a, FloatParts128 *b); static void parts256_add_normal(FloatParts256 *a, FloatParts256 *b); diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 1a2eb7852d..e1ce2be924 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -696,7 +696,7 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *= a, FloatPartsN *b, * off to the target-specific pick-a-NaN routine. */ if (unlikely(abc_mask & float_cmask_anynan)) { - return parts_pick_nan_muladd(a, b, c, s, ab_mask, abc_mask); + return partsN(pick_nan_muladd)(a, b, c, s, ab_mask, abc_mask); } =20 if (flags & float_muladd_negate_c) { --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777210884; cv=none; d=zohomail.com; s=zohoarc; b=aGIJNLJlYKNWTYTAvdiF7eR6wKde/+MO7OMa4QPpyRNOwn8A82heCiFFgOqqIveHK9YOAEkuAiRW2dgfplGo4PUhhNI+v1jhXp7fMfylIhrOidqtvXSIo12fzHSFUqpq7KbvrcDPatYiYt12DgDxbmU/fYiLXHWmIg58CzpSKUA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777210884; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=i7r9gKcYxP/AKKHrV6vUOMBch48/rRs6VOLxoecOoEA=; b=JYfJdLYmor9LL+B+MjdOwcsP42/MITXJw9B4nHUfkv4JEuxiy6+M9b+ACUmD/cEYv9idET1ZAY93VjY9fnr1hTAeXU9XhTbx/AKSNSKPfmpsqWMhcO2JD6ij1BNMH6fdEzAjN5s1EETfYhq9k3+mVGXc1pGdjxkweXR4+tQ8y2E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777210883984909.1623778329431; Sun, 26 Apr 2026 06:41:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzj9-00075H-To; Sun, 26 Apr 2026 09:40:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzit-0006xw-GZ for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:35 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzis-0008M8-1A for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:35 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b7adb38d65so31846105ad.2 for ; Sun, 26 Apr 2026 06:40:33 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210832; x=1777815632; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=i7r9gKcYxP/AKKHrV6vUOMBch48/rRs6VOLxoecOoEA=; b=huQgvnYhZ4Zr/EQ9osNEdkbE3yVHsR9ljtDeTO8TkiIX85gm/qn8zhs6K1PQ2jwFdJ rCaK2Lp9Nvi+d8p5Quf0dQEUq+Flcd8QBUbpNNtBvOluQMk5bYBxMqUWOXlI5H/SGNoX C2PgVHdT/D67jXGuxQGml8pzVNrhNuJLHr6zPWCP61gg/4BgR/jPCyHHG5i4fbRfdpAz sWfXQ/C8TVHMWDFgsGBcOwXV/4mzdZyQJfjISD+EZSlNxDIcAuLnlFQEJwLXiELY2Hk0 WgWXrOQtWOluvL+RcmqmWhu6l7UdHRx+aHMxJV5BF+0vwH9VmhrvhIIkaCAtBwN75ey9 MbDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210832; x=1777815632; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=i7r9gKcYxP/AKKHrV6vUOMBch48/rRs6VOLxoecOoEA=; b=atGgjMz4p6x1NvXCnbL65SffRQSZXe3MIvjipNPhtVS6WJFN/Q8YBAlknQ8888BVbV 1/nypYM1g5hCinBizRTjL9BdvDpxPNmcoAymt93Q+cfwXxwAsvln/MUx7N3G2rRuhMxp jkV6vyJI2Qa5EjQ16MKmiQJfBi/R3GHmU5zTFqBvrgcz05QmVhFXGi/z4qMrqfRfaPXj /sFHkONfMb4EzySPaL9+B5xb6rVLAaOQ+iOLzp5qXRY684OEWB0Da7HkbBKQxhs5P8oC TnnxhDFDKLAnkXLnLoHGnQUHKrKQkkVr9BydG3VKkG7aVAuxA5WYLMzNnBBeUWrovKaf vCWA== X-Gm-Message-State: AOJu0YyWH6mSZogzQwltzlHwCPcuj0ImP+Et3xegQgWgPTm9XoAT/uRI sJj2mut22PV/k9i1wtexfeIUfRAvYsBmUNRI/8vrFXU/rrOyqDl85kUwWsuJf9OC0fmjT5zGE4A DXUK/44U= X-Gm-Gg: AeBDietj5jpL5+xZY6IAaZPvenRyA+gGJJPafFimRSj79V/PCZjNX2KXK0U0sulcJY2 w9Ujxvm7eXyJ/0R9tL1JOnWeNKd90AXVrhix7sGd4BWCRvQorEp1pGv3lBrmOV+1hR/TmffMG1g PU2tCqaTeCAxD9s9lB9uQa5Rnk11IQoGoyYJVp+cssNXHOy7cvJsY9MyRVq8gMV8kcDz2o3s6Im Im4yXhBHky5rZrME9SG8ZzyFQI3fVkk6I5tnFCr/pLvcHNL5XmqloVOF86+XCqy18IB7oHW5A7n cb+sfWRRF3KFgs9s6JFHhaj0r3F2eJseEMRIi1QN8bt9wpRP26v001BLdNVRrg1Zos+hy4evDDx EGbW5qVT2tBiM+MBXynX/d6Xf1MV5cHp80nLdCeva3S3VqQ0SHQu4Olmx701j7yqwW5yfwN19Ku zwuT87AfqDvJIKohc8EykrxUXlJ8xW2ddhJnQxHeD2 X-Received: by 2002:a17:903:3c67:b0:2ae:8272:deb0 with SMTP id d9443c01a7336-2b5f9ebd04amr411907525ad.15.1777210832478; Sun, 26 Apr 2026 06:40:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 09/84] fpu: Reverse the order of softfloat-parts* inclusions Date: Sun, 26 Apr 2026 23:38:46 +1000 Message-ID: <20260426134002.865628-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777210887761158500 Content-Type: text/plain; charset="utf-8" Define the widest addition primitives first, so that they're already defined before being used by the narrower muladd primitive. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index e5d8b9573a..aa96ac530d 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1638,14 +1638,11 @@ static const uint16_t rsqrt_tab[128] =3D { #define FloatPartsN glue(FloatParts,N) #define FloatPartsW glue(FloatParts,W) =20 -#define N 64 -#define W 128 +#define N 256 =20 #include "softfloat-parts-addsub.c.inc" -#include "softfloat-parts.c.inc" =20 #undef N -#undef W #define N 128 #define W 256 =20 @@ -1654,9 +1651,11 @@ static const uint16_t rsqrt_tab[128] =3D { =20 #undef N #undef W -#define N 256 +#define N 64 +#define W 128 =20 #include "softfloat-parts-addsub.c.inc" +#include "softfloat-parts.c.inc" =20 #undef N #undef W --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777210906; cv=none; d=zohomail.com; s=zohoarc; b=Wjt5a8F0X8EBmOedM/A7v5jnTgYE2boMk8eLYnfWvOVn+lSjzhISIMZmaNDUenRGnSYjA4U38JZcDRwt+fEy3uA4biYBjjDT4ZcX97oRPNhtdN8qSsIa+mjsXptbHXaloEEUvr8xVBQTGYq+V6EcrBrh1HMXae5MGz39mVyuNFs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777210906; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uPMUzDzHKRYKX/hzV0qTrhYipGFAxbdzi8RMy7dDcLg=; b=eNfFlbJDDeOxCBWeyKiyS/h3qtPWSHNdLYyQ4AXiv19yW1Uye/AdBVyMlsyi0JnAVP9WU09pfO0fZh/MU+QoV1hmzRE7YwelT2qAda+VX9Sy5lo1bHpd62dF/j8mpmDQKNiJ0gTf7vcygJyJ3EJyOZJMm0HNsN+i0J0dIs4E9jI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17772109060249.477094175772208; Sun, 26 Apr 2026 06:41:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjE-00078M-7f; Sun, 26 Apr 2026 09:40:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzix-00070W-Ci for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:39 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGziv-0008N6-B0 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:39 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-35dac556bb2so5286667a91.1 for ; Sun, 26 Apr 2026 06:40:36 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210835; x=1777815635; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uPMUzDzHKRYKX/hzV0qTrhYipGFAxbdzi8RMy7dDcLg=; b=AyVT8ivfhsJpfZ5ira+mMuVH+swu5pN72HikEMm8akGenOHVEAIdps41IqUIFcExFp kMgudPdi0Z0AbSfCJss4K3YUGbcgXYQVbilYTfb1M7YRSXHOYsUz9XPCxJBAs5B1ClSA FM4vzvhqxx8/I71ZVMt57+0h9MF1NMyYxMlB/GHvokt+25ZZnLR14YKFPRHAMRWsATlx 2+frLvsbF4oBfx3cNOdSYokit3LdDqutkjSr3hdmtf4pp/NSHm5/hjfg+ix17wrnLG12 4tUMntMDpxONGB+PpFIm9ui8zl3rX/AIOtJ7tUK06fnTEQpeC/2kZH2mVKfGb1bHR8wN d1Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210835; x=1777815635; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=uPMUzDzHKRYKX/hzV0qTrhYipGFAxbdzi8RMy7dDcLg=; b=tFTt9nypAqkqnc7CT1sMQNgBydgmY0r42JdRpZQD3KDyVT9je+ZdscEj2pAChP7ntt PLnw0BW+ssfe2IcO3IL4RhpjhswSCD357zQ5CZ31FxM1Wvs4BWn7Lm/HiV4rXLqei0lh f3eF32J6Q1VLiNPeoYX1vj8+kgEY/Xfm5q7/qXt62+gP6x7hn0/liaj3XCwtOu4r1he/ mnjkLfFgiszTY+7x9A0dYaGRU6H5GyKHJ7sJnsCHpGvRi0KBCMzyTpnvS2wMQqH+2i2T gEVqfaiDYLj67FWZIHWFKitWMjlhSL7H5nlaiB+O/tgyiEc72t/hVGvkwwoOl++hyGxN FwNA== X-Gm-Message-State: AOJu0YwgaSW+f2sHwYEKT3gt0fLDWyHwnsC6IHYQ7LLFfVUaZYcZSxWn pCszwFolbzccfpgAsidshU72s5XRuyDIFvHMKqYTw0jkrCyvMoryGQ7xChgHS/wRF7PqdR0QVFM fYWH+y0Y= X-Gm-Gg: AeBDiesRCEh5vVupuSHNN4RalHNlfGF0oPQKCex/rWw+59NHn4UIDKaGV4goCs3LMlM 3Fqc1cU7xLZzXhfPOlwI5MPfSmASx3h1Lsm0QLSVVQaT/AeHL+kjncyyThsCw2cjgn4y2qw1zJi l+555tWNfB9AT95/OW8ULpXPhDeNu3a9WpYc2lWaSLfw8F1EKeCTPfysmOgdlYTfywNZmBHGUL2 jdwP98igfWqI73vCi2ieTH7imXsPBtqpia7n7XAs+yK+MX1boGNdUkTZRJE68JMcI9JTObVXDaP 42hvZWpHC5l0I4yKsaGubandlAQysdXzMLpV0stFY3meszQaCCur9KSWoJ1Y9U7e0rbqKG3DSl8 KKSJ7Mw4E7qGlOkpUaR9FAvoOPHEG9OnGL5Eq2Rte1E6TbT+ebMWMiHrwiEI6Vz0Myw2tzxi1eO 8HSVq6eVq9oTCaIxgeWQ8IgDCa9pLAFKd6XaO5dZLl X-Received: by 2002:a17:902:8f90:b0:2b4:5f96:184d with SMTP id d9443c01a7336-2b5f9e5da53mr294550925ad.5.1777210834983; Sun, 26 Apr 2026 06:40:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 10/84] fpu: Drop parts_{add,sub}_normal Date: Sun, 26 Apr 2026 23:38:47 +1000 Message-ID: <20260426134002.865628-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777210909548154100 Content-Type: text/plain; charset="utf-8" Drop the forward declarations and the _Generic macros. Add partsW() for use by muladd_scalbn. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 16 ++-------------- fpu/softfloat-parts.c.inc | 12 ++++++------ 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index aa96ac530d..117c335d66 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,20 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static void parts64_add_normal(FloatParts64 *a, FloatParts64 *b); -static void parts128_add_normal(FloatParts128 *a, FloatParts128 *b); -static void parts256_add_normal(FloatParts256 *a, FloatParts256 *b); - -#define parts_add_normal(A, B) \ - PARTS_GENERIC_64_128_256(add_normal, A)(A, B) - -static bool parts64_sub_normal(FloatParts64 *a, FloatParts64 *b); -static bool parts128_sub_normal(FloatParts128 *a, FloatParts128 *b); -static bool parts256_sub_normal(FloatParts256 *a, FloatParts256 *b); - -#define parts_sub_normal(A, B) \ - PARTS_GENERIC_64_128_256(sub_normal, A)(A, B) - static FloatParts64 *parts64_addsub(FloatParts64 *a, FloatParts64 *b, float_status *s, bool subtract); static FloatParts128 *parts128_addsub(FloatParts128 *a, FloatParts128 *b, @@ -1635,6 +1621,7 @@ static const uint16_t rsqrt_tab[128] =3D { }; =20 #define partsN(NAME) glue(glue(glue(parts,N),_),NAME) +#define partsW(NAME) glue(glue(glue(parts,W),_),NAME) #define FloatPartsN glue(FloatParts,N) #define FloatPartsW glue(FloatParts,W) =20 @@ -1660,6 +1647,7 @@ static const uint16_t rsqrt_tab[128] =3D { #undef N #undef W #undef partsN +#undef partsW #undef FloatPartsN #undef FloatPartsW =20 diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index e1ce2be924..6e1800b117 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -541,7 +541,7 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Floa= tPartsN *b, if (a->sign !=3D b_sign) { /* Subtraction */ if (likely(cmask_is_only_normals(ab_mask))) { - if (parts_sub_normal(a, b)) { + if (partsN(sub_normal)(a, b)) { return a; } /* Subtract was exact, fall through to set sign. */ @@ -574,7 +574,7 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Floa= tPartsN *b, } else { /* Addition */ if (likely(cmask_is_only_normals(ab_mask))) { - parts_add_normal(a, b); + partsN(add_normal)(a, b); return a; } =20 @@ -760,8 +760,8 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *= a, FloatPartsN *b, c_widen.exp =3D c->exp; =20 if (a->sign =3D=3D c->sign) { - parts_add_normal(&p_widen, &c_widen); - } else if (!parts_sub_normal(&p_widen, &c_widen)) { + partsW(add_normal)(&p_widen, &c_widen); + } else if (!partsW(sub_normal)(&p_widen, &c_widen)) { goto return_sub_zero; } } @@ -1869,9 +1869,9 @@ static void partsN(log2)(FloatPartsN *a, float_status= *s, const FloatFmt *fmt) f.exp =3D f_exp - frac_normalize(&f); =20 if (a_exp < 0) { - parts_sub_normal(a, &f); + partsN(sub_normal)(a, &f); } else if (a_exp > 0) { - parts_add_normal(a, &f); + partsN(add_normal)(a, &f); } else { *a =3D f; } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211437; cv=none; d=zohomail.com; s=zohoarc; b=NmtGbrJ9Ne5hB4i2lGudE0iZKCk6FMZUMv8PWCLI+XabKvVtMpeCUbByERzC5sH19FCrbHzBBHIbphzsOhjr74y39SOSSakrbX6RE+QbSaXkUO5tN+Njs1ZVh9qwNyH7ZvImOKZawmIoX0hZQ5D35OY4AgXrPvx3s+PlSSqVoBg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211437; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=W8mF2w2Bv+oA3MTgv0hQ1Dx793tAYzL7cdErwHzJOq0=; b=SEPUPDwhquq+NLCRtMV0x9fXXs/Halm6okrbGsmACo1vbwMHv+n/VY/WEKyWV1hVhXV7fyjOUVuWW3cPTUSXMwkfFn7FvqoATXUksJZhU3eRZQzbRX0xS07OGQl+QCbL1TpSLQkA/XQ/7E9itRQfCnFdxfI+E0iCDyC41LAmO04= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211437068968.9468905908103; Sun, 26 Apr 2026 06:50:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjE-00078m-FV; Sun, 26 Apr 2026 09:40:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGziy-00071U-Rn for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:41 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzix-0008Nh-4F for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:40 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-35da1af3e10so8680467a91.3 for ; Sun, 26 Apr 2026 06:40:38 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210838; x=1777815638; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=W8mF2w2Bv+oA3MTgv0hQ1Dx793tAYzL7cdErwHzJOq0=; b=sGTJiSEp2w2bX9D3m0pYJN51VAAfDT5ieeBWmikyL8hjEIF7TuQXq9bc01fNbaBdl1 DJEazEw+/HDpETs2ekN/qcEsu5vgSIIZff2gGDe8epKX52CUBloFj6u9/vuSI9u0fov4 sB1FSY3E2lYyBqrlFualRMqy6Fa3hbKlLrvneMsfT4FZtsmixR5leSux6haXqeB1K8lA f4fffM2Sig8dPsVbplczdCQmbTuvh6orsxN0y94yG5mYvaJ3iYb5N1Q7NYlcaVlE2FUU 4Fx6N+yN66BDx2aLPfqOhtT/sIQgwf06xYqkmEfDVGEEE6eLCs6+XlyunN9ffPv6uK2e saVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210838; x=1777815638; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=W8mF2w2Bv+oA3MTgv0hQ1Dx793tAYzL7cdErwHzJOq0=; b=UTqN/y0czQzMBkTBFIyBKQyDIWqoLIGtLJ08sQWUbgZ39avjAJDLlb20GAbrHQWcPW wEhQ/js43xm1dsW9Yk4kfA8WoCqaew9CgYjH/nWMxq0kd8MC46s3WlScCSeLuJapXT8S OqXaRGMt+7BeLWDT+YhW6K4wwjnc17WnHIHKwDNey3xq0l9MiNmovUrIafQnFWNCazUw CWnyNrSbTF3+edUyn1p4j7u/9Lhf8W4TFE10yAknnTiXj/8nRr/XqqThLbCo9isPZqy1 tLDF3PYjbBVkrF+L2CRWWfeQib+4rh2089OmDFL6XjSxAxbIisA4I65DXYJvkEwmErpZ WDzg== X-Gm-Message-State: AOJu0Yy0FT3jMMiqv1Gf2EGqfnZqCIDKMb4ivg345wcjw47ofVBHyAFU NUn8AsdMA641p+2h91I5XdQS7pG6IqGQvZ92JgKCsJu7MahJntDom1OSjdcQx/peb9478YA1cIi ww0pnAN0= X-Gm-Gg: AeBDievIw4y8Wwd8w8Psu0DXJTS719NTTergGWvbB4DZuGQJpK4DehN4/lzK/U9qePq NF/sjc9Xc7mzdQEtOKYUcSkfycaoMDcrfkeKc5jR4pQkynkoJVBQljUrJYs5WP0RvujUbxY4bZs WxNPChz7/vbULTiAkRW7o47raOPn78pdItu4xNen+a4zlv7o6G6YSzWEd9OvEntGViyg+HAbcgi xDmWp6q4/1hlgFxLNWt+7ItWP7dZys4gZhcbv9Pe8Kzg5H3VXUziFoEfGItXkNTvU0IrY/VxDcG UAJ9AHrx1fM3y9uKrwmO/GxvGvS2tzlqhtx+W+VnNBjB43bwysf9J8KmX2NKaSfPCN1kEjjPClz lRtFQSDoeyFoXTk7ARW6jj7mF59v2LNNjA5W8vsnoKXs5gLaG4OiVd/haq2akTaCRui+S2wY4B9 ns/uBAPCpNI/J1yCkRlmzBSnVw6t+QxGzCwWVHTFXa X-Received: by 2002:a17:903:17cf:b0:2b0:6829:9414 with SMTP id d9443c01a7336-2b5f9e64c6cmr397266395ad.8.1777210837582; Sun, 26 Apr 2026 06:40:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 11/84] fpu: Drop parts_addsub Date: Sun, 26 Apr 2026 23:38:48 +1000 Message-ID: <20260426134002.865628-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211437684158500 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_addsub at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 117c335d66..dc5ce53105 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,14 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static FloatParts64 *parts64_addsub(FloatParts64 *a, FloatParts64 *b, - float_status *s, bool subtract); -static FloatParts128 *parts128_addsub(FloatParts128 *a, FloatParts128 *b, - float_status *s, bool subtract); - -#define parts_addsub(A, B, S, Z) \ - PARTS_GENERIC_64_128(addsub, A)(A, B, S, Z) - static FloatParts64 *parts64_mul(FloatParts64 *a, FloatParts64 *b, float_status *s); static FloatParts128 *parts128_mul(FloatParts128 *a, FloatParts128 *b, @@ -1923,7 +1915,7 @@ float16_addsub(float16 a, float16 b, float_status *st= atus, bool subtract) =20 float16_unpack_canonical(&pa, a, status); float16_unpack_canonical(&pb, b, status); - pr =3D parts_addsub(&pa, &pb, status, subtract); + pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 return float16_round_pack_canonical(pr, status); } @@ -1945,7 +1937,7 @@ soft_f32_addsub(float32 a, float32 b, float_status *s= tatus, bool subtract) =20 float32_unpack_canonical(&pa, a, status); float32_unpack_canonical(&pb, b, status); - pr =3D parts_addsub(&pa, &pb, status, subtract); + pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 return float32_round_pack_canonical(pr, status); } @@ -1967,7 +1959,7 @@ soft_f64_addsub(float64 a, float64 b, float_status *s= tatus, bool subtract) =20 float64_unpack_canonical(&pa, a, status); float64_unpack_canonical(&pb, b, status); - pr =3D parts_addsub(&pa, &pb, status, subtract); + pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 return float64_round_pack_canonical(pr, status); } @@ -2064,7 +2056,7 @@ static float64 float64r32_addsub(float64 a, float64 b= , float_status *status, =20 float64_unpack_canonical(&pa, a, status); float64_unpack_canonical(&pb, b, status); - pr =3D parts_addsub(&pa, &pb, status, subtract); + pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 return float64r32_round_pack_canonical(pr, status); } @@ -2086,7 +2078,7 @@ bfloat16_addsub(bfloat16 a, bfloat16 b, float_status = *status, bool subtract) =20 bfloat16_unpack_canonical(&pa, a, status); bfloat16_unpack_canonical(&pb, b, status); - pr =3D parts_addsub(&pa, &pb, status, subtract); + pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 return bfloat16_round_pack_canonical(pr, status); } @@ -2108,7 +2100,7 @@ float128_addsub(float128 a, float128 b, float_status = *status, bool subtract) =20 float128_unpack_canonical(&pa, a, status); float128_unpack_canonical(&pb, b, status); - pr =3D parts_addsub(&pa, &pb, status, subtract); + pr =3D parts128_addsub(&pa, &pb, status, subtract); =20 return float128_round_pack_canonical(pr, status); } @@ -2133,7 +2125,7 @@ floatx80_addsub(floatx80 a, floatx80 b, float_status = *status, bool subtract) return floatx80_default_nan(status); } =20 - pr =3D parts_addsub(&pa, &pb, status, subtract); + pr =3D parts128_addsub(&pa, &pb, status, subtract); return floatx80_round_pack_canonical(pr, status); } =20 --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777210982; cv=none; d=zohomail.com; s=zohoarc; b=QhMjabQiMto4agTrdw3DHY6F9POrl+BOTEJpsWiE8by0jTwsKJxtK0S16Uoxxdzz9KGEKehjlsf0mor7muT59VgAzuPVPMNPzMAvCwdhZWb5YmzZPyyUJ+/ti0JBBeeBGbRMuz52H5RtRJKdmVhT7F7RE1l7KVFblnAr0fwWXKs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777210982; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=O1deF2a9CTcLPY51+HToPZPvFKlSh0LTVXG903qSvbY=; b=NyIpC1zeKA5cZpV1EZupibI6k7LNP6K99r+O+EE8BgJshbdCaFODnySnegFaldDMU9VgtqvFB90pfhaYgT+OjC+dhwFrjn3rcdwVkmsP4kdpWvZIjX51KlJAqqtdYUqVwUbCXEChwmeTUIqVfVBmABZhuj2ejXkpPN7aeC/3tN8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777210982326743.8310277668116; Sun, 26 Apr 2026 06:43:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjF-00079L-6V; Sun, 26 Apr 2026 09:40:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzj1-00072I-QD for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:45 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGziz-0008OM-Qg for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:43 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-362e50b4641so1619094a91.0 for ; Sun, 26 Apr 2026 06:40:41 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210840; x=1777815640; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=O1deF2a9CTcLPY51+HToPZPvFKlSh0LTVXG903qSvbY=; b=ThKRN8Y01bLQ6a+V0VLvmiC/zVbpOVOZ0G0cefIE7oeumXYz34wiTkCcce6IRLlcbB PkSma2WBf9Qwj2uPkRZ3t4BOsddzCwcTfMcSVl5SxUiHwJxcII22HP5O9bcA8F+9KgD0 +9N/vzwhOu6zYz0+zyuQNr7x/j6qOr0gNA/8bvLBS3RSS3o/boVcVUbKTqMWNk+gwrMg Yue6EGouJCutnqRyeKt/Tpn5I/E3MVSyfeufc6vLQ3JIVNC/6/nTwZF202xkdJxo68z9 Cf2Nxg/ctrHV5To50iBNV5HrzekJybzHwtjWTgFJ6TlOTQKp3ImEfN6x/ihndnwh1HFp TCZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210840; x=1777815640; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=O1deF2a9CTcLPY51+HToPZPvFKlSh0LTVXG903qSvbY=; b=O6oLWtBkyYz5IYREwDybHFf+AcwgZb6lk2YHdbhHiVN+fktqcKJagLWbUNDnErc4M9 5uZTzekwcRSv+8aypqm+ySduLvuPpEHD5cH5uM6yakRY3T94RJRjv+SDdTqHDyqxWHPM 92CLVznsI951JXNdF+W3vEbzk4KVTqdgaNVW8tuXIUZaS1jxhQDXSRcN+i5DNV5pVNQU K/dSrSJJfu8SOn3AsCJL818bgBRyPsV+xMLjvRv5ZzGxHWgXcB33YzksX65YUsSLdPAf i0+yXyAUWufIQmrUZ6HBrU8+/sTPuOhvn7xHp/rAVhKUMe8HfIR61ABSlSf+cNB3txh+ BrUw== X-Gm-Message-State: AOJu0Yz717YO/OE5YWx8QFNaF25iz6OCD0UgZVk/DAuw/H74I3gvyVjy 0hM0ihngy/nLSseASMIWer2M7vmtfHWUBMCwZnSI6DYXLNAyRrqU5W0UiU4hwf+N54Z74oyNnK9 /QuFpyL0= X-Gm-Gg: AeBDiesy+GhYQR+OsNDjy9TYt/6ZH6gwG57bjtZ5SiC/gY3SUqHXPRmKgR8b3zg4lGm YZLtBsmyoyg/GfUlThiN4XuAm34y56fkkndrydgmhizROerIWzm5EKJRxhnt/gv7plNArk2luHY /yKgHe6v9QIxcmRMkCZHD8tZS1hbWGTBG4yIGwF2sTFC7cd2oSA7D6gxxrWyhoX7CxQldHlHRt6 wDv/u9+Pupv8OiuyihNEbXoRA4iet/CaD8Iq27N0DfksIZfARztLU7mkg3/gjVNIstmq9cmopOi WakOccARZOSCnxSNn6rr2fJAQt9F7hqGIto0WK7ckiQQ6v1D3xUtdkXM13xABMx9kk5yWlJngiA VRmo/YLnbhVeUISeV2pKAPIo/aC6GCL6UeWsNzRKwK12amKqcN8f09r4jtDNqX/bASKxOMoez/p Bb/tA8lbNkZzLTPjAzT3UjyG/g/lZSi3P7wcPaebAC X-Received: by 2002:a17:902:cf08:b0:2ab:230d:2d96 with SMTP id d9443c01a7336-2b5f9eaf621mr421690415ad.11.1777210840181; Sun, 26 Apr 2026 06:40:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 12/84] fpu: Drop parts_mul Date: Sun, 26 Apr 2026 23:38:49 +1000 Message-ID: <20260426134002.865628-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777210984226158500 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_mul at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index dc5ce53105..8adc73c863 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,14 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static FloatParts64 *parts64_mul(FloatParts64 *a, FloatParts64 *b, - float_status *s); -static FloatParts128 *parts128_mul(FloatParts128 *a, FloatParts128 *b, - float_status *s); - -#define parts_mul(A, B, S) \ - PARTS_GENERIC_64_128(mul, A)(A, B, S) - static FloatParts64 *parts64_muladd_scalbn(FloatParts64 *a, FloatParts64 *= b, FloatParts64 *c, int scale, int flags, float_status *s); @@ -2149,7 +2141,7 @@ float16 QEMU_FLATTEN float16_mul(float16 a, float16 b= , float_status *status) =20 float16_unpack_canonical(&pa, a, status); float16_unpack_canonical(&pb, b, status); - pr =3D parts_mul(&pa, &pb, status); + pr =3D parts64_mul(&pa, &pb, status); =20 return float16_round_pack_canonical(pr, status); } @@ -2161,7 +2153,7 @@ soft_f32_mul(float32 a, float32 b, float_status *stat= us) =20 float32_unpack_canonical(&pa, a, status); float32_unpack_canonical(&pb, b, status); - pr =3D parts_mul(&pa, &pb, status); + pr =3D parts64_mul(&pa, &pb, status); =20 return float32_round_pack_canonical(pr, status); } @@ -2173,7 +2165,7 @@ soft_f64_mul(float64 a, float64 b, float_status *stat= us) =20 float64_unpack_canonical(&pa, a, status); float64_unpack_canonical(&pb, b, status); - pr =3D parts_mul(&pa, &pb, status); + pr =3D parts64_mul(&pa, &pb, status); =20 return float64_round_pack_canonical(pr, status); } @@ -2208,7 +2200,7 @@ float64 float64r32_mul(float64 a, float64 b, float_st= atus *status) =20 float64_unpack_canonical(&pa, a, status); float64_unpack_canonical(&pb, b, status); - pr =3D parts_mul(&pa, &pb, status); + pr =3D parts64_mul(&pa, &pb, status); =20 return float64r32_round_pack_canonical(pr, status); } @@ -2220,7 +2212,7 @@ bfloat16_mul(bfloat16 a, bfloat16 b, float_status *st= atus) =20 bfloat16_unpack_canonical(&pa, a, status); bfloat16_unpack_canonical(&pb, b, status); - pr =3D parts_mul(&pa, &pb, status); + pr =3D parts64_mul(&pa, &pb, status); =20 return bfloat16_round_pack_canonical(pr, status); } @@ -2232,7 +2224,7 @@ float128_mul(float128 a, float128 b, float_status *st= atus) =20 float128_unpack_canonical(&pa, a, status); float128_unpack_canonical(&pb, b, status); - pr =3D parts_mul(&pa, &pb, status); + pr =3D parts128_mul(&pa, &pb, status); =20 return float128_round_pack_canonical(pr, status); } @@ -2247,7 +2239,7 @@ floatx80_mul(floatx80 a, floatx80 b, float_status *st= atus) return floatx80_default_nan(status); } =20 - pr =3D parts_mul(&pa, &pb, status); + pr =3D parts128_mul(&pa, &pb, status); return floatx80_round_pack_canonical(pr, status); } =20 @@ -5443,7 +5435,7 @@ float32 float32_exp2(float32 a, float_status *status) float_raise(float_flag_inexact, status); =20 float64_unpack_canonical(&tp, float64_ln2, status); - xp =3D *parts_mul(&xp, &tp, status); + xp =3D *parts64_mul(&xp, &tp, status); xnp =3D xp; =20 float64_unpack_canonical(&rp, float64_one, status); @@ -5451,7 +5443,7 @@ float32 float32_exp2(float32 a, float_status *status) =20 float64_unpack_canonical(&tp, float32_exp2_coefficients[i], status= ); rp =3D *parts_muladd_scalbn(&tp, &xnp, &rp, 0, 0, status); - xnp =3D *parts_mul(&xnp, &xp, status); + xnp =3D *parts64_mul(&xnp, &xp, status); } =20 return float32_round_pack_canonical(&rp, status); --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211267; cv=none; d=zohomail.com; s=zohoarc; b=Cf3cHp52cAE3kpcmf90ItcP3cyTBkgI2PrtxmBEefKtLPVtZarqfoD3IFyzwV5T+gtm531gBsgmhBerqMsse8yqbAwY6rko4m1ZF2QmED+wSUx/00p93LCTgVGiTcnpgxtq2RwJwta4F4/q+rUr+QuGl42kpzjlMDzhA0L2zjYE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211267; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Cln1IvUYfPUAHI9KvfM8VpMshxIOEoB0M8M5C1mmxEg=; b=ixX7+kJ2L3e/ZWJ3af3w3r+NDMjmlzjI8quK4ApgbgH+0TzBjv7uWTyQjFtKk3VLKksv4Cx4KizpTG3b7AdA6o+MVjRL0+jte3QtYkLLB0HmJEdQSMRnF/jlvrvxlBOVX6KQ3sDvGrIEWNF4AeZ8uc2wz9eISwu57HiIvwIJong= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211267844517.3056447653073; Sun, 26 Apr 2026 06:47:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjD-00076t-F1; Sun, 26 Apr 2026 09:40:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzj6-00073q-Ko for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:49 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzj2-0008PU-4G for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:47 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2b23fcf90b2so89109985ad.3 for ; Sun, 26 Apr 2026 06:40:43 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210843; x=1777815643; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Cln1IvUYfPUAHI9KvfM8VpMshxIOEoB0M8M5C1mmxEg=; b=PMFLGC1FcSbVgRfS6gy5Lxb7+M83OSGKXwncyC1sHJVt97s8i7UpRuq6pbSGzBjnvz ByWpJAO2o99ZwLrpUisKIbp0nqfAWlmlOjECGw6nAudFClsjNy6rXzAOpYwKc1pLjgPM GUxMV8uJ7WPVp56czt9UCorOmGevqQGoJ/TUc9I2b6K4DxFvs2sNqIyhKgWtwow5b6Ko ICbxALOrlok/i9g3fSFjH7gA9ViDPEjy7Jv0dO7ZXId1ApEFAwg3aTh+PeWP0raiQuY3 7C363MHj2DEw3yDGzQdsi40QLgt8MOTW0gQnJVBQcJt6VWicmzMR0UCyTOBQ9vQToGEy Mr4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210843; x=1777815643; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Cln1IvUYfPUAHI9KvfM8VpMshxIOEoB0M8M5C1mmxEg=; b=BCblIxS8Tpbm7n6sEgvJ5OwK2dFNE0SWRTMLizkTeH3rRrZ8f1rMqGuuNCvYf4G5D7 GvstRS8xCoe3fLjMJiQACqrLD7NSFlbzKNyuMHTaiznqlDalrG+/LzKS9tb7oqv6mx4A GI31IIjn2crw2VFExyhHe21aUAlS5DbqjbvS3bBLN6b4FKnprIqDiE5IaF9sofEnUt4g DgtBUOg7P8tDSSQTBC/DmVcsFYzBMLW4cG7w0/EU55SizXJtGuO0mP9IwpOk+7g+Uhnq 0mcPkjPrsVK9B1Mr87PzBFfFDC1ABhiHwdq/vZeIN5yjPnqJa4oXxfydLHXeCu6E/Y50 HS9Q== X-Gm-Message-State: AOJu0Yznf5kj2e82+6DZOuwlZ9adDkQmEmcEc8WOX+Qhgkt6+KXfxWPh 6jsFLXRa+iZTtq00brNDUDI2MExric6jr+6p9QdfXz21wioSI57jy5MMn8RkSKKTH89lT+6YrCb bnaV0q4A= X-Gm-Gg: AeBDiesDrZByyTV6LiAVM1xWGjcUmpf2Mh+VyfGfeoKUdi0ZheB63WvZ+3jbkYeqMl0 9QdX9TyMIGvfglWY9viGVXROqgYElaJwyxKwJ7BinXmCm1JQCT9n47XE9QaMwcvJnMR51oS6RnQ xipVEJHRLZ7Muo01kkM6iZAWnu9ql01vw1+FOVvotktIfWFSSufQdzGE/rYciQg5cfiNG/1VJJs m0ypdyDhlpgte4SNzef+dPzmv6Q36XSuEBbuoMjeUflp0wVs9JYpUbpjDqFS8WnH5Li3PdFGm6x 2IpjyR0INCmzgXg1kadZYgRJto+o8IIbxDrlp2lgMbZ0EHe12Dfr9wr6L1NYqJljBjG9+Un7KjY Z9Btt6XR5/4T5Fl7TzzyaLtFl4MBoxeha7L5cyZTy2UCq9l8OM4axwI2J3JjXXDQpkQMcziIjZO NgjCapeQHsuO5p32qLmDRxy/CFZ3rHPb7BuyWaB3Nr X-Received: by 2002:a17:903:28e:b0:2b0:7531:b61e with SMTP id d9443c01a7336-2b5f9f9f125mr400489305ad.41.1777210842787; Sun, 26 Apr 2026 06:40:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 13/84] fpu: Drop parts_muladd_scalbn Date: Sun, 26 Apr 2026 23:38:50 +1000 Message-ID: <20260426134002.865628-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211270409154100 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_muladd_scalbn at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 8adc73c863..aa62fea47d 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,16 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static FloatParts64 *parts64_muladd_scalbn(FloatParts64 *a, FloatParts64 *= b, - FloatParts64 *c, int scale, - int flags, float_status *s); -static FloatParts128 *parts128_muladd_scalbn(FloatParts128 *a, FloatParts1= 28 *b, - FloatParts128 *c, int scale, - int flags, float_status *s); - -#define parts_muladd_scalbn(A, B, C, Z, Y, S) \ - PARTS_GENERIC_64_128(muladd_scalbn, A)(A, B, C, Z, Y, S) - static FloatParts64 *parts64_div(FloatParts64 *a, FloatParts64 *b, float_status *s); static FloatParts128 *parts128_div(FloatParts128 *a, FloatParts128 *b, @@ -2256,7 +2246,7 @@ float16_muladd_scalbn(float16 a, float16 b, float16 c, float16_unpack_canonical(&pa, a, status); float16_unpack_canonical(&pb, b, status); float16_unpack_canonical(&pc, c, status); - pr =3D parts_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); + pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &float16_params, false); @@ -2281,7 +2271,7 @@ float32_muladd_scalbn(float32 a, float32 b, float32 c, float32_unpack_canonical(&pa, a, status); float32_unpack_canonical(&pb, b, status); float32_unpack_canonical(&pc, c, status); - pr =3D parts_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); + pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &float32_params, false); @@ -2300,7 +2290,7 @@ float64_muladd_scalbn(float64 a, float64 b, float64 c, float64_unpack_canonical(&pa, a, status); float64_unpack_canonical(&pb, b, status); float64_unpack_canonical(&pc, c, status); - pr =3D parts_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); + pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &float64_params, false); @@ -2459,7 +2449,7 @@ float64 float64r32_muladd(float64 a, float64 b, float= 64 c, float64_unpack_canonical(&pa, a, status); float64_unpack_canonical(&pb, b, status); float64_unpack_canonical(&pc, c, status); - pr =3D parts_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); + pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &float32_params, false); @@ -2477,7 +2467,7 @@ bfloat16 QEMU_FLATTEN bfloat16_muladd(bfloat16 a, bfl= oat16 b, bfloat16 c, bfloat16_unpack_canonical(&pa, a, status); bfloat16_unpack_canonical(&pb, b, status); bfloat16_unpack_canonical(&pc, c, status); - pr =3D parts_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); + pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &bfloat16_params, false); @@ -2495,7 +2485,7 @@ float128 QEMU_FLATTEN float128_muladd(float128 a, flo= at128 b, float128 c, float128_unpack_canonical(&pa, a, status); float128_unpack_canonical(&pb, b, status); float128_unpack_canonical(&pc, c, status); - pr =3D parts_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); + pr =3D parts128_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); =20 /* Round before applying negate result. */ parts128_uncanon(pr, status, &float128_params, false); @@ -5442,7 +5432,7 @@ float32 float32_exp2(float32 a, float_status *status) for (i =3D 0 ; i < 15 ; i++) { =20 float64_unpack_canonical(&tp, float32_exp2_coefficients[i], status= ); - rp =3D *parts_muladd_scalbn(&tp, &xnp, &rp, 0, 0, status); + rp =3D *parts64_muladd_scalbn(&tp, &xnp, &rp, 0, 0, status); xnp =3D *parts64_mul(&xnp, &xp, status); } =20 @@ -5522,8 +5512,8 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, =20 /* Compute precise remainder */ r_precise_buf =3D *b; - r_precise =3D parts_muladd_scalbn(&r_precise_buf, n, a, 0, - float_muladd_negate_product, statu= s); + r_precise =3D parts64_muladd_scalbn(&r_precise_buf, n, a, 0, + float_muladd_negate_product, sta= tus); =20 /* Round remainder to the target format */ *r =3D *r_precise; --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777210952; cv=none; d=zohomail.com; s=zohoarc; b=SMuYHJb/COscskXqu02V7Pgj2jEfSchOl98PbwzGilM4hQ3ttUMrzWOD5DV4Rg7OoDWeF288D69XIRyx/UUh44SjXKYYU0CxrPv50SyXEOII99LenMKlMjokCGM2xJfXdBNqyisuSuAMM6gg6kaaZ9JvlJ+h8oVQn/JJC6Hpn4E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777210952; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8eMeYdKdLROxUfcpDykwRMbJ11IFu4aFIiW8kpwXCk4=; b=Pub87WDdQJWzRCV42Zpys2S5H4+KjKlqyOe8wKhxzhSFDfZJ0a2RkbN6/UYH6s2EgUmXn1P5eMrZHBL6uLMyrmi/nkFirXXf4KaaB3FdZggn+TBj+33RtaIBKIk3dnzHS2wRdtHUyQ9JOIeP9/l/QwEHKihdRaHAtEyLWiHu1rQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777210952626268.25685982665004; Sun, 26 Apr 2026 06:42:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjF-0007A8-LY; Sun, 26 Apr 2026 09:40:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzj9-00075C-EK for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:51 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzj6-0008QF-Ar for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:51 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2ab232cc803so44637985ad.3 for ; Sun, 26 Apr 2026 06:40:46 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210845; x=1777815645; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8eMeYdKdLROxUfcpDykwRMbJ11IFu4aFIiW8kpwXCk4=; b=iWZtwmpTf19F+zDVR12wCHFQsgq1eytJLX5SU1A4+YBb/BCnSfsSEUas4BdCQE3I2z 89HitZAc8VoJnw6hc0GKcqK0pWVNi7t4iZCxK7qqJNa4dj7TriFgLNUclB0k/e3Blj8b iSKd1Pq9govLN3PiVmgYurUBGDI8ClX0C5af5hPQ0nZJy1hda9A1iQHqyiVtCAnpCOU7 0efLoBZhd0AP2ZAwg+pHqBM8ZpHRD0jcEp9s7Kbow0LwwQfn9hxKoD+SYwVKt8W8s5r/ HsrOUEv9pYp5vd2/9lERffK+4pfcpj+SoI+npNL+Tariet+xrQLBqIhEk1gszNHYzOCE R56A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210845; x=1777815645; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8eMeYdKdLROxUfcpDykwRMbJ11IFu4aFIiW8kpwXCk4=; b=QgqTRSXsACfXGLRR9pyTwmfYVBpbh/hz8yI2han+6U4+8amWlPOfbMWskhvyRCKw86 ZZyy1amhlE/wd1DcoQpf3WBHQ4oNjnMW3IktGZjq/r8lW1cpgCQgCQK16NZWMqCfdbKj zRY3CM2Nmco6rQj+RqY5TctnhBNhtD5BJVIfVPwI87yySSQyJWhxaqJ/Rc4TFW6N/BIo ujtFNCLAw1gfeSTYPJvSb9IP/ExpH+dTZbsMFzJCFdgxjVJfzVzH4kARpolSbAThq8z8 WqCV0AjfylvwaWiZJ1A5QSOIZ8I2qfsvnWprIiQRBEs5dRBHZHZQvuWzGhLIeIZzmF97 DkgA== X-Gm-Message-State: AOJu0YzajHHYeMUqzJvHbXQvUPjLLUpOGe4s1P/F8YS69mVKOzO3nRU6 6agWUEjf1a8F4x1gHPXOatFn9Vd4JUvYv1bEOR1iUZgRkLESGV4OmOY+cw0H3V1pq48DLQ+g6GH BJ5DvxEo= X-Gm-Gg: AeBDievjrmxiXR7J6TwU5NIr/s+Us0rsjoPeTKlrmBbuOazdH6r/3qrTYk1UnV5AhMQ rn4YTvw3r43OEa6PxWlrrQ6vy9g0bhicQfo4BvHj6+N1GLJrD2RWzbSotZVBTJSDJoXcHH0USZk NRPOHQDftW4TnSvJSofhEo3KUNIYEVszNL0MdSmqUTpI3Li3UyjkkSVMSTbj1FJQEVf178+qdO4 NIGHvtHBPkcO97XKfnztzoZWpM2tW3HQhaUsqCk0soNrWxjA3H50Oc6CPSQwYRhTiczyEsw2UKa mnfYHO4C4uqtQhNAR/OdaZFB1hg3EQcsJ+JXc84g/pRUuA3xZJEnjMrofAc9jc5e+xF3G5nMLVC Aiupcr+Zpt7JqRDY2iQg4eEi+eAsCtFvydw/p11zqNVmTpq4+63RnIFuFmQQwOhdqrsiMn07fIg qBsqOucHB7GDsRYis0F4oSsCfBCL4Ft7vqJ+UbgoR8 X-Received: by 2002:a17:903:1988:b0:2b7:97b9:54fa with SMTP id d9443c01a7336-2b797b95512mr165293775ad.32.1777210845252; Sun, 26 Apr 2026 06:40:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 14/84] fpu: Drop parts_div Date: Sun, 26 Apr 2026 23:38:51 +1000 Message-ID: <20260426134002.865628-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777210953831154100 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_div at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index aa62fea47d..b885eae629 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,14 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static FloatParts64 *parts64_div(FloatParts64 *a, FloatParts64 *b, - float_status *s); -static FloatParts128 *parts128_div(FloatParts128 *a, FloatParts128 *b, - float_status *s); - -#define parts_div(A, B, S) \ - PARTS_GENERIC_64_128(div, A)(A, B, S) - static FloatParts64 *parts64_modrem(FloatParts64 *a, FloatParts64 *b, uint64_t *mod_quot, float_status *s); static FloatParts128 *parts128_modrem(FloatParts128 *a, FloatParts128 *b, @@ -2505,7 +2497,7 @@ float16 float16_div(float16 a, float16 b, float_statu= s *status) =20 float16_unpack_canonical(&pa, a, status); float16_unpack_canonical(&pb, b, status); - pr =3D parts_div(&pa, &pb, status); + pr =3D parts64_div(&pa, &pb, status); =20 return float16_round_pack_canonical(pr, status); } @@ -2517,7 +2509,7 @@ soft_f32_div(float32 a, float32 b, float_status *stat= us) =20 float32_unpack_canonical(&pa, a, status); float32_unpack_canonical(&pb, b, status); - pr =3D parts_div(&pa, &pb, status); + pr =3D parts64_div(&pa, &pb, status); =20 return float32_round_pack_canonical(pr, status); } @@ -2529,7 +2521,7 @@ soft_f64_div(float64 a, float64 b, float_status *stat= us) =20 float64_unpack_canonical(&pa, a, status); float64_unpack_canonical(&pb, b, status); - pr =3D parts_div(&pa, &pb, status); + pr =3D parts64_div(&pa, &pb, status); =20 return float64_round_pack_canonical(pr, status); } @@ -2598,7 +2590,7 @@ float64 float64r32_div(float64 a, float64 b, float_st= atus *status) =20 float64_unpack_canonical(&pa, a, status); float64_unpack_canonical(&pb, b, status); - pr =3D parts_div(&pa, &pb, status); + pr =3D parts64_div(&pa, &pb, status); =20 return float64r32_round_pack_canonical(pr, status); } @@ -2610,7 +2602,7 @@ bfloat16_div(bfloat16 a, bfloat16 b, float_status *st= atus) =20 bfloat16_unpack_canonical(&pa, a, status); bfloat16_unpack_canonical(&pb, b, status); - pr =3D parts_div(&pa, &pb, status); + pr =3D parts64_div(&pa, &pb, status); =20 return bfloat16_round_pack_canonical(pr, status); } @@ -2622,7 +2614,7 @@ float128_div(float128 a, float128 b, float_status *st= atus) =20 float128_unpack_canonical(&pa, a, status); float128_unpack_canonical(&pb, b, status); - pr =3D parts_div(&pa, &pb, status); + pr =3D parts128_div(&pa, &pb, status); =20 return float128_round_pack_canonical(pr, status); } @@ -2636,7 +2628,7 @@ floatx80 floatx80_div(floatx80 a, floatx80 b, float_s= tatus *status) return floatx80_default_nan(status); } =20 - pr =3D parts_div(&pa, &pb, status); + pr =3D parts128_div(&pa, &pb, status); return floatx80_round_pack_canonical(pr, status); } =20 @@ -5488,7 +5480,7 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, =20 /* Compute precise quotient */ q_buf =3D *a; - q =3D parts_div(&q_buf, b, status); + q =3D parts64_div(&q_buf, b, status); =20 /* * Check whether two closest integers can be precisely represented, --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777210915; cv=none; d=zohomail.com; s=zohoarc; b=UCmj0F72t9xymJn3jYSfgu0W+4epfgPO8sU8HiOj78vhV93UaeRdlyRNTaOYYLKZ4p+XGeZu5Nav6IHtjiIhFrdxef8E35+nkygmu/Q+fS0JYh+yXbliympXQYIFvPyNE5k9iQZLDjiUbq0mJgb8W2GRYrZ1cIjms2W+PQIlj8w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777210915; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8b2W9gnYSMYefVuUFksO85W3oVzQ2QH9P08u6esF1Pc=; b=dby8mRw+QFnKoyr5YtPZ+tNKsRXY67tC4skrFBuuhCmhP0cJZJSW5JWC6fA9E8Oi7v94+FP38xfZUVmz+JuFQIUY4U69lu3nlXt9bG26etsiTWovFqu+XsneeRdPNEEVwA2lZMwh6MW2fxKT4RHpmwXBgr0WIljHCuMFsvwJgL0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777210915850185.12001883669006; Sun, 26 Apr 2026 06:41:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjG-0007As-4R; Sun, 26 Apr 2026 09:40:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzj9-00075F-JD for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:51 -0400 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzj7-0008QS-2C for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:51 -0400 Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-c79467f128cso3450969a12.3 for ; Sun, 26 Apr 2026 06:40:48 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210848; x=1777815648; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8b2W9gnYSMYefVuUFksO85W3oVzQ2QH9P08u6esF1Pc=; b=igbknsB2XASvMr8/uyiqr80p6lgkY66IFZEOF6ftr8Xxm+AJwPat6q8YL41p8SdzL/ QHyaiISRrMfjfWXVcamZwQ4P6FGwpWjGwulW9lmA6zFRFIjNTLjg9sPcjIoC5EiWKOUL jvLKGR4ku/Hz7VcQTvhM/aKzoBnERB4XAMqQd6Nn6PNUzlXaqoTs3Iw5ysRz5+Ii1Mk5 GYq7GmQVTCrk1UUZZdY5gvEQmJ24B5lm33Dqz0SeiaveeFpPHtti2PInh4rMa/HSm7hw 5wa1Y0ReP2eDQ6HYEfF4wSWUjfNiurKIJ98VrJ2nvXXTIfupHl6PrnRLVdMiNePn5gQt XMgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210848; x=1777815648; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8b2W9gnYSMYefVuUFksO85W3oVzQ2QH9P08u6esF1Pc=; b=mpv1jfirnpsXCz72nm2HVk1tNWpQuNKoEG8smCJqlQP6/iOSo+zX2JOY30BTjCljB7 fCBwq52rKn5TO+p05c/7ePruzFsbGNLD5BovMs8RTxVD7rBII7NSBbFiuByCHfdMa5Nq WEn/NBmfYJqk0LrdFS2SxoEacM/ma0AQjnPX5Mh9ZH/quGbk17MX+6UQhWmi3jm+a7s1 Q+EawcjRUhPRtkH9g9ZaJjjBjNIEzQM/PrinqYPOjemSmj95G9QzW2TZq1sDRPjdflQP gnwK98kSqTyosBy66vkAvePfXJow4d3fVjL1DZAUoOSmZDm0IcfqG3X5kYt52wb2rMFZ hpoA== X-Gm-Message-State: AOJu0YwSfo0jwNBIc9M4Uhn6ub0UV+7byZHhm9ozLk1PV+92mGowzSft uOeCWmnBb5q1K1gYEFKfkspTPd23SYTn/w+NiT/mV09hmCtSQGa6GypfnsxBBXv1tFHnFaeJmy3 oc6ktxd0= X-Gm-Gg: AeBDiesSdCYofSuhCU1ZMlLgmz52Iylyvri8eKOdKbP1BzDLsCJOCF7SdIbFpLwCsUH G+llVSsS1rXktjulnvAtP5pGC9RHH8wzPLaUXtaOl7H1DhvEEVaWOcxiT1s0/Bf6Wf7upNReNjH wmmunakdLjd2QyCDQxPsqbH6mXqhj84CwNatXj8c2wPJRr8cjJn34cIhPojUrBllfSkwh4BTHUX WD3XvfLPmI2Lv1tOoNbH+/Ryq75ghEHa/xL8jTS2ssUuP/APrr4i8EwTUcZ4aLowq7pJcDkPlMk Olh2Su8I7KTyisSgltZCSvrUPreRz6SBwxK9fw+wKxpXNlNH8zHAUXYEBrB4EgruAJLFTXbINyH wC4iSPnvkfg+DhUQRdNbtTF9s7A7Jt7iRp2OaldliUF857k3FMWH3tarX7BbHUKby5vGBvwnR45 KH0ZHCESRIlPr9mk4hJj6GoWAVzEO1AMJD4u7Vi5WV X-Received: by 2002:a17:903:17c3:b0:2b0:708f:4dc7 with SMTP id d9443c01a7336-2b5f9f3b367mr433182745ad.29.1777210847608; Sun, 26 Apr 2026 06:40:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 15/84] fpu: Drop parts_modrem Date: Sun, 26 Apr 2026 23:38:52 +1000 Message-ID: <20260426134002.865628-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777210917461154100 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_modrem at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index b885eae629..91d8e48ce4 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,14 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static FloatParts64 *parts64_modrem(FloatParts64 *a, FloatParts64 *b, - uint64_t *mod_quot, float_status *s); -static FloatParts128 *parts128_modrem(FloatParts128 *a, FloatParts128 *b, - uint64_t *mod_quot, float_status *s); - -#define parts_modrem(A, B, Q, S) \ - PARTS_GENERIC_64_128(modrem, A)(A, B, Q, S) - static void parts64_sqrt(FloatParts64 *a, float_status *s, const FloatFmt = *f); static void parts128_sqrt(FloatParts128 *a, float_status *s, const FloatFm= t *f); =20 @@ -2642,7 +2634,7 @@ float32 float32_rem(float32 a, float32 b, float_statu= s *status) =20 float32_unpack_canonical(&pa, a, status); float32_unpack_canonical(&pb, b, status); - pr =3D parts_modrem(&pa, &pb, NULL, status); + pr =3D parts64_modrem(&pa, &pb, NULL, status); =20 return float32_round_pack_canonical(pr, status); } @@ -2653,7 +2645,7 @@ float64 float64_rem(float64 a, float64 b, float_statu= s *status) =20 float64_unpack_canonical(&pa, a, status); float64_unpack_canonical(&pb, b, status); - pr =3D parts_modrem(&pa, &pb, NULL, status); + pr =3D parts64_modrem(&pa, &pb, NULL, status); =20 return float64_round_pack_canonical(pr, status); } @@ -2664,7 +2656,7 @@ float128 float128_rem(float128 a, float128 b, float_s= tatus *status) =20 float128_unpack_canonical(&pa, a, status); float128_unpack_canonical(&pb, b, status); - pr =3D parts_modrem(&pa, &pb, NULL, status); + pr =3D parts128_modrem(&pa, &pb, NULL, status); =20 return float128_round_pack_canonical(pr, status); } @@ -2688,7 +2680,7 @@ floatx80 floatx80_modrem(floatx80 a, floatx80 b, bool= mod, !floatx80_unpack_canonical(&pb, b, status)) { return floatx80_default_nan(status); } - pr =3D parts_modrem(&pa, &pb, mod ? quotient : NULL, status); + pr =3D parts128_modrem(&pa, &pb, mod ? quotient : NULL, status); =20 return floatx80_round_pack_canonical(pr, status); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211334; cv=none; d=zohomail.com; s=zohoarc; b=jOlD58dzku8LJXTaFOO/gVOf0SQlm92FDPTfi+n2XbIFnx0AyUiQ+rr+aKJSl4ERGRKlejMi+BsHawOcNPToKStMRwqWt6+isBSdrYzSSd8wc8pT6rhOcA7K9LROv5SAHrpnxNvn1dkvJWoBE4SWSxH8caibDif6K93qjvs5H8E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211334; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Q2IzZbTZBi1/HYn+Kd6HNy8yKoIRF/IKgPHtP/RDOts=; b=Wuzi1qq3ClpdF1xudr5CShpBU4VBuEkRJqdSPgb9w91No+SS0u3aESJmwjjec/0CDHd64sTBExONBUUXt/cOZ1Z+UVOzzS8G/ojkVI0Cxj4EXdQ9hQ2SHzVfMv4IlYk8Vt9ruGC8gcncmHSVTFxV77zn+IDVjml716uHC0bhIrk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211334869397.0846019013094; Sun, 26 Apr 2026 06:48:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjG-0007CG-Sh; Sun, 26 Apr 2026 09:40:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjC-00076X-7e for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:54 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzj9-0008RG-Hv for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:53 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2b2503753efso97383435ad.0 for ; Sun, 26 Apr 2026 06:40:51 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210850; x=1777815650; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q2IzZbTZBi1/HYn+Kd6HNy8yKoIRF/IKgPHtP/RDOts=; b=iFxjp62aSy8WrjbqR6WdVEaatpL0fR3hY6zRff8fWrYnmca7BjZaHmIt+ctY3EmISq t/KsgfVDTXw2tqervA4dJoBSAgn4j0du0Hsj3gmrhvtOBk/CFFSn0B9VHFeIgVaMLMXY r8XA1EOcJPIRMO+Iahu5MlETqcocU76HVwPR6wb+8PbUhJDrds2NOa/sDDlqcCqbfI9/ Wq6QnignvH7TXx56M9SpfHdkxS2Ocs3kSwhanPSrL6F+tukwTGYk0bP1k4K94RbZwCW5 VBhHy0QmNi/B+gBOWD23e9baRy3OUGjAPNaoEk09ITItqdHPImdyJoz+Jb0O8WoPdsVg tK8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210850; x=1777815650; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Q2IzZbTZBi1/HYn+Kd6HNy8yKoIRF/IKgPHtP/RDOts=; b=QpRuLckMuz3qgFsZt5ksXOhZ2uK3812S8F2dx2ae3PJHunKdwg3k3Laf3NnTlfm/O9 JB78fKdCEbdOwjVzPkyrEHOck7I5JBzsqBWIZvOd4/kNbS8T1MAoKmBOWNLHvNQaK1YM z8k1gVnBgdmGyIj3cmBMUH7/10M/w2eD83zljG6nlUv7z9xlPix7LtkS8nWUdV4FFJrL DjuQJV4TsXC/Bge033gfMnLpMt/Wn1tDCGI/rU3YJzq6JAVgeqNYV39RuxttpxwHwoiv ETnn7uPUleYapqhjJMJBslWw9G40TSM6CHWokXItmJ/BtAxreXko54R8QOruTG2ypmQn wy9w== X-Gm-Message-State: AOJu0YwXjUkaMs8oUift3eNRURy+kVWord9LqXSjVef6lzqzN3nAMj1h O8lmmoia5SlSKFJoeuPKEoFTmyv2OpJlGxUYLbVe509/KZDKzqVpiWJMpGac1kx0aFdEulXkrIS 67kclKis= X-Gm-Gg: AeBDietAWH8n6QBhVyxm0lW3HIp0+7/q0qna4aTUjz/Bujf6bmQuTL0VfZpWXTOyV8a Bex15ttUrGh2iuc0KAUtNlwcZ8swo+7c6pENiXq4jkwKLChPDvhadXHuSPtd5FyeT4kI4UVOOdW T4dv+RfswHP2q8YZ9EuR4Uw/Jmg1xX+SY23WAx/EBRJiBOCNKQMID/4ZpdJhEQQgqDl4ocUrPQ6 zbJmQmKtvDOEi6GqgVDnS8vG1HL7Jx0pdAkwlJ8AKEOuYNip+CbBlxIhYOg/sFM/cTY4EAOjhz2 uLie4bLmWDqdqkFMOZ2PO6M2pj80yKitzvKEKag3s8J8QhNZKt+TM4Lu0hpzupKMOjDV7GTAWX2 y2qnuM9fGBek0wPEq2fiknxs4JBsl0czJTajaN0eRQWDtMoNlEO3H/rUFJMoQqmrdJ8/yZTyeuG G5/8FHEXN9OFlXfetHJsje001CAC9GNuWwuuyb2fgkIpPk4CNaxu4= X-Received: by 2002:a17:903:1b45:b0:2b2:4d36:7aa with SMTP id d9443c01a7336-2b5f9fb36ccmr431356495ad.35.1777210850140; Sun, 26 Apr 2026 06:40:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 16/84] fpu: Drop parts_sqrt Date: Sun, 26 Apr 2026 23:38:53 +1000 Message-ID: <20260426134002.865628-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211335366158500 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_sqrt at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 91d8e48ce4..0a6bc6d580 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,12 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static void parts64_sqrt(FloatParts64 *a, float_status *s, const FloatFmt = *f); -static void parts128_sqrt(FloatParts128 *a, float_status *s, const FloatFm= t *f); - -#define parts_sqrt(A, S, F) \ - PARTS_GENERIC_64_128(sqrt, A)(A, S, F) - static bool parts64_round_to_int_normal(FloatParts64 *a, FloatRoundMode rm, int scale, int frac_size); static bool parts128_round_to_int_normal(FloatParts128 *a, FloatRoundMode = r, @@ -4757,7 +4751,7 @@ float16 QEMU_FLATTEN float16_sqrt(float16 a, float_st= atus *status) FloatParts64 p; =20 float16_unpack_canonical(&p, a, status); - parts_sqrt(&p, status, &float16_params); + parts64_sqrt(&p, status, &float16_params); return float16_round_pack_canonical(&p, status); } =20 @@ -4767,7 +4761,7 @@ soft_f32_sqrt(float32 a, float_status *status) FloatParts64 p; =20 float32_unpack_canonical(&p, a, status); - parts_sqrt(&p, status, &float32_params); + parts64_sqrt(&p, status, &float32_params); return float32_round_pack_canonical(&p, status); } =20 @@ -4777,7 +4771,7 @@ soft_f64_sqrt(float64 a, float_status *status) FloatParts64 p; =20 float64_unpack_canonical(&p, a, status); - parts_sqrt(&p, status, &float64_params); + parts64_sqrt(&p, status, &float64_params); return float64_round_pack_canonical(&p, status); } =20 @@ -4840,7 +4834,7 @@ float64 float64r32_sqrt(float64 a, float_status *stat= us) FloatParts64 p; =20 float64_unpack_canonical(&p, a, status); - parts_sqrt(&p, status, &float64_params); + parts64_sqrt(&p, status, &float64_params); return float64r32_round_pack_canonical(&p, status); } =20 @@ -4849,7 +4843,7 @@ bfloat16 QEMU_FLATTEN bfloat16_sqrt(bfloat16 a, float= _status *status) FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, status); - parts_sqrt(&p, status, &bfloat16_params); + parts64_sqrt(&p, status, &bfloat16_params); return bfloat16_round_pack_canonical(&p, status); } =20 @@ -4858,7 +4852,7 @@ float128 QEMU_FLATTEN float128_sqrt(float128 a, float= _status *status) FloatParts128 p; =20 float128_unpack_canonical(&p, a, status); - parts_sqrt(&p, status, &float128_params); + parts128_sqrt(&p, status, &float128_params); return float128_round_pack_canonical(&p, status); } =20 @@ -4869,7 +4863,7 @@ floatx80 floatx80_sqrt(floatx80 a, float_status *s) if (!floatx80_unpack_canonical(&p, a, s)) { return floatx80_default_nan(s); } - parts_sqrt(&p, s, &floatx80_params[s->floatx80_rounding_precision]); + parts128_sqrt(&p, s, &floatx80_params[s->floatx80_rounding_precision]); return floatx80_round_pack_canonical(&p, s); } =20 --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211864; cv=none; d=zohomail.com; s=zohoarc; b=JircA6HrwRqMSUgx3oG6dwT2PFa1IUZIDcp1+KFUG7aa7Rr+tghJhNLFcLl8j3oW4kQFMLaiejQ3nu45lCWdZe4z0vkJJr2/GjYLwHBC4yR8H9og9WkPyOVOd4Vh8KHU2V6tiJ6/CtCBXsRNnWQpXucosbFbz5oKDphb+0bIZkw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211864; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OOhr11zVvt44EpENvwVC0mN/CNtKtYPzWM2DbHLH1/I=; b=DSa0YaTK6Eceo0uztJR6l27qKSJkMoPBDpvaaYTn2ZQzIcNZtuxG8r7zHtM8hlcm9WVrpWpM5OYyB+I8oah5CV/AwFIPafIEKY3cy/U0luFRfG3Byknz46I251OLthIt3mXHZu9qzDlXq4jQe7TeGd06lBWkjtcpIgcDetEOzeA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211864043679.65806396811; Sun, 26 Apr 2026 06:57:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjH-0007Dd-TQ; Sun, 26 Apr 2026 09:40:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjF-00079E-0L for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:57 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjD-0008S5-0r for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:56 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2b941cd869cso6860625ad.1 for ; Sun, 26 Apr 2026 06:40:54 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210853; x=1777815653; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OOhr11zVvt44EpENvwVC0mN/CNtKtYPzWM2DbHLH1/I=; b=SChi2SEvFlIewVxbp7+As4pni2P0n9391p0PHsBh2FmSn1DM/DsocvFuwo+21UDK4z vP7+BPJ67nlpmuXgTFVAjfYNX91n/pCBbqglyG6myr43Qct3s+YaH/drfK7YAfFDA7gZ vA5xvtSXbprVfCRYDJYi04mcb7l4lbi8Ej6RFtC0caPVqKkKPwjk1FntFAmq54Szrrjv HYi6lmMtxYag5SMnEOd+T5vNzCilevX2irU1EyF7u3ZQGsh26nUBMS6ODt2rIErnUccI bohsLlZs+xbckKw9D78jg6L1hm2Zz5E3Yv17qQ/6VTl8zdpeQkY1BKWvPLQPr+BOW/jD n5KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210853; x=1777815653; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=OOhr11zVvt44EpENvwVC0mN/CNtKtYPzWM2DbHLH1/I=; b=dUfOQrM+/0363zvHDP8f0RrG+nu9ICV6EVUwFraGBmCdQKAd4hgBUvyKLf7Na1a0uX 2ejA22W7modKadjxnI23MwP3hIfttyYyYINdHF4u2mnwoJY105JRkidNJTk53YP3Rmjm wl1HLtd7OPZRzVjJYKI+e3hYSoZ0C6ONFkquaEG1JEAPj9uN1D6bxddhW8z9KVi1+ouX mZJds3PVakCdq1SjNp2fTDygaEVWuq2ECzwABSKKiE3vRhWOD3qG9vB2RClEZEMp+Edl TzA+cWhUaJbmgmq4NGVjP90swLiR88uAYAe0eiNyfoyXcq5UFuXunIqFFtwNntSYiVBS 4Jng== X-Gm-Message-State: AOJu0YwLZoJzIpEzxwlUmS0DUQEEwOZkqlXRWzWb+eqDzY14rn3l6k/g mZQ344ujT+ZXJNkvTptylm8/WII7O+QcsBxlxeA13ca3gPUXlky9O7XcB9w5KCECAiEfq8Y0q4X gMlnLFfg= X-Gm-Gg: AeBDievwO5kzRT7tIJIR6PfqgIKri8XZOPunFTW+hpHFb6R26fk/SN1Fg5amy+Y1RYD aArXXaXpwhofTjxgRrDnm/520QerJT+Wt91hpv2kbXTGScuXB7qLEyxlZuK8j29l8GV8MCP/tu+ CjmocQiQOBa5AqixFVe41ZB4nQxPxV+nAL0gPu0tEG9Yv7/kah10CZWNcK4WmBCTuThK5RfDLKX Pzivd6cPRu1+EBNp4J+/zxGAWoCbPJU/vAq+0/rpOCEpPBs/HTBrAwasduPHLpTqBtVzOl0QM7W d0fVvtERC9ThxsH3qRAJRwiycFgAQfjar8sIq5jh41KvLksWmi4e8YwPChfYvfpxRXG3J9lltB8 eiDnF7yL6kwmOKS1U15L7LDL4d4UJ+uf+LTw81iGbD7Y6l8UBXtq+62FWxXms0VOQEzR8iwvWzv aLztgaQvN4nrXSMZGaGg0ATrX8Rh1ZBCQeVaN9CeIx X-Received: by 2002:a17:903:37c4:b0:2b9:601e:da11 with SMTP id d9443c01a7336-2b9601edceemr13915595ad.35.1777210853342; Sun, 26 Apr 2026 06:40:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 17/84] fpu: Drop parts_round_to_int_normal Date: Sun, 26 Apr 2026 23:38:54 +1000 Message-ID: <20260426134002.865628-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211864809154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 22 +++++++--------------- fpu/softfloat-parts.c.inc | 10 +++++----- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 0a6bc6d580..1f03fcf687 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,14 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static bool parts64_round_to_int_normal(FloatParts64 *a, FloatRoundMode rm, - int scale, int frac_size); -static bool parts128_round_to_int_normal(FloatParts128 *a, FloatRoundMode = r, - int scale, int frac_size); - -#define parts_round_to_int_normal(A, R, C, F) \ - PARTS_GENERIC_64_128(round_to_int_normal, A)(A, R, C, F) - static void parts64_round_to_int(FloatParts64 *a, FloatRoundMode rm, int scale, float_status *s, const FloatFmt *fmt); @@ -3365,7 +3357,7 @@ static Int128 float128_to_int128_scalbn(float128 a, F= loatRoundMode rmode, =20 case float_class_normal: case float_class_denormal: - if (parts_round_to_int_normal(&p, rmode, scale, 128 - 2)) { + if (parts128_round_to_int_normal(&p, rmode, scale, 128 - 2)) { flags =3D float_flag_inexact; } =20 @@ -3793,7 +3785,7 @@ static Int128 float128_to_uint128_scalbn(float128 a, = FloatRoundMode rmode, =20 case float_class_normal: case float_class_denormal: - if (parts_round_to_int_normal(&p, rmode, scale, 128 - 2)) { + if (parts128_round_to_int_normal(&p, rmode, scale, 128 - 2)) { flags =3D float_flag_inexact; if (p.cls =3D=3D float_class_zero) { r =3D int128_zero(); @@ -5482,11 +5474,11 @@ static void parts_s390_divide_to_integer(FloatParts= 64 *a, FloatParts64 *b, * of distinguishing partial quotients, so ignore the exception. */ *n =3D *q; - parts_round_to_int_normal(n, - is_q_smallish ? - final_quotient_rounding_mode : - float_round_to_zero, - 0, fmt->frac_size); + parts64_round_to_int_normal(n, + is_q_smallish + ? final_quotient_rounding_mode + : float_round_to_zero, + 0, fmt->frac_size); =20 /* Compute precise remainder */ r_precise_buf =3D *b; diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 6e1800b117..9b719ac5cf 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1127,7 +1127,7 @@ static void partsN(sqrt)(FloatPartsN *a, float_status= *status, * according to the IEC/IEEE Standard for Binary Floating-Point * Arithmetic. * - * parts_round_to_int_normal is an internal helper function for + * partsN(round_to_int_normal) is an internal helper function for * normal numbers only, returning true for inexact but not directly * raising float_flag_inexact. */ @@ -1270,7 +1270,7 @@ static void partsN(round_to_int)(FloatPartsN *a, Floa= tRoundMode rmode, break; case float_class_normal: case float_class_denormal: - if (parts_round_to_int_normal(a, rmode, scale, fmt->frac_size)) { + if (partsN(round_to_int_normal)(a, rmode, scale, fmt->frac_size)) { float_raise(float_flag_inexact, s); } break; @@ -1316,7 +1316,7 @@ static int64_t partsN(float_to_sint)(FloatPartsN *p, = FloatRoundMode rmode, case float_class_normal: case float_class_denormal: /* TODO: N - 2 is frac_size for rounding; could use input fmt. */ - if (parts_round_to_int_normal(p, rmode, scale, N - 2)) { + if (partsN(round_to_int_normal)(p, rmode, scale, N - 2)) { flags =3D float_flag_inexact; } =20 @@ -1384,7 +1384,7 @@ static uint64_t partsN(float_to_uint)(FloatPartsN *p,= FloatRoundMode rmode, case float_class_normal: case float_class_denormal: /* TODO: N - 2 is frac_size for rounding; could use input fmt. */ - if (parts_round_to_int_normal(p, rmode, scale, N - 2)) { + if (partsN(round_to_int_normal)(p, rmode, scale, N - 2)) { flags =3D float_flag_inexact; if (p->cls =3D=3D float_class_zero) { r =3D 0; @@ -1448,7 +1448,7 @@ static int64_t partsN(float_to_sint_modulo)(FloatPart= sN *p, case float_class_normal: case float_class_denormal: /* TODO: N - 2 is frac_size for rounding; could use input fmt. */ - if (parts_round_to_int_normal(p, rmode, 0, N - 2)) { + if (partsN(round_to_int_normal)(p, rmode, 0, N - 2)) { flags =3D float_flag_inexact; } =20 --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211472; cv=none; d=zohomail.com; s=zohoarc; b=QYedWgJ63qY0W0SRbbKQ6VJxvmjRn4VpXHRdXGmBdIFkoWxPdV92ZMMPMmPWz6Svx4PPnJOzdKAkya/d70OJvtanhynkj92RANRDJXdThHp4KdM5oo1WZY2CMEZ0KRug8f87U+HxwRGscSVHtUG5vnGJyCKBFwHONfc5DRsRhXw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211472; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8WiBm4/XBu8RSNVnQd6I4REPIlrsOuCBeW72EivOcJA=; b=MvIP+Brr36l4q81o6q3uzeDDEnY7RteDUkZnlQtFgCNV+miI7NRyBWOyea0zKT5H3IlAj/9tpVd04MBZH8AATx+tVT6CTFXc5qBZdZsh4rUkvTF5teBzpLDISYwPMLrBwwkES85gS3qzxipfwf0WDj7Io/Vz3VwnCO1Du5rLfnM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211472418255.25091841616506; Sun, 26 Apr 2026 06:51:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjK-0007Kk-H5; Sun, 26 Apr 2026 09:41:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjH-0007Cx-G3 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:59 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjF-0008Sf-E1 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:40:59 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b299b3c739so42910915ad.3 for ; Sun, 26 Apr 2026 06:40:57 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210856; x=1777815656; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8WiBm4/XBu8RSNVnQd6I4REPIlrsOuCBeW72EivOcJA=; b=QD8CtH3nw9iJaotWYdtZ6hJxeIU4okyzvkgLhzP9/w16ZVQ3hRjqf5Lj8tzVAspQ5m cGrZJPzIePPnbUz7g32W7/dXLDCGA9/1OZwV6wfCAw7sROzl/R1B6IqVZYKlYoWEskHo kK7mu270TtTCXw6VUtGqzXZMCDfYSAp4bnZ1mhdB20O1NdglM4iD+pwZsege4P5QS51T tEtOphtOH3clCAQDtgnZbKiSxajkx8J1M/N4LfNhkSSP/3YrMkKBnS9KpySp1Ueeh4YZ ZpUnFR6dTMRhm34LH6I3OwYb7eEdp+Q+fl0e/FQNIJdqSOnicW5lqoPAS7uFleAHSZrd z2GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210856; x=1777815656; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8WiBm4/XBu8RSNVnQd6I4REPIlrsOuCBeW72EivOcJA=; b=obzskqN1r59Wcr8D4zcOj5wc9t2h7WxJstcCC+6CU+9gh6BbiRIrDXdav3oYpRVcR8 2o52WpP5bOjOeAmFzbnGksqx8al5haUcNXfmraYlsuvD63Bs7cDvnVQuEkqAnajvnRPz 42+BZoGOlt+J96TJy3OgCg5MAtgGaTz++Dli04aYsiDvhL/jT2xNKgyhb9LPqdScYbXN fXXKzNfYan1dj1RaBw0tpa59HqEh9dyidQzzbq35he5BZNT+FgchO+Hi9pNQsGXE6l5m Nc+nyXcxXqQerBL+vFNwYFCnmVDDavmW34o0PbHi1/fCzNmhRODQKo11SXCP0biw9zPj yAng== X-Gm-Message-State: AOJu0YyxjcuC5xJ+FZ9+TZrrF0iFKP68q8uYtgLCpXRIU1JJPDFFIkm6 Y7rTbANkDDVtrLBAT5zKGtemsFmnNeu2yx8feWBnAHFCPgqs+kWq2Nsn9HodXo5WVKAl7FAH6KK ATiXbXA4= X-Gm-Gg: AeBDietr4Rz6c3IXGq0hPjxNCMUDXkaKybxpjCS+ks+U02fP2w9/PkHNdss7jETW5Oh uCB9UKe7Py9CAu54echJQoRGH5G/nmSZfGiFf0i0p0uDcjtDQlJ4qVhQIvJRhcY1auwiXpnVtHr KXKDAFc5qXIB9iuT1vDjUxHyN1AJ+yOPxG4soOfHVbi4jebnjm7cpiZYlo5NUoUQuyaMcy+Aw4S DIIHC4YWes56mOUuohmiZL2/hocrO/0hJZPDNY7EIuLQ5lMVcIT20sFFtjJJtaBfERy5cI7vXBh vfiDwEht0y3df/7VwIE22tySEwgCdaGDY4/vV1jbr9wTIzQDH+W9WSVfVS2L4B/7yCL/06m/WIG xg0Vwm9FcJDqWuVAR4SSfkc6IDjPfsx4RBrn4/I5ak5jPsLl9S6K0Uqf9ZebUWT2yCdVJW9o/eG f6aWZvxPdDmJ3L6n4DK5WLPzgKN/4AqJztpbDatP71S5pAAGi5rc0= X-Received: by 2002:a17:902:f54d:b0:2b4:5b1a:d09c with SMTP id d9443c01a7336-2b5f9edb4cbmr406198335ad.15.1777210855865; Sun, 26 Apr 2026 06:40:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 18/84] fpu: Drop parts_round_to_int Date: Sun, 26 Apr 2026 23:38:55 +1000 Message-ID: <20260426134002.865628-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211473823158500 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_round_to_int at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 1f03fcf687..e2341871bd 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,16 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static void parts64_round_to_int(FloatParts64 *a, FloatRoundMode rm, - int scale, float_status *s, - const FloatFmt *fmt); -static void parts128_round_to_int(FloatParts128 *a, FloatRoundMode r, - int scale, float_status *s, - const FloatFmt *fmt); - -#define parts_round_to_int(A, R, C, S, F) \ - PARTS_GENERIC_64_128(round_to_int, A)(A, R, C, S, F) - static int64_t parts64_float_to_sint(FloatParts64 *p, FloatRoundMode rmode, int scale, int64_t min, int64_t max, float_status *s); @@ -3128,7 +3118,7 @@ float16 float16_round_to_int(float16 a, float_status = *s) FloatParts64 p; =20 float16_unpack_canonical(&p, a, s); - parts_round_to_int(&p, s->float_rounding_mode, 0, s, &float16_params); + parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &float16_params= ); return float16_round_pack_canonical(&p, s); } =20 @@ -3137,7 +3127,7 @@ float32 float32_round_to_int(float32 a, float_status = *s) FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - parts_round_to_int(&p, s->float_rounding_mode, 0, s, &float32_params); + parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &float32_params= ); return float32_round_pack_canonical(&p, s); } =20 @@ -3146,7 +3136,7 @@ float64 float64_round_to_int(float64 a, float_status = *s) FloatParts64 p; =20 float64_unpack_canonical(&p, a, s); - parts_round_to_int(&p, s->float_rounding_mode, 0, s, &float64_params); + parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &float64_params= ); return float64_round_pack_canonical(&p, s); } =20 @@ -3155,7 +3145,7 @@ bfloat16 bfloat16_round_to_int(bfloat16 a, float_stat= us *s) FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - parts_round_to_int(&p, s->float_rounding_mode, 0, s, &bfloat16_params); + parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &bfloat16_param= s); return bfloat16_round_pack_canonical(&p, s); } =20 @@ -3164,7 +3154,7 @@ float128 float128_round_to_int(float128 a, float_stat= us *s) FloatParts128 p; =20 float128_unpack_canonical(&p, a, s); - parts_round_to_int(&p, s->float_rounding_mode, 0, s, &float128_params); + parts128_round_to_int(&p, s->float_rounding_mode, 0, s, &float128_para= ms); return float128_round_pack_canonical(&p, s); } =20 @@ -3176,7 +3166,7 @@ floatx80 floatx80_round_to_int(floatx80 a, float_stat= us *status) return floatx80_default_nan(status); } =20 - parts_round_to_int(&p, status->float_rounding_mode, 0, status, + parts128_round_to_int(&p, status->float_rounding_mode, 0, status, &floatx80_params[status->floatx80_rounding_precisio= n]); return floatx80_round_pack_canonical(&p, status); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777210885; cv=none; d=zohomail.com; s=zohoarc; b=ec6Fa7fN+7ryfNKAWEM7t0i0I1SIrn2peNfb4dJo4/mTxECft2ZMEJ37wSmGwTfkORXF2PXcCaqIiyz7Z5OH/UYb6QcRxuaAFTdXz7JGIeqn4PZZ+Oj0CGURGdXqhJeAiS65kLd0uPOGQygDT4ZMxNeMIiNEqUspkmyrzCjiCEs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777210885; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RPi8eqP8Ow9+sh4tCETdF2+qkNwPmbuMnr/uQ+0ZhR0=; b=ScfHPMs3tu8VC4KTfBAHgFp4sgAiCQnQIOuwZBBFCeKPNI/FON2DoTidKsWuATBJbQrQu97+cMfvQl8C3RXxmRlw0Jv1jtPtFgvVeXZCeG1iXnV7bc3lnxLMCvoSQduWAMaYkoYjydQm5EJMyS89pJm/ZtQnZ0Rhfw5ueokm7RQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777210885325549.1196134683346; Sun, 26 Apr 2026 06:41:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjN-0007R0-Nk; Sun, 26 Apr 2026 09:41:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjL-0007PC-H4 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:03 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjH-0008TR-TX for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:03 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-3590042fa8eso7174446a91.1 for ; Sun, 26 Apr 2026 06:40:59 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:40:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210858; x=1777815658; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RPi8eqP8Ow9+sh4tCETdF2+qkNwPmbuMnr/uQ+0ZhR0=; b=u7pS/fPKzgpnm8pXq0UMT9JaQyyd472w8o1zKp7haLNmqhXCa8Y9e/JIDIrM64FzYi EV/2DnPfdoyvkGaPJdwm/ZgszH3+xZjKhLZjySe7SYrQng12KqNHPtmOt60I26cAGrIU j8yifazGR5u5bK17UFxOuf2BOgiPl5D+PLqyfWMPsdFl/YYJ8uWmFQEUPrWTU4bwBR3J oP3xpI/qG2WZHC5ZL9kIXy2A6L2o7QSaVUDNdxC3AkzURhu5QV4x+tGYP4aP+gbTYc0H gIuQEuYzxnccLQYu/nd7iy0PLAVOmnQeF1dLXhe9s37TYdtjWbQoTqQKLTboD9DqLETi 4WkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210859; x=1777815659; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=RPi8eqP8Ow9+sh4tCETdF2+qkNwPmbuMnr/uQ+0ZhR0=; b=ep5ySlqcntc9NrMEMQT2K+qXJ8nwUTNFFwARmeS1YNZ79GLMwzdx7iG7z2AETiCdMb zRirL1boG1VNUUFeeMZQxW/vSZUzUugLxG4Lpr2xX6G4IuSQEz00/Z45J1D/8rqcSVav VpzBHfbAj5anQ4OqV+TkDeIYeEz9Ru3L55qd67CrS3PS/q0IX7pOmGbe7BYiuzEa/QMT H015T5UnKA+5f/zXOn7b0UjIUKcspJwqH+T45csNMLKvBydF21+YpkrGqxYdtrYKvzLc G5HrybUweSkRpV1HbOHPNVSHnQ1JsJode/ZBiqG4YqScjCSOnFBbq7KK5Wn+8eJMzk3L Y01A== X-Gm-Message-State: AOJu0Yx8HgouV34u5NTf95/yMnfjFZwZG5RSwi/WWgygn7yFFgUkSAfC oJed6yi9Y3imGaNzSPHYt3D4BXD4dFCuAtZBbyRnWUrZEO+NF71Ca57xPlbl1zCS+v1j6YvyPQS bKE3CNgw= X-Gm-Gg: AeBDiet5vEh2tC0WQo52uNekh+fn3gpaclw7k34aXXYMm7fc4OQmGYdrU5zPuh3xBxg v+ailJ7XZZD8lYDTPgIx0nZBed40hDCfRzJeTtrUKu4BKZnibM9dPj4nj5s6+Yd6YxMduADdI0u WTsVzEIdmALnGz5JxABcOg1U8Gt0CsZ3vzZkZL2ynJ4D1n50FVvtljxairwc9DqnLd1k796VNyf w4W4hOXLRCMfs9bPIRVZ+tOjAT1Ip3LK8LMj4iXi/PPbCJKgmy+V1scV7VzsCKazmDeddY2zopD VAuik0UxkNAjxIABsrB7OtUKh+H3t9Mg1dsTY//yAEcYQHurACLGQ2oJlp6jg0e9mkEanPyf5Yb VfuACxF073Lyk51YIF4ar3rKa7yR8OnksYsptBHA+oiCDXLiSDOo7j7fJZ04JHTtBZfv9TfAZ3Y DbRBPwvRAO4CyzhiLkbGjcwCeUXZFtMdKWFahGE43E5uRwCHtc0W8= X-Received: by 2002:a17:903:1a88:b0:2b2:5ec6:dcf6 with SMTP id d9443c01a7336-2b5f9e85f20mr401989715ad.8.1777210858434; Sun, 26 Apr 2026 06:40:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 19/84] fpu: Drop parts_float_to_sint Date: Sun, 26 Apr 2026 23:38:56 +1000 Message-ID: <20260426134002.865628-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777210887642154100 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_float_to_sint at each call site. Note that there was a duplicate macro redefinition. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 49 ++++++++++++++++++------------------------------- 1 file changed, 18 insertions(+), 31 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index e2341871bd..42ef537e12 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,16 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static int64_t parts64_float_to_sint(FloatParts64 *p, FloatRoundMode rmode, - int scale, int64_t min, int64_t max, - float_status *s); -static int64_t parts128_float_to_sint(FloatParts128 *p, FloatRoundMode rmo= de, - int scale, int64_t min, int64_t max, - float_status *s); - -#define parts_float_to_sint(P, R, Z, MN, MX, S) \ - PARTS_GENERIC_64_128(float_to_sint, P)(P, R, Z, MN, MX, S) - static uint64_t parts64_float_to_uint(FloatParts64 *p, FloatRoundMode rmod= e, int scale, uint64_t max, float_status *s); @@ -814,9 +804,6 @@ static void parts64_sint_to_float(FloatParts64 *p, int6= 4_t a, static void parts128_sint_to_float(FloatParts128 *p, int64_t a, int scale, float_status *s); =20 -#define parts_float_to_sint(P, R, Z, MN, MX, S) \ - PARTS_GENERIC_64_128(float_to_sint, P)(P, R, Z, MN, MX, S) - #define parts_sint_to_float(P, I, Z, S) \ PARTS_GENERIC_64_128(sint_to_float, P)(P, I, Z, S) =20 @@ -3181,7 +3168,7 @@ int8_t float16_to_int8_scalbn(float16 a, FloatRoundMo= de rmode, int scale, FloatParts64 p; =20 float16_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT8_MIN, INT8_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT8_MIN, INT8_MAX, s); } =20 int16_t float16_to_int16_scalbn(float16 a, FloatRoundMode rmode, int scale, @@ -3190,7 +3177,7 @@ int16_t float16_to_int16_scalbn(float16 a, FloatRound= Mode rmode, int scale, FloatParts64 p; =20 float16_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s= ); } =20 int32_t float16_to_int32_scalbn(float16 a, FloatRoundMode rmode, int scale, @@ -3199,7 +3186,7 @@ int32_t float16_to_int32_scalbn(float16 a, FloatRound= Mode rmode, int scale, FloatParts64 p; =20 float16_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s= ); } =20 int64_t float16_to_int64_scalbn(float16 a, FloatRoundMode rmode, int scale, @@ -3208,7 +3195,7 @@ int64_t float16_to_int64_scalbn(float16 a, FloatRound= Mode rmode, int scale, FloatParts64 p; =20 float16_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s= ); } =20 int16_t float32_to_int16_scalbn(float32 a, FloatRoundMode rmode, int scale, @@ -3217,7 +3204,7 @@ int16_t float32_to_int16_scalbn(float32 a, FloatRound= Mode rmode, int scale, FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s= ); } =20 int32_t float32_to_int32_scalbn(float32 a, FloatRoundMode rmode, int scale, @@ -3226,7 +3213,7 @@ int32_t float32_to_int32_scalbn(float32 a, FloatRound= Mode rmode, int scale, FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s= ); } =20 int64_t float32_to_int64_scalbn(float32 a, FloatRoundMode rmode, int scale, @@ -3235,7 +3222,7 @@ int64_t float32_to_int64_scalbn(float32 a, FloatRound= Mode rmode, int scale, FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s= ); } =20 int16_t float64_to_int16_scalbn(float64 a, FloatRoundMode rmode, int scale, @@ -3244,7 +3231,7 @@ int16_t float64_to_int16_scalbn(float64 a, FloatRound= Mode rmode, int scale, FloatParts64 p; =20 float64_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s= ); } =20 int32_t float64_to_int32_scalbn(float64 a, FloatRoundMode rmode, int scale, @@ -3253,7 +3240,7 @@ int32_t float64_to_int32_scalbn(float64 a, FloatRound= Mode rmode, int scale, FloatParts64 p; =20 float64_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s= ); } =20 int64_t float64_to_int64_scalbn(float64 a, FloatRoundMode rmode, int scale, @@ -3262,7 +3249,7 @@ int64_t float64_to_int64_scalbn(float64 a, FloatRound= Mode rmode, int scale, FloatParts64 p; =20 float64_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s= ); } =20 int8_t bfloat16_to_int8_scalbn(bfloat16 a, FloatRoundMode rmode, int scale, @@ -3271,7 +3258,7 @@ int8_t bfloat16_to_int8_scalbn(bfloat16 a, FloatRound= Mode rmode, int scale, FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT8_MIN, INT8_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT8_MIN, INT8_MAX, s); } =20 int16_t bfloat16_to_int16_scalbn(bfloat16 a, FloatRoundMode rmode, int sca= le, @@ -3280,7 +3267,7 @@ int16_t bfloat16_to_int16_scalbn(bfloat16 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s= ); } =20 int32_t bfloat16_to_int32_scalbn(bfloat16 a, FloatRoundMode rmode, int sca= le, @@ -3289,7 +3276,7 @@ int32_t bfloat16_to_int32_scalbn(bfloat16 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s= ); } =20 int64_t bfloat16_to_int64_scalbn(bfloat16 a, FloatRoundMode rmode, int sca= le, @@ -3298,7 +3285,7 @@ int64_t bfloat16_to_int64_scalbn(bfloat16 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s); + return parts64_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s= ); } =20 static int32_t float128_to_int32_scalbn(float128 a, FloatRoundMode rmode, @@ -3307,7 +3294,7 @@ static int32_t float128_to_int32_scalbn(float128 a, F= loatRoundMode rmode, FloatParts128 p; =20 float128_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s); + return parts128_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, = s); } =20 static int64_t float128_to_int64_scalbn(float128 a, FloatRoundMode rmode, @@ -3316,7 +3303,7 @@ static int64_t float128_to_int64_scalbn(float128 a, F= loatRoundMode rmode, FloatParts128 p; =20 float128_unpack_canonical(&p, a, s); - return parts_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s); + return parts128_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, = s); } =20 static Int128 float128_to_int128_scalbn(float128 a, FloatRoundMode rmode, @@ -3382,7 +3369,7 @@ static int32_t floatx80_to_int32_scalbn(floatx80 a, F= loatRoundMode rmode, if (!floatx80_unpack_canonical(&p, a, s)) { parts128_default_nan(&p, s); } - return parts_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s); + return parts128_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, = s); } =20 static int64_t floatx80_to_int64_scalbn(floatx80 a, FloatRoundMode rmode, @@ -3393,7 +3380,7 @@ static int64_t floatx80_to_int64_scalbn(floatx80 a, F= loatRoundMode rmode, if (!floatx80_unpack_canonical(&p, a, s)) { parts128_default_nan(&p, s); } - return parts_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s); + return parts128_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, = s); } =20 int8_t float16_to_int8(float16 a, float_status *s) --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211833; cv=none; d=zohomail.com; s=zohoarc; b=mERoTzCfTZHPYUdFw6xJWmyrzhNzATEDUoVMtuMtkP33Edu+b7zj+wzlzLWjtjP427S56mz1YU9bAnzBIC9Ij3h7MLVze/CHBkaDBU55PZtkPNr1nRexopp68WpR+i1CMjP++rHc/HauniDI3xSX3Vc0BRI8TUs+ebUIc17C8SY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211833; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QqUVZBGdiF4swkt5DYE6+XQVh3irizfDXygfT+4hhNs=; b=g54/CEyrxM/5cnMLT4oKtEyS2ElABChdqzHdwQZne3092cphWuIMrF3c3lRmbrn0mWBFTFI8dNtCwQymjknhL1RO30e0LaAA6zm8y0PlsQP5F+sU4++giiwr1tVOCT6BhymFsHS3j2AiXTXnOVPbQIV9KwpUUnk7hk+3Evv4H2I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211833371804.0452710635457; Sun, 26 Apr 2026 06:57:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjP-0007Sc-Cc; Sun, 26 Apr 2026 09:41:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjN-0007Qu-A2 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:05 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjK-0008Ty-V1 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:04 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-c79467f11abso6277976a12.2 for ; Sun, 26 Apr 2026 06:41:02 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.40.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210861; x=1777815661; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QqUVZBGdiF4swkt5DYE6+XQVh3irizfDXygfT+4hhNs=; b=uTRncQMOmPFCvwacsuNosN5nTOsWcgsVXMjWVrYfZ1DL/halNUrcCfA8FaJ/u29lyK AL59ugLb8HU185IhNjkUkUK4Fkv4qOwly6byVEscTye+ID954VP2Bb24zUBD7OF1FTek FJiHt3HqBwi+IuVWdzTXkoWjxmuknhqYasL93Pprbf5agzUpFhRmlJqDmu9zRzm9BhQ5 A+G0s73ssUS789k973bAh7/XK7m9Gy4FgwQbOihAE5i0/ImxKL4PhLeN4LKof3YMuAOD ZVp9JIEE4AWeqUuF7NvX4sW0LSnwMq+3cc8lEKuOWhX5BPqpuo34rzovlQrY7l77KLY4 tJyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210861; x=1777815661; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=QqUVZBGdiF4swkt5DYE6+XQVh3irizfDXygfT+4hhNs=; b=pqV3q+HsWMZm8c5GaWfy/WFmpItjzqY1gEfY4BaaJW+JcSgVqOIuMqi//w9gZY5F8c n7N46B5sdr0C/OgtIsHggeKuBpCadmr6veUwxNa9LJSOwaGx4RgOBDrz3GGJtA/oN2CI vUBkgGzN2Ee5nIS/7prjYa3Z4p7OXlvIcBTLXBAHwn/gTFHUowe2LE1GGZfT8b300CdU RIfBhJswiFPs9BZhD7v3mnaw3D7B5jHM4syt1zrBPcABb5o5SllJUbPftUcMcwpzj1u6 S9rOeuLPA/jxuzuir9QmjIJi8FmtQfjr3V58aLMxcqIPDxR4Pb6Firjb7RIqCfQ4NdJt 2rsQ== X-Gm-Message-State: AOJu0Yy8dfjeb2YAvSMnTqoLU2wN+4NNYdCM9z9YjDDiRxwaltyNitEO 3px/U0cLS5jHoOm0GdlT9kKdHlT5wDaIrZx42zFQ5XxfU3enF054VrHVxz1HImOrVI88PZHxIEk orjMZp10= X-Gm-Gg: AeBDievjkhZb04yY3Btmii1OHhobFK0zuIj4fd/CyTgwjGw+QQcGj+nrGZHWjCsUJSd tnEq/VaCG8A42U+4/WxrnzehdZvo2HbXKJJTIrrB+XERI8c0kKMLVPuUI9FuiI95H2JDv9FARr6 ATxvZW0NJY32agmzBHmsnqpsCZLl/DJCgVb3geIRhBhg9bv8/4CFx11laGu8wdgiPrltHExfp+k 9Z8Sxsm7+Ty8oC1HKzBriYLy5lU6ETmoNuUu1+aOUtnmRb/YbdbswvUxUWb15p6Z9UdRdPzy/S1 d4mB5u2QU34Ciin0AsbZ1vUYjO1OoRqoL6jKEr+JYtGo6hjkio2w4nS/Na7spEQwnPZhTcha/DZ n3gVd/VV55A2/RKys99i7ghXx5jMbNgLy+yRSgCSwbikh3w2SNFCx1MyObNMgiLJsX+4NuArSZJ oHz2X7ttBrrmC0va4uI4SWJfWsMekn7kBy1VeZFktC X-Received: by 2002:a17:902:b695:b0:2b2:cfdf:10f2 with SMTP id d9443c01a7336-2b5f9f4e6e5mr299530795ad.20.1777210860990; Sun, 26 Apr 2026 06:41:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 20/84] fpu: Drop parts_float_to_uint Date: Sun, 26 Apr 2026 23:38:57 +1000 Message-ID: <20260426134002.865628-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211835006158500 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_float_to_uint at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 42 ++++++++++++++++-------------------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 42ef537e12..869b592cd0 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,16 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static uint64_t parts64_float_to_uint(FloatParts64 *p, FloatRoundMode rmod= e, - int scale, uint64_t max, - float_status *s); -static uint64_t parts128_float_to_uint(FloatParts128 *p, FloatRoundMode rm= ode, - int scale, uint64_t max, - float_status *s); - -#define parts_float_to_uint(P, R, Z, M, S) \ - PARTS_GENERIC_64_128(float_to_uint, P)(P, R, Z, M, S) - static int64_t parts64_float_to_sint_modulo(FloatParts64 *p, FloatRoundMode rmode, int bitsm1, float_status *s); @@ -3596,7 +3586,7 @@ uint8_t float16_to_uint8_scalbn(float16 a, FloatRound= Mode rmode, int scale, FloatParts64 p; =20 float16_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT8_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT8_MAX, s); } =20 uint16_t float16_to_uint16_scalbn(float16 a, FloatRoundMode rmode, int sca= le, @@ -3605,7 +3595,7 @@ uint16_t float16_to_uint16_scalbn(float16 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 float16_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT16_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT16_MAX, s); } =20 uint32_t float16_to_uint32_scalbn(float16 a, FloatRoundMode rmode, int sca= le, @@ -3614,7 +3604,7 @@ uint32_t float16_to_uint32_scalbn(float16 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 float16_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT32_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT32_MAX, s); } =20 uint64_t float16_to_uint64_scalbn(float16 a, FloatRoundMode rmode, int sca= le, @@ -3623,7 +3613,7 @@ uint64_t float16_to_uint64_scalbn(float16 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 float16_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT64_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT64_MAX, s); } =20 uint16_t float32_to_uint16_scalbn(float32 a, FloatRoundMode rmode, int sca= le, @@ -3632,7 +3622,7 @@ uint16_t float32_to_uint16_scalbn(float32 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT16_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT16_MAX, s); } =20 uint32_t float32_to_uint32_scalbn(float32 a, FloatRoundMode rmode, int sca= le, @@ -3641,7 +3631,7 @@ uint32_t float32_to_uint32_scalbn(float32 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT32_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT32_MAX, s); } =20 uint64_t float32_to_uint64_scalbn(float32 a, FloatRoundMode rmode, int sca= le, @@ -3650,7 +3640,7 @@ uint64_t float32_to_uint64_scalbn(float32 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT64_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT64_MAX, s); } =20 uint16_t float64_to_uint16_scalbn(float64 a, FloatRoundMode rmode, int sca= le, @@ -3659,7 +3649,7 @@ uint16_t float64_to_uint16_scalbn(float64 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 float64_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT16_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT16_MAX, s); } =20 uint32_t float64_to_uint32_scalbn(float64 a, FloatRoundMode rmode, int sca= le, @@ -3668,7 +3658,7 @@ uint32_t float64_to_uint32_scalbn(float64 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 float64_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT32_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT32_MAX, s); } =20 uint64_t float64_to_uint64_scalbn(float64 a, FloatRoundMode rmode, int sca= le, @@ -3677,7 +3667,7 @@ uint64_t float64_to_uint64_scalbn(float64 a, FloatRou= ndMode rmode, int scale, FloatParts64 p; =20 float64_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT64_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT64_MAX, s); } =20 uint8_t bfloat16_to_uint8_scalbn(bfloat16 a, FloatRoundMode rmode, @@ -3686,7 +3676,7 @@ uint8_t bfloat16_to_uint8_scalbn(bfloat16 a, FloatRou= ndMode rmode, FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT8_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT8_MAX, s); } =20 uint16_t bfloat16_to_uint16_scalbn(bfloat16 a, FloatRoundMode rmode, @@ -3695,7 +3685,7 @@ uint16_t bfloat16_to_uint16_scalbn(bfloat16 a, FloatR= oundMode rmode, FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT16_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT16_MAX, s); } =20 uint32_t bfloat16_to_uint32_scalbn(bfloat16 a, FloatRoundMode rmode, @@ -3704,7 +3694,7 @@ uint32_t bfloat16_to_uint32_scalbn(bfloat16 a, FloatR= oundMode rmode, FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT32_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT32_MAX, s); } =20 uint64_t bfloat16_to_uint64_scalbn(bfloat16 a, FloatRoundMode rmode, @@ -3713,7 +3703,7 @@ uint64_t bfloat16_to_uint64_scalbn(bfloat16 a, FloatR= oundMode rmode, FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT64_MAX, s); + return parts64_float_to_uint(&p, rmode, scale, UINT64_MAX, s); } =20 static uint32_t float128_to_uint32_scalbn(float128 a, FloatRoundMode rmode, @@ -3722,7 +3712,7 @@ static uint32_t float128_to_uint32_scalbn(float128 a,= FloatRoundMode rmode, FloatParts128 p; =20 float128_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT32_MAX, s); + return parts128_float_to_uint(&p, rmode, scale, UINT32_MAX, s); } =20 static uint64_t float128_to_uint64_scalbn(float128 a, FloatRoundMode rmode, @@ -3731,7 +3721,7 @@ static uint64_t float128_to_uint64_scalbn(float128 a,= FloatRoundMode rmode, FloatParts128 p; =20 float128_unpack_canonical(&p, a, s); - return parts_float_to_uint(&p, rmode, scale, UINT64_MAX, s); + return parts128_float_to_uint(&p, rmode, scale, UINT64_MAX, s); } =20 static Int128 float128_to_uint128_scalbn(float128 a, FloatRoundMode rmode, --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211856; cv=none; d=zohomail.com; s=zohoarc; b=lN5dJkXQj6GgMubD6Gz4e39dxQ8vAnpz7l0Tn+GVQc6PzkfXD8ziG1qBss5tDkk5PHAXJdFUBloRWZOdLmz1Vt/EQhA3rt7ME6g+2GPPb9zmPa5xzUh5aKT/K9HzyzFfUvILjgF0CPmUG9XReMG5Wr5k3zmwA5cJtJxGogr8FN4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211856; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6VNgPUkSJ4mPnaVXZdV15UFqpYzD21LWZWEvfnl6Hto=; b=LzReGrjDUF7tYPJxoDFV9z9oA1WVUQapRWj0g3KaVaORcRvBKD1TKjLGXVf4HZZRxYc5l87+m7TLwPFlCzOkNPMk+/nWF7HpYLlSQ4/7XQpeO3o6NMI3JRlRClcGsNhQsUgXAyTKKjbWqOfEX3dYgEaqhWVof2cNdrjPxw6Zbag= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721185637436.427118651115165; Sun, 26 Apr 2026 06:57:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjP-0007Sh-LJ; Sun, 26 Apr 2026 09:41:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjO-0007S6-VV for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:06 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjN-0008Uo-36 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:06 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2b2589c26e3so87797875ad.1 for ; Sun, 26 Apr 2026 06:41:04 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210864; x=1777815664; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6VNgPUkSJ4mPnaVXZdV15UFqpYzD21LWZWEvfnl6Hto=; b=df+ZDg8Tmphy6YL7SbWalgzFY9zgQhSxbZxbjj+k6q+7X63hyy5+vjkRD9tgqJekEi XHDPiv/20Czaf2EYJK4UdnEUJ+cpiRU/da6mlPxx5AwHlSlsOYbxwtqD+B7Etw+XuQPo Vnb9IgmyAsECqvBjPeijPppnlIfVYY3fJ9xlEjl6HapwC0/Plg35+CAOAqyaNR06PH/m PLMbdvYfjfF4ZSEyl0EtdmXQdtFUxPL+9lFcXFf+q3YiVaWZGmmWh/60wClwdf6qXxsX D4gwu6ObfjuDh1PEKzGUiXrDU5XOHRuIp0D5PfbHMbsWZZzRxfWWjTPnfyrgNgZgR8GX Nm+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210864; x=1777815664; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6VNgPUkSJ4mPnaVXZdV15UFqpYzD21LWZWEvfnl6Hto=; b=K5hUfC3z/hXSrhxMDYz4iFY3fDRaK6S30xzi9afQdytaX7QsVWWcYtzhPfR8mxTS6I 3fEGPK4NFf43QCrIL5UarwZ8a9VT0E8hfXj/QozIwBxncQVztIetOLE5KjETQDBYvsF6 w4Az0TpYXziT/4BvwB3fLfsPBVNlR41Wkx4wC4+KQh4HIMrltVKxCBqDJlZelLG0VgYN i4ku8m0SKhP1W/n+YemHtejcX8IxXHtBEGTgELLD7m1ja4PI4veXpwI9MyqxPRzCVPZX DkxUd33RiXlGxnWvv+iW+kRrw0wXB5KvkHG2C4vbXIyYneirS6O7l1arBpT5eOUl8Sxa zA4Q== X-Gm-Message-State: AOJu0YwTgvp+AwytsInpZAcsVpaXreGbEnlokdfyqUaBtP+olwwZNlqi UGE1rmCoCEsk0FX4P+F156H+kuKUpppO3RpSOIub5JqkSRD3+8VGyLSN7ba4WehW/7i3VVqP4uf 2yO9jSo8= X-Gm-Gg: AeBDietqog2K8oI+8hv4PWtrLBGd0xXhC3didzK/axrwlXuQ9rnvdd7Yc8i6bvdJj+C mm485tlyq/UXCoMX+ppj/uGlFW8Uo2N/xrVR7W0as1wauhR/FIxJWxqZAxqZctofldm4G8TF/gc Esxb5naYy+eTxUGmwJkokCkESwZiO+rlmwp/MAr+bi05xalrnaQeG13N5iiMrpCHeyqF0LaqeaB euzZ6gzPBWeHg1RmulghyHYVybPCGdzJ4ivcU+FsLvL3CX/39ZAGqI0Musa2QHIAMcGrW1SJTb8 0pwkTzMxLQSEgTY8OgTxukyGT+QuFLuKdPaFnu0RysJVbjit3ulWZX57ze0xrCagLrs4fn2TGN6 Q2BKACAIABufa5arlIcja8KEnWIkBbFZ0dfMMrwF1s3+99Zl196842Wag625CEWsdGFdn+xfGwI 7Dxd9iR4BEF9ft5GpArULR7ybN7GpTVGv8J1la9bnN X-Received: by 2002:a17:902:ee84:b0:2b2:4697:78f4 with SMTP id d9443c01a7336-2b5f9fe094fmr331295385ad.31.1777210863581; Sun, 26 Apr 2026 06:41:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 21/84] fpu: Drop parts_float_to_sint_modulo Date: Sun, 26 Apr 2026 23:38:58 +1000 Message-ID: <20260426134002.865628-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211857085158500 Content-Type: text/plain; charset="utf-8" Use parts64_float_to_sint_modulo at each call site. That leaves parts128_float_to_sint_modulo unused, so move the whole function back to softfloat.c and specialize for FloatParts64. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 84 +++++++++++++++++++++++++++++++++------ fpu/softfloat-parts.c.inc | 79 ------------------------------------ 2 files changed, 72 insertions(+), 91 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 869b592cd0..0b2638c34b 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,16 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static int64_t parts64_float_to_sint_modulo(FloatParts64 *p, - FloatRoundMode rmode, - int bitsm1, float_status *s); -static int64_t parts128_float_to_sint_modulo(FloatParts128 *p, - FloatRoundMode rmode, - int bitsm1, float_status *s); - -#define parts_float_to_sint_modulo(P, R, M, S) \ - PARTS_GENERIC_64_128(float_to_sint_modulo, P)(P, R, M, S) - static void parts64_sint_to_float(FloatParts64 *p, int64_t a, int scale, float_status *s); static void parts128_sint_to_float(FloatParts128 *p, int64_t a, @@ -3558,13 +3548,83 @@ int64_t bfloat16_to_int64_round_to_zero(bfloat16 a,= float_status *s) return bfloat16_to_int64_scalbn(a, float_round_to_zero, 0, s); } =20 +/* + * Like partsN(float_to_sint), except do not saturate the result. + * Instead, return the rounded unbounded precision two's compliment result, + * modulo 2**(bitsm1 + 1). + */ +static int64_t parts64_float_to_sint_modulo(FloatParts64 *p, + FloatRoundMode rmode, + int bitsm1, float_status *s) +{ + int flags =3D 0; + uint64_t r; + bool overflow =3D false; + + switch (p->cls) { + case float_class_snan: + flags |=3D float_flag_invalid_snan; + /* fall through */ + case float_class_qnan: + flags |=3D float_flag_invalid; + r =3D 0; + break; + + case float_class_inf: + overflow =3D true; + r =3D 0; + break; + + case float_class_zero: + return 0; + + case float_class_normal: + case float_class_denormal: + /* TODO: 64 - 2 is frac_size for rounding; could use input fmt. */ + if (parts64_round_to_int_normal(p, rmode, 0, 64 - 2)) { + flags =3D float_flag_inexact; + } + + if (p->exp <=3D DECOMPOSED_BINARY_POINT) { + r =3D p->frac >> (DECOMPOSED_BINARY_POINT - p->exp); + if (p->exp < bitsm1) { + /* Result in range. */ + } else if (p->exp =3D=3D bitsm1) { + /* The only in-range value is INT_MIN. */ + overflow =3D !p->sign || p->frac !=3D DECOMPOSED_IMPLICIT_= BIT; + } else { + overflow =3D true; + } + } else { + /* Overflow, but there might still be bits to return. */ + int shl =3D p->exp - DECOMPOSED_BINARY_POINT; + r =3D (shl < 64 ? p->frac << shl : 0); + overflow =3D true; + } + + if (p->sign) { + r =3D -r; + } + break; + + default: + g_assert_not_reached(); + } + + if (overflow) { + flags =3D float_flag_invalid | float_flag_invalid_cvti; + } + float_raise(flags, s); + return r; +} + int32_t float64_to_int32_modulo(float64 a, FloatRoundMode rmode, float_status *s) { FloatParts64 p; =20 float64_unpack_canonical(&p, a, s); - return parts_float_to_sint_modulo(&p, rmode, 31, s); + return parts64_float_to_sint_modulo(&p, rmode, 31, s); } =20 int64_t float64_to_int64_modulo(float64 a, FloatRoundMode rmode, @@ -3573,7 +3633,7 @@ int64_t float64_to_int64_modulo(float64 a, FloatRound= Mode rmode, FloatParts64 p; =20 float64_unpack_canonical(&p, a, s); - return parts_float_to_sint_modulo(&p, rmode, 63, s); + return parts64_float_to_sint_modulo(&p, rmode, 63, s); } =20 /* diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 9b719ac5cf..d8eb9f5b78 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1415,85 +1415,6 @@ static uint64_t partsN(float_to_uint)(FloatPartsN *p= , FloatRoundMode rmode, return r; } =20 -/* - * Like partsN(float_to_sint), except do not saturate the result. - * Instead, return the rounded unbounded precision two's compliment result, - * modulo 2**(bitsm1 + 1). - */ -static int64_t partsN(float_to_sint_modulo)(FloatPartsN *p, - FloatRoundMode rmode, - int bitsm1, float_status *s) -{ - int flags =3D 0; - uint64_t r; - bool overflow =3D false; - - switch (p->cls) { - case float_class_snan: - flags |=3D float_flag_invalid_snan; - /* fall through */ - case float_class_qnan: - flags |=3D float_flag_invalid; - r =3D 0; - break; - - case float_class_inf: - overflow =3D true; - r =3D 0; - break; - - case float_class_zero: - return 0; - - case float_class_normal: - case float_class_denormal: - /* TODO: N - 2 is frac_size for rounding; could use input fmt. */ - if (partsN(round_to_int_normal)(p, rmode, 0, N - 2)) { - flags =3D float_flag_inexact; - } - - if (p->exp <=3D DECOMPOSED_BINARY_POINT) { - /* - * Because we rounded to integral, and exp < 64, - * we know frac_low is zero. - */ - r =3D p->frac_hi >> (DECOMPOSED_BINARY_POINT - p->exp); - if (p->exp < bitsm1) { - /* Result in range. */ - } else if (p->exp =3D=3D bitsm1) { - /* The only in-range value is INT_MIN. */ - overflow =3D !p->sign || p->frac_hi !=3D DECOMPOSED_IMPLIC= IT_BIT; - } else { - overflow =3D true; - } - } else { - /* Overflow, but there might still be bits to return. */ - int shl =3D p->exp - DECOMPOSED_BINARY_POINT; - if (shl < N) { - frac_shl(p, shl); - r =3D p->frac_hi; - } else { - r =3D 0; - } - overflow =3D true; - } - - if (p->sign) { - r =3D -r; - } - break; - - default: - g_assert_not_reached(); - } - - if (overflow) { - flags =3D float_flag_invalid | float_flag_invalid_cvti; - } - float_raise(flags, s); - return r; -} - /* * Integer to float conversions * --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211207; cv=none; d=zohomail.com; s=zohoarc; b=eotHwgPFNRbj8uq1UZgiAWJC3sadcxyPUjALrcxWs/5SQl6BMdggd0MXxGTQB+3GAGkM5LDIfBmWnDJTKwwLHQqFP10ofpwWoBuA7eu1t2rtxQnQxxqnW0phA2hrJjktCPu57joCOUEoMegByxey7nwVwetVNH7HNUgVhOMpB24= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211207; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zENj2HL3D0APPnrwzC9d7FulsD17Lin4fmHz2/94vtM=; b=aI4qc041jH2kcaGaFLklFSIWSAmJ5z9AIUcF4mKJJl5HL9G5RP+3QY5xgUB5jLfHoSP/RX98XHVTIVrShAJPZxFL9s/bxut+CB3/9EnVSbqug/cRfrBxgEcEaFCB+rRsdhWvVdmWVSw5+Q4v45BxpiNGWJT3cdlS+gEhVv0KMoY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211207964693.9768654330021; Sun, 26 Apr 2026 06:46:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjT-0007VW-HT; Sun, 26 Apr 2026 09:41:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjR-0007UF-Mv for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:09 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjQ-00005G-7C for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:09 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2b25cf1b5f0so51270855ad.3 for ; Sun, 26 Apr 2026 06:41:07 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210867; x=1777815667; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zENj2HL3D0APPnrwzC9d7FulsD17Lin4fmHz2/94vtM=; b=s1T/Tb4kv9PLHjl//NXkmOhGCR1IP89qI3PzeHqADbSmBY4qGOAdBkKGfwkRtdeFTb gglvEkxRfzviLzdoLgg1w7gMEGmMMzaArl8mI3USmAisN6BwTZHUjkw5jrxeTTEp8c2e 8sorzjTyRKSTFhQo8OEZB7PAwn5IeAfyE/j0YnWWMy8OKX1iSz5V7ba7dW9qmhdLIUwW /K6VPQU2/DCRjJqEdFFaiEp7MWXG3AIkPnMDf+wSbnKCI6oRJVIADN1tNMis/W/wazev tbKpAx8g3MXdZkQEE1YYtln0zUWkxSiy2MExDXieV9QMaqrC5q+71Ru/XGnkrcnF6UbY r4tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210867; x=1777815667; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=zENj2HL3D0APPnrwzC9d7FulsD17Lin4fmHz2/94vtM=; b=Ej9P6YmkE+zy/Xyp7z1uadweZ5KY1iOHjFR0nH6cVGGoL04nQIPyfjUjmAWT62yCJ1 U9acRQWOOqSEOq0qIdIjeH5zX9PzaZFc11Ij3lRnK2N6WIIGIHLQXExdwVz9m9AulBmN 2E2C695SorUw+wh+S3jJKdchxxN/z7nluGlIcoPACfBsWtdpk9VLJ2PYvWzHpaGcVxR5 yosnJ7RvFPiLuNmBTfZSX9X/HddMvqBcyMdJvpdEub8gM5HbSth6l/S5F93pGfH33ufJ JuFCVr6hjVBpzeojOBI0XOvJ3kH/F3bhSq0yow+hcUyJJN1cYtYjJ0FzFEBBHRuKGK3x 4r8A== X-Gm-Message-State: AOJu0YwR1XZ73YHHhtZ8oBXl/p7WkidQRaFIy0SZy9PzmEfeRqj8FUbf Xkem90nQLHAe5Da9mXG4jIujxZW0uFsVnmYQyamPAmuqez7/IF4qW2Zjgxxu4GRgDIbrYNlCjAR 6GqJ/YeI= X-Gm-Gg: AeBDiesOmSYBHMAuZYbJmlD48OAIaDWQ0B+6ooME1/XhuA+xm48/wAMohCp0kpKnNGm qw3dM275aSNRipTpm9/CNMhNQuuzAhEV96hBCIrCO7ClINZI+c97wUFoSFwANkc2vQeZV6dN26o MK1z8NpK37772I5kK95zgvSBft+ch3r7k/H+8SdqnwiIzXyS+XzjZnDSl9vnYXytB32QHRLK/Z8 l6cfA5IHLlCrtdKhlcVvW/t/VBmOAsQiYysP7gBGEX2n+ksYwLYGrzCSnWBShcc6nqPihr+sqsC ktu7+95gjxG78CQINJWVk36HCCRHUaabd7DoWWpXVfWz25W8znx/pqeI0jqZctYg4lROU05elJm 1zL5FNiq1Z/oAsBMyEfLqQ4AHWhmTp245mmhO5U26nxKo4swUu+xH2rXDNTssy67OtrRz90zK+p ZKKxTuAdKKOhHhJLTLHJu6WkmShoolWoDR/fCUfvbB X-Received: by 2002:a17:902:d393:b0:2ad:d0ff:2ed4 with SMTP id d9443c01a7336-2b5f9e5da5fmr263578875ad.6.1777210866640; Sun, 26 Apr 2026 06:41:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 22/84] fpu: Drop parts_sint_to_float Date: Sun, 26 Apr 2026 23:38:59 +1000 Message-ID: <20260426134002.865628-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211209844154100 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_sint_to_float at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 18 +++++------------- fpu/softfloat-parts.c.inc | 2 +- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 0b2638c34b..bbfdf1a076 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,14 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static void parts64_sint_to_float(FloatParts64 *p, int64_t a, - int scale, float_status *s); -static void parts128_sint_to_float(FloatParts128 *p, int64_t a, - int scale, float_status *s); - -#define parts_sint_to_float(P, I, Z, S) \ - PARTS_GENERIC_64_128(sint_to_float, P)(P, I, Z, S) - static void parts64_uint_to_float(FloatParts64 *p, uint64_t a, int scale, float_status *s); static void parts128_uint_to_float(FloatParts128 *p, uint64_t a, @@ -4013,7 +4005,7 @@ float16 int64_to_float16_scalbn(int64_t a, int scale,= float_status *status) { FloatParts64 p; =20 - parts_sint_to_float(&p, a, scale, status); + parts64_sint_to_float(&p, a, scale, status); return float16_round_pack_canonical(&p, status); } =20 @@ -4098,7 +4090,7 @@ float64 int64_to_float64_scalbn(int64_t a, int scale,= float_status *status) return ur.s; } =20 - parts_sint_to_float(&p, a, scale, status); + parts64_sint_to_float(&p, a, scale, status); return float64_round_pack_canonical(&p, status); } =20 @@ -4131,7 +4123,7 @@ bfloat16 int64_to_bfloat16_scalbn(int64_t a, int scal= e, float_status *status) { FloatParts64 p; =20 - parts_sint_to_float(&p, a, scale, status); + parts64_sint_to_float(&p, a, scale, status); return bfloat16_round_pack_canonical(&p, status); } =20 @@ -4203,7 +4195,7 @@ float128 int64_to_float128(int64_t a, float_status *s= tatus) { FloatParts128 p; =20 - parts_sint_to_float(&p, a, 0, status); + parts128_sint_to_float(&p, a, 0, status); return float128_round_pack_canonical(&p, status); } =20 @@ -4216,7 +4208,7 @@ floatx80 int64_to_floatx80(int64_t a, float_status *s= tatus) { FloatParts128 p; =20 - parts_sint_to_float(&p, a, 0, status); + parts128_sint_to_float(&p, a, 0, status); return floatx80_round_pack_canonical(&p, status); } =20 diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index d8eb9f5b78..8405cf29cd 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1779,7 +1779,7 @@ static void partsN(log2)(FloatPartsN *a, float_status= *s, const FloatFmt *fmt) r |=3D (a1 || a0 & ~DECOMPOSED_IMPLICIT_BIT); =20 exact: - parts_sint_to_float(a, a_exp, 0, s); + partsN(sint_to_float)(a, a_exp, 0, s); if (r =3D=3D 0) { return; } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211011; cv=none; d=zohomail.com; s=zohoarc; b=PwJ6gKPgV288+GZpPVmeRZTm8D6sfF+0/5gHZsnd2l/E6u4oYT49PmCOBFt+qSnkIFYliHh11A2hMS5AMkDoPg3rzcvZItCiCLQ+yicbDnvi0mSXEKk1mBUBb4gYilMfksNq1ryHv3ZCnJJCmVah06DCIqJNmmiXwzxf3MZlPSE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211011; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XzT/OaqiqzvC/zGQFWIpYrmJeDiwDoDU3OyHh9kylyQ=; b=eX3qXPUuuB2Tw2LmnPgBTdPzw79xM/Qw6Ia0sUoTopbpux/Po0+QfPyTSkoBXQeJ4bjgJYAjmmK+zBFp30BhSQ/Z1fZhxF77UHa0Y+hMeaPCoLxBnULlFNp5bqBRbbiBz/jv2nTLUjiA8qpWAxrSHpHdbq7/Zo4huRUTqLWWx5s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211011022189.95755923150796; Sun, 26 Apr 2026 06:43:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjV-0007Wd-C2; Sun, 26 Apr 2026 09:41:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjT-0007Vu-Tn for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:11 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjS-00007Y-Cn for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:11 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2b23fcf90b2so89111435ad.3 for ; Sun, 26 Apr 2026 06:41:10 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210869; x=1777815669; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XzT/OaqiqzvC/zGQFWIpYrmJeDiwDoDU3OyHh9kylyQ=; b=RzvZuDVagZU2MjvpoGlOICP4WGxrs8JvqJ3YravGN4BZnM49nGDVgYtUpJ7XUs7BIz Q6xPhdJd1QAMuP/IrGaOG2SiP76dVzXBGVTXUlRKd6JgPHtDtB5d9AF+Y4rnkw/QEnHX vy7GRznI6pHYFY1tfC5wg7B4mHe7xUTxx1zFX2ydAID1Gg+D0vkpnOvJRuLEhxXHNFGv eqdUbs7CsNvf8YcfOJT+cSZ1oOc6IJzEdnPRtdxNDVGfAr5LhrlXczjmWjYgd+hQH2Ha njD8Ez7cExqs3OzTjBUu0/K5oCraZ22RGyjkAh2AGk9oi1a2NrIhT9nZjDLlRfjN6s0E bPbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210869; x=1777815669; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XzT/OaqiqzvC/zGQFWIpYrmJeDiwDoDU3OyHh9kylyQ=; b=h3H3TtkkLTIfwg6hX9ErRo//Knp1XFGr0TYNuX6VW8aFAMBLmuB6/F8tsPb2xdNLC7 KcujXaWQUnET7s6Csc2hq6DTmBWr18VPcP8BNqC/PURmhQywCuXi2t50zxb4P+alEs4d gN5kYNk36OSxxkc+AdA0xpPqC0ri4p1Okq6WfnuvDcsLbuHtCYkug9t9IW2LLo9yuZNP 8cmSEgz8+WH13guD/1BmP0nCq3dPKDokRcDs5zNoWzxRuHKWnDfU4MZZFUPSJgfq7th9 gwn8dOO3STSF+mvqLo1jyDCQNomxP660EPjgCUsqZHtVx9NBkfwAloQC9siGcBgWpe3u 664g== X-Gm-Message-State: AOJu0YzmkF4O7lo5EBN3UwPo93lGpp68U3FfwGBYM7tRg0idTyOZzM3u IzodIvFRx+/QAo3v1UUQg+Bn5jjboFecK6u9XH/6zTLmjtyy0clIhD714MK53M/r0fry+4Mn0A5 sVebhk9Q= X-Gm-Gg: AeBDieuYnul5Ppd5lZ+NdDmRxl+Jzew0fgjSUGtl8ryARDTJxHazbBJ+byVlRauE8dv BHLisXCCIJ7JgJOXePdw5Jsg5MZh35csF3tSRDQuH4wHHw/iSfiUhfQMfOa5U9Vx91jPYhMzFVW 7l8Rdv0tHGFCCZSPmEZlbvCfLQaPus4nDCGZRhgRV5G06S/oSSjU7LmN9D/JlK73xFOMEVFxAZK qrPubxCIC3ie1NrlVxVrlO5lP4dhkO1MMsqp0QrGg0DidthyVGOaKsiEhYutRYhteFlo+MTJNOt dC/6UlzLCSFBlFPWFPJdZ6vcYtK2gvaS8+EOvNzLRSEBHSxd4SJJnTxpQgjSacaHZoIC2fOJ3d+ /PGgb44y75TMa8b923Y/C0k/abIxWpRMOkh7i2b4KqXJA1vg2hHqlRFHDpS1Ar8CT2GmqzOmDRy trD2KYs5eQxghebiRdopZAD6i4rwHiiDTlvz1Qhwrs X-Received: by 2002:a17:902:d652:b0:2b4:62bd:ee3 with SMTP id d9443c01a7336-2b5f9f5eac7mr314754395ad.33.1777210869069; Sun, 26 Apr 2026 06:41:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 23/84] fpu: Drop parts_uint_to_float Date: Sun, 26 Apr 2026 23:39:00 +1000 Message-ID: <20260426134002.865628-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211012614154100 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_uint_to_float at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index bbfdf1a076..8d5f3c48e7 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,14 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static void parts64_uint_to_float(FloatParts64 *p, uint64_t a, - int scale, float_status *s); -static void parts128_uint_to_float(FloatParts128 *p, uint64_t a, - int scale, float_status *s); - -#define parts_uint_to_float(P, I, Z, S) \ - PARTS_GENERIC_64_128(uint_to_float, P)(P, I, Z, S) - static FloatParts64 *parts64_minmax(FloatParts64 *a, FloatParts64 *b, float_status *s, int flags); static FloatParts128 *parts128_minmax(FloatParts128 *a, FloatParts128 *b, @@ -4225,7 +4217,7 @@ float16 uint64_to_float16_scalbn(uint64_t a, int scal= e, float_status *status) { FloatParts64 p; =20 - parts_uint_to_float(&p, a, scale, status); + parts64_uint_to_float(&p, a, scale, status); return float16_round_pack_canonical(&p, status); } =20 @@ -4270,7 +4262,7 @@ float32 uint64_to_float32_scalbn(uint64_t a, int scal= e, float_status *status) return ur.s; } =20 - parts_uint_to_float(&p, a, scale, status); + parts64_uint_to_float(&p, a, scale, status); return float32_round_pack_canonical(&p, status); } =20 @@ -4310,7 +4302,7 @@ float64 uint64_to_float64_scalbn(uint64_t a, int scal= e, float_status *status) return ur.s; } =20 - parts_uint_to_float(&p, a, scale, status); + parts64_uint_to_float(&p, a, scale, status); return float64_round_pack_canonical(&p, status); } =20 @@ -4343,7 +4335,7 @@ bfloat16 uint64_to_bfloat16_scalbn(uint64_t a, int sc= ale, float_status *status) { FloatParts64 p; =20 - parts_uint_to_float(&p, a, scale, status); + parts64_uint_to_float(&p, a, scale, status); return bfloat16_round_pack_canonical(&p, status); } =20 @@ -4386,7 +4378,7 @@ float128 uint64_to_float128(uint64_t a, float_status = *status) { FloatParts128 p; =20 - parts_uint_to_float(&p, a, 0, status); + parts128_uint_to_float(&p, a, 0, status); return float128_round_pack_canonical(&p, status); } =20 --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211293; cv=none; d=zohomail.com; s=zohoarc; b=gJfabpofE4q4ZQXNANYVygCLJqmpWrDMPM0Gzj53+jInb5PXA8zAlIYe7wGaIPqueqEzwff8NIJ2icufr9xpz9a5xJMilvZP7QGYhMIi7bU3lYoVUmLlFnY51BJFNMvpBY2DuDupGQUU+4bLJb47Q9E7HmAEB/jBi2S0S3XppgQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211293; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZvvMXHNz6xEa3ixy+NaiuJcIjaQVFZoBWkjVagJ868o=; b=ZpEz5iupU6TrntYJsfm6N8ApYsBDeaq9EgJYBdxQBm+tVUgDQaasEC+HKOXKBMbR4JWfoGUZDbbreZFl12zn5vj7nER5wXDaUdlb779vhYXrcO16qoMrwQ9BDyU5WvWR5nNBGF7I+CkotyQcgEdWoyMrqAE1eCrLQBlK+SeqSVs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211293962438.61942918654324; Sun, 26 Apr 2026 06:48:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjY-0007Xu-CB; Sun, 26 Apr 2026 09:41:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjW-0007XA-Eu for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:14 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjU-0000AF-Uh for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:14 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2b24fede2acso61121015ad.3 for ; Sun, 26 Apr 2026 06:41:12 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210872; x=1777815672; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZvvMXHNz6xEa3ixy+NaiuJcIjaQVFZoBWkjVagJ868o=; b=c2PfQxfaRWqvpLE0jW1ewfMm3YX26IqcSEk12FAoaYwVv4yvXg9ozXHVpXFPH3erFV Phntr+ThaMRK2IoeqImYk6+FQr3IAVLYARznReQ9JxaX4FhBnQ/ZhGrdDceAR9IDDikS 0E/PwGeLHeJkrbi9PahfGsI+xBlJnE8XuhhMqDpwmR9fJthgZ+Ew95HsYtUYs7zU9XEV Sv3YJ9IsDfZ8YxM9FNR94wu4LlrSWOFXejWod6DXnhu+ZR53hzlQkqWDdptVJvq5MfJb 0vF3DZdpgbHHoI/ITDaGZBMI9PRiFX7PXQEVJh+1gBlZN9v7B8PWpa0F4ZVUJ+KXs78n II6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210872; x=1777815672; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZvvMXHNz6xEa3ixy+NaiuJcIjaQVFZoBWkjVagJ868o=; b=peVtI25ScLTe7r5X+TL9Ojewp0Ch2JDD7v6FJKIDbHz5LfgWFc6tx3OjC8363D7mjQ DWd38cjfzk3G4qCnhOgtHjpKdJapyjrO1nwjSnmkWv1wtjJVXC2Y4+r/uFP5xC00Jgyn W/PTz2DFQ5FZAo4rcEK8Kbtj+xfYsfGVhgY53+HUl1FLJnliF3WUXXpPY9YEu91RS4Pk YieUqx55J/X8x+wUjpSVR2oKxrFvhVnjSPejtPKscUJiTV7B1qN2AZryVqPltpifqrTT fFGaz/sc/qa2RIo5cErkQAXQ2dRyYbdzrdrsIA0bSenimt6RrrxWsV8EPanKyffAH/j5 LdbQ== X-Gm-Message-State: AOJu0Yzd5jYpt2VTMJ27/Xx0dar0/46ihY4ZXf6tNsvcHJUHXXHMfaDE F6OrgjWf4rD1ypEoMfFW+GOx4hAHJwiDphgbBTM1XnWWGKuxFK6+0oP/VnMLi24sGrkjRet9OqD 7gIeAwy4= X-Gm-Gg: AeBDievC5t3uIEKEwRAIn6h6vA45ycwG84rHWlMPFaX6ds6uf6hKQdQabJDYL3Pr0Rv N8hZ6rhxBfxkHE0C9JgELJjpB/MctttdX88Sjjq1VDkPUnS2xquPuquGkOeVhpbpoVl3bmN+6IG qRmhG859qiRy6qjXCHpTDbGeewYzez0GTZ/QUcRSMTIhiDHmjxC+XxVYSEm8LbuqaljUvoKSROl xd4NdGmPVwPOrAMOw5BKuGDNEkbPc/vkjbCuaPf6VZl9AI9myaiyFY3XnXV0HQC8B2kLRNbTXyJ 3Wqr5L8QBfVoWCj5P1VVxZ9wlwp+JpZr43Giwlxl80EsHaD+p0ODU1AVoTwsUdsjOiERqyTUg3G lrurrulIFYOheccV/6uQuTn+CmGpMzTIopfj/tUinfQhBDQM4eSLU8W9TQikkTy3JW0MFGrB1Jp 8pwlmL0leW3Ec9Ws5ffjyl7EghXJxw6pOZL27UWRF+ X-Received: by 2002:a17:903:3c24:b0:2b0:445a:8c7b with SMTP id d9443c01a7336-2b5f9edf973mr419368085ad.15.1777210871537; Sun, 26 Apr 2026 06:41:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 24/84] fpu: Drop parts_minmax Date: Sun, 26 Apr 2026 23:39:01 +1000 Message-ID: <20260426134002.865628-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211296806154100 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_minmax at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 8d5f3c48e7..158d539376 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,14 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static FloatParts64 *parts64_minmax(FloatParts64 *a, FloatParts64 *b, - float_status *s, int flags); -static FloatParts128 *parts128_minmax(FloatParts128 *a, FloatParts128 *b, - float_status *s, int flags); - -#define parts_minmax(A, B, S, F) \ - PARTS_GENERIC_64_128(minmax, A)(A, B, S, F) - static FloatRelation parts64_compare(FloatParts64 *a, FloatParts64 *b, float_status *s, bool q); static FloatRelation parts128_compare(FloatParts128 *a, FloatParts128 *b, @@ -4417,7 +4409,7 @@ static float16 float16_minmax(float16 a, float16 b, f= loat_status *s, int flags) =20 float16_unpack_canonical(&pa, a, s); float16_unpack_canonical(&pb, b, s); - pr =3D parts_minmax(&pa, &pb, s, flags); + pr =3D parts64_minmax(&pa, &pb, s, flags); =20 return float16_round_pack_canonical(pr, s); } @@ -4429,7 +4421,7 @@ static bfloat16 bfloat16_minmax(bfloat16 a, bfloat16 = b, =20 bfloat16_unpack_canonical(&pa, a, s); bfloat16_unpack_canonical(&pb, b, s); - pr =3D parts_minmax(&pa, &pb, s, flags); + pr =3D parts64_minmax(&pa, &pb, s, flags); =20 return bfloat16_round_pack_canonical(pr, s); } @@ -4440,7 +4432,7 @@ static float32 float32_minmax(float32 a, float32 b, f= loat_status *s, int flags) =20 float32_unpack_canonical(&pa, a, s); float32_unpack_canonical(&pb, b, s); - pr =3D parts_minmax(&pa, &pb, s, flags); + pr =3D parts64_minmax(&pa, &pb, s, flags); =20 return float32_round_pack_canonical(pr, s); } @@ -4451,7 +4443,7 @@ static float64 float64_minmax(float64 a, float64 b, f= loat_status *s, int flags) =20 float64_unpack_canonical(&pa, a, s); float64_unpack_canonical(&pb, b, s); - pr =3D parts_minmax(&pa, &pb, s, flags); + pr =3D parts64_minmax(&pa, &pb, s, flags); =20 return float64_round_pack_canonical(pr, s); } @@ -4463,7 +4455,7 @@ static float128 float128_minmax(float128 a, float128 = b, =20 float128_unpack_canonical(&pa, a, s); float128_unpack_canonical(&pb, b, s); - pr =3D parts_minmax(&pa, &pb, s, flags); + pr =3D parts128_minmax(&pa, &pb, s, flags); =20 return float128_round_pack_canonical(pr, s); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211753; cv=none; d=zohomail.com; s=zohoarc; b=iDfeE1w7S+7kCUKv6bz4lvOBCPW/KYkHW87zf6cIZKQWbBFfn7B2VatPCIKm11CaxGiycZo1mE0Wt+Q2XXKJAdkBLDO8RgWsyoquxJgBjcNpFh8QK1QiT7SIhPRylG8vclZ/8+84fLRIOukuNk9HKSajPXW79qGqio6HDGI7/vA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211753; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=APzXi2KVCIYa0t0D3NstU7yyhE+V3SOxwz+wKn9uFgg=; b=BhfxcKmIplXvYK1OyNdXqnLK1KAN1DKgpO+gq8YLz/wJ/P4o8IqqnmBGdsep6w9yu0vStedJ+iWgsxAVqxsaYkS7ygmDS1zZRcah0z8tFcRs+ItQt5l2LjSTdmixUr4LnGxumwQNnm6NklTj//WxFnSx/sBfIPF92HY5nIVB1MQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211753603682.6135330525318; Sun, 26 Apr 2026 06:55:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzja-0007Zd-2u; Sun, 26 Apr 2026 09:41:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjZ-0007Z1-7D for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:17 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjX-0000Ak-Jl for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:16 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2b7d3ecc10dso14931645ad.2 for ; Sun, 26 Apr 2026 06:41:15 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210874; x=1777815674; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=APzXi2KVCIYa0t0D3NstU7yyhE+V3SOxwz+wKn9uFgg=; b=gyZzasYr5CTjm8ic4RLLBzQ40p3AmsG6AL1pB2yJpghKArI8ds5n9oAuwcH44YJauh mOb0h41DgYfKrM6VPudxGTJfNwAoGApsfJPOO2GxzkpHEf0RKUxCC2+vxW3HJsDHsPar 51/whs4VKQGLRwx/2DnoXDaAMaX+xvmAWg1GpFyDvVHCeYerPHnEDl0h/LJ8VSOg2Gq0 +6q2+sOJec7W1OrxoyEa7R0gcW5dip5yrV1t1ikOOi9+Y0UmY4Gvg4OAykomB82LZP/Z rQ6CWUHTFK+9sT0btbqudJeE0Fl58rlUCQ6CKST32Tk5w7tJTfQmzdHzSdtIzLLuY7Wy I7pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210874; x=1777815674; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=APzXi2KVCIYa0t0D3NstU7yyhE+V3SOxwz+wKn9uFgg=; b=OuEDZiIp9i/KtBbJtieLOwnaOmhUaftk18cTbIMnTDd8sAxE+fkl1t5d/kpLlJipTP qT0dv/WPLFhIJeBCwA7Uyv4QGlAaed7AQFZFHYitBcQjq0keNNkNgtzdGjhE1s6FCm3o DDsAiFkW76yY/vyNKAgML2Tsvhn26XS+z9KoqleZeeb69a4vYrqswVjXXLEcbZmy/1C+ lLt3wTDNACEknzTg0IjeR6XiWMS3lfScSwv2iiDNkque00uaNfLRybhbdAzrj01/Vy4u Y6YCcyVR5g+hxPQhlswT/tpWyGTlmxkJrG6+53YnZQncIoEPovWn3hQn5PateqHDBrV7 n1YA== X-Gm-Message-State: AOJu0Yw5crlBcWOsXQ1c6TDypuKhPDi/VAeaIJc/QXaj+fbOcdBSUThZ Cw0VnooFIBNCP4xC2B3TTxVUuUUnEd0/Ryl3jrpghkWfEh1vPIi94aWBgyuUEurwk1LUaIF8LHw csSuYWI0= X-Gm-Gg: AeBDietketqKbuSXlmuXLDt4h44/QBhg4mhFIFvjfXKKA69BZS9oH3GuzV5A5Nvjnj8 Y1NLIRHAz790JBQbHumseIQ4Is9fURKyt8aMei4j6OZ4EMUinZwmX0H6+IQqbqdmqBU7SYK9xmK CCuEzNrIj6RSocdfAAg6ZsSV92qMFaxoiz3zPFncECNn7fOAqc8Oz5LpqxMhFh9SdJpF7vUH+o/ 1b6W8+f/EKbqDLqPsjWIpHNvRmPPiAUuztXhD3l4BZxb3y4rOTLo5iTCmhKGR8bPK9xYwqYBYz9 F6P2rb3gBsQucVnDfgjUVAI50M9UlmCjnRhhg+VF8wvtKYBxiGECjLpOIHNjMAeNv5MMFd9MuG9 NGJzu3hWsSTgYMWs0SRJh5sEAlREOMHyktdwrAH6PrSFnFWYgrkEfQBzpaOGsszGMBF/4iD3+qH aCakzMaHZAdOXY7lSVkAkC0yb9XrAFAH1nf+9ooLyy X-Received: by 2002:a17:903:2283:b0:2b0:54dc:63e with SMTP id d9443c01a7336-2b5f9fadcd4mr427273585ad.33.1777210874209; Sun, 26 Apr 2026 06:41:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 25/84] fpu: Drop parts_compare Date: Sun, 26 Apr 2026 23:39:02 +1000 Message-ID: <20260426134002.865628-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211754732158500 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_compare at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 158d539376..3aebe4a058 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,14 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static FloatRelation parts64_compare(FloatParts64 *a, FloatParts64 *b, - float_status *s, bool q); -static FloatRelation parts128_compare(FloatParts128 *a, FloatParts128 *b, - float_status *s, bool q); - -#define parts_compare(A, B, S, Q) \ - PARTS_GENERIC_64_128(compare, A)(A, B, S, Q) - static void parts64_scalbn(FloatParts64 *a, int n, float_status *s); static void parts128_scalbn(FloatParts128 *a, int n, float_status *s); =20 @@ -4494,7 +4486,7 @@ float16_do_compare(float16 a, float16 b, float_status= *s, bool is_quiet) =20 float16_unpack_canonical(&pa, a, s); float16_unpack_canonical(&pb, b, s); - return parts_compare(&pa, &pb, s, is_quiet); + return parts64_compare(&pa, &pb, s, is_quiet); } =20 FloatRelation float16_compare(float16 a, float16 b, float_status *s) @@ -4514,7 +4506,7 @@ float32_do_compare(float32 a, float32 b, float_status= *s, bool is_quiet) =20 float32_unpack_canonical(&pa, a, s); float32_unpack_canonical(&pb, b, s); - return parts_compare(&pa, &pb, s, is_quiet); + return parts64_compare(&pa, &pb, s, is_quiet); } =20 static FloatRelation QEMU_FLATTEN @@ -4568,7 +4560,7 @@ float64_do_compare(float64 a, float64 b, float_status= *s, bool is_quiet) =20 float64_unpack_canonical(&pa, a, s); float64_unpack_canonical(&pb, b, s); - return parts_compare(&pa, &pb, s, is_quiet); + return parts64_compare(&pa, &pb, s, is_quiet); } =20 static FloatRelation QEMU_FLATTEN @@ -4622,7 +4614,7 @@ bfloat16_do_compare(bfloat16 a, bfloat16 b, float_sta= tus *s, bool is_quiet) =20 bfloat16_unpack_canonical(&pa, a, s); bfloat16_unpack_canonical(&pb, b, s); - return parts_compare(&pa, &pb, s, is_quiet); + return parts64_compare(&pa, &pb, s, is_quiet); } =20 FloatRelation bfloat16_compare(bfloat16 a, bfloat16 b, float_status *s) @@ -4642,7 +4634,7 @@ float128_do_compare(float128 a, float128 b, float_sta= tus *s, bool is_quiet) =20 float128_unpack_canonical(&pa, a, s); float128_unpack_canonical(&pb, b, s); - return parts_compare(&pa, &pb, s, is_quiet); + return parts128_compare(&pa, &pb, s, is_quiet); } =20 FloatRelation float128_compare(float128 a, float128 b, float_status *s) @@ -4664,7 +4656,7 @@ floatx80_do_compare(floatx80 a, floatx80 b, float_sta= tus *s, bool is_quiet) !floatx80_unpack_canonical(&pb, b, s)) { return float_relation_unordered; } - return parts_compare(&pa, &pb, s, is_quiet); + return parts128_compare(&pa, &pb, s, is_quiet); } =20 FloatRelation floatx80_compare(floatx80 a, floatx80 b, float_status *s) @@ -5518,7 +5510,7 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, saved_r_precise_sign =3D r_precise->sign; r->sign =3D false; r_precise->sign =3D false; - if (parts_compare(r, r_precise, status, true) < + if (parts64_compare(r, r_precise, status, true) < float_relation_equal) { *dxc =3D 0x8; } else { --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777210953; cv=none; d=zohomail.com; s=zohoarc; b=G7ByNo3h8QhtmncABUWRU+21x5WSsV03ZvJU2eBeHuTU9Hb9tVFcpUx4ygow2FyGp5n9Eeeg3XmN5BU92YJEHB545Vjkx57a/8+UD13vC8qoIrO7J0FZIIrMypHAXe8alUb5tOy05f/kDKWE8+guK7eq7ZT2I8MFUX+hrT3WI6w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777210953; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7Fdg86UxH5WehreH8Kl6Bnjzy/FswVWwLkkG8BlzOUE=; b=AC0kDI+kNn6ionuvceY755HZvhT7RVUOdCf6RM4qz5yGWYcw8a7My/qJe6NOiWNmTTCXeAKxW8x0p2RPKDnGx55Wb6WmkXhvu3vQG0DZo94Dm5NUoJqbR7O9kEHKW18mK0eeTs4H5P87/KcF4KJ0McxSEWoiBw6L3ccsA2o09Y4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777210953052409.57318359537805; Sun, 26 Apr 2026 06:42:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjd-0007nz-IB; Sun, 26 Apr 2026 09:41:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjb-0007f6-Mq for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:19 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzja-0000BO-82 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:19 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2b299b3c739so42911505ad.3 for ; Sun, 26 Apr 2026 06:41:17 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210877; x=1777815677; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7Fdg86UxH5WehreH8Kl6Bnjzy/FswVWwLkkG8BlzOUE=; b=vCupFymoD1Mp0+hGFEnv3ay+J30sdXrjIBxZO2GwVWOxhBI9BRGx0AugtxokgkXiBa ce0GONgRZSZgsJ43oz7pelQP2qpnaJfznQYDtmdHOobVs5h0DvxzmWFzPr97MxASsLDh 4DHrEGo+p2kxzZAWujTnsli88ulawfxVHGThoKmyoEOUo4Oh6vWha86xIW7G6vFIodLM /oaKIG/k7BMJpy9uIMRjNquEUaWNTUUnoBRIfV2WPtJ3pe6B3JTSDFZvpUZ/vuS49tjT iI1G+m8f7i2Xysu4PLJ32Hok+UgoWLaHQOGdjHbQLQZbSPrPTqAPhhSe5/I8DldwknEp 3mjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210877; x=1777815677; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=7Fdg86UxH5WehreH8Kl6Bnjzy/FswVWwLkkG8BlzOUE=; b=eYWKm3amSmFxQKc+K5X6p7Gi8pZaqO3tZJ02NKVR4lHBYue7B5uc/dVw2lrp7FIZY9 HVUFre6BlbVWnpixXi5Vv7gyOMSBm6+NVfqSHpbwgYBv0yO92I0wR1lJa0Sism/9PH7M 83zdZSjM4UJGCy2ZKIYUn1K8qdamoGzusCOSp7hGknS1vqu4+IbzWM3c8tqZ0SAjszVE XpBlBNmwTpE3qs2W8fImf7qUA7BqLxYSF6WliilUHS6OG/wHgVH8RRgfdIDfxrpyDUqC NBgR0xyArkAQ+Y29q+DRu7a7AGP9C7Hs8yNn3U0R7v1l0O2UwKOVTcXdkDLhHN/+n05F /BOQ== X-Gm-Message-State: AOJu0YzECoNZHD+YqUM83POfyYrYXh4wQpmICodPGtOXMJzEBCKG0WxF Op4i3wile8hXh14Jex3h/HROqSV71vflsfT0eOIqzQNMOERkQw8rG+I8OfTrvr6lLqDDuVMVG5b SSuZZrhQ= X-Gm-Gg: AeBDievK/Uou3yy39dGv7Zlpb9bj2oU6JOc9TCAVsIiK9TrvhXKUHjqFCdUJEvLtgy3 hd3edN8aZXZ6T9urEM/8ENcd8ZgMEN3OhILEMAU3vz3zcB+SgengsS9f0d1tgIT0JktL4qr4Rf1 UdjQQsO9CTaD/XcpI88TNTvcklX75F3zbldJmtBrcCTEHZbZy9pzp9n3yDDPusqugbAfQRpTQhD WHqtuwIhmIZCOKPQzdY1XCBkcWZviQYznDcCsG9XOCfXQzxgqhfSs0OezgAVeV7yfm04Iyjnhne XDLhJUeLnh5jtf/79B9y+lasyg6obb+qrsTTIaew5nm8kAd4Yps8MFAMpJkux112wLboJ1vk6NN S3SJ+/RYlsl+V0dMRvCY5fS8iHGIA8s0NBKgV5B/o+7VjhcJ971u2jAD5UDfCfEkR0rsOsP07jA YVerp7p0Fpvvy4hDMunWujUwCLdETHTkgjhcZIXLXj X-Received: by 2002:a17:902:ce0a:b0:2b0:af2f:b27a with SMTP id d9443c01a7336-2b5f9ec3590mr383313245ad.11.1777210876753; Sun, 26 Apr 2026 06:41:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 26/84] fpu: Drop parts_scalbn Date: Sun, 26 Apr 2026 23:39:03 +1000 Message-ID: <20260426134002.865628-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777210954111158500 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_scalbn at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 3aebe4a058..3e6f2a152a 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,12 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static void parts64_scalbn(FloatParts64 *a, int n, float_status *s); -static void parts128_scalbn(FloatParts128 *a, int n, float_status *s); - -#define parts_scalbn(A, N, S) \ - PARTS_GENERIC_64_128(scalbn, A)(A, N, S) - static void parts64_log2(FloatParts64 *a, float_status *s, const FloatFmt = *f); static void parts128_log2(FloatParts128 *a, float_status *s, const FloatFm= t *f); =20 @@ -4678,7 +4672,7 @@ float16 float16_scalbn(float16 a, int n, float_status= *status) FloatParts64 p; =20 float16_unpack_canonical(&p, a, status); - parts_scalbn(&p, n, status); + parts64_scalbn(&p, n, status); return float16_round_pack_canonical(&p, status); } =20 @@ -4687,7 +4681,7 @@ float32 float32_scalbn(float32 a, int n, float_status= *status) FloatParts64 p; =20 float32_unpack_canonical(&p, a, status); - parts_scalbn(&p, n, status); + parts64_scalbn(&p, n, status); return float32_round_pack_canonical(&p, status); } =20 @@ -4696,7 +4690,7 @@ float64 float64_scalbn(float64 a, int n, float_status= *status) FloatParts64 p; =20 float64_unpack_canonical(&p, a, status); - parts_scalbn(&p, n, status); + parts64_scalbn(&p, n, status); return float64_round_pack_canonical(&p, status); } =20 @@ -4705,7 +4699,7 @@ bfloat16 bfloat16_scalbn(bfloat16 a, int n, float_sta= tus *status) FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, status); - parts_scalbn(&p, n, status); + parts64_scalbn(&p, n, status); return bfloat16_round_pack_canonical(&p, status); } =20 @@ -4714,7 +4708,7 @@ float128 float128_scalbn(float128 a, int n, float_sta= tus *status) FloatParts128 p; =20 float128_unpack_canonical(&p, a, status); - parts_scalbn(&p, n, status); + parts128_scalbn(&p, n, status); return float128_round_pack_canonical(&p, status); } =20 @@ -4725,7 +4719,7 @@ floatx80 floatx80_scalbn(floatx80 a, int n, float_sta= tus *status) if (!floatx80_unpack_canonical(&p, a, status)) { return floatx80_default_nan(status); } - parts_scalbn(&p, n, status); + parts128_scalbn(&p, n, status); return floatx80_round_pack_canonical(&p, status); } =20 --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211244; cv=none; d=zohomail.com; s=zohoarc; b=d3x2phyiQB08n0mvb3ym7gZ8qnH680FpAi3T28TrRz+h7c+lWmBFC4kRI7jhcptWSyyNOHiAYuLCRsGEbORzGD0dN+480+rFj2dDaK2NilcDBUAog7Y5pThb6WVOqX/XCsomFqBJTeQrUEaIHtgbBUBBEvVssp9u5hcPljmK6OU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211244; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8iNu5b7hcfu4YD/ZRX99cYS8RApbvbMld9iCuftqu3w=; b=mkjrcj7MlvjO9nqXXvEHnzaaz/btY5vPmO5FNzj8H3oidF0u+bTsBnc9/VeZWc7rs7upCbOmZSs924ygds4rnFYfxOflN+NhD7zidjiDsHADRLtEeHG1kVndZl8X5mayFoAF4d4s9CdgQpAW4HBeXLvAP2nyh2d2GxyhHsCKBtU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211244241159.0997030786524; Sun, 26 Apr 2026 06:47:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzji-0008Ez-8h; Sun, 26 Apr 2026 09:41:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjg-0008A5-PZ for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:24 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjc-0000C0-Tn for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:24 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2b24fdac394so90561695ad.3 for ; Sun, 26 Apr 2026 06:41:20 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210879; x=1777815679; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8iNu5b7hcfu4YD/ZRX99cYS8RApbvbMld9iCuftqu3w=; b=dii9JTTsiw0wgIvlg8T1XyPZQ/wjximJ1DgXF2un4Bcycq5zWf+e+G+1z//wIlJCua xd76qbcUBe5SB2CECxzitE5ZgXDmJUI3NY4iTcd8en9FK0eZk2IY0+I6EtHVAR/GYY2K Y4KMOmMcDIGcr5DWcnW9cqvDPm8DZ1XBXL2O6eX8V76+krLf9D9RALPMHg+3nQK3RKEy lZFASnVjq3LRnfJW1LhAsGwqEn/p5TqSEobhXyOK08EpoW9+1svt8dq7ehCSEQUtZxeO TuiahrHTAnNt1xKPA2FfswZg5dLCuAVnuVEdT2SBgv4DvgjzDNG6ebDq1PT6NqrdUNiw V+iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210879; x=1777815679; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8iNu5b7hcfu4YD/ZRX99cYS8RApbvbMld9iCuftqu3w=; b=jVx6vVRcwtLGg9KoVhomqcHeKY4yYLN+SvmqKPvOysRav9aWQX9dkDURRsNTRh+tmP l44sVbdR4+ERR9Y/ICFtXXCXhruJoAKQVEBwUwMPOfvXAufoKQPmiZ5vSe1vIAc635DF SF9O42KLSNei9mlvWF9e+5pcMhEwVGRW4wCTMv67+0fvGhuVIgOPVvtDrGhzs/h3impL svuIBx8ul8agThplL6okdGYcnBW7A32RMu7ZzSibJI/FXZjK+KBcTRNRwDxNYYQVyGOk rK7XQb3ZkVGbuOFmrxThl9zt0JKA/DXRkttnKpB8IOuPgKW2FPjbwqwLqnHgV5MRZAdr HYUw== X-Gm-Message-State: AOJu0YwGMOzJ9hGtJis/hdpbFjcxIEdxH07jUCFUkXQYOrR9qsjI762C OY0z/M0t/wNP6wVJ77yfruS6hvbj4RMAWO3WCIMau41WqTkcnjn7Nz7AS3jYM999fpztT/4WSf6 39e+sEzs= X-Gm-Gg: AeBDiev5NPlhI+9jYJj7HwTxW6pooOVilNBqbPQjd4oW5cYwQ98gQMwxi/8rY+Z1Yie z8ik4j7AJ4i0K3O+BEaCTBzzc6UlNHJXse8Sw33KD0blCVbJFPVQL9KL9wBLIZvjiFKi8RJU1hB fymItIsnfgG30Nm4TGBkcKXraAgVfI62NWk24H+mvg50VjayMNWjG+oX1NZzcXzXqaOaXEKMToV hwKYsZTtC0mKpd30NpjKEKEByUKtJQCCbEcy8IX2j0oFpQynGU9X3RAyJ4meNdBOeu/+dUBnoQF wcrb0t5CXJBd1SzT0xZixpVCfeSIJs2mgGOBmhDOETQKH4qL5dlBb7kd+YNTNi6Mn5/NTU5+Oos wig5pm+bEIg20tjjSfunwedG3OTDHn0zOaj4VDSLBv7bmec7V8GTPdscQLTXgQPwn4Nr5Umjtpd W435tCuyaA2s/ZIsMxaMrgjjSl/m2LR05LAX/qmVzm X-Received: by 2002:a17:903:2ac6:b0:2b2:549f:7d2b with SMTP id d9443c01a7336-2b5f9ee2f21mr401121385ad.11.1777210879382; Sun, 26 Apr 2026 06:41:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 27/84] fpu: Drop parts_log2 Date: Sun, 26 Apr 2026 23:39:04 +1000 Message-ID: <20260426134002.865628-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211245113158500 Content-Type: text/plain; charset="utf-8" Use parts64_log2 at each call site. That leaves parts128_log2 unused, so move the whole function back to softfloat.c and specialize for FloatParts64. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 133 +++++++++++++++++++++++++++++++++++--- fpu/softfloat-parts.c.inc | 131 ------------------------------------- 2 files changed, 125 insertions(+), 139 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 3e6f2a152a..6a38d161f7 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -779,12 +779,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) FloatParts128 *: parts128_##NAME, \ FloatParts256 *: parts256_##NAME) =20 -static void parts64_log2(FloatParts64 *a, float_status *s, const FloatFmt = *f); -static void parts128_log2(FloatParts128 *a, float_status *s, const FloatFm= t *f); - -#define parts_log2(A, S, F) \ - PARTS_GENERIC_64_128(log2, A)(A, S, F) - /* * Helper functions for softfloat-parts.c.inc, per-size operations. */ @@ -4851,12 +4845,135 @@ floatx80 floatx80_sqrt(floatx80 a, float_status *s) /* * log2 */ + +static void parts64_log2(FloatParts64 *a, float_status *s, const FloatFmt = *fmt) +{ + uint64_t a0, a1, r, t, ign; + int i, n, a_exp, f_exp; + + if (unlikely(a->cls !=3D float_class_normal)) { + switch (a->cls) { + case float_class_denormal: + if (!a->sign) { + /* -ve denormal will be InvalidOperation */ + float_raise(float_flag_input_denormal_used, s); + } + break; + case float_class_snan: + case float_class_qnan: + parts64_return_nan(a, s); + return; + case float_class_zero: + float_raise(float_flag_divbyzero, s); + /* log2(0) =3D -inf */ + a->cls =3D float_class_inf; + a->sign =3D 1; + return; + case float_class_inf: + if (unlikely(a->sign)) { + goto d_nan; + } + return; + default: + g_assert_not_reached(); + } + } + if (unlikely(a->sign)) { + goto d_nan; + } + + a_exp =3D a->exp; + f_exp =3D -1; + + r =3D 0; + t =3D DECOMPOSED_IMPLICIT_BIT; + a0 =3D a->frac_hi; + a1 =3D 0; + + n =3D fmt->frac_size + 2; + if (unlikely(a_exp =3D=3D -1)) { + /* + * When a_exp =3D=3D -1, we're computing the log2 of a value [0.5,= 1.0). + * When the value is very close to 1.0, there are lots of 1's in + * the msb parts of the fraction. At the end, when we subtract + * this value from -1.0, we can see a catastrophic loss of precisi= on, + * as 0x800..000 - 0x7ff..ffx becomes 0x000..00y, leaving only the + * bits of y in the final result. To minimize this, compute as ma= ny + * digits as we can. + * ??? This case needs another algorithm to avoid this. + */ + n =3D fmt->frac_size * 2 + 2; + /* Don't compute a value overlapping the sticky bit */ + n =3D MIN(n, 62); + } + + for (i =3D 0; i < n; i++) { + if (a1) { + mul128To256(a0, a1, a0, a1, &a0, &a1, &ign, &ign); + } else if (a0 & 0xffffffffull) { + mul64To128(a0, a0, &a0, &a1); + } else if (a0 & ~DECOMPOSED_IMPLICIT_BIT) { + a0 >>=3D 32; + a0 *=3D a0; + } else { + goto exact; + } + + if (a0 & DECOMPOSED_IMPLICIT_BIT) { + if (unlikely(a_exp =3D=3D 0 && r =3D=3D 0)) { + /* + * When a_exp =3D=3D 0, we're computing the log2 of a value + * [1.0,2.0). When the value is very close to 1.0, there + * are lots of 0's in the msb parts of the fraction. + * We need to compute more digits to produce a correct + * result -- restart at the top of the fraction. + * ??? This is likely to lose precision quickly, as for + * float128; we may need another method. + */ + f_exp -=3D i; + t =3D r =3D DECOMPOSED_IMPLICIT_BIT; + i =3D 0; + } else { + r |=3D t; + } + } else { + add128(a0, a1, a0, a1, &a0, &a1); + } + t >>=3D 1; + } + + /* Set sticky for inexact. */ + r |=3D (a1 || a0 & ~DECOMPOSED_IMPLICIT_BIT); + + exact: + parts64_sint_to_float(a, a_exp, 0, s); + if (r !=3D 0) { + FloatParts64 f =3D { + .cls =3D float_class_normal, .frac =3D r + }; + f.exp =3D f_exp - frac_normalize(&f); + + if (a_exp < 0) { + parts64_sub_normal(a, &f); + } else if (a_exp > 0) { + parts64_add_normal(a, &f); + } else { + *a =3D f; + } + } + return; + + d_nan: + float_raise(float_flag_invalid, s); + parts64_default_nan(a, s); +} + float32 float32_log2(float32 a, float_status *status) { FloatParts64 p; =20 float32_unpack_canonical(&p, a, status); - parts_log2(&p, status, &float32_params); + parts64_log2(&p, status, &float32_params); return float32_round_pack_canonical(&p, status); } =20 @@ -4865,7 +4982,7 @@ float64 float64_log2(float64 a, float_status *status) FloatParts64 p; =20 float64_unpack_canonical(&p, a, status); - parts_log2(&p, status, &float64_params); + parts64_log2(&p, status, &float64_params); return float64_round_pack_canonical(&p, status); } =20 diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 8405cf29cd..5f27efd288 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1671,134 +1671,3 @@ static void partsN(scalbn)(FloatPartsN *a, int n, f= loat_status *s) g_assert_not_reached(); } } - -/* - * Return log2(A) - */ -static void partsN(log2)(FloatPartsN *a, float_status *s, const FloatFmt *= fmt) -{ - uint64_t a0, a1, r, t, ign; - FloatPartsN f; - int i, n, a_exp, f_exp; - - if (unlikely(a->cls !=3D float_class_normal)) { - switch (a->cls) { - case float_class_denormal: - if (!a->sign) { - /* -ve denormal will be InvalidOperation */ - float_raise(float_flag_input_denormal_used, s); - } - break; - case float_class_snan: - case float_class_qnan: - partsN(return_nan)(a, s); - return; - case float_class_zero: - float_raise(float_flag_divbyzero, s); - /* log2(0) =3D -inf */ - a->cls =3D float_class_inf; - a->sign =3D 1; - return; - case float_class_inf: - if (unlikely(a->sign)) { - goto d_nan; - } - return; - default: - g_assert_not_reached(); - } - } - if (unlikely(a->sign)) { - goto d_nan; - } - - /* TODO: This algorithm looses bits too quickly for float128. */ - g_assert(N =3D=3D 64); - - a_exp =3D a->exp; - f_exp =3D -1; - - r =3D 0; - t =3D DECOMPOSED_IMPLICIT_BIT; - a0 =3D a->frac_hi; - a1 =3D 0; - - n =3D fmt->frac_size + 2; - if (unlikely(a_exp =3D=3D -1)) { - /* - * When a_exp =3D=3D -1, we're computing the log2 of a value [0.5,= 1.0). - * When the value is very close to 1.0, there are lots of 1's in - * the msb parts of the fraction. At the end, when we subtract - * this value from -1.0, we can see a catastrophic loss of precisi= on, - * as 0x800..000 - 0x7ff..ffx becomes 0x000..00y, leaving only the - * bits of y in the final result. To minimize this, compute as ma= ny - * digits as we can. - * ??? This case needs another algorithm to avoid this. - */ - n =3D fmt->frac_size * 2 + 2; - /* Don't compute a value overlapping the sticky bit */ - n =3D MIN(n, 62); - } - - for (i =3D 0; i < n; i++) { - if (a1) { - mul128To256(a0, a1, a0, a1, &a0, &a1, &ign, &ign); - } else if (a0 & 0xffffffffull) { - mul64To128(a0, a0, &a0, &a1); - } else if (a0 & ~DECOMPOSED_IMPLICIT_BIT) { - a0 >>=3D 32; - a0 *=3D a0; - } else { - goto exact; - } - - if (a0 & DECOMPOSED_IMPLICIT_BIT) { - if (unlikely(a_exp =3D=3D 0 && r =3D=3D 0)) { - /* - * When a_exp =3D=3D 0, we're computing the log2 of a value - * [1.0,2.0). When the value is very close to 1.0, there - * are lots of 0's in the msb parts of the fraction. - * We need to compute more digits to produce a correct - * result -- restart at the top of the fraction. - * ??? This is likely to lose precision quickly, as for - * float128; we may need another method. - */ - f_exp -=3D i; - t =3D r =3D DECOMPOSED_IMPLICIT_BIT; - i =3D 0; - } else { - r |=3D t; - } - } else { - add128(a0, a1, a0, a1, &a0, &a1); - } - t >>=3D 1; - } - - /* Set sticky for inexact. */ - r |=3D (a1 || a0 & ~DECOMPOSED_IMPLICIT_BIT); - - exact: - partsN(sint_to_float)(a, a_exp, 0, s); - if (r =3D=3D 0) { - return; - } - - memset(&f, 0, sizeof(f)); - f.cls =3D float_class_normal; - f.frac_hi =3D r; - f.exp =3D f_exp - frac_normalize(&f); - - if (a_exp < 0) { - partsN(sub_normal)(a, &f); - } else if (a_exp > 0) { - partsN(add_normal)(a, &f); - } else { - *a =3D f; - } - return; - - d_nan: - float_raise(float_flag_invalid, s); - partsN(default_nan)(a, s); -} --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777210960; cv=none; d=zohomail.com; s=zohoarc; b=MhuZOiTHF2kDTKmklo5825CG0KH95fx11SorK33PrgcutMRDqRMI5wZM97O8zgkuhHHmpWBjffiYVh+zXrmtGSQ1EvU2OB26Y0i0gBWgy+ajz5vtXLH7YE7VPrQHZ/cOErgDGN8jFKokYmrmPRZ0cs24tjyzBfrhMTcyRObgIf4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777210960; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NyU4A+u0K627SpCWSf5AVXl3t/Ptjy14KhSD0YCWd3c=; b=cMMiAZHYuhFCkvUNPmz6RSgxu/b3+nxN9SaDaZRhNoGFUK6b1uN2uyJ7uS8ODoNqi+ri4KAWu8Tc8yLf/BWs/atYlEhvX7jSIOAClV/v8k13aKOriphnW4vWGT57sovvkni3YqVfgc6PwEfImEKEiXeEC5CgNlrmAbzab4JyvzA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777210960882424.7122122576459; Sun, 26 Apr 2026 06:42:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjk-0008KY-7v; Sun, 26 Apr 2026 09:41:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjh-0008CL-I5 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:25 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjf-0000DC-Le for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:25 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2b24fdac394so90561855ad.3 for ; Sun, 26 Apr 2026 06:41:22 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210882; x=1777815682; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NyU4A+u0K627SpCWSf5AVXl3t/Ptjy14KhSD0YCWd3c=; b=IWZzAs3c9o8RDhmFXsGeSaw5NQ6ankOjEPC7USN6OyFr3xe2iDXkME0+hOJbeX7ZM2 DEcs7dSkLHQPPYurt4TcWMPMXY8hZlD3BYhZL3AfiySwtEoThK3AyWotYru1MPh2yXxq YHKHyhQCDM7CfSwJlxylxAOI3hUbr1Itzg4Zh0Br8y1Q5168kwsRil+48mYt3t253deB w5XKth8R9abocOesZAhvoP9OUQHQJSfWSFSJnA9UELLOgnHUHK3v9KM8DsVYA3U49rzC OjFJV8NFBhvOUEDkkalhQMNMQOo+G41xVHIld5K7PWP+ibI3mhwowInajNzpG8cbVRe/ 0IAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210882; x=1777815682; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=NyU4A+u0K627SpCWSf5AVXl3t/Ptjy14KhSD0YCWd3c=; b=lrAEY598mAgqQPwRpQ6bMSIAbIsH3DBOe2hOTScgYWsqQSrTYqkC05ST2qY5OkbFXo l1ifATawKD25BLeP3sax8XOiyZ14mYRu7M5ZWEpK5TVyvUJY6iC0FQzKyql61SuEzkZr rManDohkT992fwFYRYtmSL0KYFWM/XAsuWZPdkSeAr+GYY2qFHY7IROlXPvFOj5xoPWd ET72lVoDcM8zapdpKlEoYjWBYP4lFeeNFKBliPSvUJZwVVPTBurPOaRLvXeC/mD0CSw7 268F2XjfDVSaza4rYytDPZse8vZsTXkfGqMWov7YaEFud7nlH7FACtjJq+IAHb4qqghj 5pdg== X-Gm-Message-State: AOJu0YyQhFLPoOTrwyN9gKUsv8r4ouWv7pX+GJ+kr3PS3TEfcCnRCt8j 53IvzaV0YcIOBH0M6ZBoULWzbvNzmOwCFrw/TcePUZ3c0bSZ/yNS1xuKHGJUBbp2SHsZizmp3BH XFa2NKKk= X-Gm-Gg: AeBDievSjYArS1dIMjofAA1s1A59ubylEsD2S3mhtI/eogV75q59YIqsQXAzN3DGsj9 a9w2QdpsSIe+GBPBCWfQ0H2DG5Q4vhaso8v8rY+01jHMh6lCO75Qu3/GZsmAdW1IR5oH5GPDhdk xy3V8zspN/f5xDIPM7/tT2z0Ot8X3gxXiLQbdD5XoLbpWuz3H4D9b585klXqL8HGViVEFMZ/TFi nMIlCbk07WGJSiFGwek+72ezAurJ18Ax+RI7M8O1fAp0mf8tIqT6ZoJkVz/0NPeMGwIKJWJQqTl gvApOXsZ5tmKkF7UMjGWzjjJS/VIxGxm5AQ4uDt3O4urdIM7DdGbRTbiusf1VWjJA8GaObxrs4x Ly2HTxaOttDuayHOJLfsZ/mElldHTc7XLt5gdamgkDML97hc4ncDVAJZpmkQJ97/tBqA659Ieh8 rwPQAGbJ8poYQDiib1OQlhqd4l0j7+0g3a0c27GSYm1veGqe5pT5g= X-Received: by 2002:a17:903:1cb:b0:2b4:5dad:2523 with SMTP id d9443c01a7336-2b5fa003d32mr418467575ad.35.1777210881931; Sun, 26 Apr 2026 06:41:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 28/84] fpu: Drop parts_float_to_float Date: Sun, 26 Apr 2026 23:39:05 +1000 Message-ID: <20260426134002.865628-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777210962081154100 Content-Type: text/plain; charset="utf-8" Use parts{64,128}_float_to_float at each call site. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 6a38d161f7..b1c2f884fc 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -2695,9 +2695,6 @@ static void parts128_float_to_float(FloatParts128 *a,= float_status *s) } } =20 -#define parts_float_to_float(P, S) \ - PARTS_GENERIC_64_128(float_to_float, P)(P, S) - static void parts_float_to_float_narrow(FloatParts64 *a, FloatParts128 *b, float_status *s) { @@ -2744,7 +2741,7 @@ float8_e4m3 float4_e2m1_to_float8_e4m3(float4_e2m1 a,= float_status *s) FloatParts64 p; =20 float4_e2m1_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return float8_e4m3_round_pack_canonical(&p, s, false); } =20 @@ -2753,7 +2750,7 @@ bfloat16 float8_e4m3_to_bfloat16(float8_e4m3 a, float= _status *s) FloatParts64 p; =20 float8_e4m3_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return bfloat16_round_pack_canonical(&p, s); } =20 @@ -2762,7 +2759,7 @@ bfloat16 float8_e5m2_to_bfloat16(float8_e5m2 a, float= _status *s) FloatParts64 p; =20 float8_e5m2_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return bfloat16_round_pack_canonical(&p, s); } =20 @@ -2772,7 +2769,7 @@ float32 float16_to_float32(float16 a, bool ieee, floa= t_status *s) FloatParts64 p; =20 float16a_unpack_canonical(&p, a, s, fmt16); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return float32_round_pack_canonical(&p, s); } =20 @@ -2782,7 +2779,7 @@ float64 float16_to_float64(float16 a, bool ieee, floa= t_status *s) FloatParts64 p; =20 float16a_unpack_canonical(&p, a, s, fmt16); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return float64_round_pack_canonical(&p, s); } =20 @@ -2791,7 +2788,7 @@ float8_e4m3 float32_to_float8_e4m3(float32 a, bool sa= turate, float_status *s) FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return float8_e4m3_round_pack_canonical(&p, s, saturate); } =20 @@ -2811,7 +2808,7 @@ float16 float32_to_float16(float32 a, bool ieee, floa= t_status *s) =20 float32_unpack_canonical(&p, a, s); if (ieee) { - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); fmt =3D &float16_params; } else { parts_float_to_ahp(&p, s); @@ -2826,7 +2823,7 @@ soft_float32_to_float64(float32 a, float_status *s) FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return float64_round_pack_canonical(&p, s); } =20 @@ -2853,7 +2850,7 @@ float16 float64_to_float16(float64 a, bool ieee, floa= t_status *s) =20 float64_unpack_canonical(&p, a, s); if (ieee) { - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); fmt =3D &float16_params; } else { parts_float_to_ahp(&p, s); @@ -2867,7 +2864,7 @@ float32 float64_to_float32(float64 a, float_status *s) FloatParts64 p; =20 float64_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return float32_round_pack_canonical(&p, s); } =20 @@ -2876,7 +2873,7 @@ float8_e4m3 bfloat16_to_float8_e4m3(bfloat16 a, bool = saturate, float_status *s) FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return float8_e4m3_round_pack_canonical(&p, s, saturate); } =20 @@ -2894,7 +2891,7 @@ float32 bfloat16_to_float32(bfloat16 a, float_status = *s) FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return float32_round_pack_canonical(&p, s); } =20 @@ -2903,7 +2900,7 @@ float64 bfloat16_to_float64(bfloat16 a, float_status = *s) FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return float64_round_pack_canonical(&p, s); } =20 @@ -2912,7 +2909,7 @@ bfloat16 float32_to_bfloat16(float32 a, float_status = *s) FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return bfloat16_round_pack_canonical(&p, s); } =20 @@ -2921,7 +2918,7 @@ bfloat16 float64_to_bfloat16(float64 a, float_status = *s) FloatParts64 p; =20 float64_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts64_float_to_float(&p, s); return bfloat16_round_pack_canonical(&p, s); } =20 @@ -2996,7 +2993,7 @@ float128 floatx80_to_float128(floatx80 a, float_statu= s *s) FloatParts128 p; =20 if (floatx80_unpack_canonical(&p, a, s)) { - parts_float_to_float(&p, s); + parts128_float_to_float(&p, s); } else { parts128_default_nan(&p, s); } @@ -3028,7 +3025,7 @@ floatx80 float128_to_floatx80(float128 a, float_statu= s *s) FloatParts128 p; =20 float128_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts128_float_to_float(&p, s); return floatx80_round_pack_canonical(&p, s); } =20 --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211252; cv=none; d=zohomail.com; s=zohoarc; b=L/m8PtBNFKktEXgxmlq1cp0KhIBjYEg2FO0cbZI4LlDWslT3xiyP8CceGjYtmvO9dO3oOSR2HR6ghHUwysOIwXM+oy/uSs0FcrMlQa1aWrvszYvwYZIDLvHPX8VK4xmJ3RA9rCE0SZKUI4sv7/LMoJD5JwH1l0W6lkb4g5yZdZw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211252; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uX4W4f3ESISb9ujW2ooHyoaGSdD4F+8cVRxxDBse7J4=; b=CygFX/MuCevrLk7eRcbxSfiZt3+6tyfFW2oKw8+6eG2yJKusfF586Io0yH2SpkP6Q5fjgpXGx7HKbbEA4Nn24WzJWBcyTOVkOuIE4XeIpYOm+h2rxRYmmz6TbMIpbb8DE74l43rI/8OSn1XbLPmxjR3Z2gCONjviEn/TxcGD7KU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211252675395.16931469382257; Sun, 26 Apr 2026 06:47:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjl-0008LQ-Hb; Sun, 26 Apr 2026 09:41:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjj-0008JR-6V for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:27 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjh-0000Dm-Rk for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:26 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2ad9f316d68so41359005ad.2 for ; Sun, 26 Apr 2026 06:41:25 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210884; x=1777815684; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uX4W4f3ESISb9ujW2ooHyoaGSdD4F+8cVRxxDBse7J4=; b=DOGryLiBpFG/vILCGL7BiwtAdR6f9Akc2qMda4KynmlywHlF55oAMPzR7UWt1HF5sL u+hhKHLQMZqFnPivCPHRXx9FxmOvb+EOQXcYBp4yRvgqrjVMANY1BljDQGpPQZOxwHfS qDUnsYqvH6RlG06HNkRLAoPvekeQm1Q2THVT+qrqX3R2LJFw9FpLybigWQBLpjUSOkK7 UGSnh9o3HcIsjobhLvtSixo4mz429/EBa6hWdy4oQiELos0Eg1Zdp9pqVSEAYRe5VmEd KZsFuYEx71LmbZzHmcY+MTlko/tax6Ck1UnikXK4BD2dE9rO6Z2F7OdHyGqlnsAytzoY Y0wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210884; x=1777815684; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=uX4W4f3ESISb9ujW2ooHyoaGSdD4F+8cVRxxDBse7J4=; b=b/qR2QClLu7wghRhU9gTmISBJO0+f1p0r3DcWiTmIQjdxBJgp9AYATzcNkdFZatzMC jF4PRrbQ4gSn31pnJtHh0dHv+r0H19siSpPVPWS2XXOFrAFPtiZ/Bevn8tbLQdI3avBV zljqvTl5iJAfCXw3VvI4emUyWp5Ai721TBPP9JqiQzvWo5hecTQUr3VDHhlw4YRzVKzY IzdE1+sWGMlaZaxg4xu2imPF09GMJb81J5fOT3cbqmtV6Jbtluh+Xrz9mgrMmEAMb1k1 8kQ/nGz4CFXaR+z4p+kb5CB/yDUjavMO23sNKYBRMOWvG0L2lyprI2VAG1tC9dTYPMG7 9RQQ== X-Gm-Message-State: AOJu0YwI4C7i4N97JadTuxMEQYBmXFKPJJ6DPLORGv3yot4ncSgaLe3Q KeJBa2yT3Umcm2lSdB9N+2TITQJwpNrV1b9sU58EIAZjz5KhCIXfifJZc1PVFMN4FYhgxH0xdUv 1KDRootE= X-Gm-Gg: AeBDieuIKzromXeA8dsNsJHtBw1v0As7zvc8Bfp3izUi4z4cUq4VWtpAb7pUH2D6tI2 0NvBZo5b+hKh5jKA4TyGWlORU6NGuKJW10+PBxGYfompC5vRku8WfMhfU/AM9BFVc8RqiCPCfM2 JJbAuFK163N2Qlh+sYynAtvFUoDPYVUxbVCE0Bh/isEEyNq6oBvNwlH0H8yBQZwlg4HG2u6+YBY Y/TxrLGOsXRa8F0ok1CstMMytQKKRW956zhr3bHsYckbRmIbWtLK0Dacco6s4F2VcaAt9NabKiW czwjrKtVVj9LH/ds1kZNvXl1GTLi8mt46NxY0vUAHcDXBAjHiyqFVxwWDe1ihITGaB2XnWDoY6O oJwvVvg5h7gJfpVIegftI3W9/5F6q/lfGgr39lnIS8iJ0l7ijeMXduxxbSE0aVW5U+7rsmUGQOt xASCHpFp4Sy+3a9FY7O4SPKFEWQE0CYus3hlJENKSs X-Received: by 2002:a17:902:e546:b0:2b2:490c:410e with SMTP id d9443c01a7336-2b5f9e5db09mr379567365ad.7.1777210884458; Sun, 26 Apr 2026 06:41:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 29/84] fpu: Drop PARTS_GENERIC_64_128{_256} Date: Sun, 26 Apr 2026 23:39:06 +1000 Message-ID: <20260426134002.865628-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211254130154100 Content-Type: text/plain; charset="utf-8" These macros are no longer used. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index b1c2f884fc..d077e8da69 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -770,15 +770,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) *-------------------------------------------------------------------------= ---*/ #include "softfloat-specialize.c.inc" =20 -#define PARTS_GENERIC_64_128(NAME, P) \ - _Generic((P), FloatParts64 *: parts64_##NAME, \ - FloatParts128 *: parts128_##NAME) - -#define PARTS_GENERIC_64_128_256(NAME, P) \ - _Generic((P), FloatParts64 *: parts64_##NAME, \ - FloatParts128 *: parts128_##NAME, \ - FloatParts256 *: parts256_##NAME) - /* * Helper functions for softfloat-parts.c.inc, per-size operations. */ --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211276; cv=none; d=zohomail.com; s=zohoarc; b=MCGkzFkeLhhzRF/q7WjkXrjr1BPqcTxkabmGOLJR5CAychuBOUyEAo1ntYnOGIKZfOtE/2Bf2GXWHBQlN5DI3JZ9trPHHbsi6IrNuHKWy3OqEnrdKqfq1HUclaFCcFqZ6A85E1DsdiIJSV7K8pPK/V5k4N40SBQQEEegXcIBaoI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211276; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cWAjKNoEGxxdB5kcvtEjcSc2slMDjvCN3yEwCpVz4fA=; b=DmdkLsU443NWsgoNXRx0sIpcbvbhl0KxpEOrF9sfb4mY/nNyshmgc2pgj5MVqre/Ctyprg+WBtb6nZO2H/LqIgJCGMcf7g7BKc2m0Ir6TXZHrPhhY6nxAw7tCicbW4pFwbsYn8+sjukpLDAPsK4kW3XZCWzxAQaj9KCHa+vrNsI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211276757584.3362682471277; Sun, 26 Apr 2026 06:47:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzk8-0000I2-L5; Sun, 26 Apr 2026 09:41:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjp-0008O2-Du for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:34 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjk-0000Et-P7 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:33 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-c7da372b87eso539663a12.0 for ; Sun, 26 Apr 2026 06:41:28 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210887; x=1777815687; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cWAjKNoEGxxdB5kcvtEjcSc2slMDjvCN3yEwCpVz4fA=; b=r6RhvPFk2s2fvSaRGfxNSyI2Yz0ExiSQkmTvyTtWSB+hE3lqQ2iQcSDx9VXBYIZhOx hoivP1+4XY88bI19RT3cavpO5oYllzwgV9j3LFOqt+coxqh6FsgE/zfFskEjL19CzphB JwyqOglkIjNiw6Y42KxNDQQH9hV2yjpUodfWk7dsI2os5ulTzIVqmdFAf1ZtfWFDeQpK NMVM/VNqzxXLsl9o9lwNFhtHf9Ab0/ooLkRw9qWP2wCpUQvzE+YAXwJIdJ7ZG1aP2GEL LYoHnAYH2qV5XfsgI+KLL+Q3i0JpAWLx0+BBvRprg2ewp2+2yvhbk3KiGb4UQTSslX8o ZlrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210887; x=1777815687; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=cWAjKNoEGxxdB5kcvtEjcSc2slMDjvCN3yEwCpVz4fA=; b=PTfLxSXWivV3KigboxXLwl3/BF1Ec3Z5m9KkymxzFnKYUzptPO+9N9tYlOx0fYlqVD LG+6IAcuNhHFstvOLrxObmTjFZu9syazWvXbAV7OxCUiJbd+jDfOwour/tdRmqPyxi1Z S3QHYv4F1fli/StN/4jUh8eYR6jxUR2araLQPyD+QSCukMGsfcmZyyGRhcLVp4AYBIYE CCfqmKpPV3AuAxSbD4mYUhM06A/OJkwsJW7iSFDd1SB3fAka//kej98omPfJBkhXBj4n lwC+okF+yu9jfFLkhPgJdzz5OoFQ1Wfzh6Y/F06iBjPD+10klJc7Qop0W3+RXEM6qTXB 40yA== X-Gm-Message-State: AOJu0YyapeBPNUPY0O03ngbHY/LKKdpWNEYewEvM6LeYaCOeN+RIxOjZ SwRQn9zyaduOLzRkiGsf1wfl1E649fw+pN+yiYeqVD3TMQ7EqjhV2Rqyu2j+ip7RMt1EUf8F//l 6kTd12gw= X-Gm-Gg: AeBDietSEJM1dDDl+5x19BRGZmGOOQLg8KjLjnGWjV1hhX42MtGbS750zi2G9VRUgZY V2gRNT/T3karpY5B4qzt+eW5gBCOXQMjW8IhWXd1hgViqppw1+V/eTLVLsgUIujtelf7V+Kpd1e vjpFeQO9giIYJJR06hEBD89QYBF2qAIKJMtt+QjWlLU3sJs80FWi1a2cTO4dMiC5G0u/ZOK6Q/V 7tUnHo7k/TIV4IoMFZXihfETISqoGN1QT3ILT+UHZokI1oCEh4toeG5GCjOm5rBkHMz2LOMuLkf h3cVSwlz/oXkW/rxV34cgkKvX/ZXSM5MVikEv7ceh//4bVHDTQRbuLVEerXDdgBBK1szMcd6XSl HNhUsibQiGCKUKHJj7Biz2WOCtW8Vbkh/UA/Mk+/Wqxp10beTwXXLp1MaflR6eTmt7XaUSwWFC1 XEgIONLDuL+zRIR2gSAtORTjbr+OSXfxPGlCxO7bmA X-Received: by 2002:a17:902:ef02:b0:2b2:420a:b48a with SMTP id d9443c01a7336-2b5f9fc2eb0mr400825055ad.32.1777210887172; Sun, 26 Apr 2026 06:41:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 30/84] fpu: Drop FRAC_GENERIC_64_128{_256} Date: Sun, 26 Apr 2026 23:39:07 +1000 Message-ID: <20260426134002.865628-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211278690154100 Content-Type: text/plain; charset="utf-8" This requires more complexity to handle const selectors, and an indirection macro for each function. Easier to just use the preprocessor. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 69 +++++---------------- fpu/softfloat-parts-addsub.c.inc | 22 +++---- fpu/softfloat-parts.c.inc | 102 +++++++++++++++---------------- 3 files changed, 77 insertions(+), 116 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index d077e8da69..e462fb7d74 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -774,15 +774,6 @@ static float128 QEMU_FLATTEN float128_pack_raw(const F= loatParts128 *p) * Helper functions for softfloat-parts.c.inc, per-size operations. */ =20 -#define FRAC_GENERIC_64_128(NAME, P) \ - _Generic((P), FloatParts64 *: frac64_##NAME, \ - FloatParts128 *: frac128_##NAME) - -#define FRAC_GENERIC_64_128_256(NAME, P) \ - _Generic((P), FloatParts64 *: frac64_##NAME, \ - FloatParts128 *: frac128_##NAME, \ - FloatParts256 *: frac256_##NAME) - static bool frac64_add(FloatParts64 *r, FloatParts64 *a, FloatParts64 *b) { return uadd64_overflow(a->frac, b->frac, &r->frac); @@ -806,8 +797,6 @@ static bool frac256_add(FloatParts256 *r, FloatParts256= *a, FloatParts256 *b) return c; } =20 -#define frac_add(R, A, B) FRAC_GENERIC_64_128_256(add, R)(R, A, B) - static bool frac64_addi(FloatParts64 *r, FloatParts64 *a, uint64_t c) { return uadd64_overflow(a->frac, c, &r->frac); @@ -819,8 +808,6 @@ static bool frac128_addi(FloatParts128 *r, FloatParts12= 8 *a, uint64_t c) return uadd64_overflow(a->frac_hi, c, &r->frac_hi); } =20 -#define frac_addi(R, A, C) FRAC_GENERIC_64_128(addi, R)(R, A, C) - static void frac64_allones(FloatParts64 *a) { a->frac =3D -1; @@ -831,8 +818,6 @@ static void frac128_allones(FloatParts128 *a) a->frac_hi =3D a->frac_lo =3D -1; } =20 -#define frac_allones(A) FRAC_GENERIC_64_128(allones, A)(A) - static FloatRelation frac64_cmp(FloatParts64 *a, FloatParts64 *b) { return (a->frac =3D=3D b->frac ? float_relation_equal @@ -852,8 +837,6 @@ static FloatRelation frac128_cmp(FloatParts128 *a, Floa= tParts128 *b) return ta < tb ? float_relation_less : float_relation_greater; } =20 -#define frac_cmp(A, B) FRAC_GENERIC_64_128(cmp, A)(A, B) - static void frac64_clear(FloatParts64 *a) { a->frac =3D 0; @@ -864,8 +847,6 @@ static void frac128_clear(FloatParts128 *a) a->frac_hi =3D a->frac_lo =3D 0; } =20 -#define frac_clear(A) FRAC_GENERIC_64_128(clear, A)(A) - static bool frac64_div(FloatParts64 *a, FloatParts64 *b) { uint64_t n1, n0, r, q; @@ -945,8 +926,6 @@ static bool frac128_div(FloatParts128 *a, FloatParts128= *b) return ret; } =20 -#define frac_div(A, B) FRAC_GENERIC_64_128(div, A)(A, B) - static bool frac64_eqz(FloatParts64 *a) { return a->frac =3D=3D 0; @@ -957,8 +936,6 @@ static bool frac128_eqz(FloatParts128 *a) return (a->frac_hi | a->frac_lo) =3D=3D 0; } =20 -#define frac_eqz(A) FRAC_GENERIC_64_128(eqz, A)(A) - static void frac64_mulw(FloatParts128 *r, FloatParts64 *a, FloatParts64 *b) { mulu64(&r->frac_lo, &r->frac_hi, a->frac, b->frac); @@ -970,8 +947,6 @@ static void frac128_mulw(FloatParts256 *r, FloatParts12= 8 *a, FloatParts128 *b) &r->frac_hi, &r->frac_hm, &r->frac_lm, &r->frac_lo); } =20 -#define frac_mulw(R, A, B) FRAC_GENERIC_64_128(mulw, A)(R, A, B) - static void frac64_neg(FloatParts64 *a) { a->frac =3D -a->frac; @@ -993,8 +968,6 @@ static void frac256_neg(FloatParts256 *a) a->frac_hi =3D usub64_borrow(0, a->frac_hi, &c); } =20 -#define frac_neg(A) FRAC_GENERIC_64_128_256(neg, A)(A) - static int frac64_normalize(FloatParts64 *a) { if (a->frac) { @@ -1068,8 +1041,6 @@ static int frac256_normalize(FloatParts256 *a) return ret; } =20 -#define frac_normalize(A) FRAC_GENERIC_64_128_256(normalize, A)(A) - static void frac64_modrem(FloatParts64 *a, FloatParts64 *b, uint64_t *mod_= quot) { uint64_t a0, a1, b0, t0, t1, q, quot; @@ -1248,8 +1219,6 @@ static void frac128_modrem(FloatParts128 *a, FloatPar= ts128 *b, a->frac_lo =3D a1 | (a2 !=3D 0); } =20 -#define frac_modrem(A, B, Q) FRAC_GENERIC_64_128(modrem, A)(A, B, Q) - static void frac64_shl(FloatParts64 *a, int c) { a->frac <<=3D c; @@ -1273,8 +1242,6 @@ static void frac128_shl(FloatParts128 *a, int c) a->frac_lo =3D a1; } =20 -#define frac_shl(A, C) FRAC_GENERIC_64_128(shl, A)(A, C) - static void frac64_shr(FloatParts64 *a, int c) { a->frac >>=3D c; @@ -1298,8 +1265,6 @@ static void frac128_shr(FloatParts128 *a, int c) a->frac_lo =3D a1; } =20 -#define frac_shr(A, C) FRAC_GENERIC_64_128(shr, A)(A, C) - static void frac64_shrjam(FloatParts64 *a, int c) { uint64_t a0 =3D a->frac; @@ -1388,8 +1353,6 @@ static void frac256_shrjam(FloatParts256 *a, int c) a->frac_hi =3D a0; } =20 -#define frac_shrjam(A, C) FRAC_GENERIC_64_128_256(shrjam, A)(A, C) - static bool frac64_sub(FloatParts64 *r, FloatParts64 *a, FloatParts64 *b) { return usub64_overflow(a->frac, b->frac, &r->frac); @@ -1413,8 +1376,6 @@ static bool frac256_sub(FloatParts256 *r, FloatParts2= 56 *a, FloatParts256 *b) return c; } =20 -#define frac_sub(R, A, B) FRAC_GENERIC_64_128_256(sub, R)(R, A, B) - static void frac64_truncjam(FloatParts64 *r, FloatParts128 *a) { r->frac =3D a->frac_hi | (a->frac_lo !=3D 0); @@ -1426,8 +1387,6 @@ static void frac128_truncjam(FloatParts128 *r, FloatP= arts256 *a) r->frac_lo =3D a->frac_hm | ((a->frac_lm | a->frac_lo) !=3D 0); } =20 -#define frac_truncjam(R, A) FRAC_GENERIC_64_128(truncjam, R)(R, A) - static void frac64_widen(FloatParts128 *r, FloatParts64 *a) { r->frac_hi =3D a->frac; @@ -1442,8 +1401,6 @@ static void frac128_widen(FloatParts256 *r, FloatPart= s128 *a) r->frac_lo =3D 0; } =20 -#define frac_widen(A, B) FRAC_GENERIC_64_128(widen, B)(A, B) - /* * Reciprocal sqrt table. 1 bit of exponent, 6-bits of mantessa. * From https://git.musl-libc.org/cgit/musl/tree/src/math/sqrt_data.c @@ -1468,6 +1425,8 @@ static const uint16_t rsqrt_tab[128] =3D { 0xba91, 0xb9cc, 0xb90a, 0xb84a, 0xb78c, 0xb6d0, 0xb617, 0xb560, }; =20 +#define fracN(NAME) glue(glue(glue(frac,N),_),NAME) +#define fracW(NAME) glue(glue(glue(frac,W),_),NAME) #define partsN(NAME) glue(glue(glue(parts,N),_),NAME) #define partsW(NAME) glue(glue(glue(parts,W),_),NAME) #define FloatPartsN glue(FloatParts,N) @@ -1494,6 +1453,8 @@ static const uint16_t rsqrt_tab[128] =3D { =20 #undef N #undef W +#undef fracN +#undef fracW #undef partsN #undef partsW #undef FloatPartsN @@ -1624,19 +1585,19 @@ static float64 float64r32_pack_raw(FloatParts64 *p) * The result is denormal for float32, but can be represented * in normalized form for float64. Adjust, per canonicalize. */ - int shift =3D frac_normalize(p); + int shift =3D frac64_normalize(p); p->exp =3D (float32_params.frac_shift - float32_params.exp_bias - shift + 1 + float64_params.exp_bias); - frac_shr(p, float64_params.frac_shift); + frac64_shr(p, float64_params.frac_shift); } else { - frac_shl(p, float32_params.frac_shift - float64_params.frac_sh= ift); + frac64_shl(p, float32_params.frac_shift - float64_params.frac_= shift); p->exp +=3D float64_params.exp_bias - float32_params.exp_bias; } break; case float_class_snan: case float_class_qnan: - frac_shl(p, float32_params.frac_shift - float64_params.frac_shift); + frac64_shl(p, float32_params.frac_shift - float64_params.frac_shif= t); p->exp =3D float64_params.exp_max; break; case float_class_inf: @@ -1724,7 +1685,7 @@ static floatx80 floatx80_round_pack_canonical(FloatPa= rts128 *p, =20 p64.sign =3D p->sign; p64.exp =3D p->exp; - frac_truncjam(&p64, p); + frac64_truncjam(&p64, p); parts64_uncanon_normal(&p64, s, fmt, false); frac =3D p64.frac; exp =3D p64.exp; @@ -2698,7 +2659,7 @@ static void parts_float_to_float_narrow(FloatParts64 = *a, FloatParts128 *b, float_raise(float_flag_input_denormal_used, s); /* fall through */ case float_class_normal: - frac_truncjam(a, b); + frac64_truncjam(a, b); break; case float_class_snan: case float_class_qnan: @@ -2717,7 +2678,7 @@ static void parts_float_to_float_widen(FloatParts128 = *a, FloatParts64 *b, a->cls =3D b->cls; a->sign =3D b->sign; a->exp =3D b->exp; - frac_widen(a, b); + frac64_widen(a, b); =20 if (is_nan(a->cls)) { parts128_return_nan(a, s); @@ -4939,7 +4900,7 @@ static void parts64_log2(FloatParts64 *a, float_statu= s *s, const FloatFmt *fmt) FloatParts64 f =3D { .cls =3D float_class_normal, .frac =3D r }; - f.exp =3D f_exp - frac_normalize(&f); + f.exp =3D f_exp - frac64_normalize(&f); =20 if (a_exp < 0) { parts64_sub_normal(a, &f); @@ -5010,7 +4971,7 @@ float128 float128_default_nan(float_status *status) FloatParts128 p; =20 parts128_default_nan(&p, status); - frac_shr(&p, float128_params.frac_shift); + frac128_shr(&p, float128_params.frac_shift); return float128_pack_raw(&p); } =20 @@ -5076,9 +5037,9 @@ float128 float128_silence_nan(float128 a, float_statu= s *status) FloatParts128 p; =20 float128_unpack_raw(&p, a); - frac_shl(&p, float128_params.frac_shift); + frac128_shl(&p, float128_params.frac_shift); parts128_silence_nan(&p, status); - frac_shr(&p, float128_params.frac_shift); + frac128_shr(&p, float128_params.frac_shift); return float128_pack_raw(&p); } =20 diff --git a/fpu/softfloat-parts-addsub.c.inc b/fpu/softfloat-parts-addsub.= c.inc index ae5c1017c5..accf996d7c 100644 --- a/fpu/softfloat-parts-addsub.c.inc +++ b/fpu/softfloat-parts-addsub.c.inc @@ -20,14 +20,14 @@ static void partsN(add_normal)(FloatPartsN *a, FloatPar= tsN *b) int exp_diff =3D a->exp - b->exp; =20 if (exp_diff > 0) { - frac_shrjam(b, exp_diff); + fracN(shrjam)(b, exp_diff); } else if (exp_diff < 0) { - frac_shrjam(a, -exp_diff); + fracN(shrjam)(a, -exp_diff); a->exp =3D b->exp; } =20 - if (frac_add(a, a, b)) { - frac_shrjam(a, 1); + if (fracN(add)(a, a, b)) { + fracN(shrjam)(a, 1); a->frac_hi |=3D DECOMPOSED_IMPLICIT_BIT; a->exp +=3D 1; } @@ -39,20 +39,20 @@ static bool partsN(sub_normal)(FloatPartsN *a, FloatPar= tsN *b) int shift; =20 if (exp_diff > 0) { - frac_shrjam(b, exp_diff); - frac_sub(a, a, b); + fracN(shrjam)(b, exp_diff); + fracN(sub)(a, a, b); } else if (exp_diff < 0) { a->exp =3D b->exp; a->sign ^=3D 1; - frac_shrjam(a, -exp_diff); - frac_sub(a, b, a); - } else if (frac_sub(a, a, b)) { + fracN(shrjam)(a, -exp_diff); + fracN(sub)(a, b, a); + } else if (fracN(sub)(a, a, b)) { /* Overflow means that A was less than B. */ - frac_neg(a); + fracN(neg)(a); a->sign ^=3D 1; } =20 - shift =3D frac_normalize(a); + shift =3D fracN(normalize)(a); if (likely(shift < N)) { a->exp -=3D shift; return true; diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 5f27efd288..5d344f9afe 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -98,7 +98,7 @@ static FloatPartsN *partsN(pick_nan)(FloatPartsN *a, Floa= tPartsN *b, ret =3D b; break; } - cmp =3D frac_cmp(a, b); + cmp =3D fracN(cmp)(a, b); if (cmp =3D=3D 0) { cmp =3D a->sign < b->sign; } @@ -215,14 +215,14 @@ static void partsN(canonicalize)(FloatPartsN *p, floa= t_status *status, (status->floatx80_behaviour & floatx80_pseudo_denormal_valid); =20 if (unlikely(p->exp =3D=3D 0)) { - if (likely(frac_eqz(p))) { + if (likely(fracN(eqz)(p))) { p->cls =3D float_class_zero; } else if (status->flush_inputs_to_zero) { float_raise(float_flag_input_denormal_flushed, status); p->cls =3D float_class_zero; - frac_clear(p); + fracN(clear)(p); } else { - int shift =3D frac_normalize(p); + int shift =3D fracN(normalize)(p); p->cls =3D float_class_denormal; p->exp =3D fmt->frac_shift - fmt->exp_bias - shift + !has_pseudo_denormals; @@ -232,10 +232,10 @@ static void partsN(canonicalize)(FloatPartsN *p, floa= t_status *status, if (unlikely(p->exp =3D=3D fmt->exp_max)) { switch (fmt->exp_max_kind) { case float_expmax_ieee: - if (likely(frac_eqz(p))) { + if (likely(fracN(eqz)(p))) { p->cls =3D float_class_inf; } else { - frac_shl(p, fmt->frac_shift); + fracN(shl)(p, fmt->frac_shift); p->cls =3D (parts_is_snan_frac(p->frac_hi, status) ? float_class_snan : float_class_qnan); } @@ -244,7 +244,7 @@ static void partsN(canonicalize)(FloatPartsN *p, float_= status *status, break; case float_expmax_e4m3: if (p->frac_hi =3D=3D 0b111) { - frac_shl(p, fmt->frac_shift); + fracN(shl)(p, fmt->frac_shift); p->cls =3D (parts_is_snan_frac(p->frac_hi, status) ? float_class_snan : float_class_qnan); return; @@ -258,7 +258,7 @@ static void partsN(canonicalize)(FloatPartsN *p, float_= status *status, =20 p->cls =3D float_class_normal; p->exp -=3D fmt->exp_bias; - frac_shl(p, fmt->frac_shift); + fracN(shl)(p, fmt->frac_shift); p->frac_hi |=3D DECOMPOSED_IMPLICIT_BIT; } =20 @@ -344,8 +344,8 @@ static void partsN(uncanon_normal)(FloatPartsN *p, floa= t_status *s, if (likely(exp > 0)) { if (p->frac_lo & round_mask) { flags |=3D float_flag_inexact; - if (frac_addi(p, p, inc)) { - frac_shr(p, 1); + if (fracN(addi)(p, p, inc)) { + fracN(shr)(p, 1); p->frac_hi |=3D DECOMPOSED_IMPLICIT_BIT; exp++; } @@ -361,13 +361,13 @@ static void partsN(uncanon_normal)(FloatPartsN *p, fl= oat_status *s, } else if (overflow_norm) { flags |=3D float_flag_inexact; exp =3D exp_max - 1; - frac_allones(p); + fracN(allones)(p); p->frac_lo &=3D ~round_mask; } else { flags |=3D float_flag_inexact; p->cls =3D float_class_inf; exp =3D exp_max; - frac_clear(p); + fracN(clear)(p); } break; =20 @@ -378,7 +378,7 @@ static void partsN(uncanon_normal)(FloatPartsN *p, floa= t_status *s, ? float_flag_invalid : float_flag_overflow | float_flag_inexact); exp =3D exp_max; - frac_allones(p); + fracN(allones)(p); p->frac_lo &=3D ~round_mask; } break; @@ -395,26 +395,26 @@ static void partsN(uncanon_normal)(FloatPartsN *p, fl= oat_status *s, g_assert_not_reached(); } } - frac_shr(p, frac_shift); + fracN(shr)(p, frac_shift); } else if (unlikely(s->rebias_underflow)) { flags |=3D float_flag_underflow; exp +=3D fmt->exp_re_bias; if (p->frac_lo & round_mask) { flags |=3D float_flag_inexact; - if (frac_addi(p, p, inc)) { - frac_shr(p, 1); + if (fracN(addi)(p, p, inc)) { + fracN(shr)(p, 1); p->frac_hi |=3D DECOMPOSED_IMPLICIT_BIT; exp++; } p->frac_lo &=3D ~round_mask; } - frac_shr(p, frac_shift); + fracN(shr)(p, frac_shift); } else if (s->flush_to_zero && s->ftz_detection =3D=3D float_ftz_before_rounding) { flags |=3D float_flag_output_denormal_flushed; p->cls =3D float_class_zero; exp =3D 0; - frac_clear(p); + fracN(clear)(p); } else { bool is_tiny =3D s->tininess_before_rounding || exp < 0; bool has_pseudo_denormals =3D fmt->has_explicit_bit && @@ -422,10 +422,10 @@ static void partsN(uncanon_normal)(FloatPartsN *p, fl= oat_status *s, =20 if (!is_tiny) { FloatPartsN discard; - is_tiny =3D !frac_addi(&discard, p, inc); + is_tiny =3D !fracN(addi)(&discard, p, inc); } =20 - frac_shrjam(p, !has_pseudo_denormals - exp); + fracN(shrjam)(p, !has_pseudo_denormals - exp); =20 if (p->frac_lo & round_mask) { /* Need to recompute round-to-even/round-to-odd. */ @@ -452,12 +452,12 @@ static void partsN(uncanon_normal)(FloatPartsN *p, fl= oat_status *s, break; } flags |=3D float_flag_inexact; - frac_addi(p, p, inc); + fracN(addi)(p, p, inc); p->frac_lo &=3D ~round_mask; } =20 exp =3D (p->frac_hi & DECOMPOSED_IMPLICIT_BIT) && !has_pseudo_deno= rmals; - frac_shr(p, frac_shift); + fracN(shr)(p, frac_shift); =20 if (is_tiny) { if (s->flush_to_zero) { @@ -465,11 +465,11 @@ static void partsN(uncanon_normal)(FloatPartsN *p, fl= oat_status *s, flags |=3D float_flag_output_denormal_flushed; p->cls =3D float_class_zero; exp =3D 0; - frac_clear(p); + fracN(clear)(p); } else if (flags & float_flag_inexact) { flags |=3D float_flag_underflow; } - if (exp =3D=3D 0 && frac_eqz(p)) { + if (exp =3D=3D 0 && fracN(eqz)(p)) { p->cls =3D float_class_zero; } } @@ -487,17 +487,17 @@ static void partsN(uncanon)(FloatPartsN *p, float_sta= tus *s, switch (p->cls) { case float_class_zero: p->exp =3D 0; - frac_clear(p); + fracN(clear)(p); return; case float_class_inf: switch (fmt->exp_max_kind) { case float_expmax_ieee: p->exp =3D fmt->exp_max; - frac_clear(p); + fracN(clear)(p); break; case float_expmax_e4m3: partsN(uncanon_e4m3_overflow)(p, s, fmt, saturate); - frac_shr(p, fmt->frac_shift); + fracN(shr)(p, fmt->frac_shift); break; case float_expmax_normal: default: @@ -508,7 +508,7 @@ static void partsN(uncanon)(FloatPartsN *p, float_statu= s *s, case float_class_snan: assert(fmt->exp_max_kind !=3D float_expmax_normal); p->exp =3D fmt->exp_max; - frac_shr(p, fmt->frac_shift); + fracN(shr)(p, fmt->frac_shift); return; default: break; @@ -625,12 +625,12 @@ static FloatPartsN *partsN(mul)(FloatPartsN *a, Float= PartsN *b, float_raise(float_flag_input_denormal_used, s); } =20 - frac_mulw(&tmp, a, b); - frac_truncjam(a, &tmp); + fracN(mulw)(&tmp, a, b); + fracN(truncjam)(a, &tmp); =20 a->exp +=3D b->exp + 1; if (!(a->frac_hi & DECOMPOSED_IMPLICIT_BIT)) { - frac_add(a, a, a); + fracN(add)(a, a, a); a->exp -=3D 1; } =20 @@ -747,16 +747,16 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN= *a, FloatPartsN *b, /* Perform the multiplication step. */ p_widen.sign =3D a->sign; p_widen.exp =3D a->exp + b->exp + 1; - frac_mulw(&p_widen, a, b); + fracN(mulw)(&p_widen, a, b); if (!(p_widen.frac_hi & DECOMPOSED_IMPLICIT_BIT)) { - frac_add(&p_widen, &p_widen, &p_widen); + fracW(add)(&p_widen, &p_widen, &p_widen); p_widen.exp -=3D 1; } =20 /* Perform the addition step. */ if (c->cls !=3D float_class_zero) { /* Zero-extend C to less significant bits. */ - frac_widen(&c_widen, c); + fracN(widen)(&c_widen, c); c_widen.exp =3D c->exp; =20 if (a->sign =3D=3D c->sign) { @@ -767,7 +767,7 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *= a, FloatPartsN *b, } =20 /* Narrow with sticky bit, for proper rounding later. */ - frac_truncjam(a, &p_widen); + fracN(truncjam)(a, &p_widen); a->sign =3D p_widen.sign; a->exp =3D p_widen.exp; =20 @@ -816,7 +816,7 @@ static FloatPartsN *partsN(div)(FloatPartsN *a, FloatPa= rtsN *b, float_raise(float_flag_input_denormal_used, s); } a->sign =3D sign; - a->exp -=3D b->exp + frac_div(a, b); + a->exp -=3D b->exp + fracN(div)(a, b); return a; } =20 @@ -880,7 +880,7 @@ static FloatPartsN *partsN(modrem)(FloatPartsN *a, Floa= tPartsN *b, if (ab_mask & float_cmask_denormal) { float_raise(float_flag_input_denormal_used, s); } - frac_modrem(a, b, mod_quot); + fracN(modrem)(a, b, mod_quot); return a; } =20 @@ -969,7 +969,7 @@ static void partsN(sqrt)(FloatPartsN *a, float_status *= status, exp_odd =3D a->exp & 1; index =3D extract64(a->frac_hi, 57, 6) | (!exp_odd << 6); if (!exp_odd) { - frac_shr(a, 1); + fracN(shr)(a, 1); } =20 /* @@ -1110,7 +1110,7 @@ static void partsN(sqrt)(FloatPartsN *a, float_status= *status, /* Convert back from base 4 to base 2. */ a->exp >>=3D 1; if (!(a->frac_hi & DECOMPOSED_IMPLICIT_BIT)) { - frac_add(a, a, a); + fracN(add)(a, a, a); } else { a->exp +=3D 1; } @@ -1150,9 +1150,9 @@ static bool partsN(round_to_int_normal)(FloatPartsN *= a, FloatRoundMode rmode, if (a->exp =3D=3D -1) { FloatPartsN tmp; /* Shift left one, discarding DECOMPOSED_IMPLICIT_BIT */ - frac_add(&tmp, a, a); + fracN(add)(&tmp, a, a); /* Anything remaining means frac > 0.5. */ - one =3D !frac_eqz(&tmp); + one =3D !fracN(eqz)(&tmp); } break; case float_round_ties_away: @@ -1174,7 +1174,7 @@ static bool partsN(round_to_int_normal)(FloatPartsN *= a, FloatRoundMode rmode, g_assert_not_reached(); } =20 - frac_clear(a); + fracN(clear)(a); a->exp =3D 0; if (one) { a->frac_hi =3D DECOMPOSED_IMPLICIT_BIT; @@ -1190,7 +1190,7 @@ static bool partsN(round_to_int_normal)(FloatPartsN *= a, FloatRoundMode rmode, * which leaves room for sticky and rounding bit. */ shift_adj =3D (N - 1) - (a->exp + 2); - frac_shrjam(a, shift_adj); + fracN(shrjam)(a, shift_adj); frac_lsb =3D 1 << 2; } else { /* @@ -1208,7 +1208,7 @@ static bool partsN(round_to_int_normal)(FloatPartsN *= a, FloatRoundMode rmode, =20 if (!(a->frac_lo & rnd_mask)) { /* Fractional bits already clear, undo the shift above. */ - frac_shl(a, shift_adj); + fracN(shl)(a, shift_adj); return false; } =20 @@ -1236,21 +1236,21 @@ static bool partsN(round_to_int_normal)(FloatPartsN= *a, FloatRoundMode rmode, } =20 if (shift_adj =3D=3D 0) { - if (frac_addi(a, a, inc)) { - frac_shr(a, 1); + if (fracN(addi)(a, a, inc)) { + fracN(shr)(a, 1); a->frac_hi |=3D DECOMPOSED_IMPLICIT_BIT; a->exp++; } a->frac_lo &=3D ~rnd_mask; } else { - frac_addi(a, a, inc); + fracN(addi)(a, a, inc); a->frac_lo &=3D ~rnd_mask; /* Be careful shifting back, not to overflow */ - frac_shl(a, shift_adj - 1); + fracN(shl)(a, shift_adj - 1); if (a->frac_hi & DECOMPOSED_IMPLICIT_BIT) { a->exp++; } else { - frac_add(a, a, a); + fracN(add)(a, a, a); } } return true; @@ -1555,7 +1555,7 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, Fl= oatPartsN *b, /* Compare magnitudes. */ cmp =3D a_exp - b_exp; if (cmp =3D=3D 0) { - cmp =3D frac_cmp(a, b); + cmp =3D fracN(cmp)(a, b); } =20 /* @@ -1597,7 +1597,7 @@ static FloatRelation partsN(compare)(FloatPartsN *a, = FloatPartsN *b, goto a_sign; } if (a->exp =3D=3D b->exp) { - cmp =3D frac_cmp(a, b); + cmp =3D fracN(cmp)(a, b); } else if (a->exp < b->exp) { cmp =3D float_relation_less; } else { --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211281; cv=none; d=zohomail.com; s=zohoarc; b=R8GfUQy/2emTUJGnXZ2ab9OBZQY+OHjTb63VxjViep+4/fcYSQr6b9/a71kz4rVP1f10pcerxYyEv966jGx0iWxhde+briIt78wl+vFEx1zHEB1RyqykHgTstHRlAs2ph1BS35DEob8vhMpweewBna7dXMmUxiAe8NDD9UUjiqQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211281; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iVbA8u7xaM52Ozcb/NCd3ngtR9jQDG2r+JFNdlIlX4Y=; b=CPv6SKsZEDwiqcqjwiMj1Ynn00rx3JV8+91OJodl7/7iIE+kdgqvvZ8h5vtTOkDghG2RO24/xjonC9lgei+5PNTClkfkwp78dtZOFOhb5eIAD0W6agqbeeSGi9NfF4vacm9WKkA+WjgeCvcNctzCIUVuFocy30HCjKBO47v/EZk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211281445741.0368631655934; Sun, 26 Apr 2026 06:48:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzjz-00006j-6I; Sun, 26 Apr 2026 09:41:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjr-0008OX-5J for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:36 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjn-0000FQ-81 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:33 -0400 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-c798fc1a28cso2787943a12.3 for ; Sun, 26 Apr 2026 06:41:30 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210890; x=1777815690; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iVbA8u7xaM52Ozcb/NCd3ngtR9jQDG2r+JFNdlIlX4Y=; b=Kf2WVgWnDknlk+EuTQPl14r+k8luLcC5M2GZPb1jZB/3sZIyfrNip1I+ywI6Sz4X45 Fv3xwGJ1AfYyo8QhBJlcTwAqoYtNWUx2jEzWR9b+hT6H6VDw93t4gXAv+qJKwqD+YzxP lxqHg4TPZha3e1jZ+gpIob5/L80SyL3QHJW7ryPu7BO/S4uSzNClWGeWhvEE04IBr1R1 i6vzLjEizXXcItkepFNXcF7IiWWHbIuGAiLiWNqdBUa75afZWkiU8jCQCr/CKgqT/iGS OrLQNkEATnRk8KChKfn6ci2kz/o1SZZe65o1mHek+l5yswapPaHSTTTcyD+b327geRCD 4rCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210890; x=1777815690; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=iVbA8u7xaM52Ozcb/NCd3ngtR9jQDG2r+JFNdlIlX4Y=; b=kc6KFK1q7YId6CCg/uk7ikb1H+icBwWevYOEqz1o0gLZGA/XdgyXcqp6CJd0/ZnsGf 8hBFdKiDDXzBQqBXAZcxkIxn+BNmDl5BIe983cNst4vkMCwLNB2LgWdCtBx+EugPuiu2 ZAVgVK6blDCa87hjPnSCccG+1LlYKBx03A5WlJa74E1eHW7cShEm5OYkJIZ2ZF6xPOpy t5gJKh84G/lSSsDvDmo/SyynqIRZlh7F03nv1oskgbFUOVVtiDKS3D1Pj5nb4dKcCmBt qwZZJ4u9C7b9/v6Ytl1FZDU/d5PPyDJsLfSj5TkzWaWpNj7NVvO48Danm2aaLhKEV/KS b92Q== X-Gm-Message-State: AOJu0YwJTeKyS0+VYWLxZLDz8LgMz5rUc6rjsEPfCsREk3a26vTq5uZF rIPGyObEGwJBM/MJgSuEaXIMc1vjU81pn3jy4pVl8U5hPdFhcG+4kZMoa6dwtbwS7VWZ2orsNsN 2beXKKWQ= X-Gm-Gg: AeBDieuuRB8DsiIJ2Xlle6ZqF/9rbcEl406Jas5I9KIRqIJjPSt5A+6sdV1q1kVdsah 7fhEOKWVs94/SyioriWdHFM9iWVk+SFecjDfVemXPp9CPqq04xkW5qb7/SKLXnpTSYx2WzmUGL/ FKOuiq5iMg0QQRbMCVu4GRxUnJvORrtxyFhWyIktGXU+JeVyxOZWEuOLdtcGGvqL6dB/5chyOyB bVZLOPbJg3STLp/EylKUHta+prHeYxqS5RRttOJp3MV8ZGnuBrNbivgB2wm13OqdXJQmAryDE/2 VBXlHUuLDtUF/qz6tJHzw+OZz5gUvJS7dwxS8C1EqyKItxlH5s8hgM2l/jE5GPMa86hKNI+zz+J mTh6iRhMzhaLpAE+Oy8y7vNz4NWr/3FGulsN0QnyQzDxWzMHrixodCqkzhToBYwJSV9rPdJTY7R mq3+8ZjsptS5J2Z3RZ1nDSmfg/T4juw33SRXE4N0ky X-Received: by 2002:a17:903:390b:b0:2b7:ab49:3c8c with SMTP id d9443c01a7336-2b7ab493dffmr141444635ad.7.1777210889771; Sun, 26 Apr 2026 06:41:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 31/84] fpu: Constify frac{64,128,256}_* inputs Date: Sun, 26 Apr 2026 23:39:08 +1000 Message-ID: <20260426134002.865628-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211283235158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 53 +++++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index e462fb7d74..6cca31af30 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -774,12 +774,14 @@ static float128 QEMU_FLATTEN float128_pack_raw(const = FloatParts128 *p) * Helper functions for softfloat-parts.c.inc, per-size operations. */ =20 -static bool frac64_add(FloatParts64 *r, FloatParts64 *a, FloatParts64 *b) +static bool frac64_add(FloatParts64 *r, + const FloatParts64 *a, const FloatParts64 *b) { return uadd64_overflow(a->frac, b->frac, &r->frac); } =20 -static bool frac128_add(FloatParts128 *r, FloatParts128 *a, FloatParts128 = *b) +static bool frac128_add(FloatParts128 *r, + const FloatParts128 *a, const FloatParts128 *b) { bool c =3D 0; r->frac_lo =3D uadd64_carry(a->frac_lo, b->frac_lo, &c); @@ -787,7 +789,8 @@ static bool frac128_add(FloatParts128 *r, FloatParts128= *a, FloatParts128 *b) return c; } =20 -static bool frac256_add(FloatParts256 *r, FloatParts256 *a, FloatParts256 = *b) +static bool frac256_add(FloatParts256 *r, + const FloatParts256 *a, const FloatParts256 *b) { bool c =3D 0; r->frac_lo =3D uadd64_carry(a->frac_lo, b->frac_lo, &c); @@ -797,12 +800,12 @@ static bool frac256_add(FloatParts256 *r, FloatParts2= 56 *a, FloatParts256 *b) return c; } =20 -static bool frac64_addi(FloatParts64 *r, FloatParts64 *a, uint64_t c) +static bool frac64_addi(FloatParts64 *r, const FloatParts64 *a, uint64_t c) { return uadd64_overflow(a->frac, c, &r->frac); } =20 -static bool frac128_addi(FloatParts128 *r, FloatParts128 *a, uint64_t c) +static bool frac128_addi(FloatParts128 *r, const FloatParts128 *a, uint64_= t c) { c =3D uadd64_overflow(a->frac_lo, c, &r->frac_lo); return uadd64_overflow(a->frac_hi, c, &r->frac_hi); @@ -818,14 +821,14 @@ static void frac128_allones(FloatParts128 *a) a->frac_hi =3D a->frac_lo =3D -1; } =20 -static FloatRelation frac64_cmp(FloatParts64 *a, FloatParts64 *b) +static FloatRelation frac64_cmp(const FloatParts64 *a, const FloatParts64 = *b) { return (a->frac =3D=3D b->frac ? float_relation_equal : a->frac < b->frac ? float_relation_less : float_relation_greater); } =20 -static FloatRelation frac128_cmp(FloatParts128 *a, FloatParts128 *b) +static FloatRelation frac128_cmp(const FloatParts128 *a, const FloatParts1= 28 *b) { uint64_t ta =3D a->frac_hi, tb =3D b->frac_hi; if (ta =3D=3D tb) { @@ -847,7 +850,7 @@ static void frac128_clear(FloatParts128 *a) a->frac_hi =3D a->frac_lo =3D 0; } =20 -static bool frac64_div(FloatParts64 *a, FloatParts64 *b) +static bool frac64_div(FloatParts64 *a, const FloatParts64 *b) { uint64_t n1, n0, r, q; bool ret; @@ -879,7 +882,7 @@ static bool frac64_div(FloatParts64 *a, FloatParts64 *b) return ret; } =20 -static bool frac128_div(FloatParts128 *a, FloatParts128 *b) +static bool frac128_div(FloatParts128 *a, const FloatParts128 *b) { uint64_t q0, q1, a0, a1, b0, b1; uint64_t r0, r1, r2, r3, t0, t1, t2, t3; @@ -926,22 +929,24 @@ static bool frac128_div(FloatParts128 *a, FloatParts1= 28 *b) return ret; } =20 -static bool frac64_eqz(FloatParts64 *a) +static bool frac64_eqz(const FloatParts64 *a) { return a->frac =3D=3D 0; } =20 -static bool frac128_eqz(FloatParts128 *a) +static bool frac128_eqz(const FloatParts128 *a) { return (a->frac_hi | a->frac_lo) =3D=3D 0; } =20 -static void frac64_mulw(FloatParts128 *r, FloatParts64 *a, FloatParts64 *b) +static void frac64_mulw(FloatParts128 *r, + const FloatParts64 *a, const FloatParts64 *b) { mulu64(&r->frac_lo, &r->frac_hi, a->frac, b->frac); } =20 -static void frac128_mulw(FloatParts256 *r, FloatParts128 *a, FloatParts128= *b) +static void frac128_mulw(FloatParts256 *r, + const FloatParts128 *a, const FloatParts128 *b) { mul128To256(a->frac_hi, a->frac_lo, b->frac_hi, b->frac_lo, &r->frac_hi, &r->frac_hm, &r->frac_lm, &r->frac_lo); @@ -1041,7 +1046,8 @@ static int frac256_normalize(FloatParts256 *a) return ret; } =20 -static void frac64_modrem(FloatParts64 *a, FloatParts64 *b, uint64_t *mod_= quot) +static void frac64_modrem(FloatParts64 *a, const FloatParts64 *b, + uint64_t *mod_quot) { uint64_t a0, a1, b0, t0, t1, q, quot; int exp_diff =3D a->exp - b->exp; @@ -1124,7 +1130,7 @@ static void frac64_modrem(FloatParts64 *a, FloatParts= 64 *b, uint64_t *mod_quot) a->frac =3D a0 | (a1 !=3D 0); } =20 -static void frac128_modrem(FloatParts128 *a, FloatParts128 *b, +static void frac128_modrem(FloatParts128 *a, const FloatParts128 *b, uint64_t *mod_quot) { uint64_t a0, a1, a2, b0, b1, t0, t1, t2, q, quot; @@ -1353,12 +1359,14 @@ static void frac256_shrjam(FloatParts256 *a, int c) a->frac_hi =3D a0; } =20 -static bool frac64_sub(FloatParts64 *r, FloatParts64 *a, FloatParts64 *b) +static bool frac64_sub(FloatParts64 *r, + const FloatParts64 *a, const FloatParts64 *b) { return usub64_overflow(a->frac, b->frac, &r->frac); } =20 -static bool frac128_sub(FloatParts128 *r, FloatParts128 *a, FloatParts128 = *b) +static bool frac128_sub(FloatParts128 *r, + const FloatParts128 *a, const FloatParts128 *b) { bool c =3D 0; r->frac_lo =3D usub64_borrow(a->frac_lo, b->frac_lo, &c); @@ -1366,7 +1374,8 @@ static bool frac128_sub(FloatParts128 *r, FloatParts1= 28 *a, FloatParts128 *b) return c; } =20 -static bool frac256_sub(FloatParts256 *r, FloatParts256 *a, FloatParts256 = *b) +static bool frac256_sub(FloatParts256 *r, + const FloatParts256 *a, const FloatParts256 *b) { bool c =3D 0; r->frac_lo =3D usub64_borrow(a->frac_lo, b->frac_lo, &c); @@ -1376,24 +1385,24 @@ static bool frac256_sub(FloatParts256 *r, FloatPart= s256 *a, FloatParts256 *b) return c; } =20 -static void frac64_truncjam(FloatParts64 *r, FloatParts128 *a) +static void frac64_truncjam(FloatParts64 *r, const FloatParts128 *a) { r->frac =3D a->frac_hi | (a->frac_lo !=3D 0); } =20 -static void frac128_truncjam(FloatParts128 *r, FloatParts256 *a) +static void frac128_truncjam(FloatParts128 *r, const FloatParts256 *a) { r->frac_hi =3D a->frac_hi; r->frac_lo =3D a->frac_hm | ((a->frac_lm | a->frac_lo) !=3D 0); } =20 -static void frac64_widen(FloatParts128 *r, FloatParts64 *a) +static void frac64_widen(FloatParts128 *r, const FloatParts64 *a) { r->frac_hi =3D a->frac; r->frac_lo =3D 0; } =20 -static void frac128_widen(FloatParts256 *r, FloatParts128 *a) +static void frac128_widen(FloatParts256 *r, const FloatParts128 *a) { r->frac_hi =3D a->frac_hi; r->frac_hm =3D a->frac_lo; --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211443; cv=none; d=zohomail.com; s=zohoarc; b=R/f0YBCCY+l30WJ5pHNU2tXYuzxTK8+hPId8HHxNfVJECB3RhDKXO7O4o2Nnz27v6ssGb5H7SnTaSM1hK05RWXzZtoLCiyTippD1eYKajTF7BN9aD7tdQuAXRak8Q9JMfWnZlsfcQY1RMcILrDCVk7If71LIuX9shIiTO1MNSo4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211443; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ftntJNMSr0Al9uQHHp51tG7x8A4jpjGmGU9o5FpGbUc=; b=GRpMMDZUtYilwf72zW5BHzsDtg8eDejymS8KwEPliBtFyTwCNGN4PVIueGKsaQhYlo+2JZdaN+k1PSDKKpsH7qmlOgQ11rbU9NmifRcJCU4RxEnqtY5//YMvScS0ZuL2Fqww6q7dR/R6EsKQkGuBbSsVY1Ko2vulHwwXk4pZf6w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211443726185.17725661905376; Sun, 26 Apr 2026 06:50:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzk8-0000HU-Ma; Sun, 26 Apr 2026 09:41:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjt-0008QE-JC for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:38 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjq-0000Iv-Uo for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:37 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2b4650d5f5cso35013515ad.0 for ; Sun, 26 Apr 2026 06:41:34 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210893; x=1777815693; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ftntJNMSr0Al9uQHHp51tG7x8A4jpjGmGU9o5FpGbUc=; b=WsvWDXRczsCfsmoMmK9kBL5Pri/PG+uZ7Tbxf5STWhQj5zcSBYQX79QTaAAQhm9EBY UV7JNqbAZE8Od5uZFmah74JR2oI45SvJhLEDhJbGrAimOxqaStLfpYXIaXXk/+LcB43P 1WTd4JMAwdevSsyc85nfMNmX8K639ckWZwtUenxWkoOcDE1TunpV3yeKdLJnGtndhVNj cSE5DGWd8X1M0AG3L/0uqDA9aTyZuyw0InZWz8RiROo47Rv42f7oevmIqH+qXg1b9ofD 8/CP8sn/5KzOa8HbRRMS0R1fDGhbIxdjqiI69oT2Q0+1Vi9hi+3vVbYjDQf5BUxHXhax 1m6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210893; x=1777815693; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ftntJNMSr0Al9uQHHp51tG7x8A4jpjGmGU9o5FpGbUc=; b=GqT+siQbqlfKYx79R2e2Xzb2wm0+a6IiNghOkzJZaJY60jNspemcx4keodF0JOpwb3 ZZRkMAyUKhl1mNAOivJlPCa3kGKhLkBan2pIS1djULflHudFSQp/UHLrSluiQkTdMBm4 Z4NWqxhnWlPV1hFDa8c3IHUM8ubgPI68MXnhOGnPE8gNifM2LHYLUx2PMXKpnkow/Goa AXrgbde7YuKPTixra4kxiXTUxNIGb+EZzSabUBuvmSYyREccmTv6pTQpq+VwT4O9aVkJ 0sFKX+2EXWHXDhrI8SNZNsnPYXp5CWRgzvY88UgfJw7iTrEsAr+8t4HJhS+EqQdw1mpE 5eOA== X-Gm-Message-State: AOJu0Yx6PIn+lZBy58xlFN+x/SBzeNqdUfwZocKsB57d4miDR3xAjrKy 3ZdjQnUMfuSN8gWNzfHM4htRfHAYZ1WhhkEMxKI9wI3yMt2SHodldh1UJj8hw9sm6O/LGzjTc76 EXw1fGhg= X-Gm-Gg: AeBDiet6ks4UAnuld9ZPea+5kcOsRLNNSIMo1R3yDDLkHjtknYNfj+xz8i0mLix6QlL N/sp2wllI3+e/dKFT2IZuXB+m474HzYKGPqZn0nYgJWArrKWC48tbMhi1G9cRKHv2GbuNR4Nt2z wCmA96G2W8N5ILWTBC2Ea/3lhpk9Ywd0RDspo/XukBmW6DESKWSKToEowzswVdBMssaG6MPS/AM e6PuPI0BZrrY9xLODDms+TDVPAsXaFzu73TwkPRZ4EVtI6IfIe5Hocn0rQKuNpXQHAUy63pR6Ru pYhBZKqtjsIW/oxdFLTGDsmp79Kkfdy8EkZtey5MBmQx2KBQTgz4B4bjWqHJCnM8ih82sciEcxg 52pWb/hpyCQerfAGVM0Q5MI/OIGrIknznYtrAglKuo1YFiOHFTmcjAF9YZV4ByY1+7uckPJ/8Hp Ys//Ss4srga8sZJC1jSWs9j3RA/hVvuiizEP+19imu X-Received: by 2002:a17:902:cec6:b0:2b2:49a7:a5ca with SMTP id d9443c01a7336-2b5f9e8f561mr402948115ad.5.1777210892321; Sun, 26 Apr 2026 06:41:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 32/84] fpu: Return structure from unpack_raw64 Date: Sun, 26 Apr 2026 23:39:09 +1000 Message-ID: <20260426134002.865628-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211444863154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 6cca31af30..99b1cce894 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -633,12 +633,12 @@ static const FloatFmt floatx80_params[3] =3D { }; =20 /* Unpack a float to parts, but do not canonicalize. */ -static void unpack_raw64(FloatParts64 *r, const FloatFmt *fmt, uint64_t ra= w) +static FloatParts64 unpack_raw64(const FloatFmt *fmt, uint64_t raw) { const int f_size =3D fmt->frac_size; const int e_size =3D fmt->exp_size; =20 - *r =3D (FloatParts64) { + return (FloatParts64) { .cls =3D float_class_unclassified, .sign =3D extract64(raw, f_size + e_size, 1), .exp =3D extract64(raw, f_size, e_size), @@ -648,37 +648,37 @@ static void unpack_raw64(FloatParts64 *r, const Float= Fmt *fmt, uint64_t raw) =20 static void QEMU_FLATTEN float4_e2m1_unpack_raw(FloatParts64 *p, float4_e2= m1 f) { - unpack_raw64(p, &float4_e2m1_params, f); + *p =3D unpack_raw64(&float4_e2m1_params, f); } =20 static void QEMU_FLATTEN float8_e4m3_unpack_raw(FloatParts64 *p, float8_e4= m3 f) { - unpack_raw64(p, &float8_e4m3_params, f); + *p =3D unpack_raw64(&float8_e4m3_params, f); } =20 static void QEMU_FLATTEN float8_e5m2_unpack_raw(FloatParts64 *p, float8_e5= m2 f) { - unpack_raw64(p, &float8_e5m2_params, f); + *p =3D unpack_raw64(&float8_e5m2_params, f); } =20 static void QEMU_FLATTEN float16_unpack_raw(FloatParts64 *p, float16 f) { - unpack_raw64(p, &float16_params, f); + *p =3D unpack_raw64(&float16_params, f); } =20 static void QEMU_FLATTEN bfloat16_unpack_raw(FloatParts64 *p, bfloat16 f) { - unpack_raw64(p, &bfloat16_params, f); + *p =3D unpack_raw64(&bfloat16_params, f); } =20 static void QEMU_FLATTEN float32_unpack_raw(FloatParts64 *p, float32 f) { - unpack_raw64(p, &float32_params, f); + *p =3D unpack_raw64(&float32_params, f); } =20 static void QEMU_FLATTEN float64_unpack_raw(FloatParts64 *p, float64 f) { - unpack_raw64(p, &float64_params, f); + *p =3D unpack_raw64(&float64_params, f); } =20 static void QEMU_FLATTEN floatx80_unpack_raw(FloatParts128 *p, floatx80 f) --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777210992; cv=none; d=zohomail.com; s=zohoarc; b=Jv01AHlceTNNdv31YvtKpmoj6HMaPyM5i1WGhkz4YrrcJwVKAX/zK5WeP5THfO7qD64mKGeKG+d+Z2awFlesnQtU/GMII6/luPGBtoLndn9Gl5rmRC3Xrz9nU8SAFrQDK81LQWf4+SQ61KvzVqTAcm7s/dBz3bLc5T4MGUXO2D4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777210992; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=k2ikRVouriB7GIa9TEl517IjfNmkcqYdyy4JW83l2dw=; b=HDS6ReO94FrRKOW9ii7H9+9Q4uuYlCguxsUkAiJ1zkuYvPhblCxFDwtGtFtVCL1dHSpPYPeQPI9msyC87OCM/YkYYpQUb/u1LHVl6KCJ/RYGKlfoNEWCq09Oa2dXtLrK129gRXud7c9S6bQIimKTNVGYZxd49xyvogiHqjyiM2E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17772109922461.416758141326909; Sun, 26 Apr 2026 06:43:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzkI-0000SP-V2; Sun, 26 Apr 2026 09:42:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjt-0008QF-NW for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:38 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjs-0000JQ-5v for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:37 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2ad21f437eeso60062755ad.0 for ; Sun, 26 Apr 2026 06:41:35 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210895; x=1777815695; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=k2ikRVouriB7GIa9TEl517IjfNmkcqYdyy4JW83l2dw=; b=mbSuGjoGuEKmc1aUkvJegaPXCKAzAUGXu7pTJWJMR0Wf+dmD/dS+4axmgBP1Kb+rTF pVotZ1Nh4paI9OAsoSjKTK0XVsa8O9TWgv5NajAwtjJIpLpb1JKOGU5v9sB9ZEXclcXs Q3k+WtMe8dngeGyEHlr+FB6dHvyXoqqD77XmBpVEcV6ica1abWSYqA30/sWrf78uUbrp NzspjNVqee2arEblY2rypvc5DE3trd2v8stbabPRXpkRUQfo1So4PcGsicUaCO3r+f9C oMD2r/jkziigVYYxJKhnnQ+KxN5ITJZ0T0QJCVZRhvixZ+DsLLXynwrexrX56kNvZsls n0Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210895; x=1777815695; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=k2ikRVouriB7GIa9TEl517IjfNmkcqYdyy4JW83l2dw=; b=OWBr7+cv0BAMwXLgRcPpXq+GL/BOh/ysPbaJGq7uiA1jjMd0ih/MSywPgWQSBmmDVP sVKoqOPTsnLFhhFkMpJrwEX/I24keLwTZETw8s/p31Hnh20SI9la7MiiGivX0f41jur7 ViBDvlUSmqNdeAuo7GUcMSWnHHZ0+5mDA7g4rEVW9lz27O6Qv7u9OcZZrKzYN3LVmEGm rXM43x3AitGjW9rC0qVTi3x2TmEVWuEWpdLKhHrSnTuHtJu73wKZw6LdTVGx1ZKFYSeq FbnHiBiuYvUEiGLhZsUG3W3nzmkxDjrOB8c1R66ot7CgOwNYDaM9Rbog7jfkb1Bcch2u Ns/g== X-Gm-Message-State: AOJu0YxMXF7UgQyeqtNcF+uGV9nGUOihJ6B690NtriN0+gX5TOnP0EiX 0lkDOkCCDu8hFYl2vYR8bxC8lVD17PBCXlhv7sBhyy+haNUMjd72lsx21QhkxaWM6zvddlQp99e nTRltYVk= X-Gm-Gg: AeBDievqv1WJkEsn8J/3AbxB5o1y5QAQliupB30BN5wn67QPyPt7eMf4mjzQpK1AHlf irQO1xTv+5qU+iw48KxMiCFpxUFLh2NOQj13jjnY0VeL5JJpRWvRKteJmVciHsuY+2fqK2HW/Wm pn6LM7s3QSeVvep9iTCIKXVIkeEL/KhqlQuKLaY1uQCYoNvirvDfoSc3/XQIW96SWy12fsdWM5Z WGRMF5zTbPqhA/3pEjBDlKlOP3Qq4oYg7I7IqpUdGhG1CJMMq8MOQhRc8WaTeoXk3w4jlwdnbCA pS/Nmn6XdNskGk8/+quu3qZWGjwR0LAYcybbF52Dp+Oh+WHW08OL+ugwWpdhdKkm98B9ZMUP1Kk kWaFY7+9kY351VuA9YT9qycsjSqDEMfKgHTtcnGD4E1qIYelNehrHI8Yz/TIUTq6ubBO4SK1gdf hX9DMfptD+FiF1FKrCORr4LkGEj6aYnF51cciYCguo X-Received: by 2002:a17:902:7612:b0:2b0:5450:a910 with SMTP id d9443c01a7336-2b5f9e95060mr243977355ad.17.1777210894750; Sun, 26 Apr 2026 06:41:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 33/84] fpu: Return struct from float4_e2m1_unpack_canonical Date: Sun, 26 Apr 2026 23:39:10 +1000 Message-ID: <20260426134002.865628-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777210994425154100 Content-Type: text/plain; charset="utf-8" Inline float4_e2m1_unpack_raw at the same time. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 99b1cce894..c1d0140484 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -646,11 +646,6 @@ static FloatParts64 unpack_raw64(const FloatFmt *fmt, = uint64_t raw) }; } =20 -static void QEMU_FLATTEN float4_e2m1_unpack_raw(FloatParts64 *p, float4_e2= m1 f) -{ - *p =3D unpack_raw64(&float4_e2m1_params, f); -} - static void QEMU_FLATTEN float8_e4m3_unpack_raw(FloatParts64 *p, float8_e4= m3 f) { *p =3D unpack_raw64(&float8_e4m3_params, f); @@ -1473,11 +1468,11 @@ static const uint16_t rsqrt_tab[128] =3D { * Pack/unpack routines with a specific FloatFmt. */ =20 -static void float4_e2m1_unpack_canonical(FloatParts64 *p, float4_e2m1 f, - float_status *s) +static FloatParts64 float4_e2m1_unpack_canonical(float4_e2m1 f, float_stat= us *s) { - float4_e2m1_unpack_raw(p, f); - parts64_canonicalize(p, s, &float4_e2m1_params); + FloatParts64 p =3D unpack_raw64(&float4_e2m1_params, f); + parts64_canonicalize(&p, s, &float4_e2m1_params); + return p; } =20 static void float8_e4m3_unpack_canonical(FloatParts64 *p, float8_e4m3 f, @@ -2699,9 +2694,7 @@ static void parts_float_to_float_widen(FloatParts128 = *a, FloatParts64 *b, =20 float8_e4m3 float4_e2m1_to_float8_e4m3(float4_e2m1 a, float_status *s) { - FloatParts64 p; - - float4_e2m1_unpack_canonical(&p, a, s); + FloatParts64 p =3D float4_e2m1_unpack_canonical(a, s); parts64_float_to_float(&p, s); return float8_e4m3_round_pack_canonical(&p, s, false); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211329; cv=none; d=zohomail.com; s=zohoarc; b=VWp/b1FPvloQYavMVGTioMIGVZvnoDCODp9oxwMk5Ss08/M5HDr5Dr5gZs0Ee7LyPxdIca1OB1jvaDGA9qnI8KMxPXwSc8TV4ezxXQcrn18eRUizi+XLUZcXxHlemoiBJziybG6eu0TYc+TOniylTlKQDViNpaEONpnhBNXFmlM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211329; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PMksPAG3r8+VLSRLaiSYmqjI0xhM/jgzuN3RWr1+Zpg=; b=PvVG8TZjPVI4Y0UvORcGBE2zZ2gVxc4e6Gp92BAgw2+JGCxFxciYrWL2a1Yan4Svl6QNblutCsdF8HD+wdYDVJKl6W2v3Vqjsw0boQNmU3jNzwQuCZ2wwwguPt5JKjaNt1V9HM9kfRrqS9JCkMlZlWZ8UJv47sbG72gA1b1dYr8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211329226595.9894819277997; Sun, 26 Apr 2026 06:48:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzkR-0000cm-0Q; Sun, 26 Apr 2026 09:42:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzjw-000073-N1 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:41 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjv-0000KD-1j for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:40 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b45cb89f7eso58476825ad.0 for ; Sun, 26 Apr 2026 06:41:38 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210898; x=1777815698; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PMksPAG3r8+VLSRLaiSYmqjI0xhM/jgzuN3RWr1+Zpg=; b=mL6Lp/FXRdIbe6Dp7R/cL99R40N40c2qphu/LUMvmMq/aMnc5KgDntplGteauGDQVl f4x+Iw2eeDvo3F8DQgR5g8AN8gD5WaY2mbTCoJzmGxXiYr9qw2BDWu3moVDNBXyI0sAZ ymaMmDvtZJAqSDo2Kc16JEizUMUNUdUQTReTVj3tvflAhWz3moL9s0muqVLxp+EbgWZW Twzl9OuMZNEbWppUmmsg0fskzYJdt8/t6B+REVA5/EkP/1hqEoeLfB3iIOqSnXejj03I XHvliUasX0MUTVWSv0MUd4CU63AqAYnXgUfYIciIiaYHdXXOz3/qwz3N68r/94zXcVz9 hnaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210898; x=1777815698; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=PMksPAG3r8+VLSRLaiSYmqjI0xhM/jgzuN3RWr1+Zpg=; b=PLSl60WbY8/8CWYvcsfNVf6GnYDTWFVlnHee1gSoKsXTfLy7gbq3mCClvfN0r7hlYe vuxfl6ZpMPsvbL863M+TLGNHkL+hLRT1t4odV2lkKmX7BAdYXbPPFNqjEw5/tL+Xvarw yK12fPNSS120NW60nyl+DUPdAxP3QLxAwj7VRyKLADL2kGzkvx8IlaZHi4Od/ujph3gM mgsH+UeW0fJ4dXMgD/hbIQBCXTeU83ydCiwEBQjD7jk8O8VR36wzjKKbRMoYWziCoYvD 0LYi9Bh8u7VsNp5y12huSdlFm5lKk0Ox+OJLrsI4knwQiJ7sbvp3hu9cEC2+h04fQvHn 5Hwg== X-Gm-Message-State: AOJu0Yy5az5bn09y4C9N5mghTD/8Tlsap0FOItTA1t97fDaWYhnEZ703 aaIv7UZ3g0kmNHvbJdFpy8SUDYRY+coViNi8lkSrpz7zKh26fXYlLOuzG0liAn1E1BL9njgso8Q NVp9VmXk= X-Gm-Gg: AeBDieu0uCepuRD1MrJbWRYlo3/bQQvKfHPWLWkE+BwvLHtXUD2rUzqs3hPuMBat3Xg m0d89eP3oEICurVlL6FLZv3pXjBB9ggCt/GoCYImSyRYOQ0gQXrqK4hZJCKtelBVqPeIQ8T0UV5 XE+tMLmBCYU4S67ppotrqmdFR4KZEsioST1vQzINXszGzFtK0E5hO//71JYAqdOOdrVRemZvEbb s+0bi26Oj0h0kG0Rawh90CBfxhmBqIR3Llzgu2mr0t4kT2YNg1C6T9Z9cHNXGUWxjJIjNVqF4vq h+gu8MPQ3ymtraiqJsdmEX776qMeWind2I1vgxCvQy7ThSrdhLQG/4X/jQ0/GAuuR9Sm8NpRDcY +pPguavsNJuTJYPsuFBYbububhbVgDD19mgY8HqTIhIL6+7Ll6GhSiqNVtGJUEfeCmV73oWjArr lso1xAM3EdE34n3e9tUBaKyCxn3UFgVSOL9ktnQirO X-Received: by 2002:a17:902:bcc8:b0:2b7:af0e:5942 with SMTP id d9443c01a7336-2b7af0e8224mr102957755ad.26.1777210897505; Sun, 26 Apr 2026 06:41:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 34/84] fpu: Return struct from float8_e4m3_unpack_canonical Date: Sun, 26 Apr 2026 23:39:11 +1000 Message-ID: <20260426134002.865628-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211331236154100 Content-Type: text/plain; charset="utf-8" Inline float8_e4m3_unpack_raw at the same time. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index c1d0140484..c1b03f30ab 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -646,11 +646,6 @@ static FloatParts64 unpack_raw64(const FloatFmt *fmt, = uint64_t raw) }; } =20 -static void QEMU_FLATTEN float8_e4m3_unpack_raw(FloatParts64 *p, float8_e4= m3 f) -{ - *p =3D unpack_raw64(&float8_e4m3_params, f); -} - static void QEMU_FLATTEN float8_e5m2_unpack_raw(FloatParts64 *p, float8_e5= m2 f) { *p =3D unpack_raw64(&float8_e5m2_params, f); @@ -1475,11 +1470,11 @@ static FloatParts64 float4_e2m1_unpack_canonical(fl= oat4_e2m1 f, float_status *s) return p; } =20 -static void float8_e4m3_unpack_canonical(FloatParts64 *p, float8_e4m3 f, - float_status *s) +static FloatParts64 float8_e4m3_unpack_canonical(float8_e4m3 f, float_stat= us *s) { - float8_e4m3_unpack_raw(p, f); - parts64_canonicalize(p, s, &float8_e4m3_params); + FloatParts64 p =3D unpack_raw64(&float8_e4m3_params, f); + parts64_canonicalize(&p, s, &float8_e4m3_params); + return p; } =20 static void float8_e5m2_unpack_canonical(FloatParts64 *p, float8_e5m2 f, @@ -2701,9 +2696,7 @@ float8_e4m3 float4_e2m1_to_float8_e4m3(float4_e2m1 a,= float_status *s) =20 bfloat16 float8_e4m3_to_bfloat16(float8_e4m3 a, float_status *s) { - FloatParts64 p; - - float8_e4m3_unpack_canonical(&p, a, s); + FloatParts64 p =3D float8_e4m3_unpack_canonical(a, s); parts64_float_to_float(&p, s); return bfloat16_round_pack_canonical(&p, s); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211446; cv=none; d=zohomail.com; s=zohoarc; b=VriCyOOXMQwsfZlH9xA+4pFpPjt64IfALLVQOK57a5SlS0t7LiVnKaIU+icNzFcO7wEc5dv0roOos8hSdc16rIcYADRFhpj5lIBXnAWqUsKgOfunv0nYXjkP0o5QTBkaM85KYHC9oxC/+KiOvs2GZ0PL8TfAAt4M7AMxsnr56YE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211446; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6upzFsCqjF1qCcR6K3CQOkyVSNbVZef2UmzHbmwztpk=; b=QrjOaHZiWjY6poT7VV/cGjAT4+MtlaEk4SjL8ajxchwz7VF6FkNB3IJqrxiwjg+ab3Z2O6rN0VzCJa+PEmy71022l9Jm8F4iHOu8AWWCxe3ik2ZMU4I99pfF2zmKSgPmpGFd57+8/QBpLMoeBAZFolJL3EJ4EELbZEKGTaQXaKQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211446045146.28461648724283; Sun, 26 Apr 2026 06:50:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzkU-0000dW-Vt; Sun, 26 Apr 2026 09:42:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzk0-0000CH-6O for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:45 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzjx-0000Kf-Mk for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:43 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-35da9692ec3so8015498a91.1 for ; Sun, 26 Apr 2026 06:41:41 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210900; x=1777815700; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6upzFsCqjF1qCcR6K3CQOkyVSNbVZef2UmzHbmwztpk=; b=yFvNlSPYNiCf7l8SrZeyukOpl1sjMZxKpvawbR7KzVD6AlVMGDuqU+1OGC5OHmxBAS sz7tAlCDY3b7E9k6o5rzraZcPpDNnBcsQM+fccvRUlvh8YDlBHMJYpAFYBmn/icpL+RZ ub/dMyD1J1D45W9jYNlbp3AyB2tMzTcq1rCFBtCkreoXWCuWV0Ma4oJRODgYV/Fzsgok B3+CJ8ascEoiJuagDxGSN3ZWRgc1elkR9VEVE5G7Ko21JUFSwdwdmLi2RF1kyc4H+kWm Rq0p2vf3EOLaxwt5m5wfCfVaUiGojBoYDN6wjV2GMpw6nrip6mw9G5vqKpikI6TpEKqS K6zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210900; x=1777815700; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6upzFsCqjF1qCcR6K3CQOkyVSNbVZef2UmzHbmwztpk=; b=O3vJ21RiwGVjch2/M1ypZtfmrR+RHg2GuoctN+lWkKvKhrfNwxcBQ3POMVyLo3sxi4 SXFAY57ml3ZOKe8CCwhXwKWvDN91gfRSmQkfG0xy5Khew0SRUT6ihIPbjj8OXGYXJBYw ougm3jFVzZZmGA6F3mn99fJrRfP3XRINoqPirof8spdZ+cfvvFUdXDZJWbZdig4WF9/C GHq87z6kGKJ9MWedsNFOLY7Wkk9IAiWARfD1hhefIGB429pfh9EDSv5XCdEHXI25X9Q/ xaFj8k2O9uHEU9R+etYSiLIe0cW+Hf9460z//pClOdS0qjqgpsz8hcEuqksvmzJTVS86 kUSg== X-Gm-Message-State: AOJu0YyiqRX/j5VshqN2hlafGudEZ7IxXuqvEE1Z5r+AnofWPWDGaO1f KucrsAJHBUQccgxfBqYxrOrDu+QHz+iiqvhqTfmCirukLjN5rz5n5KVkMRcX8eXi9ui9Y6o5J59 cRxPXTL8= X-Gm-Gg: AeBDies94/Pl+/CLoGiRJdh9NFM6AdQfksOAs+JNbLEazjRRX02gkmhWyDYwCN8OOis zvAw+Bqo6AJ25LqAZ51YbMFKP+SFgX5sszDJ09sADd6f/WPxRIpzeSqszLK4br/ixbOtV52fisU 6D+MNk+23m9RTCyWkAprMJr7MUs6ie17DBuCIUQD6WKDriQpKaBdIKmEslnEhMuyzwGFiI/djSZ WxPPd0h7gjQNmvnWLxrNNcdNbag4dygrEmdhnJxcMG+XYbCSBl3CiR5oR/Amoes1jS/RCzgw7Pz kkp/pPcvMjCftTgNH0BPsr94p18JkGlhTbn/mEgJdw0GphE6xVowo2Xzfxaall3YAN20ZaE2QRf o3qdN6utIbAipLgbmj17hubYFW1deOm0Rjdgff1/jepMQI56oooghp6efwBbFopJ02t3njxQcFQ +yPPRUqiGXeBUPGMJoQdHTc0ZJyFwWXjwVS/5bFH8fvBdhCIWyzvo= X-Received: by 2002:a17:903:328b:b0:2b2:4bf9:1766 with SMTP id d9443c01a7336-2b5f9fe5d26mr312513155ad.33.1777210900226; Sun, 26 Apr 2026 06:41:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 35/84] fpu: Return struct from float8_e5m2_unpack_canonical Date: Sun, 26 Apr 2026 23:39:12 +1000 Message-ID: <20260426134002.865628-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211447703158500 Content-Type: text/plain; charset="utf-8" Inline float8_e5m2_unpack_raw at the same time. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index c1b03f30ab..bc6450954e 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -646,11 +646,6 @@ static FloatParts64 unpack_raw64(const FloatFmt *fmt, = uint64_t raw) }; } =20 -static void QEMU_FLATTEN float8_e5m2_unpack_raw(FloatParts64 *p, float8_e5= m2 f) -{ - *p =3D unpack_raw64(&float8_e5m2_params, f); -} - static void QEMU_FLATTEN float16_unpack_raw(FloatParts64 *p, float16 f) { *p =3D unpack_raw64(&float16_params, f); @@ -1477,11 +1472,11 @@ static FloatParts64 float8_e4m3_unpack_canonical(fl= oat8_e4m3 f, float_status *s) return p; } =20 -static void float8_e5m2_unpack_canonical(FloatParts64 *p, float8_e5m2 f, - float_status *s) +static FloatParts64 float8_e5m2_unpack_canonical(float8_e5m2 f, float_stat= us *s) { - float8_e5m2_unpack_raw(p, f); - parts64_canonicalize(p, s, &float8_e5m2_params); + FloatParts64 p =3D unpack_raw64(&float8_e5m2_params, f); + parts64_canonicalize(&p, s, &float8_e5m2_params); + return p; } =20 static void float16a_unpack_canonical(FloatParts64 *p, float16 f, @@ -2703,9 +2698,7 @@ bfloat16 float8_e4m3_to_bfloat16(float8_e4m3 a, float= _status *s) =20 bfloat16 float8_e5m2_to_bfloat16(float8_e5m2 a, float_status *s) { - FloatParts64 p; - - float8_e5m2_unpack_canonical(&p, a, s); + FloatParts64 p =3D float8_e5m2_unpack_canonical(a, s); parts64_float_to_float(&p, s); return bfloat16_round_pack_canonical(&p, s); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211515; cv=none; d=zohomail.com; s=zohoarc; b=dHF5XtC0j6iGVz+KqvZBKOJWHauNku80kEW8rvGnLAzq+TLrl5+ZeSJyFGa/u3lXQOlUxfbEc7sMFT8q+GKd0SQEadOeLyg03Dq4FNe3W0kdCZ6HFJwEdYao/3cDYqXMD2+qVfWibQvQjgjbnPSHAU3AcapRKg/LlE9U+5HYhKc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211515; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XCLbppciWZ3KadA9Q4n94dtnAIRgxxa5V98lrrbPK64=; b=Z1kY7tLQVTiTCa9j+4NadbOQMW8RStP7q54wDCyd1eercF8MJkouLE6MyCqBOSXchKAUYYNsiPb6m7kjLWA8ipnOfOWpn9cgT4cW1FKedOM/nYm6OAYYEV18Ii03nv9GPFUwyIoTdTlj95KfeZ5C5ugBCSICBjtgILiiEYCH1Ds= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721151578152.95216684855234; Sun, 26 Apr 2026 06:51:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzkd-00010C-Rg; Sun, 26 Apr 2026 09:42:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzk3-0000Fi-IM for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:48 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzk0-0000LO-4Q for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:45 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2b0afa0210bso42649925ad.2 for ; Sun, 26 Apr 2026 06:41:43 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210903; x=1777815703; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XCLbppciWZ3KadA9Q4n94dtnAIRgxxa5V98lrrbPK64=; b=Vq+ExdUmaI4hVE7O42OwVRJQcqs44pc95PGlC/kC4c5aXOt2htO0UjZK+BW6jW6QJ6 zpHy+5JDMEuRuOesORg5g+/vfzUF7UTBCdX0V2pJp3zDtXMSelbNAGBCqHXv9TMHAtSp 6KoGM2gd41zAsPgjNrFCVRK8/sgCrsdpvDaQqxlo6cJZD5HDg96lTsfIs1atec/4NuUM tUrPU6UiFoHeZa/a76pz7ygIbBMtI+7oAi3ze/nDuE5Fr31f0jJ8tDSojVLJC1Js6t5k ncz+/MhUt6U/OCSbTDH5VI/4pxeNRkD8S5wn3iP7+KjDFTl4F6TG4eyZ2vflMhsyFSjz UUIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210903; x=1777815703; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XCLbppciWZ3KadA9Q4n94dtnAIRgxxa5V98lrrbPK64=; b=QNxjVC6zo7fkFF/z9+q4CkbmuWbJekjAGHaCUauJWOmSvmmvn/V2xvhrjE0nfYvGl8 rMc40uRxUvzfG8X6UoEIsZj2wfIfllkyhCz308YKT0MVuI+aFik57+5rrxuaDsnbjqry FJy9Y7XXSdtzEd+klQueJ/kL33iGpVbT0KXWWeTmCtIghtCRioBBSlM0vNRTaa1yyMqk 9vdnZcDzEXEspVWJ71srdTQszIvIZr+o7mmWJcEul4Yz9432iZ6xJ1vmN5jIq/5j7Mfi 7haUn4/Ijc5mEHqg+i6gOnml0NX8yyhSBLcRP6alAw/4SKsa27/eIRxjijTFur/yZ8D+ MiFg== X-Gm-Message-State: AOJu0YyOWckOOwVysRws7kGr90Do88/1QrFUQqVOBGxPQ0GGlHatMh7V ZNRdwq48ShOhvX0xnosSe0sao13pqVbgfngCcKBrPFXUsurO6D3eFp3KyIFtjAZ8I26Z/b/60Zy hTMopjN4= X-Gm-Gg: AeBDievBrLrlqVLPSy3f7YHsWI1ZBuPLs4BY8/19rXEI9zygdx6EHcGP0dR5tLdG+KJ TC0YY0HstKWqFERy5CNZmyCj15jaf7mUKoY/NFPHIFTMi5LRNunBUHcLfh13Y9h/bGYt4So+FYP /cxPdOQITB/TSejFZTxUUJAYPTTWa+x5O/NkS8hBnys4BNhk0gbHihKfKO9juikRbIBiGfB+HrF BIg7x92G0s2GtYc+Y//VrF26USKtUeUMKXd/lHb3oS7RHEgdA9M358G+TtJuAFyPj9mJKHp4z7K WJj+n8tQ5zDtqBEq9jsfwSpornkV3q6IKNe9OAM3e2LJkwXdWDwTjtIcdPSG4Bc+LdAsCgiC/aJ TKR/Oxs7AkW1Ai+ChYTfgbKMYHnb0RMN+QWIiXW1xswCmfgGtTZlAG9P5VT0u8d9V1b3YHace36 7FtacHLNmO4+QHFJR+vQD+awheGRx+x9Z7yngEgDEo X-Received: by 2002:a17:902:d706:b0:2b0:b016:773f with SMTP id d9443c01a7336-2b5f9eb2233mr281413615ad.11.1777210902738; Sun, 26 Apr 2026 06:41:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 36/84] fpu: Inline float16_unpack_raw into callers Date: Sun, 26 Apr 2026 23:39:13 +1000 Message-ID: <20260426134002.865628-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211518131154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index bc6450954e..cdf95a8517 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -646,11 +646,6 @@ static FloatParts64 unpack_raw64(const FloatFmt *fmt, = uint64_t raw) }; } =20 -static void QEMU_FLATTEN float16_unpack_raw(FloatParts64 *p, float16 f) -{ - *p =3D unpack_raw64(&float16_params, f); -} - static void QEMU_FLATTEN bfloat16_unpack_raw(FloatParts64 *p, bfloat16 f) { *p =3D unpack_raw64(&bfloat16_params, f); @@ -1482,7 +1477,7 @@ static FloatParts64 float8_e5m2_unpack_canonical(floa= t8_e5m2 f, float_status *s) static void float16a_unpack_canonical(FloatParts64 *p, float16 f, float_status *s, const FloatFmt *par= ams) { - float16_unpack_raw(p, f); + *p =3D unpack_raw64(&float16_params, f); parts64_canonicalize(p, s, params); } =20 @@ -4978,9 +4973,8 @@ bfloat16 bfloat16_default_nan(float_status *status) =20 float16 float16_silence_nan(float16 a, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D unpack_raw64(&float16_params, a); =20 - float16_unpack_raw(&p, a); p.frac <<=3D float16_params.frac_shift; parts64_silence_nan(&p, status); p.frac >>=3D float16_params.frac_shift; @@ -5049,9 +5043,8 @@ static bool parts_squash_denormal(FloatParts64 p, flo= at_status *status) float16 float16_squash_input_denormal(float16 a, float_status *status) { if (status->flush_inputs_to_zero) { - FloatParts64 p; + FloatParts64 p =3D unpack_raw64(&float16_params, a); =20 - float16_unpack_raw(&p, a); if (parts_squash_denormal(p, status)) { return float16_set_sign(float16_zero, p.sign); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211266; cv=none; d=zohomail.com; s=zohoarc; b=ghSpp0K1lP4BwhaLlZ/53NJD5343p4ZYQgmYWreR3MfEK6jWrNYTmfxec7CsWkqWp7NPNxsyz4+ATl5eRfQ2ELdUS0j6ojoYXyfrl+cDI1rWEqnNPZ4uhJzrbfjquZPldh9CKjXSB/CYiVy6M2M4SDbj30WpvmA5f16mQqB70Yg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211266; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=t2oP1AoPp9GVb73a8OxFUw9mtARZFRgHS2lzcILL9oU=; b=eySsPU2hCX/4tQIhQsMoFhwbH9a1ML4XNhOK6gCuU1o40ywGHL9Scf5qWgGJx09n88ArvwKK6XC9edbcED+Q5R7iIlwKGQfqfnXVDqCyWIh6bwOXFxNhfk2sr8ja8LGs/0pqQiiODD0vpPi8BGA86hlatGHODIYcyAMSAbr1HrA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211266479715.8110203566238; Sun, 26 Apr 2026 06:47:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzki-0001Vn-Bz; Sun, 26 Apr 2026 09:42:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzk7-0000Ir-Cd for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:52 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzk3-0000MW-BF for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:49 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2b461310af5so36489775ad.1 for ; Sun, 26 Apr 2026 06:41:46 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210905; x=1777815705; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=t2oP1AoPp9GVb73a8OxFUw9mtARZFRgHS2lzcILL9oU=; b=XYW+Xj+u/Yp2jS8KUoRexC8323XaO4zY3voJnf/O2bXkZfaYzctRww/c3vOqa9yymk ZFLIjmF0LXoL+VhLoqXP4lMAB0GUBwXFjFA15Oj+mKSD8XmBFRXWrd0Ntm6pQOYpDNWz Uy0jNaR+5jiUsy6Qe+c0IUlZk4sPCNhTmwNu5Z/INRSJmxQL7f83So89I2HCF1kWXoWK aG68VPxC37b7s43pbfE/2BueKMo/wME5ZYZ4yvQxS6gda0QApyYjT+KqIPyJ1PmVo5Mm 5VcmE4LaOXLSeEeP0Q0CoPyBTSjsddqAy/PcwicjuRirofDwT7BlMLt+4I92qPGKmv/3 hXcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210905; x=1777815705; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=t2oP1AoPp9GVb73a8OxFUw9mtARZFRgHS2lzcILL9oU=; b=darqGoJmSI/MoQ8zh1GnV6E7lS7ECkpVRzyFGfIgU+tZ7XXhR8NLnRHbaloBYG7OWG hNSqndy+iV1LlmgIx3tBiqa4akclfx+opLldYe5t2Rne29I0FIF6c3s/TPrDnfFqBASp TgcA5YoTlf+bxk/ks7FiYntG7F+SDlwZ/qly9feg2F6rSJ7e4dTUIb8SqcmAcN55Vgz9 VWJ9gAd8en3A9tgJKwoxgMpm5SSbtmHYRVoY0myn5RwNoKMR40bHmGUJFMP7llosmU6t pyO/gy9c11PphpMD/Vci9OJMh6ZiJhRgIIbk8aG7LolQomTQEzKbhErGg1sHBhmckiWE bI0A== X-Gm-Message-State: AOJu0YyO+PjwGFeBABi/nUfh9Zl+gEtn3jKdFVMqv6990Puw+4IFPeXi bol0O5JBkGKSM50l4Qja9yVB0AUpOxcYOHqhcaD76i3q6Q2LD5h0uyAMVl9VxYFou50ZrF9tdIH TFGRxK7s= X-Gm-Gg: AeBDiesHQ0iS7CupokpEl/xFzoq3dVMR+RXFS6bA6vHL44eQswxxdKuSnaRFyNRl+fj yZKU8kt3MnKTuf3uvuXXLoPlclYffkMjHY1NylCwhruFtt4KAIU0iKsUtsuz9qAk1NT6kMbOkso h9YBgi0+/Qk9F2OZQh+MTXQ6pvWCiUnjsqKOf7gq4RH+ZUwSVwOUYn8fRCiLm99vqjBQCatIuNw dHcTnRvLMuAy8OrqTpF4q1p7ITZaX9hqMp7mSraCZNP3eVwkozqichjild701xfJxGdqDg8OPef CpWEGSwzRlD0WYBnzXR1VWXMhQJo1rHdyD1fU27+n7mU2ZdkGEzjgHZKxTn0OJJVEihoRp/FZ8z qBOqAqqB4QsNlDPU1MCKpAq2qr0kc4W1E8Lxro5Ze+RwsuJRvRAHa7uCeKHh+VN+UtSOBU7PubC ZlhNpNryetrux7I4nUGEPR3fO3VAi4rjk0TjqqyNqtKjYI4n3r718= X-Received: by 2002:a17:903:1ae7:b0:2b4:5e85:efc with SMTP id d9443c01a7336-2b5f9ea55b6mr335417835ad.18.1777210905330; Sun, 26 Apr 2026 06:41:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 37/84] fpu: Return struct from float16a_unpack_canonical Date: Sun, 26 Apr 2026 23:39:14 +1000 Message-ID: <20260426134002.865628-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211268362154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index cdf95a8517..dee5dcd0d2 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1474,17 +1474,18 @@ static FloatParts64 float8_e5m2_unpack_canonical(fl= oat8_e5m2 f, float_status *s) return p; } =20 -static void float16a_unpack_canonical(FloatParts64 *p, float16 f, - float_status *s, const FloatFmt *par= ams) +static FloatParts64 float16a_unpack_canonical(float16 f, float_status *s, + const FloatFmt *params) { - *p =3D unpack_raw64(&float16_params, f); - parts64_canonicalize(p, s, params); + FloatParts64 p =3D unpack_raw64(&float16_params, f); + parts64_canonicalize(&p, s, params); + return p; } =20 static void float16_unpack_canonical(FloatParts64 *p, float16 f, float_status *s) { - float16a_unpack_canonical(p, f, s, &float16_params); + *p =3D float16a_unpack_canonical(f, s, &float16_params); } =20 static void bfloat16_unpack_canonical(FloatParts64 *p, bfloat16 f, @@ -2701,9 +2702,8 @@ bfloat16 float8_e5m2_to_bfloat16(float8_e5m2 a, float= _status *s) float32 float16_to_float32(float16 a, bool ieee, float_status *s) { const FloatFmt *fmt16 =3D ieee ? &float16_params : &float16_params_ahp; - FloatParts64 p; + FloatParts64 p =3D float16a_unpack_canonical(a, s, fmt16); =20 - float16a_unpack_canonical(&p, a, s, fmt16); parts64_float_to_float(&p, s); return float32_round_pack_canonical(&p, s); } @@ -2711,9 +2711,8 @@ float32 float16_to_float32(float16 a, bool ieee, floa= t_status *s) float64 float16_to_float64(float16 a, bool ieee, float_status *s) { const FloatFmt *fmt16 =3D ieee ? &float16_params : &float16_params_ahp; - FloatParts64 p; + FloatParts64 p =3D float16a_unpack_canonical(a, s, fmt16); =20 - float16a_unpack_canonical(&p, a, s, fmt16); parts64_float_to_float(&p, s); return float64_round_pack_canonical(&p, s); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211832; cv=none; d=zohomail.com; s=zohoarc; b=V1zBn4AXc4V4YSozg8yD2wctwryWZPXpuO9KZ2Z8xd6WI2phPIpmXwWa+p0KgZtpVvL50Bl51+au8QV5vc0AjL7uIHxhXUC6WTKwgnETtcBGVZ9aPQ48e7SwCDLrey9fYHc9A9MPN7fiaqTYjqFIE2P0FhRNM977/0vhNclcOJw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211832; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=aS1gs1RvelZlceNbvZcAlxYN3xyEvlj7p2J5cTIwkbw=; b=NM9MBZlKCLq0DuGKA+pRWMCx00F3qkrglcjnKHFJfst6I/ESdxrdn6RqkZa9sn41efhFQdRcEoZzMJIhG2GkfmrbBYULhOcSityYAVnM8gaissPptquFyQ75Uk+MbcJmp13GG0ch9HLWavw9GEjsKcdewhV5d3AjNYlY2002/DM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211832157435.98033338983817; Sun, 26 Apr 2026 06:57:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzkf-0001CW-8m; Sun, 26 Apr 2026 09:42:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzk9-0000Ku-2P for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:54 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzk5-0000Nk-CX for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:52 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2ab077e3f32so39831975ad.3 for ; Sun, 26 Apr 2026 06:41:48 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210908; x=1777815708; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aS1gs1RvelZlceNbvZcAlxYN3xyEvlj7p2J5cTIwkbw=; b=tgeS1dxk7z7N9j9HjL1KYoIIokjc0MK+P8MEotSU3ITeOq7GpVMZtVswJk+uq1B2c1 zqq6lJeTGGUxmjg371/JUC2QOIVNUgSX/48CQb4gahn7/dCaa+nAMaxY4Z7kNieRU3gN 2CxCq2wpL1ldES3g79OCRkMpzKefEh2cqqrlsnuh4vGWQyuQMUXy88u0cdY2IU2VSJP5 AnLSM0d7YkJTz/HZiFEgcrtR0P12J4WmHBYEDRTqhi1hMVYGHYC1i6lD3Hc6+LNeqvG4 TzAGomMC2bpWIJGHKPj46O5yamChTRt/0uPplji69JYz96y3jdBipmsyqXbJEaytnaxe JF7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210908; x=1777815708; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=aS1gs1RvelZlceNbvZcAlxYN3xyEvlj7p2J5cTIwkbw=; b=gl8BUBdZJ9ve415OENt1fFySuknA/Diule1f1jAA/biPYGBc9w9nGYLErDch7epyVd EaKZouNuJoWD86IbKOqmAgOpN1G4QVSkYMhRxLEGQviBcKTtSHRabrCmgkWgq3OFgRGH wSU+Ku1X1qCJSZrAVgKNxrsDUCwOG6FsNaVUzfz58XQGJWcPPJwL8yrs+214VoBdtHUb H1SgpSnFXUBWfeWABGeUJh0R4b38O4ECNszXayAKXTp7ffZVEl1TtH1hXtMWNI58M302 1TjTTqlh/ZZ+c3Sx7tZ5K+ffg5RWLuXvliVRk1O9gNKRGR3KeDXJA6uGTk6F+zxCW3P2 V/5w== X-Gm-Message-State: AOJu0Yw/csjUIlj3CZAqLf94nZK/UvRKPt3h0w7ast5p5XnfdAsbOm9u 4fM+YsXIH+mr3g9o9wtB6NqusQlufEzyU7cji1ISRQ5BjE/zjJ1+FtibLnbZvIfHXk6aQh/wVIM lbHxzHjI= X-Gm-Gg: AeBDiesNR+QrdH/PQO2ThAyr1MdFXDaWnzGjXFezW780VkCNr1xXL0dlYMBCv5kPU5c YzShfw9ob8Lw1pNamaUgtpX1sBsO9nosW1YUBTPkwwizlg66Rd8I8qP9X4luUAOyGOf/m+nUXBz M61EtHU1Ct5/joj5BKyhxzvwtViZpEy6vb0bZcqbn2Ers8q5Es8wsZYPMrbwiLWcChHQVUm7kxB wP+4oLUIMBy83Yv9QXFe/CAvXS9GtubAbCLS4h1qX8JwSGhzcXhOhNFdKX3/hygaW0MfVPeYks+ He1To+jIOzqLOQNYfSPe2+gzdsgqjrK1gHFrD1Rfky0Ms5FeAgLR1nTui/VDbOt7xkrdJ53ZXJT P9V9Xo4qMySPx7eRzDyWcWHiE7zoXGW/L/IcOUZR8dhCEyVB95OSWRuqRN6TAaVElMwE3RIrVqH w0jMTkN1r+sPqK0ZJbvNGXBARlbI3+J/cWEk99YX4d X-Received: by 2002:a17:903:384c:b0:2b0:7e4d:f390 with SMTP id d9443c01a7336-2b5f9fb1b9cmr382189115ad.41.1777210907946; Sun, 26 Apr 2026 06:41:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 38/84] fpu: Return struct from float16_unpack_canonical Date: Sun, 26 Apr 2026 23:39:15 +1000 Message-ID: <20260426134002.865628-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211834436154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 94 +++++++++++++++++-------------------------------- 1 file changed, 32 insertions(+), 62 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index dee5dcd0d2..3612d2fceb 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1482,10 +1482,9 @@ static FloatParts64 float16a_unpack_canonical(float1= 6 f, float_status *s, return p; } =20 -static void float16_unpack_canonical(FloatParts64 *p, float16 f, - float_status *s) +static FloatParts64 float16_unpack_canonical(float16 f, float_status *s) { - *p =3D float16a_unpack_canonical(f, s, &float16_params); + return float16a_unpack_canonical(f, s, &float16_params); } =20 static void bfloat16_unpack_canonical(FloatParts64 *p, bfloat16 f, @@ -1718,11 +1717,9 @@ static floatx80 floatx80_round_pack_canonical(FloatP= arts128 *p, static float16 QEMU_FLATTEN float16_addsub(float16 a, float16 b, float_status *status, bool subtract) { - FloatParts64 pa, pb, *pr; - - float16_unpack_canonical(&pa, a, status); - float16_unpack_canonical(&pb, b, status); - pr =3D parts64_addsub(&pa, &pb, status, subtract); + FloatParts64 pa =3D float16_unpack_canonical(a, status); + FloatParts64 pb =3D float16_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 return float16_round_pack_canonical(pr, status); } @@ -1952,11 +1949,9 @@ floatx80 floatx80_sub(floatx80 a, floatx80 b, float_= status *status) =20 float16 QEMU_FLATTEN float16_mul(float16 a, float16 b, float_status *statu= s) { - FloatParts64 pa, pb, *pr; - - float16_unpack_canonical(&pa, a, status); - float16_unpack_canonical(&pb, b, status); - pr =3D parts64_mul(&pa, &pb, status); + FloatParts64 pa =3D float16_unpack_canonical(a, status); + FloatParts64 pb =3D float16_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_mul(&pa, &pb, status); =20 return float16_round_pack_canonical(pr, status); } @@ -2066,12 +2061,11 @@ float16 QEMU_FLATTEN float16_muladd_scalbn(float16 a, float16 b, float16 c, int scale, int flags, float_status *status) { - FloatParts64 pa, pb, pc, *pr; - - float16_unpack_canonical(&pa, a, status); - float16_unpack_canonical(&pb, b, status); - float16_unpack_canonical(&pc, c, status); - pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); + FloatParts64 pa =3D float16_unpack_canonical(a, status); + FloatParts64 pb =3D float16_unpack_canonical(b, status); + FloatParts64 pc =3D float16_unpack_canonical(c, status); + FloatParts64 *pr =3D + parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &float16_params, false); @@ -2326,11 +2320,9 @@ float128 QEMU_FLATTEN float128_muladd(float128 a, fl= oat128 b, float128 c, =20 float16 float16_div(float16 a, float16 b, float_status *status) { - FloatParts64 pa, pb, *pr; - - float16_unpack_canonical(&pa, a, status); - float16_unpack_canonical(&pb, b, status); - pr =3D parts64_div(&pa, &pb, status); + FloatParts64 pa =3D float16_unpack_canonical(a, status); + FloatParts64 pb =3D float16_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_div(&pa, &pb, status); =20 return float16_round_pack_canonical(pr, status); } @@ -2969,9 +2961,8 @@ floatx80 float128_to_floatx80(float128 a, float_statu= s *s) =20 float16 float16_round_to_int(float16 a, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D float16_unpack_canonical(a, s); =20 - float16_unpack_canonical(&p, a, s); parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &float16_params= ); return float16_round_pack_canonical(&p, s); } @@ -3032,36 +3023,28 @@ floatx80 floatx80_round_to_int(floatx80 a, float_st= atus *status) int8_t float16_to_int8_scalbn(float16 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - float16_unpack_canonical(&p, a, s); + FloatParts64 p =3D float16_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT8_MIN, INT8_MAX, s); } =20 int16_t float16_to_int16_scalbn(float16 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - float16_unpack_canonical(&p, a, s); + FloatParts64 p =3D float16_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s= ); } =20 int32_t float16_to_int32_scalbn(float16 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - float16_unpack_canonical(&p, a, s); + FloatParts64 p =3D float16_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s= ); } =20 int64_t float16_to_int64_scalbn(float16 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - float16_unpack_canonical(&p, a, s); + FloatParts64 p =3D float16_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s= ); } =20 @@ -3530,36 +3513,28 @@ int64_t float64_to_int64_modulo(float64 a, FloatRou= ndMode rmode, uint8_t float16_to_uint8_scalbn(float16 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - float16_unpack_canonical(&p, a, s); + FloatParts64 p =3D float16_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT8_MAX, s); } =20 uint16_t float16_to_uint16_scalbn(float16 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - float16_unpack_canonical(&p, a, s); + FloatParts64 p =3D float16_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT16_MAX, s); } =20 uint32_t float16_to_uint32_scalbn(float16 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - float16_unpack_canonical(&p, a, s); + FloatParts64 p =3D float16_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT32_MAX, s); } =20 uint64_t float16_to_uint64_scalbn(float16 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - float16_unpack_canonical(&p, a, s); + FloatParts64 p =3D float16_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT64_MAX, s); } =20 @@ -4316,11 +4291,9 @@ float128 uint128_to_float128(Int128 a, float_status = *status) =20 static float16 float16_minmax(float16 a, float16 b, float_status *s, int f= lags) { - FloatParts64 pa, pb, *pr; - - float16_unpack_canonical(&pa, a, s); - float16_unpack_canonical(&pb, b, s); - pr =3D parts64_minmax(&pa, &pb, s, flags); + FloatParts64 pa =3D float16_unpack_canonical(a, s); + FloatParts64 pb =3D float16_unpack_canonical(b, s); + FloatParts64 *pr =3D parts64_minmax(&pa, &pb, s, flags); =20 return float16_round_pack_canonical(pr, s); } @@ -4401,10 +4374,9 @@ MINMAX_2(float128) static FloatRelation QEMU_FLATTEN float16_do_compare(float16 a, float16 b, float_status *s, bool is_quiet) { - FloatParts64 pa, pb; + FloatParts64 pa =3D float16_unpack_canonical(a, s); + FloatParts64 pb =3D float16_unpack_canonical(b, s); =20 - float16_unpack_canonical(&pa, a, s); - float16_unpack_canonical(&pb, b, s); return parts64_compare(&pa, &pb, s, is_quiet); } =20 @@ -4594,9 +4566,8 @@ FloatRelation floatx80_compare_quiet(floatx80 a, floa= tx80 b, float_status *s) =20 float16 float16_scalbn(float16 a, int n, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D float16_unpack_canonical(a, status); =20 - float16_unpack_canonical(&p, a, status); parts64_scalbn(&p, n, status); return float16_round_pack_canonical(&p, status); } @@ -4654,9 +4625,8 @@ floatx80 floatx80_scalbn(floatx80 a, int n, float_sta= tus *status) =20 float16 QEMU_FLATTEN float16_sqrt(float16 a, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D float16_unpack_canonical(a, status); =20 - float16_unpack_canonical(&p, a, status); parts64_sqrt(&p, status, &float16_params); return float16_round_pack_canonical(&p, status); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211465; cv=none; d=zohomail.com; s=zohoarc; b=FF+AZV74pO8wE0dEawGpmXM49V7xppZVb8eqNRJg0Gi+4zGx9g0ewyeLesecgO6Eh/0Y9a0KAT35zDgkWI5ONdWET88VP5GTK2Uj9NWWtRGK0xpngnb1bk4CGJBqa1roF11Ez1X8Js+VcO08EDaBwJcNzIbmE7Bydf0WnOSUVow= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211465; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZnjcB1gBfeizDNAfTlBZ6J0qkaFcfzSBWKWwURL1leo=; b=eVAsLpSCrUwBMc7AF6tQBR2cE64aAlgxg7fSq/6QYBLMS9zKoxOGRN7/qN7HOGMhfNKcgr+pw9C/ZceCKKEAcyaV31zCgMzzZTIIKvOk+O1XzbNFXJ7soYC7UlF87EuY8r4coWI5PrtpkNiZB2jM5Gnl24VWS/uGqLHUO26V1wc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721146519220.381119908528262; Sun, 26 Apr 2026 06:51:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzkd-00010a-Sp; Sun, 26 Apr 2026 09:42:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzkA-0000LB-9S for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:56 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzk7-0000Om-RG for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:41:54 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2b23fcf90b2so89113735ad.3 for ; Sun, 26 Apr 2026 06:41:51 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab30f29sm277940375ad.68.2026.04.26.06.41.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:41:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777210910; x=1777815710; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZnjcB1gBfeizDNAfTlBZ6J0qkaFcfzSBWKWwURL1leo=; b=Sn6X45fdavGrS8+K0nmPRXsb/mNKnQ/zvdZGJ6ATLou3EJyMaBcFoyVJNCRKvCz8sB Ov2YIVJGlqW47CGd9V37pi2oxmPD+KJnkOTcaiLJWCmhnnn/x5GK+w8R0pnEeqZskpX0 M5lIbQKraY76TTLEiW+fP9mzYYg6RLsj8fBlR7LbBb77ppgYUe70MFHSIdWM4oSyePvI YKUQ/DIsKYEDWh8UjECE12qpGUOIf9na03nfYk3/ZMVpk5K+31uAnFOatM/qwcRg2e4f 2uPUH+cJFLmCfWIKS/P9EZ4lq7356BiC6Cly6SlxqRYD0jzKJxxBEBNuLSVFKKriTgmW +lCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777210910; x=1777815710; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZnjcB1gBfeizDNAfTlBZ6J0qkaFcfzSBWKWwURL1leo=; b=mxyZhIrFPQ/0xaPYvtQafIX+8jeGD22AbYzlSfeB6dlaOAi0D6MahScmX3MaUvmwgf iA7Sr0wZFpviZQrt0rtn2Ysro+SYEwiFt9iMhMNCEp0tSsL6B5OuKMQChi+J+rQbFuLy VA3k5ih4D9BW3nObltd7K98IM2DbSRb43lgd0Ny9gkmRhb4zljuQrBzhcm9xtZschFjH 311qRsVsXhI7Bm/D9N4+Hst1HW7kQDSpRxJVw4A5yr4Kaeq+0w5UJ/QY9p1JgKz1+IFi 9cE6b6PGmTByWQU1JVy9IkOfyFEUQbhlx9S38bPMW9amu/3UnhxUTQmPPv6KZB5nCnYm 7c6A== X-Gm-Message-State: AOJu0YzhPMqp2XymH4xIZKYnwCJ0aqSBuMQ3co6CZ7hYOAPOpt8JUNct Yzxk2HmeUXOPk4IAYBrHrFz4ZHI8orgUxpiRTY3qIhxe3dbj7CjTBqypBOF9tF6Z50aZp5rxziK wEe0Oo9E= X-Gm-Gg: AeBDievgtBPV+/ze6CsCJ84PDsotxBv+fWzADfb1V+tfCt7OvU1h9XWdpFSYYdS+Q2U qhAqToBkOLrjgox7kh/4/x6c128AeIVSeX8ui4D5p2T7wjH9X+8qXmhcUZft62K1ikw8QbuacRp Gh3DBwIe8bMtA7P0VJ7Q6hePJrbdheQIsHV+p/NrcBqIg+xeyTtcvYVqGB7PrTSsFvq3wIEJwPT 4xwEIlzxvIT83AEs+3cDd4giHEbds4hf1kMLSH1QcjIofHW+s2YolWHN1Fn9p8g17uKC63s+n/x 8CB2bqg77qxmdeOn9sSye7D8di0wdowqxxoGPceNVEdELlQ3dQLx1jjVfPYAbRMdRF6KOq1KiD/ Bz+PD5FNgMqIKOHr9RQShurpRmQ26b9HNZgPPKDWfs11imiUeMtapZ5F1PGC/qvWYSb8LLcgsbz HMm46PfnFS09VxXZ8HhJeS2KlFQ5/pyCBlO29Wffm7 X-Received: by 2002:a17:903:2acb:b0:2b4:6398:6aa2 with SMTP id d9443c01a7336-2b5f9f3a802mr451228705ad.27.1777210910481; Sun, 26 Apr 2026 06:41:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 39/84] fpu: Inline bfloat16_unpack_raw into callers Date: Sun, 26 Apr 2026 23:39:16 +1000 Message-ID: <20260426134002.865628-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211465740158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 3612d2fceb..566154a729 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -646,11 +646,6 @@ static FloatParts64 unpack_raw64(const FloatFmt *fmt, = uint64_t raw) }; } =20 -static void QEMU_FLATTEN bfloat16_unpack_raw(FloatParts64 *p, bfloat16 f) -{ - *p =3D unpack_raw64(&bfloat16_params, f); -} - static void QEMU_FLATTEN float32_unpack_raw(FloatParts64 *p, float32 f) { *p =3D unpack_raw64(&float32_params, f); @@ -1490,7 +1485,7 @@ static FloatParts64 float16_unpack_canonical(float16 = f, float_status *s) static void bfloat16_unpack_canonical(FloatParts64 *p, bfloat16 f, float_status *s) { - bfloat16_unpack_raw(p, f); + *p =3D unpack_raw64(&bfloat16_params, f); parts64_canonicalize(p, s, &bfloat16_params); } =20 @@ -4974,9 +4969,8 @@ float64 float64_silence_nan(float64 a, float_status *= status) =20 bfloat16 bfloat16_silence_nan(bfloat16 a, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D unpack_raw64(&bfloat16_params, a); =20 - bfloat16_unpack_raw(&p, a); p.frac <<=3D bfloat16_params.frac_shift; parts64_silence_nan(&p, status); p.frac >>=3D bfloat16_params.frac_shift; @@ -5050,9 +5044,8 @@ float64 float64_squash_input_denormal(float64 a, floa= t_status *status) bfloat16 bfloat16_squash_input_denormal(bfloat16 a, float_status *status) { if (status->flush_inputs_to_zero) { - FloatParts64 p; + FloatParts64 p =3D unpack_raw64(&bfloat16_params, a); =20 - bfloat16_unpack_raw(&p, a); if (parts_squash_denormal(p, status)) { return bfloat16_set_sign(bfloat16_zero, p.sign); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211522; cv=none; d=zohomail.com; s=zohoarc; b=HqB4s9DUgwWi7VzwR+LJ98pz7oZ1yjKAMHImF+R0zQloNKLgMEU7J7K8HNk32Kt69opEw7YVIiP26uaiT80ffxhpBSeAuLVw/qRCm1R1/ALShs3OICB/TIqya0g4h/TKPs0Ay3ra94JZAp+9/QrV0wbiOERsxjtkyDDkcHmH6EE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211522; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XRyWdsWWDBWhjEZurZCmmfQh5TH8x0OJuXWPwMpCiKw=; b=UAJan114YB3Jvu9n0zbpMWPaFzXcCz6dgNJgSZJpaxKg9Rs4to57on5gWB7RudDp2mxm/BEafCGQvoWEY03b+ZBHHvi1SCL1pdoJWD2d1cM/yAWTxfh43xU8ICWGC92NPbrmpsk5FqNkLYwyCz7HWUq2cFFn7a4BK/ymIlO7fsQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211522536930.4731973578686; Sun, 26 Apr 2026 06:52:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGznI-0005FL-S6; Sun, 26 Apr 2026 09:45:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznC-0005CD-Cf for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:02 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzn8-000107-R5 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:02 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b2503753efso97400225ad.0 for ; Sun, 26 Apr 2026 06:44:58 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.44.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:44:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211097; x=1777815897; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XRyWdsWWDBWhjEZurZCmmfQh5TH8x0OJuXWPwMpCiKw=; b=e6w9dCACOVfjK+FffcTQWYsde08GhMJCkv9wikHPM1hGClOhu1aKG1ObhJeyvl2KGt 2Ryz8IMeIA4saLlleYOgIPnKAeSRgv0s0eSsdfBH55zw4ax71MWt0gZt237GLJrrP6fw 9UJdRKYSKebSennIwKpNBYjh3DubcEriqYVfftM8b/tSjymvYccl6FrWUlY9C1KLyxKH l2TCAsFGaGza735B2F9vTIAhSqFB1rnETuTISALzUF3dLnCehycG1nxkIAe2F8EFToch 67/DVvtifeZFLoUM/YL/MvkE5myoSqHuMJSZQ8ytRH6m2KnDpyQM1HqZJ25JKTv/0a7b i3Pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211097; x=1777815897; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XRyWdsWWDBWhjEZurZCmmfQh5TH8x0OJuXWPwMpCiKw=; b=SWP5y4sDxj11YbrsZeALA9CRoNsMAmOhfsU6XPRxqUjygpTJpLRcrzA0kvaAYd4aZq bQtlPa1i3Ul81vcFw/8PtOos7OlK/ahu1gTa8iqEnncrMe9tm4BYFmFVcjt3l7LSuhWJ ZDxI+RLCRie/+BgXPlboKZ2DqN8zZBoTaQ+AR+CxuskE4tqaI7krR04V03FV1jx6buSK B0/CDkB/kUullpbkdBf/SVk1QSIBxkjHbsux0G/1AemTV7DVOXyQa1rL7vFi5p5/ADic f0yivaAzYdGEq4H3CUNOeznBVcK4EUify8civ9Do/hGSxrX9fCdH3Oi8hUmkDm7TALfM 96Yg== X-Gm-Message-State: AOJu0YwXeAoK+d9kwQQpyhFpIpInEYwLb5uQsWLh6VnAFa+TiBaKnYt9 ZsF9oE27qokkGlJcVYbuuJoamKOG7ZclUrwgEYsDHdQytEycfSAgFNI5a5+kO5TPf2HpzkJo0qp Xz9eZgy0= X-Gm-Gg: AeBDievOmGCRNenFB6/Chh9wd0btJVE0ScH2AOtppEj/Hjt+Wy/TT58beGqsL/Vb5Xz 1INBVJ2Ykb1K6BCeGY5Mf3Daf4P2vioSdSVaVa6m7VHj8FgAQd9O8tx2zDbnwOng2V0MKPXtyQf 32hIg05UDLnZJgcgGGc7wlX7RxJjgfUAKA1acWO99P5DVdtKaoY2JaSkmGgp93Bacl1foCAAI7b olysNPFKa/BJu/tA4Y/AH7rZCW/NpccN07oO03sMoTdHl4HydqfHgKxPX0M1aiSOYNoqcLk3EQg O01JaBHb6CF3OQyj/hYmqo4HQc3pJk5xaZQdvhXAJuyFIAhYyhF7SZu+Vict7JYCzW8tqrgBHsP /WCAjB9nWhyiWOHu1XmSTlKLrzIBhj2+Jt1f3Ue9xBrIx7pvnSBF6h2V955TYHt3KCFq1sp81mz w2LxSb0tLK30KDj56BuylNyE4I71bNO/XZexXvBHWU X-Received: by 2002:a17:903:17cb:b0:2b2:67cd:9963 with SMTP id d9443c01a7336-2b5f9fd5c04mr397208345ad.38.1777211097069; Sun, 26 Apr 2026 06:44:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 40/84] fpu: Return struct from bfloat16_unpack_canonical Date: Sun, 26 Apr 2026 23:39:17 +1000 Message-ID: <20260426134002.865628-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211524063158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 108 +++++++++++++++++------------------------------- 1 file changed, 37 insertions(+), 71 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 566154a729..19cca8fb85 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1482,11 +1482,11 @@ static FloatParts64 float16_unpack_canonical(float1= 6 f, float_status *s) return float16a_unpack_canonical(f, s, &float16_params); } =20 -static void bfloat16_unpack_canonical(FloatParts64 *p, bfloat16 f, - float_status *s) +static FloatParts64 bfloat16_unpack_canonical(bfloat16 f, float_status *s) { - *p =3D unpack_raw64(&bfloat16_params, f); - parts64_canonicalize(p, s, &bfloat16_params); + FloatParts64 p =3D unpack_raw64(&bfloat16_params, f); + parts64_canonicalize(&p, s, &bfloat16_params); + return p; } =20 static float8_e4m3 float8_e4m3_round_pack_canonical(FloatParts64 *p, @@ -1873,11 +1873,9 @@ float64 float64r32_sub(float64 a, float64 b, float_s= tatus *status) static bfloat16 QEMU_FLATTEN bfloat16_addsub(bfloat16 a, bfloat16 b, float_status *status, bool subtrac= t) { - FloatParts64 pa, pb, *pr; - - bfloat16_unpack_canonical(&pa, a, status); - bfloat16_unpack_canonical(&pb, b, status); - pr =3D parts64_addsub(&pa, &pb, status, subtract); + FloatParts64 pa =3D bfloat16_unpack_canonical(a, status); + FloatParts64 pb =3D bfloat16_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 return bfloat16_round_pack_canonical(pr, status); } @@ -2013,11 +2011,9 @@ float64 float64r32_mul(float64 a, float64 b, float_s= tatus *status) bfloat16 QEMU_FLATTEN bfloat16_mul(bfloat16 a, bfloat16 b, float_status *status) { - FloatParts64 pa, pb, *pr; - - bfloat16_unpack_canonical(&pa, a, status); - bfloat16_unpack_canonical(&pb, b, status); - pr =3D parts64_mul(&pa, &pb, status); + FloatParts64 pa =3D bfloat16_unpack_canonical(a, status); + FloatParts64 pb =3D bfloat16_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_mul(&pa, &pb, status); =20 return bfloat16_round_pack_canonical(pr, status); } @@ -2276,12 +2272,10 @@ float64 float64r32_muladd(float64 a, float64 b, flo= at64 c, bfloat16 QEMU_FLATTEN bfloat16_muladd(bfloat16 a, bfloat16 b, bfloat16 c, int flags, float_status *status) { - FloatParts64 pa, pb, pc, *pr; - - bfloat16_unpack_canonical(&pa, a, status); - bfloat16_unpack_canonical(&pb, b, status); - bfloat16_unpack_canonical(&pc, c, status); - pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); + FloatParts64 pa =3D bfloat16_unpack_canonical(a, status); + FloatParts64 pb =3D bfloat16_unpack_canonical(b, status); + FloatParts64 pc =3D bfloat16_unpack_canonical(c, status); + FloatParts64 *pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, 0, flags, st= atus); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &bfloat16_params, false); @@ -2418,11 +2412,9 @@ float64 float64r32_div(float64 a, float64 b, float_s= tatus *status) bfloat16 QEMU_FLATTEN bfloat16_div(bfloat16 a, bfloat16 b, float_status *status) { - FloatParts64 pa, pb, *pr; - - bfloat16_unpack_canonical(&pa, a, status); - bfloat16_unpack_canonical(&pb, b, status); - pr =3D parts64_div(&pa, &pb, status); + FloatParts64 pa =3D bfloat16_unpack_canonical(a, status); + FloatParts64 pb =3D bfloat16_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_div(&pa, &pb, status); =20 return bfloat16_round_pack_canonical(pr, status); } @@ -2791,36 +2783,32 @@ float32 float64_to_float32(float64 a, float_status = *s) =20 float8_e4m3 bfloat16_to_float8_e4m3(bfloat16 a, bool saturate, float_statu= s *s) { - FloatParts64 p; + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); =20 - bfloat16_unpack_canonical(&p, a, s); parts64_float_to_float(&p, s); return float8_e4m3_round_pack_canonical(&p, s, saturate); } =20 float8_e5m2 bfloat16_to_float8_e5m2(bfloat16 a, bool saturate, float_statu= s *s) { - FloatParts64 p; + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); =20 - bfloat16_unpack_canonical(&p, a, s); parts_float_to_e5m2(&p, s, saturate); return float8_e5m2_round_pack_canonical(&p, s, saturate); } =20 float32 bfloat16_to_float32(bfloat16 a, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); =20 - bfloat16_unpack_canonical(&p, a, s); parts64_float_to_float(&p, s); return float32_round_pack_canonical(&p, s); } =20 float64 bfloat16_to_float64(bfloat16 a, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); =20 - bfloat16_unpack_canonical(&p, a, s); parts64_float_to_float(&p, s); return float64_round_pack_canonical(&p, s); } @@ -2982,9 +2970,8 @@ float64 float64_round_to_int(float64 a, float_status = *s) =20 bfloat16 bfloat16_round_to_int(bfloat16 a, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); =20 - bfloat16_unpack_canonical(&p, a, s); parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &bfloat16_param= s); return bfloat16_round_pack_canonical(&p, s); } @@ -3100,36 +3087,28 @@ int64_t float64_to_int64_scalbn(float64 a, FloatRou= ndMode rmode, int scale, int8_t bfloat16_to_int8_scalbn(bfloat16 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - bfloat16_unpack_canonical(&p, a, s); + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT8_MIN, INT8_MAX, s); } =20 int16_t bfloat16_to_int16_scalbn(bfloat16 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - bfloat16_unpack_canonical(&p, a, s); + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s= ); } =20 int32_t bfloat16_to_int32_scalbn(bfloat16 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - bfloat16_unpack_canonical(&p, a, s); + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s= ); } =20 int64_t bfloat16_to_int64_scalbn(bfloat16 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - bfloat16_unpack_canonical(&p, a, s); + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s= ); } =20 @@ -3590,36 +3569,28 @@ uint64_t float64_to_uint64_scalbn(float64 a, FloatR= oundMode rmode, int scale, uint8_t bfloat16_to_uint8_scalbn(bfloat16 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - bfloat16_unpack_canonical(&p, a, s); + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT8_MAX, s); } =20 uint16_t bfloat16_to_uint16_scalbn(bfloat16 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - bfloat16_unpack_canonical(&p, a, s); + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT16_MAX, s); } =20 uint32_t bfloat16_to_uint32_scalbn(bfloat16 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - bfloat16_unpack_canonical(&p, a, s); + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT32_MAX, s); } =20 uint64_t bfloat16_to_uint64_scalbn(bfloat16 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - bfloat16_unpack_canonical(&p, a, s); + FloatParts64 p =3D bfloat16_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT64_MAX, s); } =20 @@ -4296,11 +4267,9 @@ static float16 float16_minmax(float16 a, float16 b, = float_status *s, int flags) static bfloat16 bfloat16_minmax(bfloat16 a, bfloat16 b, float_status *s, int flags) { - FloatParts64 pa, pb, *pr; - - bfloat16_unpack_canonical(&pa, a, s); - bfloat16_unpack_canonical(&pb, b, s); - pr =3D parts64_minmax(&pa, &pb, s, flags); + FloatParts64 pa =3D bfloat16_unpack_canonical(a, s); + FloatParts64 pb =3D bfloat16_unpack_canonical(b, s); + FloatParts64 *pr =3D parts64_minmax(&pa, &pb, s, flags); =20 return bfloat16_round_pack_canonical(pr, s); } @@ -4496,10 +4465,9 @@ FloatRelation float64_compare_quiet(float64 a, float= 64 b, float_status *s) static FloatRelation QEMU_FLATTEN bfloat16_do_compare(bfloat16 a, bfloat16 b, float_status *s, bool is_quiet) { - FloatParts64 pa, pb; + FloatParts64 pa =3D bfloat16_unpack_canonical(a, s); + FloatParts64 pb =3D bfloat16_unpack_canonical(b, s); =20 - bfloat16_unpack_canonical(&pa, a, s); - bfloat16_unpack_canonical(&pb, b, s); return parts64_compare(&pa, &pb, s, is_quiet); } =20 @@ -4587,9 +4555,8 @@ float64 float64_scalbn(float64 a, int n, float_status= *status) =20 bfloat16 bfloat16_scalbn(bfloat16 a, int n, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D bfloat16_unpack_canonical(a, status); =20 - bfloat16_unpack_canonical(&p, a, status); parts64_scalbn(&p, n, status); return bfloat16_round_pack_canonical(&p, status); } @@ -4711,9 +4678,8 @@ float64 float64r32_sqrt(float64 a, float_status *stat= us) =20 bfloat16 QEMU_FLATTEN bfloat16_sqrt(bfloat16 a, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D bfloat16_unpack_canonical(a, status); =20 - bfloat16_unpack_canonical(&p, a, status); parts64_sqrt(&p, status, &bfloat16_params); return bfloat16_round_pack_canonical(&p, status); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211353; cv=none; d=zohomail.com; s=zohoarc; b=fDGMfzUbSlxQdpVOKOBkY1ulYgqva2D/P2m1JfjL9BU19o8Pa7PyQ2GUpqCkGUmmqw+ZHWytE6Vs1HI09XgO8dYnlaHdQKqSctFj5hDCiQKxVs0z49zU4+H0epYa5Yeim+Na0xoLXlObgC8I5TdXpItsBiJ5ytFCWnQymhaNk50= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211353; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qHJzjUFe1w6dTKeKSnIu28qswOkgajlabWRrdUskA+w=; b=Ik1Lad7kZss7OcbxUIMksE8sfwofbAmkPDCkkY8DMvVVdmmpUgUS1Tc3pnnz0MkFQkoeMSOd71zYWJVRoLopgRNVQYGZqIZYUg1VnjVEc4pvJB2Ox4GBKAfsiBdkV53Z6hMdDivlOKJ37VF02ZGATGfy0a6HTCNZmzMWAeYP+KU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721135373168.6470460772099; Sun, 26 Apr 2026 06:49:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGznJ-0005Fw-1j; Sun, 26 Apr 2026 09:45:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznD-0005Cp-8O for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:04 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznB-000112-Jn for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:02 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2a9296b3926so54889885ad.1 for ; Sun, 26 Apr 2026 06:45:01 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.44.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:44:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211100; x=1777815900; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qHJzjUFe1w6dTKeKSnIu28qswOkgajlabWRrdUskA+w=; b=SlWI8fleIRBqtyPpzcyysUm8kusJ0L7f5yhmvJbOwI8te5Ga2KLeRHrbPQqNU6dZD/ ZHcyh4pc+cyRFwW/Cps25a67KltQgbKAd4tjDhytJTwpnOkXE+Lby5x5BLTaERErEtHI RSVFaS2W+vPVX0q1V45KP1P+k6lc1DlRvtJbGA7w+6FX/AsgW3ra4KOdRSEK0wyIa1oA QiaVzOHqUj3+GzCWPigAzfxvdkyB3gEXI/j2AOvjXNdHbzFTvav0k/8m9hdQqXUp2AcM Q3jmerfwAttS5kMrDsgPGELxF+1hg8d4oAH6nrb/CAITE4Ug/OJ7iMYCATXLRVqyxBbJ BceA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211100; x=1777815900; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qHJzjUFe1w6dTKeKSnIu28qswOkgajlabWRrdUskA+w=; b=rDhJGfEF1d/SRrNeFsuKBgtCaOTpIdk7dww23aZJudgDhQTNyQb1b7C9w9RrgABrK1 7xtlACp84fFA7asK/1BGIr+AMDfR85gglt8dHmOcOexm8FFHOWD44Q6sxfmejlv7YmIS o54qp7PUXBIxPQ3rdkK2HQKZekmnlfVsCpYVs01xadW8SUKys4IGYvfsnFvR9XNHiROV 3oHcgv8M/1oqnxuhEhPcJU84H4XFy8mvlrELYuQBSlstaFYZktTNhEjrFzDNSVk6fCWz pX8bBvyjKqbwnhHplrnvdi92gEc/I+n9RQlK80oouFmyDIK2sihLiXt1XN0x8+MZCIek UaGA== X-Gm-Message-State: AOJu0YzgG6b5WzoLUa2O9gJ4toZJZMvgFfLa8/cIT2dMXr/XeHBuDwGC B1nrOfxBkX8xToTGtZf1bbihUrNQHW7QUHANYQWPf+NFCpsTBWxIl4rXgaCiHlwo9WC0u2fwtAL naBiWQ+k= X-Gm-Gg: AeBDies7rPHqAQ1Ec9bU+NSOxPkoAG/76/s63+tnsgXEoUh5sz7KSidqojNc0J6CzP1 vPc/O47er9aQeCOrw+y60cZelEXXU8NyXDA+TTJd1gyHL4LieCjoa8WoeKXzwhdDrJNtI+EpmAP QeAusbwJol9tF5r89ie0YnvIsN8+4ikPrNQBP8VaqAx/FzKn7NiwwXvmk0m9+JMoTRjoijxHEJk dYwdq5qhAXkO7VK4bhDAg4XeppLI9OhP6S+erKT2+Rf8hhN0P/fnq0PKlya6YOWyZ76o557RK7W pkxACULpfCC1bWh7iBRw1XF6K/6dtY53AKY9F/n7AJfFF66fRgRJVIMKOpgDIHhCn1PwgqN3Uje rkTXT1tQkJfzQHC/jWX4Gr58tI+qHU0jlBuloLCAaZn1KoyiVNzG+a3DCMBjnwlc4mRThMvL3SP fta35MuldBDihCY9Fwf04+rd6h3cc46n1et0VKr53h X-Received: by 2002:a17:903:1aae:b0:2b4:65d8:6a20 with SMTP id d9443c01a7336-2b5f9e8e3b5mr395757055ad.2.1777211100142; Sun, 26 Apr 2026 06:45:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 41/84] fpu: Inline float32_unpack_raw into callers Date: Sun, 26 Apr 2026 23:39:18 +1000 Message-ID: <20260426134002.865628-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211355384158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 19cca8fb85..5e33eab8d5 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -646,11 +646,6 @@ static FloatParts64 unpack_raw64(const FloatFmt *fmt, = uint64_t raw) }; } =20 -static void QEMU_FLATTEN float32_unpack_raw(FloatParts64 *p, float32 f) -{ - *p =3D unpack_raw64(&float32_params, f); -} - static void QEMU_FLATTEN float64_unpack_raw(FloatParts64 *p, float64 f) { *p =3D unpack_raw64(&float64_params, f); @@ -1529,7 +1524,7 @@ static bfloat16 bfloat16_round_pack_canonical(FloatPa= rts64 *p, static void float32_unpack_canonical(FloatParts64 *p, float32 f, float_status *s) { - float32_unpack_raw(p, f); + *p =3D unpack_raw64(&float32_params, f); parts64_canonicalize(p, s, &float32_params); } =20 @@ -4913,9 +4908,8 @@ float16 float16_silence_nan(float16 a, float_status *= status) =20 float32 float32_silence_nan(float32 a, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D unpack_raw64(&float32_params, a); =20 - float32_unpack_raw(&p, a); p.frac <<=3D float32_params.frac_shift; parts64_silence_nan(&p, status); p.frac >>=3D float32_params.frac_shift; @@ -4984,9 +4978,8 @@ float16 float16_squash_input_denormal(float16 a, floa= t_status *status) float32 float32_squash_input_denormal(float32 a, float_status *status) { if (status->flush_inputs_to_zero) { - FloatParts64 p; + FloatParts64 p =3D unpack_raw64(&float32_params, a); =20 - float32_unpack_raw(&p, a); if (parts_squash_denormal(p, status)) { return float32_set_sign(float32_zero, p.sign); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211426; cv=none; d=zohomail.com; s=zohoarc; b=Kxn3LIq0Dd4fk9nxu3706c7kOXWO5S8tiQpeJ+zLRPakdKgVRA9+7/+IfP4UF4z8lSPBV7APTgDvZ41BoFUjYNOTuD61Fy3Iuku1vLEWUulSNm/SwzT5VaW06Im8AFhoKi6Vb+3dGogwlQcqm8MOTAKKnlLrCQokHxpUl51o6Hk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211426; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EyggtB0YDpyXoFcXzmAjc9/sw1llDlReS0pMf+TeAR4=; b=NatfDsxpcboqZJN+XeX3GcBeQ74Cd7Yk5Ax6wMSe6g/SU3iNCoMSaqNUnyWDb8XUn8PeYyjYHfNEp33WrR2kFfMkxLcwiReL+U81A0bng0wWZ+O74hWGm7e5x1X6ZV99QpnjY3GK+/tVungwJ5c82b5GCphIjCKOrNeYacgLw3o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211426175860.167601078204; Sun, 26 Apr 2026 06:50:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGznN-0005MZ-6F; Sun, 26 Apr 2026 09:45:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznF-0005FO-TP for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:07 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznE-00013l-EX for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:05 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2aae146b604so62458205ad.3 for ; Sun, 26 Apr 2026 06:45:04 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211103; x=1777815903; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EyggtB0YDpyXoFcXzmAjc9/sw1llDlReS0pMf+TeAR4=; b=tg/bVNhZrjJmS0nLvURwdp9HA5WiWV5t62NMcDtRTesotAyA19mjoxQBINLHTzhTLx r5x+2RRun5qfwDEKpWSlhhM4yD2XvZyA1X++zVv7qKxNYjS5RibZKBGG/YEJICZkYTNd +dUwmwHBKV6Op62K4ZmAAu1ITWX7D7JWz57haVVApAPq2kZP84jLO0mDqFpxtbK558p1 GEfzdWsilACcRtKQFGSqtEopuCQHgIn6dvF1Me4KmHLHH+OuS+a68YfFwMBMRj23vm1V k8JmX6Zu5r1HZC5Hct3Yo4J9xF98hRakDWyHw4/UuwSYVo+pQIIAXJMwRXtc0pRy6lb2 7vgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211103; x=1777815903; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=EyggtB0YDpyXoFcXzmAjc9/sw1llDlReS0pMf+TeAR4=; b=tYjDwX/tgd987cuUpmZdJTqMR/JzkQ2jBg5PJzEJZw+Vrif21BwkBkuidD2SgcL4Ew 24EXtRu3TCDjSlKLA0gFEvDPXTA5kRPIh0KiufYDDKYJLvZR72lMELlUe1cN5K4ZksMB F5cELDeGS4i0ux7DOGnEqXerNY58qlMDWl/7uMBO+q0pUYsIbKbRbOALp26GEOZ94cIt rVFjhabCMQWM/NhrKcp71eIUXQ8zWJiqRw8WmvYNKipcDk6irO08VOx6VOSF6TUUnCR9 RpYI5a3Jj1pRjUIjT1jiTBp+yXtnllQDoR2f5RWHCPQOJlhHFia9CCd4wwlUd21Eb0Xs VWYw== X-Gm-Message-State: AOJu0YyQ99hpA90A+02auEdUdRpu0sKYNOTce/02PYKfwiqqy5IgNkDw U9zB1+eO6Vyei+nvDx/2f/5ruDpg4fSoNYWd8hVMEroEz/t5H5CboFY8mb3EcqVhASHSFDEu+ST UqNDN3cg= X-Gm-Gg: AeBDievhaG8kbCRndEUYwh7/i27bJp/9GmJvHkW9Pwwb2xlL72UdQm1CSKr7RPewcDu UUADHdRveRuMAnb833RhtuuVfI1kvdJcl7GkeaNJt9L4QAZRoUp7gyLBYL98H4UH+CfgSKizyMb RVdUSB42qawJN0z1fQ/SPdZldNS2Hp4jI9K+SUYyzGyUKlb3Co1spJnZiBbPzKBDP7a7mxO3ZYL iM4oxDI4Ek8vkaVSi5YNVJdM0sklLlFYtBYvuVAZsMVJoQTLUy+fxYFa6Niho/pa1K2YpaLtfiV iP0TBgpzQcLut5yV34kSScVcspTLvfhvNvm7zaSIxdHS4gd0eUNdrGzp/zW/WnJGldjEDgZvsvz HErUfmgcdLkSNYGpzJ+jtcpHioGLn40diXIWDN+Ia9XLkAm/hbq9fqqydH3Ib7+DjFd9fudGKOf Cwnbg5EIH0EfSE83up4i23jlrRkiM5+Ftx/BRdAiPM X-Received: by 2002:a17:903:1ac6:b0:2b2:5840:809c with SMTP id d9443c01a7336-2b5f9e77d75mr398042445ad.1.1777211103030; Sun, 26 Apr 2026 06:45:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 42/84] fpu: Inline float64_unpack_raw into callers Date: Sun, 26 Apr 2026 23:39:19 +1000 Message-ID: <20260426134002.865628-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211428736154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 5e33eab8d5..e1b92b38b6 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -646,11 +646,6 @@ static FloatParts64 unpack_raw64(const FloatFmt *fmt, = uint64_t raw) }; } =20 -static void QEMU_FLATTEN float64_unpack_raw(FloatParts64 *p, float64 f) -{ - *p =3D unpack_raw64(&float64_params, f); -} - static void QEMU_FLATTEN floatx80_unpack_raw(FloatParts128 *p, floatx80 f) { *p =3D (FloatParts128) { @@ -1538,7 +1533,7 @@ static float32 float32_round_pack_canonical(FloatPart= s64 *p, static void float64_unpack_canonical(FloatParts64 *p, float64 f, float_status *s) { - float64_unpack_raw(p, f); + *p =3D unpack_raw64(&float64_params, f); parts64_canonicalize(p, s, &float64_params); } =20 @@ -4918,9 +4913,8 @@ float32 float32_silence_nan(float32 a, float_status *= status) =20 float64 float64_silence_nan(float64 a, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D unpack_raw64(&float64_params, a); =20 - float64_unpack_raw(&p, a); p.frac <<=3D float64_params.frac_shift; parts64_silence_nan(&p, status); p.frac >>=3D float64_params.frac_shift; @@ -4990,9 +4984,8 @@ float32 float32_squash_input_denormal(float32 a, floa= t_status *status) float64 float64_squash_input_denormal(float64 a, float_status *status) { if (status->flush_inputs_to_zero) { - FloatParts64 p; + FloatParts64 p =3D unpack_raw64(&float64_params, a); =20 - float64_unpack_raw(&p, a); if (parts_squash_denormal(p, status)) { return float64_set_sign(float64_zero, p.sign); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211307; cv=none; d=zohomail.com; s=zohoarc; b=A11J2L+C6mxppjSdkDUFQQA9Q1jdwrjpFRJ/xfZisILsXMhRQIegFXXdyqroOjew7ZKBkqUDwUPayIFyTAl1XeQPwUw0hDHxz1nAWKLlSMhN+XKin2ba4/0dQGSwfUDypZiljyLQreY7oIuPmkucxeTNtbvC0Lt4//lTf8fb8Nw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211307; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=i0Sl15CbZuOenLUjRBqqIJLCi1jF+twJX10P6o1IkLU=; b=CRbSOZgE+4PCF4lnwKng/SG799TwtMJMgwRXG7xcSerqoEPAgkhGVReZvXlHmVgz+71FPd8j6Cj4ma8FPYo4f+lm1m1HC2Qt4z7qaPsoxZHa5tIn0SSGTiazb13obP7N6PdPrOlh/Xgsjmxg8DTQaNMxxLqP7bM1VenQfYxlKy0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211307314578.9323294342877; Sun, 26 Apr 2026 06:48:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGznO-0005Rc-TG; Sun, 26 Apr 2026 09:45:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznL-0005HF-1G for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:11 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznH-0001FB-2g for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:09 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-362e50b4641so1620316a91.0 for ; Sun, 26 Apr 2026 06:45:06 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211106; x=1777815906; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=i0Sl15CbZuOenLUjRBqqIJLCi1jF+twJX10P6o1IkLU=; b=wOwxHjl9cghebyaUsvxIPjrRUgglyGsauRVYxoYHO1gq/0HrDU1eHpH12hh4QJ05WA pzvz6G4QzDBJGXOGbhMWfCASik9lUgAVph4OCWZVlS3tCQ5yMIY0bCqGiKr8nWI4znRC ihQ6XD4OuU+SIAPuyylEb8QNKZKBhyTZoWriRwC/J/rVDyLcSOfuc5rT0tqLT0dfdgKI WJCfJmti9wX1v2DWaVsTyBAfeXRMvYvJ4zIjMcvCukCrOVB/1eSUO9uk1pPSsWoPFJld xkjcVc1IREHHrrzSh1GS1oFLq7MsCgjyks2wEEt5FXvgOyG0fo4wfviPNMTOX8jq3Hgk afxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211106; x=1777815906; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=i0Sl15CbZuOenLUjRBqqIJLCi1jF+twJX10P6o1IkLU=; b=drSMDso/uRN+XbPDc1/xj9jv5I+oeQDuCQqDu1Cd3xW/s0989RQHRXQJq5j+00nuHO JdYgQnNYgT+QRnpcS93nRzZ6W47VCsoXLi0/5xzobi35e4bJR9x850s6rD8hLE71AFmK jiO9JnG1F+RbykD1WpBgMKkdCFQP8vCxbQ5hjPcg6aRAGgpETnrG2yux/h8H5QQmC7Fy LNWn0lBs4CC5jJQI9ABzO0OsSkTaZT2raGwjsHxupWMuiNTED3xipnIYUphzY4/ygzHC l0vJlAhcjYP8dOo+VbUS2d1mXQu1YJ51/uZxNEgPGpXPE4aOuGf38BUQiLJaFoslfiyJ 3MoQ== X-Gm-Message-State: AOJu0YzzJNXiod+LC+O2/7TWBONeUhmYVP9xzSOrmDoyM9TLx2xXbNuR Ka6YWypgXs/zlHmoeqDdP1X9Nv5sk7MUoaSXjU3v6Prgp+VKaC8xdklu+dJadE1Oj9tI9EWLEbp g/EsPkvE= X-Gm-Gg: AeBDietnQn+O2b+FC/C+E9v5MTWAfbwxYomaYCfE5EUjlhlaMvzP/aqIK/Y9+mnQP+w Xp47USBagfPbeloslJBA/4bDd+V4aDdV91HSW00YEW+PdjDpIE/GOSQF72/+gmv/AiUlZqvezKu dk/b0wtX9Njysd9MrXFsF66sIKKkaWrsmMHe6oNdyGTWNS5qFd7LMGVxqY0rTEyVgmE0SXF+5GT JoRSi2xu+oHT9MbGTnDlVWwbGQA41zBmKqfUFX84nvwn8oBnZmxuI4q5O1iR3eftEFJ45M8NjfC d1/YUcHCRHM6W4UPpp219A+QZWJ1XZVWWXlI69QzbaYxxB8uz7z32aySOv5gs6ZMTm7eDxvksDG LPejckrzCx1WhvP8Kn6V6ur4kRL+R0sUlBhef/NRVbiaAcQ6BNRGhGtZzbk48atNf3CH3tvUY45 z3nIMWAmXSUeTnMgjgTi4LPbnfhMYKG2JiP2jd+cwK X-Received: by 2002:a17:903:907:b0:2ae:54b2:27c7 with SMTP id d9443c01a7336-2b5f9fecc37mr394644285ad.39.1777211105496; Sun, 26 Apr 2026 06:45:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 43/84] fpu: Return struct from float{32,64}_unpack_canonical Date: Sun, 26 Apr 2026 23:39:20 +1000 Message-ID: <20260426134002.865628-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211309148154100 Content-Type: text/plain; charset="utf-8" We must change float32 and float64 at once because of the DEFINE_S390_DIVIDE_TO_INTEGER macro. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 300 +++++++++++++++++------------------------------- 1 file changed, 107 insertions(+), 193 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index e1b92b38b6..b3208c1891 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1516,11 +1516,11 @@ static bfloat16 bfloat16_round_pack_canonical(Float= Parts64 *p, return bfloat16_pack_raw(p); } =20 -static void float32_unpack_canonical(FloatParts64 *p, float32 f, - float_status *s) +static FloatParts64 float32_unpack_canonical(float32 f, float_status *s) { - *p =3D unpack_raw64(&float32_params, f); - parts64_canonicalize(p, s, &float32_params); + FloatParts64 p =3D unpack_raw64(&float32_params, f); + parts64_canonicalize(&p, s, &float32_params); + return p; } =20 static float32 float32_round_pack_canonical(FloatParts64 *p, @@ -1530,11 +1530,11 @@ static float32 float32_round_pack_canonical(FloatPa= rts64 *p, return float32_pack_raw(p); } =20 -static void float64_unpack_canonical(FloatParts64 *p, float64 f, - float_status *s) +static FloatParts64 float64_unpack_canonical(float64 f, float_status *s) { - *p =3D unpack_raw64(&float64_params, f); - parts64_canonicalize(p, s, &float64_params); + FloatParts64 p =3D unpack_raw64(&float64_params, f); + parts64_canonicalize(&p, s, &float64_params); + return p; } =20 static float64 float64_round_pack_canonical(FloatParts64 *p, @@ -1722,11 +1722,9 @@ float16 float16_sub(float16 a, float16 b, float_stat= us *status) static float32 QEMU_SOFTFLOAT_ATTR soft_f32_addsub(float32 a, float32 b, float_status *status, bool subtract) { - FloatParts64 pa, pb, *pr; - - float32_unpack_canonical(&pa, a, status); - float32_unpack_canonical(&pb, b, status); - pr =3D parts64_addsub(&pa, &pb, status, subtract); + FloatParts64 pa =3D float32_unpack_canonical(a, status); + FloatParts64 pb =3D float32_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 return float32_round_pack_canonical(pr, status); } @@ -1744,11 +1742,9 @@ static float32 soft_f32_sub(float32 a, float32 b, fl= oat_status *status) static float64 QEMU_SOFTFLOAT_ATTR soft_f64_addsub(float64 a, float64 b, float_status *status, bool subtract) { - FloatParts64 pa, pb, *pr; - - float64_unpack_canonical(&pa, a, status); - float64_unpack_canonical(&pb, b, status); - pr =3D parts64_addsub(&pa, &pb, status, subtract); + FloatParts64 pa =3D float64_unpack_canonical(a, status); + FloatParts64 pb =3D float64_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 return float64_round_pack_canonical(pr, status); } @@ -1841,11 +1837,9 @@ float64_sub(float64 a, float64 b, float_status *s) static float64 float64r32_addsub(float64 a, float64 b, float_status *statu= s, bool subtract) { - FloatParts64 pa, pb, *pr; - - float64_unpack_canonical(&pa, a, status); - float64_unpack_canonical(&pb, b, status); - pr =3D parts64_addsub(&pa, &pb, status, subtract); + FloatParts64 pa =3D float64_unpack_canonical(a, status); + FloatParts64 pb =3D float64_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 return float64r32_round_pack_canonical(pr, status); } @@ -1942,11 +1936,9 @@ float16 QEMU_FLATTEN float16_mul(float16 a, float16 = b, float_status *status) static float32 QEMU_SOFTFLOAT_ATTR soft_f32_mul(float32 a, float32 b, float_status *status) { - FloatParts64 pa, pb, *pr; - - float32_unpack_canonical(&pa, a, status); - float32_unpack_canonical(&pb, b, status); - pr =3D parts64_mul(&pa, &pb, status); + FloatParts64 pa =3D float32_unpack_canonical(a, status); + FloatParts64 pb =3D float32_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_mul(&pa, &pb, status); =20 return float32_round_pack_canonical(pr, status); } @@ -1954,11 +1946,9 @@ soft_f32_mul(float32 a, float32 b, float_status *sta= tus) static float64 QEMU_SOFTFLOAT_ATTR soft_f64_mul(float64 a, float64 b, float_status *status) { - FloatParts64 pa, pb, *pr; - - float64_unpack_canonical(&pa, a, status); - float64_unpack_canonical(&pb, b, status); - pr =3D parts64_mul(&pa, &pb, status); + FloatParts64 pa =3D float64_unpack_canonical(a, status); + FloatParts64 pb =3D float64_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_mul(&pa, &pb, status); =20 return float64_round_pack_canonical(pr, status); } @@ -1989,11 +1979,9 @@ float64_mul(float64 a, float64 b, float_status *s) =20 float64 float64r32_mul(float64 a, float64 b, float_status *status) { - FloatParts64 pa, pb, *pr; - - float64_unpack_canonical(&pa, a, status); - float64_unpack_canonical(&pb, b, status); - pr =3D parts64_mul(&pa, &pb, status); + FloatParts64 pa =3D float64_unpack_canonical(a, status); + FloatParts64 pb =3D float64_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_mul(&pa, &pb, status); =20 return float64r32_round_pack_canonical(pr, status); } @@ -2066,12 +2054,10 @@ float32 QEMU_SOFTFLOAT_ATTR float32_muladd_scalbn(float32 a, float32 b, float32 c, int scale, int flags, float_status *status) { - FloatParts64 pa, pb, pc, *pr; - - float32_unpack_canonical(&pa, a, status); - float32_unpack_canonical(&pb, b, status); - float32_unpack_canonical(&pc, c, status); - pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); + FloatParts64 pa =3D float32_unpack_canonical(a, status); + FloatParts64 pb =3D float32_unpack_canonical(b, status); + FloatParts64 pc =3D float32_unpack_canonical(c, status); + FloatParts64 *pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags= , status); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &float32_params, false); @@ -2085,12 +2071,10 @@ float64 QEMU_SOFTFLOAT_ATTR float64_muladd_scalbn(float64 a, float64 b, float64 c, int scale, int flags, float_status *status) { - FloatParts64 pa, pb, pc, *pr; - - float64_unpack_canonical(&pa, a, status); - float64_unpack_canonical(&pb, b, status); - float64_unpack_canonical(&pc, c, status); - pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); + FloatParts64 pa =3D float64_unpack_canonical(a, status); + FloatParts64 pb =3D float64_unpack_canonical(b, status); + FloatParts64 pc =3D float64_unpack_canonical(c, status); + FloatParts64 *pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags= , status); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &float64_params, false); @@ -2244,12 +2228,10 @@ float64_muladd(float64 xa, float64 xb, float64 xc, = int flags, float_status *s) float64 float64r32_muladd(float64 a, float64 b, float64 c, int flags, float_status *status) { - FloatParts64 pa, pb, pc, *pr; - - float64_unpack_canonical(&pa, a, status); - float64_unpack_canonical(&pb, b, status); - float64_unpack_canonical(&pc, c, status); - pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); + FloatParts64 pa =3D float64_unpack_canonical(a, status); + FloatParts64 pb =3D float64_unpack_canonical(b, status); + FloatParts64 pc =3D float64_unpack_canonical(c, status); + FloatParts64 *pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, 0, flags, st= atus); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &float32_params, false); @@ -2309,11 +2291,9 @@ float16 float16_div(float16 a, float16 b, float_stat= us *status) static float32 QEMU_SOFTFLOAT_ATTR soft_f32_div(float32 a, float32 b, float_status *status) { - FloatParts64 pa, pb, *pr; - - float32_unpack_canonical(&pa, a, status); - float32_unpack_canonical(&pb, b, status); - pr =3D parts64_div(&pa, &pb, status); + FloatParts64 pa =3D float32_unpack_canonical(a, status); + FloatParts64 pb =3D float32_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_div(&pa, &pb, status); =20 return float32_round_pack_canonical(pr, status); } @@ -2321,11 +2301,9 @@ soft_f32_div(float32 a, float32 b, float_status *sta= tus) static float64 QEMU_SOFTFLOAT_ATTR soft_f64_div(float64 a, float64 b, float_status *status) { - FloatParts64 pa, pb, *pr; - - float64_unpack_canonical(&pa, a, status); - float64_unpack_canonical(&pb, b, status); - pr =3D parts64_div(&pa, &pb, status); + FloatParts64 pa =3D float64_unpack_canonical(a, status); + FloatParts64 pb =3D float64_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_div(&pa, &pb, status); =20 return float64_round_pack_canonical(pr, status); } @@ -2390,11 +2368,9 @@ float64_div(float64 a, float64 b, float_status *s) =20 float64 float64r32_div(float64 a, float64 b, float_status *status) { - FloatParts64 pa, pb, *pr; - - float64_unpack_canonical(&pa, a, status); - float64_unpack_canonical(&pb, b, status); - pr =3D parts64_div(&pa, &pb, status); + FloatParts64 pa =3D float64_unpack_canonical(a, status); + FloatParts64 pb =3D float64_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_div(&pa, &pb, status); =20 return float64r32_round_pack_canonical(pr, status); } @@ -2440,22 +2416,18 @@ floatx80 floatx80_div(floatx80 a, floatx80 b, float= _status *status) =20 float32 float32_rem(float32 a, float32 b, float_status *status) { - FloatParts64 pa, pb, *pr; - - float32_unpack_canonical(&pa, a, status); - float32_unpack_canonical(&pb, b, status); - pr =3D parts64_modrem(&pa, &pb, NULL, status); + FloatParts64 pa =3D float32_unpack_canonical(a, status); + FloatParts64 pb =3D float32_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_modrem(&pa, &pb, NULL, status); =20 return float32_round_pack_canonical(pr, status); } =20 float64 float64_rem(float64 a, float64 b, float_status *status) { - FloatParts64 pa, pb, *pr; - - float64_unpack_canonical(&pa, a, status); - float64_unpack_canonical(&pb, b, status); - pr =3D parts64_modrem(&pa, &pb, NULL, status); + FloatParts64 pa =3D float64_unpack_canonical(a, status); + FloatParts64 pb =3D float64_unpack_canonical(b, status); + FloatParts64 *pr =3D parts64_modrem(&pa, &pb, NULL, status); =20 return float64_round_pack_canonical(pr, status); } @@ -2688,28 +2660,25 @@ float64 float16_to_float64(float16 a, bool ieee, fl= oat_status *s) =20 float8_e4m3 float32_to_float8_e4m3(float32 a, bool saturate, float_status = *s) { - FloatParts64 p; + FloatParts64 p =3D float32_unpack_canonical(a, s); =20 - float32_unpack_canonical(&p, a, s); parts64_float_to_float(&p, s); return float8_e4m3_round_pack_canonical(&p, s, saturate); } =20 float8_e5m2 float32_to_float8_e5m2(float32 a, bool saturate, float_status = *s) { - FloatParts64 p; + FloatParts64 p =3D float32_unpack_canonical(a, s); =20 - float32_unpack_canonical(&p, a, s); parts_float_to_e5m2(&p, s, saturate); return float8_e5m2_round_pack_canonical(&p, s, saturate); } =20 float16 float32_to_float16(float32 a, bool ieee, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D float32_unpack_canonical(a, s); const FloatFmt *fmt; =20 - float32_unpack_canonical(&p, a, s); if (ieee) { parts64_float_to_float(&p, s); fmt =3D &float16_params; @@ -2723,9 +2692,8 @@ float16 float32_to_float16(float32 a, bool ieee, floa= t_status *s) static float64 QEMU_SOFTFLOAT_ATTR soft_float32_to_float64(float32 a, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D float32_unpack_canonical(a, s); =20 - float32_unpack_canonical(&p, a, s); parts64_float_to_float(&p, s); return float64_round_pack_canonical(&p, s); } @@ -2748,10 +2716,9 @@ float64 float32_to_float64(float32 a, float_status *= s) =20 float16 float64_to_float16(float64 a, bool ieee, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D float64_unpack_canonical(a, s); const FloatFmt *fmt; =20 - float64_unpack_canonical(&p, a, s); if (ieee) { parts64_float_to_float(&p, s); fmt =3D &float16_params; @@ -2764,9 +2731,8 @@ float16 float64_to_float16(float64 a, bool ieee, floa= t_status *s) =20 float32 float64_to_float32(float64 a, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D float64_unpack_canonical(a, s); =20 - float64_unpack_canonical(&p, a, s); parts64_float_to_float(&p, s); return float32_round_pack_canonical(&p, s); } @@ -2805,18 +2771,16 @@ float64 bfloat16_to_float64(bfloat16 a, float_statu= s *s) =20 bfloat16 float32_to_bfloat16(float32 a, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D float32_unpack_canonical(a, s); =20 - float32_unpack_canonical(&p, a, s); parts64_float_to_float(&p, s); return bfloat16_round_pack_canonical(&p, s); } =20 bfloat16 float64_to_bfloat16(float64 a, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D float64_unpack_canonical(a, s); =20 - float64_unpack_canonical(&p, a, s); parts64_float_to_float(&p, s); return bfloat16_round_pack_canonical(&p, s); } @@ -2843,20 +2807,18 @@ float64 float128_to_float64(float128 a, float_statu= s *s) =20 float128 float32_to_float128(float32 a, float_status *s) { - FloatParts64 p64; + FloatParts64 p64 =3D float32_unpack_canonical(a, s); FloatParts128 p128; =20 - float32_unpack_canonical(&p64, a, s); parts_float_to_float_widen(&p128, &p64, s); return float128_round_pack_canonical(&p128, s); } =20 float128 float64_to_float128(float64 a, float_status *s) { - FloatParts64 p64; + FloatParts64 p64 =3D float64_unpack_canonical(a, s); FloatParts128 p128; =20 - float64_unpack_canonical(&p64, a, s); parts_float_to_float_widen(&p128, &p64, s); return float128_round_pack_canonical(&p128, s); } @@ -2901,20 +2863,18 @@ float128 floatx80_to_float128(floatx80 a, float_sta= tus *s) =20 floatx80 float32_to_floatx80(float32 a, float_status *s) { - FloatParts64 p64; + FloatParts64 p64 =3D float32_unpack_canonical(a, s); FloatParts128 p128; =20 - float32_unpack_canonical(&p64, a, s); parts_float_to_float_widen(&p128, &p64, s); return floatx80_round_pack_canonical(&p128, s); } =20 floatx80 float64_to_floatx80(float64 a, float_status *s) { - FloatParts64 p64; + FloatParts64 p64 =3D float64_unpack_canonical(a, s); FloatParts128 p128; =20 - float64_unpack_canonical(&p64, a, s); parts_float_to_float_widen(&p128, &p64, s); return floatx80_round_pack_canonical(&p128, s); } @@ -2942,18 +2902,16 @@ float16 float16_round_to_int(float16 a, float_statu= s *s) =20 float32 float32_round_to_int(float32 a, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D float32_unpack_canonical(a, s); =20 - float32_unpack_canonical(&p, a, s); parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &float32_params= ); return float32_round_pack_canonical(&p, s); } =20 float64 float64_round_to_int(float64 a, float_status *s) { - FloatParts64 p; + FloatParts64 p =3D float64_unpack_canonical(a, s); =20 - float64_unpack_canonical(&p, a, s); parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &float64_params= ); return float64_round_pack_canonical(&p, s); } @@ -3023,54 +2981,42 @@ int64_t float16_to_int64_scalbn(float16 a, FloatRou= ndMode rmode, int scale, int16_t float32_to_int16_scalbn(float32 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - float32_unpack_canonical(&p, a, s); + FloatParts64 p =3D float32_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s= ); } =20 int32_t float32_to_int32_scalbn(float32 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - float32_unpack_canonical(&p, a, s); + FloatParts64 p =3D float32_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s= ); } =20 int64_t float32_to_int64_scalbn(float32 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - float32_unpack_canonical(&p, a, s); + FloatParts64 p =3D float32_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s= ); } =20 int16_t float64_to_int16_scalbn(float64 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - float64_unpack_canonical(&p, a, s); + FloatParts64 p =3D float64_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT16_MIN, INT16_MAX, s= ); } =20 int32_t float64_to_int32_scalbn(float64 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - float64_unpack_canonical(&p, a, s); + FloatParts64 p =3D float64_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, s= ); } =20 int64_t float64_to_int64_scalbn(float64 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts64 p; - - float64_unpack_canonical(&p, a, s); + FloatParts64 p =3D float64_unpack_canonical(a, s); return parts64_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, s= ); } =20 @@ -3455,18 +3401,14 @@ static int64_t parts64_float_to_sint_modulo(FloatPa= rts64 *p, int32_t float64_to_int32_modulo(float64 a, FloatRoundMode rmode, float_status *s) { - FloatParts64 p; - - float64_unpack_canonical(&p, a, s); + FloatParts64 p =3D float64_unpack_canonical(a, s); return parts64_float_to_sint_modulo(&p, rmode, 31, s); } =20 int64_t float64_to_int64_modulo(float64 a, FloatRoundMode rmode, float_status *s) { - FloatParts64 p; - - float64_unpack_canonical(&p, a, s); + FloatParts64 p =3D float64_unpack_canonical(a, s); return parts64_float_to_sint_modulo(&p, rmode, 63, s); } =20 @@ -3505,54 +3447,42 @@ uint64_t float16_to_uint64_scalbn(float16 a, FloatR= oundMode rmode, int scale, uint16_t float32_to_uint16_scalbn(float32 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - float32_unpack_canonical(&p, a, s); + FloatParts64 p =3D float32_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT16_MAX, s); } =20 uint32_t float32_to_uint32_scalbn(float32 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - float32_unpack_canonical(&p, a, s); + FloatParts64 p =3D float32_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT32_MAX, s); } =20 uint64_t float32_to_uint64_scalbn(float32 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - float32_unpack_canonical(&p, a, s); + FloatParts64 p =3D float32_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT64_MAX, s); } =20 uint16_t float64_to_uint16_scalbn(float64 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - float64_unpack_canonical(&p, a, s); + FloatParts64 p =3D float64_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT16_MAX, s); } =20 uint32_t float64_to_uint32_scalbn(float64 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - float64_unpack_canonical(&p, a, s); + FloatParts64 p =3D float64_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT32_MAX, s); } =20 uint64_t float64_to_uint64_scalbn(float64 a, FloatRoundMode rmode, int sca= le, float_status *s) { - FloatParts64 p; - - float64_unpack_canonical(&p, a, s); + FloatParts64 p =3D float64_unpack_canonical(a, s); return parts64_float_to_uint(&p, rmode, scale, UINT64_MAX, s); } =20 @@ -4266,22 +4196,18 @@ static bfloat16 bfloat16_minmax(bfloat16 a, bfloat1= 6 b, =20 static float32 float32_minmax(float32 a, float32 b, float_status *s, int f= lags) { - FloatParts64 pa, pb, *pr; - - float32_unpack_canonical(&pa, a, s); - float32_unpack_canonical(&pb, b, s); - pr =3D parts64_minmax(&pa, &pb, s, flags); + FloatParts64 pa =3D float32_unpack_canonical(a, s); + FloatParts64 pb =3D float32_unpack_canonical(b, s); + FloatParts64 *pr =3D parts64_minmax(&pa, &pb, s, flags); =20 return float32_round_pack_canonical(pr, s); } =20 static float64 float64_minmax(float64 a, float64 b, float_status *s, int f= lags) { - FloatParts64 pa, pb, *pr; - - float64_unpack_canonical(&pa, a, s); - float64_unpack_canonical(&pb, b, s); - pr =3D parts64_minmax(&pa, &pb, s, flags); + FloatParts64 pa =3D float64_unpack_canonical(a, s); + FloatParts64 pb =3D float64_unpack_canonical(b, s); + FloatParts64 *pr =3D parts64_minmax(&pa, &pb, s, flags); =20 return float64_round_pack_canonical(pr, s); } @@ -4347,10 +4273,9 @@ FloatRelation float16_compare_quiet(float16 a, float= 16 b, float_status *s) static FloatRelation QEMU_SOFTFLOAT_ATTR float32_do_compare(float32 a, float32 b, float_status *s, bool is_quiet) { - FloatParts64 pa, pb; + FloatParts64 pa =3D float32_unpack_canonical(a, s); + FloatParts64 pb =3D float32_unpack_canonical(b, s); =20 - float32_unpack_canonical(&pa, a, s); - float32_unpack_canonical(&pb, b, s); return parts64_compare(&pa, &pb, s, is_quiet); } =20 @@ -4401,10 +4326,9 @@ FloatRelation float32_compare_quiet(float32 a, float= 32 b, float_status *s) static FloatRelation QEMU_SOFTFLOAT_ATTR float64_do_compare(float64 a, float64 b, float_status *s, bool is_quiet) { - FloatParts64 pa, pb; + FloatParts64 pa =3D float64_unpack_canonical(a, s); + FloatParts64 pb =3D float64_unpack_canonical(b, s); =20 - float64_unpack_canonical(&pa, a, s); - float64_unpack_canonical(&pb, b, s); return parts64_compare(&pa, &pb, s, is_quiet); } =20 @@ -4527,18 +4451,16 @@ float16 float16_scalbn(float16 a, int n, float_stat= us *status) =20 float32 float32_scalbn(float32 a, int n, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D float32_unpack_canonical(a, status); =20 - float32_unpack_canonical(&p, a, status); parts64_scalbn(&p, n, status); return float32_round_pack_canonical(&p, status); } =20 float64 float64_scalbn(float64 a, int n, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D float64_unpack_canonical(a, status); =20 - float64_unpack_canonical(&p, a, status); parts64_scalbn(&p, n, status); return float64_round_pack_canonical(&p, status); } @@ -4586,9 +4508,8 @@ float16 QEMU_FLATTEN float16_sqrt(float16 a, float_st= atus *status) static float32 QEMU_SOFTFLOAT_ATTR soft_f32_sqrt(float32 a, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D float32_unpack_canonical(a, status); =20 - float32_unpack_canonical(&p, a, status); parts64_sqrt(&p, status, &float32_params); return float32_round_pack_canonical(&p, status); } @@ -4596,9 +4517,8 @@ soft_f32_sqrt(float32 a, float_status *status) static float64 QEMU_SOFTFLOAT_ATTR soft_f64_sqrt(float64 a, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D float64_unpack_canonical(a, status); =20 - float64_unpack_canonical(&p, a, status); parts64_sqrt(&p, status, &float64_params); return float64_round_pack_canonical(&p, status); } @@ -4659,9 +4579,8 @@ float64 QEMU_FLATTEN float64_sqrt(float64 xa, float_s= tatus *s) =20 float64 float64r32_sqrt(float64 a, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D float64_unpack_canonical(a, status); =20 - float64_unpack_canonical(&p, a, status); parts64_sqrt(&p, status, &float64_params); return float64r32_round_pack_canonical(&p, status); } @@ -4822,18 +4741,16 @@ static void parts64_log2(FloatParts64 *a, float_sta= tus *s, const FloatFmt *fmt) =20 float32 float32_log2(float32 a, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D float32_unpack_canonical(a, status); =20 - float32_unpack_canonical(&p, a, status); parts64_log2(&p, status, &float32_params); return float32_round_pack_canonical(&p, status); } =20 float64 float64_log2(float64 a, float_status *status) { - FloatParts64 p; + FloatParts64 p =3D float64_unpack_canonical(a, status); =20 - float64_unpack_canonical(&p, a, status); parts64_log2(&p, status, &float64_params); return float64_round_pack_canonical(&p, status); } @@ -5321,10 +5238,9 @@ static const float64 float32_exp2_coefficients[15] = =3D =20 float32 float32_exp2(float32 a, float_status *status) { - FloatParts64 xp, xnp, tp, rp; - int i; + FloatParts64 xnp, tp, rp; + FloatParts64 xp =3D float32_unpack_canonical(a, status); =20 - float32_unpack_canonical(&xp, a, status); if (unlikely(xp.cls !=3D float_class_normal)) { switch (xp.cls) { case float_class_denormal: @@ -5344,14 +5260,13 @@ float32 float32_exp2(float32 a, float_status *statu= s) =20 float_raise(float_flag_inexact, status); =20 - float64_unpack_canonical(&tp, float64_ln2, status); + tp =3D float64_unpack_canonical(float64_ln2, status); xp =3D *parts64_mul(&xp, &tp, status); xnp =3D xp; =20 - float64_unpack_canonical(&rp, float64_one, status); - for (i =3D 0 ; i < 15 ; i++) { - - float64_unpack_canonical(&tp, float32_exp2_coefficients[i], status= ); + rp =3D float64_unpack_canonical(float64_one, status); + for (int i =3D 0; i < 15; i++) { + tp =3D float64_unpack_canonical(float32_exp2_coefficients[i], stat= us); rp =3D *parts64_muladd_scalbn(&tp, &xnp, &rp, 0, 0, status); xnp =3D *parts64_mul(&xnp, &xp, status); } @@ -5504,10 +5419,9 @@ void floatN ## _s390_divide_to_integer(floatN a, flo= atN b, \ uint32_t *cc, int *dxc, = \ float_status *status) = \ { = \ - FloatParts64 pa, pb, pr, pn; = \ - = \ - floatN ## _unpack_canonical(&pa, a, status); = \ - floatN ## _unpack_canonical(&pb, b, status); = \ + FloatParts64 pa =3D floatN ## _unpack_canonical(a, status); = \ + FloatParts64 pb =3D floatN ## _unpack_canonical(b, status); = \ + FloatParts64 pr, pn; = \ parts_s390_divide_to_integer(&pa, &pb, final_quotient_rounding_mode, = \ mask_underflow, mask_inexact, = \ &floatN ## _params, = \ --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211254; cv=none; d=zohomail.com; s=zohoarc; b=AGbR5ZAQzS+5C+U8ndpNGM4N2HenTMc/zgRGc5h3WwGbwnCpJz0CdErkkZTFwVj9Ju90Scmbr1cB7kAbgGkEMNnDDZkmxbWjczSYMk6x94Gyd6d5Etw2BwjV8P9oCcHXuIUcqbyqul/cae9HtMXtoDVt343Dy1dqVyyiuyV6gws= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211254; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QysjQPlG+quCcTNk8MlI/u+wQMnFH+nnF7tjS6d1GzM=; b=NmZGIVgQBYbBIYbXTfCWTOaZmKFIvExSX5Scj14xelOxgGeCtzGGRKZLrrhpZHV7V4R/Xd0guUTHfGbNNCLyM75AcikL1Z3brYzkXUnlw4K1j0HdItl3oAPhGFeFHnopDIGPjPR9Rvna/huqVckFUtlzp0cP2uHPyQRrNQSK8OY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211254220879.2732906017586; Sun, 26 Apr 2026 06:47:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGznO-0005QP-GZ; Sun, 26 Apr 2026 09:45:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznL-0005HI-2T for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:12 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznJ-0001GJ-CQ for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:10 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2ad9a9be502so58238185ad.0 for ; Sun, 26 Apr 2026 06:45:09 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211108; x=1777815908; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QysjQPlG+quCcTNk8MlI/u+wQMnFH+nnF7tjS6d1GzM=; b=L7lnjkT965UddlrqWDViZH97Bw43vt1Bu2CR9pQTCGbO9H71TdMmwAHfxB2gAxghji 6D2pLsFSn2Jh5YEdQnCU2gc/YF9o3rcLfFiJAWrguNxNj2yPVb7TfeLYLZPPaBVngtjW oxO3nVlTxzW9iPUlRyxf4TQRwacwxTbox8QFuSHUTYTg8zdRsqvgDG2uB/IExZzmfOeU 6hTUgRzqcHPXB4xpMdTlZhrjz0KnDK/fXY133JPR/8DbAO02z61kHzeXPoAajUBY0NUM 0OtBigrDa4gVMkkR23rxPEnYe7M4/rV7I0C85kdGVneiMcYnOHlKspBJUDUasUVRekxe nPtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211108; x=1777815908; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=QysjQPlG+quCcTNk8MlI/u+wQMnFH+nnF7tjS6d1GzM=; b=XYAXnzAA4eGz2N4oAPTomqplVk2mTfv/owb4LyyTtlCioRm2AhP2rK3T5IuItre5uP YrWN/rONK8Vosijv+OYABHXmTaqWQJA1q290yRdueFO/TfI9aPd12CtC29Yljl4u5CL9 v9qGzD1itgGaEnS9E+Hc2soFOkWOfn3wkmR9XAbztVzKLIXe4V4jFcrIPHSaRX9RWmgU etNrTVuwJ0pWHKF4LDSWTmRzilJJz9NAM+LI44TRClcoTqLHzyGijVMLP4zsVi5Evx+g z623xBHDuquUnS/FTpap3ca7HlgA/jnjrchWVHUkw62NLESgpBJSVdzdRCTQI6PwGzyP CJqA== X-Gm-Message-State: AOJu0YyOAniKRl8btHkLNhs0gwSbw+oluZkZ1FgfG5PD5Wl6rVGym4AU TKCD0ukCiXQW504PBdeoU6/enatahbVeMsM2lrSIKxeWq1QP9rELfi2WQNyNrCxrTAbcDJCAKgb egXX6Lno= X-Gm-Gg: AeBDiesrgo4TD5zjkAAZPRQ3psQdyEcM53RQ302/blyKOXRW4VLMHG2s+XZqaC1w9oP hUfvpcRcEaItk/3v87iRN1WB8SswoccMiFXLIjfnXYmoIgrs8vMNBkf+qADvYac/r8bzpaLlYQe xtkmUrm14X0wstPYojZqLVgqVWavRakdUHJw3I6smgQ/jFHtWFyQkqH4cKyqyM7TSSsSjTI8DHw eurCF22sqQmN/hWINkiLvWYs0f75r03+kgZbxuVoVvfltpfs1lvuKn/Xtjjhxq/lq3WOqOn+zGW sSoTiIDGApjR/hoDLmJd2BPE+rHSXqAkj05w9N0Hi0jN1v3JT56K0DeyJP6DbBwPV4EdOG6mtmO BqLeeoWksvlvOeG20XSVto9D59jwniY3ciN3WIUmSStzx450RXBLiGxs61bsYIfDdUbrbrJz4Aj BO0cWxP+T0vnZt+rN9jTG8uen9WrYEZdPz/tTY8YLn X-Received: by 2002:a17:903:b06:b0:2b2:5491:e32b with SMTP id d9443c01a7336-2b5f9f2bd43mr407843025ad.23.1777211107991; Sun, 26 Apr 2026 06:45:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 44/84] fpu: Inline floatx80_unpack_raw into only caller Date: Sun, 26 Apr 2026 23:39:21 +1000 Message-ID: <20260426134002.865628-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211255069158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index b3208c1891..5412fd0360 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -646,16 +646,6 @@ static FloatParts64 unpack_raw64(const FloatFmt *fmt, = uint64_t raw) }; } =20 -static void QEMU_FLATTEN floatx80_unpack_raw(FloatParts128 *p, floatx80 f) -{ - *p =3D (FloatParts128) { - .cls =3D float_class_unclassified, - .sign =3D extract32(f.high, 15, 1), - .exp =3D extract32(f.high, 0, 15), - .frac_hi =3D f.low - }; -} - static void QEMU_FLATTEN float128_unpack_raw(FloatParts128 *p, float128 f) { const int f_size =3D float128_params.frac_size - 64; @@ -1626,7 +1616,12 @@ static bool floatx80_unpack_canonical(FloatParts128 = *p, floatx80 f, return false; } =20 - floatx80_unpack_raw(p, f); + *p =3D (FloatParts128) { + .cls =3D float_class_unclassified, + .sign =3D extract32(f.high, 15, 1), + .exp =3D extract32(f.high, 0, 15), + .frac_hi =3D f.low + }; =20 if (likely(p->exp !=3D floatx80_params[floatx80_precision_x].exp_max))= { parts128_canonicalize(p, s, &floatx80_params[floatx80_precision_x]= ); --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211345; cv=none; d=zohomail.com; s=zohoarc; b=PP9MdGIIQ0b+L45weTb9++hQpm4pCRqMT8zeacvuVFBNc0V3j13ZqSqsTk26AD6plSqWfKkIwJaVe5uzKACulAtcr0Q6jqKvupV9EUdbM9mW2SlF+taTBaaScoyEoflUz2s+EdHR4E1RUFDOPN49+pVIFjaNEGSemvkuXGppGq4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211345; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JWzy2wmG/YVpmfySiB9DM04usKyzulFCXbIVFWan6xA=; b=ABVARvoj0A5mwb6XKdPDx1z02nvvTdCcOvhQydLrAOZQ0gaLO0hj+t5WFDpm5HyDE56WZBxgeXFknY8dxanrotflCd9b68iH8QK9Ec/dcV+lwWqFBG1HFaZGVExtNVPlZdjokQWRs7S9f27sio+YSwlEWPeq30AgaZpYrr2bxWI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211345239584.8935305403369; Sun, 26 Apr 2026 06:49:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGznU-0005a8-0o; Sun, 26 Apr 2026 09:45:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznO-0005R8-Ir for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:14 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznN-0001ID-6J for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:14 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b2ea1b3962so53570125ad.0 for ; Sun, 26 Apr 2026 06:45:12 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211112; x=1777815912; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JWzy2wmG/YVpmfySiB9DM04usKyzulFCXbIVFWan6xA=; b=j3q9e7rJCLEab3F8uy5gLFc2J8M7FQyUmZOB0F5qo+VySso05FxaavuwFN9bg9XaUP CJw87LNZiTJP2wDMJeWzxEdop8ZExCJ9por4TPIllmsOJiDHrmS9z0RRQeNiJ4eIHOi9 TwX0RXWygVJCqh2I/3N4xkr6eYtcoZMqndzTlWhEE0lTWDefPF/tTm5ag71vnbZ372hz 0fgymrd+PaD5U6TKOcUF5d/WJIX6quj/ZxiYenzd1CsPZ8vn6yymlQ3DblfDHx22uM3m D579uUXSKtwzOOFnYkE9jaaLFW53VzmRfF5mWKMd08cfNCy0f3CnoQcE2TsYHtVD9fMA 8M1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211112; x=1777815912; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JWzy2wmG/YVpmfySiB9DM04usKyzulFCXbIVFWan6xA=; b=ftiz4zlDSa4PiJYIRxHaKTpyXC9PYfijTQXP01YTYC7CPWwKGaCWIx0J+3NGbgfQkY ZZ7bG+mrWGo4pYucU/EYLx0yVIxFjX2r3eSbU6Fh1rzG5PPuqR2UaOiVGuxOtzQGwhf2 qyHQb2PVIHo8SMb91NSQ9Bp9khsuiIFmwuhwRd+PW/QbV4wXuIgbd7QY/DqdGj1oXntQ 3Az3OysYEQs0dyWbBBgiSA3UPeVwYGd1ENfmiy1RoJPwy5vGAAFwIQBmv56dYallJ1fp 7HYMXF3ZD4hK08dHYqpm4V4donZGRDPM0TIo9sjny+xOBKwC2dGQlsT2FHRT60bF5eIo WGmw== X-Gm-Message-State: AOJu0YzZuGnjiS6CBNI3BwvThisA8HoACkHFxi6c2MDHFF9age7IBsIH B+xQS8GQE5f9YkFP2toFgkDA9XnrwBz2yvsjvleIMJM5Tzl5WB6IndgU7yn9rmEnCz3aR/S8uPl 6cFsaHLI= X-Gm-Gg: AeBDievBT7xA6ycyHUFMnB2cjyKhEaB0gUXKl3vK454piikM2kQGP+E8zwuUw6BzW9V qMtEJ/Hhsiz4rhlX9LmTVzM25ZfvZMuFzUee+sYm+oipAZx0B8plp6NRgv5Jo0gvFT9uTblz5i1 jDHklO17lJijJR6VV1mQ/9mkHeN67/D4/9lXLToLCwHcpABdNdmzmeN+N21U5DQj9gN2KAtdlOh y4RSvn5B5cg/iv+7zyIJnTWHhpoVSP1p2EYU+wwZbnhSDeeqzJIR9nYLvs6LxC4Ivtbz6OKtnsJ WErRhh7KejB5CTZQDkEgOUm+jaDyeidXsUyEaP+CmTVwUxOQsQl3Jxil1IJ8T2sfSixTQvk2rJi nzfD5A8ZYZrdpuMCgYncyFl6cDdsWXw0zibMauqHwtoCxA4lpumNSWC0VnkZDC0ZK3p+l7CP/KI 5aGrDi/jeCwW6dKDXJrZcN37OBLAbkGRQVbclnmLYI X-Received: by 2002:a17:902:efc1:b0:2b4:5dff:30fd with SMTP id d9443c01a7336-2b5f9eb0501mr284546525ad.4.1777211111665; Sun, 26 Apr 2026 06:45:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 45/84] fpu: Return struct from float128_unpack_raw Date: Sun, 26 Apr 2026 23:39:22 +1000 Message-ID: <20260426134002.865628-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211347460154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 5412fd0360..a9c91fb8a4 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -646,12 +646,12 @@ static FloatParts64 unpack_raw64(const FloatFmt *fmt,= uint64_t raw) }; } =20 -static void QEMU_FLATTEN float128_unpack_raw(FloatParts128 *p, float128 f) +static FloatParts128 float128_unpack_raw(float128 f) { const int f_size =3D float128_params.frac_size - 64; const int e_size =3D float128_params.exp_size; =20 - *p =3D (FloatParts128) { + return (FloatParts128) { .cls =3D float_class_unclassified, .sign =3D extract64(f.high, f_size + e_size, 1), .exp =3D extract64(f.high, f_size, e_size), @@ -1586,7 +1586,7 @@ static float64 float64r32_round_pack_canonical(FloatP= arts64 *p, static void float128_unpack_canonical(FloatParts128 *p, float128 f, float_status *s) { - float128_unpack_raw(p, f); + *p =3D float128_unpack_raw(f); parts128_canonicalize(p, s, &float128_params); } =20 @@ -4845,9 +4845,8 @@ bfloat16 bfloat16_silence_nan(bfloat16 a, float_statu= s *status) =20 float128 float128_silence_nan(float128 a, float_status *status) { - FloatParts128 p; + FloatParts128 p =3D float128_unpack_raw(a); =20 - float128_unpack_raw(&p, a); frac128_shl(&p, float128_params.frac_shift); parts128_silence_nan(&p, status); frac128_shr(&p, float128_params.frac_shift); --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211447; cv=none; d=zohomail.com; s=zohoarc; b=iHTZRQy54G7Nh49HidipfekJlN7lio0/oireKmxKaewfMOP6IFNSsBTU2c/RhN25g64ELHNLGDP2jsr+/hCjeU3oBJC1ij1Wk5YXESXiXehNemYIboPGcNRI0tumIy9FYjJbUFA0pQ3Ctl6eYFTcY502YJma6GJMz90Sdcc7Tec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211447; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6zcSXo4A730eHR1OTgbhR0R0t6QcmaEIHgFVIpsyOqk=; b=aoXiasbVYiU1LCe+oLP6kxUSUlA9CJLP3e002563+8sNRQ6bLmL7R3SungaDOxCRohhuX2eEQUPFgGJHJib+XhmAiCHzQFZDfkmsZosihTeJkpf7hGJl1GczDPAFlMjH786S6lkv6EgTmO3nQhyDEzXbkNVgFtHhe8FFYzFP0J8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211447103530.0508663030575; Sun, 26 Apr 2026 06:50:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGznp-0005gF-Jp; Sun, 26 Apr 2026 09:45:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznS-0005Uc-2T for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:18 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznQ-0001JH-1D for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:17 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b23fcf90b2so89126595ad.3 for ; Sun, 26 Apr 2026 06:45:15 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211115; x=1777815915; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6zcSXo4A730eHR1OTgbhR0R0t6QcmaEIHgFVIpsyOqk=; b=gCma/9myrE28bflg66oylwd9qoUBkfeA77zL+AiVAYGk09fAlj8TDT/MaE7q2RXZVU ATm83wu+pMppF9zkeqgYjRLcF5E4sfZMJkd8lVI2a8BHX2gWop22HyUtt6U780M6GB1c DZ31ycCcnrrxLsoFb/vBy1Y6Cu+fWQAyMePvz56o07jNg7X+NE3UAMl2+O5xuIvvouME Ib/e2n8Akw63hbO4t8uuKtFtavPtl1siqdFP4f1DrdaFzzRaOTzWB235wSWtS/tWF2qn kpr4RcPXIV+T/rcEPKfx96JhaAeepKX6Ko7E4Hp+DNhTZa5m5gF83JOs1A7qKUMXf+dw ROXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211115; x=1777815915; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6zcSXo4A730eHR1OTgbhR0R0t6QcmaEIHgFVIpsyOqk=; b=c67h05G4NNBhuGhuAub6k7YVkE8Vo97VCnPOVxLwDGrMDPv+2RSH92KQTM07n2iDWH s3dzVmDOZeZqkrtfoI8htWrrt+ZX0ZulnUyJ4gcuN1vU6U1WJBtaUgWXlh/QTWJaxlS2 cBiq8FXcg2IQAklBpzKvI+QxYwECdDIG1ivqZKD7jOL09yR75t0rrWPSS5Z1LCLWNVgp AgwGt1xGBvzRz+YukkhCenwhwJPM01hZvi6IoMLuOdE+k3WAS44MR/tbaYwY3AB61+X1 rmf3RrIWB01/dWaA6byXMaPvP6qpbyrcoeCDhQwXN0+9FttWU3YTNTcVYZ+qx+Pg3vH4 SOvA== X-Gm-Message-State: AOJu0YzuarvQCCNxFDw/EaK3TztC8mNuXdiRnl9doVOmLjlmF85hGPcY 2A8sOlRyf6v9iHACy3LIMJ/D7QiAFvabVs2NJCeJJvjvR/2gj8UWjyZbLeQ8TKgQ2sefHu6JyKc T3G6DdMk= X-Gm-Gg: AeBDies7UepDsZ5/eMJnOlWTrKAC8FH7ciY9wIUd0VbKor4kG0NR3SLAw55sdHdi3pL 1nuveyWLbdeR1FXObEzZ+Ay1cUKzkH2lxPip73dQyEs3+PqehRJvxBDnEirUF3cnnrRmxF/Ycny CJ38/K9J1qgkkYKgiurovP4PWHaB66DE0hU3Zerc9Gm8VmJXRv05nLSGyUFPEXawfkSBHi/ix0w pYYApMaomG9NNUFBS5kZKt9rYsfkPPHw3qTfWRaCSsB5ryV+3mWNBS95AunHJ9fAGGX1brGoxwE OMa01dTQujzBbYMCLrXkhM1X4HvAY3zqP4VmsjOci9GFI6OhVdQT2IXffZAbOir0wtly1wAG5rV 6jTdMXnu/OhzQbubP/oHOxDM7ANVEWZ+WH4ldFPxSYI0H5dUAqhB/fALhuv03KKEK8EVhwyjSam 5GtbtcyKV513hbHUEK57vCPqmFkbbRaojcpjngVkQ7 X-Received: by 2002:a17:902:7585:b0:2b4:656b:aeb0 with SMTP id d9443c01a7336-2b5f9f61d74mr261402715ad.35.1777211114552; Sun, 26 Apr 2026 06:45:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 46/84] fpu: Return struct from float128_unpack_canonical Date: Sun, 26 Apr 2026 23:39:23 +1000 Message-ID: <20260426134002.865628-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211449049154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 105 +++++++++++++++++------------------------------- 1 file changed, 37 insertions(+), 68 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index a9c91fb8a4..77585fa11f 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1583,11 +1583,11 @@ static float64 float64r32_round_pack_canonical(Floa= tParts64 *p, return float64r32_pack_raw(p); } =20 -static void float128_unpack_canonical(FloatParts128 *p, float128 f, - float_status *s) +static FloatParts128 float128_unpack_canonical(float128 f, float_status *s) { - *p =3D float128_unpack_raw(f); - parts128_canonicalize(p, s, &float128_params); + FloatParts128 p =3D float128_unpack_raw(f); + parts128_canonicalize(&p, s, &float128_params); + return p; } =20 static float128 float128_round_pack_canonical(FloatParts128 *p, @@ -1872,11 +1872,9 @@ bfloat16 bfloat16_sub(bfloat16 a, bfloat16 b, float_= status *status) static float128 QEMU_FLATTEN float128_addsub(float128 a, float128 b, float_status *status, bool subtrac= t) { - FloatParts128 pa, pb, *pr; - - float128_unpack_canonical(&pa, a, status); - float128_unpack_canonical(&pb, b, status); - pr =3D parts128_addsub(&pa, &pb, status, subtract); + FloatParts128 pa =3D float128_unpack_canonical(a, status); + FloatParts128 pb =3D float128_unpack_canonical(b, status); + FloatParts128 *pr =3D parts128_addsub(&pa, &pb, status, subtract); =20 return float128_round_pack_canonical(pr, status); } @@ -1994,11 +1992,9 @@ bfloat16_mul(bfloat16 a, bfloat16 b, float_status *s= tatus) float128 QEMU_FLATTEN float128_mul(float128 a, float128 b, float_status *status) { - FloatParts128 pa, pb, *pr; - - float128_unpack_canonical(&pa, a, status); - float128_unpack_canonical(&pb, b, status); - pr =3D parts128_mul(&pa, &pb, status); + FloatParts128 pa =3D float128_unpack_canonical(a, status); + FloatParts128 pb =3D float128_unpack_canonical(b, status); + FloatParts128 *pr =3D parts128_mul(&pa, &pb, status); =20 return float128_round_pack_canonical(pr, status); } @@ -2255,12 +2251,10 @@ bfloat16 QEMU_FLATTEN bfloat16_muladd(bfloat16 a, b= float16 b, bfloat16 c, float128 QEMU_FLATTEN float128_muladd(float128 a, float128 b, float128 c, int flags, float_status *status) { - FloatParts128 pa, pb, pc, *pr; - - float128_unpack_canonical(&pa, a, status); - float128_unpack_canonical(&pb, b, status); - float128_unpack_canonical(&pc, c, status); - pr =3D parts128_muladd_scalbn(&pa, &pb, &pc, 0, flags, status); + FloatParts128 pa =3D float128_unpack_canonical(a, status); + FloatParts128 pb =3D float128_unpack_canonical(b, status); + FloatParts128 pc =3D float128_unpack_canonical(c, status); + FloatParts128 *pr =3D parts128_muladd_scalbn(&pa, &pb, &pc, 0, flags, = status); =20 /* Round before applying negate result. */ parts128_uncanon(pr, status, &float128_params, false); @@ -2383,11 +2377,9 @@ bfloat16_div(bfloat16 a, bfloat16 b, float_status *s= tatus) float128 QEMU_FLATTEN float128_div(float128 a, float128 b, float_status *status) { - FloatParts128 pa, pb, *pr; - - float128_unpack_canonical(&pa, a, status); - float128_unpack_canonical(&pb, b, status); - pr =3D parts128_div(&pa, &pb, status); + FloatParts128 pa =3D float128_unpack_canonical(a, status); + FloatParts128 pb =3D float128_unpack_canonical(b, status); + FloatParts128 *pr =3D parts128_div(&pa, &pb, status); =20 return float128_round_pack_canonical(pr, status); } @@ -2429,11 +2421,9 @@ float64 float64_rem(float64 a, float64 b, float_stat= us *status) =20 float128 float128_rem(float128 a, float128 b, float_status *status) { - FloatParts128 pa, pb, *pr; - - float128_unpack_canonical(&pa, a, status); - float128_unpack_canonical(&pb, b, status); - pr =3D parts128_modrem(&pa, &pb, NULL, status); + FloatParts128 pa =3D float128_unpack_canonical(a, status); + FloatParts128 pb =3D float128_unpack_canonical(b, status); + FloatParts128 *pr =3D parts128_modrem(&pa, &pb, NULL, status); =20 return float128_round_pack_canonical(pr, status); } @@ -2782,20 +2772,18 @@ bfloat16 float64_to_bfloat16(float64 a, float_statu= s *s) =20 float32 float128_to_float32(float128 a, float_status *s) { + FloatParts128 p128 =3D float128_unpack_canonical(a, s); FloatParts64 p64; - FloatParts128 p128; =20 - float128_unpack_canonical(&p128, a, s); parts_float_to_float_narrow(&p64, &p128, s); return float32_round_pack_canonical(&p64, s); } =20 float64 float128_to_float64(float128 a, float_status *s) { + FloatParts128 p128 =3D float128_unpack_canonical(a, s); FloatParts64 p64; - FloatParts128 p128; =20 - float128_unpack_canonical(&p128, a, s); parts_float_to_float_narrow(&p64, &p128, s); return float64_round_pack_canonical(&p64, s); } @@ -2876,9 +2864,8 @@ floatx80 float64_to_floatx80(float64 a, float_status = *s) =20 floatx80 float128_to_floatx80(float128 a, float_status *s) { - FloatParts128 p; + FloatParts128 p =3D float128_unpack_canonical(a, s); =20 - float128_unpack_canonical(&p, a, s); parts128_float_to_float(&p, s); return floatx80_round_pack_canonical(&p, s); } @@ -2921,9 +2908,8 @@ bfloat16 bfloat16_round_to_int(bfloat16 a, float_stat= us *s) =20 float128 float128_round_to_int(float128 a, float_status *s) { - FloatParts128 p; + FloatParts128 p =3D float128_unpack_canonical(a, s); =20 - float128_unpack_canonical(&p, a, s); parts128_round_to_int(&p, s->float_rounding_mode, 0, s, &float128_para= ms); return float128_round_pack_canonical(&p, s); } @@ -3046,18 +3032,14 @@ int64_t bfloat16_to_int64_scalbn(bfloat16 a, FloatR= oundMode rmode, int scale, static int32_t float128_to_int32_scalbn(float128 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts128 p; - - float128_unpack_canonical(&p, a, s); + FloatParts128 p =3D float128_unpack_canonical(a, s); return parts128_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, = s); } =20 static int64_t float128_to_int64_scalbn(float128 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts128 p; - - float128_unpack_canonical(&p, a, s); + FloatParts128 p =3D float128_unpack_canonical(a, s); return parts128_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, = s); } =20 @@ -3066,9 +3048,7 @@ static Int128 float128_to_int128_scalbn(float128 a, F= loatRoundMode rmode, { int flags =3D 0; Int128 r; - FloatParts128 p; - - float128_unpack_canonical(&p, a, s); + FloatParts128 p =3D float128_unpack_canonical(a, s); =20 switch (p.cls) { case float_class_snan: @@ -3512,18 +3492,14 @@ uint64_t bfloat16_to_uint64_scalbn(bfloat16 a, Floa= tRoundMode rmode, static uint32_t float128_to_uint32_scalbn(float128 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts128 p; - - float128_unpack_canonical(&p, a, s); + FloatParts128 p =3D float128_unpack_canonical(a, s); return parts128_float_to_uint(&p, rmode, scale, UINT32_MAX, s); } =20 static uint64_t float128_to_uint64_scalbn(float128 a, FloatRoundMode rmode, int scale, float_status *s) { - FloatParts128 p; - - float128_unpack_canonical(&p, a, s); + FloatParts128 p =3D float128_unpack_canonical(a, s); return parts128_float_to_uint(&p, rmode, scale, UINT64_MAX, s); } =20 @@ -3532,9 +3508,7 @@ static Int128 float128_to_uint128_scalbn(float128 a, = FloatRoundMode rmode, { int flags =3D 0; Int128 r; - FloatParts128 p; - - float128_unpack_canonical(&p, a, s); + FloatParts128 p =3D float128_unpack_canonical(a, s); =20 switch (p.cls) { case float_class_snan: @@ -4210,11 +4184,9 @@ static float64 float64_minmax(float64 a, float64 b, = float_status *s, int flags) static float128 float128_minmax(float128 a, float128 b, float_status *s, int flags) { - FloatParts128 pa, pb, *pr; - - float128_unpack_canonical(&pa, a, s); - float128_unpack_canonical(&pb, b, s); - pr =3D parts128_minmax(&pa, &pb, s, flags); + FloatParts128 pa =3D float128_unpack_canonical(a, s); + FloatParts128 pb =3D float128_unpack_canonical(b, s); + FloatParts128 *pr =3D parts128_minmax(&pa, &pb, s, flags); =20 return float128_round_pack_canonical(pr, s); } @@ -4393,10 +4365,9 @@ FloatRelation bfloat16_compare_quiet(bfloat16 a, bfl= oat16 b, float_status *s) static FloatRelation QEMU_FLATTEN float128_do_compare(float128 a, float128 b, float_status *s, bool is_quiet) { - FloatParts128 pa, pb; + FloatParts128 pa =3D float128_unpack_canonical(a, s); + FloatParts128 pb =3D float128_unpack_canonical(b, s); =20 - float128_unpack_canonical(&pa, a, s); - float128_unpack_canonical(&pb, b, s); return parts128_compare(&pa, &pb, s, is_quiet); } =20 @@ -4470,9 +4441,8 @@ bfloat16 bfloat16_scalbn(bfloat16 a, int n, float_sta= tus *status) =20 float128 float128_scalbn(float128 a, int n, float_status *status) { - FloatParts128 p; + FloatParts128 p =3D float128_unpack_canonical(a, status); =20 - float128_unpack_canonical(&p, a, status); parts128_scalbn(&p, n, status); return float128_round_pack_canonical(&p, status); } @@ -4590,9 +4560,8 @@ bfloat16 QEMU_FLATTEN bfloat16_sqrt(bfloat16 a, float= _status *status) =20 float128 QEMU_FLATTEN float128_sqrt(float128 a, float_status *status) { - FloatParts128 p; + FloatParts128 p =3D float128_unpack_canonical(a, status); =20 - float128_unpack_canonical(&p, a, status); parts128_sqrt(&p, status, &float128_params); return float128_round_pack_canonical(&p, status); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211502; cv=none; d=zohomail.com; s=zohoarc; b=K7AHsqGNV+C8i7ggXEfyFdnMtUL7L03F1uMJ9FXfIVYwlqPGtfW7o3rYw8GOVcxXb07Nm623KRadgWIZeY3WhRyEbMaCsM7UAem2yt2kXD8hJPjh9woxoRM7VRyWmlpo69/h3RspVyz/PecTd0ouIfjpn1H4XXrYscxLAOQ2C5c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211502; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wY0NB6qgE+bAQHWWi7d8cQ7VHs8v7Rlo1nrFDJMYy0I=; b=kKlUE3d/rk5KTxIjSFdyCLQtq47kA+FUsFIzljyOJffVofRZHxOp9b3vFJz6ZJLKCzusK8n7abmAUG8DPu0G5AF/rdpr3R6+sVB+y3Ow7cUIBHSEqssN0s6aAeVGbQqwdHqTuicphe4G+AWBb86gsshkU50Re2qSVFqHHmYAUqA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211502177145.2473401872752; Sun, 26 Apr 2026 06:51:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGznr-0005lb-GH; Sun, 26 Apr 2026 09:45:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznV-0005cY-SN for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:22 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznU-0001KB-5k for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:21 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2b788a98557so42446015ad.2 for ; Sun, 26 Apr 2026 06:45:19 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211119; x=1777815919; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wY0NB6qgE+bAQHWWi7d8cQ7VHs8v7Rlo1nrFDJMYy0I=; b=S4rvuDy03d1PXJqBXNM/CrZZ9nIH16Gbgd3vG58r++Fy6+PcCUvrcthzazlOL44xrF /39Qz+DvO8w920+sqlZyXV6cErn0CCzFpKwIrsufdlu4UKF2yaRzXIor4t+A3gz24GCK SFsLa4R/hh2T4fUrBF9jaepHLIEeUwvtma45iQFCGjwZbOmNdTAfB2bXgcR+PvBJbhhA HG1Gd/9M9f1slm6JGmu+I8P28+mgTHIZ3TIQKVDqKeFgBsNgGGBlu4VoFai8wwIC9c9A Pui0FSGTIPhCzy4mo1BFFBij1T9ymZVTHo7/X9AjRyHBmJcZSQ8TcoyJOVw3sz5tt4Vk 9XWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211119; x=1777815919; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wY0NB6qgE+bAQHWWi7d8cQ7VHs8v7Rlo1nrFDJMYy0I=; b=EC9IcVFB49i5/RLLmzFnPWI1dJJorecsp5CmSBuxYA2WVhrCCPHwr+bDBAImHtm6Rz ZanyZ3yJc2a2ANlJL+dmnTvPwQ9wzhmn02eLDQgcsRXKNElmMZFFMhFHs1KvCnFhspFm FQPQfGpqToyQhSCfLNSVVp272BcIroC8D7QVtWakhDhEssPXylfTQYRQ8udlRER0Opu7 RUm/WzZcifq0b3PW6dw/8OSFclY/kusqtsTJJDc6xIVGFfxsJzkQrUabE3oL88bUtrxS EPMhZbP8I1tPhqBG7nQOGCdGMIeIN37oQiJ1lBosr59Z+m/1leJhdVVPicRHbFcnLN1f TfnA== X-Gm-Message-State: AOJu0YzaIIxBrF13+PFeiA2GWLzzOt3Kk+lsS4HLkGdlgLVlrb2vmuPM w5vcLCl2ba6Tks+Xfb0QaULpAeNcfVErumtJDJCIs7ThMY2wJ/y4Wc6w96HKj/vjrWsXGUX6BG7 eMoeebX4= X-Gm-Gg: AeBDiesUvxI5mSGZTWVYvn1FD6LzhoM6WOeEs2K/fu6onlVK++E97NywVTvYOT+PxtK RNQbhtsCX0T5cPF1nxmZA2b+9R+t2sfoY5QlYhERD+sjvHKMkXdaCORGgjkofPybPj3kBUFSQg5 rt9Pm0oHLFAAnyEsqaM1rNgBKpXg3gk2tPgSNA3e2QtX2KxEGZpm32QARAseeYOINKfPPz2KDQY qsgtZBNOHMQZ6Bz7WZdFGZBUJbeJfDwH84bwJNtcXADXyE5suSLQ/W//BoILNqL5goOOUzlSoBR bwiACgYFxKsjO5RXfdTZGHzDhcPXNp41qJ0OviT2Jx2BbUnCms+7Mt9GPPYdPSfFnpsa7i8HeMt oLJe1bSoczAQk6WPjlewpYbDjRUtJR2XaG4vtGYGQCAvsB9IqkXRhF6PUT2NDk35z4W+Chj3+BB 1EaE4rew1pAqWXjsFRFSB6/c0dkALpH/0e79TX4S2E X-Received: by 2002:a17:902:f98e:b0:2b2:481b:de5f with SMTP id d9443c01a7336-2b5f9e86057mr286214455ad.5.1777211117120; Sun, 26 Apr 2026 06:45:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 47/84] fpu: Change parts_float_to_float_narrow to parts128_to_parts64 Date: Sun, 26 Apr 2026 23:39:24 +1000 Message-ID: <20260426134002.865628-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211503875154100 Content-Type: text/plain; charset="utf-8" Rename and return FloatParts64 structure. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 77585fa11f..99f0036d0d 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -2563,29 +2563,31 @@ static void parts128_float_to_float(FloatParts128 *= a, float_status *s) } } =20 -static void parts_float_to_float_narrow(FloatParts64 *a, FloatParts128 *b, - float_status *s) +static FloatParts64 parts128_to_parts64(FloatParts128 *b, float_status *s) { - a->cls =3D b->cls; - a->sign =3D b->sign; - a->exp =3D b->exp; + FloatParts64 r =3D { + .cls =3D b->cls, + .sign =3D b->sign, + .exp =3D b->exp, + }; =20 - switch (a->cls) { + switch (r.cls) { case float_class_denormal: float_raise(float_flag_input_denormal_used, s); /* fall through */ case float_class_normal: - frac64_truncjam(a, b); + frac64_truncjam(&r, b); break; case float_class_snan: case float_class_qnan: /* Discard the low bits of the NaN. */ - a->frac =3D b->frac_hi; - parts64_return_nan(a, s); + r.frac =3D b->frac_hi; + parts64_return_nan(&r, s); break; default: break; } + return r; } =20 static void parts_float_to_float_widen(FloatParts128 *a, FloatParts64 *b, @@ -2773,18 +2775,16 @@ bfloat16 float64_to_bfloat16(float64 a, float_statu= s *s) float32 float128_to_float32(float128 a, float_status *s) { FloatParts128 p128 =3D float128_unpack_canonical(a, s); - FloatParts64 p64; + FloatParts64 p64 =3D parts128_to_parts64(&p128, s); =20 - parts_float_to_float_narrow(&p64, &p128, s); return float32_round_pack_canonical(&p64, s); } =20 float64 float128_to_float64(float128 a, float_status *s) { FloatParts128 p128 =3D float128_unpack_canonical(a, s); - FloatParts64 p64; + FloatParts64 p64 =3D parts128_to_parts64(&p128, s); =20 - parts_float_to_float_narrow(&p64, &p128, s); return float64_round_pack_canonical(&p64, s); } =20 @@ -2812,7 +2812,7 @@ float32 floatx80_to_float32(floatx80 a, float_status = *s) FloatParts128 p128; =20 if (floatx80_unpack_canonical(&p128, a, s)) { - parts_float_to_float_narrow(&p64, &p128, s); + p64 =3D parts128_to_parts64(&p128, s); } else { parts64_default_nan(&p64, s); } @@ -2825,7 +2825,7 @@ float64 floatx80_to_float64(floatx80 a, float_status = *s) FloatParts128 p128; =20 if (floatx80_unpack_canonical(&p128, a, s)) { - parts_float_to_float_narrow(&p64, &p128, s); + p64 =3D parts128_to_parts64(&p128, s); } else { parts64_default_nan(&p64, s); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211303; cv=none; d=zohomail.com; s=zohoarc; b=IXBr6WpgbWM/9o5n3RnfqMdWbfRqshFRlRpChBH0y7LUCbo/kuGBBb+HtVtGiYaBXX0iCcL0RdmnbV3DXd+xDkQcbMpdjoG1Ed8OkphMWXPAokGivAHt6ZWxTuEJJhf/ufDorL47nbUKsull/KGOwCyZDIP7Xgv4W8VMQ4LcNuk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211303; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=91KpAxRphFoJ92UJqSPx0ipa0G5SKbiIfR6fXaE6u/Y=; b=F5oaGM+E6YWUOFdAPDwNDYgp+wj4yTxcML/il4uLavh+yknq/VwvWdBv3JiZQhJiSmD7YLc3AxR8P354YX2sOGidpAvZaDq1hJ77kJXav3KuKdOdy9jXYMkrvSd3HYhMMMEp/bjHkI/2vqBwF8TlesAaSagLukPjzWgEM1hqByQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211303592192.43840299983617; Sun, 26 Apr 2026 06:48:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGznx-0005rZ-Ga; Sun, 26 Apr 2026 09:45:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznZ-0005dW-Dd for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:36 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznW-0001Ky-2S for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:23 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-35da01fc0baso5874565a91.2 for ; Sun, 26 Apr 2026 06:45:21 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211121; x=1777815921; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=91KpAxRphFoJ92UJqSPx0ipa0G5SKbiIfR6fXaE6u/Y=; b=GIgoqIAFC5RQvJVZGTSojn3Mxf8pRlEp/HIbyyRIVyep86SCPC4MTzv+jcInzeLVNN imGBsoOR4RLk34vEIl+g85smnIHYlfDBji9vEZpVc18ePr5j3FrqG8nzaRcbvhOxfVrD hhDP2xDyTADr+F7J9lh7s0kFowgVZJvTE3i7j8HNp6ix9edN5ULe9ibvOYkvBcSJCMF2 v1xLIFyKpYMGxs8u3GSde+KvwdCYKZmoqVpl5egNOZ2AJIAuQzEQz9LXkQk9pMxNHXgp ndDt1P+0+3m7zRautQKZAjF1fYX3BxoboxP8G0N5oH1NBMCuvx2hCT/cjQ2+pm0Tk6pK L30g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211121; x=1777815921; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=91KpAxRphFoJ92UJqSPx0ipa0G5SKbiIfR6fXaE6u/Y=; b=eXZ+PmOSkSbOqtjgmeGvvNXE5dG76+ecqD6ra15aYu2UsjSxz+ETaoZky/rEFNXj6O Vww9vbpybPQrZ68qpjQ+kTg/fwm+LKe0ajLUciGK3opnEEdDIWblxJcY02DVlxxNXUYv lXRDRM21yOXoCkFldvVCqUE63XMLd8S/n9v+jMXnwj9CotRjAQfyP5ZXNYFx7bnPk6rm K29aCBWgP11j2ETF3ZAfOuMEikKDfdg3Uw6OIAguV0BE6ags91Kf0m4Q8sb8/U/B9Zmb LUn6cCtIing7+NQCYYJitQB2OZEZlCdhIDyaJgziykiGkFL/0hmUagMlDCqWWCr3s3pY aqGw== X-Gm-Message-State: AOJu0YwHkaJMZtpS7xtlPx0nacDMaOZm+Un/NG6q4acTX/IgJkaeUUkK bBDKFHdVKLKJW42FrFnFnGSvBY4Xn8doTUDAc8/tVwcWgv88zAlXyBTY7w/s6O4PXI1oDcH5Ml+ FtmEvRUM= X-Gm-Gg: AeBDiesoi/LAolBA5pqzhuefk8yy/RY6hYIT33+TrYBL+CcX1x2lmLhiTN+qk5RLNJr 6VtZlFgalW++qJ4iy6Xw0mahwbC6i1S4hLaRLvs1RmK43MpI79ySnaLod0K5NdYrL0csZpSDS9u whn6JSIumf/Isv6Ieyf4R7XM/7mQsOVu2jzE8LqqQAUH57exlzWAbQJarpigFfYJGsoiYSf1Xwl ToH9eN4mK5xLxM+vUZtjpSd/jyTex9QB8lnWg+tyy+7/XsUMMVYwM3zKM/eA0fx5h8HsGSR5v7W DyHd5SeGH+CDJtgw623v00lsX4wdrV8ZVahbS/9A0E4kFds8THNOoomUtlJSxAcDMY5pHLwUCp/ /PnU8SQTvnMB7vgciqWcgkDh0sSNkOoldhU3pyYj0LoVnGKz3D23zxa/eS82Cza/asRu1bhX5EX Qb3WjfduAD6krX7DYWFvL9Xv3u+xM5fvQpaF5YVz7d X-Received: by 2002:a17:90b:3e8b:b0:364:6558:99bd with SMTP id 98e67ed59e1d1-36465589ae7mr3859850a91.23.1777211120546; Sun, 26 Apr 2026 06:45:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 48/84] fpu: Change parts_float_to_float_widen to parts64_to_parts128 Date: Sun, 26 Apr 2026 23:39:25 +1000 Message-ID: <20260426134002.865628-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211305330158500 Content-Type: text/plain; charset="utf-8" Rename and return FloatParts128 structure. Use switch instead of 2 ifs. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 99f0036d0d..5d58caf5ea 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -2590,20 +2590,27 @@ static FloatParts64 parts128_to_parts64(FloatParts1= 28 *b, float_status *s) return r; } =20 -static void parts_float_to_float_widen(FloatParts128 *a, FloatParts64 *b, - float_status *s) +static FloatParts128 parts64_to_parts128(FloatParts64 *b, float_status *s) { - a->cls =3D b->cls; - a->sign =3D b->sign; - a->exp =3D b->exp; - frac64_widen(a, b); + FloatParts128 r =3D { + .cls =3D b->cls, + .sign =3D b->sign, + .exp =3D b->exp, + .frac_hi =3D b->frac, + }; =20 - if (is_nan(a->cls)) { - parts128_return_nan(a, s); - } - if (a->cls =3D=3D float_class_denormal) { + switch (r.cls) { + case float_class_qnan: + case float_class_snan: + parts128_return_nan(&r, s); + break; + case float_class_denormal: float_raise(float_flag_input_denormal_used, s); + break; + default: + break; } + return r; } =20 float8_e4m3 float4_e2m1_to_float8_e4m3(float4_e2m1 a, float_status *s) @@ -2791,18 +2798,16 @@ float64 float128_to_float64(float128 a, float_statu= s *s) float128 float32_to_float128(float32 a, float_status *s) { FloatParts64 p64 =3D float32_unpack_canonical(a, s); - FloatParts128 p128; + FloatParts128 p128 =3D parts64_to_parts128(&p64, s); =20 - parts_float_to_float_widen(&p128, &p64, s); return float128_round_pack_canonical(&p128, s); } =20 float128 float64_to_float128(float64 a, float_status *s) { FloatParts64 p64 =3D float64_unpack_canonical(a, s); - FloatParts128 p128; + FloatParts128 p128 =3D parts64_to_parts128(&p64, s); =20 - parts_float_to_float_widen(&p128, &p64, s); return float128_round_pack_canonical(&p128, s); } =20 @@ -2847,18 +2852,16 @@ float128 floatx80_to_float128(floatx80 a, float_sta= tus *s) floatx80 float32_to_floatx80(float32 a, float_status *s) { FloatParts64 p64 =3D float32_unpack_canonical(a, s); - FloatParts128 p128; + FloatParts128 p128 =3D parts64_to_parts128(&p64, s); =20 - parts_float_to_float_widen(&p128, &p64, s); return floatx80_round_pack_canonical(&p128, s); } =20 floatx80 float64_to_floatx80(float64 a, float_status *s) { FloatParts64 p64 =3D float64_unpack_canonical(a, s); - FloatParts128 p128; + FloatParts128 p128 =3D parts64_to_parts128(&p64, s); =20 - parts_float_to_float_widen(&p128, &p64, s); return floatx80_round_pack_canonical(&p128, s); } =20 --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211716; cv=none; d=zohomail.com; s=zohoarc; b=kb/cECE/m9bFAj6g3z9N09/PAeXp3LkVKelGvq6d5vNQ3Qcwz9SNhu/4KYNqNlyaVGYSkLkQ/FXlg+tgtHUeZJIr96UFLeTgqkNJM8tK9ldqkac2e6dMcP12v5WXY3R+IvRLKAUpoWR4pc0VMlS7zGRAg0qgDM/ZGhihg/B4MvA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211716; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ghHQqqdOPpQtj4mRafd8WgiwBSS9PBadyD33IANm2ps=; b=TRJQOT6EECZ9D5ABKDWSt+dlc2shTHhnuD2C3+hx3qc0zi+jnFMfkODtt5pCitXYM3xhEAwC8tQIFpfagvceAA6pkWEPxQlI1wmu2RPeBwxRLfstePxuGxuwYcrckFFUW98psZ4g8nEbKpHKOIHgnsn7GWtzEiFd7Rq2iWS65PM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211716891801.8661942321521; Sun, 26 Apr 2026 06:55:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGznv-0005qk-HQ; Sun, 26 Apr 2026 09:45:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznc-0005dd-DE for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:38 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznZ-0001Lx-60 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:27 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2ab46931cf1so70770295ad.0 for ; Sun, 26 Apr 2026 06:45:24 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211123; x=1777815923; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ghHQqqdOPpQtj4mRafd8WgiwBSS9PBadyD33IANm2ps=; b=JT6jexr7hD5wgc/xRMesK1A1eZSIW7cvElDSj0Z6AdLmZVia99+ttF4bSeEb88hORV kX+CT7aACdbeSLfA2weZxJcR3Qip6UiX0pJJCu9QRoMBbGgFN2/EtQhJaToMlDvRFbps vT1Iv0TKApzZwOs6U6j1Pv+V6cleetDSZNy8j/uxrdAJqRd96pa1h2LvDs1CE/KYTLOx KAfpihx3WGwn9cqKaDD0ElA/UqGNThKldngID/ALpRboEyTE+P7P44k9ZxkgT+Yrh7mW olk7ukqORepGn25wTjJ5MGFb8YdsdgaT906LCjJ8obiVX/ofC3FO3sW+KO5kvLWClvtR VzcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211123; x=1777815923; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ghHQqqdOPpQtj4mRafd8WgiwBSS9PBadyD33IANm2ps=; b=DiBfjldmM9geZGUroxU8ckKvWhuCmgtsjFrTx1m1snU1WXcRlNHXI0nl7g35wxDqsj gCcEPBSjtSAQQhMrOpQUwwr6zAVydJZlLL4sghkW7ViQMJNuP6fvuuupToVE4dVqdAJd BFaf1FaQL31l+SEG2zTK4Zv/GvZ3N893ZMZOb8ZGRtbf7djNCsZ3qTuUwo+kC4Xu05de qqPlVf3vf/r9GT74ffuLM6A32Kpe2pfAj3xKwT2cWUGBGeRLlnbfu8cLaPJ3vxFMmlGY Emxq34h7LT9SI8L+MN8B/Xunk02/uiDKH/5oYSV4Ax52hnrm59l8p/UZ2ABzfzWj9n1+ Su8g== X-Gm-Message-State: AOJu0Yz2Azwe9QHzKfU4NRNmQAf45tuyitnx6EITtRX9STzDWb7SLDOY MyM2u/sAs28mJ7QH/EMlJnsSLfrVjBYlDntv86n+0S6IdhLGxTOz7DG571RHmzXzLA+ggPJdp1R 9UHCKDPo= X-Gm-Gg: AeBDievSc81UTHTRx2DQQw9Jm3O9hIfcXcIkOdPfCt1tPjIzN9FJx3wacVz9Sd5ZdtC vRZzxEotb/ZH0uO+XbtTaC1fZQMTetB3AcRjJZdZMwA8fzhfcIhXltU2hV3PgKDa54Vr6I2hpw3 yKyp47y3+ooeF04DrAoDnz6AGatXOU03+cPn0pk+M4OSu19xqfxdiDntrrR6p2IXvsEKf0mtXFf Ss8NZGM1Qfj6kuiOZm5lWb14Tx6rAYPcN4EXNYeAURMfuIO9d+gfj43S1H5eHW1BqnZUj8wB06Q OVGxECJZJkQmSmm0DB+3u0bV6NSXbx7DR9wK9bKPLQ064CpFQXwgIZG+Cw/4ZJ/gk9CoYQpgMtU 8raGqYB2xUB/oGSFcGYYLfihsvaQtD0MbeWCxkjBRqCg2ZG/SZSVL8EJPluAI7l3N6q+N53Rt8m +LPbjpIXTZQLVT2u5Z55IVJ9piXbj6+PaxyCdqV83wgdi6+SjSQ+g= X-Received: by 2002:a17:903:b4f:b0:2b0:be79:e521 with SMTP id d9443c01a7336-2b5f9edef17mr338946705ad.26.1777211123431; Sun, 26 Apr 2026 06:45:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 49/84] fpu: Inline float8_e4m3_pack_raw to single caller Date: Sun, 26 Apr 2026 23:39:26 +1000 Message-ID: <20260426134002.865628-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211718612158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 5d58caf5ea..18f2ca900f 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -673,11 +673,6 @@ static uint64_t pack_raw64(const FloatParts64 *p, cons= t FloatFmt *fmt) return ret; } =20 -static float8_e4m3 QEMU_FLATTEN float8_e4m3_pack_raw(const FloatParts64 *p) -{ - return pack_raw64(p, &float8_e4m3_params); -} - static float8_e5m2 QEMU_FLATTEN float8_e5m2_pack_raw(const FloatParts64 *p) { return pack_raw64(p, &float8_e5m2_params); @@ -1474,7 +1469,7 @@ static float8_e4m3 float8_e4m3_round_pack_canonical(F= loatParts64 *p, bool saturate) { parts64_uncanon(p, s, &float8_e4m3_params, saturate); - return float8_e4m3_pack_raw(p); + return pack_raw64(p, &float8_e4m3_params); } =20 static float8_e5m2 float8_e5m2_round_pack_canonical(FloatParts64 *p, --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211712; cv=none; d=zohomail.com; s=zohoarc; b=iPPV3PGklHBKFyj+VOaXV3Ja8N+LXKv0OfJGaUg7/v23p9v8Yr7gWfCRAVKBlvtrJMrEki+iGMZEI5a+xTdkSO5PQtBTrBYVF59FRHTYTxNO6UgRSi7glzpaUcLbOEV4cNckygdpJeJ+l0DNobhaoLAAXO4+p9yEmqLPRdNaoAU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211712; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=aGWxvB5DOoCsVkn5ow4oJonJhUS77zZ22UYKKqluXkw=; b=BvrgEe/0XN6aRqQk0a3rv4G/5CLq2RlV7i4eCWO3cSnNvVyVZxB2xU71TIsl/BZ+3Mhwp0yGMjfi6McipFE9LyxLMH5F+uFMIt61JE2mW5su+IPK1c4XS1MsvUhokzlClPyQCrQggerXE9r11OVdVMtRqmC804AutUnPxylJ/GM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211712543380.8485018180347; Sun, 26 Apr 2026 06:55:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzod-0006B6-DO; Sun, 26 Apr 2026 09:46:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznd-0005df-Jf for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:38 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznc-0001Me-40 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:29 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2b23fcf90b2so89127375ad.3 for ; Sun, 26 Apr 2026 06:45:27 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211126; x=1777815926; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aGWxvB5DOoCsVkn5ow4oJonJhUS77zZ22UYKKqluXkw=; b=lvaTl+rLp3jlNARzx/cMl2dUovAXsyYxMx0M0zBLxHTH4hdUKzP34Z72Vu0AzwTt1q nJ+pAyrA3YtDZ4Pl3otL1E/yuXnDO2elzgG3OjTLAXbnr7jxNPHA7NrYjph8XsWtrEoc DD3rLwFxqcWtAPunolVD6pIHBUnzDSxJQ3aLe3ED1yLDt5xNGOjP5y640fllWFn8PIhe /59BH0QZzQiJb24BI/uAjWE9fT4sxl1P1boAWzjj/BIIWmyInSV1xHn7LCyv8WJjXxx8 mYHMgcV/BiVd4x3cG2MBZdJ/PIVeeoHyQhwsHUsJsYxgPxym6l3svZbLM6kdB7uevk5h vJmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211126; x=1777815926; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=aGWxvB5DOoCsVkn5ow4oJonJhUS77zZ22UYKKqluXkw=; b=S8VQ+A4HltChh1Ws2HrUOJgEe9wOQPCSd6N0PYbGImc++mj7bBwwBZ9s76prpzKj2w KEOlIY878YLUHz+sPSm4HuosLU+m7tPljQcYVYwzP0HPHB1e+0ddO748rgs1VXzGAcRh HgGAZ9jbYMxeadZwPWlDKAsq5jBD9tyR74dtPuvFY71UT7XmFU808hsXWD/QqtWET0sP Aen/V0F31txWpDqDC6NRDP3jiMUDdYB6mK2KsDSiAeImEEhYt5r1xkjzkXZJvZMQR5Q1 kts8yjZIaQD9heUThpkVRnEpYMX88XlWrrUBhxDbz7+hDwse5AOcZwJWqvfCVlB2POg0 2aLA== X-Gm-Message-State: AOJu0YzzuNF+nNIvZTrwiyEAVnopjRF++JxgtF/Kdb7biUrI9SXwRL95 3PBzHK4pnD1v9ETP5yhUH0tskrLssbi7gxvmLXhPLZDAIOFahdRnINAcNqQVmHI5XshF1iXQz63 B6gKipPI= X-Gm-Gg: AeBDiesFJ2evf+d1tJlw3NllNwh1YVZWqszUjH5fxD60hlMBoZ2teEOr6mR073mq36E qLp0ckMqKZaj29e5E3jWHTr9O5aFh/vadWKHrCxHjbTSHnZJ8v0kKxzDEkeOGg5Yak0YeVSeFJB XsaHhIrBflVWC+nqbeIm7JIQEb1R+pr6uhOGhXbNn9jzIVvYcnIq3fOg1G057kYMLJdRIZgGsDa V0KK2+Y5o6GJH/GyAAjlILUQDf40uFif03LWnkoAMp0pZv9SEAAAZ7rbxuOF638AbTu4kzqepJr gwyzggQ+ElIovPbEJvb57+T2VvI4pqhK3A+RlMNqlpBMxVJwKO9MISDX6vv1goiSfxbcnzoFMuH HZN7Eb9NdK5SgcY32e8TtbPsfu6wxill4U0xQmtQmaNdsIY0ryJTzmCAFWuMUrYPw4xJL5neP2X ZCtFZft4kW5EQnmMFcWjWly+Jcvz8/HiQ8l+9nZgMI X-Received: by 2002:a17:902:f08d:b0:2b2:4ded:954e with SMTP id d9443c01a7336-2b5f9f2f6ebmr270942755ad.24.1777211126497; Sun, 26 Apr 2026 06:45:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 50/84] fpu: Inline float8_e5m2_pack_raw into single caller Date: Sun, 26 Apr 2026 23:39:27 +1000 Message-ID: <20260426134002.865628-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211714642154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 18f2ca900f..5269e5f977 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -673,11 +673,6 @@ static uint64_t pack_raw64(const FloatParts64 *p, cons= t FloatFmt *fmt) return ret; } =20 -static float8_e5m2 QEMU_FLATTEN float8_e5m2_pack_raw(const FloatParts64 *p) -{ - return pack_raw64(p, &float8_e5m2_params); -} - static float16 QEMU_FLATTEN float16_pack_raw(const FloatParts64 *p) { return make_float16(pack_raw64(p, &float16_params)); @@ -1477,7 +1472,7 @@ static float8_e5m2 float8_e5m2_round_pack_canonical(F= loatParts64 *p, bool saturate) { parts64_uncanon(p, s, &float8_e5m2_params, saturate); - return float8_e5m2_pack_raw(p); + return pack_raw64(p, &float8_e5m2_params); } =20 static float16 float16a_round_pack_canonical(FloatParts64 *p, --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211233; cv=none; d=zohomail.com; s=zohoarc; b=ZDo56Fopd+f3aJW7kyElq8s/MMxDUlxP1cniQ5CvkR7d7NyN0SpcuGt3pOGiddE3LIb0CoMd6mWJAhFgXR56vR1Yh1M9pKxBwlLhy9gRMeYszemSn0C11xmQzSuRcUbHnwc/nCZFxwz3hRXkWAfW5tNh3qoslVJii857KFo7a4w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211233; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=R6nFkQ6KIlNZ8kekfBTy8MBT9tZYGdlcL2ADdOiZc9I=; b=doCxfuLEOv5xURRya1npyq6c/QwEVxYW60Qa0DtsAVyMp+ybtOxFtn87kHHDfiQT9kpmHCWk48ZGwI0MszB3/8NYYifAGS+pYNd2VJtwWuS2XCUhGJeVl5RbRgxGzrCXLhrQlIxplb5/p6yfrbiVIqJRaxL1jc8sdhzHvJhtPjw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211232915377.40659168535853; Sun, 26 Apr 2026 06:47:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzol-0006LN-CS; Sun, 26 Apr 2026 09:46:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznj-0005e6-Sh for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:38 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzne-0001NY-BS for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:33 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b0afa0210bso42655815ad.2 for ; Sun, 26 Apr 2026 06:45:29 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211129; x=1777815929; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=R6nFkQ6KIlNZ8kekfBTy8MBT9tZYGdlcL2ADdOiZc9I=; b=wR5nZyG+zXlCj4BgeRgYoB5pE8+GzvC4wMS0Y/HPiC6x5mM86A1rCvDgvKkErH23dP bsY1w/gvSzsaB4cLJgVkLsE9EGBpBNiJQOiwdPOsgHHQrrVYPCpNGz+LL1asZi4hvNhD U/FBTEAWUEfg4hLhpch1CC7RiJ02FQYv4ZRg3oK4cLkQq+0RbtxKq24rukmyIxvGxpXO CCaePIiEquLbg9B4eo8bcSdlDrsjP/XHWDzlBPG1VCjN6O0RMGyQkRR0Pri44B1g8pnV DkkL+960Ao4yBLT5l87Dv75bm65xTfSxAvi1vKZTxWZ4UiQ1yWFt7vfc7OFbfbluhD2G 2bCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211129; x=1777815929; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=R6nFkQ6KIlNZ8kekfBTy8MBT9tZYGdlcL2ADdOiZc9I=; b=XYKp9MQ5/AqItjg+2Po0JxYkGO66+hKyGY6Uf9aV91crAbFp2g5yzZsvCcVK5SsP1f p2Hwk45a8EMZoZ8UMm+frXGN9mNWXw9VwxlPJm3nZ+ur2M6K2zh3Hs6AXmS2C7ES/nkM iANC4VzPF4xsWJQ6vqSRd+qQJxP+kFgzNZABCmoxo6iavplrB1+LCvKKrLrxIkK/0phu vqNq0TbSfG7CFwJYBvx62/IHn+ZAP6PZ6RDALSj6TRM8//tcE8kSPZIvbP8KAVdeZKEW yCmWgOqNMFbB9wRgJmKRWrRpBY6avFY9pg1F1R5tt6QCY7v/HtCW1NZ/g43nVFedhzkK p5tQ== X-Gm-Message-State: AOJu0Yz8cmRIGmUJK5gcqOi9YarNoGHWC4hfq6aIVCkGPFJCJp2eEQpn nvMGh9tOy3En7x6Ph1UpUZKghHqWvv/h1AQKFlyfIFy9m5+CVxjKalWL0xzxJBu0ryKGQhd0VuM mB2W9RKI= X-Gm-Gg: AeBDiesvrZ5WVMzcd5MDCih8LeS/7lzIOg4Ts08AWGrIi6/aeE/QL1AcENApBg9Gzsa qSZrZYEazwmgcE5NTCkonX2BD6SNNMlnXeYTJilKwKv+wkwuhgrXN/MybcitYU6olqUJD1u19si jMDpksOziZro2NEiNbAbHffHUFtxdz2VE/nLei7DyGt6Ek4LJPe0hijqZYki5aG/N0SfXjQ99oW oiRF7AftR5nHjWHSDL0p3U/5RnNqfUgzPWdIzpPM4vQHTxgom2rTtc5uKpk0Eo1wx3Ls4TKbM01 Ik3ndkUqSSZ9xePdE0KAwRn2MHeue7FGoG6NWBL47jBGPuDtuD4vAJ4wsW05dEr2sFYRYwx2Qne CtjEi5m1VPJsSWDTjfR+lxFGPfxoXIjJ/rvRPpqAMxIn0HYDtYaC4Vt2419+7C26Uw4qa9+0EBY Ywd4+nbzwx/4aKBRR7g7NjkLphorIVW5O2UfcP1Fn1 X-Received: by 2002:a17:903:3805:b0:2b0:6e6a:8504 with SMTP id d9443c01a7336-2b5f9f539ccmr421099585ad.27.1777211128956; Sun, 26 Apr 2026 06:45:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 51/84] fpu: Inline float16_pack_raw into callers Date: Sun, 26 Apr 2026 23:39:28 +1000 Message-ID: <20260426134002.865628-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211234958158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- fpu/softfloat.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 5269e5f977..8cfe7f8f4b 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -673,11 +673,6 @@ static uint64_t pack_raw64(const FloatParts64 *p, cons= t FloatFmt *fmt) return ret; } =20 -static float16 QEMU_FLATTEN float16_pack_raw(const FloatParts64 *p) -{ - return make_float16(pack_raw64(p, &float16_params)); -} - static bfloat16 QEMU_FLATTEN bfloat16_pack_raw(const FloatParts64 *p) { return pack_raw64(p, &bfloat16_params); @@ -1480,7 +1475,7 @@ static float16 float16a_round_pack_canonical(FloatPar= ts64 *p, const FloatFmt *params) { parts64_uncanon(p, s, params, false); - return float16_pack_raw(p); + return pack_raw64(p, &float16_params); } =20 static float16 float16_round_pack_canonical(FloatParts64 *p, @@ -2022,7 +2017,7 @@ float16_muladd_scalbn(float16 a, float16 b, float16 c, if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } - return float16_pack_raw(pr); + return pack_raw64(pr, &float16_params); } =20 float16 float16_muladd(float16 a, float16 b, float16 c, @@ -4722,7 +4717,7 @@ float16 float16_default_nan(float_status *status) =20 parts64_default_nan(&p, status); p.frac >>=3D float16_params.frac_shift; - return float16_pack_raw(&p); + return pack_raw64(&p, &float16_params); } =20 float32 float32_default_nan(float_status *status) @@ -4772,7 +4767,7 @@ float16 float16_silence_nan(float16 a, float_status *= status) p.frac <<=3D float16_params.frac_shift; parts64_silence_nan(&p, status); p.frac >>=3D float16_params.frac_shift; - return float16_pack_raw(&p); + return pack_raw64(&p, &float16_params); } =20 float32 float32_silence_nan(float32 a, float_status *status) --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211506; cv=none; d=zohomail.com; s=zohoarc; b=B8XTVyD7qb0VtwLnK2XiPxOEoYe9Gex4TGbqXJDAsqK1FE7vJx0s3de1KNaz6XR6yPSmblPYjng4yoIeuhlI+HUyfqiwrXmfxSv376G6jeK7N9BPctOW6c6ecd4iIvTDxL8X+/96X7Ss2TF6SK9UcRzt5UEwaO4J4OC+mokLnUI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211506; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IGDYPjHTYCXHRscWp+hH1FEaFJxCcy/ciGEVQSmwAsc=; b=kl/9rLbQQuRi5eZyal8H6yY5Upo7DViLHj6EcVm4aGTkMBo1aQVtiOyUljYP8eh4GVbwfnMWSi8lngHQAO9h6BmaFbBHwmPP/A0k/r5hub2i0h48nVXrPXgEShW8QJMZ6YiOKcOuKpBtseYjQtjkdmIvWqxQKnJGyc5s/xcL9rI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211506351125.16440766449887; Sun, 26 Apr 2026 06:51:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzor-0006Vt-Sg; Sun, 26 Apr 2026 09:46:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznn-0005gI-03 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:41 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznj-0001OQ-Lg for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:38 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2ad21f437eeso60074925ad.0 for ; Sun, 26 Apr 2026 06:45:33 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211133; x=1777815933; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IGDYPjHTYCXHRscWp+hH1FEaFJxCcy/ciGEVQSmwAsc=; b=LNzLu8m23kkss7PP8sVAcuxJjI+PD2BrtsWa1dlEsX8P4pVmy6T/+1rQ7OdPHh+zMH D4hYKn7CmowCSOmexrJM0sYBOSiL8aCXmyfCUjBy6cH+CRC1rgK7ViyfCCe9XLaSO06R BriJ1R9gncxQapnBTOEP/D2fuzG8Xl9QHqkbhiO3icgKwxv26VfQC8tXWgtNxb+5y+dQ m7GeblqDdwmleOolUIAJoApqu2r1xdyp46CfWuGnJGTP2xJ+sN2VbEy26ojE6hYuMaSP IeCoHP4gF5dD2kzZXkaS6cNmAPfzjTuyrMOtmGIV4QBHb9bD+aUHiRg5J8WMK/gnbIde 11kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211133; x=1777815933; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IGDYPjHTYCXHRscWp+hH1FEaFJxCcy/ciGEVQSmwAsc=; b=UWu+g2SWEZ1hVjBu5ha6g0Pzv0k8vzd9B6ZXWeJJMHzMcjWBQupoklJnKH/cSCiAHB TZIJHdWiS/jOQSkniBKwCWHeWwJ1zpHGTECfrfVESR1McyOch79Hk3pKO2pxJKCx6KEM h6JV9mf0uTF3MUsNLmJsDjSlnwkjotkFt/MJibphn2TVYDRViG3ASlQyN5IeJixEdMvi 2vfy8/ZZ9XLAPC7qYNZorufmkbTMTLHMQ9gRUOXTimoagAuVtF06vAP/tQWBvuyii9Yi V0QZPHbgcwkRz3feyEKI5f/YjX3H1+7ElYNql4rwKjMQ+W1ElR4pKBTTV+bnp6JSQso1 /b2w== X-Gm-Message-State: AOJu0YwAThepAagQbaoyHvvGiUKKDbs8eo4krYUdcFaJPqe5L2gM/bqC fMzPkp08Pt3Kf9Z0X2oON4m6cT5JBWTgdMD45Oz8BusDIsR7Mj4UmAAaog+DdVeZ+ZUJ0MEi0yy fUKJXK3I= X-Gm-Gg: AeBDiesHLQDwVO6fWq2yTykpCBfUDmnHH5KX5+bj4vsteddlo6eZpAyS45gmB5yD1GN SJmLrR2e/KaYi4J8FRIDE3YenMhy2gKhteD0iDa1N2ejqL55UOtvFMm+b4/6NrhUa90jTiddabu JO2hqPHfbygFJKmQfv9uZ2Cqbm1fSSRg6aH5l/LS869/fZqFrNgWsNyI/de0z8S5AYqrnjYqF/v KjWfcDu1GgCv90rOWg1NP+4ue8A4eEb1n/25zZmKpDwAlDQLJZxGnvngy4xIMEtdqgE4h8a4x9z s32HUipbwRyxrODeRATcaWbtQXpS4AF7VTDmw6h+ywzeeec8X490lNpXbXHy9ZwDlnAkiwBawwT foyV23uZPWAvJRD/Jy4Po32RYjd5wjPz0IUJpFnLX8+KsGf83Y1gfZv/fybgN52JITNlB3HtkuO kydV42mWT6mg9kjllZIFsi3Z3bDmzTvSHaJO4OM6h6 X-Received: by 2002:a17:903:1110:b0:2b4:636b:dc4f with SMTP id d9443c01a7336-2b5f9e950a0mr337443645ad.15.1777211131932; Sun, 26 Apr 2026 06:45:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 52/84] fpu: Inline bfloat16_pack_raw into callers Date: Sun, 26 Apr 2026 23:39:29 +1000 Message-ID: <20260426134002.865628-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211507729154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- fpu/softfloat.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 8cfe7f8f4b..6d5125eb1b 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -673,11 +673,6 @@ static uint64_t pack_raw64(const FloatParts64 *p, cons= t FloatFmt *fmt) return ret; } =20 -static bfloat16 QEMU_FLATTEN bfloat16_pack_raw(const FloatParts64 *p) -{ - return pack_raw64(p, &bfloat16_params); -} - static float32 QEMU_FLATTEN float32_pack_raw(const FloatParts64 *p) { return make_float32(pack_raw64(p, &float32_params)); @@ -1488,7 +1483,7 @@ static bfloat16 bfloat16_round_pack_canonical(FloatPa= rts64 *p, float_status *s) { parts64_uncanon(p, s, &bfloat16_params, false); - return bfloat16_pack_raw(p); + return pack_raw64(p, &bfloat16_params); } =20 static FloatParts64 float32_unpack_canonical(float32 f, float_status *s) @@ -2230,7 +2225,7 @@ bfloat16 QEMU_FLATTEN bfloat16_muladd(bfloat16 a, bfl= oat16 b, bfloat16 c, if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } - return bfloat16_pack_raw(pr); + return pack_raw64(pr, &bfloat16_params); } =20 float128 QEMU_FLATTEN float128_muladd(float128 a, float128 b, float128 c, @@ -4753,7 +4748,7 @@ bfloat16 bfloat16_default_nan(float_status *status) =20 parts64_default_nan(&p, status); p.frac >>=3D bfloat16_params.frac_shift; - return bfloat16_pack_raw(&p); + return pack_raw64(&p, &bfloat16_params); } =20 /*------------------------------------------------------------------------= ---- @@ -4797,7 +4792,7 @@ bfloat16 bfloat16_silence_nan(bfloat16 a, float_statu= s *status) p.frac <<=3D bfloat16_params.frac_shift; parts64_silence_nan(&p, status); p.frac >>=3D bfloat16_params.frac_shift; - return bfloat16_pack_raw(&p); + return pack_raw64(&p, &bfloat16_params); } =20 float128 float128_silence_nan(float128 a, float_status *status) --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211872; cv=none; d=zohomail.com; s=zohoarc; b=Dd0c3k1Q/4/DauAXk900PYvHsmpTKNawy5PINrENm/RzWAFU2iMbDoePywhMLuyNSHcweMwHCk8lIbRXdEOHJqHd0T4d4vR6eSPBrvJ8AE8FAODQG4/qOA6D7aSvRMxXZ2TzQgEGD1nR6QC7X08GXjczp/ogj+axUwSxtaIpo6g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211872; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4Mxa4m32oeXlXCbYEih/Wgv7PsGE1aRsWYB+Y9zn5Ik=; b=Bdm8w0U8hwyjf5syTA10HwdWiHiau4ZajPpvFPv5KJnz57zS3os1Oz+gQPyP1ux8VVyA5enCan9mimQ4HT2+Ha1495Ky2m1sOgCAKd1npKLUktg4NGyipq375T4GXPuhk/osXGGv7iq24kU7MFQdPouUR/14hL8FwJ2Qv0DzA6E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211872292953.9062861731319; Sun, 26 Apr 2026 06:57:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpP-0007ML-Ac; Sun, 26 Apr 2026 09:47:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzno-0005iW-Co for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:41 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznk-0001P9-He for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:39 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2ab077e3f32so39837375ad.3 for ; Sun, 26 Apr 2026 06:45:36 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211135; x=1777815935; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4Mxa4m32oeXlXCbYEih/Wgv7PsGE1aRsWYB+Y9zn5Ik=; b=Loc8+b9VCzYzhT1T4NdsnUfNmALvNn+2s/xfEsAiH58WNWA3k9Z7EyoQl3QA0twF78 gL6WqBMfYHKqJEH9T3HXqAwMohpGUGLyRiGEwOiTl3KmhlE0Ir6aJwAUyfFh+VXV7lSF aFY79KWuMA9Yt9Hu/L6oeEZ3aYY50/VkfkUe3wB9ZQHH/cC7eTMH11l3+GJhZs/meR49 AdZ3uMaK0bypo2us/PoUEC8JHjPWf2h9/94vBmCzZQZxWcU2WddY2AKg9LGd+Rx9dcmX 50800QE++Wd5ckA634H/SUSBMOndS8B/BA4W/7C0UjmKWHk7p9IjtA6zpKfO+j9H73nF Tg7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211135; x=1777815935; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=4Mxa4m32oeXlXCbYEih/Wgv7PsGE1aRsWYB+Y9zn5Ik=; b=W10Ur34T0TEj0Il0VkdBAxBurdaa5LhtE7uwmUrKQJnYh+R9vSnAKzSKH5RXeX1Pzf v880X20jUmoNylOfgIE89MBLezoqyWcgAY3/JD+yrfPGWv7t/1O1sLoq2FAfr6y7KRfc YcDDGOluwiwPRyyZK187DS82Aussx525A6iv2aVdv7OtW8K5D47Dhcr8PYsNTFox0sRK PskPe4LsKRzsWNfW6zyMAYMxSPXQEdPhdRtXY/8UoY4HMCFzmpafJDnlJpGVgWWKPaVB D/sMKXz0p0AD7mAq20ODt7DlWwugZi43zzNHbows4jEcrYaJALjYzKOy9Lv5fop6ipZF aV5g== X-Gm-Message-State: AOJu0Yx0/fsd6r+lQLqFArhvev64nhM/iZK7xd6GXMFYz0yHZZv7nYeA ltqThBGysgy4Z5pwRIzlO+zKluahMLjECDt19pxMagrgGoUR8azqinBf4tqv0iWJlxjifSvOZwG SpHTqiMg= X-Gm-Gg: AeBDiev08RhIbBA28JVsTnTMnpMIZSgVBVciLgDZ5i25ywmkm7TmkfLjGgYRkqwBwEF sodSlMPg2+uioyrSyftTcDntyhpTHoQhhkWbSLU51DttxnxTPWxbwsEmXInPLt6tPAbfVe0c6aQ xX8YIYmun6jOMUSov6GDV4ml11bawRwW90jLnEAxjpAby/TsttyIocsx14sOtl+ZB1Lj8l2HgeF WEQCje7CRpNTLGsBDN7u5MhAliipcIJ7YT83Xj1CKj6VCKJNl2vzoY2kbXT+AwQyvlFQpW2YPkx s6jYaspOXIA3pWd6oiF/8bsTCZkTdfEmvn8rzTolmhN4Kgh4xwPJAiySxc7hgsXGxhtLSJPAP9O qS3ELN6pTW8UX/m85RtcdxKSzJshxzMAod6xPEgHGm5Do4cltil19wCm19YrrmvczYXgOgLGj9J WKHB+PtgMk9VE09vmEk+01ZaTI1DAbRTv2sdZPc6sK X-Received: by 2002:a17:902:6ac4:b0:2b2:49a7:a5d0 with SMTP id d9443c01a7336-2b5f9ea2e11mr308008635ad.11.1777211134649; Sun, 26 Apr 2026 06:45:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 53/84] fpu: Inline float32_pack_raw into callers Date: Sun, 26 Apr 2026 23:39:30 +1000 Message-ID: <20260426134002.865628-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211873004158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- fpu/softfloat.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 6d5125eb1b..d1acf383e9 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -673,11 +673,6 @@ static uint64_t pack_raw64(const FloatParts64 *p, cons= t FloatFmt *fmt) return ret; } =20 -static float32 QEMU_FLATTEN float32_pack_raw(const FloatParts64 *p) -{ - return make_float32(pack_raw64(p, &float32_params)); -} - static float64 QEMU_FLATTEN float64_pack_raw(const FloatParts64 *p) { return make_float64(pack_raw64(p, &float64_params)); @@ -1497,7 +1492,7 @@ static float32 float32_round_pack_canonical(FloatPart= s64 *p, float_status *s) { parts64_uncanon(p, s, &float32_params, false); - return float32_pack_raw(p); + return pack_raw64(p, &float32_params); } =20 static FloatParts64 float64_unpack_canonical(float64 f, float_status *s) @@ -2035,7 +2030,7 @@ float32_muladd_scalbn(float32 a, float32 b, float32 c, if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } - return float32_pack_raw(pr); + return pack_raw64(pr, &float32_params); } =20 float64 QEMU_SOFTFLOAT_ATTR @@ -4721,7 +4716,7 @@ float32 float32_default_nan(float_status *status) =20 parts64_default_nan(&p, status); p.frac >>=3D float32_params.frac_shift; - return float32_pack_raw(&p); + return pack_raw64(&p, &float32_params); } =20 float64 float64_default_nan(float_status *status) @@ -4772,7 +4767,7 @@ float32 float32_silence_nan(float32 a, float_status *= status) p.frac <<=3D float32_params.frac_shift; parts64_silence_nan(&p, status); p.frac >>=3D float32_params.frac_shift; - return float32_pack_raw(&p); + return pack_raw64(&p, &float32_params); } =20 float64 float64_silence_nan(float64 a, float_status *status) --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211319; cv=none; d=zohomail.com; s=zohoarc; b=WPbc/+7KGVH2wtYD3/G0T2ldNgXtj13TNLd6J8ts6fRvFGz0eZn48bfz0pHQTrs7J9yf/+Ym0oV8qq03iBeoC1CcMPOYSZZAp5rXgbHFkHfxXjdnXSslkiZG/uQ3R/hE+mEcI1a7Jewd6iohfHPg2bDFYN3L5Q7KJF/mSkrbGxw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211319; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=L/ftQiotywHoX9E8XzX0XwrkoezWs1gu+rPw1xNgooc=; b=liGoeAY/mI23O2u9YusZUOH/N/dOlC1naqyirwzl60UV7JZrna3eUHJ5J9GkfvivbTCTLKDehCDFK8vrSlxklV91jkN6H+WUKqyR5N9U5Nt8UTYMlmumBapvqbASvTRoRzpckGS57s1GWkBXg/buCtZgW8S51t23n35i6jeV+cs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211319240160.38540829528256; Sun, 26 Apr 2026 06:48:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzox-0006dT-Vd; Sun, 26 Apr 2026 09:47:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznr-0005ms-CI for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:43 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznm-0001Q2-NE for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:42 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2adbfab4501so44255705ad.2 for ; Sun, 26 Apr 2026 06:45:38 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211137; x=1777815937; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=L/ftQiotywHoX9E8XzX0XwrkoezWs1gu+rPw1xNgooc=; b=zp/geZ44w0T0bPk8QitWMKyLuRH9rE6gOLXL6hECF/TlLapTBcHAkdjjvCp2jMZY6H 3eRiRC45k1duzDufustSewh+smvRj9c7JCDY34fu8qquyYXPnm3zAP09K95N6M90A/F0 JGxk8vBqs+umyQRIDxTUgoDpxgG5bAauAKV9WSm7TNIwryvqG7dZGG+O3l1LuXZqlUI6 /gTM3zw82mucJEsDtT2BbWuhsch7i8mT+hyfcG67+kTZM078xg3PMAz2ZLxBDfX5s9lw eH8RouU2isd+4v7PNlsae2SRHfwXOYu/LBfg32N43zBzK/y8TLwGv/BXjEeFXsTq5BOi iKYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211137; x=1777815937; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=L/ftQiotywHoX9E8XzX0XwrkoezWs1gu+rPw1xNgooc=; b=sQmzZsrg2i27Y2CaBlRKUW0jyWDrMWU2ASf+L3xGHITdkU8SIB045mUa+Hdcb/acUl ReIwluwSclAWdnEiXvxzMdpIz9gpVXWQ5ON9Ol33hnr8okMtkRRx2cmGZOS2Zw3o+wLG iYGKuW3+Cvz7VI1aINDdSU0x6zLQX1+eSxTejZ2jf59rhorADZjzlUaMh/vg3oVfTX4D qk3C8d7FaVZPqwcb6BMVItAqtGpd/O2ixTbwyT9iECRHVeXrYPX79d7TyJKDqheVr/rX HNh++EKbiHxJczX0Eg7dl+e+RLkt0gzO5PsQg3fQDAKaco3Ozk+VkEqeRT4/1ZL5MDXo stfA== X-Gm-Message-State: AOJu0YxIQ04H8qeZrnT2FZdomHfsiSmDpSLTvHzR3GWX94qfR1wbF07/ 7aeKY/Zv/Izv79Xbg6+mneSZVN/7sEwvRb6s19q4dLo0M9ZobmJumAAo8G/Ugkfd4rrmmkF9WKE 8qSbOLEc= X-Gm-Gg: AeBDievUAK6Pgvwf+dQMJlt38wo9jWt2v05Cp3VdWIwZN0LjBBAVv5VU+pwVr3jAxUo iqKChMnFhewT1hvFlFxyvy9GXn6/fz7RPKdwckO71Y6wigEib9EQilY8vbbRztulOK5IhUrSMFZ 7UbcJVZ+XuagNE9k8qB4ICjzUY/tg6ltctTrErREG2g1cEWnbnkWn7xb0470vXmfLc2H7kz8cIk aXZSBM7QEXkFwhDs0EbNlw+BRAb6e+MvH8FzkriUeITzVhN+tn4fF31/0A5UX4CpKdQ1TnXbGHP GVMeEBkyW2sqU8LPK2zEFGcY2XsOTg6u1hzzcCLAoy1WgcIt/vmLNlUduE7e5ohVPY7Coow7wYD 3o6WEqfKt/HMyg58UL7fBm8OKY9ftdLXitdkRYQjt+XgPRmx84Zs1lhv7bxN6NudRQStaZm0XYm LGJ+OiWqBcUAUdrBiMWzW919ohZbCu9/3AHsJatMx0 X-Received: by 2002:a17:902:74c2:b0:2b0:6d33:e7c0 with SMTP id d9443c01a7336-2b5f9ecaea6mr315321275ad.1.1777211137204; Sun, 26 Apr 2026 06:45:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 54/84] fpu: Inline float64_pack_raw into callers Date: Sun, 26 Apr 2026 23:39:31 +1000 Message-ID: <20260426134002.865628-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211321267158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- fpu/softfloat.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index d1acf383e9..302612fe42 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -673,11 +673,6 @@ static uint64_t pack_raw64(const FloatParts64 *p, cons= t FloatFmt *fmt) return ret; } =20 -static float64 QEMU_FLATTEN float64_pack_raw(const FloatParts64 *p) -{ - return make_float64(pack_raw64(p, &float64_params)); -} - static float128 QEMU_FLATTEN float128_pack_raw(const FloatParts128 *p) { const int f_size =3D float128_params.frac_size - 64; @@ -1506,7 +1501,7 @@ static float64 float64_round_pack_canonical(FloatPart= s64 *p, float_status *s) { parts64_uncanon(p, s, &float64_params, false); - return float64_pack_raw(p); + return pack_raw64(p, &float64_params); } =20 static float64 float64r32_pack_raw(FloatParts64 *p) @@ -1548,7 +1543,7 @@ static float64 float64r32_pack_raw(FloatParts64 *p) g_assert_not_reached(); } =20 - return float64_pack_raw(p); + return pack_raw64(p, &float64_params); } =20 static float64 float64r32_round_pack_canonical(FloatParts64 *p, @@ -2047,7 +2042,7 @@ float64_muladd_scalbn(float64 a, float64 b, float64 c, if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } - return float64_pack_raw(pr); + return pack_raw64(pr, &float64_params); } =20 static bool force_soft_fma; @@ -4725,7 +4720,7 @@ float64 float64_default_nan(float_status *status) =20 parts64_default_nan(&p, status); p.frac >>=3D float64_params.frac_shift; - return float64_pack_raw(&p); + return pack_raw64(&p, &float64_params); } =20 float128 float128_default_nan(float_status *status) @@ -4777,7 +4772,7 @@ float64 float64_silence_nan(float64 a, float_status *= status) p.frac <<=3D float64_params.frac_shift; parts64_silence_nan(&p, status); p.frac >>=3D float64_params.frac_shift; - return float64_pack_raw(&p); + return pack_raw64(&p, &float64_params); } =20 bfloat16 bfloat16_silence_nan(bfloat16 a, float_status *status) --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211305; cv=none; d=zohomail.com; s=zohoarc; b=Sb2IrLD+j7grGXXOPV2hAMVpoayP2L8/2h2jHanXuawLV0GchlAvXSRqWr/hxe2+xSXlVvi3F9zeOypP+ezhg9QqiyGwvyrRUYGwyayeemEPKtUDH9AVFWmy2UHTMyX57n23YlfscjuijGeXBj3yPte2jtM0Gm70Wj5MMzAKkCQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211305; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ITXVWTswHK0ITcm+gabq4ujW8XFmcTy1jBekq3ZfSNY=; b=e+I728vcTUnzO0nmB4sEzx6yGnoWcYE/3oB/nRcjl8dDFxcNRp5/aMNrc6ZePM4/Gu32BUDfodBLUA3tqb1UfDDyj0A/6xusamVcAMkPO07XQ4x/CaAxaERahZeFEC4B5IuHrgYQH0lHs+ZnCPaMDdrgXigUjf4RefFiKnreAcc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211305783360.19420197349655; Sun, 26 Apr 2026 06:48:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpR-0007NF-Jn; Sun, 26 Apr 2026 09:47:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznv-0005s3-Mt for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:49 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznp-0001Qy-JI for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:44 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2b24fdac394so90576135ad.3 for ; Sun, 26 Apr 2026 06:45:41 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211140; x=1777815940; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ITXVWTswHK0ITcm+gabq4ujW8XFmcTy1jBekq3ZfSNY=; b=vHZTGL+digeFM3tEYqXhI9LY/6eqyVwsM59CKQRQoONwMQ7AP0VUQqdZxTXgEPDPY1 ME9bDy63Xxx94FKss2hTcxasiZV0scYRE9I5FDKdoMiCbJBzHO6rDDFrcbz3zCM++V9M wpWVMjUMnBEbZjFrv8IqXQ9hO+zobQIIJ1vWRCagpkOsuwIhrWOCZd3bIRifWux0+6Jq xE9fPYjJxuJ50gtCVkDLmcdfGqIgOSfLco7ex1nuDSrmFtduoeRVjzIwxJqVjUqD9rAZ h4NBVObU1LuYDoUpiWboCNew1AvH5ytaKJalXaqe2XOqUObPeNIEDVpVp3W4GWKveH9Z D1CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211140; x=1777815940; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ITXVWTswHK0ITcm+gabq4ujW8XFmcTy1jBekq3ZfSNY=; b=R7pi1rfu6buAYIxHceNVi8XPV+nswE6Fh9EppUAx4NCcUHJHDnRzYC4bt/0ujQ9n2B 3zBDyNz8EeyKyx0qKofRwcSWaMwvps8+7m+zYoGC4o9cZ9whZ3zjSTMB0JAJ25+7dlZX W+DGDhGBf1QhwQpui45LM3r9MBT0Wbrqyqt+pD52vlq/xksbXQL8fbPI9vYhorZ9QflW jljXeFE7PzDelyHnfQJ7LCtYPfMYG626KgVm2JIMPDd7UNLgFsFHR0sPEfDx1AjfgqoN etLSJIauhsLFZ7R7mqvwLePkZ5KoQo1NPc0AP5LoHSRsrjvELIskctSLMbQ18f+Heg30 J0VA== X-Gm-Message-State: AOJu0YwnydBN+Gz0DlruBMJEIHH9WCmqaJJLTgT51ycfSU/LgoiTVBIY E1ujAIOSImsj5RwzWHSzVXEAMcdqb8gNeL8EIQMEsTWERgmOPUS9GUBLwjzS84I/H2e4m9E//Rd qr9KImes= X-Gm-Gg: AeBDieumPwg19MeBY+HZqa6j0zjD3dQWXtHfWK0vDa0qp5mROeMeuNhvtyQh9+wkV8S HMLXGxLsCDdGDOCveKcC27MS5b2tlybwrlxiCXc8qaRl+JXScCgjEZfzdZ9jUdgkBEXSSwZDUvn xypzE2biJfERa2SmHPzyrxziAjMiCI1sp18eQYAGvJR2gxzik+ecRmgxXoZMzD9sOmLeRPpCv// mGv8JgT2SkJSPAfnE/dED9u1uFKXhNNwP8sAVAsGR1MD8XgUOU80xhWhmP4oMYK/QyUFTo1VB9f 4gs1LpaTvHq4hvd6UVmKvt4IdSbl11shfAULGofZaEw8bmqt5u/W7hoznbFD0NMesXZfOu0oBKR 3VCFYS3VPmfh85FaRqPugQiqRQW7i07C+6fVPTV6Me6WDLSsljAQpo96vtWSG2Q5txwphD40HwJ N0JyeSb/MWb5qA+4ltU5GIBkyTndwCTf8WT9tiX2TQ X-Received: by 2002:a17:903:3c24:b0:2b7:a3bf:b2a0 with SMTP id d9443c01a7336-2b7a3bfb415mr161832115ad.5.1777211140195; Sun, 26 Apr 2026 06:45:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 55/84] fpu: Mark unpack_raw64 QEMU_ALWAYS_INLINE Date: Sun, 26 Apr 2026 23:39:32 +1000 Message-ID: <20260426134002.865628-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211306900154100 Content-Type: text/plain; charset="utf-8" This is almost always used with a constant FloatFmt, so inlining pulls the constants into the shifts. Signed-off-by: Richard Henderson --- fpu/softfloat.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 302612fe42..63697ab3db 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -633,7 +633,8 @@ static const FloatFmt floatx80_params[3] =3D { }; =20 /* Unpack a float to parts, but do not canonicalize. */ -static FloatParts64 unpack_raw64(const FloatFmt *fmt, uint64_t raw) +static inline QEMU_ALWAYS_INLINE +FloatParts64 unpack_raw64(const FloatFmt *fmt, uint64_t raw) { const int f_size =3D fmt->frac_size; const int e_size =3D fmt->exp_size; --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211509; cv=none; d=zohomail.com; s=zohoarc; b=H1ZxGwwUaN1xLWRAN+WHipU5+79KjxIcJ8rtDja8U8mdRS5Z++GWEtSi92wh6jqLIvlEqnXhc/VZ0w6VxJBD044+H+baIqlcK5EoHBSHO9vQhzAoblAag9SabOSnUCbuave/S2OFMYAxo3oajV2B3b4f7T09GO/I2IyldZJGsjI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211509; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=naCDYMEynTNqx6TFzJKNSAiBh0vvryTyWBIKKZOB+4U=; b=YfyinyuTvYYdkRnwDxtpbPKJIxUv0vlQRDbcHVu+1dNcXjwqQ8urA02AAiuzomclJLUV6vhcXlKTwA8NtobtD+/BRMQXNGTW1rg4fCZAMW8ajKNtN2VMqpUkllRR359Su6Ew8pCZlv1vr8hGNoxxgHycsYkbKgMvQ8FrbYCly8g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211508955874.5832819609175; Sun, 26 Apr 2026 06:51:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpF-0006kN-Tu; Sun, 26 Apr 2026 09:47:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGznx-0005tL-QD for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:55 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznv-0001Rl-D1 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:48 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-358e3cc5e7eso5381692a91.0 for ; Sun, 26 Apr 2026 06:45:44 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211143; x=1777815943; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=naCDYMEynTNqx6TFzJKNSAiBh0vvryTyWBIKKZOB+4U=; b=RSEwYdXw0E+K97rtUu3Ud9GFV8R/KkrKWm1oqQTWg5AIHbNAyB8YQ+VRpdsvHR34SA +DYE2UN3gVeM7uuhu7xA6FA4XyDKSEu1RgIW9yRCDTS7jnasqBOw8IdiKHDhLXXQ1Dsw O7/1zzAWXNTOT/8Dif47JgytWFRekjdIZo2H6TlnI6rA3mKTI850fJuY7MOzn1MBnszq tMCjywZSWiCF8R9PddCfIRtfIPs4lKmjc7PyFlL5HbmPD11E3TlL7Qct2QwL9haZNxVQ uJKQR072957jkk9cK4LbkAIMpiSosAeLKTn0P4P1yCTLYnyXdsf9AHJikgc0EW30IrRm MgVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211143; x=1777815943; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=naCDYMEynTNqx6TFzJKNSAiBh0vvryTyWBIKKZOB+4U=; b=kATe24VBwOldihsxFO/AQk2uSsb2Mw65hhx58qfTLXGhKVls0kn14/bKifqC5BKqgd ZT9DGI5gBx7K7PWmmSn0Rn2wd3TthMaKfyF135RKO5BUS2aSQhzGfcKSF1COIZQjRb2g M3gut5VZ0CwA2YeYULriDVY2YTMubVFotw1CmuwbKZHEzHnZhoVgdyb6LXzT+4ximAb0 bbdHG3+eUgKdA6gYIVGkabwUrOpdyMkvSImhpt6PL/No/FwJ6imwqpb2spRg9TtR34HV wCR2LNcWoCa5liF93O3AcqZ+zqT8t6NcFqWEpg/1VRF2WfbpQo34WMCXsgbI8GvJq4Q6 ixQQ== X-Gm-Message-State: AOJu0YzM+HF1kFAq3Nfn3fI41Su2zxm9ZUB205YJ+QkweIV+6EwfwuJ4 2BtdjfZy6uR8gPgzs2Nrrv8o8vhO2f0RFf8hzYNFm6h10rBlWm5yLzLnP2TjzPi9c7EAjYia3/u 05yCMkuM= X-Gm-Gg: AeBDietMC2UwkxOvVFCQgwhMX+2OK7502g/+flf4X/flU5rzOOEqA7JEtQPmTd8qU2a BrsJXnHZUT1iy/87ZBv6CQo8pqvEFrq9XheEpMJouagvpgjawqVuYEhYY6+4n155aL0RoyJXn9e UqGNxUPoq0K0fw8NkJoksRuNWFwT8HNzJ6Bl00TLZz4pBlGSgqAv2ZUfCY78AuQvL0xJsb8ATHl /wgKXEikuyXlb5nQiBn6Qv8nDe83iThorMXOLdgXyTe9iGVE6+3JoBzPSEbLmiKIV8gY/xLn1d5 hGz4jODSGklFpFUaV7AjcmDK6h/THVRejoYwP96rM1QlG5nHQqcaerUjOP9rf2wGMQNDc57N/fU I5LjkK2NX/aLtkPnPgF1l9/WxwgipgXAnc+bZi2ooHJpuEX6PQlxigOv6iQ/HWfOu0oQdOlVcB6 3eftBeM0XsNHUKROsqdGCRjOPq2TYkkzh6aXlk/DnI X-Received: by 2002:a17:90b:4b49:b0:35d:9560:3f09 with SMTP id 98e67ed59e1d1-361404b8efbmr39132299a91.24.1777211143094; Sun, 26 Apr 2026 06:45:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 56/84] fpu: Mark pack_raw64 QEMU_ALWAYS_INLINE Date: Sun, 26 Apr 2026 23:39:33 +1000 Message-ID: <20260426134002.865628-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211509912158500 Content-Type: text/plain; charset="utf-8" This is almost always used with a constant FloatFmt, so inlining pulls the constants into the shifts. Signed-off-by: Richard Henderson --- fpu/softfloat.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 63697ab3db..8c4263bfe6 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -662,7 +662,8 @@ static FloatParts128 float128_unpack_raw(float128 f) } =20 /* Pack a float from parts, but do not canonicalize. */ -static uint64_t pack_raw64(const FloatParts64 *p, const FloatFmt *fmt) +static inline uint64_t QEMU_ALWAYS_INLINE +pack_raw64(const FloatParts64 *p, const FloatFmt *fmt) { const int f_size =3D fmt->frac_size; const int e_size =3D fmt->exp_size; --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211823; cv=none; d=zohomail.com; s=zohoarc; b=XYzlseryhrcVA8LoAF6NgrPABAgq0G3biBKsTtkADerC2F0XLgIrc5zmsZjH/T0McL4KqW+rW3IWnqsZJoc2Nfl6faAAijYcRe1AP5t8BJOusIXXxdicAyyqAsKsTcclqWRYTt7qtGiTr5cZ1qSE3iqBoy/JsCqBeH6vSPapjP8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211823; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FnOhdCDKdTLE0gzKOWv8m2ElmA3lCf51L6yu2wpzeJk=; b=Z9iChfTRl6QlS7f0sFHVLcpxNeFR4pNQNMYvftppvkkpAZpaUGILHM2k7xsHidKoeoyD5VNob83MmrzqPBhnyN/6eImDoEJ/cxFUbNgsh9Cm7n+K6ivMRTYjvln6meOT7RXUpHy25rb/1vYza+wA7M+ALJh64Po9wBRlzY3XlBI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211823469223.9028201341432; Sun, 26 Apr 2026 06:57:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpW-0007r7-RQ; Sun, 26 Apr 2026 09:47:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzo9-0005uY-Go for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:07 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGznv-0001SB-F8 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:45:50 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-c70f91776fcso3578808a12.0 for ; Sun, 26 Apr 2026 06:45:46 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211146; x=1777815946; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=FnOhdCDKdTLE0gzKOWv8m2ElmA3lCf51L6yu2wpzeJk=; b=qTOazqVWZ+ea7obniPuOA/1jYGkwM47Zn3Vhjexk1z1qbgQrdmHRcRgJWtq+RzlQzZ B2rxJYaB/VGCJ3sepiUEvuarEdpsxYi5xEIW2QwqgIaFVL2+tak9nydDsqGX1Hs0DY6l g0kFCLrDAQmnJ6MnlTOF9saSJsuBXO4GBpxslY1+r8Hxl/d4irvoLZTU3UycO5ztVioy KR6iEcl1Du54UDFm6JwB9pujLdW99GvxdqNba4pm9t5ElnT/jCW6gYSl78EFA4riUiyK VlVvwXPXRL9oM8oo7pwMWIHX0VzLhi0awujVbl1+VV1S8sgCrDYMZ3Jsjnq0wU2IwRpv H6Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211146; x=1777815946; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=FnOhdCDKdTLE0gzKOWv8m2ElmA3lCf51L6yu2wpzeJk=; b=avantu9Xwsw8yTIG7RO5N9KGFh2xfSOUnsrmr5Q5VKCrv788RShHGerUL8jAbrKxTa bPsaXQvf5wmDEkNLjC/0qCk7Ine/JkaRt7ZPe4UymtTTgJqfLMXDRz7bv3qfMq9SZBeL +Dx7b06WSi7gZeJZ7bOMgj2fnuzPevl4TlA2b6/iSkwKAHUlL1gPExfhVRsIOoKYSU6X niNorANsEPPzdO7IDt5x8+fZGP8+eWkEL17s3LG1pQEfaB3Dwff1PnAHApuvzcQ4Zlxy DqH9i4YbnIabOHR0BbdUXV0vfpVnrH6TkEeZxtIjaPUlInJQ7can8/ZRmIHzjMsiYT8v ZU7w== X-Gm-Message-State: AOJu0YxqAqa6/TeGI+IBrIrf6Dw71d4DUzXtPWoqnWN111qivWfpdIIg 7p4sNvIj1J2IY4hEiOrND3h+MTR5fxIqLcMc/UJlXLBfXFfDoPGvotlIUHgC3gUhdR+APtkKczX oFRMubXA= X-Gm-Gg: AeBDietZz9Dy8+/CsVlcbh4vlzc7pR11GlFNQR+DGPZkwOUyiwjEEhUNyyI5jQA69z2 PW+GEjd9bCL+Gi42s5ZtjurXYHLUDpS0V3dhVLVDex1yY/L1W7ukY8ADTDpyWd3Bej172jktaqb Q+FXUa3OPpDtIGD072XygdA+GDesk+XMdnIC2pbb2Qfrd+OVx7jt3lisMq82CKbKdlSgyIvjKer 9VP2dqNt8VCc/mXgMoXHRl3jxqYeby/sqPN+5jFetV90RwBdEWh9buixv4VSDpdRQ4Lu9nvjm3/ D2pznQT7e+09iqJD3hXsVav5+666xVZeluorJfFOJjFyBLg9etbh4Eoo3QGGS1I4DBjnhCJNG39 jls4FydG9Zi1SdXp+n49U0r1siUJ5HWT0x01cE+pbxNAXKkNQ1iOp4marTlJ3Wmmt5XE/32StUE QK4PFwB9Y5TYQJSBM1y74EgZk90cRBfVM5lVpym4Co X-Received: by 2002:a17:903:487:b0:2b2:49a7:a5bc with SMTP id d9443c01a7336-2b5f9f534e4mr297029925ad.39.1777211145647; Sun, 26 Apr 2026 06:45:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 57/84] fpu: Split FloatParts{64,128} to softfloat-parts.h Date: Sun, 26 Apr 2026 23:39:34 +1000 Message-ID: <20260426134002.865628-58-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211824505154100 Content-Type: text/plain; charset="utf-8" Begin exposing the intermediate representation of softfloat. Start with just the representation structures. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/fpu/softfloat-parts.h | 88 +++++++++++++++++++++++++++++++++++ fpu/softfloat.c | 69 +-------------------------- 2 files changed, 90 insertions(+), 67 deletions(-) create mode 100644 include/fpu/softfloat-parts.h diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h new file mode 100644 index 0000000000..13c1f3d2d6 --- /dev/null +++ b/include/fpu/softfloat-parts.h @@ -0,0 +1,88 @@ +/* + * Floating point intermediate representation + * + * The code in this source file is derived from release 2a of the SoftFloat + * IEC/IEEE Floating-point Arithmetic Package. Those parts of the code (and + * some later contributions) are provided under that license, as detailed = below. + * It has subsequently been modified by contributors to the QEMU Project, + * so some portions are provided under: + * the SoftFloat-2a license + * the BSD license + * GPL-v2-or-later + * + * Any future contributions to this file after December 1st 2014 will be + * taken to be licensed under the Softfloat-2a license unless specifically + * indicated otherwise. + */ + +#ifndef SOFTFLOAT_PARTS_H +#define SOFTFLOAT_PARTS_H + +/* + * Classify a floating point number. Everything above float_class_qnan + * is a NaN so cls >=3D float_class_qnan is any NaN. + * + * Note that we canonicalize denormals, so most code should treat + * class_normal and class_denormal identically. + */ + +typedef enum __attribute__ ((__packed__)) { + float_class_unclassified, + float_class_zero, + float_class_normal, + float_class_denormal, /* input was a non-squashed denormal */ + float_class_inf, + float_class_qnan, /* all NaNs from here */ + float_class_snan, +} FloatClass; + +#define float_cmask(bit) (1u << (bit)) + +enum { + float_cmask_zero =3D float_cmask(float_class_zero), + float_cmask_normal =3D float_cmask(float_class_normal), + float_cmask_denormal =3D float_cmask(float_class_denormal), + float_cmask_inf =3D float_cmask(float_class_inf), + float_cmask_qnan =3D float_cmask(float_class_qnan), + float_cmask_snan =3D float_cmask(float_class_snan), + + float_cmask_infzero =3D float_cmask_zero | float_cmask_inf, + float_cmask_anynan =3D float_cmask_qnan | float_cmask_snan, + float_cmask_anynorm =3D float_cmask_normal | float_cmask_denormal, +}; + +/* + * Structure holding all of the decomposed parts of a float. + * The exponent is unbiased and the fraction is normalized. + * + * The fraction words are stored in big-endian word ordering, + * so that truncation from a larger format to a smaller format + * can be done simply by ignoring subsequent elements. + */ + +typedef struct { + FloatClass cls; + bool sign; + int32_t exp; + union { + /* Routines that know the structure may reference the singular nam= e. */ + uint64_t frac; + /* + * Routines expanded with multiple structures reference "hi" and "= lo" + * depending on the operation. In FloatParts64, "hi" and "lo" are + * both the same word and aliased here. + */ + uint64_t frac_hi; + uint64_t frac_lo; + }; +} FloatParts64; + +typedef struct { + FloatClass cls; + bool sign; + int32_t exp; + uint64_t frac_hi; + uint64_t frac_lo; +} FloatParts128; + +#endif diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 8c4263bfe6..cd75df3160 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -83,6 +83,7 @@ this code that are retained. #include #include "qemu/bitops.h" #include "fpu/softfloat.h" +#include "fpu/softfloat-parts.h" =20 /* We only need stdlib for abort() */ =20 @@ -396,39 +397,6 @@ float64_gen2(float64 xa, float64 xb, float_status *s, return soft(ua.s, ub.s, s); } =20 -/* - * Classify a floating point number. Everything above float_class_qnan - * is a NaN so cls >=3D float_class_qnan is any NaN. - * - * Note that we canonicalize denormals, so most code should treat - * class_normal and class_denormal identically. - */ - -typedef enum __attribute__ ((__packed__)) { - float_class_unclassified, - float_class_zero, - float_class_normal, - float_class_denormal, /* input was a non-squashed denormal */ - float_class_inf, - float_class_qnan, /* all NaNs from here */ - float_class_snan, -} FloatClass; - -#define float_cmask(bit) (1u << (bit)) - -enum { - float_cmask_zero =3D float_cmask(float_class_zero), - float_cmask_normal =3D float_cmask(float_class_normal), - float_cmask_denormal =3D float_cmask(float_class_denormal), - float_cmask_inf =3D float_cmask(float_class_inf), - float_cmask_qnan =3D float_cmask(float_class_qnan), - float_cmask_snan =3D float_cmask(float_class_snan), - - float_cmask_infzero =3D float_cmask_zero | float_cmask_inf, - float_cmask_anynan =3D float_cmask_qnan | float_cmask_snan, - float_cmask_anynorm =3D float_cmask_normal | float_cmask_denormal, -}; - /* Flags for parts_minmax. */ enum { /* Set for minimum; clear for maximum. */ @@ -474,40 +442,7 @@ static inline bool is_anynorm(FloatClass c) return float_cmask(c) & float_cmask_anynorm; } =20 -/* - * Structure holding all of the decomposed parts of a float. - * The exponent is unbiased and the fraction is normalized. - * - * The fraction words are stored in big-endian word ordering, - * so that truncation from a larger format to a smaller format - * can be done simply by ignoring subsequent elements. - */ - -typedef struct { - FloatClass cls; - bool sign; - int32_t exp; - union { - /* Routines that know the structure may reference the singular nam= e. */ - uint64_t frac; - /* - * Routines expanded with multiple structures reference "hi" and "= lo" - * depending on the operation. In FloatParts64, "hi" and "lo" are - * both the same word and aliased here. - */ - uint64_t frac_hi; - uint64_t frac_lo; - }; -} FloatParts64; - -typedef struct { - FloatClass cls; - bool sign; - int32_t exp; - uint64_t frac_hi; - uint64_t frac_lo; -} FloatParts128; - +/* FloatParts256 is entirely internal, for parts128_mul* */ typedef struct { FloatClass cls; bool sign; --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211480; cv=none; d=zohomail.com; s=zohoarc; b=ExFvMJOnzEHnO/h6f8TjO21E3rYP05S/ourdRjAOJBedK//8ds1/5dZBBzFkWq4xwbGzydlXVghsRHBBAdx84Pponm7faWBwkq9BR+e8RvYLrnZ+g8mcYj0VmytftPECFdP1AkDuEutWWH5zcgi0S+Gy10kODpLXkfKG84vwrtU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211480; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=s95gOsMYgi/f4zhiYit5ShyHyWR6YE2CuPY1Rv/+Q0w=; b=Sqh0T1TdQ0IDBrch0K+QvtvU6TDopqWwyvZLdtBAp776IcBH/abbLNbTIhuoNj2Flv3eHz8ojZ8AG2sp6qTI9IdWJQTGa3KF0xNIL7Y7GJnQ/CSOoI7/1HswNdfO9xqYgKRAH5W26ZU8OTEm5OZ8PgGf3F8ibAGKivGYwZxNY8w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211480755603.376260765296; Sun, 26 Apr 2026 06:51:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpV-0007el-P8; Sun, 26 Apr 2026 09:47:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoF-0005wK-Rd for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:11 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoC-0001Ut-JG for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:06 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2ad9a9be502so58239345ad.0 for ; Sun, 26 Apr 2026 06:45:49 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211148; x=1777815948; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=s95gOsMYgi/f4zhiYit5ShyHyWR6YE2CuPY1Rv/+Q0w=; b=Ay4kyAePka02/goQCElt3a4a58enaFMmJz35ZAUr0dj/F+Ej0IeIR2U9BkQLMaiyM7 XS75rtaiocElAQEsa9qUc8qUkKh4w3BMdiNaXSQPyFJO1MJU5lKUTImqtV3Ik7fD8mit HAcgNds+OKdsVZt/5N+VTZCDtRYgI54znIynONJlfbEVPiUPJ9hJWUVbxgfIoqrebR/p PEYFydr0iSRUJiT38ErhOBQuENOl3+vIGh+f3Jt302htq2m3xWA6TqL7knVl6tHWrWDA Z2ieLjmTQpXv6mMINes7h083n26aZ3agz9BC4RhoSvUC26W6p7RR2woxCotv73i48htM J9+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211148; x=1777815948; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=s95gOsMYgi/f4zhiYit5ShyHyWR6YE2CuPY1Rv/+Q0w=; b=HAG3+BS8ITTZoWE6Cq4zcs2SgvjwQjeYN6riusZX0JbTsG3xloi8lATy/fPOymHnXK op2XqNSe5IsGtWFVaugyUAN6CxfQUY/MDR0IxP9dUcs2QZGqUJMxebMWvUVQQJNyVdmy i5F9FduARWCjpBsIPx0PjNZMRQCC1mQfPKl+pV5BZ7Q3uwIQN5JC2LEjQkV9J0JQaN7G NDgeK11+Jwa2YSDtu0N/ZhQaT0GG3q2u4N4CmUwHJR60XwOGxwkxUgFW59Uhs5EE+wjj 0zIHkZlxusRNa1XEyUoh1FZFh0OEudihCYgr8CnqAjKaZQ4YF1V2Ua4gg4xUJUp+45jO RedQ== X-Gm-Message-State: AOJu0YzPW+OEziVRvLdQxHJdB7g8o2XyC0KgB4Z2RcNtpqHDdcJ5XwBr CLpjFu94c1MXV39JK7vxpP3kEBwJBvoPk0YSeFZUASBZMEOBjF+ipTC+f49gX3is0dSsJGyRT+j VBEWVAMY= X-Gm-Gg: AeBDietlZdgPFWLKdW0FJMBudVw6/jYHTUZ3E2DykXOZW9poiu/wDjXIKN3wE3DdAMU cvVI6nv+PjlSJkdnN2O7ZGhnFJ6txNweYx2nYyqD+TU1GSUcz/fKcVSLfAwND1l+WtBVGh63WJ+ fNDfCnRniUSg863Q1LKD3RXoohUDAStm7GQ8ZyNBW3t+UDi6vUfIa+RRN91hpKSeD9xgXhagvZQ MI2Ut0P7LgwtZvhnMTjBp9iiKB9+skWvoQVYJECpLZW2whpxV/2RZa1ThzbtbJftKlqkwTN+uUI md1eIymgKM2Ob7Dp7aDxSatp3XzJjO52BxmVNdvsoZJmD4BbcR2brfQaTvmF7L43d4lN6/E+xf8 bp5tCQ/T76VYosq7U9YqucdDHSfeSJqM0SpzHDTs3E+BZJPPwcq7Fvpg0aXAX3BoBX8YwHSNFIx d4iSRfzO5xqxGe3dGBSyxJTNdtpjAzOcqMIAZBal6b X-Received: by 2002:a17:903:2acb:b0:2b4:6398:6aa2 with SMTP id d9443c01a7336-2b5f9f3a802mr451335435ad.27.1777211148231; Sun, 26 Apr 2026 06:45:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 58/84] fpu: Export FloatFmt structures Date: Sun, 26 Apr 2026 23:39:35 +1000 Message-ID: <20260426134002.865628-59-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211483515154101 Content-Type: text/plain; charset="utf-8" Export most of the FloatFmt structures. Skip float16_params_ahp and the floatx80 precisions. Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 48 ++++++++++++++++++++++++++++++ fpu/softfloat.c | 55 +++++------------------------------ 2 files changed, 56 insertions(+), 47 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index 13c1f3d2d6..a3ae12bb45 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -18,6 +18,54 @@ #ifndef SOFTFLOAT_PARTS_H #define SOFTFLOAT_PARTS_H =20 +/* Format-specific handling of exp =3D=3D exp_max */ +typedef enum __attribute__((__packed__)) { + /* exp=3D=3Dmax, frac=3D=3D0 ? infinity : nan; this is ieee standard. = */ + float_expmax_ieee, + /* exp=3D=3Dmax is a normal number; no infinity or nan representation.= */ + float_expmax_normal, + /* exp=3D=3Dmax, frac=3D=3Dmax ? nan : normal; no infinity representat= ion. */ + float_expmax_e4m3, +} FloatFmtExpMaxKind; + +/* + * Structure holding all of the relevant parameters for a format. + * exp_size: the size of the exponent field + * exp_bias: the offset applied to the exponent field + * exp_max: the maximum normalised exponent + * frac_size: the size of the fraction field + * frac_shift: shift to normalise the fraction with DECOMPOSED_BINARY_PO= INT + * The following are computed based the size of fraction + * round_mask: bits below lsb which must be rounded + * The following optional modifiers are available: + * exp_max_kind: affects how exp =3D=3D exp_max is interpreted + * has_explicit_bit: has an explicit integer bit; this affects whether + * the float_status floatx80_behaviour handling applies + * overflow_raises_invalid: for float_expmax_normal, raise invalid + * instead of overflow. + */ +typedef struct { + int exp_size; + int exp_bias; + int exp_re_bias; + int exp_max; + int frac_size; + int frac_shift; + FloatFmtExpMaxKind exp_max_kind; + bool has_explicit_bit; + bool overflow_raises_invalid; + uint64_t round_mask; +} FloatFmt; + +extern const FloatFmt float4_e2m1_params; +extern const FloatFmt float8_e4m3_params; +extern const FloatFmt float8_e5m2_params; +extern const FloatFmt float16_params; +extern const FloatFmt bfloat16_params; +extern const FloatFmt float32_params; +extern const FloatFmt float64_params; +extern const FloatFmt float128_params; + /* * Classify a floating point number. Everything above float_class_qnan * is a NaN so cls >=3D float_class_qnan is any NaN. diff --git a/fpu/softfloat.c b/fpu/softfloat.c index cd75df3160..d3277e3f60 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -457,45 +457,6 @@ typedef struct { #define DECOMPOSED_BINARY_POINT 63 #define DECOMPOSED_IMPLICIT_BIT (1ull << DECOMPOSED_BINARY_POINT) =20 -/* Format-specific handling of exp =3D=3D exp_max */ -typedef enum __attribute__((__packed__)) { - /* exp=3D=3Dmax, frac=3D=3D0 ? infinity : nan; this is ieee standard. = */ - float_expmax_ieee, - /* exp=3D=3Dmax is a normal number; no infinity or nan representation.= */ - float_expmax_normal, - /* exp=3D=3Dmax, frac=3D=3Dmax ? nan : normal; no infinity representat= ion. */ - float_expmax_e4m3, -} FloatFmtExpMaxKind; - -/* - * Structure holding all of the relevant parameters for a format. - * exp_size: the size of the exponent field - * exp_bias: the offset applied to the exponent field - * exp_max: the maximum normalised exponent - * frac_size: the size of the fraction field - * frac_shift: shift to normalise the fraction with DECOMPOSED_BINARY_PO= INT - * The following are computed based the size of fraction - * round_mask: bits below lsb which must be rounded - * The following optional modifiers are available: - * exp_max_kind: affects how exp =3D=3D exp_max is interpreted - * has_explicit_bit: has an explicit integer bit; this affects whether - * the float_status floatx80_behaviour handling applies - * overflow_raises_invalid: for float_expmax_normal, raise invalid - * instead of overflow. - */ -typedef struct { - int exp_size; - int exp_bias; - int exp_re_bias; - int exp_max; - int frac_size; - int frac_shift; - FloatFmtExpMaxKind exp_max_kind; - bool has_explicit_bit; - bool overflow_raises_invalid; - uint64_t round_mask; -} FloatFmt; - /* Expand fields based on the size of exponent and fraction */ #define FLOAT_PARAMS_(E) \ .exp_size =3D E, \ @@ -509,12 +470,12 @@ typedef struct { .frac_shift =3D (-F - 1) & 63, \ .round_mask =3D (1ull << ((-F - 1) & 63)) - 1 =20 -static const FloatFmt float4_e2m1_params =3D { +const FloatFmt float4_e2m1_params =3D { FLOAT_PARAMS(2, 1), .exp_max_kind =3D float_expmax_normal, }; =20 -static const FloatFmt float8_e4m3_params =3D { +const FloatFmt float8_e4m3_params =3D { FLOAT_PARAMS(4, 3), .exp_max_kind =3D float_expmax_e4m3 }; @@ -522,11 +483,11 @@ static const FloatFmt float8_e4m3_params =3D { /* 110 << frac_shift, with the implicit bit set */ #define E4M3_NORMAL_FRAC_MAX 0xe000000000000000ull =20 -static const FloatFmt float8_e5m2_params =3D { +const FloatFmt float8_e5m2_params =3D { FLOAT_PARAMS(5, 2) }; =20 -static const FloatFmt float16_params =3D { +const FloatFmt float16_params =3D { FLOAT_PARAMS(5, 10) }; =20 @@ -536,19 +497,19 @@ static const FloatFmt float16_params_ahp =3D { .overflow_raises_invalid =3D true, }; =20 -static const FloatFmt bfloat16_params =3D { +const FloatFmt bfloat16_params =3D { FLOAT_PARAMS(8, 7) }; =20 -static const FloatFmt float32_params =3D { +const FloatFmt float32_params =3D { FLOAT_PARAMS(8, 23) }; =20 -static const FloatFmt float64_params =3D { +const FloatFmt float64_params =3D { FLOAT_PARAMS(11, 52) }; =20 -static const FloatFmt float128_params =3D { +const FloatFmt float128_params =3D { FLOAT_PARAMS(15, 112) }; =20 --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211484; cv=none; d=zohomail.com; s=zohoarc; b=cHxvjRbmAf6JmXX+d9C73Q9xfkvJCAQAA0Zs+a0pJFijXRvUzsCUHTcIAPOOZWx3fbm+YW7kXE9/BuDm/wutedrUaIORFrvstBDxt3gzoZ6un3X5e6Cu+DJYhAcLwc6m14lYA8ZcKFG095Q/USGG1xdZZH7Q5xZjTwmG9D7v+uk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211484; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8NNGGFXJ7ObWl7bIfWdwNZWMHdVi1ldGDKtY92ZvWpw=; b=g0B9QwjSIofIAx7Gbm4GilhOBV+mNTQp8pirbj/punCZV3WVtiliLeZ7RkMOrnINZ5gMDOi0R+cQnQGtjT+ynUrtTOl1MjamWCRcseoylIv8R+lNAVNQRQhl5/uznyTA1iuIL1YZ+VYMVRBTxFpGshUKgLUgT/IlN/LwZRVMFTM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211484145271.5313649589632; Sun, 26 Apr 2026 06:51:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpb-0008Vc-TY; Sun, 26 Apr 2026 09:47:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoE-0005vr-Iw for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:11 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoC-0001Vw-C7 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:06 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2b4583f0a1aso58280805ad.3 for ; Sun, 26 Apr 2026 06:45:51 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211151; x=1777815951; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8NNGGFXJ7ObWl7bIfWdwNZWMHdVi1ldGDKtY92ZvWpw=; b=E80w3rIKvS/rOTtr3CxUGWcus2ziafgIM6bnJKJf9RYQxnvOemFO1OlvsvAlYTf08Q CPK0hmtsTZnEmuMTkqIT8DRd1nI9ETy0gpb14kPnnNR0DFkaoHokWYRdCCviB0Jr25/k VOnXlR4gKJPANE60G4vkqj9iV/TsPqIqEfnIgz7nwFcTvkYAwWZs3PslG1b66tWBbaiC sHBLYkiijVN/VWWvc9cg7IDTp6uzVideuKyCphCjY/m/A+AnkZQo8mBDHb4D1rmPmaVt FqDZatBp8Gi587Yfy6Wdg1fUWBfSuoWGkNkjLZ7wUO71B23EZ28+Oxk2tKgfTIcYGYUW BO7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211151; x=1777815951; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8NNGGFXJ7ObWl7bIfWdwNZWMHdVi1ldGDKtY92ZvWpw=; b=JvA2J0tzPngnW0VFaehSmsa73EMguoAgsfwY8LLnjXz0QI+cWIosLZXej+ZDM3O6JW 3ho3ZziaFvKrOvPmmaZEdhjIoV7IxDxTD080U88AkXvtGC6OA5V/T0aOwOA7zb+/bEUe q1H05YkhKiD/zQoOXIT65BAiLpsQDmjGXSfNd3CnM8rEETUrgsmbnomMGZTpU3uw3Ac7 mUUkFfeFsb+V9/asUqhMT6v2ggmQY93GtcFQf0rDQ7XRRRu1W6dz57YN/CHLZS1uGoeH Ymo0PyyztyCaicJ0g8lW44dOn01bMuv0YH8BnOKAML1oI4rzpBypovA/36y9APK4VXpE NlPw== X-Gm-Message-State: AOJu0YxM6CIwHtYmEQHAAMBasXt7f5WJSinYFx2ubcwY2CbvVmeviGb6 FbTSNvjbp1WoI1OB7swkz8/8MmjkOgf0ASd5RfZ3F+Pswno1N3i4LYUBu+r+OSUrZ54AJfm89kG mvXevHS0= X-Gm-Gg: AeBDievWDZHtWDUCdv6MxVlX2SwGAelYnq86XFWW3/n6lY51DBpX85QVTL7eOBQ9X+t dxI1ClA7C2sHhmoZSFBqmZeAOoyBwl9nTLvFKfYMW09yUapV31vn02lF/dRuxcXre22CEuEWe/v 0+DWz95w6Hw0hxhE3E08y2+FOpltImHgQcUWwq5CxbOXScb9jF242OdZmIuxApui2jTTrhj3GxH EsBgNsUCdzHW2h6LLAjNslKlYdSN3/xadj5Z4J09JYMceOSpTee+qc93/YQ+OXqNOl99vkI1R5g ItmTR1yED2wcicftJ16wL109yAGzXjtpjz/sKny7B6qGk/nM9tJJ6PFJKPwDyTzJmMPyTme2J/q ln9MAMIkLBPcFk3ek4cMFD1OWMPAuk9OaFpo6KWS7EYaGB6L+BCs4W3XIYd2PDHgo78RHsBkd+Z P4RYYYL/kcm5/mS39QM4AwZQu3mQDEV49Yny7xeWiWmXjEx6vACQk= X-Received: by 2002:a17:903:b8f:b0:2b2:5857:583e with SMTP id d9443c01a7336-2b5f9fc0641mr399097725ad.31.1777211150695; Sun, 26 Apr 2026 06:45:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 59/84] fpu: Export unpack_canonical and round_pack_canonical routines Date: Sun, 26 Apr 2026 23:39:36 +1000 Message-ID: <20260426134002.865628-60-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211485538154100 Content-Type: text/plain; charset="utf-8" Export the unpacking and repacking into the various formats. Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 30 ++++++++++++++++++++++ fpu/softfloat.c | 47 ++++++++++++++--------------------- 2 files changed, 49 insertions(+), 28 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index a3ae12bb45..f631c38c79 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -133,4 +133,34 @@ typedef struct { uint64_t frac_lo; } FloatParts128; =20 +/* + * Unpack routines from a specific floating-point format. + */ + +FloatParts64 float4_e2m1_unpack_canonical(float4_e2m1 f, float_status *s); +FloatParts64 float8_e4m3_unpack_canonical(float8_e4m3 f, float_status *s); +FloatParts64 float8_e5m2_unpack_canonical(float8_e5m2 f, float_status *s); +FloatParts64 float16_unpack_canonical(float16 f, float_status *s); +FloatParts64 bfloat16_unpack_canonical(bfloat16 f, float_status *s); +FloatParts64 float32_unpack_canonical(float32 f, float_status *s); +FloatParts64 float64_unpack_canonical(float64 f, float_status *s); +FloatParts128 float128_unpack_canonical(float128 f, float_status *s); +/* Returns false if the encoding is invalid. */ +bool floatx80_unpack_canonical(FloatParts128 *p, floatx80 f, float_status = *s); + +/* + * Pack routines to a specific floating-point format. + */ + +float8_e4m3 float8_e4m3_round_pack_canonical(FloatParts64 *p, float_status= *s, + bool saturate); +float8_e5m2 float8_e5m2_round_pack_canonical(FloatParts64 *p, float_status= *s, + bool saturate); +float16 float16_round_pack_canonical(FloatParts64 *p, float_status *s); +bfloat16 bfloat16_round_pack_canonical(FloatParts64 *p, float_status *s); +float32 float32_round_pack_canonical(FloatParts64 *p, float_status *s); +float64 float64_round_pack_canonical(FloatParts64 *p, float_status *s); +float128 float128_round_pack_canonical(FloatParts128 *p, float_status *s); +floatx80 floatx80_round_pack_canonical(FloatParts128 *p, float_status *s); + #endif diff --git a/fpu/softfloat.c b/fpu/softfloat.c index d3277e3f60..b857c13d91 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1296,21 +1296,21 @@ static const uint16_t rsqrt_tab[128] =3D { * Pack/unpack routines with a specific FloatFmt. */ =20 -static FloatParts64 float4_e2m1_unpack_canonical(float4_e2m1 f, float_stat= us *s) +FloatParts64 float4_e2m1_unpack_canonical(float4_e2m1 f, float_status *s) { FloatParts64 p =3D unpack_raw64(&float4_e2m1_params, f); parts64_canonicalize(&p, s, &float4_e2m1_params); return p; } =20 -static FloatParts64 float8_e4m3_unpack_canonical(float8_e4m3 f, float_stat= us *s) +FloatParts64 float8_e4m3_unpack_canonical(float8_e4m3 f, float_status *s) { FloatParts64 p =3D unpack_raw64(&float8_e4m3_params, f); parts64_canonicalize(&p, s, &float8_e4m3_params); return p; } =20 -static FloatParts64 float8_e5m2_unpack_canonical(float8_e5m2 f, float_stat= us *s) +FloatParts64 float8_e5m2_unpack_canonical(float8_e5m2 f, float_status *s) { FloatParts64 p =3D unpack_raw64(&float8_e5m2_params, f); parts64_canonicalize(&p, s, &float8_e5m2_params); @@ -1325,29 +1325,27 @@ static FloatParts64 float16a_unpack_canonical(float= 16 f, float_status *s, return p; } =20 -static FloatParts64 float16_unpack_canonical(float16 f, float_status *s) +FloatParts64 float16_unpack_canonical(float16 f, float_status *s) { return float16a_unpack_canonical(f, s, &float16_params); } =20 -static FloatParts64 bfloat16_unpack_canonical(bfloat16 f, float_status *s) +FloatParts64 bfloat16_unpack_canonical(bfloat16 f, float_status *s) { FloatParts64 p =3D unpack_raw64(&bfloat16_params, f); parts64_canonicalize(&p, s, &bfloat16_params); return p; } =20 -static float8_e4m3 float8_e4m3_round_pack_canonical(FloatParts64 *p, - float_status *s, - bool saturate) +float8_e4m3 float8_e4m3_round_pack_canonical(FloatParts64 *p, float_status= *s, + bool saturate) { parts64_uncanon(p, s, &float8_e4m3_params, saturate); return pack_raw64(p, &float8_e4m3_params); } =20 -static float8_e5m2 float8_e5m2_round_pack_canonical(FloatParts64 *p, - float_status *s, - bool saturate) +float8_e5m2 float8_e5m2_round_pack_canonical(FloatParts64 *p, float_status= *s, + bool saturate) { parts64_uncanon(p, s, &float8_e5m2_params, saturate); return pack_raw64(p, &float8_e5m2_params); @@ -1361,42 +1359,38 @@ static float16 float16a_round_pack_canonical(FloatP= arts64 *p, return pack_raw64(p, &float16_params); } =20 -static float16 float16_round_pack_canonical(FloatParts64 *p, - float_status *s) +float16 float16_round_pack_canonical(FloatParts64 *p, float_status *s) { return float16a_round_pack_canonical(p, s, &float16_params); } =20 -static bfloat16 bfloat16_round_pack_canonical(FloatParts64 *p, - float_status *s) +bfloat16 bfloat16_round_pack_canonical(FloatParts64 *p, float_status *s) { parts64_uncanon(p, s, &bfloat16_params, false); return pack_raw64(p, &bfloat16_params); } =20 -static FloatParts64 float32_unpack_canonical(float32 f, float_status *s) +FloatParts64 float32_unpack_canonical(float32 f, float_status *s) { FloatParts64 p =3D unpack_raw64(&float32_params, f); parts64_canonicalize(&p, s, &float32_params); return p; } =20 -static float32 float32_round_pack_canonical(FloatParts64 *p, - float_status *s) +float32 float32_round_pack_canonical(FloatParts64 *p, float_status *s) { parts64_uncanon(p, s, &float32_params, false); return pack_raw64(p, &float32_params); } =20 -static FloatParts64 float64_unpack_canonical(float64 f, float_status *s) +FloatParts64 float64_unpack_canonical(float64 f, float_status *s) { FloatParts64 p =3D unpack_raw64(&float64_params, f); parts64_canonicalize(&p, s, &float64_params); return p; } =20 -static float64 float64_round_pack_canonical(FloatParts64 *p, - float_status *s) +float64 float64_round_pack_canonical(FloatParts64 *p, float_status *s) { parts64_uncanon(p, s, &float64_params, false); return pack_raw64(p, &float64_params); @@ -1451,23 +1445,21 @@ static float64 float64r32_round_pack_canonical(Floa= tParts64 *p, return float64r32_pack_raw(p); } =20 -static FloatParts128 float128_unpack_canonical(float128 f, float_status *s) +FloatParts128 float128_unpack_canonical(float128 f, float_status *s) { FloatParts128 p =3D float128_unpack_raw(f); parts128_canonicalize(&p, s, &float128_params); return p; } =20 -static float128 float128_round_pack_canonical(FloatParts128 *p, - float_status *s) +float128 float128_round_pack_canonical(FloatParts128 *p, float_status *s) { parts128_uncanon(p, s, &float128_params, false); return float128_pack_raw(p); } =20 /* Returns false if the encoding is invalid. */ -static bool floatx80_unpack_canonical(FloatParts128 *p, floatx80 f, - float_status *s) +bool floatx80_unpack_canonical(FloatParts128 *p, floatx80 f, float_status = *s) { /* Ensure rounding precision is set before beginning. */ switch (s->floatx80_rounding_precision) { @@ -1503,8 +1495,7 @@ static bool floatx80_unpack_canonical(FloatParts128 *= p, floatx80 f, return true; } =20 -static floatx80 floatx80_round_pack_canonical(FloatParts128 *p, - float_status *s) +floatx80 floatx80_round_pack_canonical(FloatParts128 *p, float_status *s) { const FloatFmt *fmt =3D &floatx80_params[s->floatx80_rounding_precisio= n]; uint64_t frac; --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211501; cv=none; d=zohomail.com; s=zohoarc; b=kg6aAGP0PP4yHn5BbmtD4T3pvay2jUew5qof1IZ86KlmQ+g198aYZ6YnAK9mFgtS0Xy+Lu2deaRZOv9W0tFFJGNhUOQ+NdqRRsDvAMPJdDviy0rdpUBOtqxyTYAgR2A1WTY7nfUGan0PXfENBKcgQexD+NbH1UF2JTh+sysvZ78= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211501; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TnxSC/joRQiFHOM0JVKPwA6B6Eb0DecPwNp7R0mi00U=; b=fDZaFZ8TveHamm/gSwhqvgt6rMLUgMh2xEYRbdAGKbr40OQFdnrKfpyHRBun9NHH55B5rsbETQcvuM00+3Xh/pLUqTg79xXWImLtYygHaHyQPNcc+133b/UsNNWP1cv2Fgv3w6c+VhUyGEdx17jBdczO+9gcAmTI1egJKDJsM6E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721150168658.05999555411199; Sun, 26 Apr 2026 06:51:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpX-00083K-Ua; Sun, 26 Apr 2026 09:47:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoG-0005wR-PJ for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:11 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoD-0001WH-GC for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:08 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2b4583f0a1aso58280925ad.3 for ; Sun, 26 Apr 2026 06:45:54 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211153; x=1777815953; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TnxSC/joRQiFHOM0JVKPwA6B6Eb0DecPwNp7R0mi00U=; b=q5rEP9rIjySiXDFcrgkOjFSKSt49NaUDNCDQ0eJptOaFZnLGnQF0xiJjbEfPAok4AE hJD96koCzhSnEbR2HavJNnVxKrt2aAA9W+g8ldTMhSLkArqeg+syPot8kTkQHxyNETCy R7r2FCUYuxeROYgFOtJDKKC66WvKaopx5ZO6GZICy2Cmofy4pujcr8mSF4wKIup6+wje d3AEY6QhCjSBQn2KKqYb7OdLSlijhNcXl0FWTLEK2/FX4qofeLg2k+GQgOhRFFMe/yv9 zfyZmIc/ZGszAiR1vdQgc5GJvLsKEwGU2o/YKIfrSLo4F7N0xN7suntPh/TQOF1leb5c M6fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211153; x=1777815953; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=TnxSC/joRQiFHOM0JVKPwA6B6Eb0DecPwNp7R0mi00U=; b=LfaEsCV6uOP6pwIcZk6+BCvEQMuDCmfvpwGMVmrgie+t7GlNS28Sy4sFyg0d1H9NoS gyjnWd3ohNZIp8ZqrBg2vPqq1hHjWsu015vopEk4aPEbMlZpCrhUew+p9GtE2N+n4IEu b9ucoGGwASjv6DmwrQL094s00S4lbe9v7ceOFQedxNvEjZV7nH9TvhmyVPfVi3U12k/2 js6FQ4iATD1i94gNoWBEvl+T5xXAYXVH+/2+ZEkwlihNvNFzgn0nEj7i48qe5Z4qak+a yUM8OK3533HZ4tUbPvU8OR20ITPQ/jmxzKbFpwHLQNWIWC5vpC99soLTT8RLM5eP/K18 UGAw== X-Gm-Message-State: AOJu0Ywy1xQrYFq0xfG1Vs2vD8NYyzEkQR2ay17ILH75lGbG/u2LcGgp OXN7s3rKltUyY+LRmc+HxJOHKUMxHsVj2T/HFDO6+hPls62GhBfp5N7s82L110gd2lFvwJOz8t9 cXtLnZTE= X-Gm-Gg: AeBDies4JIYGqgh7v0k/d/aJJn0GKiSHhb3Q4KLRJMABVGMYPRnBxlkZF3rXxhevJcl Vr2jOpS5vM97VBji884n6VN54l8mtk83w/nBDpV+C/lAW1ykRqFQO/4OcTKBeMBwvLmxEv/dAyK AHXOzDstBvdpXRrqxUlwMFFKsZhIl1Ci7fpRmFpIjpGOeL/D8a49PGOd+qawAemGsfkTKd+l2xz FiJ4D08Nn5SmIqwGUPLlpFQ622alDPuFpLT6I+lqF79LzfzRHt5Xe/SXBeBRUdBYY8+sV5IpMz0 dGlXdZ3KJrsCiT0p/6kmg/oyZ5RRaR8NBIXgAKZ4lJsNYXDjRwhSV8Ylw6RH7ftBNNG5/He82Xw /uzb1qZzsGxJ6hpYb5pSUnzE1ikPiEXcVC1Csf3hfIJFfaHgjQ+lhZPltChqLJPixPQHJkR8SmG k41CrcPcS45X3Drakp80EozoQVtCRM3EochGAHHH9R X-Received: by 2002:a17:902:d501:b0:2b2:5099:2f3e with SMTP id d9443c01a7336-2b5f9e7be29mr431590505ad.4.1777211153289; Sun, 26 Apr 2026 06:45:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 60/84] fpu: Return struct from parts{64,128}_default_nan Date: Sun, 26 Apr 2026 23:39:37 +1000 Message-ID: <20260426134002.865628-61-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211503897154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- fpu/softfloat.c | 29 ++++++++++++----------------- fpu/softfloat-parts.c.inc | 22 +++++++++++----------- fpu/softfloat-specialize.c.inc | 22 ++++++++++------------ 3 files changed, 33 insertions(+), 40 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index b857c13d91..fa8913a288 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -2678,7 +2678,7 @@ float32 floatx80_to_float32(floatx80 a, float_status = *s) if (floatx80_unpack_canonical(&p128, a, s)) { p64 =3D parts128_to_parts64(&p128, s); } else { - parts64_default_nan(&p64, s); + p64 =3D parts64_default_nan(s); } return float32_round_pack_canonical(&p64, s); } @@ -2691,7 +2691,7 @@ float64 floatx80_to_float64(floatx80 a, float_status = *s) if (floatx80_unpack_canonical(&p128, a, s)) { p64 =3D parts128_to_parts64(&p128, s); } else { - parts64_default_nan(&p64, s); + p64 =3D parts64_default_nan(s); } return float64_round_pack_canonical(&p64, s); } @@ -2703,7 +2703,7 @@ float128 floatx80_to_float128(floatx80 a, float_statu= s *s) if (floatx80_unpack_canonical(&p, a, s)) { parts128_float_to_float(&p, s); } else { - parts128_default_nan(&p, s); + p =3D parts128_default_nan(s); } return float128_round_pack_canonical(&p, s); } @@ -2964,7 +2964,7 @@ static int32_t floatx80_to_int32_scalbn(floatx80 a, F= loatRoundMode rmode, FloatParts128 p; =20 if (!floatx80_unpack_canonical(&p, a, s)) { - parts128_default_nan(&p, s); + p =3D parts128_default_nan(s); } return parts128_float_to_sint(&p, rmode, scale, INT32_MIN, INT32_MAX, = s); } @@ -2975,7 +2975,7 @@ static int64_t floatx80_to_int64_scalbn(floatx80 a, F= loatRoundMode rmode, FloatParts128 p; =20 if (!floatx80_unpack_canonical(&p, a, s)) { - parts128_default_nan(&p, s); + p =3D parts128_default_nan(s); } return parts128_float_to_sint(&p, rmode, scale, INT64_MIN, INT64_MAX, = s); } @@ -4562,7 +4562,7 @@ static void parts64_log2(FloatParts64 *a, float_statu= s *s, const FloatFmt *fmt) =20 d_nan: float_raise(float_flag_invalid, s); - parts64_default_nan(a, s); + *a =3D parts64_default_nan(s); } =20 float32 float32_log2(float32 a, float_status *status) @@ -4587,45 +4587,40 @@ float64 float64_log2(float64 a, float_status *statu= s) =20 float16 float16_default_nan(float_status *status) { - FloatParts64 p; + FloatParts64 p =3D parts64_default_nan(status); =20 - parts64_default_nan(&p, status); p.frac >>=3D float16_params.frac_shift; return pack_raw64(&p, &float16_params); } =20 float32 float32_default_nan(float_status *status) { - FloatParts64 p; + FloatParts64 p =3D parts64_default_nan(status); =20 - parts64_default_nan(&p, status); p.frac >>=3D float32_params.frac_shift; return pack_raw64(&p, &float32_params); } =20 float64 float64_default_nan(float_status *status) { - FloatParts64 p; + FloatParts64 p =3D parts64_default_nan(status); =20 - parts64_default_nan(&p, status); p.frac >>=3D float64_params.frac_shift; return pack_raw64(&p, &float64_params); } =20 float128 float128_default_nan(float_status *status) { - FloatParts128 p; + FloatParts128 p =3D parts128_default_nan(status); =20 - parts128_default_nan(&p, status); frac128_shr(&p, float128_params.frac_shift); return float128_pack_raw(&p); } =20 bfloat16 bfloat16_default_nan(float_status *status) { - FloatParts64 p; + FloatParts64 p =3D parts64_default_nan(status); =20 - parts64_default_nan(&p, status); p.frac >>=3D bfloat16_params.frac_shift; return pack_raw64(&p, &bfloat16_params); } @@ -5131,7 +5126,7 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, *n =3D *r; *cc =3D 1; } else if (a->cls =3D=3D float_class_inf || b->cls =3D=3D float_class_= zero) { - parts64_default_nan(r, status); + *r =3D parts64_default_nan(status); *n =3D *r; *cc =3D 1; status->float_exception_flags |=3D float_flag_invalid; diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 5d344f9afe..ed7080d886 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -21,14 +21,14 @@ static void partsN(return_nan)(FloatPartsN *a, float_st= atus *s) case float_class_snan: float_raise(float_flag_invalid | float_flag_invalid_snan, s); if (s->default_nan_mode) { - partsN(default_nan)(a, s); + *a =3D partsN(default_nan)(s); } else { partsN(silence_nan)(a, s); } break; case float_class_qnan: if (s->default_nan_mode) { - partsN(default_nan)(a, s); + *a =3D partsN(default_nan)(s); } break; default: @@ -49,7 +49,7 @@ static FloatPartsN *partsN(pick_nan)(FloatPartsN *a, Floa= tPartsN *b, } =20 if (s->default_nan_mode) { - partsN(default_nan)(a, s); + *a =3D partsN(default_nan)(s); return a; } =20 @@ -184,7 +184,7 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN= *a, FloatPartsN *b, return ret; =20 default_nan: - partsN(default_nan)(a, s); + *a =3D partsN(default_nan)(s); return a; } =20 @@ -281,7 +281,7 @@ static void partsN(uncanon_e4m3_overflow)(FloatPartsN *= p, float_status *s, p->exp =3D fmt->exp_max; p->frac_hi =3D E4M3_NORMAL_FRAC_MAX; } else { - partsN(default_nan)(p, s); + *p =3D partsN(default_nan)(s); } } =20 @@ -568,7 +568,7 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Floa= tPartsN *b, } /* Inf - Inf */ float_raise(float_flag_invalid | float_flag_invalid_isi, s); - partsN(default_nan)(a, s); + *a =3D partsN(default_nan)(s); return a; } } else { @@ -641,7 +641,7 @@ static FloatPartsN *partsN(mul)(FloatPartsN *a, FloatPa= rtsN *b, /* Inf * Zero =3D=3D NaN */ if (unlikely(ab_mask =3D=3D float_cmask_infzero)) { float_raise(float_flag_invalid | float_flag_invalid_imz, s); - partsN(default_nan)(a, s); + *a =3D partsN(default_nan)(s); return a; } =20 @@ -796,7 +796,7 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *= a, FloatPartsN *b, goto finish_sign; =20 d_nan: - partsN(default_nan)(a, s); + *a =3D partsN(default_nan)(s); return a; } =20 @@ -864,7 +864,7 @@ static FloatPartsN *partsN(div)(FloatPartsN *a, FloatPa= rtsN *b, return a; =20 d_nan: - partsN(default_nan)(a, s); + *a =3D partsN(default_nan)(s); return a; } =20 @@ -896,7 +896,7 @@ static FloatPartsN *partsN(modrem)(FloatPartsN *a, Floa= tPartsN *b, /* Inf % N; N % 0 */ if (a->cls =3D=3D float_class_inf || b->cls =3D=3D float_class_zero) { float_raise(float_flag_invalid, s); - partsN(default_nan)(a, s); + *a =3D partsN(default_nan)(s); return a; } =20 @@ -1118,7 +1118,7 @@ static void partsN(sqrt)(FloatPartsN *a, float_status= *status, =20 d_nan: float_raise(float_flag_invalid | float_flag_invalid_sqrt, status); - partsN(default_nan)(a, status); + *a =3D partsN(default_nan)(status); } =20 /* diff --git a/fpu/softfloat-specialize.c.inc b/fpu/softfloat-specialize.c.inc index 9ed968c79b..dd65432813 100644 --- a/fpu/softfloat-specialize.c.inc +++ b/fpu/softfloat-specialize.c.inc @@ -118,7 +118,7 @@ static bool parts_is_snan_frac(uint64_t frac, float_sta= tus *status) | The pattern for a default generated deconstructed floating-point NaN. *-------------------------------------------------------------------------= ---*/ =20 -static void parts64_default_nan(FloatParts64 *p, float_status *status) +static FloatParts64 parts64_default_nan(float_status *status) { bool sign =3D 0; uint64_t frac; @@ -134,7 +134,7 @@ static void parts64_default_nan(FloatParts64 *p, float_= status *status) frac =3D deposit64(0, DECOMPOSED_BINARY_POINT - 7, 7, dnan_pattern); frac =3D deposit64(frac, 0, DECOMPOSED_BINARY_POINT - 7, -(dnan_patter= n & 1)); =20 - *p =3D (FloatParts64) { + return (FloatParts64) { .cls =3D float_class_qnan, .sign =3D sign, .exp =3D INT_MAX, @@ -142,17 +142,16 @@ static void parts64_default_nan(FloatParts64 *p, floa= t_status *status) }; } =20 -static void parts128_default_nan(FloatParts128 *p, float_status *status) +static FloatParts128 parts128_default_nan(float_status *status) { /* * Extrapolate from the choices made by parts64_default_nan to fill * in the quad-floating format. If the low bit is set, assume we * want to set all non-snan bits. */ - FloatParts64 p64; - parts64_default_nan(&p64, status); + FloatParts64 p64 =3D parts64_default_nan(status); =20 - *p =3D (FloatParts128) { + return (FloatParts128) { .cls =3D float_class_qnan, .sign =3D p64.sign, .exp =3D INT_MAX, @@ -197,19 +196,18 @@ static void parts128_silence_nan(FloatParts128 *p, fl= oat_status *status) *-------------------------------------------------------------------------= ---*/ floatx80 floatx80_default_nan(float_status *status) { - floatx80 r; /* * Extrapolate from the choices made by parts64_default_nan to fill * in the floatx80 format. We assume that floatx80's explicit * integer bit is always set (this is true for i386 and m68k, * which are the only real users of this format). */ - FloatParts64 p64; - parts64_default_nan(&p64, status); + FloatParts64 p64 =3D parts64_default_nan(status); =20 - r.high =3D 0x7FFF | (p64.sign << 15); - r.low =3D (1ULL << DECOMPOSED_BINARY_POINT) | p64.frac; - return r; + return (floatx80) { + .high =3D 0x7FFF | (p64.sign << 15), + .low =3D (1ULL << DECOMPOSED_BINARY_POINT) | p64.frac, + }; } =20 /*------------------------------------------------------------------------= ---- --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211293; cv=none; d=zohomail.com; s=zohoarc; b=d9kd7DKXheG95GaoPrF3jTvAOMxTSWPhZeIBtfsjE+hS6WM2UxH7vao1KjdrzvqKNYQkTcyjC50SY5kUEHby8a6UdnC7uUE6dC8Fcm2igpoYH64icIIZSkEicBPtpVPHjzLWP027j8UMevHX8UyUx8om2YgBzYptqXgiDiyIFXk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211293; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wWJrfKmeP7SU5fQs6ar9lmfrjUnpO5JxKfUBv73woWo=; b=kJCA/tAdT8GXmYZ0IqG3AZ5nOgdvNby9EXI8KhOkqfntKfy1zXE0OjFugpnP8sc1d7AQ/bWBcqwVbZYQdIEZciQEgxSMpnSke30FsMLYyA629DqsS6WT5pjzZX5ABhMR3vB4ZE5WRH2nLTFdE06O/KwxK3Yu2PfpNwFpV9hIuRc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211293884516.6784276651347; Sun, 26 Apr 2026 06:48:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpR-0007NB-Qb; Sun, 26 Apr 2026 09:47:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoG-0005wL-8a for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:11 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoC-0001WV-Oj for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:07 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2adbfab4501so44256085ad.2 for ; Sun, 26 Apr 2026 06:45:56 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211156; x=1777815956; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wWJrfKmeP7SU5fQs6ar9lmfrjUnpO5JxKfUBv73woWo=; b=E8adwnwhNliTFesxtJvbKqrafhSINE8S6xAk0kFoXqJfUoiHe8NEbVQcCoEXGq+7TI 9hs54uzsUQcHam7GsSxSZJPreluCygNNB8dYUetslxFVg6bxXAuKoH0WNxgUYIH3U7ZV aN9ohAI6TO4LRDzFOAxmyDrudGgpDidstIFuBmjreYzvFyFtftRfr+jaFWMnAfkeMyy9 RgBq5/fNVZ0l8GchCmEYCKyBBt7HR27gqkPdO8UCFS+tqUPC4AzN/lpv2WOZdtKfFXkt //ZV2L3eR7Xk0prHHtqajcCbIUxlseel/lEBy//+U89jTsrlGPJrez0L9Ioq9ITh6LR/ DLaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211156; x=1777815956; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wWJrfKmeP7SU5fQs6ar9lmfrjUnpO5JxKfUBv73woWo=; b=EPX2Xn1NWbHgopcleQFLcNBZn4zeZ6+jKVjVdhT19qUz1Y+bivp3WZWl0Ouzfmqk98 2YpkFRWfmzBFILxvjJdl61axZBGb+ypRnyjBU56sLnPx4vxRRtkcmBBZq5PffUv1jlIx r2QrnPYdQ67qhsCYrl5Xtb4VMXhrpmMvFPLhKYxjvEjnwXf8/EolMrtjMNqL1pXYacct gAxwNcUzCt2f5zwUeuJHOgIKb/s+rS/VNTqUnmeubLc56Nyt7WyjMib3tOFyMlfqg3bT rCMmC+Cpiwd0TJV/EmiXGH8JMguRUeFDrItGPeNpaosmVm3uStsyFp9qGsHfEOp6tF/E ItxA== X-Gm-Message-State: AOJu0YwmccMnKx7oy8A2oa8r8ZhhfKr0gHyieSOTLlO6kWGYTRbPRrZi U+ursc5IyDviJM8QrqAph+sRYspD7OZRoHcP34RWujKXYO/3SKCQoHQRPRo5ElCO+4g58hRSD2R d5UEQzhc= X-Gm-Gg: AeBDieve9Xe0MDIn3Y1os4flw/WYL02OanJRIGf8xzF9vA0xT7IStglB8vS9o6s/Maq ZMS1CF4c0JqJxkhZiPNjzMjHnnqunzsVwXp+hTp9iadvY030y5FB0UI1XAocWb7zWrp1xvkGkPK tzrtWyq300Mshugb35fOikJVoMLiNcl/HVS6LhM/gaqlDwQRcgZVkrJORk1PqNs7JgmO009S/tW k4hakWEeCCLgrP9/l6nizhHiC9qRUCYD4RUT+xDuRaq5hE1fDbGwiQGDNbB5v8dGS4BoJWVpHvq y0L1hH86WjpdCDY/HBVBhb1Gy3/qoygGAOaYu4U8htNo/a4aJqbTPTq5QAoLzrcFaprDIUjchOn 8Jztt00Es/I42WbEFJYl3a7TMWdQ7BFao/JRCO56+tXgJTRgf1zglGJABnNAiI0yI9TG5uoCq5f uHkVVjNvfchsQWnQYCXtqJF1OaxTHkUlOS9sLdny7F X-Received: by 2002:a17:902:aa06:b0:2b4:6664:97d4 with SMTP id d9443c01a7336-2b5f9f83295mr275847935ad.24.1777211155667; Sun, 26 Apr 2026 06:45:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 61/84] fpu: Return struct from parts{64,128}_silence_nan Date: Sun, 26 Apr 2026 23:39:38 +1000 Message-ID: <20260426134002.865628-62-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211295204158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- fpu/softfloat.c | 10 +++++----- fpu/softfloat-parts.c.inc | 6 +++--- fpu/softfloat-specialize.c.inc | 20 ++++++++++++++------ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index fa8913a288..9c1e6fdce4 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -4634,7 +4634,7 @@ float16 float16_silence_nan(float16 a, float_status *= status) FloatParts64 p =3D unpack_raw64(&float16_params, a); =20 p.frac <<=3D float16_params.frac_shift; - parts64_silence_nan(&p, status); + p =3D parts64_silence_nan(&p, status); p.frac >>=3D float16_params.frac_shift; return pack_raw64(&p, &float16_params); } @@ -4644,7 +4644,7 @@ float32 float32_silence_nan(float32 a, float_status *= status) FloatParts64 p =3D unpack_raw64(&float32_params, a); =20 p.frac <<=3D float32_params.frac_shift; - parts64_silence_nan(&p, status); + p =3D parts64_silence_nan(&p, status); p.frac >>=3D float32_params.frac_shift; return pack_raw64(&p, &float32_params); } @@ -4654,7 +4654,7 @@ float64 float64_silence_nan(float64 a, float_status *= status) FloatParts64 p =3D unpack_raw64(&float64_params, a); =20 p.frac <<=3D float64_params.frac_shift; - parts64_silence_nan(&p, status); + p =3D parts64_silence_nan(&p, status); p.frac >>=3D float64_params.frac_shift; return pack_raw64(&p, &float64_params); } @@ -4664,7 +4664,7 @@ bfloat16 bfloat16_silence_nan(bfloat16 a, float_statu= s *status) FloatParts64 p =3D unpack_raw64(&bfloat16_params, a); =20 p.frac <<=3D bfloat16_params.frac_shift; - parts64_silence_nan(&p, status); + p =3D parts64_silence_nan(&p, status); p.frac >>=3D bfloat16_params.frac_shift; return pack_raw64(&p, &bfloat16_params); } @@ -4674,7 +4674,7 @@ float128 float128_silence_nan(float128 a, float_statu= s *status) FloatParts128 p =3D float128_unpack_raw(a); =20 frac128_shl(&p, float128_params.frac_shift); - parts128_silence_nan(&p, status); + p =3D parts128_silence_nan(&p, status); frac128_shr(&p, float128_params.frac_shift); return float128_pack_raw(&p); } diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index ed7080d886..4733755f35 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -23,7 +23,7 @@ static void partsN(return_nan)(FloatPartsN *a, float_stat= us *s) if (s->default_nan_mode) { *a =3D partsN(default_nan)(s); } else { - partsN(silence_nan)(a, s); + *a =3D partsN(silence_nan)(a, s); } break; case float_class_qnan: @@ -109,7 +109,7 @@ static FloatPartsN *partsN(pick_nan)(FloatPartsN *a, Fl= oatPartsN *b, } =20 if (is_snan(ret->cls)) { - partsN(silence_nan)(ret, s); + *ret =3D partsN(silence_nan)(ret, s); } return ret; } @@ -179,7 +179,7 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN= *a, FloatPartsN *b, } =20 if (is_snan(ret->cls)) { - partsN(silence_nan)(ret, s); + *ret =3D partsN(silence_nan)(ret, s); } return ret; =20 diff --git a/fpu/softfloat-specialize.c.inc b/fpu/softfloat-specialize.c.inc index dd65432813..2723bf5e61 100644 --- a/fpu/softfloat-specialize.c.inc +++ b/fpu/softfloat-specialize.c.inc @@ -179,16 +179,24 @@ static uint64_t parts_silence_nan_frac(uint64_t frac,= float_status *status) return frac; } =20 -static void parts64_silence_nan(FloatParts64 *p, float_status *status) +static FloatParts64 parts64_silence_nan(const FloatParts64 *p, + float_status *status) { - p->frac =3D parts_silence_nan_frac(p->frac, status); - p->cls =3D float_class_qnan; + FloatParts64 r =3D *p; + + r.frac =3D parts_silence_nan_frac(r.frac, status); + r.cls =3D float_class_qnan; + return r; } =20 -static void parts128_silence_nan(FloatParts128 *p, float_status *status) +static FloatParts128 parts128_silence_nan(const FloatParts128 *p, + float_status *status) { - p->frac_hi =3D parts_silence_nan_frac(p->frac_hi, status); - p->cls =3D float_class_qnan; + FloatParts128 r =3D *p; + + r.frac_hi =3D parts_silence_nan_frac(r.frac_hi, status); + r.cls =3D float_class_qnan; + return r; } =20 /*------------------------------------------------------------------------= ---- --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211299; cv=none; d=zohomail.com; s=zohoarc; b=d9c2IqEmaWaUOh5m3A/owTg3KQ8t1gOvT8gBLQhB4W351kmdPxkTsJuBhdZTDn8TDV+/aViuhpRPFnuhJ9YxiBucEWBcQC6I8tcDDVP+c/cNQ8eo46EfeffJkOcWqRuTtXrA0od6Ut9rbN5WpNrtqOGePiZ9vldQFEbbUhIzvxk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211299; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RcYkneR9Skc297NkyUYU49GZmHwypHS79RqQoM9N3gU=; b=N0O1zlqEwWfGx0o0eMfhhr5FmgzcyZ9Vp1Rfqe3MmcAVvjDEXwqfTUM8c+LFydq7FTNnbfLSO3BpMkWOILr+qDydXOb2FQ/bHYF0udmH53Zd1DaYbjDv0FR968V3cvLwfLJZVgg2RNdM+M5Z/1RHZXjhZfCT+NqpPTziw6XBg7c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721129905821.781703066425393; Sun, 26 Apr 2026 06:48:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpe-0000CU-4D; Sun, 26 Apr 2026 09:47:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoJ-0005wt-J4 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:13 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoF-0001Wl-Hf for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:11 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2b24fdac394so90577215ad.3 for ; Sun, 26 Apr 2026 06:45:59 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:45:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211158; x=1777815958; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RcYkneR9Skc297NkyUYU49GZmHwypHS79RqQoM9N3gU=; b=Qp08v51X2cXEixNbLglx4d0822xcAUOPaGfIAhl2UkH5oXEOOAPuvnQc33hPQwFhdL wnQj5Reh6pgkhO8y9QWxrBmDx3j49wjuajvBGnx9kC06SyawWgHPVDr5Jboj6Gxobz9V /uNvTigUgKsU8TnfQfZA0F6ZyBOc7vOt7xFwqs9s7JNlpz1R3jGTnJQG62xdMSDwsJny LXBM9gAkKhmoFkWHXnckwJxVzNKMjAQNXKCfICGJIIUNUAzQxOxZ6DEI2GIZqRZ5f0Mf wk/HW6rVp3dIamBHl/UrmNqTPBaosjD76UbbWYFCSm6TWyyZBYtqpcy/huXIUTv73VWO jjmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211158; x=1777815958; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=RcYkneR9Skc297NkyUYU49GZmHwypHS79RqQoM9N3gU=; b=rAoGU+LvGjb7q/ZJG9qNBHPdGRilpo9bG2Cc5MaEM4HJYpYLEec+37kofWN52ToYma n7FDjPDEDb0s3FBKgo4QA8N+AtTPxliHD3OGbMzQ8u+egDBtMLtzaHx9PIKxrLq2W5/Z P6VQ11puKsDHIgNYxZ3ijC8LK9lLwZz7l80MQ6cGhF/Dal9NpnEbD//f4nlqV+VubkCW EcaeeqoYeMMxoq0OJk5q4gD2Oc2WOWoFBJi3nlcrIzGV1nk1OhlFXD4tTElOhhU7/MLF wFSYmkS8PW+3nCIbwWFhqaDKvvdZQXZ4S5UQzvRAPFJt93s/AEpXa+RsglygWTEy3Z7B GCGQ== X-Gm-Message-State: AOJu0YyepvajiywkKVnY+KVkJ1vea/SP8stT2Dtv+n74E2gU5IHah8jq sOHscLmoUCI5YorZS4Gy7TJm6e7tNlXbq9JZIGnoHpwJUy5sVTsWKQIhH64V9hp8LlAo2sjJfvc kqbsTEQg= X-Gm-Gg: AeBDietTBQm0BQNf14KmMb2MAX143NSoUYJwiIaoU3ge+r9Na/JOnG0p3bNhYsg612k vpZEVwWOBaT4cOzbdObUsiMucti7ofiRjFV3eAC2FOhbhUF5yj5xnKKPH5z6tPPiLeHLiUmCgYB NwU0tzgowIRMo5X1XL2ur2UrC/J9j5rEYHhw9aPAbuMajjl2+bCNp6g+BZo6GAMwlCNK6udkQEx /Wadsj3gNsUKHH4KDTRslp5EN4+afM1VhHDhgbsXfsiFy+JZ/7Gf9gKdLfyZurU6mBHnG21ps2S 6nvbrEmv2QD6JnB3lsjQ6rQv93uZe7BU0IHvT/XsjSVifSYFEPRbtTmd+Qn5K5gMT64tc6gr662 K7rfQYLdQkgOyZTYY79VQw3j9TuTbvCgQQppyYfJdnhm7ID5eFwWysYfydCiXIUpUsNZsWPIOYe 6wIW8amWrn3eVcCe6uaOEo7wbKjcmiQvEeWrVqYcyq X-Received: by 2002:a17:902:8b87:b0:2b0:a980:367c with SMTP id d9443c01a7336-2b5f9eb0513mr305330515ad.2.1777211158070; Sun, 26 Apr 2026 06:45:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 62/84] fpu: Return struct from parts{64,128}_return_nan Date: Sun, 26 Apr 2026 23:39:39 +1000 Message-ID: <20260426134002.865628-63-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211301185158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- fpu/softfloat.c | 14 +++++++------- fpu/softfloat-parts.c.inc | 15 ++++++++------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 9c1e6fdce4..7d67e25c17 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -2378,7 +2378,7 @@ static void parts_float_to_e5m2(FloatParts64 *a, floa= t_status *s, bool saturate) switch (a->cls) { case float_class_snan: case float_class_qnan: - parts64_return_nan(a, s); + *a =3D parts64_return_nan(a, s); break; =20 case float_class_inf: @@ -2405,7 +2405,7 @@ static void parts_float_to_e5m2(FloatParts64 *a, floa= t_status *s, bool saturate) static void parts64_float_to_float(FloatParts64 *a, float_status *s) { if (is_nan(a->cls)) { - parts64_return_nan(a, s); + *a =3D parts64_return_nan(a, s); } if (a->cls =3D=3D float_class_denormal) { float_raise(float_flag_input_denormal_used, s); @@ -2415,7 +2415,7 @@ static void parts64_float_to_float(FloatParts64 *a, f= loat_status *s) static void parts128_float_to_float(FloatParts128 *a, float_status *s) { if (is_nan(a->cls)) { - parts128_return_nan(a, s); + *a =3D parts128_return_nan(a, s); } if (a->cls =3D=3D float_class_denormal) { float_raise(float_flag_input_denormal_used, s); @@ -2441,7 +2441,7 @@ static FloatParts64 parts128_to_parts64(FloatParts128= *b, float_status *s) case float_class_qnan: /* Discard the low bits of the NaN. */ r.frac =3D b->frac_hi; - parts64_return_nan(&r, s); + r =3D parts64_return_nan(&r, s); break; default: break; @@ -2461,7 +2461,7 @@ static FloatParts128 parts64_to_parts128(FloatParts64= *b, float_status *s) switch (r.cls) { case float_class_qnan: case float_class_snan: - parts128_return_nan(&r, s); + r =3D parts128_return_nan(&r, s); break; case float_class_denormal: float_raise(float_flag_input_denormal_used, s); @@ -4458,7 +4458,7 @@ static void parts64_log2(FloatParts64 *a, float_statu= s *s, const FloatFmt *fmt) break; case float_class_snan: case float_class_qnan: - parts64_return_nan(a, s); + *a =3D parts64_return_nan(a, s); return; case float_class_zero: float_raise(float_flag_divbyzero, s); @@ -5067,7 +5067,7 @@ float32 float32_exp2(float32 a, float_status *status) break; case float_class_snan: case float_class_qnan: - parts64_return_nan(&xp, status); + xp =3D parts64_return_nan(&xp, status); return float32_round_pack_canonical(&xp, status); case float_class_inf: return xp.sign ? float32_zero : a; diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 4733755f35..ef46dd740c 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -15,25 +15,26 @@ * indicated otherwise. */ =20 -static void partsN(return_nan)(FloatPartsN *a, float_status *s) +static FloatPartsN partsN(return_nan)(const FloatPartsN *a, float_status *= s) { switch (a->cls) { case float_class_snan: float_raise(float_flag_invalid | float_flag_invalid_snan, s); if (s->default_nan_mode) { - *a =3D partsN(default_nan)(s); + return partsN(default_nan)(s); } else { - *a =3D partsN(silence_nan)(a, s); + return partsN(silence_nan)(a, s); } break; case float_class_qnan: if (s->default_nan_mode) { - *a =3D partsN(default_nan)(s); + return partsN(default_nan)(s); } break; default: g_assert_not_reached(); } + return *a; } =20 static FloatPartsN *partsN(pick_nan)(FloatPartsN *a, FloatPartsN *b, @@ -941,7 +942,7 @@ static void partsN(sqrt)(FloatPartsN *a, float_status *= status, break; case float_class_snan: case float_class_qnan: - partsN(return_nan)(a, status); + *a =3D partsN(return_nan)(a, status); return; case float_class_zero: return; @@ -1263,7 +1264,7 @@ static void partsN(round_to_int)(FloatPartsN *a, Floa= tRoundMode rmode, switch (a->cls) { case float_class_qnan: case float_class_snan: - partsN(return_nan)(a, s); + *a =3D partsN(return_nan)(a, s); break; case float_class_zero: case float_class_inf: @@ -1656,7 +1657,7 @@ static void partsN(scalbn)(FloatPartsN *a, int n, flo= at_status *s) switch (a->cls) { case float_class_snan: case float_class_qnan: - partsN(return_nan)(a, s); + *a =3D partsN(return_nan)(a, s); break; case float_class_zero: case float_class_inf: --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211516; cv=none; d=zohomail.com; s=zohoarc; b=VV9wYvUZ9HsaXN63xj/MLD1kthe5Dj9S5eQ0nhGZQPDhgmviJB4MIRug+HOkup+r9iUZz+OovwX9BYTbZJfkOxcp7EBWCxmrxop6F5iPq/qxcIR80TXuKgwpgOLu6PBJigBJaSEGJMb1BRcdS12XEaqzsNoF1GLT2knch2WhWrk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211516; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JqpUFWXlE+yNso214pVWpAnT/3t/2kgkwE5/W87FM+U=; b=MwLy41GvPuKPXxlbh9KqZIXPl8Gt8y8hbi60SxYskVEneesg+RCRP7YDQN1FQnEQzVY6fVSkITznWc5n0YtlVvNx83HHUMl53w2JgHNvRnWecu3GYoeIMCcYYUyCPnwZkiN3UTLcmc0qmM+tTnznDQ+tzzXhHY2fa9q3PDTjvCE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211516319551.9478337327666; Sun, 26 Apr 2026 06:51:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpb-0008U4-CV; Sun, 26 Apr 2026 09:47:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoF-0005wJ-R5 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:11 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoC-0001Xq-KY for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:06 -0400 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-c70f91776fcso3578833a12.0 for ; Sun, 26 Apr 2026 06:46:01 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.45.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211160; x=1777815960; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JqpUFWXlE+yNso214pVWpAnT/3t/2kgkwE5/W87FM+U=; b=kfohX+ImAqS1sYo/H8oq8uHfVtZR8DdAd0RgfEd1mY9+Ci1nwQr0ehzK/42HZJ1yZE n28xUnF9zE90sj+hkd7q8kUkoA3RNtJqspTLzPaDryBb/Nj7nUMwTuvGHzNLbYS4x1/M WBRfU0M3zlurTTabOAZz15e6at8R/fXZ0PbEYxjc4XbYakWHS400Gszpnkjd2Ckcx/go iKR5oG9i5keECskULDw0OWsu5EBzKnCOm7GYgWP4O+Fj7zeREF1HzrfBxHtEnqvcYmvI F3urPKO0NoExVaOWAuxW/2I9bZmI8tqMA98w6MKZYnz2w5QnPJaW5UD2M+6OVd6vAhfI rVzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211160; x=1777815960; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JqpUFWXlE+yNso214pVWpAnT/3t/2kgkwE5/W87FM+U=; b=QeA+rsNezQczP9ry2KUEa4r/aoWPKDZAytATLroFjDbgUYAX1FLefdHUAaPVD6Bxos /v30wQVdJ2WY9UxPCdBo+otIdULmSzhXRE8Unxa7cGEDVGmdYG+tLPfravcqe1U5zh55 e5wOjIdfQziPbjJjQ0rzKmZPyR7Hd3NmCrt+kAo4EHrqG/imUvVGceYUaexdBzu88iIb yVk+ZH9QYXxHZPknQvB4s/43ctMhFnLfnbw0PIggM4ulY1HGsuQNQMUW+rFwHKFOhvF8 hh6ppAsjAfzGcZ3pVa3/im9B3jafL5Iit86Dd3Zma8Myqm652AGcq188a5R7V/oYA811 QUzg== X-Gm-Message-State: AOJu0YwBq/t4EmL2k7a4EMezN/f8J0VOfBTBxvQm8NCbjAcuQ2dvl521 t0bG/xmIWiqU6RERZgt8HoDVBWPocDW23NoOYInf07aGQLj4ZiDtzuHSrLRpA8UHEbQezyBrhfm IofH3zsg= X-Gm-Gg: AeBDieubyO0uxEqbcQoPQYnFvRHRQxzYukgP5RxRORwufDhrOsQY3XWOKM86iXp22K9 JhNuh83U2VVfaKG+E/LpyGPwNDAX+8gz/IgARfN/qXNV2yT+Q4LxZVIwRSB37aAprWXYhiaY5DC xhBdvJ80n5+bbWiK31DDwRRoeDeV2Iha7WsRirQyqFHqTv0czjcv5abLZNC0Z4NyC/S2fi+OIme TbxRgSEheQvFCxysmwXXQ9hdfNwMiubufap0z83QIfofkmMWuqMYeMN4Xyhz/OQWYhWD8B+O3+E pMJ/b5FC5JIXUXL42utA+xK+rg7y+b5dNb8xJDpnVImE9ImuC/BsQR3+d5F3bILXLa5nfUdwtOG ixNPEJ547Mnd21MxQLNiB4LjJ2WrPvyR77/YGWDQoxLqX+zz3F3g35otTK1yC0NBiflwKkRTKYr Y4mCbdDrrxh+bYqMm2uHpIWABrXMolkcyBcvdcfFWo X-Received: by 2002:a17:902:d592:b0:2b0:ccad:de1a with SMTP id d9443c01a7336-2b5f9f3aa58mr387107155ad.30.1777211160486; Sun, 26 Apr 2026 06:46:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 63/84] fpu: Sink exp_bias adjustment in float64r32_pack_raw Date: Sun, 26 Apr 2026 23:39:40 +1000 Message-ID: <20260426134002.865628-64-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211518022154100 Content-Type: text/plain; charset="utf-8" Share the float32->float64 bias adjustment from both the normal and denormal paths. Signed-off-by: Richard Henderson --- fpu/softfloat.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 7d67e25c17..b7d461bca4 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1412,14 +1412,12 @@ static float64 float64r32_pack_raw(FloatParts64 *p) * in normalized form for float64. Adjust, per canonicalize. */ int shift =3D frac64_normalize(p); - p->exp =3D (float32_params.frac_shift - - float32_params.exp_bias - shift + 1 + - float64_params.exp_bias); frac64_shr(p, float64_params.frac_shift); + p->exp =3D float32_params.frac_shift - shift + 1; } else { frac64_shl(p, float32_params.frac_shift - float64_params.frac_= shift); - p->exp +=3D float64_params.exp_bias - float32_params.exp_bias; } + p->exp +=3D float64_params.exp_bias - float32_params.exp_bias; break; case float_class_snan: case float_class_qnan: --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211827; cv=none; d=zohomail.com; s=zohoarc; b=Uo8O5Gn/DdIhTU4jb4IVYVC3UTRXpXmIM8pfX+SWLmQD0D/E5oVve1fw33V8RKtyTtIsztiQBZ5AYSWYcuSmjAvVQeQznqPF0x0G7Ph4kroI1Iu90JHvmoxgjxNgA4JHNZsZcuajsJ7n6kyV+II35cRHYxadCso5Q8SJDS434Rc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211827; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jbVuK9RdGSnecOOwaf1HA58zPz8tW1paOnqbUnPnZMw=; b=E31P8J1EoE4fiA6jWK0ap0nqAdBHXhTGFMXicZd4d8naLEdobyO3avstS68yDOMAP3DTpfZsq5sIgbdXIvcR6GOn5mY4YKRNwKKa2Xf3OQfVzcNml9AlL3zw1QEs0vL7TCHB0u6/YvtdbF6qZSwTRVcKP51T0bnd3QSbcXuK9F8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721182796650.33697902197139; Sun, 26 Apr 2026 06:57:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpY-00089L-JY; Sun, 26 Apr 2026 09:47:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoH-0005wS-1T for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:11 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoD-0001YN-GB for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:08 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2b45cb89f7eso58486395ad.0 for ; Sun, 26 Apr 2026 06:46:04 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211163; x=1777815963; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jbVuK9RdGSnecOOwaf1HA58zPz8tW1paOnqbUnPnZMw=; b=YYsWuKbhF0Gr005oAvQOFRhDBir1kzv8UY3Fyq6XLTta/NuJ5r51YFnt/BhvdJ8r4S zalwSB+juQj9IwE0GF2Xi2Dq1Phgygn4GeI724IpVgF5apm5PnfLrjl3M3TOSvE4APpB iw/ZUEBD5/WVn28RjFRau+9kja1F6/JMM2XfrYGOkfIGc65t7w6fo4ZIw+mpqgYTbygV tM5uZoC2fshNw5kK2Qmg2aFD29GGSaglB5uS/fcbabvxp75Em1Sc+eGKxsJrVwpxCTvL OuXIbOLJLzttldEflYT0sP9UcDWSZ5AQPlkQhL4afNHWvuGfTBUTyRGJJS2AhQ11mJKZ 1rpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211163; x=1777815963; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=jbVuK9RdGSnecOOwaf1HA58zPz8tW1paOnqbUnPnZMw=; b=E//Fshd88R/4EuY/ukmPAugwAW70R1IiENnQKKwXnSBvVAl+HH9Z7XAUjiLKXjVW+z PP4LzpYUNsZ+4kIAfmfVm/6fqtbQu6U2AUBC4SR/4ykyOo7CFbdIBASvjvT6b7aNJU2j VIvfS121qRcluexTpWerlOW4XIa5kzecnFencmv/0at54c4I++izGU3pif2+w6WtCZvu JzozTtre/wafzXRc4JcOavVPo/IL1or2HjwDO/Mg3Hv836U+lxbWgVWVEpF7DkFvKdEl 2FRe6uZS4haU20AQESQw7cv6Tv5r5lWdOK3EfEoYcgOrAY/prjgZXg6k5eZKDOfP8/YK OJWA== X-Gm-Message-State: AOJu0YyaCYW4TecsbkqnzbcCfJSEMFGqWqaPW8gZOSjc6fPh4mXvw1fz JR1FcLuW5nbR8quzGj47YyF//GVspdAUbMGlwdouWEdJ722SVLa20Av9ELoTyxc+R7L/7+Xvfhe QxD0DhNg= X-Gm-Gg: AeBDieskGv0PbXYeuy9Kksb1trhAlvO2JxhY/AYGxFg6eCmu59mH0wbjaNiXgky8ozY noZMNCi/tyqxt0I/zid1u3rRL5Oy1kQYAm8x275PhEgi69Q9Xf3vmAWyhKezT6TQQkwvkLOserV Cn1YcLz7ZzvXPlhD6TsjhVut2gLzNEOlQHS3PabVvpoObz6rIZnuUvVje0AY2/t4piwuJUroo/U 6B0/HdglvZ8oLYOFaHlIVGFHgJaV1607luo7um0P54voSlLkpaS+4oL476trnUWDdvelecRoq0r qacJRuD1TTjRxBRNmZCoZoMuOSnz4xGHBdn2HMhaymrpRxHHgtwWrxTLOF1AFIOs83YzF7igeTB MNdn5EImHJtwC/bpsHy6J26oiLWXpJ/NIB9T+7sTNKWUL5HCTsTHGBxorwKZ8qJN6IzFFG+q2Bn W1vetKSi3eXNRrrQVcXRrP6kfUVJS+2QWktme6Cg7u X-Received: by 2002:a17:903:240e:b0:2b9:41ac:d07 with SMTP id d9443c01a7336-2b941ac0eccmr66858975ad.14.1777211163031; Sun, 26 Apr 2026 06:46:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 64/84] fpu: Return struct from parts{64,128}_pick_nan Date: Sun, 26 Apr 2026 23:39:41 +1000 Message-ID: <20260426134002.865628-65-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211829079158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- fpu/softfloat.c | 8 ++++---- fpu/softfloat-parts.c.inc | 28 ++++++++++++++++------------ 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index b7d461bca4..246209072e 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -4765,15 +4765,15 @@ void normalizeFloatx80Subnormal(uint64_t aSig, int3= 2_t *zExpPtr, =20 floatx80 propagateFloatx80NaN(floatx80 a, floatx80 b, float_status *status) { - FloatParts128 pa, pb, *pr; + FloatParts128 pa, pb; =20 if (!floatx80_unpack_canonical(&pa, a, status) || !floatx80_unpack_canonical(&pb, b, status)) { return floatx80_default_nan(status); } =20 - pr =3D parts128_pick_nan(&pa, &pb, status); - return floatx80_round_pack_canonical(pr, status); + pa =3D parts128_pick_nan(&pa, &pb, status); + return floatx80_round_pack_canonical(&pa, status); } =20 /*------------------------------------------------------------------------= ---- @@ -5120,7 +5120,7 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, { /* POp table "Results: DIVIDE TO INTEGER (Part 1 of 2)" */ if ((float_cmask(a->cls) | float_cmask(b->cls)) & float_cmask_anynan) { - *r =3D *parts64_pick_nan(a, b, status); + *r =3D parts64_pick_nan(a, b, status); *n =3D *r; *cc =3D 1; } else if (a->cls =3D=3D float_class_inf || b->cls =3D=3D float_class_= zero) { diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index ef46dd740c..40ea7e3a39 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -37,11 +37,11 @@ static FloatPartsN partsN(return_nan)(const FloatPartsN= *a, float_status *s) return *a; } =20 -static FloatPartsN *partsN(pick_nan)(FloatPartsN *a, FloatPartsN *b, - float_status *s) +static FloatPartsN partsN(pick_nan)(const FloatPartsN *a, const FloatParts= N *b, + float_status *s) { bool have_snan =3D false; - FloatPartsN *ret; + const FloatPartsN *ret; int cmp; =20 if (is_snan(a->cls) || is_snan(b->cls)) { @@ -50,8 +50,7 @@ static FloatPartsN *partsN(pick_nan)(FloatPartsN *a, Floa= tPartsN *b, } =20 if (s->default_nan_mode) { - *a =3D partsN(default_nan)(s); - return a; + return partsN(default_nan)(s); } =20 switch (s->float_2nan_prop_rule) { @@ -110,9 +109,9 @@ static FloatPartsN *partsN(pick_nan)(FloatPartsN *a, Fl= oatPartsN *b, } =20 if (is_snan(ret->cls)) { - *ret =3D partsN(silence_nan)(ret, s); + return partsN(silence_nan)(ret, s); } - return ret; + return *ret; } =20 static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN *a, FloatPartsN *b, @@ -605,7 +604,8 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Floa= tPartsN *b, return b; =20 p_nan: - return partsN(pick_nan)(a, b, s); + *a =3D partsN(pick_nan)(a, b, s); + return a; } =20 /* @@ -647,7 +647,8 @@ static FloatPartsN *partsN(mul)(FloatPartsN *a, FloatPa= rtsN *b, } =20 if (unlikely(ab_mask & float_cmask_anynan)) { - return partsN(pick_nan)(a, b, s); + *a =3D partsN(pick_nan)(a, b, s); + return a; } =20 /* Multiply by 0 or Inf */ @@ -833,7 +834,8 @@ static FloatPartsN *partsN(div)(FloatPartsN *a, FloatPa= rtsN *b, =20 /* All the NaN cases */ if (unlikely(ab_mask & float_cmask_anynan)) { - return partsN(pick_nan)(a, b, s); + *a =3D partsN(pick_nan)(a, b, s); + return a; } =20 if ((ab_mask & float_cmask_denormal) && b->cls !=3D float_class_zero) { @@ -891,7 +893,8 @@ static FloatPartsN *partsN(modrem)(FloatPartsN *a, Floa= tPartsN *b, =20 /* All the NaN cases */ if (unlikely(ab_mask & float_cmask_anynan)) { - return partsN(pick_nan)(a, b, s); + *a =3D partsN(pick_nan)(a, b, s); + return a; } =20 /* Inf % N; N % 0 */ @@ -1514,7 +1517,8 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, Fl= oatPartsN *b, return is_nan(a->cls) ? b : a; } =20 - return partsN(pick_nan)(a, b, s); + *a =3D partsN(pick_nan)(a, b, s); + return a; } =20 if (ab_mask & float_cmask_denormal) { --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211486; cv=none; d=zohomail.com; s=zohoarc; b=kPw9kgQt44GknCIBu64nlgdU9hdl4I+Ebd6vMvs/FAmZXmzq51P0O2FzLGOAxRWQiQS4SIZ3tqo0Q4zckeog6aY/lKqHdcRzIOioa17vmTbrY9DW8O1VA234lmYVebwnHt/OBKUb+Jppg8Ktf0x/CEhh1TB2LTAaqoYvSOnVuh4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211486; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=beW50+D1g4WbAR+Nda9ug1MBM7TyhcdB89Yl6qrMgjA=; b=RyF3rmyKSxJaISzSy4zVwh08mW8+fcqY7gDo8GZMPGNkWBDoxIuzSdJx0QSllM20+UsiPRSvxLQ6YJjJkbabXh4fJqzF2CY9GJitbf51APLP/xH4RroB9/GVmLp+3snXtXw4nuRxfLj/Iu40OyEMcqa9uxV0Logw+Ex7lPKlvpU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211486033320.63754465196723; Sun, 26 Apr 2026 06:51:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpe-0000M4-Vw; Sun, 26 Apr 2026 09:47:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoS-000643-Cf for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:21 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoF-0001Zg-M2 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:13 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2ad21f437eeso60077045ad.0 for ; Sun, 26 Apr 2026 06:46:06 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211166; x=1777815966; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=beW50+D1g4WbAR+Nda9ug1MBM7TyhcdB89Yl6qrMgjA=; b=vtkqN7gUuYiVdig1WmW64JLUtJReLXHKSunTdcRyTGgZAKkq14Z6B+IetIx5QsSk++ tat4f1Mhav6HT0P/EAHWeXQQ5Gye6MShLtNNDY2kJXJ5e5A7me1hbKbrgEuk7oZjjhV+ RLc29JUQGXYgsGApAUtkcQo28Ogytk+yA7B+F557YLrnwB8AQ0TmMeCKaA4yNy36QMtT x4yzk9/G3gnVhuSL9R96aGYCzFU9G6Y8jfhX9huYw2yOoQqurKzBRXgwkfN/Z4n1lGNJ qj0+JxTbxJXcDtX814QS6uhnxHtfcLxKrjuEnlO6zwDXsCc95rwXpiCNXiZbyzWkqjk8 VRpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211166; x=1777815966; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=beW50+D1g4WbAR+Nda9ug1MBM7TyhcdB89Yl6qrMgjA=; b=LmAF1Fgyma7+HsUeZibfg475yZIhZWoSozKlnfunnFG2cxmAysIem28le0s1KtVNiu DricDgrD1C0rFvVl+sNZJ2shNyuyX4WzTKzc1MznBK1zpQFSPpq/GjjG0rxllxf0YOeH eUYNbnfGxvj5UVJsiD+VVghLfmTkq4nHnltRcGNPpvGawExFYHEEmdpdYnhmNX+zszUV grUeNvm/ZVZscLX2+VNZzinqpL33M9RtAGyz6vFUYii59ALksI//oCTqcHBW8IMP2H4Q 16EVy94qMYKLPC6uUhO5BgasToEE8A1CurTlNvdjwevW5MmPp8inqXvtAYLbIMp+P6XF paVA== X-Gm-Message-State: AOJu0YzsG5u/7Q5P99JWTJLtEPM895IKtjRe6axU47P5xi1hoSMtY18c arfcJWEYJs4qrCXTvVCgoM2y0aISNQAZDdKToPsXVFqTz1mk8YZ7EMU3PHQiEG9k2uBRdfMuyUB aBHLHiMk= X-Gm-Gg: AeBDievB1Yahqn2sS7o9bR4sx74Zidhp/zCTPHU6N4gKSFCPugi18rz/VPUCJyVtIYQ +2KK5hMApBvIj1vL/oloSF31xCF0U/VCo2x2+VxKGTet3bP5p2GeYuB6h4ppL6sqVsoaYs0TCE8 803/W6gX3VF+yBTD1WWmwUU4toBODw5S0P8ISE7Qi3WK1ZQhVyCfnkj/5gM/61j4YWjVao6NmhO CiD4xKFfxuDreiYTFuovze7MqTOJsxuKETBOdCwihOS8BLHEpfgvPC937P4KwtwBE4FJExsts+e ScV7M8lw6GX/tF3s8apNIsL3Tc5RHyUpFeE7gMTea5B3fYDhymvCnu5KaUDfKXWs62y/xXuwsn5 g23pTYQVbEp1YqDWanwEOBAAbi6uxueDvXvgQlmMtavDHOY8re9lQyl9L/y3MEEFP/dF/aMOITn +wi8XTgAhPrMMUlK0dP5rLQzLLALYNxnP8lY8ryQNWxDYDnscrgK8= X-Received: by 2002:a17:903:166e:b0:2b4:64cf:e8f8 with SMTP id d9443c01a7336-2b5f9dbcd22mr362877915ad.2.1777211165515; Sun, 26 Apr 2026 06:46:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 65/84] fpu: Return struct from parts{64,128}_div Date: Sun, 26 Apr 2026 23:39:42 +1000 Message-ID: <20260426134002.865628-66-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211487894158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- fpu/softfloat.c | 34 ++++++++++++++--------------- fpu/softfloat-parts.c.inc | 45 +++++++++++++++++---------------------- 2 files changed, 37 insertions(+), 42 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 246209072e..6d69b61c7f 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -2129,9 +2129,9 @@ float16 float16_div(float16 a, float16 b, float_statu= s *status) { FloatParts64 pa =3D float16_unpack_canonical(a, status); FloatParts64 pb =3D float16_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_div(&pa, &pb, status); + FloatParts64 pr =3D parts64_div(&pa, &pb, status); =20 - return float16_round_pack_canonical(pr, status); + return float16_round_pack_canonical(&pr, status); } =20 static float32 QEMU_SOFTFLOAT_ATTR @@ -2139,9 +2139,9 @@ soft_f32_div(float32 a, float32 b, float_status *stat= us) { FloatParts64 pa =3D float32_unpack_canonical(a, status); FloatParts64 pb =3D float32_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_div(&pa, &pb, status); + FloatParts64 pr =3D parts64_div(&pa, &pb, status); =20 - return float32_round_pack_canonical(pr, status); + return float32_round_pack_canonical(&pr, status); } =20 static float64 QEMU_SOFTFLOAT_ATTR @@ -2149,9 +2149,9 @@ soft_f64_div(float64 a, float64 b, float_status *stat= us) { FloatParts64 pa =3D float64_unpack_canonical(a, status); FloatParts64 pb =3D float64_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_div(&pa, &pb, status); + FloatParts64 pr =3D parts64_div(&pa, &pb, status); =20 - return float64_round_pack_canonical(pr, status); + return float64_round_pack_canonical(&pr, status); } =20 static float hard_f32_div(float a, float b) @@ -2216,9 +2216,9 @@ float64 float64r32_div(float64 a, float64 b, float_st= atus *status) { FloatParts64 pa =3D float64_unpack_canonical(a, status); FloatParts64 pb =3D float64_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_div(&pa, &pb, status); + FloatParts64 pr =3D parts64_div(&pa, &pb, status); =20 - return float64r32_round_pack_canonical(pr, status); + return float64r32_round_pack_canonical(&pr, status); } =20 bfloat16 QEMU_FLATTEN @@ -2226,9 +2226,9 @@ bfloat16_div(bfloat16 a, bfloat16 b, float_status *st= atus) { FloatParts64 pa =3D bfloat16_unpack_canonical(a, status); FloatParts64 pb =3D bfloat16_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_div(&pa, &pb, status); + FloatParts64 pr =3D parts64_div(&pa, &pb, status); =20 - return bfloat16_round_pack_canonical(pr, status); + return bfloat16_round_pack_canonical(&pr, status); } =20 float128 QEMU_FLATTEN @@ -2236,22 +2236,22 @@ float128_div(float128 a, float128 b, float_status *= status) { FloatParts128 pa =3D float128_unpack_canonical(a, status); FloatParts128 pb =3D float128_unpack_canonical(b, status); - FloatParts128 *pr =3D parts128_div(&pa, &pb, status); + FloatParts128 pr =3D parts128_div(&pa, &pb, status); =20 - return float128_round_pack_canonical(pr, status); + return float128_round_pack_canonical(&pr, status); } =20 floatx80 floatx80_div(floatx80 a, floatx80 b, float_status *status) { - FloatParts128 pa, pb, *pr; + FloatParts128 pa, pb; =20 if (!floatx80_unpack_canonical(&pa, a, status) || !floatx80_unpack_canonical(&pb, b, status)) { return floatx80_default_nan(status); } =20 - pr =3D parts128_div(&pa, &pb, status); - return floatx80_round_pack_canonical(pr, status); + pa =3D parts128_div(&pa, &pb, status); + return floatx80_round_pack_canonical(&pa, status); } =20 /* @@ -5140,8 +5140,8 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, uint32_t r_flags; =20 /* Compute precise quotient */ - q_buf =3D *a; - q =3D parts64_div(&q_buf, b, status); + q_buf =3D parts64_div(a, b, status); + q =3D &q_buf; =20 /* * Check whether two closest integers can be precisely represented, diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 40ea7e3a39..ad53286efc 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -807,68 +807,63 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN= *a, FloatPartsN *b, * corresponding value `b'. The operation is performed according to * the IEC/IEEE Standard for Binary Floating-Point Arithmetic. */ -static FloatPartsN *partsN(div)(FloatPartsN *a, FloatPartsN *b, - float_status *s) +static FloatPartsN partsN(div)(const FloatPartsN *a, const FloatPartsN *b, + float_status *s) { int ab_mask =3D float_cmask(a->cls) | float_cmask(b->cls); - bool sign =3D a->sign ^ b->sign; + FloatPartsN r =3D *a; + + r.sign ^=3D b->sign; + r.exp -=3D b->exp; =20 if (likely(cmask_is_only_normals(ab_mask))) { if (ab_mask & float_cmask_denormal) { float_raise(float_flag_input_denormal_used, s); } - a->sign =3D sign; - a->exp -=3D b->exp + fracN(div)(a, b); - return a; + r.exp -=3D fracN(div)(&r, b); + return r; } =20 /* 0/0 or Inf/Inf =3D> NaN */ if (unlikely(ab_mask =3D=3D float_cmask_zero)) { float_raise(float_flag_invalid | float_flag_invalid_zdz, s); - goto d_nan; + return partsN(default_nan)(s); } if (unlikely(ab_mask =3D=3D float_cmask_inf)) { float_raise(float_flag_invalid | float_flag_invalid_idi, s); - goto d_nan; + return partsN(default_nan)(s); } =20 /* All the NaN cases */ if (unlikely(ab_mask & float_cmask_anynan)) { - *a =3D partsN(pick_nan)(a, b, s); - return a; + return partsN(pick_nan)(a, b, s); } =20 if ((ab_mask & float_cmask_denormal) && b->cls !=3D float_class_zero) { float_raise(float_flag_input_denormal_used, s); } =20 - a->sign =3D sign; - /* Inf / X */ - if (a->cls =3D=3D float_class_inf) { - return a; + if (r.cls =3D=3D float_class_inf) { + return r; } =20 /* 0 / X */ - if (a->cls =3D=3D float_class_zero) { - return a; + if (r.cls =3D=3D float_class_zero) { + return r; } =20 /* X / Inf */ if (b->cls =3D=3D float_class_inf) { - a->cls =3D float_class_zero; - return a; + r.cls =3D float_class_zero; + return r; } =20 /* X / 0 =3D> Inf */ - g_assert(b->cls =3D=3D float_class_zero); + assert(b->cls =3D=3D float_class_zero); float_raise(float_flag_divbyzero, s); - a->cls =3D float_class_inf; - return a; - - d_nan: - *a =3D partsN(default_nan)(s); - return a; + r.cls =3D float_class_inf; + return r; } =20 /* --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211648; cv=none; d=zohomail.com; s=zohoarc; b=F5yxqpO89yvcVSNqkIIt29EA9CV0FcjR+UWI18+KJWGUWLl1yO8kLRgimhKjVHlngVvRns5q5S7TFdWl+AJ1dj9KhQJaDYjUBwM5C2qpAs6Hd+XwSPgX4r2BSFqloEyMklpWI71zcrlL1CESoYMQOyoOZKCvChGuu5JBfGcjVaM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211648; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=msDM/QRI7QIDCfItuOZ2/Z+lYJlpqN4Ugy4Q7HtDfI4=; b=Elc9o5sXuPCVOUfITiUv9R8skhPtKIAc7M3yeuFKvliNG5ygl7RLvKM+NALSpgNwxjHnEo8dF8e5TaD1iF8m5WTdBbsi9gJxy/6to0xcR1c7F7OljmvhhnHvMxPLcYFJ+mME7R2w7o5CQXgfWRlIMDQrpt1eLEVtfacEBJzMONA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211648678864.2413562936259; Sun, 26 Apr 2026 06:54:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpY-00084C-2h; Sun, 26 Apr 2026 09:47:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoS-000641-Am for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:21 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoH-0001ad-IM for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:13 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2ad9a9be502so58240245ad.0 for ; Sun, 26 Apr 2026 06:46:09 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211168; x=1777815968; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=msDM/QRI7QIDCfItuOZ2/Z+lYJlpqN4Ugy4Q7HtDfI4=; b=G7u43X9jf5p7UQJKPHriAaoiYXSgh0RwCVpUtKMjs0+tw6iakAD4nsHlEw22c/NEcI Khli1da7XrzmTVrlO7dPbd/r4tcjfAZ699NiyD98ULJXD1zXEdVWKMY4jG8BWb/kUVN+ Xa5Hb8h3u+M0A+wWQDBseNhP3uWWruVAqJb4sj3HcvSzx3qjyse1e5pOQfjrp3rXiHxG R7UszPvuxV9ssKAxvmtFOJ4qmwIpdj+BjihjBqQSoAxbkxkYCz6niALYfd64H1o5yl7D iSiPY3l5QcJUM83fKUvLKSdLpYhi6TwNR3d2L4YCa9k7/cLFpR7U1bOMloYxODDRjCyd 7CRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211168; x=1777815968; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=msDM/QRI7QIDCfItuOZ2/Z+lYJlpqN4Ugy4Q7HtDfI4=; b=ISaUk2zfow9Ipz7LZM3wpRK4tISR6jmR8g7Wdxjs9/6Ow//ypcqGnX2I8iVQF+jsOh 3rf7dd6SkUpJhvFHPJO8ACk2TCZho9HTqWovmFTBzsHTzCGn0V3QD+TbVV+X2SbTl3WS KMz+UYfMIFTF/2Xn2lQY5/DVbCLJa0HaFJDC0YVwaprXlNggmKAU62cswC90Ue3A3H6J tIkzIMMiFaMdPX1e3Ue0W0JEVu1lzxSAclg2tocSpObUgpG6y0jIzDPSTfMZGxFgEK2B m01mDOqizmWrZEMLmI0W2U2b640pmxbXMB8gDRiQIZBTkkXeFZrUuuZa5GCizkgdASl1 WEvw== X-Gm-Message-State: AOJu0YwYNedd/7KSXtRSjDXxOFuTUM9ty68gWob/aD/qSIlQi9c06fnq AXPYaXePUllEf31KkEqgoDGU25NatTjVdrwxVy4nW1+fUPm11AQ8vpM1WpkeGfV9aGANqPcl+tq Diuwifkc= X-Gm-Gg: AeBDievERDYT4g485ozBPCdr6qVKrMSOzt1i/te1DJB2mANvaGOx2BxAN08RCp+SofP rFecP1e1WPS6pFV7XR4ShA9Wiia7TJIUT0oMU3GQx9CvMP57Wfr+lHzKgzedZzmbrfgAwvhMgQg +a/EDX2qb0KSTEG6PfNz57yvl5GV2GkK35QsrMtlsFbt97vVGO4sDTxeRP0tGn4MHedNSh+SUMW g362wIjaMcJHrRgmsMD70WHHZls22+7Wl+AgWJqyWlOMnVPGfdeppr6LfOp+suDxvIJvG/bGzrZ f5N0uG1KXY5vmyR3NvjjHeoYkqpzZxFbjans2DEozB1ONYbAB3ezOTVb7fUeCtWylj+U8P1RmTl Bx6jRdrcAjTVlaBbBzu9QftHcjBWYDnz4lpdZqEZ+UjnNxKwNf6+jgi7spEFwYrKpMHClzgr7Tv z27ug5JwUc38Wa1QUvDoaxWmZACp5TMl5HsGfs++IN7lIEcpgBf38= X-Received: by 2002:a17:903:37c4:b0:2b7:abc0:3bd7 with SMTP id d9443c01a7336-2b7abc0448fmr151910765ad.9.1777211168046; Sun, 26 Apr 2026 06:46:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 66/84] fpu: Return struct from parts{64,128}_round_to_int Date: Sun, 26 Apr 2026 23:39:43 +1000 Message-ID: <20260426134002.865628-67-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211650625158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- fpu/softfloat.c | 19 ++++++++++++------- fpu/softfloat-parts.c.inc | 21 ++++++++++++--------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 6d69b61c7f..b71bd49483 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -2738,7 +2738,8 @@ float16 float16_round_to_int(float16 a, float_status = *s) { FloatParts64 p =3D float16_unpack_canonical(a, s); =20 - parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &float16_params= ); + p =3D parts64_round_to_int(&p, s->float_rounding_mode, 0, s, + &float16_params); return float16_round_pack_canonical(&p, s); } =20 @@ -2746,7 +2747,8 @@ float32 float32_round_to_int(float32 a, float_status = *s) { FloatParts64 p =3D float32_unpack_canonical(a, s); =20 - parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &float32_params= ); + p =3D parts64_round_to_int(&p, s->float_rounding_mode, 0, s, + &float32_params); return float32_round_pack_canonical(&p, s); } =20 @@ -2754,7 +2756,8 @@ float64 float64_round_to_int(float64 a, float_status = *s) { FloatParts64 p =3D float64_unpack_canonical(a, s); =20 - parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &float64_params= ); + p =3D parts64_round_to_int(&p, s->float_rounding_mode, 0, s, + &float64_params); return float64_round_pack_canonical(&p, s); } =20 @@ -2762,7 +2765,8 @@ bfloat16 bfloat16_round_to_int(bfloat16 a, float_stat= us *s) { FloatParts64 p =3D bfloat16_unpack_canonical(a, s); =20 - parts64_round_to_int(&p, s->float_rounding_mode, 0, s, &bfloat16_param= s); + p =3D parts64_round_to_int(&p, s->float_rounding_mode, 0, s, + &bfloat16_params); return bfloat16_round_pack_canonical(&p, s); } =20 @@ -2770,7 +2774,8 @@ float128 float128_round_to_int(float128 a, float_stat= us *s) { FloatParts128 p =3D float128_unpack_canonical(a, s); =20 - parts128_round_to_int(&p, s->float_rounding_mode, 0, s, &float128_para= ms); + p =3D parts128_round_to_int(&p, s->float_rounding_mode, 0, s, + &float128_params); return float128_round_pack_canonical(&p, s); } =20 @@ -2782,8 +2787,8 @@ floatx80 floatx80_round_to_int(floatx80 a, float_stat= us *status) return floatx80_default_nan(status); } =20 - parts128_round_to_int(&p, status->float_rounding_mode, 0, status, - &floatx80_params[status->floatx80_rounding_precisio= n]); + p =3D parts128_round_to_int(&p, status->float_rounding_mode, 0, status, + &floatx80_params[status->floatx80_rounding_p= recision]); return floatx80_round_pack_canonical(&p, status); } =20 diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index ad53286efc..642ad5dfb9 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1255,24 +1255,27 @@ static bool partsN(round_to_int_normal)(FloatPartsN= *a, FloatRoundMode rmode, return true; } =20 -static void partsN(round_to_int)(FloatPartsN *a, FloatRoundMode rmode, - int scale, float_status *s, - const FloatFmt *fmt) +static FloatPartsN partsN(round_to_int)(const FloatPartsN *a, + FloatRoundMode rmode, + int scale, float_status *s, + const FloatFmt *fmt) { switch (a->cls) { case float_class_qnan: case float_class_snan: - *a =3D partsN(return_nan)(a, s); - break; + return partsN(return_nan)(a, s); case float_class_zero: case float_class_inf: - break; + return *a; case float_class_normal: case float_class_denormal: - if (partsN(round_to_int_normal)(a, rmode, scale, fmt->frac_size)) { - float_raise(float_flag_inexact, s); + { + FloatPartsN r =3D *a; + if (partsN(round_to_int_normal)(&r, rmode, scale, fmt->frac_si= ze)) { + float_raise(float_flag_inexact, s); + } + return r; } - break; default: g_assert_not_reached(); } --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211734; cv=none; d=zohomail.com; s=zohoarc; b=OeAESfwav73wWVMz7NYGkEdLyCwvTxq20xTSy1yUX8cbCdMUYV7T8GOg0Ktj8wm0hkiJat6SOvbGWAp4SE+P5/tcuXbJVlgTCZogcCIgzckWZy39fo3YgMXXF+BVU676xszxngzHqo4asZw06fUzES7RQH5427ZIwdbbzymnGKo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211734; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=t8q92mP0WsVg7jShnJO3IJxQ7Z8BkHGBrtVLkPQnGUU=; b=bzCPmud3UQMWzE5mgm5EHJoqHEgpsCtqmc2D+m6hSVkhNVfQd1t37wP2uHRaJLWY4u8LIOZTK7yZ1VOZj6bx91cxk2pAGLxvvJdKot7Hxe5ULUhPd+1Pd7HnkpPYx02dwiN5w2MLprWMxoiAz1iIJUs3EJjvhHaATHqKjEcXgao= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211734844925.3292578579722; Sun, 26 Apr 2026 06:55:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpa-0008Ni-17; Sun, 26 Apr 2026 09:47:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoU-00066N-RM for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:25 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoQ-0001bc-26 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:21 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2ab46931cf1so70773065ad.0 for ; Sun, 26 Apr 2026 06:46:11 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211170; x=1777815970; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=t8q92mP0WsVg7jShnJO3IJxQ7Z8BkHGBrtVLkPQnGUU=; b=LHiQmllAc1ZNyKRQbP6OZ50uJtgggtbKK9Iv1T0KBQRmG/VLdfu3d6WAd5fjoiWSM9 lLgI9Z2SdnbXRRo58Z9TaNs06kjlCGhT4FEMYtsK4izhEPyMiAd3Ia86HtHvLQwPBEq9 uqoWlRgNy8uxxWsQrqDH8bYTmxpVSG+xPLpaYXCgXiHxqjemj14E8i3k0GMbkZjPvfLZ XIPM1szjR+Fvb+tlpVk6x1qgSIXFo+6tUNnRmFq/XJCgsi8Su1wD1/0Khipxu/GJIJG2 l3LLrA4AKbILf4V295g7kPCmtjVHf69Ms+i7iE5571r+iswe8QGyze+uuGo/TR+05d6F Rg2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211170; x=1777815970; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=t8q92mP0WsVg7jShnJO3IJxQ7Z8BkHGBrtVLkPQnGUU=; b=GL6ECsEO0TZu0WqV1338CBnPqtDsH9rcOfOw417O4K6lLde1pRajlYB2+x3OUSoAvL xkb2Tx7uImrRSYJqdeQF9foiI+mvh9U9LQFkBlgOwb6oeEehwyIDle66fDi0u4R/cwOl HHKHZ+Xw4zVnAiSIoqgp5Qk3eKzJOz92K03xNZ03wKVkZ0oci4fAwwGhNxO2gpKGSqR7 30xPFyreizvl1/wIzlPujy399I6c0StfSbRuRKnkXXIZDTWHys6CeHpXoGDcEbGGA5q5 QZKstQfNlQ3PddnH8A3aGCYvwxwEBrJXaLUrRFTDnsOJ3tqTgfawtO2Ui3MUaZZqQbXw usKg== X-Gm-Message-State: AOJu0Yzlu9MfZ4YJWCKPwV+qZuqfx2xpOI3KUjucRvW3GYn4pSuewH8y 2EiEiEk2RCtGYft9hOFKc3n9VMpdPo1WKlOSTGI0bltgAJmybPIu8CVmJ+ehMUI/9IqrTUmlwEF RgS0Hdbc= X-Gm-Gg: AeBDievaYOtzrqc9jJlu9LvaA5Z61a+O6WeiBkCU9MuK2i04pezk3sHOUJivNZujoPl LMgbzkBmZzPAebWlkIFrUSB1h4FuesUvjTnnfEUmJMFfgHcOk9d24x60276EN/FpeFxcr+irATa PYZ+ELjyxuGBbfENawBGaosUkn9ksDvKqxI6akBHwyJW0aXRrsA44SVC+XD2Td2hMyHEgcI+Kpi 88G3K15JV+5buYztMgzLdvWPbnVppYpBiv2AuI+wseSHm9gqvPUhDdXaK1zSxJ8omyuXMoeXgAd e9KcnWhu/5Fwm2qwvA18U8WTxogJ8IQda1b27lBFX3EJACXVD66OLtt5rSHlB9q/UwyRV0udqGg 1Y3exFkfbqFDjg8LsdOPFFKM9WQXBVPZt4BEf2F5eXlRv3bZyoO7MyQ+xmeV+KncfKovY9PQ2Zj xX+PessieIFYmHkllNLXWDWa4b5xFJ1a6qUJsC6v9cMKS+832J0PY= X-Received: by 2002:a17:903:1aac:b0:2b2:54db:3e93 with SMTP id d9443c01a7336-2b5f9ecb056mr314020445ad.23.1777211170521; Sun, 26 Apr 2026 06:46:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 67/84] fpu: Use parts64_round_to_int in parts_s390_divide_to_integer Date: Sun, 26 Apr 2026 23:39:44 +1000 Message-ID: <20260426134002.865628-68-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211736629158500 Content-Type: text/plain; charset="utf-8" We will not expose parts_round_to_int_normal. Signed-off-by: Richard Henderson --- fpu/softfloat.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index b71bd49483..e42782c656 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -5161,12 +5161,11 @@ static void parts_s390_divide_to_integer(FloatParts= 64 *a, FloatParts64 *b, * Rounding of partial quotient may be inexact. This is the whole = point * of distinguishing partial quotients, so ignore the exception. */ - *n =3D *q; - parts64_round_to_int_normal(n, - is_q_smallish - ? final_quotient_rounding_mode - : float_round_to_zero, - 0, fmt->frac_size); + *n =3D parts64_round_to_int(q, + is_q_smallish + ? final_quotient_rounding_mode + : float_round_to_zero, + 0, status, fmt); =20 /* Compute precise remainder */ r_precise_buf =3D *b; --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211777; cv=none; d=zohomail.com; s=zohoarc; b=iWKIzJ8tkVT8v+15JVUfBXjvkp6hA2gVsiSwwZFPT/VPu44/AO9CVx4kjeiCEeBSZarnKVsoLJ/JNko+8u1KoqvkaiAiGG3fNcCK9+PUv5mQYgvIO8b4MbqRCULmlyRh7OSbGCyb2wHMRv/QXVqQWpLXR05KT/PbfVpqRKU4xYo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211777; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9GMWNSvP4+a2tsIwQ0vCb3/nsg3VFSARC/RvRT7Zej8=; b=D6z3mNiADUwnM+Hv11k3kHJ5h0bwZqH8naGy04pmbWsaGsvGWNQ5dU0dy3z3+6Ec26OnIg0HM7uNcDJfbUdrZC94KpdIltQGS4eVFA0+NVtvqZenOKUr/yH5VZi66Uv/fWfj8DJs8ioW4k8MByBiVFHtpFWJGjvVDL0FhroUb1g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211777669207.86882887948025; Sun, 26 Apr 2026 06:56:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpg-0000R0-FP; Sun, 26 Apr 2026 09:47:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoW-00066e-8z for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:25 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoS-0001c8-4u for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:23 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2b7adb38d65so31865565ad.2 for ; Sun, 26 Apr 2026 06:46:14 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211173; x=1777815973; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9GMWNSvP4+a2tsIwQ0vCb3/nsg3VFSARC/RvRT7Zej8=; b=OAGpptCybT/1mnTvThTfSF6pApZhBRNaEbCz60urCQwxxBZICn4zWrarSQFj+PrwzM 8kcctc6EsKxnqe8Px5tHfcoFohQ55A8h+S68MufhlYtBTGqcfbzMJGccVxNcctWSvlme Y9MaiWqK3mvkWDnnNUESHhLftOvWdfeerXXp8vuLQdYjrxnijWoZHG4x3RnvGzNDg7iN AC1xhaXfeEvHSL0P5IkDHq3ZoBrHhQ423cujbDu5U6JTrFCSUoxAEi9JFAWtWviHBg2D FQcbPFk5W+sw14NAHb2/4DXMey97RjU0q2Ng8gr8kb2qp3RC7ZbviZQxZq5f9GK979NY BsZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211173; x=1777815973; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=9GMWNSvP4+a2tsIwQ0vCb3/nsg3VFSARC/RvRT7Zej8=; b=YbDoucvBVLKzLuSSXvOv3kKX6oEDyD9nqIDHNdBzM9iE5HvYMHXtYBKkHoMhgHVQI1 iJbbeW+1EYMlbixZ4zpNm1SAQ5ALCeiVHI9iMVGikOKJobB3mrMZ5dNf/ur1Qf/p5/hC f6ZwIpaaHbZLUa6JKhOnZnWiG+HhSrDu2DposkgEzWZIZ3gwNlh7SXDRc/aMwxDmbMmh owg8tuWSU5yfV0bDOl+teB4grpz/8mwVh8DhAWh+B6Z4NnlBUVBIbsvlY/9QtZe9xWZ4 NoKtLr+QwGd5i72pUIeA2Z8OGn2WWTyhIuUEB1WSYwyuxdbD4Em8uEO/+jXl/fEIqrLi zDog== X-Gm-Message-State: AOJu0YxdFVC4c5fUYnoQDt2rNUKSYLGwCVIaRgpi0xVN/aseaZXWSc4N p5pzGxKsfjhf2JMUpAkK5EzqTg5MyC/q9pIyosiiwwS2gRdLzYRa00yy9af+uBaF8eKDtGaPxf9 Tp8ag8QM= X-Gm-Gg: AeBDieuYcbPuilyduhnD/lu0CtvmfAfgs9Ac5/q/r8aESsNll8WT/3s8U/JgsMmpgZZ N6QMqZnq5bAkiPzPB9twZir5jXpqiBPMq7sAk+5Q/v6fntF3PAE7eTF5CYu10brX7InLEaesjJs 5tWzxl15XtNjICoYzfLeGOfaPyngZF2GiCc7LB1Rbun3mt3FnYz5BnKJdtl74xdjyMmo8x2fkNF ebmqv4rUDQW8NqTxCFYf8tjFgthc0n0p83KANyDxrqePqGEPahJY90NhCOB1clVD5dIastmqpQQ jUTVYxB9QlKpvwNWbWwk07hgXNZuYV/TiK55bgTTdHqtFfuHMERRmELBkbPtNxYum4pLlh+wmb9 7oKd76xD1Bx76pfLaPsEBlyIYdePSAo55Cp3hsOSeZrGdlEkvIxk6JWqU9mGWs+/pe4AVF+tIX7 yzJ3qEjhec72eu8WcUIGhQ/O5W+AjL5N1cu2G/H0G8 X-Received: by 2002:a17:903:1104:b0:2b4:6529:7b9f with SMTP id d9443c01a7336-2b5f9f37032mr427016705ad.26.1777211173108; Sun, 26 Apr 2026 06:46:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 68/84] fpu: Export default_nan and pick_nan routines Date: Sun, 26 Apr 2026 23:39:45 +1000 Message-ID: <20260426134002.865628-69-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211778785158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 12 ++++++++++++ fpu/softfloat-parts.c.inc | 4 ++-- fpu/softfloat-specialize.c.inc | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index f631c38c79..9f7ee34d6a 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -163,4 +163,16 @@ float64 float64_round_pack_canonical(FloatParts64 *p, = float_status *s); float128 float128_round_pack_canonical(FloatParts128 *p, float_status *s); floatx80 floatx80_round_pack_canonical(FloatParts128 *p, float_status *s); =20 +/* + * NaN handling + */ + +FloatParts64 parts64_default_nan(float_status *status); +FloatParts128 parts128_default_nan(float_status *status); + +FloatParts64 parts64_pick_nan(const FloatParts64 *, const FloatParts64 *, + float_status *); +FloatParts128 parts128_pick_nan(const FloatParts128 *, const FloatParts128= *, + float_status *); + #endif diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 642ad5dfb9..cdab18bf26 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -37,8 +37,8 @@ static FloatPartsN partsN(return_nan)(const FloatPartsN *= a, float_status *s) return *a; } =20 -static FloatPartsN partsN(pick_nan)(const FloatPartsN *a, const FloatParts= N *b, - float_status *s) +FloatPartsN partsN(pick_nan)(const FloatPartsN *a, const FloatPartsN *b, + float_status *s) { bool have_snan =3D false; const FloatPartsN *ret; diff --git a/fpu/softfloat-specialize.c.inc b/fpu/softfloat-specialize.c.inc index 2723bf5e61..485f082cf8 100644 --- a/fpu/softfloat-specialize.c.inc +++ b/fpu/softfloat-specialize.c.inc @@ -118,7 +118,7 @@ static bool parts_is_snan_frac(uint64_t frac, float_sta= tus *status) | The pattern for a default generated deconstructed floating-point NaN. *-------------------------------------------------------------------------= ---*/ =20 -static FloatParts64 parts64_default_nan(float_status *status) +FloatParts64 parts64_default_nan(float_status *status) { bool sign =3D 0; uint64_t frac; @@ -142,7 +142,7 @@ static FloatParts64 parts64_default_nan(float_status *s= tatus) }; } =20 -static FloatParts128 parts128_default_nan(float_status *status) +FloatParts128 parts128_default_nan(float_status *status) { /* * Extrapolate from the choices made by parts64_default_nan to fill --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211516; cv=none; d=zohomail.com; s=zohoarc; b=XQOd6Q0rfDrZxXJge4eg8MZEDpC7LxfycUEFNHYxFxk9lWVE9GPFOIWktsIsgrPmjiT2WRki8ug4AcNMseqsc9DHJoSMXijToiGsNA0571fuh4kZjUUTpn6ZCRPkT2OtIQISQMzLI2g9o6PZgkbspUTgQahcRL7Jjset2wxS0Bs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211516; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=E68MlP8AFu1JnQ5NZvgz4n4HRq16kR6Xd0W1VdqzuFg=; b=K1HLJBQWYWn88aR3YlmZGCxgNnSTPIM932QMNTUy1yRfhQBpqbjDv0q2eEMWpertpUJnsH1QspSCV9RA9qUE6y4aLeOefW0bbjalcd1mnzq89/0M+4Rhja7kzzAYCAilpwaJprtwf+Wrruz/M4bLPEA5ojP9bGfTPtrq3FP3jnU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211516666770.2195755275438; Sun, 26 Apr 2026 06:51:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpa-0008TG-U0; Sun, 26 Apr 2026 09:47:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoV-00066S-3n for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:25 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoS-0001cS-55 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:22 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2b7adb38d65so31865765ad.2 for ; Sun, 26 Apr 2026 06:46:17 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211176; x=1777815976; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=E68MlP8AFu1JnQ5NZvgz4n4HRq16kR6Xd0W1VdqzuFg=; b=OTvXIRMbNF4qAD2e6iwjKwz7O/mQha7b919stHmBeosIkmV5Ga8MjEG8NBqqFLOuBN 3nUrSfRXGFr7YGWdH+ZNrhAdP1M58C5yYG5TWeRiyK6C5SVDc1d/rGsiiVuJZgw9DSjI IJinOry+HFYkciZllcbBcZ+vE+OcjtZHDHIuXci2Z0PQgTcTXWzFLCnGJ90n4jwFN41c LxvtLLHSBADP7wH5ESjBgqizP1/m1tvdN7hjik8cPaVTmHwOOWTY9rK+XrewClJb2G1j kETknHIxJ7IwgnyZPiuovw9JS5gLF94Ucyl96sCp4eodiaW7lcoUo8+pj219jxLRXGEe ESQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211176; x=1777815976; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=E68MlP8AFu1JnQ5NZvgz4n4HRq16kR6Xd0W1VdqzuFg=; b=pkeXFFkBn2dXU7vnTDaaf7Ehko3kQvRdUUsmanNG8plGEWL0RXO/IF3ytlkXN8ytFA pTq9WpMJReNASD6Jg9Y6g39s5rO4ZQlNlB9Zmf9nefBwZxZwfciZSJFGM9gez880EZpG YsbWLXgxKzOgWb9jo3oRUjjz2l+l+v2D94MUPgoM0pP6OgwD+CbnAUTtv0zoivSmY7nX 8ux/EuPXD7GfjNfK7jG60S9jLOvNNGQ5hNBZt1oY3J1tlfbHTpcwLXA8fGnp86wWNA4T 5ovfPAoYxVBIhtTgtWuipiPtv2rFsxvVABLvFMmu/X7Buj0iygvtKln805Bfa2Yev2bP MOzw== X-Gm-Message-State: AOJu0Yxhz5VG7hNamkEKBi7jscgeQugl7TPeQ9RnypU05c57X/WPcJKW ptbTiXvC7d4/IUAS278ldDAL404NTDeLFnAiPZQ5KoDuZk7eTEuv7JbZL7keI7lsqZA128tQUWu UaOjdf0o= X-Gm-Gg: AeBDieuNqOhmjedOg1ro/AIGtpxuwklewSFuH48ZxPHbyvmgYbpTBzNh12Ice3fVDe3 2cO4J8gdh6Y4b2UvbSf+m14OggAXk6BJb01sDWASshmHk5lSafn7NUg6h1Fu7r653XQRXKJrRYR WkCl1espRW0eMDWt5/HW8o3EyT4XMhAxZhBl9KLcXyyUGCjX/wTgc8H8UsnK5SO1tN1uSLEI8kB GYsf56dfN191KDD/vxfuFwnoj5RpHEDlo4SVX7fADr8T6gRBAH6RiG2van5vJpYdrNfB2Q7lVY2 PVxu+tAX2fXum7aQd/d+9i1wb+gqsdruFZp3jIHU7NmjkRf2sGS6YndbRymk6cU5GsbXsPO3Q+i 6xN88DMYeFIw1M8n0z38/L1RkwtpW8uHZw84/sxNX9rqOAI5HyIf6hAR4Q7waVKv5ycdkDhvTF6 fWr8ZrYP3avpLlhpvvdHv/dwG8WwzAmlpQ0oBr+pkg X-Received: by 2002:a17:902:e54e:b0:2ae:ce35:2686 with SMTP id d9443c01a7336-2b5f9e64c77mr394101345ad.5.1777211176195; Sun, 26 Apr 2026 06:46:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 69/84] fpu: Introduce parts64_round_canonical Date: Sun, 26 Apr 2026 23:39:46 +1000 Message-ID: <20260426134002.865628-70-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211517970158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 7 +++++++ fpu/softfloat.c | 19 ++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index 9f7ee34d6a..eb76b47934 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -175,4 +175,11 @@ FloatParts64 parts64_pick_nan(const FloatParts64 *, co= nst FloatParts64 *, FloatParts128 parts128_pick_nan(const FloatParts128 *, const FloatParts128= *, float_status *); =20 +/* + * Operations + */ + +void parts64_round_canonical(FloatParts64 *p, float_status *s, + const FloatFmt *fmt); + #endif diff --git a/fpu/softfloat.c b/fpu/softfloat.c index e42782c656..0c931842c3 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1396,6 +1396,21 @@ float64 float64_round_pack_canonical(FloatParts64 *p= , float_status *s) return pack_raw64(p, &float64_params); } =20 +/* + * Round to Fmt while remaining canonicalized. + */ +void parts64_round_canonical(FloatParts64 *p, float_status *s, + const FloatFmt *fmt) +{ + parts64_uncanon(p, s, fmt, false); + /* + * We normally expect uncanon to be followed by pack_raw, + * so we don't actually crop the bits. Do so now. + */ + p->frac &=3D MAKE_64BIT_MASK(0, fmt->frac_size); + parts64_canonicalize(p, s, fmt); +} + static float64 float64r32_pack_raw(FloatParts64 *p) { /* @@ -5175,10 +5190,8 @@ static void parts_s390_divide_to_integer(FloatParts6= 4 *a, FloatParts64 *b, /* Round remainder to the target format */ *r =3D *r_precise; status->float_exception_flags =3D 0; - parts64_uncanon(r, status, fmt, false); + parts64_round_canonical(r, status, fmt); r_flags =3D status->float_exception_flags; - r->frac &=3D (1ULL << fmt->frac_size) - 1; - parts64_canonicalize(r, status, fmt); =20 /* POp table "Results: DIVIDE TO INTEGER (Part 2 of 2)" */ if (is_q_smallish) { --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211828; cv=none; d=zohomail.com; s=zohoarc; b=VokZQnf+eR4cHleJ+v4Kxd/AXBVWtnd0+iFL9j0UPhtEds30f7XEM8lQ7hvVw3hIa20qVKzFv/23Ut/sdEsbZ/PJfSr5Jj5akP7HlmwMnh423uR/2rG5LCrFuUePNYbYPvCXJcH/KlIEw4Uh+Mqplj38Q9CrdT/S9sNO9HiM0so= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211828; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YGWu4lyY8cEb2Z1OBLO2Ci5af2jrg0iIa0ouni1CdxE=; b=l++ogn0H6wHyqIp1sYxql/IanddJnqjZkmiVio/HuFYpcHeMeXvqsXQGLFQUuaV7HWTd0/fISHNBf64fp4hzhHzNfhzaZjaqXqP7y3Dp7pUEBeSrTLnViVmlWfb4NYx1de5gKtfhNoCpYhSp/YvlCuViwVDwS4/ZuczJVfeIexg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211828254813.8829187792131; Sun, 26 Apr 2026 06:57:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpa-0008Qt-Js; Sun, 26 Apr 2026 09:47:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoX-00066l-88 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:25 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoU-0001dO-Jl for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:24 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2b299b3c739so42919505ad.3 for ; Sun, 26 Apr 2026 06:46:20 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211180; x=1777815980; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YGWu4lyY8cEb2Z1OBLO2Ci5af2jrg0iIa0ouni1CdxE=; b=UmEgYfi4AJNWNqnaQCOrhhZmXdlKf3rfCWCJ8w5W+DuFXzEh1f/dupPVkxmHNyESri HXlslk2uKi4RzPMmX2W72TSXx+M53yITouyJVe2+8hboF74sLmy9gYYW7VJOBPbK2uXo PtMWJecQTaPJC1eupegKDUI6qyTc3ueVaAfa42QXWvMW4VwcMNupZ+HbQSlrocIKuYHX 577Uf3MuZxyzfnjOa5blQtKixvq487uyovErU57kBLf8r89mGbJ/E24dZ7oGnqj1ixMd xLgcixR9UQCwfEkziXb3DUokkqskhj8Nv9jj94l+9H+9QHEfrCJVuEwFe3e2DEmoqKDg IGGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211180; x=1777815980; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YGWu4lyY8cEb2Z1OBLO2Ci5af2jrg0iIa0ouni1CdxE=; b=Zi9Uxkgm140kY16pshvD3hxQyEJuXmLyZmc9CO0Ft1twpwL9oqFcoqvBNHBMbgYoi2 4TviTb25FX0icgf0nS8KncKqTPz+4Xo3RNlxOxrE9IRJSumbJ6la6AV2fZhLVzDfKhgo R0pi752KFKBi6jo3I7F4b2T8H5t/SkNM3vGh88EK6tkEOrkfnl40CIuDt99GRVyqgKSc Iq/klKXpS1YKesRctrY5zy5AmjMDd89IspZaijQCdaI3ADgOAKvNUvXYGKCzK9lirEB2 HxjhDMvwkxMh/CeUHPrE5naYxpp5paj3DgOOCGwQDHZwVb7GqrXxR9n9XcT2E570s1C9 w4DQ== X-Gm-Message-State: AOJu0YzKc3aN1aenBxzi383ZUr5ejI+UjYOMb6vrfMh0sqAwVCcARcav GjVOF5H1je/mrGbv7bVMtTEadvlNKsS1tzCQapayglYD+vyvo3yYtKbnugdrlpU7n2G+3CU6gMi Mf/wPwAs= X-Gm-Gg: AeBDievmkkaCJ0PG5K+oO0s0hxZFmpRwu2XvmVbYZ0F7YUrPd7jEzu6SAkrHzdM4tkj WBsv+JiKRjaVVcRyi/joO9x1sgUcg4PZJ0W7SeKIza/sLkVbCXwrTGt9lluo5v3gBrw5iJfzG7j s6h5GkeDzHGBRoJKBWuSOHxkgJL5aXYZch/OGKvH2iEmKlWzEKJUiRvQi8c6IRrTXzQUxri8Y5R 23kkcv0xoNUrPHT3hfgHt9Cg/C+2Zq83P/UjUsaIv3DMOiH1bXGA+04K+GKGEJ6njyXbd1V3IaK g06ONopTVz/gXcglRkoNPQDbR6VZPPHibEBj5nEFGZoTS/MMnQeogGSRfiRXdzm7M++s1jlSisd +GMSFzVhDd6qtDBS7GgCUbP9ajHnraealSgZ9WU2f99AzfOURCgUoaYz1wivX94bieau8FTETJk X0ZeTTDRli0aEyicsMvVhJvdDS5taZrB8z/hJjM+UM X-Received: by 2002:a17:902:ea12:b0:2b0:6e4a:32d0 with SMTP id d9443c01a7336-2b5f9fbbdacmr407946525ad.35.1777211179727; Sun, 26 Apr 2026 06:46:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 70/84] fpu: Export parts{64,128}_div Date: Sun, 26 Apr 2026 23:39:47 +1000 Message-ID: <20260426134002.865628-71-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211830312154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 5 +++++ fpu/softfloat-parts.c.inc | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index eb76b47934..5460f5c592 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -179,6 +179,11 @@ FloatParts128 parts128_pick_nan(const FloatParts128 *,= const FloatParts128 *, * Operations */ =20 +FloatParts64 parts64_div(const FloatParts64 *a, const FloatParts64 *b, + float_status *s); +FloatParts128 parts128_div(const FloatParts128 *a, const FloatParts128 *b, + float_status *s); + void parts64_round_canonical(FloatParts64 *p, float_status *s, const FloatFmt *fmt); =20 diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index cdab18bf26..cc142ff5a5 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -807,8 +807,8 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *= a, FloatPartsN *b, * corresponding value `b'. The operation is performed according to * the IEC/IEEE Standard for Binary Floating-Point Arithmetic. */ -static FloatPartsN partsN(div)(const FloatPartsN *a, const FloatPartsN *b, - float_status *s) +FloatPartsN partsN(div)(const FloatPartsN *a, const FloatPartsN *b, + float_status *s) { int ab_mask =3D float_cmask(a->cls) | float_cmask(b->cls); FloatPartsN r =3D *a; --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211463; cv=none; d=zohomail.com; s=zohoarc; b=cEzeNenOsufPMw1Xug+S1ydTf23HNw1Br+ceU7VkUlb+Nt6cCkVjhe+SeR/vmaqfL/zHzwJ+AYoMAvI6hYrHsMV2tkA6CyoZ4ozUIAjwdB5o5ZjrVEFvE+ShxbOjkQ3alPpaw6ppVPzmpWe/FTs9PetV26s7iIc17NjyAlu5HHc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211463; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hheroKdVLCGDtCk2AAibf10Z6m4QN+uSO6ssI9+89yQ=; b=e1OmUM/3Cguzf1jaRiwn6MinUwH+wk5jUqnjszpp29i2mj+nhaxJN1Mdxind0NE5Yi4EJ+dkF/2zsjp+8c6e84S899nyH/S67Z4bco6ZXZDL8zJ9eRRZFwcwtKyvtawQK5wb0Cn6h1K83iP1/CbiuGSOrYGs+SeVnienlItZC4I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211463199698.7782692807974; Sun, 26 Apr 2026 06:51:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpc-0008WQ-6G; Sun, 26 Apr 2026 09:47:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoY-00068g-4d for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:29 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoW-0001dw-0G for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:25 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2ad21f437eeso60078005ad.0 for ; Sun, 26 Apr 2026 06:46:23 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211182; x=1777815982; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hheroKdVLCGDtCk2AAibf10Z6m4QN+uSO6ssI9+89yQ=; b=QxKqJB7NpSJ5FPD6leC6HXRu9vw7WuAhgZktVaBzHFU2TU7dte1CFBf42dtQFUWIVi KNp3b4a/721aZ2L+smanaJokDgeoBvV4pWLB2uDHD8wP9rP1n3mKtSu2NsMgua671P4U KUFIItZfSpJWu7LQEgkJfceR4iOCQPEb/MQHFBx4oDZEvivB28KUNCubF9p5yK+KKPYb yNR1rKh3CPQyL6IhWY3Pkf+y0dfXgrWFd9xoM749yIZF0ClkgEfSx13z+Ogzz9dDLP5E pixwQp6L4UhpQX36fhS6qH89Hj/NBWKhluQsqskGvAkErqB6FRrQfcOvWVyTiZwIr63t i5tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211182; x=1777815982; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hheroKdVLCGDtCk2AAibf10Z6m4QN+uSO6ssI9+89yQ=; b=HGrcpqJi+F5JTOMW2GaSRflkH+S8Rl6pirUVlXVxEVVt920JleDiqo9MMOurgZ7dX6 fFEwGINRYoqHKLVZenjprsSHcfGkrSO6IEGq30EaO7EC140QywCnwUzFsIapNJiOq/58 7PMhn9Pncn/cqWtbhCfSajs92rHIyXQnpokpirLBj7/jiIhCWcBmLy2/gICftib7dnQr WFRINDEje+jm04KeeSxYGDur2H8F6PFqFodgMevjk2Vzo6C4nGSMfBwN9N86AdKkVkLD TV0LMsEw/02GYcaGiB2AeF5s7UvZmzZiTti9lrHm+zQgRDyz0CukrceNxhKriq06sU3Y PstA== X-Gm-Message-State: AOJu0Yzv3qQYVZmPIBXEWG4ONVF5noo55lNWcqPiAwCDf8tHLUksAn8+ TSN+9lwwlsGefRKtRiCF8gNG0jmr/u6Csp9pFWhjtGM6l2nEoIszHFH5WhXezHahvQ3pdV3s8kc Rq0/9pMQ= X-Gm-Gg: AeBDiesiy0TwrN0Ew84BlzT3YtLNVFK/6j6yHlQNN4xGM/OT9ZTnZLXb7XySVEvAhHq vSnlAT9V0zdNA+Kqh1KAbX3g3BfzAe/BszlUvTzJsL8avnM1Erbrjlra1rubwLdVK4DpSDTt8s3 BE0KN+DqmoVHDrEs4AjiWY+dgUFlswQIKg8S0T1fkdDgWATsF7TGn3LxJnZ6BAjF0I4HMCwGj88 ikNfGr4JKDJBZ7Al9Q6453kMRycX4JGCgYsT3n0go19PMf7fDL15Z0emUiU7Q0dhnalYYv0cDYr 2wP0NmTWhBwHL6FPlJiLeVW86rqbSOeysdaBTVslK/ffxJCv7TzHugEB51v9HcG4MHFn/RiN/OA OQv0ny/ZfMsWacnWS0MQRPkHOJ0+7H9Ml2nXKj64DB/C0z/W29ySnb4DhkdB0NOSQJa8q0YeIQ5 8ZwIa+pfFeECpa4hx54WSMffVVvnlzZtUnbr9NNc10 X-Received: by 2002:a17:902:b405:b0:2b0:b7c6:4ae7 with SMTP id d9443c01a7336-2b5f9dba8d3mr219433885ad.1.1777211182197; Sun, 26 Apr 2026 06:46:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 71/84] fpu: Export parts{64,128}_round_to_int Date: Sun, 26 Apr 2026 23:39:48 +1000 Message-ID: <20260426134002.865628-72-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211465148154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 9 +++++++++ fpu/softfloat-parts.c.inc | 8 ++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index 5460f5c592..5b71809541 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -187,4 +187,13 @@ FloatParts128 parts128_div(const FloatParts128 *a, con= st FloatParts128 *b, void parts64_round_canonical(FloatParts64 *p, float_status *s, const FloatFmt *fmt); =20 +FloatParts64 parts64_round_to_int(const FloatParts64 *a, + FloatRoundMode rmode, + int scale, float_status *s, + const FloatFmt *fmt); +FloatParts128 parts128_round_to_int(const FloatParts128 *a, + FloatRoundMode rmode, + int scale, float_status *s, + const FloatFmt *fmt); + #endif diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index cc142ff5a5..87460306f4 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1255,10 +1255,10 @@ static bool partsN(round_to_int_normal)(FloatPartsN= *a, FloatRoundMode rmode, return true; } =20 -static FloatPartsN partsN(round_to_int)(const FloatPartsN *a, - FloatRoundMode rmode, - int scale, float_status *s, - const FloatFmt *fmt) +FloatPartsN partsN(round_to_int)(const FloatPartsN *a, + FloatRoundMode rmode, + int scale, float_status *s, + const FloatFmt *fmt) { switch (a->cls) { case float_class_qnan: --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211502; cv=none; d=zohomail.com; s=zohoarc; b=klt68S8OOL9vyql/RkIxXGI/eg9zyij/quBAYkwD/P2/sbj8OomobR8AKJNPQUeIOh1ggeNZtq+a1SDAhSGYDkTiXE1bsFJh005L1uxVQtB1skRhWpvpiBwKIZ/atMqr5xOObmXEAsLhDF6sbzuX+0k0Q0IgfEvzbOfgTeIkFrs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211502; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oFscoPCXmC5wItps4ZK1oMdS8qcgvMlEJeB/ShmBOiI=; b=QSJ+jTaq0yzo31xcWwUDqNxrrdAS9niYLx72zn22hO6EJRgOt2k9af+M1yvJkUSd1n+6F6gAZKrgGXbUNSHH8XSDBLFKb+C1C/SCYm3hgdkHh8/w+K2eMP344p69WdPZpMJEpKpKTwmx30HFrnPnsyPTRaV0NWIgqUtbuhZVZrM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721150244539.99093874057348; Sun, 26 Apr 2026 06:51:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpb-0008UC-FG; Sun, 26 Apr 2026 09:47:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoZ-00069y-Uw for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:29 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoY-0001f1-3O for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:27 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-35d9f68d011so6121888a91.2 for ; Sun, 26 Apr 2026 06:46:25 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211185; x=1777815985; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oFscoPCXmC5wItps4ZK1oMdS8qcgvMlEJeB/ShmBOiI=; b=Z3z6DUAv/zR4iuLsTc5XJj0xSuEdNNqt54VQqQdV7iTvXod6fHd1qrpBbc7KXp65ZX ZsboBvItwCQ0i6YzOnBdbCVPtPkTjJO9rf9DrBhYywz0YJhm8yiAlgcVZ2rhb9tH9TdN VzRzssqW07spp9KxPNRLdz4Mt/gC3IJ2S23oNLZ2F7Z62Ouq0gsjKT+PfUMtzeqI7a+v YGuzvQeBEhlYkUxqm9IwpuwtJ2CVUZY36SfhWL7RlqwqZC5LZiSPR6l4buekazaGAQzC xuMNfi2vz5rr0Vvfm/ndtNyzzA15rA0694n4xs0t4NofhLyUvPU31ewIxJbU1r6RYyjT fw8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211185; x=1777815985; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=oFscoPCXmC5wItps4ZK1oMdS8qcgvMlEJeB/ShmBOiI=; b=jRGnqPS69q+Zz1U34au/S+Kxs2uF8kXehfVHWYnBw4+GM3aHLt/4FZqG8Aq3QolgB2 Y0WauKK9m0pohGVdRlPnLsUcdgciD+XqLA92680ebhi33IfEZve8NXdXLfC1HfCQGhKv uK1G5jjfuqaOyyw/0wlS0SdgEF/YV94pgm0EJSh7g5t4Gs/PK8vxaHC10lMuVMhaYk9j 5pNI4/HMtJcj65VDLAhhvfDmKWnTLGjfX6xGLHaax4UdPhURGI//wnhiVenJLJPu4aW6 oONTUB9xcFs6ujiDhcrrDi1HKa6lQihnLYRK7ziCJbrlXsBDqE9M62Jf0BcBSK0F/Z1D n2pw== X-Gm-Message-State: AOJu0Yx+cwPhO4r8N4fkCidZT070Y1JKdnW9ZzeJJN6JciHrea4fZy8j qr5H/eIyxH3kh87F4/7lw1t8i28Hm/EQKjiO6Br1Sn4oS04fV1WF/Zbja2F19P7fkJfQzYwWqu9 CeFWonSg= X-Gm-Gg: AeBDiesG57ncXEHl/XXaMSE995z5CIpcXj64c7/pgOwde4NbJeQfmqkhlK6/xbZT909 qKlga8VQBSEn/ZAssFMGbCwgRWTkGbJVuOQMw6gMOIWIZLV7auOFQyf24DsfIxmOL/Rw/mJPan3 MXIpnuxxVd3UnvfPVK5q28x7H/hbNE8zjoaL8gHGQn7ULVMUPCHnoeqruI6sSs0PhzWLYwCIz2q AofO5Dk3SA9MmS4J8zcok64/MFrO/41tzQvaBHnEgm72w7hyDKCsw7RKbY+43t3b1jX8yBx9tO6 ZENkiy479ikF6WG8irIJ5SxV+YaZUBl4b1PsPVs9uu1giufvtolhlNUASueqX1VszQtSDfiaf+t mkHdtnwGeKFIx6Cg2bTGvVjh9rtXCLNFCXjTq2SCB5LAUbbNZAwDOGi+0dw2wy9ULxe6k5uTT5V 2Mln5x1exP2SmxaSE6qNlpPx4evnNX+llZ1VODp6wy X-Received: by 2002:a17:902:bcc8:b0:2b7:af0e:5942 with SMTP id d9443c01a7336-2b7af0e8224mr103039985ad.26.1777211184735; Sun, 26 Apr 2026 06:46:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 72/84] fpu: Return struct from parts{64,128}_pick_nan_muladd Date: Sun, 26 Apr 2026 23:39:49 +1000 Message-ID: <20260426134002.865628-73-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211503901154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- fpu/softfloat-parts.c.inc | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 87460306f4..5eaac357ec 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -114,13 +114,15 @@ FloatPartsN partsN(pick_nan)(const FloatPartsN *a, co= nst FloatPartsN *b, return *ret; } =20 -static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN *a, FloatPartsN *b, - FloatPartsN *c, float_status *= s, - int ab_mask, int abc_mask) +static FloatPartsN partsN(pick_nan_muladd)(const FloatPartsN *a, + const FloatPartsN *b, + const FloatPartsN *c, + float_status *s, + int ab_mask, int abc_mask) { bool infzero =3D (ab_mask =3D=3D float_cmask_infzero); bool have_snan =3D (abc_mask & float_cmask_snan); - FloatPartsN *ret; + const FloatPartsN *ret; =20 if (unlikely(have_snan)) { float_raise(float_flag_invalid | float_flag_invalid_snan, s); @@ -160,7 +162,7 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPartsN= *a, FloatPartsN *b, } ret =3D c; } else { - FloatPartsN *val[R_3NAN_1ST_MASK + 1] =3D { a, b, c }; + const FloatPartsN *val[R_3NAN_1ST_MASK + 1] =3D { a, b, c }; Float3NaNPropRule rule =3D s->float_3nan_prop_rule; =20 assert(rule !=3D float_3nan_prop_none); @@ -179,13 +181,12 @@ static FloatPartsN *partsN(pick_nan_muladd)(FloatPart= sN *a, FloatPartsN *b, } =20 if (is_snan(ret->cls)) { - *ret =3D partsN(silence_nan)(ret, s); + return partsN(silence_nan)(ret, s); } - return ret; + return *ret; =20 default_nan: - *a =3D partsN(default_nan)(s); - return a; + return partsN(default_nan)(s); } =20 /* @@ -698,7 +699,8 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *= a, FloatPartsN *b, * off to the target-specific pick-a-NaN routine. */ if (unlikely(abc_mask & float_cmask_anynan)) { - return partsN(pick_nan_muladd)(a, b, c, s, ab_mask, abc_mask); + *a =3D partsN(pick_nan_muladd)(a, b, c, s, ab_mask, abc_mask); + return a; } =20 if (flags & float_muladd_negate_c) { --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211828; cv=none; d=zohomail.com; s=zohoarc; b=D0ROMl4GZNkitdm1/lZcoYMM7YpyfF/gd5kSCQv9lQLu/YmB+9Zf9ffc0TwcTzO1AgHJPJF3vanfbgy9D583oUKhED3kNBkNNe6TGomfrn/X2xh1f/QvLrBa0hhEbkk4PnXJ673LzgjMwVIzYUxpGmFUVJ4nPufuw63rpkH8A2M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211828; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2XVMrD/f4RJUgxWV8u8BjTDkroVGGY6C/cEhJrX7QLw=; b=kkMQH1ugx2R9NPrapV1Ql6hQWk3XGGpMP1IvhwmhmhsV9z2qRX/daySGgc3yJnhf38mTVETJ6xsKhRwpIQ10Y/w+9cEXUzQ0ww5k/omZIeGWiK35XN6LYhkHxX/FahVEO8+6aCU9bRz/lcoQg4DiUlgiWq7RUnP+y9tYKgVBKHE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211828340984.4497898417754; Sun, 26 Apr 2026 06:57:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzph-0000VO-LQ; Sun, 26 Apr 2026 09:47:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoc-0006CB-9Q for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:31 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoa-0001jW-Jq for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:30 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2b25cf1b5f0so51284955ad.3 for ; Sun, 26 Apr 2026 06:46:28 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211187; x=1777815987; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2XVMrD/f4RJUgxWV8u8BjTDkroVGGY6C/cEhJrX7QLw=; b=nnmT+XE0znfpP/299NN3seaopbeAodNt31G+hfFePzh0kN6bdjbitkoR4dkramzvxH cCKMf0cUP1CU+xzXVMy7NVQdtja7LgJ5lUYd/ylKBKo6akMDqIhRzojWnfkGYwB0kcBl g9unxlonIwo9pPWDisHmyHk28XTDmvYpadB9D/wnTzdbHfnefAB1YuqBdbMwIdtU7V7Z R4an/RnvxR4r2O7/ydXRa8TdKBrQzunqG59Ja7nzy37MV1sZpfHdCtIf852giW16FBI5 Xl6JkZS5Ywtt63dh1+5GVz7Q+zmdmG8g0MEkfkFLLuApNEAB3+6kyGOb/G293yk7DokU aB7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211187; x=1777815987; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=2XVMrD/f4RJUgxWV8u8BjTDkroVGGY6C/cEhJrX7QLw=; b=VVWssERS5tBxRZwZRmA52FHYqkzxSRiY0drSPO8pumCIMLfSnmjBK4xUF5eiTIT+oB /kGIkwS2o756YfBvpyQ+B6zE4hUBpVgDmUy9HzdfDiKzxLAicCZL2kPp2JXEnUXyDcLV itMa4Aq6oJy8+eJapTdD+62uk/ld6xqSOfoiZw6UBgKWiJlsdv4fJOgOp84rfjY+menD n7GK2QL51aN/6D84kJkgMz9aDfQANgo9rlw2m7F20lbstTj9Yqm3vMTPqynEyiFrVVpk hcCe0ODjTqWynOdUxtjdPhZ2xQ4//Kx/DjuNGgjBmBOPLvTNwRJmg3ayf1OEqskLLndU gfZA== X-Gm-Message-State: AOJu0Yxuvod/I83Juox7EWQu6Yk7rLP3lz38/9HiK1YUeO5wr2NIk/UY iXbmpjMGkSWVsSzPui/CtHUBWDirGW9LE7pb4aPnKLq89REjs/QYCTdqdeoBiM8wxlhtj8BznHn KDuf+MME= X-Gm-Gg: AeBDiet32Kakw2LYyDgoMhM2oVvQIGBXutyKg577C/5etpwBuqHgJXB9Z/kLxtb8Tvh X6uRceuIgBSm6lpxBnc0PbBta3helmsogIjtp00g8kaxJUUhOmuPuDFKFDqCObC0aZFpDxd0fzU b3OKmVIpi6aMLEbzgTgeCHR9kY5tobg8c5BrGi573DCqqWeSy3d9fMdljyGlB3PCqf7e90efmte MU311qpVsDi+SXDHMHh/bBqSXwA8cHdZ3FZW8HcctBknX2V4yTjIHKwZgcM3BuMf9WneoJUhuox 1Tw8C8HJh0HDjz1CiKso54mloMON8dU8JQwGohV0TTdVKnPqSo/qf4kkK9dSVDiHE+zkwaLuypM 2/j/o/6X7AZzJWXH0imeKfLY1OcVapnQw81oF8HcseENy7rsNilgUjjgQ7RTQGC3BqvQlgzf8Tn /O0Y9nDyKBqVIRg68BfdhY7wP04yX6q5we4AQwQLiE X-Received: by 2002:a17:902:f550:b0:2b2:4611:5dca with SMTP id d9443c01a7336-2b5f9f1c1edmr408094765ad.24.1777211187215; Sun, 26 Apr 2026 06:46:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 73/84] fpu: Introduce record_denormals_used Date: Sun, 26 Apr 2026 23:39:50 +1000 Message-ID: <20260426134002.865628-74-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211830382154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- fpu/softfloat.c | 8 +++++++ fpu/softfloat-parts.c.inc | 49 +++++++++++---------------------------- 2 files changed, 22 insertions(+), 35 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 0c931842c3..1423695a5a 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -442,6 +442,14 @@ static inline bool is_anynorm(FloatClass c) return float_cmask(c) & float_cmask_anynorm; } =20 +/* Record when denormals have been used. */ +static void record_denormals_used(int mask, float_status *s) +{ + if (unlikely(mask & float_cmask_denormal)) { + float_raise(float_flag_input_denormal_used, s); + } +} + /* FloatParts256 is entirely internal, for parts128_mul* */ typedef struct { FloatClass cls; diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 5eaac357ec..82d59df406 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -534,9 +534,8 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Floa= tPartsN *b, * For addition and subtraction, we will consume an * input denormal unless the other input is a NaN. */ - if ((ab_mask & (float_cmask_denormal | float_cmask_anynan)) =3D=3D - float_cmask_denormal) { - float_raise(float_flag_input_denormal_used, s); + if (!(ab_mask & float_cmask_anynan)) { + record_denormals_used(ab_mask, s); } =20 if (a->sign !=3D b_sign) { @@ -623,9 +622,7 @@ static FloatPartsN *partsN(mul)(FloatPartsN *a, FloatPa= rtsN *b, if (likely(cmask_is_only_normals(ab_mask))) { FloatPartsW tmp; =20 - if (ab_mask & float_cmask_denormal) { - float_raise(float_flag_input_denormal_used, s); - } + record_denormals_used(ab_mask, s); =20 fracN(mulw)(&tmp, a, b); fracN(truncjam)(a, &tmp); @@ -653,9 +650,7 @@ static FloatPartsN *partsN(mul)(FloatPartsN *a, FloatPa= rtsN *b, } =20 /* Multiply by 0 or Inf */ - if (ab_mask & float_cmask_denormal) { - float_raise(float_flag_input_denormal_used, s); - } + record_denormals_used(ab_mask, s); =20 if (ab_mask & float_cmask_inf) { a->cls =3D float_class_inf; @@ -784,9 +779,7 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *= a, FloatPartsN *b, * this matches the set of cases where we consumed a * denormal input. */ - if (abc_mask & float_cmask_denormal) { - float_raise(float_flag_input_denormal_used, s); - } + record_denormals_used(abc_mask, s); return a; =20 return_sub_zero: @@ -819,9 +812,7 @@ FloatPartsN partsN(div)(const FloatPartsN *a, const Flo= atPartsN *b, r.exp -=3D b->exp; =20 if (likely(cmask_is_only_normals(ab_mask))) { - if (ab_mask & float_cmask_denormal) { - float_raise(float_flag_input_denormal_used, s); - } + record_denormals_used(ab_mask, s); r.exp -=3D fracN(div)(&r, b); return r; } @@ -841,8 +832,8 @@ FloatPartsN partsN(div)(const FloatPartsN *a, const Flo= atPartsN *b, return partsN(pick_nan)(a, b, s); } =20 - if ((ab_mask & float_cmask_denormal) && b->cls !=3D float_class_zero) { - float_raise(float_flag_input_denormal_used, s); + if (b->cls !=3D float_class_zero) { + record_denormals_used(ab_mask, s); } =20 /* Inf / X */ @@ -877,9 +868,7 @@ static FloatPartsN *partsN(modrem)(FloatPartsN *a, Floa= tPartsN *b, int ab_mask =3D float_cmask(a->cls) | float_cmask(b->cls); =20 if (likely(cmask_is_only_normals(ab_mask))) { - if (ab_mask & float_cmask_denormal) { - float_raise(float_flag_input_denormal_used, s); - } + record_denormals_used(ab_mask, s); fracN(modrem)(a, b, mod_quot); return a; } @@ -901,9 +890,7 @@ static FloatPartsN *partsN(modrem)(FloatPartsN *a, Floa= tPartsN *b, return a; } =20 - if (ab_mask & float_cmask_denormal) { - float_raise(float_flag_input_denormal_used, s); - } + record_denormals_used(ab_mask, s); =20 /* N % Inf; 0 % N */ g_assert(b->cls =3D=3D float_class_inf || a->cls =3D=3D float_class_ze= ro); @@ -1493,9 +1480,7 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, Fl= oatPartsN *b, if ((flags & (minmax_isnum | minmax_isnumber)) && !(ab_mask & float_cmask_snan) && (ab_mask & ~float_cmask_qnan)) { - if (ab_mask & float_cmask_denormal) { - float_raise(float_flag_input_denormal_used, s); - } + record_denormals_used(ab_mask, s); return is_nan(a->cls) ? b : a; } =20 @@ -1521,9 +1506,7 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, Fl= oatPartsN *b, return a; } =20 - if (ab_mask & float_cmask_denormal) { - float_raise(float_flag_input_denormal_used, s); - } + record_denormals_used(ab_mask, s); =20 a_exp =3D a->exp; b_exp =3D b->exp; @@ -1594,9 +1577,7 @@ static FloatRelation partsN(compare)(FloatPartsN *a, = FloatPartsN *b, if (likely(cmask_is_only_normals(ab_mask))) { FloatRelation cmp; =20 - if (ab_mask & float_cmask_denormal) { - float_raise(float_flag_input_denormal_used, s); - } + record_denormals_used(ab_mask, s); =20 if (a->sign !=3D b->sign) { goto a_sign; @@ -1623,9 +1604,7 @@ static FloatRelation partsN(compare)(FloatPartsN *a, = FloatPartsN *b, return float_relation_unordered; } =20 - if (ab_mask & float_cmask_denormal) { - float_raise(float_flag_input_denormal_used, s); - } + record_denormals_used(ab_mask, s); =20 if (ab_mask & float_cmask_zero) { if (ab_mask =3D=3D float_cmask_zero) { --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211856; cv=none; d=zohomail.com; s=zohoarc; b=OGmdFptguDxQMYvIwzBd1SmSeZHWd/wHbkuRHJBQeN67Nbe7zbt8AxYWgsZVLHP0CdWwHRdS7eEYX+5BmNdISe7lqsDyPl/9c6oYtUJ7/e925ql1F4cBHu3olohf4xYalSJCKwC524Dx3Ph2x3/+npg3WqoAvXcYp4Vv8NPm5bY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211856; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Qi2pCl7ZHfYdZTkVL3nvBP0b2n/j7SskgSjhFZXGku4=; b=bR/YBQO0k2VifWIU3ORBY1MK4KnyFQNNoGQdr8A+d2ygVYPugdmcTgKF5JYK2pW4IqRcARoyisFqvd29Wi94aIiFh9HRjrgYEcUmXIxLaiQ0EoofI75JCVQvo+97dIjPLH3qKSTvjxfHprpwYlIlm0ApITeyK8ORaotsNw64RUE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211856222722.5306431285715; Sun, 26 Apr 2026 06:57:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpi-0000Xl-DN; Sun, 26 Apr 2026 09:47:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzof-0006IO-SY for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:35 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzod-0001lZ-FI for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:33 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2b7d3ecc10dso14946895ad.2 for ; Sun, 26 Apr 2026 06:46:31 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211190; x=1777815990; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Qi2pCl7ZHfYdZTkVL3nvBP0b2n/j7SskgSjhFZXGku4=; b=isfU3Vvvxl7MCb5Qt8akEoxdnD9eJPkR2O/EgQvvWMvp0jWiTM2cqZqIyicfLQnMd+ ZzrijjIWkxElsiesRHrJSh/P5H8iq/Ct1zVqS8TBInE+nb0cnFa2KWAVIEmoaZz2Ol0A lWQegu+KZLqn3P5kjQD6OmORcqe36trJO+dSUAec80AYMb6MSP0clrsg7TquITophji8 6fWkHQCnnbyBM/7RuCRFjgbekijK44G3nMdDsP8fBz9KXG4kRSk5d/2L2l8A+ySBNn84 TbQMljrbzpDtfWc8a92forcK6aQDuR4DIYizxqmFw/5HTxlnZ6V7LcxC4gWPpeFyFpj/ Wvhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211190; x=1777815990; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Qi2pCl7ZHfYdZTkVL3nvBP0b2n/j7SskgSjhFZXGku4=; b=YDvzidsDQapwEvwq9xZBe9vF7BB/pQsse1UExm/S93lmbb/OvTwLkNmERGRxCp/lJW um+X+Tfx2/QbCxq8SQgRwLz66vMBtactcE21qaOFTJBnMUf19PbbTXlBjIkshzgi1Lnm 2YJn60LAImOdvUmTbotqVaWosmCSQTdfuFpB8JmaMRTKu2JsZOWAXtUoIgZX9i8/H6eJ sSJWQEYjzZ229+5vnPEbKvgGfMgDyb1lGijtlcl/j6P+MmbQuvB/WBvGoIymnIYjyBRc MtnBn4/6aPhxn6rdd0KaLVIPDh8w/LFkjuPwjMAjB77qWQQo5j8dM3JupeVNIe9FeB3z 6+iA== X-Gm-Message-State: AOJu0YyGj2oS1AhobbJbb4EwGO1QHZ1TeyRtuw4guK6Er9YMC8LFsVVn Mlb48lRq3z1owyg5hCzijUMi/xacBIK5/3e3ZCv2hX7hZDwgScWxlDCkjRJ5jLhZ+EndYxM80jJ Ie68n5PI= X-Gm-Gg: AeBDievVaW9KKHnhXD9WaNkI1LMkIO1adak+ATmLGysndHaQYhlNczF6phFWdYxrtBW pw4/du6LdawcCQxfVtlvNZXp5hUHp6G62++MrFNbUF/NuncbUM0FyOro+xuQ3SlKaVSqu2Jg4Q9 bY1oqSGkR5viPJMgaRtxCNv2r1TsqnBKtGXgM6Aquxq3EpGEFt8EpID5iFKHDlvqYZOMXxbqbnA x6aiDz3d0SLDiIdNJL9pmIta6e9h/udePjiWk/84i2kcLOoA8wAzdeOFq0fAb0acZVkmDTBGI4t wAb50zGxPfFE4QQzOtBPb6W8aD6oVtN6FL+zxs4JLQUfVlMQk8q6Dro5tAMY1QShtXE+Pm2mva5 rxD+19M6sKVQGKBWuJl3ZVXERVI2ar8KPQ9ny0FxIo80u6wy1zVjSd/xFmPiKd7YJ6UviwFEBed fisFnjzC4pDribiu6pHxBwZpbFuIysgOjxynPqWEwy X-Received: by 2002:a17:902:ebc5:b0:2b0:62dd:3a80 with SMTP id d9443c01a7336-2b5f9ee30aamr381425155ad.17.1777211189920; Sun, 26 Apr 2026 06:46:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 74/84] fpu: Return struct from parts{64,128}_muladd_scalbn Date: Sun, 26 Apr 2026 23:39:51 +1000 Message-ID: <20260426134002.865628-75-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211857151158500 Content-Type: text/plain; charset="utf-8" At the same time, export. Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 9 +++ fpu/softfloat.c | 81 ++++++++++--------- fpu/softfloat-parts.c.inc | 148 +++++++++++++++++----------------- 3 files changed, 122 insertions(+), 116 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index 5b71809541..6416495eac 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -184,6 +184,15 @@ FloatParts64 parts64_div(const FloatParts64 *a, const = FloatParts64 *b, FloatParts128 parts128_div(const FloatParts128 *a, const FloatParts128 *b, float_status *s); =20 +FloatParts64 parts64_muladd_scalbn(const FloatParts64 *a, + const FloatParts64 *b, + const FloatParts64 *c, + int scale, int flags, float_status *s); +FloatParts128 parts128_muladd_scalbn(const FloatParts128 *a, + const FloatParts128 *b, + const FloatParts128 *c, + int scale, int flags, float_status *s= ); + void parts64_round_canonical(FloatParts64 *p, float_status *s, const FloatFmt *fmt); =20 diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 1423695a5a..959a82636b 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1904,15 +1904,15 @@ float16_muladd_scalbn(float16 a, float16 b, float16= c, FloatParts64 pa =3D float16_unpack_canonical(a, status); FloatParts64 pb =3D float16_unpack_canonical(b, status); FloatParts64 pc =3D float16_unpack_canonical(c, status); - FloatParts64 *pr =3D - parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags, status); + FloatParts64 pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, + scale, flags, status); =20 /* Round before applying negate result. */ - parts64_uncanon(pr, status, &float16_params, false); - if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { - pr->sign ^=3D 1; + parts64_uncanon(&pr, status, &float16_params, false); + if ((flags & float_muladd_negate_result) && !is_nan(pr.cls)) { + pr.sign ^=3D 1; } - return pack_raw64(pr, &float16_params); + return pack_raw64(&pr, &float16_params); } =20 float16 float16_muladd(float16 a, float16 b, float16 c, @@ -1928,14 +1928,15 @@ float32_muladd_scalbn(float32 a, float32 b, float32= c, FloatParts64 pa =3D float32_unpack_canonical(a, status); FloatParts64 pb =3D float32_unpack_canonical(b, status); FloatParts64 pc =3D float32_unpack_canonical(c, status); - FloatParts64 *pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags= , status); + FloatParts64 pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, + scale, flags, status); =20 /* Round before applying negate result. */ - parts64_uncanon(pr, status, &float32_params, false); - if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { - pr->sign ^=3D 1; + parts64_uncanon(&pr, status, &float32_params, false); + if ((flags & float_muladd_negate_result) && !is_nan(pr.cls)) { + pr.sign ^=3D 1; } - return pack_raw64(pr, &float32_params); + return pack_raw64(&pr, &float32_params); } =20 float64 QEMU_SOFTFLOAT_ATTR @@ -1945,14 +1946,15 @@ float64_muladd_scalbn(float64 a, float64 b, float64= c, FloatParts64 pa =3D float64_unpack_canonical(a, status); FloatParts64 pb =3D float64_unpack_canonical(b, status); FloatParts64 pc =3D float64_unpack_canonical(c, status); - FloatParts64 *pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, scale, flags= , status); + FloatParts64 pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, + scale, flags, status); =20 /* Round before applying negate result. */ - parts64_uncanon(pr, status, &float64_params, false); - if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { - pr->sign ^=3D 1; + parts64_uncanon(&pr, status, &float64_params, false); + if ((flags & float_muladd_negate_result) && !is_nan(pr.cls)) { + pr.sign ^=3D 1; } - return pack_raw64(pr, &float64_params); + return pack_raw64(&pr, &float64_params); } =20 static bool force_soft_fma; @@ -2102,14 +2104,14 @@ float64 float64r32_muladd(float64 a, float64 b, flo= at64 c, FloatParts64 pa =3D float64_unpack_canonical(a, status); FloatParts64 pb =3D float64_unpack_canonical(b, status); FloatParts64 pc =3D float64_unpack_canonical(c, status); - FloatParts64 *pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, 0, flags, st= atus); + FloatParts64 pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, 0, flags, sta= tus); =20 /* Round before applying negate result. */ - parts64_uncanon(pr, status, &float32_params, false); - if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { - pr->sign ^=3D 1; + parts64_uncanon(&pr, status, &float32_params, false); + if ((flags & float_muladd_negate_result) && !is_nan(pr.cls)) { + pr.sign ^=3D 1; } - return float64r32_pack_raw(pr); + return float64r32_pack_raw(&pr); } =20 bfloat16 QEMU_FLATTEN bfloat16_muladd(bfloat16 a, bfloat16 b, bfloat16 c, @@ -2118,14 +2120,14 @@ bfloat16 QEMU_FLATTEN bfloat16_muladd(bfloat16 a, b= float16 b, bfloat16 c, FloatParts64 pa =3D bfloat16_unpack_canonical(a, status); FloatParts64 pb =3D bfloat16_unpack_canonical(b, status); FloatParts64 pc =3D bfloat16_unpack_canonical(c, status); - FloatParts64 *pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, 0, flags, st= atus); + FloatParts64 pr =3D parts64_muladd_scalbn(&pa, &pb, &pc, 0, flags, sta= tus); =20 /* Round before applying negate result. */ - parts64_uncanon(pr, status, &bfloat16_params, false); - if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { - pr->sign ^=3D 1; + parts64_uncanon(&pr, status, &bfloat16_params, false); + if ((flags & float_muladd_negate_result) && !is_nan(pr.cls)) { + pr.sign ^=3D 1; } - return pack_raw64(pr, &bfloat16_params); + return pack_raw64(&pr, &bfloat16_params); } =20 float128 QEMU_FLATTEN float128_muladd(float128 a, float128 b, float128 c, @@ -2134,14 +2136,14 @@ float128 QEMU_FLATTEN float128_muladd(float128 a, f= loat128 b, float128 c, FloatParts128 pa =3D float128_unpack_canonical(a, status); FloatParts128 pb =3D float128_unpack_canonical(b, status); FloatParts128 pc =3D float128_unpack_canonical(c, status); - FloatParts128 *pr =3D parts128_muladd_scalbn(&pa, &pb, &pc, 0, flags, = status); + FloatParts128 pr =3D parts128_muladd_scalbn(&pa, &pb, &pc, 0, flags, s= tatus); =20 /* Round before applying negate result. */ - parts128_uncanon(pr, status, &float128_params, false); - if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { - pr->sign ^=3D 1; + parts128_uncanon(&pr, status, &float128_params, false); + if ((flags & float_muladd_negate_result) && !is_nan(pr.cls)) { + pr.sign ^=3D 1; } - return float128_pack_raw(pr); + return float128_pack_raw(&pr); } =20 /* @@ -5113,7 +5115,7 @@ float32 float32_exp2(float32 a, float_status *status) rp =3D float64_unpack_canonical(float64_one, status); for (int i =3D 0; i < 15; i++) { tp =3D float64_unpack_canonical(float32_exp2_coefficients[i], stat= us); - rp =3D *parts64_muladd_scalbn(&tp, &xnp, &rp, 0, 0, status); + rp =3D parts64_muladd_scalbn(&tp, &xnp, &rp, 0, 0, status); xnp =3D *parts64_mul(&xnp, &xp, status); } =20 @@ -5162,7 +5164,7 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, n->sign =3D a->sign ^ b->sign; *cc =3D 0; } else { - FloatParts64 *q, q_buf, *r_precise, r_precise_buf; + FloatParts64 *q, q_buf, r_precise; int float_exception_flags =3D 0; bool is_q_smallish; uint32_t r_flags; @@ -5191,12 +5193,11 @@ static void parts_s390_divide_to_integer(FloatParts= 64 *a, FloatParts64 *b, 0, status, fmt); =20 /* Compute precise remainder */ - r_precise_buf =3D *b; - r_precise =3D parts64_muladd_scalbn(&r_precise_buf, n, a, 0, + r_precise =3D parts64_muladd_scalbn(b, n, a, 0, float_muladd_negate_product, sta= tus); =20 /* Round remainder to the target format */ - *r =3D *r_precise; + *r =3D r_precise; status->float_exception_flags =3D 0; parts64_round_canonical(r, status, fmt); r_flags =3D status->float_exception_flags; @@ -5220,17 +5221,17 @@ static void parts_s390_divide_to_integer(FloatParts= 64 *a, FloatParts64 *b, * toward zero) or incremented. */ saved_r_sign =3D r->sign; - saved_r_precise_sign =3D r_precise->sign; + saved_r_precise_sign =3D r_precise.sign; r->sign =3D false; - r_precise->sign =3D false; - if (parts64_compare(r, r_precise, status, true) < + r_precise.sign =3D false; + if (parts64_compare(r, &r_precise, status, true) < float_relation_equal) { *dxc =3D 0x8; } else { *dxc =3D 0xc; } r->sign =3D saved_r_sign; - r_precise->sign =3D saved_r_precise_sign; + r_precise.sign =3D saved_r_precise_sign; } } } diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 82d59df406..ab773ed241 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -677,15 +677,15 @@ static FloatPartsN *partsN(mul)(FloatPartsN *a, Float= PartsN *b, * Requires A and C extracted into a double-sized structure to provide the * extra space for the widening multiply. */ -static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *a, FloatPartsN *b, - FloatPartsN *c, int scale, - int flags, float_status *s) +FloatPartsN partsN(muladd_scalbn)(const FloatPartsN *a, + const FloatPartsN *b, + const FloatPartsN *c, + int scale, int flags, float_status *s) { - int ab_mask, abc_mask; - FloatPartsW p_widen, c_widen; - - ab_mask =3D float_cmask(a->cls) | float_cmask(b->cls); - abc_mask =3D float_cmask(c->cls) | ab_mask; + int ab_mask =3D float_cmask(a->cls) | float_cmask(b->cls); + int abc_mask =3D float_cmask(c->cls) | ab_mask; + bool c_sign =3D c->sign ^ !!(flags & float_muladd_negate_c); + bool p_sign =3D a->sign ^ b->sign ^ !!(flags & float_muladd_negate_pro= duct); =20 /* * It is implementation-defined whether the cases of (0,inf,qnan) @@ -694,18 +694,7 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN = *a, FloatPartsN *b, * off to the target-specific pick-a-NaN routine. */ if (unlikely(abc_mask & float_cmask_anynan)) { - *a =3D partsN(pick_nan_muladd)(a, b, c, s, ab_mask, abc_mask); - return a; - } - - if (flags & float_muladd_negate_c) { - c->sign ^=3D 1; - } - - /* Compute the sign of the product into A. */ - a->sign ^=3D b->sign; - if (flags & float_muladd_negate_product) { - a->sign ^=3D 1; + return partsN(pick_nan_muladd)(a, b, c, s, ab_mask, abc_mask); } =20 if (unlikely(!cmask_is_only_normals(ab_mask))) { @@ -715,86 +704,93 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN= *a, FloatPartsN *b, } =20 if (ab_mask & float_cmask_inf) { - if (c->cls =3D=3D float_class_inf && a->sign !=3D c->sign) { + if (c->cls =3D=3D float_class_inf && p_sign !=3D c_sign) { float_raise(float_flag_invalid | float_flag_invalid_isi, s= ); goto d_nan; } - goto return_inf; + record_denormals_used(abc_mask, s); + return (FloatPartsN){ .sign =3D p_sign, .cls =3D float_class_i= nf }; } =20 - g_assert(ab_mask & float_cmask_zero); - if (is_anynorm(c->cls)) { - *a =3D *c; - goto return_normal; - } - if (c->cls =3D=3D float_class_zero) { + record_denormals_used(abc_mask, s); + + assert(ab_mask & float_cmask_zero); + switch (c->cls) { + case float_class_normal: + case float_class_denormal: + { + FloatPartsN r =3D *c; + r.exp +=3D scale; + return r; + } + + case float_class_zero: if (flags & float_muladd_suppress_add_product_zero) { - a->sign =3D c->sign; - } else if (a->sign !=3D c->sign) { + /* return zero with new sign */ + } else if (p_sign !=3D c_sign) { goto return_sub_zero; } - goto return_zero; + goto return_zero_c; + + case float_class_inf: + goto return_inf_c; + + default: + g_assert_not_reached(); } - g_assert(c->cls =3D=3D float_class_inf); } =20 + record_denormals_used(abc_mask, s); + if (unlikely(c->cls =3D=3D float_class_inf)) { - a->sign =3D c->sign; - goto return_inf; + goto return_inf_c; } =20 /* Perform the multiplication step. */ - p_widen.sign =3D a->sign; - p_widen.exp =3D a->exp + b->exp + 1; - fracN(mulw)(&p_widen, a, b); - if (!(p_widen.frac_hi & DECOMPOSED_IMPLICIT_BIT)) { - fracW(add)(&p_widen, &p_widen, &p_widen); - p_widen.exp -=3D 1; - } + { + FloatPartsW p_widen =3D { .sign =3D p_sign, .exp =3D a->exp + b->e= xp + 1 }; =20 - /* Perform the addition step. */ - if (c->cls !=3D float_class_zero) { - /* Zero-extend C to less significant bits. */ - fracN(widen)(&c_widen, c); - c_widen.exp =3D c->exp; + fracN(mulw)(&p_widen, a, b); + if (!(p_widen.frac_hi & DECOMPOSED_IMPLICIT_BIT)) { + fracW(add)(&p_widen, &p_widen, &p_widen); + p_widen.exp -=3D 1; + } =20 - if (a->sign =3D=3D c->sign) { - partsW(add_normal)(&p_widen, &c_widen); - } else if (!partsW(sub_normal)(&p_widen, &c_widen)) { - goto return_sub_zero; + /* Perform the addition step. */ + if (c->cls !=3D float_class_zero) { + /* Zero-extend C to less significant bits. */ + FloatPartsW c_widen =3D { .sign =3D c_sign, .exp =3D c->exp }; + fracN(widen)(&c_widen, c); + + if (p_widen.sign =3D=3D c_sign) { + partsW(add_normal)(&p_widen, &c_widen); + } else if (!partsW(sub_normal)(&p_widen, &c_widen)) { + goto return_sub_zero; + } + } + + /* Narrow with sticky bit, for proper rounding later. */ + { + FloatPartsN r =3D { + .sign =3D p_widen.sign, + .exp =3D p_widen.exp + scale, + .cls =3D float_class_normal, + }; + fracN(truncjam)(&r, &p_widen); + return r; } } =20 - /* Narrow with sticky bit, for proper rounding later. */ - fracN(truncjam)(a, &p_widen); - a->sign =3D p_widen.sign; - a->exp =3D p_widen.exp; - - return_normal: - a->exp +=3D scale; - finish_sign: - /* - * All result types except for "return the default NaN - * because this is an Invalid Operation" go through here; - * this matches the set of cases where we consumed a - * denormal input. - */ - record_denormals_used(abc_mask, s); - return a; + return_inf_c: + return (FloatPartsN){ .sign =3D c_sign, .cls =3D float_class_inf }; =20 return_sub_zero: - a->sign =3D s->float_rounding_mode =3D=3D float_round_down; - return_zero: - a->cls =3D float_class_zero; - goto finish_sign; - - return_inf: - a->cls =3D float_class_inf; - goto finish_sign; + c_sign =3D s->float_rounding_mode =3D=3D float_round_down; + return_zero_c: + return (FloatPartsN){ .sign =3D c_sign, .cls =3D float_class_zero }; =20 d_nan: - *a =3D partsN(default_nan)(s); - return a; + return partsN(default_nan)(s); } =20 /* --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211395; cv=none; d=zohomail.com; s=zohoarc; b=I/43c4i7GfKEs7zAE3Eos9YMRvXWgSDoZtQR01y5sb/iagVqTqkYMJgZ779NTnS0EwlcjDaP4P/96JgSvJb1F1hkjQYc+gjPQBeZU0FPuV8cKOaAovup+LvAFNvPRW9Z476wv3JKSA6muVoGHi4n0G4M0lEIFTK4j9Xh8e1tr7k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211395; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ArQwXjzFF16f9Ne+o84gg3ezdzBrk7JE6QKO/XyacX4=; b=E0yszcVg2JQcGDwGGW9wJZ7knUAt3L3evPlzoHBSLhEmYiFKnZKVnAjSevRvptS4lKVv5s+8F4y8vS6mG8L5UZCDgGf7Nsiz1uLwoowYcMJzm/21dhxxGjLqLQtN6S+O5KReoYB8mq78ppg936rmedNpW1DcP5c+qXnE3j66ncc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211394993264.52114344639153; Sun, 26 Apr 2026 06:49:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpc-0008W9-0h; Sun, 26 Apr 2026 09:47:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzoj-0006N2-L8 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:39 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzof-0001m7-TF for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:36 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2b2ea1b3962so53573225ad.0 for ; Sun, 26 Apr 2026 06:46:33 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211192; x=1777815992; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ArQwXjzFF16f9Ne+o84gg3ezdzBrk7JE6QKO/XyacX4=; b=NzRGkwkOF9pnRzIQRHnOVyNE/yAzpxAuqTt7rewRUZx/o4wofSL6k/cvGIrXdv5ZkA bLvnHfsEH59y/ZHx7nfDoxl/41SRL76CtPyIh67MhPNMJYOc3AmBSLpAcWDN1bgzw6nl c/bEs+q7tNg8g8Almh9E4yGAK3IF8JbNTpVtoNWkZXBeudm7AwW+3x0uxFadWe3CW3eH ANJV99RsZLTJfDrmWRlRg7kk1+a/AkyoGQumCSDxXoDwlLxV/OEhqK+vjdz7NXnsFSnb SzA/1VUMrKXRe3e0KuWbo+jr/0L67uciCEn0E4fQoeRxHfh9msa8wz526TWmppLoDT1o RFeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211192; x=1777815992; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ArQwXjzFF16f9Ne+o84gg3ezdzBrk7JE6QKO/XyacX4=; b=X+opP/1QPWGpkZ6hFpJXL/xu6cUVkNG5sS14j+x93NwJegIqa8EeOxceEvsG+XLIHu 34F+muuRMRN2sl8uZKWWK8JM3IphxT8/70jboR6988Vi2oNLXNyk+qIcWMLbFeGN4DM8 ccxwuY9fSMftQbaHLf3WBu1ZDPieF4JVQomVuhrF0owSKFeaaMfSuw6Qd6uFHv0cRlAG 9ERyya7Ax39HU3N0G6tV1zGaeNyRuatIEFfeoAPPyisjy8OxamFdClfB5oIuWON7m+KO 1sxALOoPKZ2kCyGMmFMUEYHm2Hg/JZCXRR+DU11R0xg/kZ9tRMu5TL+EECzu9sGsyHXV FZrg== X-Gm-Message-State: AOJu0YzbtRozgxR8NqRtJFGel1cmSpYuhfug8eAcV4XgHv4npwHrTbXz guSoPMzQBt1FQ/FLUBhxYFrTGPSsctvmGvb8Z5IVHS2WH7DDNt9GV1Z7SQVlMBD8dByCFqBgMSu tRkEWtTY= X-Gm-Gg: AeBDiesGMUPg2lAKSeVHeD0f3KQdXWNFQA8GqdBzj8iHp/z1sVfkNtAXG42LdKZycNJ BhNbux6I4R+W8gmX5HBgZ/bEmUr9YQWVAN2joAgMknz1r/Q1h+CYhHGFNyUKvTytE36gJtOB0J5 aksJpLMP1SeSlyl9VvpBzjiMBvsnV8N5GbZblPk90N5v+Po96nm3Ik3kR0bHjDPJOwF0etShTjH QWoNUxogeG2f9hgqyY1YHJs1Scjf/IMAHvZmL22s8UNAQgDf8A8HG6ao6t4dNybl8YPyXr4TCCs Dx+W2J5tufT3SlIKywDiYrTu2MaZ+toxecpOExfUjQYLhlLt2uy7rtUc2VsZMpYqL8H+G0TBAm0 QN22O5bil9wehfoK5M4gPs7jAqjXpVeAQdXWwHE+kzTclzpVoIsykztRFi9Zn/qzhLg024K7oAQ TyT4lRSSz6QIRJBkshnqwvwi7HqQmSt0sOXIfhmtqe X-Received: by 2002:a17:902:ee84:b0:2b2:4697:78f4 with SMTP id d9443c01a7336-2b5f9fe094fmr331404855ad.31.1777211192517; Sun, 26 Apr 2026 06:46:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 75/84] fpu: Drop QEMU_FLATTEN from muladd routines Date: Sun, 26 Apr 2026 23:39:52 +1000 Message-ID: <20260426134002.865628-76-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211396195154100 Content-Type: text/plain; charset="utf-8" The float16, bfloat16 and float128 paths are not so important that they require forced optimization. Signed-off-by: Richard Henderson --- fpu/softfloat.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 959a82636b..d51920652a 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1897,9 +1897,8 @@ floatx80_mul(floatx80 a, floatx80 b, float_status *st= atus) * Fused multiply-add */ =20 -float16 QEMU_FLATTEN -float16_muladd_scalbn(float16 a, float16 b, float16 c, - int scale, int flags, float_status *status) +float16 float16_muladd_scalbn(float16 a, float16 b, float16 c, + int scale, int flags, float_status *status) { FloatParts64 pa =3D float16_unpack_canonical(a, status); FloatParts64 pb =3D float16_unpack_canonical(b, status); @@ -2114,8 +2113,8 @@ float64 float64r32_muladd(float64 a, float64 b, float= 64 c, return float64r32_pack_raw(&pr); } =20 -bfloat16 QEMU_FLATTEN bfloat16_muladd(bfloat16 a, bfloat16 b, bfloat16 c, - int flags, float_status *status) +bfloat16 bfloat16_muladd(bfloat16 a, bfloat16 b, bfloat16 c, + int flags, float_status *status) { FloatParts64 pa =3D bfloat16_unpack_canonical(a, status); FloatParts64 pb =3D bfloat16_unpack_canonical(b, status); @@ -2130,8 +2129,8 @@ bfloat16 QEMU_FLATTEN bfloat16_muladd(bfloat16 a, bfl= oat16 b, bfloat16 c, return pack_raw64(&pr, &bfloat16_params); } =20 -float128 QEMU_FLATTEN float128_muladd(float128 a, float128 b, float128 c, - int flags, float_status *status) +float128 float128_muladd(float128 a, float128 b, float128 c, + int flags, float_status *status) { FloatParts128 pa =3D float128_unpack_canonical(a, status); FloatParts128 pb =3D float128_unpack_canonical(b, status); --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211473; cv=none; d=zohomail.com; s=zohoarc; b=OAM92s1Mkbo7HzGh9BeKlTErLwo8pK5bzrXmctTGFAnChsjV62BuPeCJ++R4XiCLDUC7Xhivg0UILdXaSw+wyhjE/9yL2JlthTwIHK5IG2JqtDDCfUmRd64udrbIJqrvYsuhTOGHJW3tsr3s7zMQXT4Q0NzMxPre8drhCsdxhoM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211473; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=a0oqnYQ0u3G7vT144+M4wADIi602YyjTouglPnmTjXw=; b=MgC6L/3wzEtRDfHZkLMCjopTlTI5P/Tkj5Mucv1kNwwxTukv1APHQFJcDCV2dLerbr2S9Iwp4TBB+Khlvbbktt9lR/a3/1OdUebRgHgx/JOemZYzxsMbsJl3RMg3EcvGDQHFhxWEAUculvQhKkdoRSikOuNhGUMyGbC1t8POs5Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721147301739.61704750643253; Sun, 26 Apr 2026 06:51:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpc-00008X-Ny; Sun, 26 Apr 2026 09:47:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzon-0006PI-Pv for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:43 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzoj-0001nE-C5 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:39 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-35d90833cacso5813232a91.2 for ; Sun, 26 Apr 2026 06:46:36 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211195; x=1777815995; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=a0oqnYQ0u3G7vT144+M4wADIi602YyjTouglPnmTjXw=; b=nycIjDmFAL1kfqw6dgskcDpGv2/nzt3XarRLD37OXHZnqLtqddJeWvx0a3YjtdeSz3 vsOWOqdv3vI5I6PbZ8Wrp0v/+m/VVwklHcgNcqMZ3Gu41P4hhVdI5CP7uy31U15ToXg/ mXWhJALLkSwYFtp/3jMC/QfUaWPrTjK8DcanMAcjKfw596scIpPVAMjDFkjOjwOKFFqc YPOcQudOnPzP7cEofCcgXLqtiEZVBGuLWPD7JS6X/OAkCLaQRJMLhkmi9sV7/CMWXgn7 TrNhcJExoZ6tXJ8pHleBYi+iBa8SH9Q8xQcnKh5L31OMhCG90AbLEhB3+SbCxo5Z4MU9 WNyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211195; x=1777815995; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=a0oqnYQ0u3G7vT144+M4wADIi602YyjTouglPnmTjXw=; b=AGHwlGq9yOmhsG8zcNPB88Ie1HgKye7CuYbv9x0+EcCmAG7sF/EiKUX9CnNB58N5tL 8UrJpIvbFTam+fvCAIrbEJJ8RtdopTVAIhYA4o08CGriLAI9gJKXdymQ9BgshpewCQyv ltjeV8U6JTslw6V5M6Gg4UeKyzSVVjqlSZnAlDta5fe8sgisqxdTgssq0nguXjkY4rHM twqREHLIJtDE7Uy8NfwwRNX9YQHhhTnn44aYgGXLU81em3gq4icbhXakPcjWDm9NeB1g NPFXDK1oMXp3WL+PQa9yWTE9/gtClj4UaDMm0ZcpyHh2TlDaKp+OW07pENvRO2ovIU1/ w+jw== X-Gm-Message-State: AOJu0Yy8LVnmFZkLSDxB/jq/ZqoXteAlaEI/s0fsSQBf5VZVO0iSjVqp dBdKk96HzMnTNBoRaxHoW/Q0f7yX3GnlALGcmdxtpQ5srmMWb1blVCyFFvckRcLboJd9U3ct2y7 RsaIoT9o= X-Gm-Gg: AeBDiev2SCG5sULMTnZ7je900CFrujYZvEWwfIjqx8CYg2yzXyP9xG/+gBOCRlDIZ8T JDTlNhXfpGYoelTQjMHZFf4b6rRwhVTHPUTuDgCTs5X0+eodqbZf8QZGF1fSEokCywL2CXqdMlx wUKF++W1ME2Y5b3Jj45H5BQ0i4tL6AbQDrtXprEyQxDXNcCcSY+4Mrw1ZOlQ5sDliUYJmBUwjFe BSn/s6GR5IUOVe05BiPW9F+vsS2N9fH3D7OWVgFRfYnbZRp8o5J1QfwTOmWod31lFNBu+o0t2j1 7rUkDNAPsYCSlXmDrI55kLDLVcfmHSBGqB3bz6RTh/Ncz045RK+IaP/jv75Ry7/Hnat5fS2XLJv OqIsFTz1Ex6vULUCqQhqBtxvUDDcfFH/2cHh5mesl4alwanAxHmMdWwAuVErWcOGgHCTQKpY1nD OW2Gc5rgeUaUJOsXB3vEjK6on7KJfT7CEChMMYLMxw X-Received: by 2002:a17:903:98b:b0:2b0:7026:24bf with SMTP id d9443c01a7336-2b5f9eff280mr404285365ad.14.1777211195209; Sun, 26 Apr 2026 06:46:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 76/84] fpu: Export parts{64,128}_compare Date: Sun, 26 Apr 2026 23:39:53 +1000 Message-ID: <20260426134002.865628-77-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211473773158500 Content-Type: text/plain; charset="utf-8" At the same time, constify the inputs. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/fpu/softfloat-parts.h | 5 +++++ fpu/softfloat-parts.c.inc | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index 6416495eac..f8f96e2f68 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -184,6 +184,11 @@ FloatParts64 parts64_div(const FloatParts64 *a, const = FloatParts64 *b, FloatParts128 parts128_div(const FloatParts128 *a, const FloatParts128 *b, float_status *s); =20 +FloatRelation parts64_compare(const FloatParts64 *a, const FloatParts64 *b, + float_status *s, bool quiet); +FloatRelation parts128_compare(const FloatParts128 *a, const FloatParts128= *b, + float_status *s, bool quiet); + FloatParts64 parts64_muladd_scalbn(const FloatParts64 *a, const FloatParts64 *b, const FloatParts64 *c, diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index ab773ed241..fcb6b33f23 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1565,8 +1565,8 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, Fl= oatPartsN *b, /* * Floating point compare */ -static FloatRelation partsN(compare)(FloatPartsN *a, FloatPartsN *b, - float_status *s, bool is_quiet) +FloatRelation partsN(compare)(const FloatPartsN *a, const FloatPartsN *b, + float_status *s, bool is_quiet) { int ab_mask =3D float_cmask(a->cls) | float_cmask(b->cls); =20 --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211322; cv=none; d=zohomail.com; s=zohoarc; b=KcKucsxw5zZp4hQ0QIrg2fFuiZBRnHq6YtS0p4W15LQBLYKgjI34BcpCFoKzP+MNsQOXfV+AOjBACRuF4IymHLV4uC/VF/IGPbXzd6Sen17bFY6mvhIwC+FXjG2nOgCDZs7d7TD+PuBWSVXJvf3KnbsT72Cdblqva8BRZWlxR+A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211322; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3GlUZEeXNrd6IeBTT/VPgwheNJ2QhpgSCUGop1hIVl8=; b=OCYR8yZy2ljdN5+KZUr2DIAoDfXiGPihRoJgwQr3vwAul3DE33wAUCZBmW+WQgu/8PoXYC4A94XiFikvRxUge63U0er6nuUpBWlnnIvVg6/cI4+GYw+AQsAPzyMWCGkXvkbziTQtFxVOLXLR6bRDyjP0uK05+p6gELHULaYn3G0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211322559838.5133990130485; Sun, 26 Apr 2026 06:48:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpe-0000KX-MO; Sun, 26 Apr 2026 09:47:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzor-0006WK-QV for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:45 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzon-0001rZ-Iv for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:44 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-3567e2b4159so6302556a91.0 for ; Sun, 26 Apr 2026 06:46:41 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211200; x=1777816000; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3GlUZEeXNrd6IeBTT/VPgwheNJ2QhpgSCUGop1hIVl8=; b=FyWMDIp3KALu3tcxavaUbvTUltKzVK9yFqznPX+pAE1LEKWAC6n7chbeA6Qgi3AXgM L75ArCERyMgbNmlnmoUdFBAoQ0RWRe47oLTjy5DxAVm2XGPnFtIvGBOH/HyuJjTdVvCk WJJaemvCzQn0d1JqlbFPnnUVGNEX50o+IZSpNWxz7JwOU2rm8Ugy8V2sc3KXYmsJMtBC 1rYAg/Q2ue/DiThWsykWXbMut0VFspJSd2KNThcQCYozqZgInKdV1epETDR3ERA+aofY wocWeh9Eqq+K1kIKHPTGvJEqd9+sXnrTHE0F98LN7dhIy1KKHS+za7v/Nf00dYWpeAWK kwsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211200; x=1777816000; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=3GlUZEeXNrd6IeBTT/VPgwheNJ2QhpgSCUGop1hIVl8=; b=fsVXto97hRsc7QKSZE5yIf4jjgJNj21QwxFmVqLtqk+jyVme6cH734tc/mYV0av0AH h6sSZLsX5vLoaaIj/WPWch1xguMjNJpYvGU1kRIC7or0KDJivVBrBIARYYOIWAWHL3wW IFBh5xxXE8a3Qq6lVtuxgTnqrRd43/G/BfA1A+fUGndpWlBxvHGzPGtteTHN2oJb+YgH vg62DqPI/AMbwhHCyzIwxiaO1KxvKq1my1rVcUfvdIVV/9GbjAbFUBvP5bPvxHEZvJ5t s6i9+3F7ZDQqKptevsWdRoIwmzd46aEs+kwDIGI6Mj/cTe3zA49UC2yJRxFuYVyJ4u9q 41Hg== X-Gm-Message-State: AOJu0YxvlI4Fj3L9Kk78SKRMzlVKcH8ptFWosSbMBhRQd4eqhwasaTkv mZXvLfrHkgTE9nd6D5lgl0qCQewdkgssHplxT5qT2ll81n0eMbOTmNa8WpwVWP0JH8bvOTGh/Zb IFKxpj00= X-Gm-Gg: AeBDiesLKVmEa25wYPizWUJEW6kKjVCmFYHOjvGi/AHmkuFcP4lCcElufoi5CnHOnw/ vhRtTfvTkxXAslLq7r/5imVbamT2+rGaTJOoULh5z/AWHAzTaqxiBPsBSc/R5VmtREMPLvyIzb1 NpMzXDOn/Q4xSNLAAC3GerL7Ja+1q/kGQdRiemzBWYero80kCjhKWOUlsgVKmnXGWNpgavH0zaX SRAeGc4DJ76CMxPJRor+wDDtuRLCSGr+V4lzZzNtGRC1QRNiOozGPkfogWY0V51rMirWxoHQ1Yq Ls0+tWfQKMW4k2Gp7Cvwq9JViKNrTpxZr5xWa9mek/TPTMCXoXmc0QcmCe2gHVCdOmno3PPlRr0 +S45s4Zk/PmwQ/L7K953N10b3lIjL3nw3kr0/4L6pS6YwvlH6NVNATJBRzV+YjiIv9bQc3E4KnO AaD71f7LJ3Ng3iiaqEDjM3FkXcNJG1HnG+lJZQUx9pJaFu9vNlskQ= X-Received: by 2002:a17:90a:6c90:b0:35f:bb33:d721 with SMTP id 98e67ed59e1d1-361403cbdb9mr24620435a91.5.1777211199882; Sun, 26 Apr 2026 06:46:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 77/84] fpu: Return struct from parts{64,128}_mul Date: Sun, 26 Apr 2026 23:39:54 +1000 Message-ID: <20260426134002.865628-78-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211325250154100 Content-Type: text/plain; charset="utf-8" At the same time, export. Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 5 +++++ fpu/softfloat.c | 34 +++++++++++++++++----------------- fpu/softfloat-parts.c.inc | 35 ++++++++++++++++------------------- 3 files changed, 38 insertions(+), 36 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index f8f96e2f68..f2c31eb7a6 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -189,6 +189,11 @@ FloatRelation parts64_compare(const FloatParts64 *a, c= onst FloatParts64 *b, FloatRelation parts128_compare(const FloatParts128 *a, const FloatParts128= *b, float_status *s, bool quiet); =20 +FloatParts64 parts64_mul(const FloatParts64 *a, const FloatParts64 *b, + float_status *s); +FloatParts128 parts128_mul(const FloatParts128 *a, const FloatParts128 *b, + float_status *s); + FloatParts64 parts64_muladd_scalbn(const FloatParts64 *a, const FloatParts64 *b, const FloatParts64 *c, diff --git a/fpu/softfloat.c b/fpu/softfloat.c index d51920652a..2db08ca660 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1801,9 +1801,9 @@ float16 QEMU_FLATTEN float16_mul(float16 a, float16 b= , float_status *status) { FloatParts64 pa =3D float16_unpack_canonical(a, status); FloatParts64 pb =3D float16_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_mul(&pa, &pb, status); + FloatParts64 pr =3D parts64_mul(&pa, &pb, status); =20 - return float16_round_pack_canonical(pr, status); + return float16_round_pack_canonical(&pr, status); } =20 static float32 QEMU_SOFTFLOAT_ATTR @@ -1811,9 +1811,9 @@ soft_f32_mul(float32 a, float32 b, float_status *stat= us) { FloatParts64 pa =3D float32_unpack_canonical(a, status); FloatParts64 pb =3D float32_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_mul(&pa, &pb, status); + FloatParts64 pr =3D parts64_mul(&pa, &pb, status); =20 - return float32_round_pack_canonical(pr, status); + return float32_round_pack_canonical(&pr, status); } =20 static float64 QEMU_SOFTFLOAT_ATTR @@ -1821,9 +1821,9 @@ soft_f64_mul(float64 a, float64 b, float_status *stat= us) { FloatParts64 pa =3D float64_unpack_canonical(a, status); FloatParts64 pb =3D float64_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_mul(&pa, &pb, status); + FloatParts64 pr =3D parts64_mul(&pa, &pb, status); =20 - return float64_round_pack_canonical(pr, status); + return float64_round_pack_canonical(&pr, status); } =20 static float hard_f32_mul(float a, float b) @@ -1854,9 +1854,9 @@ float64 float64r32_mul(float64 a, float64 b, float_st= atus *status) { FloatParts64 pa =3D float64_unpack_canonical(a, status); FloatParts64 pb =3D float64_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_mul(&pa, &pb, status); + FloatParts64 pr =3D parts64_mul(&pa, &pb, status); =20 - return float64r32_round_pack_canonical(pr, status); + return float64r32_round_pack_canonical(&pr, status); } =20 bfloat16 QEMU_FLATTEN @@ -1864,9 +1864,9 @@ bfloat16_mul(bfloat16 a, bfloat16 b, float_status *st= atus) { FloatParts64 pa =3D bfloat16_unpack_canonical(a, status); FloatParts64 pb =3D bfloat16_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_mul(&pa, &pb, status); + FloatParts64 pr =3D parts64_mul(&pa, &pb, status); =20 - return bfloat16_round_pack_canonical(pr, status); + return bfloat16_round_pack_canonical(&pr, status); } =20 float128 QEMU_FLATTEN @@ -1874,23 +1874,23 @@ float128_mul(float128 a, float128 b, float_status *= status) { FloatParts128 pa =3D float128_unpack_canonical(a, status); FloatParts128 pb =3D float128_unpack_canonical(b, status); - FloatParts128 *pr =3D parts128_mul(&pa, &pb, status); + FloatParts128 pr =3D parts128_mul(&pa, &pb, status); =20 - return float128_round_pack_canonical(pr, status); + return float128_round_pack_canonical(&pr, status); } =20 floatx80 QEMU_FLATTEN floatx80_mul(floatx80 a, floatx80 b, float_status *status) { - FloatParts128 pa, pb, *pr; + FloatParts128 pa, pb; =20 if (!floatx80_unpack_canonical(&pa, a, status) || !floatx80_unpack_canonical(&pb, b, status)) { return floatx80_default_nan(status); } =20 - pr =3D parts128_mul(&pa, &pb, status); - return floatx80_round_pack_canonical(pr, status); + pa =3D parts128_mul(&pa, &pb, status); + return floatx80_round_pack_canonical(&pa, status); } =20 /* @@ -5108,14 +5108,14 @@ float32 float32_exp2(float32 a, float_status *statu= s) float_raise(float_flag_inexact, status); =20 tp =3D float64_unpack_canonical(float64_ln2, status); - xp =3D *parts64_mul(&xp, &tp, status); + xp =3D parts64_mul(&xp, &tp, status); xnp =3D xp; =20 rp =3D float64_unpack_canonical(float64_one, status); for (int i =3D 0; i < 15; i++) { tp =3D float64_unpack_canonical(float32_exp2_coefficients[i], stat= us); rp =3D parts64_muladd_scalbn(&tp, &xnp, &rp, 0, 0, status); - xnp =3D *parts64_mul(&xnp, &xp, status); + xnp =3D parts64_mul(&xnp, &xp, status); } =20 return float32_round_pack_canonical(&rp, status); diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index fcb6b33f23..dca751fb94 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -613,55 +613,52 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Fl= oatPartsN *b, * `b'. The operation is performed according to the IEC/IEEE Standard * for Binary Floating-Point Arithmetic. */ -static FloatPartsN *partsN(mul)(FloatPartsN *a, FloatPartsN *b, - float_status *s) +FloatPartsN partsN(mul)(const FloatPartsN *a, const FloatPartsN *b, + float_status *s) { int ab_mask =3D float_cmask(a->cls) | float_cmask(b->cls); bool sign =3D a->sign ^ b->sign; =20 if (likely(cmask_is_only_normals(ab_mask))) { FloatPartsW tmp; + FloatPartsN r =3D { + .cls =3D float_class_normal, + .sign =3D sign, + .exp =3D a->exp + b->exp + 1, + }; =20 record_denormals_used(ab_mask, s); =20 fracN(mulw)(&tmp, a, b); - fracN(truncjam)(a, &tmp); + fracN(truncjam)(&r, &tmp); =20 - a->exp +=3D b->exp + 1; - if (!(a->frac_hi & DECOMPOSED_IMPLICIT_BIT)) { - fracN(add)(a, a, a); - a->exp -=3D 1; + if (!(r.frac_hi & DECOMPOSED_IMPLICIT_BIT)) { + fracN(add)(&r, &r, &r); + r.exp -=3D 1; } =20 - a->sign =3D sign; - return a; + return r; } =20 /* Inf * Zero =3D=3D NaN */ if (unlikely(ab_mask =3D=3D float_cmask_infzero)) { float_raise(float_flag_invalid | float_flag_invalid_imz, s); - *a =3D partsN(default_nan)(s); - return a; + return partsN(default_nan)(s); } =20 if (unlikely(ab_mask & float_cmask_anynan)) { - *a =3D partsN(pick_nan)(a, b, s); - return a; + return partsN(pick_nan)(a, b, s); } =20 /* Multiply by 0 or Inf */ record_denormals_used(ab_mask, s); =20 if (ab_mask & float_cmask_inf) { - a->cls =3D float_class_inf; - a->sign =3D sign; - return a; + return (FloatPartsN){ .cls =3D float_class_inf, .sign =3D sign }; } =20 g_assert(ab_mask & float_cmask_zero); - a->cls =3D float_class_zero; - a->sign =3D sign; - return a; + return (FloatPartsN){ .cls =3D float_class_zero, .sign =3D sign }; } =20 /* --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211826; cv=none; d=zohomail.com; s=zohoarc; b=fu6wp70ffUhn9tOxbkMhCc8srPP0ywsREnzMvAJ1Kw+lGmssWQufwtDpzUezWMWdd9olXtZGunfBpJ0m2lYPfNMn1S4MK0Z2Ai7ag4im/bJnofur4Go6aFHA7dft1bbcNqSD7Ef/VPTJRR2G+W0TB6RAtzoMQP19/Ik5pvrx6WI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211826; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VMfXr5S8cPMC+8Vry/EpCZiImkLfaNYbWDc+T09/bCA=; b=V/10PdlPvSSFiqRY2Ql8uPal3AxzyPTVZGz7+2eK07/xKNFbTo43BJ2Mmb5cE5IgNJGYR6JyCAYUUyGqPCfHstiS/RFQfJYh7GCfdo9GTRDUO9NDvD14I4E3vFbPqtUdB9mzeA7RbNEoEepjjhxke1zL8r2y8LK2XB/OrtrtVes= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211826842658.3465416371649; Sun, 26 Apr 2026 06:57:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpf-0000P0-NV; Sun, 26 Apr 2026 09:47:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzot-0006bv-V7 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:48 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzop-0001sA-T5 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:46 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2b4650d5f5cso35019985ad.0 for ; Sun, 26 Apr 2026 06:46:43 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211202; x=1777816002; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VMfXr5S8cPMC+8Vry/EpCZiImkLfaNYbWDc+T09/bCA=; b=pI195jRpmUUasChWb3m7R/FBD9ddkE4CCll8Wtqt6b557kHvvT4W6Hna3bdg2bpdaL 8h9Dj92GfFhtY876DGxRY/x80gd5ZpWkeAR4VC0tmyvtA8BUP9ZTCgXLk9fCz9i4QPVH /7ybrBL2HAcUpsgWFk7aczC/7j2ory9hZ3MFKLCsvqxjC3DhW/PoBHCK+WitUzCX1LYp 5+hWiTzi6NGHx/fdo+XGnYSEQM4w8uFYM+JyayUixPbDs8XzQZBFKMWqE5qPSkiKngdJ 7n40mIZHIFYKMtfWBrvI8eLzSTfdP8FCFqWqWpa265cMNz50jCxAARTOlnyiJ3wplrNn +xiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211202; x=1777816002; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=VMfXr5S8cPMC+8Vry/EpCZiImkLfaNYbWDc+T09/bCA=; b=P5wRPFrCEqQn5F+OdpOQkTAfrz/A4Su2wgJpvGM5qNjwmtSNrZmZ+i0JscKIhfjEqI 246/k3sU+xkfLe+BQIMlaR0Z1brghkHRMYFL9y7EOev7uynSuAURyS4pd30pQ7Ebjd9D 82gujd4bq/Lhf4PTzHX8xxO5/FXOrUVUf0CusSFv2Gwm6Y4TwmKfcJc/yuZUva87o6X6 PO086LcWHcs9R+KjrFHOQ5fYp44w0NAVFGp2qmo954zUJ3ZnsDkFl3dtGymB9AZfz3pf RBbXjwngwePtmUCnlYILwme3lnz1Wobon7TqbGVhIJDaA+pxukKqWSLhVLmZmNnbZk/m xycQ== X-Gm-Message-State: AOJu0YxA0FJcHSslvAmnsdWtZPWpq+Y9aIY24rQ0Piiy227ELY2lYuiT VZsD+BWNZmbzwU3as72GCyAtGP9RPrjCPPFq7Ee7OMQ/kdleLFHwXZJtrA/2G0oRQxdIHtV3E3c AOT3xhtw= X-Gm-Gg: AeBDieulIhYtl6/Svx8FIF+cADcNyDbofXwvfNigs2rYHtt25/N945BTYiHLGr1EXG4 rdjJrmM1DcW2PVTfC96zyrvSyMYIc5iHfFafbTWMWmqvJSp3PcCKZh9IPaJaPqC52k3OOctPuHM 08qUQ8D+Bprou9+5emEVnBgaUC31zt0fVkpeqXqSfdptL3mrkfLJMVtGfjKDzkI+TuQ13Zeoc3l FBJLxUpcPwZ0offDSQLnWvu7PzmFzpVCR5o6QiWfLxS26E4x2Et7GCo817FAIH7XK5wXUOWhvfu SuF3x5u517Dwf3tfhJoCemHGSP2iDQ7U9+Rh5V5vghQMynFxReuKW9qtFoOlcYn8rNHeioaPMk2 o3pZ2HF7KR8+kR8Dwa0pqbbi31jwl3brcsv0V5EnEgkHPhHO8flLqUlrIjhwWGeH0CG1gS1NxWR Q0dlJWl0HIFbmMHjjm9tiJbgketoBGWEciNqsv5sUP X-Received: by 2002:a17:903:3c24:b0:2b0:445a:8c7b with SMTP id d9443c01a7336-2b5f9edf973mr419506295ad.15.1777211202462; Sun, 26 Apr 2026 06:46:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 78/84] fpu: Hoist nan check in partsN_addsub Date: Sun, 26 Apr 2026 23:39:55 +1000 Message-ID: <20260426134002.865628-79-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211828405154100 Content-Type: text/plain; charset="utf-8" The nan test had been down below because it was unlikely. But if we have to have one anyway because of denormals, we might as well take care of them right away. Signed-off-by: Richard Henderson --- fpu/softfloat-parts.c.inc | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index dca751fb94..244fdd90d2 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -530,13 +530,16 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Fl= oatPartsN *b, bool b_sign =3D b->sign ^ subtract; int ab_mask =3D float_cmask(a->cls) | float_cmask(b->cls); =20 + if (unlikely(ab_mask & float_cmask_anynan)) { + *a =3D partsN(pick_nan)(a, b, s); + return a; + } + /* * For addition and subtraction, we will consume an * input denormal unless the other input is a NaN. */ - if (!(ab_mask & float_cmask_anynan)) { - record_denormals_used(ab_mask, s); - } + record_denormals_used(ab_mask, s); =20 if (a->sign !=3D b_sign) { /* Subtraction */ @@ -553,10 +556,6 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Flo= atPartsN *b, return a; } =20 - if (unlikely(ab_mask & float_cmask_anynan)) { - goto p_nan; - } - if (ab_mask & float_cmask_inf) { if (a->cls !=3D float_class_inf) { /* N - Inf */ @@ -582,10 +581,6 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Flo= atPartsN *b, return a; } =20 - if (unlikely(ab_mask & float_cmask_anynan)) { - goto p_nan; - } - if (ab_mask & float_cmask_inf) { a->cls =3D float_class_inf; return a; @@ -602,10 +597,6 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Flo= atPartsN *b, return_b: b->sign =3D b_sign; return b; - - p_nan: - *a =3D partsN(pick_nan)(a, b, s); - return a; } =20 /* --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211299; cv=none; d=zohomail.com; s=zohoarc; b=O7TSvfzQcTjnabDdZmv6aHfNLba+qNZqVriWAWyx2ZROZCVYwwTNnEFF85VZGyl8RUl5bXBu/oh8jKk9iZnh9CcaQypmm3wuT7CBaewXxYRo/kdgTStRuw90/iX6JQ/iaSPesfy76xFcvTNjXZVeMGDHU0O3HuYlZdzF1Z+Ri9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211299; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yMjZBAFwkU0Rtj4ZBMRtvRhbF7S8/ZqmxhOX5o1ySM4=; b=WoGVtfJk+0Yi6DgLxt9EVZRvmDsolW7ujPBHV7B3aEUU8dLGhwwtG+khOoG5NSlDu+602kaAkeTYGRppcuL9O2inV7GNcCmkjiCea72ztHh9WFUU/k6xxOI+DKUym959NdRcFBCpTYcMcfIpcw5REspkyMLXrCTHMX0W3gTmcYA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17772112991193.833935583132188; Sun, 26 Apr 2026 06:48:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzpl-0000ia-Sn; Sun, 26 Apr 2026 09:47:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzp2-0006qS-AC for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:47:05 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzot-0001vX-Nv for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:46:50 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2aae146b604so62462345ad.3 for ; Sun, 26 Apr 2026 06:46:46 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa34ea7sm280544085ad.34.2026.04.26.06.46.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:46:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211205; x=1777816005; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yMjZBAFwkU0Rtj4ZBMRtvRhbF7S8/ZqmxhOX5o1ySM4=; b=vsOS6lcKwKm54OOPSNvUkhpqrYRxvP27fLiKBuRyNBTIol6gHWr5z6MYDmNBLD/Evk XaPyvb61jQ7yG30pN8xeC7BZTgL+gTjkcGK9GjXGouKR8BzbQjblp7/eLZXC00QgYdCn TAdymJDnJB9kqA50/jzrWiduCE3qzyzingUlQ1iBQFGTBoTEpjrr6YXjqaF394xphY/H GIMeKBOMsOrUTPFmxcFpznZYpSMXQJt5wXnUJsWLhijiWxjstsDHgh4cPeIzLQuSd1u7 02c9sR0aMhme+l9/xmfN3FWUnnNzeia55eKH/o5umVmNptxIRx1H3cng7jzga04xII4m 9WSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211205; x=1777816005; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=yMjZBAFwkU0Rtj4ZBMRtvRhbF7S8/ZqmxhOX5o1ySM4=; b=H7wVCPmymZT/pH7rhGOdAu8LfDES3mcFjFGOaNcBZN1zVR8t1WT5STcSxiEwxMFkB5 dmF5gUwqYIIAmkZRZKuYOkmRcI1E6D62KLT7E/Q3jOlX4MEnTX8i3DszH4TM1hG6lafA AZctwgQCbSSNjLLmhxrYdIFYIDPFVWjpXCgSaZqg4iBSqCXnrrwkgU6VqE3yy1y/o77A FBGBJQG7CmBCFT0X7SxeeBCEaaCw/4rKlChDn0JCGKCnWii484Rgv76xqjm9USd5f3q6 O9ejviHmQHnpvwCrn5Q2aokcbAYI9KlYy1i78I+imsho892cQbpRUG+CKRXRP4SY+36v joNA== X-Gm-Message-State: AOJu0YyA9iTE3E97VqW+EoGqp6FkZpzUaPxxajDQYScZe0NIpZpODVuG 1cmyVEQNZNQIKUCrNkbGoS/b1SlIW23lxTtqWT1uusUaZjmBqW94gE6c2hj4/RmQanyAZzyimtR G/fhcq58= X-Gm-Gg: AeBDievYlpYEdZwhqLBRQsFAeGYWQ7l+UgE5/P86qu1ePnq/LnHt8Kd16n2EBpyflDF /3Df379xrzIE/fdMRk1ToaDSE5Pb8eHkXCjFmkWNIruu4mDl5PblLHAqP5vHTgfKjVL6ELY8Uiz kaqLv37BGNm0r50mWJFf3d4wvuigtWt2jAS3VpenVJT4uX1upvi6TS82Z7VvKgEpzefWRSyNK8X whqVbqA8jXm7mDyT6PnCtvDe2qCc9BVM4Ihw7LugSV0eDE6bcqkHi9tchea992xda7WVy9VS5v8 CpVlLksBmrcYi4jDbCHSOJioPebXyHOrlxuYiAkAFFo9kyVtrbiwryrbpRmi+sB91RPaZsJ9dea tNKD4J4JI8MpOIjOPLEb7CgYe97mncNt22jwg+eZfOb2eT3gqgktyJz6Kmz9BgIeGKjujFf95OH m0xXUaY8GMpf2jUh0PdzydvVUxkmtmHuPjnV/JpErk X-Received: by 2002:a17:903:17cb:b0:2b2:67cd:9963 with SMTP id d9443c01a7336-2b5f9fd5c04mr397257095ad.38.1777211205068; Sun, 26 Apr 2026 06:46:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 79/84] fpu: Return struct from parts{64,128}_addsub Date: Sun, 26 Apr 2026 23:39:56 +1000 Message-ID: <20260426134002.865628-80-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211300930154100 Content-Type: text/plain; charset="utf-8" At the same time, export. Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 5 ++++ fpu/softfloat.c | 30 +++++++++++------------ fpu/softfloat-parts.c.inc | 45 ++++++++++++++++++----------------- 3 files changed, 43 insertions(+), 37 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index f2c31eb7a6..8522b916f3 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -179,6 +179,11 @@ FloatParts128 parts128_pick_nan(const FloatParts128 *,= const FloatParts128 *, * Operations */ =20 +FloatParts64 parts64_addsub(const FloatParts64 *a, const FloatParts64 *b, + float_status *s, bool subtract); +FloatParts128 parts128_addsub(const FloatParts128 *a, const FloatParts128 = *b, + float_status *s, bool subtract); + FloatParts64 parts64_div(const FloatParts64 *a, const FloatParts64 *b, float_status *s); FloatParts128 parts128_div(const FloatParts128 *a, const FloatParts128 *b, diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 2db08ca660..484db3ddf6 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1579,9 +1579,9 @@ float16_addsub(float16 a, float16 b, float_status *st= atus, bool subtract) { FloatParts64 pa =3D float16_unpack_canonical(a, status); FloatParts64 pb =3D float16_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_addsub(&pa, &pb, status, subtract); + FloatParts64 pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 - return float16_round_pack_canonical(pr, status); + return float16_round_pack_canonical(&pr, status); } =20 float16 float16_add(float16 a, float16 b, float_status *status) @@ -1599,9 +1599,9 @@ soft_f32_addsub(float32 a, float32 b, float_status *s= tatus, bool subtract) { FloatParts64 pa =3D float32_unpack_canonical(a, status); FloatParts64 pb =3D float32_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_addsub(&pa, &pb, status, subtract); + FloatParts64 pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 - return float32_round_pack_canonical(pr, status); + return float32_round_pack_canonical(&pr, status); } =20 static float32 soft_f32_add(float32 a, float32 b, float_status *status) @@ -1619,9 +1619,9 @@ soft_f64_addsub(float64 a, float64 b, float_status *s= tatus, bool subtract) { FloatParts64 pa =3D float64_unpack_canonical(a, status); FloatParts64 pb =3D float64_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_addsub(&pa, &pb, status, subtract); + FloatParts64 pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 - return float64_round_pack_canonical(pr, status); + return float64_round_pack_canonical(&pr, status); } =20 static float64 soft_f64_add(float64 a, float64 b, float_status *status) @@ -1714,9 +1714,9 @@ static float64 float64r32_addsub(float64 a, float64 b= , float_status *status, { FloatParts64 pa =3D float64_unpack_canonical(a, status); FloatParts64 pb =3D float64_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_addsub(&pa, &pb, status, subtract); + FloatParts64 pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 - return float64r32_round_pack_canonical(pr, status); + return float64r32_round_pack_canonical(&pr, status); } =20 float64 float64r32_add(float64 a, float64 b, float_status *status) @@ -1734,9 +1734,9 @@ bfloat16_addsub(bfloat16 a, bfloat16 b, float_status = *status, bool subtract) { FloatParts64 pa =3D bfloat16_unpack_canonical(a, status); FloatParts64 pb =3D bfloat16_unpack_canonical(b, status); - FloatParts64 *pr =3D parts64_addsub(&pa, &pb, status, subtract); + FloatParts64 pr =3D parts64_addsub(&pa, &pb, status, subtract); =20 - return bfloat16_round_pack_canonical(pr, status); + return bfloat16_round_pack_canonical(&pr, status); } =20 bfloat16 bfloat16_add(bfloat16 a, bfloat16 b, float_status *status) @@ -1754,9 +1754,9 @@ float128_addsub(float128 a, float128 b, float_status = *status, bool subtract) { FloatParts128 pa =3D float128_unpack_canonical(a, status); FloatParts128 pb =3D float128_unpack_canonical(b, status); - FloatParts128 *pr =3D parts128_addsub(&pa, &pb, status, subtract); + FloatParts128 pr =3D parts128_addsub(&pa, &pb, status, subtract); =20 - return float128_round_pack_canonical(pr, status); + return float128_round_pack_canonical(&pr, status); } =20 float128 float128_add(float128 a, float128 b, float_status *status) @@ -1772,15 +1772,15 @@ float128 float128_sub(float128 a, float128 b, float= _status *status) static floatx80 QEMU_FLATTEN floatx80_addsub(floatx80 a, floatx80 b, float_status *status, bool subtrac= t) { - FloatParts128 pa, pb, *pr; + FloatParts128 pa, pb; =20 if (!floatx80_unpack_canonical(&pa, a, status) || !floatx80_unpack_canonical(&pb, b, status)) { return floatx80_default_nan(status); } =20 - pr =3D parts128_addsub(&pa, &pb, status, subtract); - return floatx80_round_pack_canonical(pr, status); + pa =3D parts128_addsub(&pa, &pb, status, subtract); + return floatx80_round_pack_canonical(&pa, status); } =20 floatx80 floatx80_add(floatx80 a, floatx80 b, float_status *status) diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 244fdd90d2..6d65b7bfe3 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -524,15 +524,14 @@ static void partsN(uncanon)(FloatPartsN *p, float_sta= tus *s, * according to the IEC/IEEE Standard for Binary Floating-Point * Arithmetic. */ -static FloatPartsN *partsN(addsub)(FloatPartsN *a, FloatPartsN *b, - float_status *s, bool subtract) +FloatPartsN partsN(addsub)(const FloatPartsN *a_orig, + const FloatPartsN *b_orig, + float_status *s, bool subtract) { - bool b_sign =3D b->sign ^ subtract; - int ab_mask =3D float_cmask(a->cls) | float_cmask(b->cls); + int ab_mask =3D float_cmask(a_orig->cls) | float_cmask(b_orig->cls); =20 if (unlikely(ab_mask & float_cmask_anynan)) { - *a =3D partsN(pick_nan)(a, b, s); - return a; + return partsN(pick_nan)(a_orig, b_orig, s); } =20 /* @@ -541,10 +540,15 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Fl= oatPartsN *b, */ record_denormals_used(ab_mask, s); =20 - if (a->sign !=3D b_sign) { + FloatPartsN a =3D *a_orig; + FloatPartsN b =3D *b_orig; + + b.sign ^=3D subtract; + + if (a.sign !=3D b.sign) { /* Subtraction */ if (likely(cmask_is_only_normals(ab_mask))) { - if (partsN(sub_normal)(a, b)) { + if (partsN(sub_normal)(&a, &b)) { return a; } /* Subtract was exact, fall through to set sign. */ @@ -552,28 +556,27 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Fl= oatPartsN *b, } =20 if (ab_mask =3D=3D float_cmask_zero) { - a->sign =3D s->float_rounding_mode =3D=3D float_round_down; + a.sign =3D s->float_rounding_mode =3D=3D float_round_down; return a; } =20 if (ab_mask & float_cmask_inf) { - if (a->cls !=3D float_class_inf) { + if (a.cls !=3D float_class_inf) { /* N - Inf */ - goto return_b; + return b; } - if (b->cls !=3D float_class_inf) { + if (b.cls !=3D float_class_inf) { /* Inf - N */ return a; } /* Inf - Inf */ float_raise(float_flag_invalid | float_flag_invalid_isi, s); - *a =3D partsN(default_nan)(s); - return a; + return partsN(default_nan)(s); } } else { /* Addition */ if (likely(cmask_is_only_normals(ab_mask))) { - partsN(add_normal)(a, b); + partsN(add_normal)(&a, &b); return a; } =20 @@ -582,20 +585,18 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Fl= oatPartsN *b, } =20 if (ab_mask & float_cmask_inf) { - a->cls =3D float_class_inf; + a.cls =3D float_class_inf; return a; } } =20 - if (b->cls =3D=3D float_class_zero) { - g_assert(is_anynorm(a->cls)); + if (b.cls =3D=3D float_class_zero) { + g_assert(is_anynorm(a.cls)); return a; } =20 - g_assert(a->cls =3D=3D float_class_zero); - g_assert(is_anynorm(b->cls)); - return_b: - b->sign =3D b_sign; + g_assert(a.cls =3D=3D float_class_zero); + g_assert(is_anynorm(b.cls)); return b; } =20 --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211834; cv=none; d=zohomail.com; s=zohoarc; b=F6HC3YCzN3xnZrUqpuU9Wr8OJVJFlht5Msi3COzhGTc543uh5mCF9WEdVAf964AgDgBFDVf568lxOHnZCC90FNhaotahOTcM7ydmDkJ/qrcHWzZCc5i7q2L0mP1yR/0hH2I/bNo6UsMCM64ojaaAhsGcSwDP6Di3E9vkEcgwG6s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211834; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HfGQWAwKA0HR0AfaerNK4G6lb/Q53GYjwSjKhKZtA3k=; b=I2RBlyyGdXxqfhiDxJtSeN6E85lLzDjOXu3l5jgyrPhyj2EFLGv6QMxlXEtt7+Qn69/Kr5E1czefeRKJActbK7fnZzMJOT24oNUWeXLCRCWNiw5jzPKKyJT7BVAcAs5Is+3f2DIMEfkwsC2u9mEM1T6F6lBYmduhbrCBsINwWuI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211834192650.3505043262564; Sun, 26 Apr 2026 06:57:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzsQ-0007Rz-QT; Sun, 26 Apr 2026 09:50:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzrw-0006zy-17 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:49:57 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzrt-0002qx-8o for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:49:55 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-82f33d28c1dso4992586b3a.3 for ; Sun, 26 Apr 2026 06:49:52 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ebba485sm36307102b3a.38.2026.04.26.06.49.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:49:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211391; x=1777816191; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HfGQWAwKA0HR0AfaerNK4G6lb/Q53GYjwSjKhKZtA3k=; b=h/zp2Cf+hoa8CJd+zGfm4IhnPl1JD7HgEwUVtEARV9s3n+2lGz2cLFMUZUJ0OMViTV Tze15yezdbFjfibceUJ8jrkf/ID3HTkyQ9nySWdlCvv8RIcZvWA1OWSjNYOsqhnV+54Q nk8CJQ1UkfFlX+DklMC2XaWUvNAFBa7Ii6hbvFBdPETo0ZfZ96CrGLn59hFcM6FZqvjk X2b2URq7xaJ8NFo4uQv3l+VZqHY0tdLJuZHliNvX/OxLHueULxRawzD1QZRSBg5BdK++ WymGfTGIGc5s3aajlgx6jZs+e8KF7/nAcmMkKSc2zW75g83pA8yVvMuMnK7vy3JlBe6I Ubqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211391; x=1777816191; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=HfGQWAwKA0HR0AfaerNK4G6lb/Q53GYjwSjKhKZtA3k=; b=fCzMzmo2GEjGuW//P/oWgukx1HlRFQlmyJOzrk8gllgsSa05JDX+UWwBlObtUgqJjB eAtnFSl9wBhd9jipptZV4b1sYFJBWknq6lcEEnCWqjGkEJHKXq/BUCtiWm+8DLlg/UHs AYbb+Q5/46Fr+Sl4IGlXvdW6ks87AwJd/8UvcTUZs8AWtaf1eTsY6t/ZdCgefEwEb64X wow3r3MOWfAmJxSpGgr+rU82ieMoyNB7rmF8bYK2uA1ggcB6xGbhPv/F8dHRCszCCiyI pAR1X8kiP2r64hOAiDbLrFA+ryMqWYQBnb8OYP7kuH9UORRLvWpsC5tGSw24EB/gFfGk GKRw== X-Gm-Message-State: AOJu0YzB1d+5yyNtqsx+1SKVTmDK683fyMT1P5Ni97cLcBss6HJgJX8D Piy4j+Q0kpWTHWCPnL1kbHxnLfaj+XbjxjNogVNKPjA2QBZBO7sQmT0T1Axd1xQ4y24eSFJaExm o6BrOsK4= X-Gm-Gg: AeBDievIp1qsUf3ocHsWMtPCu3pNEdfycI+2LTyTDHfN+4nKEqzVZ07FM6tPdPC6MPs mVJRO80l1+tjFZZ8ACuQ0FIC0JwDsuWpiAHFOtbNvrL7TKxF4cuTDfnq0kL6emU2fGBxecUvghC wqkRiN5iUZL5YVmsQwmJtS1aVl5t8X9TlGifB5e6Fi+fbhYCrddxKjpFxX8UgjyIDjDP92IJWfH bqY2f2+AOlf16NfN27Eb20QfS2BNsHlo188BvMJspFTMEf8EEEETEJ0fhGmlpx6yd1hxzv7qXvm 0lrSJLYiL/rTs9Yb60tiYdlLHfkUbkVSXGZPcwyrsTlmA28vuS6hs/jrXmHSIhxI8YKblzUCWVR f/kRS8ZRmBl0VPQNwHgYqgmlAS3onkRe/5oQf/Rf+wIpCqNzhDLmlBxIbbQKCo88T7tGUdY6SSu LyoDKpkcp1Vl6r7acBbnqMULElSXxsG/7PxUTNkdUx X-Received: by 2002:a05:6a00:4b4f:b0:82a:780f:a187 with SMTP id d2e1a72fcca58-82f8c94425bmr40215399b3a.36.1777211391196; Sun, 26 Apr 2026 06:49:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 80/84] fpu: Simplify 0 +/- N case in parts_addsub Date: Sun, 26 Apr 2026 23:39:57 +1000 Message-ID: <20260426134002.865628-81-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211835019158500 Content-Type: text/plain; charset="utf-8" Consolidate the tests for zero and anynorm. Add comments for a few cases. Signed-off-by: Richard Henderson --- fpu/softfloat-parts.c.inc | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 6d65b7bfe3..5854f0dc48 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -556,6 +556,7 @@ FloatPartsN partsN(addsub)(const FloatPartsN *a_orig, } =20 if (ab_mask =3D=3D float_cmask_zero) { + /* 0 - 0 */ a.sign =3D s->float_rounding_mode =3D=3D float_round_down; return a; } @@ -581,23 +582,20 @@ FloatPartsN partsN(addsub)(const FloatPartsN *a_orig, } =20 if (ab_mask =3D=3D float_cmask_zero) { + /* 0 + 0 */ return a; } =20 if (ab_mask & float_cmask_inf) { + /* N + Inf or Inf + N */ a.cls =3D float_class_inf; return a; } } =20 - if (b.cls =3D=3D float_class_zero) { - g_assert(is_anynorm(a.cls)); - return a; - } - - g_assert(a.cls =3D=3D float_class_zero); - g_assert(is_anynorm(b.cls)); - return b; + /* 0 +/- N or N +/- 0 */ + assert((ab_mask & float_cmask_zero) && (ab_mask & float_cmask_anynorm)= ); + return b.cls =3D=3D float_class_zero ? a : b; } =20 /* --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211627; cv=none; d=zohomail.com; s=zohoarc; b=ORoZgeYdszer400Y2P3LYiNOBTUIlw3K01VOMIUt7/8FzHiFK+4elDRt3rOVSAnK6KoQGXjWVstkGYZYVbqWS7KmDP1mIiA83mroVz1KmXGg6vSQn548ACgvZK7GPLNdglsE3KxSveL6xZ6MlY8k39mh0AGLbufqMz1qTyPUNBE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211627; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0KkzAlyVyy6UWqSEFvAvWqU4O3LHFj7zGLXe1wYuo3k=; b=l9BffNhZKEdSvkoxmM7wbOOIRFvonB6oQICFqguCNtwu7GED4Lk/dFDpy1X++0W/3MVGynvHKFygWuV1Ul/VWcqCydIOZ1ywFvBAg+CrbRSGmT3bZYDwfqDbankRm75jzZZhq93l2nTr3jENVSJp3OKH+wo51gPW/2XI3FOBMdM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177721162796755.26161621253527; Sun, 26 Apr 2026 06:53:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzse-0007wV-2P; Sun, 26 Apr 2026 09:50:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzs1-00074S-Bx for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:50:01 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzrv-0002rQ-Q2 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:49:57 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-82fa8d6425bso3456013b3a.0 for ; Sun, 26 Apr 2026 06:49:55 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ebba485sm36307102b3a.38.2026.04.26.06.49.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:49:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211394; x=1777816194; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0KkzAlyVyy6UWqSEFvAvWqU4O3LHFj7zGLXe1wYuo3k=; b=R0K5zC7m/KsTfh5aNm64viD1dvNWelBNIyc8ComuccCaq5PPz9BR7/4psuzbACK7HB pEMlXwKIIv3fV/9BmL3PuEhG0u6pBoO9SZRYG3LZB3+YShlRGAwTFEzKTpNlhRwVc60v Fou75Qg7Q7ZfhBO98ZvS4xog5L4seQTM3tGCg6XOmT+rzqRUrY52EipOUV3iDaptHr5f +tg+pYN6FGDUQY3DJhYmwn+enTErshjSsV8LSz1B49cwYvL0btkFGNOBdz5LYId/zWNL Q2Jwly0OZHhoUGynomIA0xxg/biAJDsbnmPGP1iw8SPMCSD22K3+XBg5CauIMdDsf1/I RPFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211394; x=1777816194; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=0KkzAlyVyy6UWqSEFvAvWqU4O3LHFj7zGLXe1wYuo3k=; b=R/NKIiXnB9b6PYYjF4Q2XG6cr2PwE0KP1wI+K2RuGKWgaQ2uMhSrsUcd7fZGAKw9rW d7mk+V9//75jeXRrTipVKxB+HLKb1Dow7VDUP+bBBlLoPe2hiZpSCt5/i6VsBbJ44qnW 7A4yN7tIKCMhzjEDsCojcErrj62iPliCUPclQswtegBK+Zw/dkHrhPtim9fDmIk5FkCX DdNztFkDg1Jt6FpyQ71KG5+VCGlKFKv/raEzRRxhPFVG6hw6HB44RyARYX3CZ7mQEPIk w4yStUB+qRuhwbGoyIuHYWrbaK+o3EJT5e50oT5JpQaFFqUZ6p+Rs7i8qK3G/K/20Vb/ 7s9Q== X-Gm-Message-State: AOJu0YxOIWdYEEQUL2+KJ5Xx/WEE+hDDr0giCZN2pY76zeZhDy+Ixr9w mThI4ZZ/EsqP2X95AKRGb82/3H9+iTfjbPo2fORv8H2xpBELT2A8I9aDcQZ0PoRQtY2UwcrYjjj k3bld9oQ= X-Gm-Gg: AeBDietkFk8vydwDvg9khoJ7mSQnTMjL6WVzEP4rxAtgZzUZnirqTFpzMMUVxegSk2S FPuRtbBEO08oZfnvYVkkOAQ3pM6SLN8hxo8ZrAKc9cW2Ga2Z3XCwR3ORBwwhgiB+Xt01iqeLvsL 0SWBy4eTfFvdiZlb3eNZT14KD5/ZihNt4e2amm6DCAoGh+nZVmfDBt6F3fxhyhRPZtCB8xFA9IZ QRvGRHe1jVOPpDkK5uvbllceqDe1B6pUsqdfEgsfZiA5n+TreaKymHWnU3xblqWpHOzTFnvLp3H sPgc76/C41A5IRaPxHiarHYAtkknazvPG/abe7eJ0KvP7Okkg84KephCd1B5lx8qVVywBviBS3X h9wUgR78RXCJ7UANqZ+M/XvT+b9s9u5qtD6VP2mbKVdOdM0k9UltniRZcjAsnvTH3jsrQEcG5xy GjBWGiUhYzlSPG/Vw2XqQmYaryMRVDDahIsTNfO3ikk7s8fJESxlo= X-Received: by 2002:a05:6a00:4308:b0:82f:3733:2f96 with SMTP id d2e1a72fcca58-82f8c82e853mr39743818b3a.8.1777211393858; Sun, 26 Apr 2026 06:49:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 81/84] target/s390x: Move float{32,64}_s390_divide_to_integer Date: Sun, 26 Apr 2026 23:39:58 +1000 Message-ID: <20260426134002.865628-82-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211628493158500 Content-Type: text/plain; charset="utf-8" Now that we've exposed enough infrastructure, this can be implemented in the backend that needs it. Signed-off-by: Richard Henderson Reviewed-by: Ilya Leoshkevich --- include/fpu/softfloat.h | 11 --- fpu/softfloat.c | 137 ---------------------------------- target/s390x/tcg/fpu_helper.c | 135 +++++++++++++++++++++++++++++++++ 3 files changed, 135 insertions(+), 148 deletions(-) diff --git a/include/fpu/softfloat.h b/include/fpu/softfloat.h index 8389a07b04..1580d956d5 100644 --- a/include/fpu/softfloat.h +++ b/include/fpu/softfloat.h @@ -1386,15 +1386,4 @@ static inline bool float128_unordered_quiet(float128= a, float128 b, *-------------------------------------------------------------------------= ---*/ float128 float128_default_nan(float_status *status); =20 -#define DECLARE_S390_DIVIDE_TO_INTEGER(floatN) = \ -void floatN ## _s390_divide_to_integer(floatN a, floatN b, = \ - int final_quotient_rounding_mode, = \ - bool mask_underflow, bool mask_inex= act, \ - floatN *r, floatN *n, = \ - uint32_t *cc, int *dxc, = \ - float_status *status) -DECLARE_S390_DIVIDE_TO_INTEGER(float32); -DECLARE_S390_DIVIDE_TO_INTEGER(float64); - - #endif /* SOFTFLOAT_H */ diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 484db3ddf6..c979679dc1 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -5139,143 +5139,6 @@ floatx80 floatx80_round(floatx80 a, float_status *s= tatus) return floatx80_round_pack_canonical(&p, status); } =20 -static void parts_s390_divide_to_integer(FloatParts64 *a, FloatParts64 *b, - int final_quotient_rounding_mode, - bool mask_underflow, bool mask_in= exact, - const FloatFmt *fmt, - FloatParts64 *r, FloatParts64 *n, - uint32_t *cc, int *dxc, - float_status *status) -{ - /* POp table "Results: DIVIDE TO INTEGER (Part 1 of 2)" */ - if ((float_cmask(a->cls) | float_cmask(b->cls)) & float_cmask_anynan) { - *r =3D parts64_pick_nan(a, b, status); - *n =3D *r; - *cc =3D 1; - } else if (a->cls =3D=3D float_class_inf || b->cls =3D=3D float_class_= zero) { - *r =3D parts64_default_nan(status); - *n =3D *r; - *cc =3D 1; - status->float_exception_flags |=3D float_flag_invalid; - } else if (b->cls =3D=3D float_class_inf) { - *r =3D *a; - n->cls =3D float_class_zero; - n->sign =3D a->sign ^ b->sign; - *cc =3D 0; - } else { - FloatParts64 *q, q_buf, r_precise; - int float_exception_flags =3D 0; - bool is_q_smallish; - uint32_t r_flags; - - /* Compute precise quotient */ - q_buf =3D parts64_div(a, b, status); - q =3D &q_buf; - - /* - * Check whether two closest integers can be precisely represented, - * i.e., all their bits fit into the fractional part. - */ - is_q_smallish =3D q->exp < (fmt->frac_size + 1); - - /* - * Final quotient is rounded using final-quotient-rounding method,= and - * partial quotient is rounded toward zero. - * - * Rounding of partial quotient may be inexact. This is the whole = point - * of distinguishing partial quotients, so ignore the exception. - */ - *n =3D parts64_round_to_int(q, - is_q_smallish - ? final_quotient_rounding_mode - : float_round_to_zero, - 0, status, fmt); - - /* Compute precise remainder */ - r_precise =3D parts64_muladd_scalbn(b, n, a, 0, - float_muladd_negate_product, sta= tus); - - /* Round remainder to the target format */ - *r =3D r_precise; - status->float_exception_flags =3D 0; - parts64_round_canonical(r, status, fmt); - r_flags =3D status->float_exception_flags; - - /* POp table "Results: DIVIDE TO INTEGER (Part 2 of 2)" */ - if (is_q_smallish) { - if (r->cls !=3D float_class_zero) { - if (r->exp < 2 - (1 << (fmt->exp_size - 1))) { - if (mask_underflow) { - float_exception_flags |=3D float_flag_underflow; - *dxc =3D 0x10; - r->exp +=3D fmt->exp_re_bias; - } - } else if (r_flags & float_flag_inexact) { - float_exception_flags |=3D float_flag_inexact; - if (mask_inexact) { - bool saved_r_sign, saved_r_precise_sign; - - /* - * Check whether remainder was truncated (rounded - * toward zero) or incremented. - */ - saved_r_sign =3D r->sign; - saved_r_precise_sign =3D r_precise.sign; - r->sign =3D false; - r_precise.sign =3D false; - if (parts64_compare(r, &r_precise, status, true) < - float_relation_equal) { - *dxc =3D 0x8; - } else { - *dxc =3D 0xc; - } - r->sign =3D saved_r_sign; - r_precise.sign =3D saved_r_precise_sign; - } - } - } - *cc =3D 0; - } else if (n->exp > (1 << (fmt->exp_size - 1)) - 1) { - n->exp -=3D fmt->exp_re_bias; - *cc =3D r->cls =3D=3D float_class_zero ? 1 : 3; - } else { - *cc =3D r->cls =3D=3D float_class_zero ? 0 : 2; - } - - /* Adjust signs of zero results */ - if (r->cls =3D=3D float_class_zero) { - r->sign =3D a->sign; - } - if (n->cls =3D=3D float_class_zero) { - n->sign =3D a->sign ^ b->sign; - } - - status->float_exception_flags =3D float_exception_flags; - } -} - -#define DEFINE_S390_DIVIDE_TO_INTEGER(floatN) = \ -void floatN ## _s390_divide_to_integer(floatN a, floatN b, = \ - int final_quotient_rounding_mode, = \ - bool mask_underflow, bool mask_inex= act, \ - floatN *r, floatN *n, = \ - uint32_t *cc, int *dxc, = \ - float_status *status) = \ -{ = \ - FloatParts64 pa =3D floatN ## _unpack_canonical(a, status); = \ - FloatParts64 pb =3D floatN ## _unpack_canonical(b, status); = \ - FloatParts64 pr, pn; = \ - parts_s390_divide_to_integer(&pa, &pb, final_quotient_rounding_mode, = \ - mask_underflow, mask_inexact, = \ - &floatN ## _params, = \ - &pr, &pn, cc, dxc, status); = \ - *r =3D floatN ## _round_pack_canonical(&pr, status); = \ - *n =3D floatN ## _round_pack_canonical(&pn, status); = \ -} - -DEFINE_S390_DIVIDE_TO_INTEGER(float32) -DEFINE_S390_DIVIDE_TO_INTEGER(float64) - static void __attribute__((constructor)) softfloat_init(void) { union_float64 ua, ub, uc, ur; diff --git a/target/s390x/tcg/fpu_helper.c b/target/s390x/tcg/fpu_helper.c index 122994960a..66ef3b3d36 100644 --- a/target/s390x/tcg/fpu_helper.c +++ b/target/s390x/tcg/fpu_helper.c @@ -24,6 +24,7 @@ #include "tcg_s390x.h" #include "exec/helper-proto.h" #include "fpu/softfloat.h" +#include "fpu/softfloat-parts.h" =20 /* #define DEBUG_HELPER */ #ifdef DEBUG_HELPER @@ -315,6 +316,140 @@ Int128 HELPER(dxb)(CPUS390XState *env, Int128 a, Int1= 28 b) return RET128(ret); } =20 +static void parts_s390_divide_to_integer(FloatParts64 *a, FloatParts64 *b, + int final_quotient_rounding_mode, + bool mask_underflow, bool mask_in= exact, + const FloatFmt *fmt, + FloatParts64 *r, FloatParts64 *n, + uint32_t *cc, int *dxc, + float_status *status) +{ + /* POp table "Results: DIVIDE TO INTEGER (Part 1 of 2)" */ + if ((float_cmask(a->cls) | float_cmask(b->cls)) & float_cmask_anynan) { + *r =3D parts64_pick_nan(a, b, status); + *n =3D *r; + *cc =3D 1; + } else if (a->cls =3D=3D float_class_inf || b->cls =3D=3D float_class_= zero) { + *r =3D parts64_default_nan(status); + *n =3D *r; + *cc =3D 1; + status->float_exception_flags |=3D float_flag_invalid; + } else if (b->cls =3D=3D float_class_inf) { + *r =3D *a; + n->cls =3D float_class_zero; + n->sign =3D a->sign ^ b->sign; + *cc =3D 0; + } else { + FloatParts64 *q, q_buf, r_precise; + int float_exception_flags =3D 0; + bool is_q_smallish; + uint32_t r_flags; + + /* Compute precise quotient */ + q_buf =3D parts64_div(a, b, status); + q =3D &q_buf; + + /* + * Check whether two closest integers can be precisely represented, + * i.e., all their bits fit into the fractional part. + */ + is_q_smallish =3D q->exp < (fmt->frac_size + 1); + + /* + * Final quotient is rounded using final-quotient-rounding method,= and + * partial quotient is rounded toward zero. + * + * Rounding of partial quotient may be inexact. This is the whole = point + * of distinguishing partial quotients, so ignore the exception. + */ + *n =3D parts64_round_to_int(q, + is_q_smallish + ? final_quotient_rounding_mode + : float_round_to_zero, + 0, status, fmt); + + /* Compute precise remainder */ + r_precise =3D parts64_muladd_scalbn(b, n, a, 0, + float_muladd_negate_product, sta= tus); + + /* Round remainder to the target format */ + *r =3D r_precise; + status->float_exception_flags =3D 0; + parts64_round_canonical(r, status, fmt); + r_flags =3D status->float_exception_flags; + + /* POp table "Results: DIVIDE TO INTEGER (Part 2 of 2)" */ + if (is_q_smallish) { + if (r->cls !=3D float_class_zero) { + if (r->exp < 2 - (1 << (fmt->exp_size - 1))) { + if (mask_underflow) { + float_exception_flags |=3D float_flag_underflow; + *dxc =3D 0x10; + r->exp +=3D fmt->exp_re_bias; + } + } else if (r_flags & float_flag_inexact) { + float_exception_flags |=3D float_flag_inexact; + if (mask_inexact) { + bool saved_r_sign, saved_r_precise_sign; + + /* + * Check whether remainder was truncated (rounded + * toward zero) or incremented. + */ + saved_r_sign =3D r->sign; + saved_r_precise_sign =3D r_precise.sign; + r->sign =3D false; + r_precise.sign =3D false; + if (parts64_compare(r, &r_precise, status, true) < + float_relation_equal) { + *dxc =3D 0x8; + } else { + *dxc =3D 0xc; + } + r->sign =3D saved_r_sign; + r_precise.sign =3D saved_r_precise_sign; + } + } + } + *cc =3D 0; + } else if (n->exp > (1 << (fmt->exp_size - 1)) - 1) { + n->exp -=3D fmt->exp_re_bias; + *cc =3D r->cls =3D=3D float_class_zero ? 1 : 3; + } else { + *cc =3D r->cls =3D=3D float_class_zero ? 0 : 2; + } + + /* Adjust signs of zero results */ + if (r->cls =3D=3D float_class_zero) { + r->sign =3D a->sign; + } + if (n->cls =3D=3D float_class_zero) { + n->sign =3D a->sign ^ b->sign; + } + + status->float_exception_flags =3D float_exception_flags; + } +} + +#define DEFINE_S390_DIVIDE_TO_INTEGER(floatN) = \ +static void floatN ## _s390_divide_to_integer(floatN a, floatN b, = \ + int final_quotient_rounding_mode, bool mask_underflow, bool mask_inexa= ct, \ + floatN *r, floatN *n, uint32_t *cc, int *dxc, float_status *status) = \ +{ = \ + FloatParts64 pa =3D floatN ## _unpack_canonical(a, status); = \ + FloatParts64 pb =3D floatN ## _unpack_canonical(b, status); = \ + FloatParts64 pr, pn; = \ + parts_s390_divide_to_integer(&pa, &pb, final_quotient_rounding_mode, = \ + mask_underflow, mask_inexact, = \ + &floatN ## _params, = \ + &pr, &pn, cc, dxc, status); = \ + *r =3D floatN ## _round_pack_canonical(&pr, status); = \ + *n =3D floatN ## _round_pack_canonical(&pn, status); = \ +} + +DEFINE_S390_DIVIDE_TO_INTEGER(float32) +DEFINE_S390_DIVIDE_TO_INTEGER(float64) + void HELPER(dib)(CPUS390XState *env, uint32_t r1, uint32_t r2, uint32_t r3, uint32_t m4, uint32_t bits) { --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211593; cv=none; d=zohomail.com; s=zohoarc; b=N4fmHkGXXJqvyFffinqrwD52jGwatNqcJNyTEoE8/rTJo2e/9SsTuOaUtItb0IVPi1jM2wSNDzq5rGIr+rXsl1saZSezX7jJi2M+6jb6xZFa7HoBI1GLvrctoYw2oDmP1tuZiaTFQRG9pokxvw98xTdsHiNl/DoJu57/1S/9/J4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211593; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xlytXwevs67gNFcr4ujyMnKHEGjQPMghBz+4SCH2y1E=; b=fvNbxYbeTKMG6iyjlCnwzspiF+z9XahmmDyCj10t14uzAG8vqA9/Zbjs9Ix583oRQbkdXE6WTFZjNRby3KD43eC2YDmKRIhmfuU2Qj5x9c/sUkk//6tn9dp42Fx/6sHrMeebFILL36zzGtwgCnDSHHcDLnlTp1Q7q9eHpKR5jl0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211593976933.4667306456612; Sun, 26 Apr 2026 06:53:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzsX-0007eO-J8; Sun, 26 Apr 2026 09:50:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzs1-000763-W4 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:50:05 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzry-0002sh-1i for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:50:01 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-82f69a286dbso7071144b3a.2 for ; Sun, 26 Apr 2026 06:49:57 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ebba485sm36307102b3a.38.2026.04.26.06.49.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:49:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211396; x=1777816196; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xlytXwevs67gNFcr4ujyMnKHEGjQPMghBz+4SCH2y1E=; b=rlYK4HFapxxU61YSLBWquYxKAdV83KqThs1zA2qf4qXthQATjPPzbxRLxZ2Xn0C5Nj 4cSF65xH2t1xn6/M2/udTyelID7P1czxCBy1N4G2I/SUy5Bh3F6s3Vvm1SjQc3czRgSl 5u+3xyKYL2EyzT2/BGOpcpDK3lP2s2suECBAI5pK1qk0DmYGzP3uJgZeLf+0dbpvq8sO DUld/xedPlDw01OHpSKfG9zj+5h7shi93Cee2otyVudGV4edj36mIC9rh9MLONky4ewl tjUU7ItmLbGvGdFRKhJUZ+Z0Y86yUnVIHh53fP3hUfJ+LOWpMYKPgh7aNdwytir7mjxI JD3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211396; x=1777816196; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xlytXwevs67gNFcr4ujyMnKHEGjQPMghBz+4SCH2y1E=; b=frgj9au3ALPriR2kZMbRQxFclBJwcopIG0AxQ97v1zTsrJ6BRpeoVjos9p8Y5AoCk0 SaolevBG212ABcCeYfLcn/kyLkMXErNhBNKdcTrdQAQ4FAHmMwTWrFSWd6z6UOkV+IZz ZJhSNqqcqddudUHNm7RCyFxcN97kDPCNc05hVU6CsEAidb1CMTLmSTqdvf0EFjtXJMfe Vf6rx6IEq4FJ1Vi6oUpRf+vABiUl8eTvZ0cAZPj1ln7yj51shI5mv211neLuO2DoNFNU GQpPo+Ar7KkCWKfLM1MWc0Sqn6+lVAVh+70/RlKl6hX/+taD0d+MDs746PmOlIKCtLYO TAZg== X-Gm-Message-State: AOJu0Yy+2Mtvn+iVoKnxq/A9UdaZCQ867lXwsN/tQoUzUI4bGlcrI0Pk dnLIjOuVoDdumjrtMqhIjTuMlAVtvKNTQf9t+CRGRua64JBE/LYBl7/d6hRiY51R+kR4nh2dMe0 +GcS5y6s= X-Gm-Gg: AeBDieu+fOk4ZQFOUMXxBNDI0dUhxDEUhJ28X+NyK5LPwccRJ8IsbuiWcAzRVh34G97 xs24fJ6+XrAVDKMKsdChvGaj0b8jc3omsQPSdpVAuM3EvW8WFHOYYx6QwgkFW0aUzfm9ofOeo73 Fn95jOhep57JMO0waRXKa0MZScieu/zQuhG5pF01ZIGRLVy6mx2KMzFVEZByu5qHEMIMK4RJx+y qrs0P9ol1q515pGj8iGXx3dp8o7aq7kLS8+G4JNf871UBKYM99UM547rWyLxxQaXH95/fJozThX h3527m6foblKeXqJh6MGxlUU7YEX8G1/qvQpCd4s6vgWI00Wdnxj86auWzuxob/ZnTeQuG8bMYq pRZPTVuisZGI1untgj5R3+HuI71ZWk3LJ8XuwY8REKgvYj1o3Wyoh0XEhS4X2UYTSn/Tf9U7IxU DZwUqiIjbqmSdGn2rb1gUhQD5QTtQEWnZSeQnifnrQ X-Received: by 2002:a05:6a00:408e:b0:827:2a07:231d with SMTP id d2e1a72fcca58-82f8c839c08mr41148041b3a.17.1777211396516; Sun, 26 Apr 2026 06:49:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 82/84] target/arm: Use FloatParts64 in bfdotadd_ebf Date: Sun, 26 Apr 2026 23:39:59 +1000 Message-ID: <20260426134002.865628-83-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211594250158500 Content-Type: text/plain; charset="utf-8" Use softfloat-parts.h so that we can more naturally perform the required operations witha single rounding step. This happens to also simplify the NaN detection step. Signed-off-by: Richard Henderson --- target/arm/tcg/vec_helper.c | 77 +++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index 91e98d28ae..1f305515cf 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -22,6 +22,7 @@ #include "helper.h" #include "tcg/tcg-gvec-desc.h" #include "fpu/softfloat.h" +#include "fpu/softfloat-parts.h" #include "qemu/int128.h" #include "crypto/clmul.h" #include "vec_internal.h" @@ -2895,61 +2896,63 @@ float32 bfdotadd(float32 sum, uint32_t e1, uint32_t= e2, float_status *fpst) float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, float_status *fpst, float_status *fpst_odd) { + /* Unpack two BFloat16 into two Float32, trivially. */ float32 s1r =3D e1 << 16; float32 s1c =3D e1 & 0xffff0000u; float32 s2r =3D e2 << 16; float32 s2c =3D e2 & 0xffff0000u; float32 t32; =20 + /* + * Compare f16_dotadd() in sme_helper.c, but here we have + * bfloat16 inputs. In particular that means that we do not + * want the FPCR.FZ16 flush semantics, so we use the normal + * float_status for the input handling here. + */ + FloatParts64 p1r =3D float32_unpack_canonical(s1r, fpst); + FloatParts64 p1c =3D float32_unpack_canonical(s1c, fpst); + FloatParts64 p2r =3D float32_unpack_canonical(s2r, fpst); + FloatParts64 p2c =3D float32_unpack_canonical(s2c, fpst); + + int all_mask =3D (float_cmask(p1r.cls) | float_cmask(p1c.cls) | + float_cmask(p1r.cls) | float_cmask(p1c.cls)); + /* C.f. FPProcessNaNs4 */ - if (float32_is_any_nan(s1r) || float32_is_any_nan(s1c) || - float32_is_any_nan(s2r) || float32_is_any_nan(s2c)) { - if (float32_is_signaling_nan(s1r, fpst)) { - t32 =3D s1r; - } else if (float32_is_signaling_nan(s1c, fpst)) { - t32 =3D s1c; - } else if (float32_is_signaling_nan(s2r, fpst)) { - t32 =3D s2r; - } else if (float32_is_signaling_nan(s2c, fpst)) { - t32 =3D s2c; - } else if (float32_is_any_nan(s1r)) { - t32 =3D s1r; - } else if (float32_is_any_nan(s1c)) { - t32 =3D s1c; - } else if (float32_is_any_nan(s2r)) { - t32 =3D s2r; + if (unlikely(all_mask & float_cmask_anynan)) { + if (unlikely(all_mask & float_cmask_snan)) { + if (p1r.cls =3D=3D float_class_snan) { + t32 =3D s1r; + } else if (p1c.cls =3D=3D float_class_snan) { + t32 =3D s1c; + } else if (p2r.cls =3D=3D float_class_snan) { + t32 =3D s2r; + } else { + t32 =3D s2c; + } } else { - t32 =3D s2c; + if (p1r.cls =3D=3D float_class_qnan) { + t32 =3D s1r; + } else if (p1c.cls =3D=3D float_class_qnan) { + t32 =3D s1c; + } else if (p2r.cls =3D=3D float_class_qnan) { + t32 =3D s2r; + } else { + t32 =3D s2c; + } } /* * FPConvertNaN(FPProcessNaN(t32)) will be done as part * of the final addition below. */ } else { - /* - * Compare f16_dotadd() in sme_helper.c, but here we have - * bfloat16 inputs. In particular that means that we do not - * want the FPCR.FZ16 flush semantics, so we use the normal - * float_status for the input handling here. - */ - float64 e1r =3D float32_to_float64(s1r, fpst); - float64 e1c =3D float32_to_float64(s1c, fpst); - float64 e2r =3D float32_to_float64(s2r, fpst); - float64 e2c =3D float32_to_float64(s2c, fpst); - float64 t64; - /* * The ARM pseudocode function FPDot performs both multiplies - * and the add with a single rounding operation. Emulate this - * by performing the first multiply in round-to-odd, then doing - * the second multiply as fused multiply-add, and rounding to - * float32 all in one step. + * and the add with a single rounding operation. */ - t64 =3D float64_mul(e1r, e2r, fpst_odd); - t64 =3D float64r32_muladd(e1c, e2c, t64, 0, fpst); + FloatParts64 tmp =3D parts64_mul(&p1r, &p2r, fpst); + tmp =3D parts64_muladd_scalbn(&p1c, &p2c, &tmp, 0, 0, fpst); =20 - /* This conversion is exact, because we've already rounded. */ - t32 =3D float64_to_float32(t64, fpst); + t32 =3D float32_round_pack_canonical(&tmp, fpst); } =20 /* The final accumulation step is not fused. */ --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211744; cv=none; d=zohomail.com; s=zohoarc; b=nhwRHxMzcyf1MBlzKpjITFtkdldcyxBeDFd8n7eJ5zBBlodjc3fkXPd2duhYbfynA3g4pEhnA8VwnVyzv/zklVNKcmTd6ZdpnfC5OoeD0FhHexSmffX5qdJaLi4mO6ZdAXHIBWN0x6vDK/nngm25uZ2WAEpG0hkpGlDQEsVYy24= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211744; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4ZR7BNBo95nAjIhUGH+JAucrVhM1zoFe7ZmH1Xd6n0M=; b=mM3vN2r6HoQLhlMNDe9UWi1HCFDSqoOUN5BPtPV5RU6roHtxhDYwQOoy/NGKB35Gi0rsbmIGlBUwmGRQD7LD++qxDQM9GbdDlATFvJCM6F8PEZQRGB0jOiY6dkxAQuqj/MVxxvDSIi40O540ilytAwhTMCt/5J7zB2i4yALqcRM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211744762348.65843419330565; Sun, 26 Apr 2026 06:55:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzsj-00009a-Py; Sun, 26 Apr 2026 09:50:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzs4-00078m-0k for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:50:05 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzs1-0002th-62 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:50:03 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-82fbf5d4dc2so5614769b3a.1 for ; Sun, 26 Apr 2026 06:50:00 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ebba485sm36307102b3a.38.2026.04.26.06.49.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:49:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211399; x=1777816199; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4ZR7BNBo95nAjIhUGH+JAucrVhM1zoFe7ZmH1Xd6n0M=; b=GXDlAH7eAsKp9KhsaOH0VoAprSO5pwszHehrMdTStB30uDSTVMHgK7Uc0H+kFZ0aqU 30ve7fz04Yz9Oa6zfU2hL+Hk7HmTyXVzJ91rYHWOFujTBDH7DIddT5kX7E2kmlyKWil8 c2ZdqGMSogX0JP978otA38qn2zBHG6yiv5RX4jWh7M+xUdzL4zUwKJ/1BscyaOZhL1bt EXbh9hVeeEmX9ioFjlyIQH02lG6MXCPW3nwdOjNU5V+s/t1orpwxAcmmLfMh4fbkX/Lk VrrdJvS+/RMBEvwswY3hq6FslXvnR2NnCsbfwm8cgC1d8DoHDEZxX+ORmV7gF4DLB2Sw pFuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211399; x=1777816199; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=4ZR7BNBo95nAjIhUGH+JAucrVhM1zoFe7ZmH1Xd6n0M=; b=aL1HH4dfOYAla4BX4sRwEG9eEoo2ii+0T6V7wN2eHNP+fKkc0Gb/P3NagD8y4qPphY eg9GeRuH/xkyYDUbqaAP2453UHiYia9TcqAdjz9WBgP4eU+LlR1pdKmn/UQlMHFwrN8E QYqgz0Q5D8bQ3EH6xgfXLysY/a+fRyJ5bRjzgAkHBaIx1RRVE1nmgj8GCF8Xg7ymNymS D0crnKRRByansJL1PahYDvebXge4dB4Sb7O8ctlTYRTH8KoJW/VqXarutduQ79BCLfS0 5xFdbQU8hRKUNijqIuiPLGkFeubJyC35kp/1ka2YlAFuERA1nfvxGAVL7qpDpFELCoAv HQOw== X-Gm-Message-State: AOJu0YyC2m0+XGmfEdXmV9Z2d2xYA8XSQOjFh/hPQYloVFBC+/9VBMpm FuuV9KnRPtUMj1NveHFvDEAuuDWANqj8F9toqtcG7AhwOZIuXNTKWYrCjv6/oMP4Zx495DSaKsb Z+lEndNo= X-Gm-Gg: AeBDietx7QuMLyEDgUcMl4E1sOS5oWxxj//AqG0lBz8LAsascnEJteMVqHNCZ27EkVR qDgnn95vECeIF9c1mqQUFUnH89Iwrs5GbXyObyRfdU7FXE8UyxhbmRgSAIkQpq9D9NojdjS9abU OvcC3O8/W6eK/NVE/NVMO1DJYO8+yTVP4rPaCQMjuXaRyZ8msVaChYY0Je/B7JvzLw0zZnckvc/ 99JjadEp/CCeoZXhHhoxAxCcH3fj+3K9nrsvP78f3RrJm9nRV7rho+jXF9luk/3MUgLYmWTtzBX fuj/45gF7jKErQ539g5QKKSVscgwrzxzdBU9clWe7u9BxnZrrvDJp+N5bOLn1aI3IoF8zIWA/v8 q2iC/kz/unBA5xCvjGedwPNtwt6BU48krPFw3aawnwLa7Eha6lCwAoj37ykUAv6f4geHjuW1AoK IPdwYIuNyDQdzMKVEE/xqOcDEVVGshNdKp3jZpT3jJHC2dBlA3H0w= X-Received: by 2002:a05:6a00:ba02:b0:82f:8b20:9165 with SMTP id d2e1a72fcca58-82f8c9222e1mr42356652b3a.44.1777211399182; Sun, 26 Apr 2026 06:49:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 83/84] target/arm: Drop oddstatus from is_ebf and bfdotadd_ebf Date: Sun, 26 Apr 2026 23:40:00 +1000 Message-ID: <20260426134002.865628-84-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211747061154100 Content-Type: text/plain; charset="utf-8" This argument is no longer used. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/arm/tcg/vec_internal.h | 12 +++------ target/arm/tcg/sme_helper.c | 6 ++--- target/arm/tcg/vec_helper.c | 50 +++++++++++++++-------------------- 3 files changed, 29 insertions(+), 39 deletions(-) diff --git a/target/arm/tcg/vec_internal.h b/target/arm/tcg/vec_internal.h index 4edd2b4fc1..c7ccb28b18 100644 --- a/target/arm/tcg/vec_internal.h +++ b/target/arm/tcg/vec_internal.h @@ -270,7 +270,6 @@ float32 bfdotadd(float32 sum, uint32_t e1, uint32_t e2,= float_status *fpst); * @sum: addend * @e1, @e2: multiplicand vectors * @fpst: floating-point status to use - * @fpst_odd: floating-point status to use for round-to-odd operations * * BFloat16 2-way dot product of @e1 & @e2, accumulating with @sum. * The @e1 and @e2 operands correspond to the 32-bit source vector @@ -279,23 +278,20 @@ float32 bfdotadd(float32 sum, uint32_t e1, uint32_t e= 2, float_status *fpst); * Corresponds to the ARM pseudocode function BFDotAdd, specialized * for the FPCR.EBF =3D=3D 1 case. */ -float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, - float_status *fpst, float_status *fpst_odd); +float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, float_status *= fpst); =20 /** * is_ebf: * @env: CPU state * @statusp: pointer to floating point status to fill in - * @oddstatusp: pointer to floating point status to fill in for round-to-o= dd * * Determine whether a BFDotAdd operation should use FPCR.EBF =3D 0 - * or FPCR.EBF =3D 1 semantics. On return, has initialized *statusp - * and *oddstatusp to suitable float_status arguments to use with either - * bfdotadd() or bfdotadd_ebf(). + * or FPCR.EBF =3D 1 semantics. On return, has initialized *statusp as sui= table + * for float_status arguments to either bfdotadd() or bfdotadd_ebf(). * Returns true for EBF =3D 1, false for EBF =3D 0. (The caller should use= this * to decide whether to call bfdotadd() or bfdotadd_ebf().) */ -bool is_ebf(CPUARMState *env, float_status *statusp, float_status *oddstat= usp); +bool is_ebf(CPUARMState *env, float_status *statusp); =20 /* * Negate as for FPCR.AH=3D1 -- do not negate NaNs. diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index ab5999c592..0702a1b129 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -1435,9 +1435,9 @@ static void do_bfmopa_w(void *vza, void *vzn, void *v= zm, uint32_t desc, uint32_t negx, bool ah_neg) { intptr_t row, col, oprsz =3D simd_maxsz(desc); - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (row =3D 0; row < oprsz; ) { uint16_t prow =3D pn[H2(row >> 4)]; do { @@ -1458,7 +1458,7 @@ static void do_bfmopa_w(void *vza, void *vzn, void *v= zm, uint32_t m =3D *(uint32_t *)(vzm + H1_4(col)); =20 m =3D f16mop_adj_pair(m, pcol, 0); - *a =3D bfdotadd_ebf(*a, n, m, &fpst, &fpst_odd= ); + *a =3D bfdotadd_ebf(*a, n, m, &fpst); } col +=3D 4; pcol >>=3D 4; diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index 1f305515cf..d004be5e1b 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -2845,7 +2845,7 @@ DO_MMLA_B(gvec_usmmla_b, do_usmmla_b) * BFloat16 Dot Product */ =20 -bool is_ebf(CPUARMState *env, float_status *statusp, float_status *oddstat= usp) +bool is_ebf(CPUARMState *env, float_status *statusp) { /* * For BFDOT, BFMMLA, etc, the behaviour depends on FPCR.EBF. @@ -2865,11 +2865,7 @@ bool is_ebf(CPUARMState *env, float_status *statusp,= float_status *oddstatusp) *statusp =3D env->vfp.fp_status[is_a64(env) ? FPST_A64 : FPST_A32]; set_default_nan_mode(true, statusp); =20 - if (ebf) { - /* EBF=3D1 needs to do a step with round-to-odd semantics */ - *oddstatusp =3D *statusp; - set_float_rounding_mode(float_round_to_odd, oddstatusp); - } else { + if (!ebf) { set_flush_to_zero(true, statusp); set_flush_inputs_to_zero(true, statusp); set_float_rounding_mode(float_round_to_odd_inf, statusp); @@ -2893,8 +2889,7 @@ float32 bfdotadd(float32 sum, uint32_t e1, uint32_t e= 2, float_status *fpst) return t1; } =20 -float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, - float_status *fpst, float_status *fpst_odd) +float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, float_status *= fpst) { /* Unpack two BFloat16 into two Float32, trivially. */ float32 s1r =3D e1 << 16; @@ -2965,11 +2960,11 @@ void HELPER(gvec_bfdot)(void *vd, void *vn, void *v= m, void *va, intptr_t i, opr_sz =3D simd_oprsz(desc); float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (i =3D 0; i < opr_sz / 4; ++i) { - d[i] =3D bfdotadd_ebf(a[i], n[i], m[i], &fpst, &fpst_odd); + d[i] =3D bfdotadd_ebf(a[i], n[i], m[i], &fpst); } } else { for (i =3D 0; i < opr_sz / 4; ++i) { @@ -2988,14 +2983,14 @@ void HELPER(gvec_bfdot_idx)(void *vd, void *vn, voi= d *vm, intptr_t eltspersegment =3D MIN(16 / 4, elements); float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t m_idx =3D m[i + H4(index)]; =20 for (j =3D i; j < i + eltspersegment; j++) { - d[j] =3D bfdotadd_ebf(a[j], n[j], m_idx, &fpst, &fpst_odd); + d[j] =3D bfdotadd_ebf(a[j], n[j], m_idx, &fpst); } } } else { @@ -3022,17 +3017,16 @@ void HELPER(sme2_bfvdot_idx)(void *vd, void *vn, vo= id *vm, uint16_t *n0 =3D vn; uint16_t *n1 =3D vn + sizeof(ARMVectorReg); uint32_t *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t m_idx =3D m[i + H4(idx)]; =20 for (j =3D 0; j < eltspersegment; j++) { uint32_t nn =3D (n0[H2(2 * (i + j) + sel)]) | (n1[H2(2 * (i + j) + sel)] << 16); - d[i + H4(j)] =3D bfdotadd_ebf(a[i + H4(j)], nn, m_idx, - &fpst, &fpst_odd); + d[i + H4(j)] =3D bfdotadd_ebf(a[i + H4(j)], nn, m_idx, &fp= st); } } } else { @@ -3055,9 +3049,9 @@ void HELPER(gvec_bfmmla)(void *vd, void *vn, void *vm= , void *va, intptr_t s, opr_sz =3D simd_oprsz(desc); float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (s =3D 0; s < opr_sz / 4; s +=3D 4) { float32 sum00, sum01, sum10, sum11; =20 @@ -3069,20 +3063,20 @@ void HELPER(gvec_bfmmla)(void *vd, void *vn, void *= vm, void *va, * i j i k j k */ sum00 =3D a[s + H4(0 + 0)]; - sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 0)], m[s + H4(0 + 0= )], &fpst, &fpst_odd); - sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 1)], m[s + H4(0 + 1= )], &fpst, &fpst_odd); + sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 0)], m[s + H4(0 + 0= )], &fpst); + sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 1)], m[s + H4(0 + 1= )], &fpst); =20 sum01 =3D a[s + H4(0 + 1)]; - sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 0)], m[s + H4(2 + 0= )], &fpst, &fpst_odd); - sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 1)], m[s + H4(2 + 1= )], &fpst, &fpst_odd); + sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 0)], m[s + H4(2 + 0= )], &fpst); + sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 1)], m[s + H4(2 + 1= )], &fpst); =20 sum10 =3D a[s + H4(2 + 0)]; - sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 0)], m[s + H4(0 + 0= )], &fpst, &fpst_odd); - sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 1)], m[s + H4(0 + 1= )], &fpst, &fpst_odd); + sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 0)], m[s + H4(0 + 0= )], &fpst); + sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 1)], m[s + H4(0 + 1= )], &fpst); =20 sum11 =3D a[s + H4(2 + 1)]; - sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 0)], m[s + H4(2 + 0= )], &fpst, &fpst_odd); - sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 1)], m[s + H4(2 + 1= )], &fpst, &fpst_odd); + sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 0)], m[s + H4(2 + 0= )], &fpst); + sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 1)], m[s + H4(2 + 1= )], &fpst); =20 d[s + H4(0 + 0)] =3D sum00; d[s + H4(0 + 1)] =3D sum01; --=20 2.43.0 From nobody Mon May 25 13:49:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777211755; cv=none; d=zohomail.com; s=zohoarc; b=nEfWsRRCDp/PK5hLvG7bOIFEOo4RQZcgb5yv5+KFoyekQIvauqDldVkxS5h169yvEEkUTV+6CdCN8PKW7bKRU4+7i5GUqqHRnurVSf5aSTNlvcflUSobC8Hgvf3kvtXrl11MftysfnGvvkIUj1gYz+J5VofkkZsfLYcEedMGv20= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777211755; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=p0uQob+N5O8wbOKZuJ2cl6QGt2btZMLnp6lMLH+YdM8=; b=dvigQng4ULJnmShRuefVEG0mYlkcwgeXyfaI44Lmm7gdIIwknQI3Xft3SAl29pdaTxJooR5i23n6ioKVLz6U06CJuDT73IHjO/mZWRXs8M1jF+jphCW+QL35Vwt76xszdd/2KUlpptC1L8XO7BjgoGD/K7F0aaQ2EB9xw5mlbbs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777211755275902.0768380047737; Sun, 26 Apr 2026 06:55:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wGzsh-0008Ez-DR; Sun, 26 Apr 2026 09:50:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wGzs5-0007ED-W2 for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:50:08 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wGzs3-0002ui-Fb for qemu-devel@nongnu.org; Sun, 26 Apr 2026 09:50:05 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-82f9fdfc965so3680033b3a.1 for ; Sun, 26 Apr 2026 06:50:03 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ebba485sm36307102b3a.38.2026.04.26.06.49.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 06:50:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777211402; x=1777816202; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=p0uQob+N5O8wbOKZuJ2cl6QGt2btZMLnp6lMLH+YdM8=; b=WAYmfVvk9iC1JFCcZFJSiiCydk7qp2AmVUV0ZDF6GruI1+dSnu7689JhTgrnisbMIl tk/xTA2wuDA180ok0UU+2nmUaO2tA+uQUqmPBdrYUFmxCtz7LlX3ka45qA5SlkKYBeLd 8UQp6SXcL2buIEMorisLMGlPFlNFmRc5+bAh0VgJ2DlYDjSp+4qvt2Vs0lch/d/EFvhm 5phUga8ADIUESzyMTnSCTNBSfxm5dhy42oi413K5/dXD4UPBb0W8hFCNtdYNcccI55Hd V7u0esqkLN3rUnoy5+6ObhCUWT7jy9PjsJonw+WXz26thivFwxNB19k5pYY9ZMHalzQ+ gpvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777211402; x=1777816202; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=p0uQob+N5O8wbOKZuJ2cl6QGt2btZMLnp6lMLH+YdM8=; b=oMgXhEfszovTgMnXf14v9hN9Z2mKSWNTMSXHpRBGwDhbzYtAsgWSNrsmMXP8SRDsX7 4VYBm4l18YLzwdT/UsjuGgQkSFqf5TWFaU6s1IM+gLRNrAuXy2rqCUe9iaerTc5D5oyw DmmSbO4UvJjm1sRamQJziCaozpoKNaxaR68rvj5y5PjAqCj9q8LivwwDeJPokIZli5di dgnTH7PgxmI/VXGjRMohpyoO4xDa1aXg9KDcV6u7XURCdOJjD/WMJtgDm1FEswLjFyk0 2O2YqvmDGo6SW0nEULdFRHtqo0m7H1mf9s5xnQPnFhyDMAkEfDUayK0jraQAQ8X/YMpF sCRA== X-Gm-Message-State: AOJu0YwAOiTQ2NmAvybi4oMy3hdoSd/03WMC5XbNUQjihAJZ5VOoA/kB w1qVHowwTgTmfeQOr53y2BgK/lEGIZo4two6s97QNaWW/B/YkRSjD6t116K5KXhkUuWSN8+bOi2 ozov9wXA= X-Gm-Gg: AeBDieuemHiGHP74vvPKBuZ9jK5aDR1KKdFcWtkcfy7qIO5bwd3pU2zMAqHQKf8iUkK 0FBj9ci/2ZOt9he9TIyFr1fiiwVfrxeU8HV8wkLPo8nVYmzBg4ugYB4RTUtO2hPJ9GZB2DnaHm+ j8+IOy7PTr9FGiYVWUDccY/hZNPNvHMMOO3g4m6gBTfFTJqPn/l/6it77Z3rRd+rz8qxj488iST dhYyr1fJ9WzXCtek0EeqO9Ay1ZR5nCyreQOc4RNqjrPVh1TLOaTbtYXxwekBBPQfqqeVCOSNGsF edQtbu0W1mQ5NrKqK4ApkGZuw+x5evMFIuEN1Sr84MOh8yHpX1hw7Cij0M+aShv00Q0yBoXQ/GO LfN1MmLozBch7ls7WJZX5FuxqrCRZIs7APwVvNlEkf9y4Q53uWdwLxA6pvdL7FmB3cl54QW7+87 mU16ozry4VVYK0Dofx6muIQfIfVOAyr4hSKOZ4kqsx X-Received: by 2002:a05:6a00:6c8d:b0:82c:7f08:8826 with SMTP id d2e1a72fcca58-82f8c8b3dbemr35029369b3a.17.1777211401888; Sun, 26 Apr 2026 06:50:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 84/84] target/arm: Use FloatParts64 in f16_dotadd Date: Sun, 26 Apr 2026 23:40:01 +1000 Message-ID: <20260426134002.865628-85-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426134002.865628-1-richard.henderson@linaro.org> References: <20260426134002.865628-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777211756812158500 Content-Type: text/plain; charset="utf-8" Use softfloat-parts.h so that we can more naturally perform the required operations witha single rounding step. This happens to also simplify the NaN detection step. Signed-off-by: Richard Henderson --- target/arm/tcg/sme_helper.c | 96 ++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 56 deletions(-) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 0702a1b129..71fe44445d 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -27,6 +27,7 @@ #include "accel/tcg/helper-retaddr.h" #include "qemu/int128.h" #include "fpu/softfloat.h" +#include "fpu/softfloat-parts.h" #include "vec_internal.h" #include "sve_ldst_internal.h" =20 @@ -1227,18 +1228,15 @@ static inline uint32_t bf16mop_ah_neg_adj_pair(uint= 32_t pair, uint32_t pg) } =20 static float32 f16_dotadd(float32 sum, uint32_t e1, uint32_t e2, - float_status *s_f16, float_status *s_std, - float_status *s_odd) + float_status *s_f16, float_status *s_std) { /* - * We need three different float_status for different parts of this + * We need two different float_status for different parts of this * operation: * - the input conversion of the float16 values must use the * f16-specific float_status, so that the FPCR.FZ16 control is appl= ied * - operations on float32 including the final accumulation must use * the normal float_status, so that FPCR.FZ is applied - * - we have pre-set-up copy of s_std which is set to round-to-odd, - * for the multiply (see below) */ float16 h1r =3D e1 & 0xffff; float16 h1c =3D e1 >> 16; @@ -1246,48 +1244,49 @@ static float32 f16_dotadd(float32 sum, uint32_t e1,= uint32_t e2, float16 h2c =3D e2 >> 16; float32 t32; =20 + FloatParts64 p1r =3D float16_unpack_canonical(h1r, s_f16); + FloatParts64 p1c =3D float16_unpack_canonical(h1c, s_f16); + FloatParts64 p2r =3D float16_unpack_canonical(h2r, s_f16); + FloatParts64 p2c =3D float16_unpack_canonical(h2c, s_f16); + + int all_mask =3D (float_cmask(p1r.cls) | float_cmask(p1c.cls) | + float_cmask(p1r.cls) | float_cmask(p1c.cls)); + /* C.f. FPProcessNaNs4 */ - if (float16_is_any_nan(h1r) || float16_is_any_nan(h1c) || - float16_is_any_nan(h2r) || float16_is_any_nan(h2c)) { + if (unlikely(all_mask & float_cmask_anynan)) { float16 t16; =20 - if (float16_is_signaling_nan(h1r, s_f16)) { - t16 =3D h1r; - } else if (float16_is_signaling_nan(h1c, s_f16)) { - t16 =3D h1c; - } else if (float16_is_signaling_nan(h2r, s_f16)) { - t16 =3D h2r; - } else if (float16_is_signaling_nan(h2c, s_f16)) { - t16 =3D h2c; - } else if (float16_is_any_nan(h1r)) { - t16 =3D h1r; - } else if (float16_is_any_nan(h1c)) { - t16 =3D h1c; - } else if (float16_is_any_nan(h2r)) { - t16 =3D h2r; + if (unlikely(all_mask & float_cmask_snan)) { + if (p1r.cls =3D=3D float_class_snan) { + t16 =3D h1r; + } else if (p1c.cls =3D=3D float_class_snan) { + t16 =3D h1c; + } else if (p2r.cls =3D=3D float_class_snan) { + t16 =3D h2r; + } else { + t16 =3D h2c; + } } else { - t16 =3D h2c; + if (p1r.cls =3D=3D float_class_qnan) { + t16 =3D h1r; + } else if (p1c.cls =3D=3D float_class_qnan) { + t16 =3D h1c; + } else if (p2r.cls =3D=3D float_class_qnan) { + t16 =3D h2r; + } else { + t16 =3D h2c; + } } t32 =3D float16_to_float32(t16, true, s_f16); } else { - float64 e1r =3D float16_to_float64(h1r, true, s_f16); - float64 e1c =3D float16_to_float64(h1c, true, s_f16); - float64 e2r =3D float16_to_float64(h2r, true, s_f16); - float64 e2c =3D float16_to_float64(h2c, true, s_f16); - float64 t64; - /* * The ARM pseudocode function FPDot performs both multiplies - * and the add with a single rounding operation. Emulate this - * by performing the first multiply in round-to-odd, then doing - * the second multiply as fused multiply-add, and rounding to - * float32 all in one step. + * and the add with a single rounding operation. */ - t64 =3D float64_mul(e1r, e2r, s_odd); - t64 =3D float64r32_muladd(e1c, e2c, t64, 0, s_std); + FloatParts64 tmp =3D parts64_mul(&p1r, &p2r, s_std); + tmp =3D parts64_muladd_scalbn(&p1c, &p2c, &tmp, 0, 0, s_std); =20 - /* This conversion is exact, because we've already rounded. */ - t32 =3D float64_to_float32(t64, s_std); + t32 =3D float32_round_pack_canonical(&tmp, s_std); } =20 /* The final accumulation step is not fused. */ @@ -1299,9 +1298,6 @@ static void do_fmopa_w_h(void *vza, void *vzn, void *= vzm, uint16_t *pn, uint32_t negx, bool ah_neg) { intptr_t row, col, oprsz =3D simd_maxsz(desc); - float_status fpst_odd =3D env->vfp.fp_status[FPST_ZA]; - - set_float_rounding_mode(float_round_to_odd, &fpst_odd); =20 for (row =3D 0; row < oprsz; ) { uint16_t prow =3D pn[H2(row >> 4)]; @@ -1325,8 +1321,7 @@ static void do_fmopa_w_h(void *vza, void *vzn, void *= vzm, uint16_t *pn, m =3D f16mop_adj_pair(m, pcol, 0); *a =3D f16_dotadd(*a, n, m, &env->vfp.fp_status[FPST_ZA_F16], - &env->vfp.fp_status[FPST_ZA], - &fpst_odd); + &env->vfp.fp_status[FPST_ZA]); } col +=3D 4; pcol >>=3D 4; @@ -1363,15 +1358,12 @@ void HELPER(sme2_fdot_h)(void *vd, void *vn, void *= vm, void *va, bool za =3D extract32(desc, SIMD_DATA_SHIFT, 1); float_status *fpst_std =3D &env->vfp.fp_status[za ? FPST_ZA : FPST_A64= ]; float_status *fpst_f16 =3D &env->vfp.fp_status[za ? FPST_ZA_F16 : FPST= _A64_F16]; - float_status fpst_odd =3D *fpst_std; float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; =20 - set_float_rounding_mode(float_round_to_odd, &fpst_odd); - for (i =3D 0; i < oprsz / sizeof(float32); ++i) { d[H4(i)] =3D f16_dotadd(a[H4(i)], n[H4(i)], m[H4(i)], - fpst_f16, fpst_std, &fpst_odd); + fpst_f16, fpst_std); } } =20 @@ -1385,17 +1377,14 @@ void HELPER(sme2_fdot_idx_h)(void *vd, void *vn, vo= id *vm, void *va, bool za =3D extract32(desc, SIMD_DATA_SHIFT + 2, 1); float_status *fpst_std =3D &env->vfp.fp_status[za ? FPST_ZA : FPST_A64= ]; float_status *fpst_f16 =3D &env->vfp.fp_status[za ? FPST_ZA_F16 : FPST= _A64_F16]; - float_status fpst_odd =3D *fpst_std; float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D (uint32_t *)vm + H4(idx); =20 - set_float_rounding_mode(float_round_to_odd, &fpst_odd); - for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t mm =3D m[i]; for (j =3D 0; j < eltspersegment; ++j) { d[H4(i + j)] =3D f16_dotadd(a[H4(i + j)], n[H4(i + j)], mm, - fpst_f16, fpst_std, &fpst_odd); + fpst_f16, fpst_std); } } } @@ -1408,24 +1397,19 @@ void HELPER(sme2_fvdot_idx_h)(void *vd, void *vn, v= oid *vm, void *va, intptr_t eltspersegment =3D MIN(4, elements); int idx =3D extract32(desc, SIMD_DATA_SHIFT, 2); int sel =3D extract32(desc, SIMD_DATA_SHIFT + 2, 1); - float_status fpst_odd, *fpst_std, *fpst_f16; float32 *d =3D vd, *a =3D va; uint16_t *n0 =3D vn; uint16_t *n1 =3D vn + sizeof(ARMVectorReg); uint32_t *m =3D (uint32_t *)vm + H4(idx); =20 - fpst_std =3D &env->vfp.fp_status[FPST_ZA]; - fpst_f16 =3D &env->vfp.fp_status[FPST_ZA_F16]; - fpst_odd =3D *fpst_std; - set_float_rounding_mode(float_round_to_odd, &fpst_odd); - for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t mm =3D m[i]; for (j =3D 0; j < eltspersegment; ++j) { uint32_t nn =3D (n0[H2(2 * (i + j) + sel)]) | (n1[H2(2 * (i + j) + sel)] << 16); d[i + H4(j)] =3D f16_dotadd(a[i + H4(j)], nn, mm, - fpst_f16, fpst_std, &fpst_odd); + &env->vfp.fp_status[FPST_ZA_F16], + &env->vfp.fp_status[FPST_ZA]); } } } --=20 2.43.0