From nobody Sat May 30 18:38:10 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=1778170209; cv=none; d=zohomail.com; s=zohoarc; b=DOB/WFLCbhzJ1D/4eCH48SoWOP/NB5QfGXusLvxSkT4KLqPGQhJhS0htkcRwBetecvDAK6yWOFGIXC7fSoy630ezasx2ynRUGLXgMrB1qN1cYxfv7mQ5jN0G9twklYbgf0OoG6X2XaVoRn8WsntN7jznAaOf8JNISUk3ReiS8wc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170209; h=Content-Type: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=8PrlanBakDW1aJjxZgN4Ch42cudiBjZCS7+sWrmaubM=; b=MW6+SK7gGze23youce1LiRDRQJaVrnoc1V1ga9rSmQBoMICsKKJU5DtIleyecx12AZ/yPwSR+nHrjYpx5Ywo083fm9x0b3bYk3LrxRYsdfyiXhvcHZ/JPl+KsBpPIsbcC8t/kCJQ5cPCf2bXyzSuZO0pWOwM6E5jSiNjHF1ZvI4= 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 1778170209584734.9002906156335; Thu, 7 May 2026 09:10:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1EH-0004Th-GC; Thu, 07 May 2026 12:05: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 1wL1EF-0004TA-Go for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:35 -0400 Received: from mail-ot1-x331.google.com ([2607:f8b0:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1E3-0006k5-5t for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:25 -0400 Received: by mail-ot1-x331.google.com with SMTP id 46e09a7af769-7de4ed0593fso518273a34.1 for ; Thu, 07 May 2026 09:05:22 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169922; x=1778774722; 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=8PrlanBakDW1aJjxZgN4Ch42cudiBjZCS7+sWrmaubM=; b=X1kldZWstm8ZhLX7DhdjwlvbLNKY5GJ6uCfuWpzas+82po7fsP/AsFvzlV5HNrTumb KKREnlJSt99TXGqve+G5jnT36mLLFoEpGwiFfjiHAQl0mdu5QqubN4d65cNQPGBQRoR7 41bmbvgEVBFgLEGVthxjkKfi/N5u1DZYOaOkc7yyypDmv0s3+8HnfgLwvb2kae+rh/9/ K5Okq/r565Edh/ZikKXV3pR+vE/MfT+MIPutojgEOldFLp7AjfjrPep1pxGmPELxTr/V wXFpF9Qyzmkc+Jp08ZeZ9JTi3HjHFjvP73US8cMCr4KR3OBH/8DV6+5a7L3IOagsTKbX bkVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169922; x=1778774722; 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=8PrlanBakDW1aJjxZgN4Ch42cudiBjZCS7+sWrmaubM=; b=D3hYsE5U9kg3IBs1p9ekNPYSwqUkrEGch/1loYHrznvZs07SBuOh3onZcpQxNK8IZf bZwALPKQYaslzzqw9j5GRJLBUOfZczYzUCKCmBmC0rkk/3UR54fbhW4CbhiuwUULcKCB jL33xYkoIcqIL4BOdoCZQ4KbRc5IfiJvInM+cuJ+fHoKguLt54fS3sfUAIJCIZr2voqn 3O98AQFqJItdF1042crMlJuB8CR7b2joYH+QFyOihla4Lt+OMcmZoidOjGUvG9ttUlfL uWes069T2ZAKiDYwQDaOvOEIB3TJIDaSHiTM9GrgWuK7Y4lM26aYcde9mllo9aAbzb2c 1DBg== X-Gm-Message-State: AOJu0YwybnQAVQb7niaZQf7ZiokBv8CKuWDjrzNCFW4OZuU91Y9ZGYrh yINrMsG3Hezfbyjf4j1Xv587BKPg9WpL4LUdEJC/CvUAgmAegfoDfwrqQauRdIFMLTFyZdiX3Y/ I6+ee X-Gm-Gg: AeBDiesCOpWqYbWhGkB6PhVr8qUaRe3WyHRNpsiLKsAVynAjpC+GS+HJCBAFedmEOcz r+LfBwWy96uvJNKetv4UAprpgHczWn8k0UaxtPiWaUA+mgZt4XP9ve56VfudPaqJs8aszJI4vN8 cuIzCVZbhCwAwRHFz29/z/9ETFIhDdzZu20u9kki3tmiFDnHvidktRCWi3TstlYEfY2dWhVz3Da FyvfYHCWZ8aH7l4QTNuMR9S9mPml7s1U8RW9tMgTPnT+oiHaKlM4BeGH2gdczKewJHNtCz6RNW8 yH0wbEJsSanJTYI5C3Fd2A0R1N7hvzqbJ/YtM2avap7JqqRo4TPxNIVE5QSdn2HV5BH/ibSC474 dD+hKGoSXiIfsPLLpAjxyonKI3hsxVm4wgIZpRWPtT5QwJ8ROsnjMaaLDMifpbdClu0KPPGl8cb lSsWyObSixjfDL+EycFZTKJdrQwA/OoZhIlNOJRIduT0q62FPAJGNLzb5g X-Received: by 2002:a05:6830:2b29:b0:7de:c6b8:2349 with SMTP id 46e09a7af769-7e1defe86abmr4865105a34.14.1778169921640; Thu, 07 May 2026 09:05:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 01/29] fpu: Inline float8_e4m3_pack_raw to single caller Date: Thu, 7 May 2026 11:04:49 -0500 Message-ID: <20260507160518.444797-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::331; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x331.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: 1778170211176154100 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- 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 Sat May 30 18:38:10 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=1778170007; cv=none; d=zohomail.com; s=zohoarc; b=U+vDvYHeeamSP6new4Est+f27iTcLZaBG1QskVre+vTO679LHhSB7dhxssyYun3OvenMx0Q/ndF8+SD15fTumC2mjfA9JQEJykt/HpMcwccaXa/Owp5pQlOO5uG94ZI+ywMeMDRzwoc2BwpNDT9O5UBorscMntONSpdibwbcfsE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170007; h=Content-Type: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=8KddSzfu6h2SYxUnVyJmdaPI//25dV/tGyPD+hJSdvk=; b=Hhj+1nJXOnYEwm9vCSu33jmtMdEYmdxShyPyrbwe37riyZxjCYntbYnLg6n5yC0C25CtvKIUhIZMJSZKkqi2+yn05OhlOLUf/sl00FXz3QQ/uQn0d0JZWXMrJXTDPWCW4146QkTNJh7R7f+bRZQv2xSpdZ56EU2DfAOnJzT9VBI= 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 1778170007969376.62428764217555; Thu, 7 May 2026 09:06:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1EJ-0004V8-0J; Thu, 07 May 2026 12:05: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 1wL1EI-0004Ur-1y for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:38 -0400 Received: from mail-ot1-x336.google.com ([2607:f8b0:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1E4-0006kC-Q5 for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:26 -0400 Received: by mail-ot1-x336.google.com with SMTP id 46e09a7af769-7d1872504cbso987031a34.0 for ; Thu, 07 May 2026 09:05:23 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169923; x=1778774723; 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=8KddSzfu6h2SYxUnVyJmdaPI//25dV/tGyPD+hJSdvk=; b=jz0jLjlyE7G1Wv/8XunwRQRP4JMpDLF/Gja2cL9l5yeKBrMqEySR6CK0nSDQvboq2a Y8XM9UBvpJM/8wtcP1r1omQ2Iicl3/lvMhVGkAIdajBMOFp6zqaTB5yDymZlD6uNO//l gBkyn5HgjKSjiK1O+I+9UpFkyIYQ2NU5HxW1TDdvmINY3tTdZuL4R0k4Pr9OJh093qpy Acpa4HWHkgnsnpiv/AHy3WfPLuTBhR20KBjHV9suZRe3hr2XEwy4wYvIr+RAcijZiexY sG0GPnhYYh/jqFgUtnmt8Hw65RavVq9IjB4iCmV2lDUFFAbulzOLZ0vw42UQx8+P4T2o ZiYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169923; x=1778774723; 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=8KddSzfu6h2SYxUnVyJmdaPI//25dV/tGyPD+hJSdvk=; b=bV00Wf7M1R9l5MuOGbqM7wzAkw9Es0lYANMLjEl6rbLrsZcoQ1Lz2StmN079tmjbZ9 RNOSFsqej/ULGvjkp4l/68h9pCPZkPWpjFSPLxuf9ZQzm8+VOxKOaZ8b2gfe5VSGaO9d fbe3SLxR4+aAZrlBGuun5J6K/MwBjNCx2y+C23dVVfkqbx9DFdrQJmkkcK9U8/5sV10f wQ0e6sy3MtMjeYiBiy4tzORguKoiFmukiDut08q+JjqX2g/f40VQiWe5oSMyj9EXdnAw 9FVvifIlsAu+pXar2K9EmmK5lAO7RSsw8X1N86w2SCZrNF/gCNNkQnE2y7X5QtVTq70V zptA== X-Gm-Message-State: AOJu0YySTfryBao6vJzgkdve3jN/tdyfiWmK5Sv2l7gWO0VNu1nV4t6q 8emI8Jk1l3JZFtp1H6EFWpchcQ6ZvUz0PfVtwZ+xMN768I9MKMuZ4phDClCP5A1kPc2NbpAsgiL hxGih X-Gm-Gg: AeBDievK8CIlsFgDuamavnqDNoh2JB9xQyeJpmZaFmfaRUail7j1bq4/2Hk++gXoDtR BKc7TjPoLUfzMLGon6MMCIqlTs4fQ0O0dm8xnmMm/GdCRsQEqEQMOsZlD0DyWFCzyaVh8bfdP6f 5ntfILGUWnod6qgMry8wie8vxFlrsP8J3GFtdQrDgMo1XcygA+VWtMCWBxG2R8JZMeuurs3RJej bUUM1VXxOotx87OnpDWqEUSvDLdNGq6/fU/C8z6ABqFyjpeMEsEXiiK5dkpJ9lcETYIKr5ejZ2c UuIagGCZ12gunDvlBCM6nrE3JExaHM8FYVcMzpZO9FIV6H8EP1Vpv++Y/jUv44wpUkEww6Oa1Ey dpiw08tXbYhjek2zZQEwHYncQlnm2L1a3qxTrMHN6RS4xZOFc8d/fY4Ln6q6qJJIbPRhfiFtSv1 nlDvb94uu4mmYMNIXhz34PDtweJ/VAAi8RGszjl5rE9uddIA== X-Received: by 2002:a05:6830:7103:b0:7d7:e3d7:e200 with SMTP id 46e09a7af769-7e1fd052194mr1875661a34.6.1778169922987; Thu, 07 May 2026 09:05:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 02/29] fpu: Inline float8_e5m2_pack_raw into single caller Date: Thu, 7 May 2026 11:04:50 -0500 Message-ID: <20260507160518.444797-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::336; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x336.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: 1778170009156158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- 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 Sat May 30 18:38:10 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=1778170160; cv=none; d=zohomail.com; s=zohoarc; b=NWdeVcphwuptuVt8wrMmXwaBR6hEGCkkHT0/elZhgb+MoJ8JpTOgvP3T6lhI02GRHGVSbQ9nU5iEmHnqiXcEvOb8K/3rThnS1RvqXEeldx7u5FB7Wz/Ze42UKa6tqf2Om2aajdzsY9o4t7UZqx1ApRnlXEOV6RN7gSURiO/+lc8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170160; h=Content-Type: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=uoINppTE/iumvn6oOKs4PlHUC4MYd9J7dJvuG0sU9XI=; b=mpWFHzXDUjkK/u1eHYR8TNwSEspGtC3SFjSPEUow4xjlC5CtDfbP7O136mO+FBug9WIN1wfb4b6rcI23N6ZwImS8M5OmCd9dDxcOijzNcHkkExroam8tN3QBrFuiukVH/2kvb0ox3DSQnuNjmwxZlzlFZxxyRxPfKQYwBLdNDmc= 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 1778170160837728.9578808391855; Thu, 7 May 2026 09:09:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1EM-0004Vu-0z; Thu, 07 May 2026 12:05:42 -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 1wL1EJ-0004VA-At for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:39 -0400 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1E9-0006ke-8J for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:39 -0400 Received: by mail-ot1-x334.google.com with SMTP id 46e09a7af769-7dbcb467f2bso920114a34.3 for ; Thu, 07 May 2026 09:05:25 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169924; x=1778774724; 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=uoINppTE/iumvn6oOKs4PlHUC4MYd9J7dJvuG0sU9XI=; b=Est4aa8mb62xQQIX059VVuvpfb6u5jYOzKl1f/Z0RvDKFpJ43CVFCA7QYjTONJ97Yo hHonHjQR0yPSdgx63hj9gCtYpErHmumMLxoeRKgmSDGkfi14HkyhKPzxjNHhB7TTsZLD fUFFKXKYnyV3HJl6pKcVlHSC6Yz1wTRRgLBPqFVN/0lOM/ifHVLcQxlQvoxFndzDdokq GEkyS7NCqJ4rJicIkZ2I587/SkPH+uY6YKQhU8MwQMKs5WbnW3vg+kUbPGnM0jyU02Hr dm7xjzRO3nOMEqly+8YZXxkaY/EbuP0WgvVWIvCfA4z95S+w7b7cCgPC7SfY5VEbKtSQ PFRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169924; x=1778774724; 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=uoINppTE/iumvn6oOKs4PlHUC4MYd9J7dJvuG0sU9XI=; b=Y+2Dqp15ZMqcvhz4ApuMXucz3/aGyPs7+zpJ3/Vu/npxx7CdPkBJt183Zn6ib5ZL7n wvV9M+IYZWNkPsytNioAUosuooD7rL+6ceTKnyiCM3DGvbriQKLqjPyHPUKqDmW2cs3m 6t92IWUMxefl3kT4MWN2yw7KDRAmciZpgUnQNdXDzUcn9VPE8F1x2sBBxk3h+zAoeW43 GBWVcHvjb311UQG4MiLQ2oq8gu/PDailN7xmYOpq2I+xIAHm31ETqa4OzFiu6vzqJUns 5nMEEqz/baVNOHFs0zCi1ELu21d2YGgC8il1lqWBtOG7M3ddhyMriEdipxTO1uDuWrfB MKrw== X-Gm-Message-State: AOJu0YxCD8nb+7ap0ZqTzGSRNDQDz6iuPXT2BigdwPUeT2Cot/7nObVl NqViU475KZxjJbwKFLgqFRhoXj81inXUsLyk8fKuxnFYyWgnU0VYOtjg3aYG8Df43T7+3eHOqPT 87x3c X-Gm-Gg: AeBDieu2WQg2zHjYyp3WoeRGii+h+CYFVEf4gyN+TB4R5X4AOblvsCM0PT7/6mSe7Nu 6eouhQlUbBONqqgzpBXYFF9IKAXHxhFyS6QBcGMHt3sbIpsTsvLgBLRbtIyy12YylkEmAjIk2Wu g8pSsULYs+HZbKhUWl6ZmAAoEKysTjM4LvtikJR6r8dyannQieaxGEGMXhhPrOY9RCuXZZ18KjY ktx5acsAIDIOcWJOuw10iP5n0iKDVKffvOPXLpSQcjn/j4vcLZPgtHWpsyyt6m7QSDffGfsuPKF /S9QFQ5f1PrVHZpsnztALEUeXbwpbrIQB8Gp1GyxuOCjQBxqMWVvVlE7cJ2lxj8uLqgQvuSPCh7 FHhrQPZybayr6AmgxvI2IzeNdt0rjrK7H5WOQ5cVywIWMwwgzNXAy+OC7p51hbfaz0NLiq9f4Gx D415uZnFWG1TGx9Uw3azvEsE1ciMdatO9/81CTNMA/p65B9fsD6dJtzABi X-Received: by 2002:a05:6830:4981:b0:7d7:4fc9:5204 with SMTP id 46e09a7af769-7e1deec7181mr5608979a34.2.1778169924239; Thu, 07 May 2026 09:05:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 03/29] fpu: Inline float16_pack_raw into callers Date: Thu, 7 May 2026 11:04:51 -0500 Message-ID: <20260507160518.444797-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::334; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x334.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: 1778170162360154100 Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778170257; cv=none; d=zohomail.com; s=zohoarc; b=FdRx3bepPR+hYh5rig9XiBOYxwTOExZjFB4AfZ+kZrLg1M4smxoWboc4B4aLpsIn972JFUNV91xYvys66sBgvViMMXTklZ6kpIx8LkJQQS2FAEYZqdzsPdjBB5znOeI/dZYSRFU1WduT4VHSxUBwWG2Rahw7/t3Oq1u3yehx7Xk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170257; h=Content-Type: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=S6PeVyr8q3AKOmBPv+t3uSdl0yB4glMGXowE42GNDyE=; b=a2eT+nsrDE16goutYjRiT+2PuJvzRX1x5Olu6SRz9Gast7ds9TmLkCDt86qyaRltGYT83f5n+kzkbZowsqnA5Lzck8v73hDg5UlNS7viUDQvuHIlr0w8j1sMKz+vqSkFS2/l3brMUmIP6rU6e8dQtq5KMgBFjiREgfosYV16FXc= 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 1778170257651785.9377082666939; Thu, 7 May 2026 09:10:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1ES-0004aY-H6; Thu, 07 May 2026 12:05:48 -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 1wL1EM-0004Wl-Vw for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:43 -0400 Received: from mail-ot1-x331.google.com ([2607:f8b0:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EH-0006lV-Ss for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:41 -0400 Received: by mail-ot1-x331.google.com with SMTP id 46e09a7af769-7dea20cf21aso970510a34.1 for ; Thu, 07 May 2026 09:05:26 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169926; x=1778774726; 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=S6PeVyr8q3AKOmBPv+t3uSdl0yB4glMGXowE42GNDyE=; b=vR8S9bAAIU8Y1k+30Egc9gGYIFrkGxITVD14Lm0JehKVc1pwgCNcLv8akMWP7bKwW1 xKLAQ9fn0E5HXopyiB8UlQhjbu10EBa/ZQLoVaoVkXPIobg90b0aW8gb6nPRvlazQThU wNpVFxUE7QR6UiB+vl7/hJS1glkzS4Wy2dDqdtILTDH7uKmbZlLr1nQWqeGbQOUjP8r7 T7hwB1DIS3Cjjlcaal4HN1WJtITNAJ5ap5ZZOXWMX3+egTbt1qSfofy2X+RgLKECdh72 4H8uRKQjUGyhg7QxWcX98APrnpcIHxBMJ5OymSJgGZFksxAALs45X8Mcd8znYs0bNwpr EnvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169926; x=1778774726; 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=S6PeVyr8q3AKOmBPv+t3uSdl0yB4glMGXowE42GNDyE=; b=csFLbqfemnPMSWsDuFX1+d1PALy8BDCricezfOwqJ48OUTckRNjBX2Q3JVBr1ei8xO ljv/TfPnJa33wNIXm6mJKY3va0TfJ5N1l0fcpiE1cQBeTsE7cxgO+csoCAE1I8gAtVx1 bxEq/NS+8hGDzSXl/2mOl4hR/9mve5Za0aNqwNt/5tJN1skhWmFXQOe7pUIf2WqriIKr z04bp2qyDodEJubTYT7AHqioFAfJa3GKXjZfNB2GPja+UAe0cXODloJGqmE4Rd326Zea 32Sv5MjW5izUD8Zk0g6I7027ybrQ0BISKYsaSvO1B5hR6vgzAOZQBZkJblD7zS1VqNIA h7+A== X-Gm-Message-State: AOJu0YzugnI6xNqcOlQpfX/bqrb26l3+7g0TgI4D4CzcvB83HQNqg/9V c6HyPaShzg70lDOXiB5F2leEofaRkGJnY7MdN5AD1aZCEbyGBtikRDIJBHp9xZCDWYkFUvuNnil Sof0z X-Gm-Gg: AeBDieuV67YDqDcgTWpmP9jEm8jZrPsR4IQnEh1hNux7Q83Fh/6FFG1CtXAkGdA49vt CF1eOj2h3nwkp+48yg9hk6UldfJFXr7d4zKroop7lUpG7dXBvlPsRA1QgapPwXYoHO446ZAxFvK ILjfCEVq7HnxM8k2akMhu9y4pxxGh83grvApAgdACv4CkgHEruyzvF4A5Hpji8BgEbD1CupCICx VchB3iPyC551zCS39oZhuBfLiGIiT84x3JkmZ3hzNa8h0E0UEItES1tw5wCoB+CMG68zF2V2ElE POryXHRXedSTHlsbGpkWv/uFvVgYC4GwDTWFHghhG8lDy+fvKfaFT4o6SUjV+UanwmC+uG1hV5J 6nOzOLFlki+ioXo8rDx54Bepdk15L9ypLGnqyh+yFZCTBPmOe/gxpqvl4jB1LL4xunDSIop+hun gEpqU8BgAm8dl9/nNugSFZdIVpBaNrEEJ7HcNLenHAIlT4OQ== X-Received: by 2002:a05:6830:3894:b0:7de:4f6b:9e10 with SMTP id 46e09a7af769-7e1dea53c38mr5461459a34.0.1778169925416; Thu, 07 May 2026 09:05:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 04/29] fpu: Inline bfloat16_pack_raw into callers Date: Thu, 7 May 2026 11:04:52 -0500 Message-ID: <20260507160518.444797-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::331; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x331.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: 1778170258783158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 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 Sat May 30 18:38:10 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=1778170317; cv=none; d=zohomail.com; s=zohoarc; b=ar8YEpeVaHiZG+BFvhcxXuOn+NKslC6m6MTIszPBjKmoMUrORJD5+/ykmP9g33e5D3SkIFel4/Z5jnk1WzWhO4zFloWpSTIPv5zixs6wSUgqcSoIEP2MWxVhB2yJXT9PyzaGp9fdvz6IMXCb85CMhP8CZmoZ2erAbhsoFN3D3Nk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170317; h=Content-Type: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=Vif2gY1S8nmJRhYybl+BgqipJgue0+RfwqpaRHJOLL4=; b=DbMDzcwi4cPSbZ6/Y3aCbb0nWWC3RfnO3NyNfJtxdn7z5zzeTGH73Wg75Mgsf+vj0x8k3wOxXtBJI1cN5AvHcsaD5vDSPsSQkjjA7Yv/QDoET+S3qmaUZVPdMmpt4x3AtzzfBG2v+mgpXHqXp5YZ6Znsja+MN3501ZYU+gXm9Us= 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 177817031726848.808498362207956; Thu, 7 May 2026 09:11:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1EN-0004XI-OG; Thu, 07 May 2026 12:05: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 1wL1EK-0004Vm-NL for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:41 -0400 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EH-0006lg-Qw for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:40 -0400 Received: by mail-ot1-x32e.google.com with SMTP id 46e09a7af769-7de44ed7a11so874609a34.1 for ; Thu, 07 May 2026 09:05:27 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169927; x=1778774727; 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=Vif2gY1S8nmJRhYybl+BgqipJgue0+RfwqpaRHJOLL4=; b=u5IZVgDVfAgtQseXpMjJenBzR7ZDzQtx0E92HgNxfvWOudz+w5oT9AoBpyreLLPr1F K7idtz99MxZSOrqIuLSMPCiJCsx2GFYyeIWh9BBrD4qbwVoBBIKxd1DWg9hnssle+1k/ bYWnK6+sg/feAs6h/3wuASPGqN/5+wBUsTz3v1ELLspDt4KDqZDm8S6xDmFtDdoWSxM9 gzw2kfDiVRQjc6b9UweGJqOGvd9Dlqj+farOlNH89iSMutlHEfnmFNcevm+ET7IbTxl0 fC1uDRmtgwVW1shsSxJO0zg23NR2zS+l11edFOeeBDRTSELFuKmU7jckrGm2rUEsnBdw Ob9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169927; x=1778774727; 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=Vif2gY1S8nmJRhYybl+BgqipJgue0+RfwqpaRHJOLL4=; b=Hr2Wn3wD9v2vCG4eaKyfEScY3d8EDJNamMHjyUZrNSial6//l7gmbFzdovRYbQh2jU V4Jv9Jj5JSUUNaW26p2e1Loyw6hbMZwW6OpDkJjPvweULhU2QpoVLZU7ZFwVfz8S0VZG SPvbWrDaDSfRL9rM6pf2M0mIE9MtnUVADrKAOOs2kHBbojlwvIF3Y4eUgbJ6Db7YsiEj CaNOYsYa9lhFjkTrw0uppdYTs1t2j91jAwyTEbK6SuQYnZ+4EEPkVT73i8cb9hBSGIbX 2i2l54RuSCg8PHiNdmyzUpcECoimkExs6n4LI3ZNI6gKBrlspfRTc/Ak+cgTQHo7rCH+ Hv8w== X-Gm-Message-State: AOJu0YydLwrzVYlQYkMcxQk7jxWyYCZGWgXMXZWerSc15vbJ4O3WTDtT c1J7nCtfd/jO94/2lKarzhpxGozk/ZXpdZvyHW88rHBVb8BVH82ImxR5jb9A2Zn6pl6WKsbERON 9RBSv X-Gm-Gg: AeBDiesZnrZAycF+hU5/nz9y3JlQAI0IAFi3zlVwiMZ7sVwiKU01ggNOlBitxQcyAhB WaU1fgIrrv/lyfPiiG2qUk55xuHmsjjpX+hSGf3yAvUQnsZNDnk307fzoodHA0KXLaa+p4tmInz qrh68oSPrpnFJmNEYV5oZRoj1Mul0W8gmDVmCyoUHvm31tVwzcLyxKKQvUW0DdPHvLhjLlorhk6 OAc+BRsoriflpFMnGmnLD3DTJcDz+L3oAeHflmxkNvvq7rSK+jEmX/OQ719YY5X49Jdnk7o3LfX Vvx4Lhb9el8nMz4iyN0BSLzeWgbsnFfXWptQpoOkOI9p+Au3V3cz4vmNAda2xlTvtLUkEY8IuKj dQry/1frO8x0lUTpw2JzOWNJGMNudiVvy6eTsAQbPlGPna/+NnmbX+Y7dERu/fBzTcS9DqNEt1y iqRLPzRc+U2nAqPWBBHIHH8T/Y0aXmCh2AX/bRrWBhRkW/og== X-Received: by 2002:a05:6830:83a3:b0:7d7:d504:cc6d with SMTP id 46e09a7af769-7e1df0caa12mr5775975a34.21.1778169926583; Thu, 07 May 2026 09:05:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 05/29] fpu: Inline float32_pack_raw into callers Date: Thu, 7 May 2026 11:04:53 -0500 Message-ID: <20260507160518.444797-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32e; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32e.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: 1778170318958154100 Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778170220; cv=none; d=zohomail.com; s=zohoarc; b=R7JXcjEnkEIBaBU3h2+c4E1x90Xj9jhfu+plFUyPYnDHxl4w1nJSQjzQh8Ekll/w/Zltp6PGoL1W63FrzllWX84DusasHntPtMwqP4LpKONAzo1TRf3+G2pMOL/PeD6vfTmdVw1E5j6ycTda0hQ3W4jPLp6sNLvbr0QrHwyePII= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170220; h=Content-Type: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=jLEYbhCCCbPbEDaftNdlR375O0h5UDScim3t09wb/r8=; b=aQm0qs2PLB2x6/7xnw3vy6x+qSiRtohP4f3uVIuBlxgkY0Z8dkcF+XbwHA3ptKjL/nnaZtmGSm3RN5UjSGObqdo3dcp96MlA+UjVVZdRnvFb6mNkeOvPflCZ8tvrS/FeAlfo+Rn8lyvq7x2Fj05vumNLPSjIgnkoGnTZ6QGrmEQ= 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 1778170220670122.49608950434708; Thu, 7 May 2026 09:10:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1EQ-0004Z7-Am; Thu, 07 May 2026 12:05: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 1wL1EM-0004WO-Ao for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:42 -0400 Received: from mail-ot1-x32a.google.com ([2607:f8b0:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EH-0006lp-Rz for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:41 -0400 Received: by mail-ot1-x32a.google.com with SMTP id 46e09a7af769-7dbcb467f2bso920177a34.3 for ; Thu, 07 May 2026 09:05:29 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169928; x=1778774728; 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=jLEYbhCCCbPbEDaftNdlR375O0h5UDScim3t09wb/r8=; b=gz28LLA9qsVAig1ayokOSRNz4WFJKZxTOgOgC3Kc2C+UNdm0dyDbI+WdYbkdW8A61A 4KBsTFhHl72P0Ul2SSOyt3HRPo8j4mA1+M8jg3p9bxAwgWKVto2ursF4yJ3HYJtiHzOM zkShJLVAs7zMxM3F5PwMcYhbLM801weawvYAJr1Wt9TSxbL8onFZGs+pippEqXvbXfhk f05Nr+tsZjh1DF3MeqH/5VwFYs7HOMLhLS2XmIQGrbeYxovTJ2+LxAKT9Sx5/MfsDtS7 vPRXnIOjcGRs6YOhlQeytKvOfKkaJv7NqY9K+Pueol2RAt6kXG+WWCeueeLsPvzvOUfD QZ2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169928; x=1778774728; 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=jLEYbhCCCbPbEDaftNdlR375O0h5UDScim3t09wb/r8=; b=q4PgWBHhh+dIDBZrcrw8H6UM4DzMxCaiE5w2vH1cYAyJvHUwKwsLrKe93oY2duvSws Poh+VwJtY5TAEEObCnoyhfylOgbnpfy5Sr5Zx4kETnJk7sYppSLIpQnqIhrg2ue8ovBZ Mcg1K+bxw99E2QqTOt/PZ8qKzFIL0nWqBsTnuIWs8vKrGW3GJD1aSl4Hj1Ox+2GMgnAm RiuoUNRnPz6j+JfzzWQ4xlecLKGnI4DID7l9MpRr79El2Yn2f4bjdhxJmi5XIFrilOKa oUZ54KregQ49rrWyqv0QO2dSYWBcROeEbga9Jt9KoiqaeShhX8PzBJHABnIiCiJsSj+Q d0uA== X-Gm-Message-State: AOJu0YzMMD87s6HQBc+j0XQgrRboi+Q2AdE5S5k/f854JddE/Q5/+c+y sIqCqZTsGRGWimjraJF9dqWIyLSN5nJ7F26xCG8LKPYp39pnu5ISfzvr96LLLHg5tN0SVLxVt5t 89q2Q X-Gm-Gg: AeBDieswJeDcEm2L4Yp3ekhH8w/ZJdKG94friVevSOcXggay/3W/t8srANseE12a8kS H4WFEFRYAKPZfOy/LOb+1e1kmXkBhSCwdreDRYQ/d5iQbxEVJ2hpy4ZDeIgDHC6FlFtZgVOAY/d 02O9WQsTKCX2NsGMeHS6xDIanhf7/8a8ScThf97D+OS1lr/WY757+9frRgVgNalrO7tfElFpktk /SMLmt/rN4lJB5Gy+Vc/8l8NZGYdD4dG8L58zO8LWPIuNaIk3e6toKdCglWjWTq1kqNSOX8OITA fUgsoc+lcFX4/7Ll9QQEuOGzAv0vbvEeBwmac8d/Z/6lOjeUlFERJv5znpBkyCnte2Pkagikd3c GwzoVg/E5ZaNv/I8aacjsNn9bOw5WIIHo6q83L+AFCOeq/+UU/lKEK6bxy/iaO0FpeVi9VAgN3V 5cXXnFSnow/LyG32K+o+wfqsxVbZ8Ln26PYLL2xWgtDIvn/zyLBQGQUiEH X-Received: by 2002:a05:6830:64c9:b0:7d7:eab6:fb23 with SMTP id 46e09a7af769-7e1df1abd5amr5062212a34.22.1778169927844; Thu, 07 May 2026 09:05:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 06/29] fpu: Inline float64_pack_raw into callers Date: Thu, 7 May 2026 11:04:54 -0500 Message-ID: <20260507160518.444797-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32a; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32a.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: 1778170223406154100 Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778170064; cv=none; d=zohomail.com; s=zohoarc; b=TGCMhggYBTlZ4mqPUozDLXwwAU/TdaKOkHIYdGiJJB2CvjoSz+ZbA2yTw0/TFWNwder90bwKLtmaGGlP5qTD0oGm5FA8HWgpOvPGnM495psxW3TodgScM7wuxpk8iyI3YifWbrRlaimzfDQxsk/IxoGg6zFQgpKO/FP6Y4LcWso= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170064; h=Content-Type: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=mw1kdvtUwUPt4raLxQUB1roVMfIRc+atM3nbQew3RN8=; b=U6ASK6+9+GXfLC4DKsDUQ3HoqjFXMuLWei0omSYybwuXD1YKKpnwevingl79KT4G0DE0tTikhmW+Hy02m8BYfSPXSmn6TT9e/OpqsSL28l5lSj65pTivYb8ikB0IMq2EkaLIXM7hqC3tfCH8w5+doAHSjr4g8ycDO1hmTzay41Q= 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 1778170064058740.744917126613; Thu, 7 May 2026 09:07:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1ER-0004a8-8Q; Thu, 07 May 2026 12:05:47 -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 1wL1EN-0004Wm-0c for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:43 -0400 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EH-0006m1-TE for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:42 -0400 Received: by mail-ot1-x32c.google.com with SMTP id 46e09a7af769-7dcd17e19b6so657642a34.1 for ; Thu, 07 May 2026 09:05:30 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169929; x=1778774729; 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=mw1kdvtUwUPt4raLxQUB1roVMfIRc+atM3nbQew3RN8=; b=LXSVg/g4e5e0E0w39QZmCt05rdu904te0vqvPP2nADEPfomaBQ4zctAG0Z8wY9mDaK T9S4sgOoTEU/QcDLbCjQ2rJ7QGx/FGDhqdLryKQcV52zVZfbntRaWbHsgvxHkKtCrUQv SYc6H8Iy3JZ/GJPD5rQ2m8Ch37mePkV8D4Rx3YwHck4tjKhYsUTPearQuZfoyWgfcRLx 3ObSndBrGvgw/CXLAJE7aijvmAthcO2v4Gsx6k8tyRDh6wkw54boYWEeTulV4lF/SKMH LOYLntDzHWIVDFTyqNljM13zorA1QUAUBc4FshkVv70ESt5SmkV82sTWQdrlgcu29C6D xqiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169929; x=1778774729; 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=mw1kdvtUwUPt4raLxQUB1roVMfIRc+atM3nbQew3RN8=; b=dUk2taI1leMhEm4Pz/XuFW4RDfaEf84qr0FETghUyzJX8HoahO8SWowfhOos85wfHw POUgPgIcLbpKe9SPCyFJoJyn0zeY8JhwTkxJBrJMvf63g/6kn7oOdt4D4YmI6uejwTBS VGm0BeM87AG+Me/FPE/rn07ScSC2O5PL+APCP4g1EVHgSLVu+1VFeS7ck5H1PjaJpMYv rSzuAvorkwpiZUS5rKL4ZTELWkeWVrzBN4/J9/ZNAM2ZjivoQfkaa8+djQBqaN9CUx9U vsrZoZWHuMfY3YsUIpC7OtwKdXgSHUBYhG1eVwur+h7Wb2bHzkWqB9t/CXjC37PGSVr/ Xr9Q== X-Gm-Message-State: AOJu0YxnRgMkVirP126nG0YEPtCs2+jKaCEcbWBMMSLiDt3S310eiJre IZwFFdtMm3aqXON3pdb1knBsiUOFk22MgxM1pkxhtCmv8kdRHw0o6g1R7lC+/aKVhIPHQK5hERB jDPsD X-Gm-Gg: AeBDiesSB6XKG5yIV+pTu0N+gJVVvRYVJp7hELKdZYozkncWTphPJzOyUEGMrG/ZN2M G9/AF3TGAsaiGYHIfZfgue44mjQTyIM6G7lK6Pz8h5/8zGQy2DivkhYOUQpgrYv61tLXOCnULPC G6F9CBe921It6aRqNSHu0erThfyNa9UJ7KhWxgFZz/WCSbE4yfLdGtF6OlpGZiwCH423P7Z6rA/ Jgvq5eno467MqPK1748FInM26bfHF5Qeg7pWCc8koGR+QjqfjbH9JpwPoeYBwC/IwmQboDvEr0+ CEjqS7dzAsDea3cbY76HgIi0NBYCtaToMd+ohszsoLOV/1cKQq32LBmXy/qv6If+futbmCdgK7J JEKAHjZj1WT0CDV5KDsmr+WEmZMemIocscnBFKJkH14zd5Nooe5om2LRQhYZC0iM9449o3RkDo8 NoIPQkgWCrj/NJyGuD/TEW9c1MHq7nZEx/gj+SLOQOYUHusw== X-Received: by 2002:a05:6830:6005:b0:7dc:c4ae:a689 with SMTP id 46e09a7af769-7e1deebc5b6mr4783099a34.2.1778169928901; Thu, 07 May 2026 09:05:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 07/29] fpu: Mark unpack_raw64 QEMU_ALWAYS_INLINE Date: Thu, 7 May 2026 11:04:55 -0500 Message-ID: <20260507160518.444797-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32c; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32c.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: 1778170066759154100 This is almost always used with a constant FloatFmt, so inlining pulls the constants into the shifts. Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778170166; cv=none; d=zohomail.com; s=zohoarc; b=iEAaGffbo8HoIBySlHMsgd16zu6sio2dKqWX5Sn/8CDKdkXHrjLrLAgxtGAXCqYUiHU8rGGxvZSDyeg6Oj4oAaeoMwgliJPR4HMQ/bGYduSdRvYEJPXCtIrxRyfQA3vhctq21a9m9euyZwBoXhbDEwCCTvShRgd+gPnkQNzUxwg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170166; h=Content-Type: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=f55KUaIRsxkMoSdrRt8aTn7E5OTKI+taBESlBWBCL0g=; b=GixAFkq48irEw7PR9RzydU3p+e+xJI/Ge67QS3/LTfIQ2Rlp+NHbAWDZJyGfhdgcWW3ZJhD0HXzEfSeMIn113XD5B3/5xDjQ8kX5N8lYt4z36HF5Irn4q9VQEefPoAoOES8mpTte+WcQYeMRikYUXfwz2+IlXDAOg4Es9SlZdoQ= 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 1778170166106695.096610507325; Thu, 7 May 2026 09:09:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1EP-0004Yb-Ew; Thu, 07 May 2026 12:05: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 1wL1EM-0004Wk-VW for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:42 -0400 Received: from mail-ot1-x32a.google.com ([2607:f8b0:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EH-0006mB-TH for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:42 -0400 Received: by mail-ot1-x32a.google.com with SMTP id 46e09a7af769-7dcd89701acso972723a34.1 for ; Thu, 07 May 2026 09:05:30 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169930; x=1778774730; 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=f55KUaIRsxkMoSdrRt8aTn7E5OTKI+taBESlBWBCL0g=; b=pbLX9+Rm133VGqUqiCL9lGS+vQ6oUL8/BRwQ67h4FYmZPGthoLG/wQjU+q4JY0v/OW 2yY2wOuEpmBqJ0HZxqXUFY+744wPUdg8ILnubVkBvSbWbT9rPA3yO/hSQ1Q8BgA1LChc kIfQkc0AqFdvB4j6CDdx8O/T5V2ayqDSm2AxAh9C4ZjFsU86VjtgVRetpmLcqAi+ocmM HVudEoMgphkBSPV6UD77bSKpe4NCkLKA9roWolxsjm/YGKNhgeshM0xPbz8GjbL3WytX OMBONv6Dt+1x5c/REiHhfZ6f0ZQw1qwhb6uNv9otjTNsGPZZpYSaViFJARLqxuC7uhq3 G7iQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169930; x=1778774730; 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=f55KUaIRsxkMoSdrRt8aTn7E5OTKI+taBESlBWBCL0g=; b=pqC21nskhJZbgBHXcM3R542Pas275x3uETEmViVB2VoYk5jwpsxD0BwlYqIxPxdaPf yC9Pzkd3RB0HTA4+kSSPsh1uMlISH6XarY+BfzYvXDrsXtkGLAMAlTmE7c74gPyJV5tD mo9mMnqZXvlJbmBpMwDIIht7RI162ynrGfMPZ2pp9meZZQzSH6ryPvL9dvUav2p9z3+y +LfkUn2WdFDi0ipsarsV7/RstvMNwWmLUAfXOxNJC6rmvAeyl3enPtmZ+NGIk9I4dTB7 Z1TtpTt7P7n2aCBoKPJxfMwMG+WfZpYe9e12n/2t0rDQcCjr0btrTgqi1yvplEECWBVM xU0g== X-Gm-Message-State: AOJu0Yz4b7Dggn6DoKzz8ALtIoRiZci/NNgogLsxUMNZNJL88uvWGNTn ecPbswRfEkuJT3p0lfTH4U+to+fKdJsuzNfBZM4hXK15R9rJNIwOMot+SxaD4JxfyJf2ucHpxOy WtjgM X-Gm-Gg: AeBDies75ctvsOYKhzMJcU3t2JKJuMO8hutGzBxIEiTOnoPzaJtWOjK3JumlKVXdodF j0vT/nwLpY2Oex77ARSxEur3bNbt/g5aI7UDlhZsYqZwGfkD/LoopyAW9H9yD5l4sYkVkcwx76a AKLTi3xop/uP4r/43fbh2WFyzvj95MtnqBqsd2XpLHdYzrPVv/0Mz9/n89UtWA5m2f/ddXAs30p 6j0upk/K6pKw096DfFoXnX+1IAwFgfWdNTHcLHZnM+b0V4Tq+FfBAb8mXopCPHNHAO26cgN3HhL JOLgFCulvrHgPNMjjqa1OnaC3vuwtkAqm8Jlk2/nrIhCqU89/svQZkEeExOgNttq+qTva0+lqyP /4iU0szNKQR2fEDJExDDDtVRFCB5DGzWSR6izRYawaMlL0Krio18kWTeU3MfftJj9XW72OPQF2l 5qZ0WUGIHWLgxjZcTKvlAiwMILJ88bPUVNOTailt3C5B/KYQ== X-Received: by 2002:a05:6830:6018:b0:7dc:d7e8:cb30 with SMTP id 46e09a7af769-7e1df137ec9mr5316612a34.26.1778169929847; Thu, 07 May 2026 09:05:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 08/29] fpu: Mark pack_raw64 QEMU_ALWAYS_INLINE Date: Thu, 7 May 2026 11:04:56 -0500 Message-ID: <20260507160518.444797-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32a; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32a.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: 1778170168216158500 This is almost always used with a constant FloatFmt, so inlining pulls the constants into the shifts. Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778170174; cv=none; d=zohomail.com; s=zohoarc; b=bffTr3BQq4F2B6Tmzhv704WQcDaX96wsz+n+Ae+OH3jY23ZsKdNH0Luntq9YNQoiUlR1k+udH8DsF2tsVeJRsJlLhlZ8CmKjYKfa0dVTBdRPGJ3tDWt6q42yCMuzDSQ5JTDMMjp9PSYvBRZ1OJiQiPQkhbuan/i5AOElIJLUAGc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170174; h=Content-Type: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=t/DtA0bTg/+qbb2xEBeyZd976Nwj4hvFStm5Q31fGd4=; b=JJAT7R2jkgktLZwAbCucPRYOpKYqyfqEqd4StGc1TRc3vQ+k4ZGx+ayYt1GEj8rg+s9xSO/okHpT49mkidexWyEPVfE1/84ao3muJacbUnCk/xUBKvucc5R7dLBi+ZwvoTq7TAOiUrz8nAMXpuv9g6XOuzTQjxOC/u2INfI3jf4= 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 1778170174607405.2124575574238; Thu, 7 May 2026 09:09:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1ES-0004aX-E6; Thu, 07 May 2026 12:05:48 -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 1wL1EM-0004WN-Am for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:42 -0400 Received: from mail-ot1-x333.google.com ([2607:f8b0:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EH-0006mN-RJ for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:41 -0400 Received: by mail-ot1-x333.google.com with SMTP id 46e09a7af769-7d1872504cbso987180a34.0 for ; Thu, 07 May 2026 09:05:32 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169931; x=1778774731; 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=t/DtA0bTg/+qbb2xEBeyZd976Nwj4hvFStm5Q31fGd4=; b=uZO3jhlRAEOp4qp30ZEBvtkNIFK27jo78psrQ9e17ZOHpYCPo3z1/AnxHb12yUHMrK 8kzmy1f6bDK+RARQw7TZR6pEaHj2re+AFRGKkkdFzWAJJBOfausvQ2Gsa0tToPGd5rtd j18QVwv9tI3I8a0KXwkr77eAIe9pshI+anfqvC+kUxWBpoSFqF8jYTVZYOqmDYYulgDa xemjKu4EcFeXd5CrvUUP1AWBGTUTYawOf4vfGqEC21s6O9bWnAHa1vcMPXCNn5QFtQd6 3pWfg6Ltz56cfeKGQTokrDwcOilG/qyCZ9+D9ThgXEcZnajUVq+SfyBmD7NE0HctKZWA va2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169931; x=1778774731; 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=t/DtA0bTg/+qbb2xEBeyZd976Nwj4hvFStm5Q31fGd4=; b=WzL2preQgBHSdnpaKUt79MaGwb1IobUxXJ7PRayrUGUix+1VP7cIxjTw7n4wvR8VQl t4n9P8RO5myd53tShog+t2DCxqqVLvrGfRCUKQQEY9K10KrILrtf2J5UK0HaARP39Oay 2Szd6bvF9YF97NKptyIgeeaKlHB2PxG2ceMeH9y7+aKyQX6iaABDYeo3FF4As2ubAbE9 6i+4h6ASmV7Kiri9/4xdTU2eleA9bhCxuHtjq32zK8zTk7AiBMlErYy5lb9wQW0kjQm5 cr3btWrmFZtoTc7xl1bbjzS3vG23KDmS34WXiHVU9hmauWdDJRvV9OM4wBgKitwJyZRh PIRA== X-Gm-Message-State: AOJu0YwQ1e2hjzR1Fz5v4CuLDfNAlCc9bsKTiZllcOGUjcXuFcTGQJM2 ZgcZvkREj7vDlbfHFpJTUOkNyBG94+HfMT+n6skLudU/iyugSm6rk0aSdPS+AuI6CKboLfzj7NF tOmXh X-Gm-Gg: AeBDietXgxV7LvA9WwmUaTU5NaBi8UzG8d6k6lDpVfO4pLm634Z2uQ7zpwC4GUdhVxY /yVPpWknGjj80078vHMxVA/xgqOf4lFNL7BPQyxMibn+3rp2KqqDlfOExt6WSq2lEXQ/wFp43aA UZ16oJRV+3ydqSEO9cRbtp7mB5nNil7tOTptiSw1LvFEt1DRpg8bm9LdZzsv8swxCx+LlMdB8ir ltClZ0jBYjvrWJ9vfyhS7NAMVZVJSvIhkz2H3Qjxwkw8yaQIQOgA7anCbMSMMo3DR9mgwb81tlh pVWI78K2k6U25ev6Xx6+N1Sly3Pgu7oe0kcsAKkphePy006B39z9WjOG2hW0y8ZxpcVTtX8arx5 LRtQAuJf4eDGw88MqQOhF9nmLvPAW0aeNsE0bCjyoqmPg3sWEwr61YeDzG5LXLTbfpkIpXou2o9 w3NpDRofcBlHh1FEpsOw4TrU0Xt/j56s0vkkVQnjf+JxiK5g== X-Received: by 2002:a05:6830:3806:b0:7dc:a51c:9197 with SMTP id 46e09a7af769-7e1fd07120cmr1994535a34.7.1778169930962; Thu, 07 May 2026 09:05:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 09/29] fpu: Split FloatParts{64,128} to softfloat-parts.h Date: Thu, 7 May 2026 11:04:57 -0500 Message-ID: <20260507160518.444797-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::333; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x333.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: 1778170176693154100 Begin exposing the intermediate representation of softfloat. Start with just the representation structures. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- 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 Sat May 30 18:38:10 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=1778170000; cv=none; d=zohomail.com; s=zohoarc; b=V/PJF/YAhYdQuRaJExizcpcal1skhH3aPEcEy3NTM6in4vqk6jGTlcCsy6zQR3teskVTXQByuh/rfxiJ0zxDtEz4OL/zUoZqsYKIz6AaVtrIzfAUswAkCInJhMLe4IKJJuXQyFy1WfAFGbpStSESiDDrhE9TnySDx6tAiarCZ8s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170000; h=Content-Type: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=WGLTypvdlUPkhnyOeCnxkdCtqhINZkOd8mxyDTn1/Y8=; b=jqXAHOrmG1WWntOa/AGpfmyjb+3/xhws8GMZqLsF9KELgLRvdIoNQ2qChl1lMi5XbwPk1P/KBvXlHCIyJMtUERzqKl945/fMtbQ+D/0t6i85fK1bQto8badl6EQEsERW1n8Md2gkLiu26/f3qv7Wsaw/RYWLgzTRSonacDkZnXE= 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 1778170000475711.6911285972591; Thu, 7 May 2026 09:06:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1ES-0004aZ-Iz; Thu, 07 May 2026 12:05:48 -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 1wL1EN-0004X5-9G for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:43 -0400 Received: from mail-ot1-x32d.google.com ([2607:f8b0:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EH-0006mT-Te for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:42 -0400 Received: by mail-ot1-x32d.google.com with SMTP id 46e09a7af769-7dcdd1b492eso877057a34.1 for ; Thu, 07 May 2026 09:05:33 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169932; x=1778774732; 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=WGLTypvdlUPkhnyOeCnxkdCtqhINZkOd8mxyDTn1/Y8=; b=IazzhCGOulTXSynaTlhlDME8KylmD6GVVYVoQhR2uFMzr6KDGo71mcj6FGxYyCFfvP J0i5UuEM7OAcsXgZfgi5IMsM7WDYKy30bIT6tkANtHu595mGPr8et/2e6471oW/wsYNF HnR8n1UF4LdE24DwBGpexwegs3Nct5AFAREwsyx2Ua0SUdoTGXecyJ2fM6lqDk41h8+W bGCKKmPLWOv+gU06mHKouVqf011V+xDH1zKhNH0uaW/vK81PVIIAjU4wFNkvG2af/YaA bDx9SyqQsatBZgR0DyWqL/m1p08APciYliU9DCYM3ZT0/5ek1H8UrNR3TWSH+r8rlAUT u8zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169932; x=1778774732; 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=WGLTypvdlUPkhnyOeCnxkdCtqhINZkOd8mxyDTn1/Y8=; b=nzgDHjVaxD1TnK0IJnpKAnUEN64M9LNtNNfOZPj0eA5lA5CX5frJHhqXO58sDVElcC C02UI1SU9ucLluweQ4ozGo5xfoRTpiVtp/hkrgWnZRm0f5gB7J9R3PSbAFjv3UGx34Ps LjpGTzXijNirWiwWtRoWjvHFXSJuxqVzcYCcFobbk4r1ZswtSpg1MKKfDxHwwP7CNPlm jana/b6fHxOvWlk6nMKuFNMRHuKMurdx+I7Xi+sJr3h31VGvtddymo6VrNONx5i1QKrC ncE9ZkMbHkfQ374BhJ5O8yB/kY8OQgZL9q1Pase36dKk7ZCq4/RdCU62mnLHuOjr6SR3 Hj0A== X-Gm-Message-State: AOJu0YxUYxjcfxhCn9MEKaJ/gV5pHtEgC5FCdSWlyys/bJ9P1PlNPLU9 FLJc7hzSH2G8iyo7uOL7rX4hfC48IvaF7lveZzq8XYDM+zzQ1KuxQ94r1hzwDOE6VKEqnWQzEUF Fb/fS X-Gm-Gg: AeBDievHX1zrv2g/uiOUhDFRSWKmq3srRKD9/Ws3yc6e8tGdTMTwZ//hnGSeKEHyjhu QgZhc7A9UYNwqQyZgHa70WHZTo/3MdIEsg5MKYFdVBKwgJvNheSd0gT25n9mIPjuTa6dd3kId0n cgHNtAL+21OMTnXszOOvngjzACf6HjeziYMdIN+PLtz3kWuv28qvypickk/tPcYZmzS0knsf8IW k9brK++yaVEut3O6dQ01yTgJax6iXIMoB0nhznFB/7JgdKHGRh81UZ+kpaPCPiruJWC2g/aN3EB kPgDgOh335Y/wf8nH7zGoOr/AEwfzsYWcgrj4VtNKgeLfBKcLY9ucw1J4RuAalQrEpWF6956xFs 2xys8KJqWSHZrC6GpF1cDglTyh4qiSXaX2gjgsDDFVbufltZzDehjziiwRfHOLSfG8nB209KQ3+ 9p7BtM8P1I+abw4ydCTDo2l1qijNGu8YkuyeIM1xs22jwH/mqGzFAryAcA X-Received: by 2002:a05:6830:210c:b0:7dc:cbe1:119c with SMTP id 46e09a7af769-7e1fd20bacbmr2283253a34.10.1778169932174; Thu, 07 May 2026 09:05:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 10/29] fpu: Export FloatFmt structures Date: Thu, 7 May 2026 11:04:58 -0500 Message-ID: <20260507160518.444797-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32d; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32d.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: 1778170001216158500 Export most of the FloatFmt structures. Skip float16_params_ahp and the floatx80 precisions. Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778169973; cv=none; d=zohomail.com; s=zohoarc; b=G69T8qTDBkhb24neWnBGWt6vkqXwYbYYO3tq5uh0gIjsqAWITDoGAN8N4cqu1Qy2MjI7aySWq8e9sCl1tJwBa05PJROzpRWFMCDLXCB5y3fQyvM5cBczFMOyRtH4ti5BH1HAg1/Chlxyz315wquCM9essP8t9dUdczi75yZn5EQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778169973; h=Content-Type: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=CSirLqg+eoCEVy2NLoXGDlcn1OQG2DK2SCPMSNz0HxE=; b=Ow2hzZwPxR6a1wCtmasa2mM/QyX1fjNFjY4pqhS2zuwwjjPHcbvjI6/PWDIYQg5qDNhQmj1sKn0ZFYzUgZXz+VfxHwmu7P3MNf5dlMUdCdkswiJ4qRo/wMGOSRuPUfxsEUsHdn7iyVku08FRDKrkyeKuAb3oGFJ2TZHNuQ8CIuU= 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 1778169973391833.8593474127131; Thu, 7 May 2026 09:06:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1EP-0004Yn-UZ; Thu, 07 May 2026 12:05: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 1wL1EN-0004XN-R4 for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:43 -0400 Received: from mail-ot1-x330.google.com ([2607:f8b0:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EH-0006mi-Vm for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:43 -0400 Received: by mail-ot1-x330.google.com with SMTP id 46e09a7af769-7d4c12ff3d5so880103a34.2 for ; Thu, 07 May 2026 09:05:35 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169934; x=1778774734; 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=CSirLqg+eoCEVy2NLoXGDlcn1OQG2DK2SCPMSNz0HxE=; b=jHVc5O+osJ7doKJbp421/U6o+xTBtu4XhpgRCe76ANTpMYo9NVa7gtkrVYtH7gT0LQ +hXlGdOObHvnixHrnW8WtziLAkXXjceDB2yBjqK4UtNzf4k1mVBsqcX4G9MUTbzA09bz U+CTHwqU0qqOb4ic/ZhKNMdYokq/v0ElvAoo6UbrD+yjC0dk2Eys1Cqg7iFIl1zbIXAj N37+RMSHlOJGRIfDuYNIAwWoIrqdrX6Zvp1qGAoDFDvrEchc6t8OtUEtlwxWtStLU0b8 B/t5okZqo+WlpRWZNDyLv6eeelx83Pz9VWIAVAHjuA62Tiu/cGDcQtmfeeCTTBWTRE79 nfeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169934; x=1778774734; 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=CSirLqg+eoCEVy2NLoXGDlcn1OQG2DK2SCPMSNz0HxE=; b=GZdROOWJn756tAKldbUpITdF+d/ltikkbfZDpG5rV+LxJqx+yFzwadRsCFmOtGD/jm uNngGC/V0zwU2hxvHgiY7j9/emDXTbAL+/+YTH9ZUPUN7V82jkewnY1ckyPyhNCXEhcE R//la63yyx/51o6Ucec5Ndb5Ix2FNbNu9Pb3+PhBpi7QbPow9e2IvrS38ZAOYxhKPEi0 CfSQu2hQCDEJ72kNl+Ncw/hg8/OM44B9E5xEWUmqynKzDrtWbEbRgpd7Kc88Ncdagl03 Vr+yilX++H3keuk6FIkvMBhGzlKGuMxMnnyV1JFkU7yQ/AqbSmdxmOC0fiFyV8NKH9DF GqEg== X-Gm-Message-State: AOJu0YxwgoSmr8YFiO1TjrOjHCWOQExmzZnutg89JsuQQK99LmXTsAyH Eimf0lbMdzfqWbgnQR/UAKs2h45E0IMRocuVjPzz+YxqJfk7JyFcSPKx3rBE4XaPPuJXZ7iBBww +bM39 X-Gm-Gg: AeBDietR51yBLDd4kyyQeFW3brHk5kIPn/TADwHkn8QhA9k7w4MQkdUzhAqZm6KfWWG uV/ySSYYOm92iqwS8zSIP73sIznAGPD5IMNjyQh2OJ0MIGdGRetUQ7Dq8dvINmhW5YjhXJ7abXG Cfgq/tmFEBx2Uw+/xzIZw6YbTBI8l58enG5z4II6Zfq5jDvAhBpxfbKy4h0n5YhT56oKfTA7sBq Ra81iJ4A5C2WWD2Ds5XBQlErH5ZkNfvGyjLj5P5j53cntGV2RPB1XHYAJ8y4+Hla+VoExGtv6vU lrkSUkSPLViuT8KmiNS50fZR+tiH5LAFw5bZ4bVRddlRhdXeio311E1utrh5rl4XodGDdMps14N cUwlDMpO1n2rJgQ9Gzal0NoAUTiNsWRKg2SHq1VTBLV5wQJW1VV3+6pff6KaMth3wtSIup9XtEy qfVEgcvXD8UUTtbRXiFXV9VfJ6r/qIyLJx9yBjmA3cX2dvjA== X-Received: by 2002:a05:6830:2b1f:b0:7dc:cd0b:58bc with SMTP id 46e09a7af769-7e1def2b2bfmr5291623a34.7.1778169934068; Thu, 07 May 2026 09:05:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 11/29] fpu: Export unpack_canonical and round_pack_canonical routines Date: Thu, 7 May 2026 11:04:59 -0500 Message-ID: <20260507160518.444797-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::330; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x330.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: 1778169975287158500 Export the unpacking and repacking into the various formats. Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778170100; cv=none; d=zohomail.com; s=zohoarc; b=KdW6DDVtXWzpHdydkqN/Az3u/AqZtoNhYtsidnwgyL/0ckvDND6jksDKU8CRlS/5wyd9fR7OLFOFy+gZSNEtbPv8+F0MfjSS4DtbDMHp4NdWUNFv/n5Zbs8Kvn7QiQFTNVvDqGJteGHRbLzrUOXnxJIDKhy6aY3VH/ArUyIUqj0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170100; h=Content-Type: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=a9NIBqC31A4OjSJin8CmB0abmvY9abicKktilbl2T5w=; b=BUTyjLn2HhfyDANAnmgku1AY1j+9R52AOEMH5JutaKMOEe8R0NU2rAcsS7zHUkHx4VMwDVfuQOy9aDgfmCtU4ZSPU7ylWJcrJMl+53Lo0gfGdjxAs+vUuhTfeXklPkhYY18B7fGDcx/yN1++dfisX/zsRijZn5k8HuTkX3Yd75c= 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 177817010047958.07906582525527; Thu, 7 May 2026 09:08:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1EO-0004YK-QW; Thu, 07 May 2026 12:05:44 -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 1wL1EM-0004WM-Al for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:42 -0400 Received: from mail-ot1-x336.google.com ([2607:f8b0:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EH-0006no-QN for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:41 -0400 Received: by mail-ot1-x336.google.com with SMTP id 46e09a7af769-7d55b97f358so731800a34.3 for ; Thu, 07 May 2026 09:05:36 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169936; x=1778774736; 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=a9NIBqC31A4OjSJin8CmB0abmvY9abicKktilbl2T5w=; b=BXwxfak5cMctoaW56VQ1lqovqckuk2WpgoyTFvCFa8C5Hp+/F2QhzdXD0BROHz5qvz rU0HNRzDDHcpNviY4ZHjhJjoBvMB3SoVHA0SXZHB6C3d1Sg96uj6CJAgKfWfdSsGsCu9 WQ5E7/Qd5B9DZyDa4nuL/gvT1mw7C+tqaAtlTCBSX4yt1rZSBekOHMeE6jhBdNawtaM5 EgxvG/WgFvqYHMmy0W8LUHr7aa0RjRuHwQQY8V+4eL4i+vkxw1QA/WoynfD/kcfT8Zl2 voWG6kLxKYNonW0JxKPAe7T3Rnu7fuxqbAlsuXyNsr1OOWptHtRPuyhlZ+rXvZLH0CYC 4Gjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169936; x=1778774736; 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=a9NIBqC31A4OjSJin8CmB0abmvY9abicKktilbl2T5w=; b=fnvwqLgeTvT4wqmAAlKhbEVW0BPbycuWKnEQbLawFYcZIuPsh2C7eCLiewM1nsVh4i SlDbVIu6AJmdItH54C5ef+oTnt1jV2xbYqJZlrysUcWn2pXA8alLHrLuM0LuUa8C5gK4 zzLjLGmlfoFs0iqn4KJfdH8bbqA/1X4TaORcJekt4lZW34Am2pPI13BXzhWeaj7pbm0A DUFlqQaqXoFkFO5A8ENv/YUwL2kNkqxmx5pjVpNHkXIagAth5sGxMMr/0koTua/eaBQy WFl6/JzT3FQjDuGZ4881olVuK5eL8eLOGS2hilTpXpTe1G7KKFXxZAbuZ4ELaKHiE7ZV rCfA== X-Gm-Message-State: AOJu0YzuwrOo0k2NlZGNnyOMOTr9Zgqpx+EZ241Jb1SPCemeM7RxYD7T 2k0+IRDnRRowkodbuX9wWevrst09tcIv80HOJvVp8Rl5JlocbwJgtLz1QoohDjfwYIgxgkkMJx8 HPC3W X-Gm-Gg: AeBDietX79bYIX0gYVcmTf83+E3r0+ww+QxKMzW/ib9deOC1vaGEBgGH86Z+4gi4+5v wn2s5mk44CD7JE4uZcBx2uow2qN+DN7/pvA2Phu5lRZQYiixVGGiSr4BrMX1HC5Tn5Wgake2fIH aaerBQl1n1Y3p5Gs6HSOfD7/Gs6TwSXYZAvem0Uj6ZHEzO221bXccPVjUKRm2EGWRucCNtIhbiH 1blzNahy7St8fDaSkAwids9ueXON8KTo6VsBTxEZgo6O+hVOmPSLeGVbSjgY/rUi68RvVOT1dvB iiLFZSPQ5IE2VbhlR1n0GLfzOLpeATrnItNVwzRKCbWmjMH9PO23vksAFPexLZhPZ1ObvcsNBnp veMLASWAjxguM2dWvLr3TVPRbtQgKtafFE7jw/ic211SsAVtt1tawQxSm6Zb03mW56QzPbTSYeK Nn7TS1YbTHM2msB13bn4APmflhYcrHQRhteVDoljw/oiCqnx3v03PZ1pZ7 X-Received: by 2002:a05:6830:2117:b0:7dc:cb67:cb57 with SMTP id 46e09a7af769-7e1df071227mr5421195a34.16.1778169935341; Thu, 07 May 2026 09:05:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 12/29] fpu: Return struct from parts{64,128}_default_nan Date: Thu, 7 May 2026 11:05:00 -0500 Message-ID: <20260507160518.444797-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::336; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x336.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: 1778170103371154100 Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778170007; cv=none; d=zohomail.com; s=zohoarc; b=UHqd8tvFIowSE8jliysnFK83VLjywXE8I5XZo/ePfWX62CDFpRofdJcPbFDqmk6idsbWZCrF3MeZL1xGKNzZFYAAK3FmPCGdZhVnkNWt28AGMQyxdhChUIKUlQhWjb/VgDiUiwzmsk5MlvaxjM2REeW4ELR+SqwV/KBLo8mrOq8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170007; h=Content-Type: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=ox8Ftrrwl5FOenMz5UHZ2+9nQwQi749aQXGpa+1QyV4=; b=dUF2cLmQ+bJx1/lF2K3TOKmcaFE1SFtYdya8ZdVOYIZF6AYUSbmQ/O5rMuDXFfvUGUQyVOV+xgCUHDXDnZDj3AKew7LZ8dIplm+EYLLUgxNV7lpGvhH0ztb8QJSl4lU+c47AyZM1B/YJ4zoha7DhJpJvcYBx46snM/mJbdxAIr4= 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 1778170007986288.73150705038074; Thu, 7 May 2026 09:06:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1EO-0004Xb-2n; Thu, 07 May 2026 12:05:44 -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 1wL1EL-0004Vt-2G for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:41 -0400 Received: from mail-ot1-x32d.google.com ([2607:f8b0:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EH-0006ok-RL for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:40 -0400 Received: by mail-ot1-x32d.google.com with SMTP id 46e09a7af769-7dbd23bc684so658549a34.2 for ; Thu, 07 May 2026 09:05:37 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169936; x=1778774736; 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=ox8Ftrrwl5FOenMz5UHZ2+9nQwQi749aQXGpa+1QyV4=; b=c8YsnOds8FLWuZ3ivnqXYvcwUMqjUKTeh6MNPt4quDviwSa+x8BUdWS37YQtHgmDOe /+ODcEIbbjHWT93+mn7a8OixevDlBuOgvfKEs/kOVxn6UI/BoNZLt+waEgB1fuSI5Oqf yyuOYdG3RoD1O5+2MLtPbfxudgHJ6OdRzw90iToAzSL7g9oXwSvGTn8Dzpz7TFFPgxP8 DLHQ+BtnVij6bllmkS+VB/VzcaQdqcMZ8xk4Ztu8bu+k1gBd0gGu8VXNGCuzNdfBAc/I OdUtTk0DAQY73B/0KxcCmNUx1lvoJCN+wpmKuld+rxKTShx69uvw+Z1le+dzxfA2juCk zDow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169936; x=1778774736; 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=ox8Ftrrwl5FOenMz5UHZ2+9nQwQi749aQXGpa+1QyV4=; b=pu2ycm99s22SrpNEMhKVYjpwsqz4isVdpwhl8OvBErM5+Ooh8Uvmj8DjyU4e1PPhqn xHw7hQ2rdENVZJ4H6FBZCWZm4f493fkEohe+2inwEB8lR8Y4ab07bL9ze15B5A1yc5ms Cl8LxtITtGTTi84JD9DBBT9/IGagzo3fQzgbHfD/q6uvNytsiN0B2V8aWEaNp//9RFPl nlGIcTq4OfR76IETceKT1h42Z4h3FbM3ysiR78JRgzvk+sopP/vWM1HJivR3jM+2xQjb Zh7kQqnJcjOlH1INK3wk+VfnqO7YT7FTphOZD5ai88NOCykwE87KNDn+3DHD5kIERloX BWnw== X-Gm-Message-State: AOJu0YyI6KFKhgscRmrK/ijf3ne/Jb+wlFe629FsHo32p/f/YxWhSQGw 9s9LwXs8i8W150ltplMbm658g01nB8NCpg3OWI2I1gAHUnfeIX8YZADrlNeXUXXGGy2AKNOSW0e nR4kh X-Gm-Gg: AeBDieswmANDA5MyM90copcEaMse0a7D1XEHBS4tntx+vn5rKPmgrHV07/EUCODyNeE Lu8DNJq9L9ZjrZ21cLyN5l8KaINfNzQ/F4sVpIpx4edyMdbc2I38AwWPii2AFzAs1YGb+FrmgYf ouDzZsjDoc0H8fTjhTmRgaZfTM1cS2aB5KLM26yoIV9EE82NTorQ+c8HvDOXu+oq3kEGXB6tYn8 /LMM33APCVqfKsDhc0ZW0lgIq6/YKJkC72YIqaHU1XWWTy2sARUKkE+2XwkuVdBdS0hcex/Aolw 4ZsIyBGzWz1hbGjgbYYAzihkI+SapxXqB2nj88zv/hbhsKDHd48YVPj3ETv30184iglTwqF9lhO 8vDWz0RtMMzqMYSGk57ZNg4/YSTNCD4kJKxqSO7pIfk/CLho1Ma64qSWOzNqaE0QZ+nZi5n47xX Z+INq6G0EGdwJKdjTBH6CCvF4MbaZE+tdAh+acQK8S0RbO3A== X-Received: by 2002:a05:6830:d85:b0:7e1:cbe3:bb1b with SMTP id 46e09a7af769-7e1dea57df5mr5162140a34.0.1778169936174; Thu, 07 May 2026 09:05:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 13/29] fpu: Return struct from parts{64,128}_silence_nan Date: Thu, 7 May 2026 11:05:01 -0500 Message-ID: <20260507160518.444797-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32d; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32d.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: 1778170009172158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778170210; cv=none; d=zohomail.com; s=zohoarc; b=Q0L6qkwtkaUU251Eb1EX1APlzlu3cVNDijxqmWMv3UsWHALAgNmNqM4qgsItT0ocsZHDtQ9r7BI+avUkCZFaW6TdKdyQ/QtKoCXvkqGP97c0IZKjFhFbLlqYMDacvX9fzNAwLruduGGt00aJIKNYt2qWlPVJGldel8J9b8xdcWk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170210; h=Content-Type: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=+x+yoMED4Jyx4x+O3iz43StrYiJ12dpPepYjofWmnQo=; b=ZEsi/QJ1ZUdmjjyL/nbkFaTayP8bE5saJhIpV5T4iIpX/FWva4uxJvhQD7cSblxrk1mzDUARH2Kvx3gBiV9AYpfiVbBiQw+GT2ELJ24HHekO39ruAsgYb0WyFajcjvD+IYTSF520P1cMFeOub8uStszcY8MNV4VITfkKyn7hfEk= 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 1778170210043345.3160103183392; Thu, 7 May 2026 09:10:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1EQ-0004ZR-Jl; Thu, 07 May 2026 12:05: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 1wL1EO-0004YL-Oa for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:44 -0400 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EI-0006qE-Lh for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:44 -0400 Received: by mail-ot1-x334.google.com with SMTP id 46e09a7af769-7dccb8644c4so567263a34.0 for ; Thu, 07 May 2026 09:05:38 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169937; x=1778774737; 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=+x+yoMED4Jyx4x+O3iz43StrYiJ12dpPepYjofWmnQo=; b=UHFK7jrB7HLsU6aZWD47BFJc4XmUnnIPVn/Bcij6f6jmeWjptIQFpEMDZMlYvvbG4P mWem2ZSG0dJ4GOoq+wTbZzxCJIAo5AeJO0jFrcSU+6x1pRwYDxLww9sBfSmV96lZQwRV i2ab/5L3mdn6b/SZjVIQH+hWqnaWZ1t2VanELOaMsbtAIQ5dDL07E5VZWs4mv8wDLOuW 0ytrXuKL2UpmWY068l0UH5NKfFDNsk8ZUp6ieddVe8Sz0ebA6jPMZ3dlASmnj9A3AxgY Y3drQGh4o6Bl7B3K7P5gTjoOs3PBJJn5rmycVU/aEWXnTbndyPAmAy6fLojNpsj9CdEi QLcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169937; x=1778774737; 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=+x+yoMED4Jyx4x+O3iz43StrYiJ12dpPepYjofWmnQo=; b=L6noZWaWdSounebcCK2I1ohujsFxInB9rUqMzlQdxiTWWb7ohiP84bMIMFYa5cWegu priJhvinHd2QLTe4CLfYMNSpIV8IuZ7ngOB4gLnySj8FVF6qusaTtNFDLgK308KV3CN/ 4kIsDqZoupadUcobjqVy/yKmg5+wY0NUfvkQ8ps+yRPltVzpzJNqLbq64yoD38bZl00p hSwM3Jyo5XMC8TdntzBmGRyaqW7I0lVQzJuoLLEikFOkMWxt2Q6nY1oLRxYjg+9kBN2/ ybUM6lqSwR3aK4N3Fomq4Mou0s81gU7CFQNIL8RZQKIYGHW855xXIKWXVX9oVbaxWqeH CkLw== X-Gm-Message-State: AOJu0Yx7bOUhujr3w6lVzNa7vyv7XaFhwLurbyr1XEd9j5/rrh4s3KnL fjY+h0ar3lW1Qn1NONHI6ACfCwTxWYbiq2kI+jUCN9YTpqcy0+Q8SdcF4K8SfxrO9P774FDeeZ2 5DQFH X-Gm-Gg: AeBDievZri6pxBWy4Nku4oDkbxvIVa3zzHnTek9kx1rxAZwOFiSOTNEXj35SDFudLRG IrVc5KTd2whVVUSVZBrwR/KDJ3Rj0ZNZ1BUI7JZ7DPuua56hJY7rUY+xwA0ZrUPQMVkQHgchtf6 MvAK9SFoGCVE13Cd5YQLUJuGICKI8YdxNYQSsZJhGfqPsnoxe9114W1ryel8Zcoiyu+Wjt7IFs+ U2Bo+pGXubwasUUlawLYNbABWEOI8/VtYvad10NRfyO+riIf1bIx2JafMRl9LgSCCMRq7q2Ktuq htCoGEIkWS0/jBBqaYkgwJheSGc99fcUtGBsa+bijjohNc2hhkKwlhGM5nzchoIJppEOrslrahn hraxVXOi0JXS6LXlbqeIJ7qhwV5npJj6zUelP6js1hzoBcfFjT27azYSyOM/K4a6UlCh0jIljZ8 drsZTdDoijd79ZFVZf8+jkbpFUiL7ltrsvzayBw4dvl/S/MQ== X-Received: by 2002:a05:6830:6734:b0:7d7:fb8c:3c29 with SMTP id 46e09a7af769-7e1df0f9574mr5332156a34.14.1778169937139; Thu, 07 May 2026 09:05:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 14/29] fpu: Return struct from parts{64,128}_return_nan Date: Thu, 7 May 2026 11:05:02 -0500 Message-ID: <20260507160518.444797-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::334; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x334.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: 1778170210657158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778169974; cv=none; d=zohomail.com; s=zohoarc; b=lbkSdOM0AtDORzYMGm9C4/nkzNqMDL3ogtSCOEmqqBrJddPYiMX+6AYIIP3DpNLQ9KyvcvCvKz+vkLGzI+9nmzQ1GBPJAJ/nJmooXNy6t/EI2mYAT++R3GXox+lt41pvYSssrP+zgTTiVnwGfR21K92EWSdnQcgoxFV2Sxuq7oA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778169974; h=Content-Type: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=e3qnQOdZ0UPdC22hHI8i/828Xzt2oEbdua+qwD0EsnY=; b=WmUxHAxOXHvzvvfe6IKu1x/QGF/SYqtUix/dqNLvOgT8NFhYFYDuJDYxErw747XFuy0vwZv7kjIkMsB1G+EG5XZpsjYYcvcATQdomsG3jTDsiGkYp9Y1TN7lSt7K6JL6fbSbK2jdI3f4rWgCaNqtg6q7cNJ0SC8UI75UIPZqur4= 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 1778169974237858.3914790956012; Thu, 7 May 2026 09:06:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1ER-0004aL-UB; Thu, 07 May 2026 12:05:47 -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 1wL1EP-0004YT-38 for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:45 -0400 Received: from mail-ot1-x32f.google.com ([2607:f8b0:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EJ-0006s9-Ky for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:44 -0400 Received: by mail-ot1-x32f.google.com with SMTP id 46e09a7af769-7dcdaf06498so777696a34.2 for ; Thu, 07 May 2026 09:05:39 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169938; x=1778774738; 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=e3qnQOdZ0UPdC22hHI8i/828Xzt2oEbdua+qwD0EsnY=; b=YwY3aXLWgcKaVgbbdkNhAzJgLBQW4gRvfRBg5I19lNabZJ9/yjIwOxNTj4fN82b9R8 7B30/gBbzB7mFourQth2qhWL+P/5X2RsD64q+UdfD1L+Azj5eJo7Aj5tFdRvM7wzZgg6 UHTjNSInEfIOCpxigMaujlQAuL2yyn9hs3LHngKZO0ONm0Xs8cBF1QrmYmjJy+FK0ndG +7z1j/Jj5lvvRD5ddbeoqU1SFtwUEmA4zOwbU4ASkHTfs67hx4hmQFlKVly+j2CsxQyY Lniw+o55tDIBNhepoihtNQ3c3o083tvzcjbHiHQxhBkELFYyzShSYPp4z4QL2bPSoxn1 JSFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169938; x=1778774738; 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=e3qnQOdZ0UPdC22hHI8i/828Xzt2oEbdua+qwD0EsnY=; b=cI9MDhDmgy+Gyf3H0tn5LoYJr8QtGmPcJeREzzKuT8E1ufFjbWyEMPIt4q5yi2b0j7 W59xU9IsTJ83y0sutSO1PE/4gjNhGsvW6leDfprR1ZbjnlizOjXbo+obsE9Vdmf9imR6 EsaKoP5a/ZpzIBKO1iWK9xjx32O1V5ueZykxZfbDsDvFDYepsbTF/SoeG+Y18zk7C2mO y7xA0scBy8tx5mb+1ofzCVZVRNs+q1p8FICLGKLhjHRG0iGu40A5mUDiyDoQO3ydCbP4 qoSAE3RG5W7rDnQGEqHF/U+FwqrS88p1SXOZXliY/0GW1wxKvZsGX/gAyLTBPczsbbLe g9qQ== X-Gm-Message-State: AOJu0YwDw1KAXQCPCK+46BUyuPicky/QJi75l1lwMcMklWPTdqUNl9c7 Zf1DkzmyZrBq1N4qTgAnxTCeeDiO17PUoofj9/K5yrrUxdAM0V4b4M+xyXz6vYajTObL3JUStEC 9GYU/ X-Gm-Gg: AeBDieuaJ0i1RTKow06eq2WLriZrZN1FxskeWIS3yZiJGI1ZF1gHRh/JGbRYsbPegFi E2UwLy7bFn4j1YUqe1je5qEZqao5vjMLCTaM7VWa9qLVnaMoWigAtqKOyvcjGFBSSLrIG/xximy j3JfPjACSNNoUyQ6xmzy7V7qa689/5CJBV/rjDjTHo8ZV91khr0p5JVL4LeLrz0ET1U9wp2uu44 gM3lls/5Gqy2/UFvp8NeURh8OecTOvh5wkKGxjxrfz0DEgpfTXwWzrppYrG5slZRv4HNvPcRKPN HR/0MaHlcY62lw2nH2l1Os1XbC/KI8C9v2Ca/q7KXUctVpj3tSQ2uQT5nAggGrCVI8tCt7Qejo4 IZzrlU1gILi8h7pB00wIpKqnM3MoSDLkfWcm5zJIkGGrCDxiVY7TNz1plicRuxRmBFQoczaaM9G U+lRPLShbnnsRjKU2eLIcCmG8zUbPgWhAshLDuLWGmYNPV1dPMxPfx4Gwt X-Received: by 2002:a05:6830:3785:b0:7de:a330:ecb8 with SMTP id 46e09a7af769-7e1defe86f3mr5129448a34.16.1778169938335; Thu, 07 May 2026 09:05:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 15/29] fpu: Sink exp_bias adjustment in float64r32_pack_raw Date: Thu, 7 May 2026 11:05:03 -0500 Message-ID: <20260507160518.444797-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32f; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32f.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: 1778169975298158500 Share the float32->float64 bias adjustment from both the normal and denormal paths. Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778170302; cv=none; d=zohomail.com; s=zohoarc; b=doheRk17hslw/ns6cGlI128RChy1WY4D2gYf6D0xlyPlIpu1v8XFIG0j3T2tcIpDauW2AZw3mXfuj2+MXtNMXgbeijvwfc570trnQDsOLa+nDjqYyka+EyFTBWpM5b/nKG3DamHjUx02il5VjiWe05hCGUQftIilVWsGlZocH/c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170302; h=Content-Type: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=cITeZbJEtyl+09mVpYKhhR7Pw3A+UGIkoZnUsO+bREc=; b=RgDrVUYG5q9HVMZ8A/ru+T8Hnl0RcWS1V6d7v8QhHVcxfYgIbOqMwwcL6mBxgGrtTY7BYt+hxP1jJ7WvJE5mTbKJKu1kN0Ix30DhfSKOIMSICq/zRfdax5MHmrzytE3lvgFM06RG9vLHC7J2K6ZXe6yu89/bvp4DQWHIB3uw6Ig= 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 1778170302844603.7901538009562; Thu, 7 May 2026 09:11:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1ET-0004ax-8C; Thu, 07 May 2026 12:05: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 1wL1EP-0004Yd-Ll for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:45 -0400 Received: from mail-ot1-x336.google.com ([2607:f8b0:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EL-0006tw-1e for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:45 -0400 Received: by mail-ot1-x336.google.com with SMTP id 46e09a7af769-7dca4debedaso1068958a34.2 for ; Thu, 07 May 2026 09:05:40 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169940; x=1778774740; 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=cITeZbJEtyl+09mVpYKhhR7Pw3A+UGIkoZnUsO+bREc=; b=Ra2zb2ewrzif+haxLJQWHfswVq2cxYgsgRYG5YYTPy3Q8mSJu0vftflNEnYGeNJ9Ti lVPSnr1Q9o/PzBc8xCoYmZeQiZCYbSnXoJFXk6wRalHhtK51k5GKhdsQxsq00PqJNTvJ a2AcRgq1twmrWL+KLcH46JnjstaU+lIlqpfGkIe3+d6XTCpddZcXztrm94W/JAuyXPuC jsdzzfAbovIvWMq+BnBSsOCV3NQfHzs3972KIlcy+yoPHT2D/bH56O6F9YVs/YorQO6w RsdyRlkU8rPBhEd84OhjQ/ZfAaN+UhXyKxVlwaNK/hBxaB3VuJ3hkYaqKjeVwbpbh6ZJ WOPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169940; x=1778774740; 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=cITeZbJEtyl+09mVpYKhhR7Pw3A+UGIkoZnUsO+bREc=; b=kegSO36e7DMsSzp038FWLTFXI7kPZZB11KyeYiwMGAhKj+fsP3U0WLtzxjBEVtNeJt Ss8s5+Ro9gGSlVk2zrmq2bj/tKibW69rCYPAvTBkgGhPT0iE5XSz+lyhwYbmKmRB9m95 5Tl1QqMRjbuLuhptXAGYjIgKXSCb1m8lEjvxkAQ38XiVcZgBbd/n0yG1km1cuZDJMJFC 3EZE+Ohcss2xJ3IEFZEFUC0TzbJKl6XiCBf/3jAlx6mM06BKGfjNnKr9QThTJ5ovTbSX VX1GcvCDBTnLlKulJ7O+e8bCE61pnUxj89IDqFDxkno7A4IyOQWfr8CP0ZD9MVOV3YfA m0Jg== X-Gm-Message-State: AOJu0YxfAvEnMotWBxEIA9LUsto6QuS4fLh9DksPlZoCAXBsrjwpq9dV 93GwjN30Wws5/8YzTWEwuMr5VCQ6JINd4ZoxEMTbPUaEIasqBeBmYVcpo+uU5UNI1c23ukuz4LY 3tN9K X-Gm-Gg: AeBDiev8dnip9fPXwFmm/AaxcHHq/g829ieWQShzPF820KVhIp18NKFCCdfgsFK/EJH R1KZIap3SGedH+1vCHwgya7s1hUDWxRx67HdMfEWbzheT2A8uMDskSp06Qp97hVTZtpgJKyc2RT yGEWsarzwWrp+/Z0BsWb5YZcQS7yAt5VJmY5Mxmkj32H47jqy+jxDROY+1NGNzAuu226j0TfZyB bDmQ7BvV60oaZScKYWBDTXvf4yXNdP9cgoGEUfpN/6CE7z6U6CM7uuahhsY7qta/yJ2lHhwjdO7 miM9//VJDb9D9fy/L14K7pPraGEyQ4H4hLKIR3yCAHJfm5E01aguEyBtr1s6OVrXyjJpCqLe6N+ 7KiojeoNRZpYyRSJqrGhY07onj7KCRK5m1Dqr0m+dpMZgeJ7eGYldP2DlMz3Lw4V77Tu4ncTEgT Qj/IuKdl6dR+1JJ9MsHAC90Ui4EXQIO4PXbcyHq2I2a7M5lQ== X-Received: by 2002:a05:6830:410d:b0:7d7:f5d4:ef5b with SMTP id 46e09a7af769-7e1def15227mr5303320a34.7.1778169939678; Thu, 07 May 2026 09:05:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 16/29] fpu: Return struct from parts{64,128}_pick_nan Date: Thu, 7 May 2026 11:05:04 -0500 Message-ID: <20260507160518.444797-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::336; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x336.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: 1778170303135158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 Sat May 30 18:38:10 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=1778170271; cv=none; d=zohomail.com; s=zohoarc; b=mNimyXHs9CsPBv0loKUniRcNuF8KFV/LANZGU/pjL4n5NwbY756K5DK77UmoLoxr/CDB5pJcowN3RamSp9B4kqwnxYN2l3SvEMOHknPWSDefNnxpI0DolY0Yzn9OP2OcyniDriNxhoSJKf81Z15/Vch2GVSYPEu+NsTEe5H+CTQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170271; h=Content-Type: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=o48wrIEYAbabDCExut6JMD01MN3k6KJ5HxRrPE5FtEY=; b=cIYoYeuP3YR8jYvXEGzTw+5H2/v0hYFjKQHkG3M2eS1Te/qmhhjV65GX2XWatuPz85yq2KSohClnIX8vk3tQl7XiUBWTgnbWzKDk42HkEOWrNHiVYX2NBEdfJ+JUzfJov+kz1QdYy9Ry0j4/wU4VV19BVg+s/mJo9KrFA7gDUGs= 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 177817027135533.160055500474186; Thu, 7 May 2026 09:11:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1Ec-0004f3-Kx; Thu, 07 May 2026 12:05: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 1wL1EQ-0004ZY-Ly for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:46 -0400 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EM-0006v9-Mg for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:46 -0400 Received: by mail-ot1-x335.google.com with SMTP id 46e09a7af769-7dcd17e19b6so657846a34.1 for ; Thu, 07 May 2026 09:05:41 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169941; x=1778774741; 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=o48wrIEYAbabDCExut6JMD01MN3k6KJ5HxRrPE5FtEY=; b=nBtF8WyoyVUBA+rzDNUWJhlR7zVuq8j/gHFT+F5qIir78uuSZPZYu6wYGyB1BZGnRh jUpMbJN4P8OOlOdcXYscahBob3zq7sKjz7TatFS06hsBf4iQGemNTylhfqHPcq84m6N+ 9uZHC0ZhEPxtJb4WbOOrrcNRhlKG1hYa40W9xP8w5eSmdd1iTAT2I+OejNR3CH+loj1y j+1ZkZhXoYs14v9EN2UEgKoDocjjIWcNe4SBiSy4hw/6Fgrvby8X3/2qHqkgl6lfYzw6 /YJ8USGRoBYJ+xbC1zCkrh16f5382761S38CdCdEOf/Aii0s9HK1cxaE4qytIqJDDDky D8Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169941; x=1778774741; 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=o48wrIEYAbabDCExut6JMD01MN3k6KJ5HxRrPE5FtEY=; b=GIFDIQjreg6FpOLudvM/qg7C6zSBGtc2Y67dRRrkkdgXtZbbtDiuqpeg+uy7kQKdiF uoBicvtX6sPww4e6/cLvHtMBX1+dLr7JaydaUJUK8r8xE79P2SsQYa4e5NDkIWs37zMC r6HIBmaikkdXdRgdPHPib6pLI0GvpImt40q4Ccx3JS8lnh4MrgkQiDlbDeVbb1Gavlui MeB130bEu2MjTG1fR1w86oUUpQxwK3rK5L611joaGITT6T1ChzPeAP/yoz5OVW/uIsGc 5/U8/St90dBwP70azHITZR8noLPUMSqlPqyxZNELz5HaZNCGhAGuQ205xxBg16Ycj0cQ ko5Q== X-Gm-Message-State: AOJu0Yzr7AsOxzTQpFmSWGr5W22tL6k9pI1+X0VKEZjkclHSjs34KliW +qTNmgGOgs+mRlNNxEcwqZt7yxLhhFj9QtxuY2zAwsNrh75RYxrgKKuP0QJlLbE4Pyq6TwPfN9u u93xH X-Gm-Gg: AeBDiev05QhhzGEx7B6pxEuB2OS2g9g4ZecTBniM7SUgkzW6dHylTxvXQPTNPyPpVvN J3FPzttYzId0Jibxomk/JC5xTHWyiMZjpudXd4o93vx0TDZEqNc6id/Q0d+KCy1a/yvmsHeaU8G gT4FNdiCfTIOAvoWrQ3M3pTvXZglYugmQdOHx/F/+ZUhlQr8DrlCu7gyosoRmdxGXUX0ZmON++J VAgM5zyuQXU87axILjPpmq50eUw9DVKoVt1LmX3RX4ydtVoiH+NdEDD7g+bx/nFD7Uv4WY96Gzt XvVUGlEs4qzb91R3WmT8bg0QiUxYfuGOYb1N0VlNw8aqSpEspyWH/dsVkyjgN5CH1it++LlB/wQ jgY82xkbCeY+fLAG7iNNd5Gcbc0L7tpDn35+hqY/dK2VxKp8tnTzmFvevFHaTWu3cZ7VcXwc0xF 4sUhNsCNc8ThN244wlkyfqRAyqHt2QPts3066HGSrisQgR/crLu3muEs8WlP60Mq+0Nxg= X-Received: by 2002:a05:6830:6734:b0:7dc:dd58:50c7 with SMTP id 46e09a7af769-7e1df0c4d92mr5315980a34.18.1778169940780; Thu, 07 May 2026 09:05:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 17/29] fpu: Return struct from parts{64,128}_div Date: Thu, 7 May 2026 11:05:05 -0500 Message-ID: <20260507160518.444797-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::335; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x335.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: 1778170272893158500 At the same time, export. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 9 +++++++ fpu/softfloat.c | 34 +++++++++++++------------- fpu/softfloat-parts.c.inc | 45 ++++++++++++++++------------------- 3 files changed, 46 insertions(+), 42 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index f631c38c79..44e0cb7d05 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -163,4 +163,13 @@ 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 +/* + * Operations + */ + +FloatParts64 parts64_div(const FloatParts64 *a, const FloatParts64 *b, + float_status *s); +FloatParts128 parts128_div(const FloatParts128 *a, const FloatParts128 *b, + float_status *s); + #endif 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..1634160728 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) +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 Sat May 30 18:38:10 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=1778170316; cv=none; d=zohomail.com; s=zohoarc; b=ZuJQpgp/4dwaKOMQkiOgJNn8RC/iP8Wdbe6mkY1zL2sj2NPCxzdPGeXKimDwGj+IMUrbJmM4O/LA9U91k4GPmYmNjK6WX9xju0Sm/fz2C+ssSDnvVbiDD5Ndr7jEm3do2RIE3QXP6EmQ9QD6uMix7uVxHbOKE24DpFe6leWmI5M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170316; h=Content-Type: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=6D7Re3RFomXaiJ9AO7bJXSdtzyhn88IIHMuf5Pj0e38=; b=anzNpnVFxcs2qhLLFeQHA9BID28QbJEiPATEyKqYevQ0sxjoiSI2ivio4lRxtY9W+sUBybw555JsRJ+62m8XnQHI8YacgaiqsoZpiV5z5BhlvTv5NCY2JOXqhhVmQUA2rBpgpTH2Ox35IxXFDhXE20lLiV/VxA6SkdNPw4Di/uY= 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 1778170316582907.9828889985141; Thu, 7 May 2026 09:11:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1ET-0004b3-9T; Thu, 07 May 2026 12:05: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 1wL1EQ-0004ZU-JO for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:46 -0400 Received: from mail-ot1-x32a.google.com ([2607:f8b0:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EN-0006wB-4d for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:46 -0400 Received: by mail-ot1-x32a.google.com with SMTP id 46e09a7af769-7dcd17e19b6so657860a34.1 for ; Thu, 07 May 2026 09:05:42 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169942; x=1778774742; 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=6D7Re3RFomXaiJ9AO7bJXSdtzyhn88IIHMuf5Pj0e38=; b=xqf4Qmky/N446SUfJL6fG59p4prPSS8xPBnwj9K2wnh7bjSxBJiBG1+z6FPqD1fBsz 3U9p7cM0xhC/YlO/9LOamL6I3hns7+oEaXZTdiMYM0+kTKTPT4nyMMYExDoylAx8kfHx EJKuoX/EN6kRgWV+xG4Ilmfasx3XF/w9+439ENrj2E+msDxpBso5OkqzN6OVDmdKybb7 FN/XHH4348V3blmj4ARx2DQqN0zlOPlWt0uvrkudF3+1NljCfdfLfVw6JWAlde+At69z ZuXB4C7SQVTELT4lvRfLDFiz1h8g+F13RyiCLRxrvtW8Rrdjg1+7ObUEm2uUJ1I8Vd9w ipGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169942; x=1778774742; 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=6D7Re3RFomXaiJ9AO7bJXSdtzyhn88IIHMuf5Pj0e38=; b=eFf/YB+YPQCePI3m81Y/nwNX/6g3PvnG5tDi8s6VMyTkujk9HbJ8d2KQuxjtUiEMMC WiP6I53KP4cQ2HVVbhHHu7NfDRFQxxiznS1mfJ9oeiys1x0nZBC+UY6zkTQaJLD/bksj gH2kw2wLUOkuPJDXyJUAqNx8u2/AZD3Fb5FDuCrOphFhotLYN3zsV8VZEoEAewMXJzvg SxAhbwaUg704bf9nfOQjlNl9IxYFFYXbqsbYUvNKoRmRvkO1RS/C6n6NJ38OcHaTuexg lz+oRl4U+QcmKK+dR1/dhV2oAonNu3UwCgfn6uj1J+U0A8oN//H8HhiAlu3P0S4E0RLD NqBA== X-Gm-Message-State: AOJu0YztGuRZHaCsj2+L8U1v6l6gvE21om1Y5bRQp5rz/3YTnKctSJOH kKzjfJAdqUoNu0iNlJGAhSpGEtYhqrHNdwpSDcYWEPEh9tpyaudEzQabSgDC/CqdY9I/h/NxLQX Tn4X9 X-Gm-Gg: AeBDietPEon8hr6qbSCDV63vlhIqVmnnWwy43vyGskLHBvQoaWWdbFIFRU6lLmEGRh/ dVtmMQ8dqC4PmbMrvn27bdNeY3GdvtT93XyxbuNmQGW3lv47Tr2u0xxr1s/nS5GZickH89T+rq/ e6ICNvBF0NWEIpgVRrRRJ0Pt8Jeoxy6QFFfGOwGO5DtDzvf1OKP9H3HJTBJe1yXNv4jaSvNyOev os0M+Um9ATNYEee2Ilh3Xtg8yW2ehqoFnZqTut2dh2/844EXbTOSs8EOlpZfvy3X0l4F2xrqyma VRG194qFX4gU2i6yOeQRmzE/3AaIzIdArlyDPbHCLHxs4uNNZDYFxReXOG3sCRAHhRtFYM7553k LNZ1v9njtnXmhGi4+FBZtsvqzJ0muhrIqgA2CFY6q6GYPtsJsBNKEZxFr4tiCqpBeH6b6KOvqF4 hIXUsznIKUc/hSmDHpq+gq6weYAdrrkk+FDca1HkKcWYQKBQ== X-Received: by 2002:a05:6830:3983:b0:7dd:e032:3cdf with SMTP id 46e09a7af769-7e1df1912bemr5182650a34.19.1778169941691; Thu, 07 May 2026 09:05:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 18/29] fpu: Return struct from parts{64,128}_round_to_int Date: Thu, 7 May 2026 11:05:06 -0500 Message-ID: <20260507160518.444797-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32a; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32a.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: 1778170318989154100 At the same time, export. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 9 +++++++++ fpu/softfloat.c | 19 ++++++++++++------- fpu/softfloat-parts.c.inc | 17 ++++++++++------- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index 44e0cb7d05..1329bc4d2f 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -172,4 +172,13 @@ FloatParts64 parts64_div(const FloatParts64 *a, const = FloatParts64 *b, FloatParts128 parts128_div(const FloatParts128 *a, const FloatParts128 *b, float_status *s); =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.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 1634160728..1cd0df4159 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, +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 Sat May 30 18:38:10 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=1778170317; cv=none; d=zohomail.com; s=zohoarc; b=c6xQNjKdsSX/rpmWSyexE8TS9u7xM0zHsuw2Kil8AAnV657NF9gnMBs6w4XGgxXTNWse/UZW6ZzsA+dqRg50AWUNwDY6aXX8na4Aok6yMK/J+5v1l/Lmo/rnbUh4FJqQg00zaz8e0Pka88DQ+EOqskfNsG33geHdWaDR6SFSIGg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170317; h=Content-Type: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=o9tARAUzHMROq9GakhsM2fWYigc3Ck01ZMugAdtTR4E=; b=cK6yUi7vZe/AiCBzVdr81W+I2ptxOCDRcA5JLNkkSXyQ46JR8PFriyq9kjSWQH25m6hyEcfWI06ruZ+mOE5AAzjkNjKo7x+49WWGm4ayDrvszE1j2+xgr5ON9pFSxKkvWQ8IFMxFtO61f/ETjkJ3jBjQljZeBrC/4iDtuW5xbxE= 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 1778170317019446.0723693608164; Thu, 7 May 2026 09:11:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1ET-0004bj-Sf; Thu, 07 May 2026 12:05: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 1wL1EQ-0004ZP-GN for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:46 -0400 Received: from mail-ot1-x330.google.com ([2607:f8b0:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EO-0006wm-2W for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:46 -0400 Received: by mail-ot1-x330.google.com with SMTP id 46e09a7af769-7d4be94eeacso1093747a34.2 for ; Thu, 07 May 2026 09:05:43 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169943; x=1778774743; 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=o9tARAUzHMROq9GakhsM2fWYigc3Ck01ZMugAdtTR4E=; b=g9xia8lT9YqkhKJ+MWUh/x/Sb/eq67mNE537V3HQIUBjEVZt75Oz9DxW3vKmcXdvZZ LSNRRB85COX/dkdQdXwFr5j9KleXdMLObucMYVlmHldP4AnVas+XD9w64YZYEaWW2ZmU BlvHTK7rnwqdacU+qbe/g9ozY4+wDO4MavOuVB7I3s9/SCiMh192JxRf3LmASBC1DVX6 iGYLUoi2wIpeGHhjO/t15QMViPZn9K3gX16X53RQ2/ZGVUQqAAmEvSnkWou3QQx4wzjS Qck0tWNaALZzKag352s+VQ8Rk8aXEQH01PQEypaIxNILrdlf/oPNXumlyCwewSkI28xP KxWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169943; x=1778774743; 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=o9tARAUzHMROq9GakhsM2fWYigc3Ck01ZMugAdtTR4E=; b=YaUdl2MoRmxApEZU/TPiV7B+vZWjgSVtfYbluO+PUIPuZTlY03+aW8wsxJgxwppZqk 4aGcJn6q9aMrpSV95SuYwwFMbOpzbUKggXfsiI0uC7YuZN/jIBAwr+jgt5SUhKPKtUBz NOcVvIt313y5VqjCBc/4En69zjkMyaczOTBOFy5IX6+YrQawOw34beE013r0/rKNmscP N1gnG/wmR8IFWncEFDzwXPpF9ABB8luBe7Vjwj/h1yr9ZlR0wYOvukN7RtmE1fdwdqUw 1/t6g29DNZVkiYX4gNVeuWJACXQqaQVvQVBrqyq3gYekZU1LejJc63PMP39295cHWQnN AVWQ== X-Gm-Message-State: AOJu0YyIZetngxZ2aaLZ0VpIZmOFo4sn5ofgnETSxledehNzymw71g3P 71qNc9+BF5ew+wzg9xVaGVhrrE0s5C6dpdRoTCSApdQsO0H0AmMhmJKlzRYUYv69TJFCsthM2ZI CgLk6 X-Gm-Gg: AeBDieukIjgMny3Qz/8xjYJT944vcutJS7UqvprYwh1AxRZK9OMT1RCXGxZctxllXKi WKsmJkZIqtoZDbhymbWAYrfBLeqtJizs8RTTuEISMMLw4Axl4mxAVJ7NX/qcH8RnYkxEd9dSSak GZOID/gdzuIJuDOyUfFKe9UsVnEUK9lZdiB8kpL41CxjTPWuRlKGMspxYmC3CEWtOmEDICksCqK UKeW6c54bpHYXkvgtivnuG1vp3Kc0SrK5Jqvm4yzegcMxVe/V8pEDlTh48JMm08BI1YcNKOQ1wd WvjdSR4pGxC0HY0PW8LcAH52LG6Bf6gPBDfv38VPSdmeidFP4g5ryS/eiqImiVNrevEB4KxhIm+ Jc9e0SLKrzH+NF/fpm7VhwIFqvXGoIbGLMZM12g4jXreo+k32Hs1907qa0WVrYKl4/RRzHVJT35 zRecyh//kNZEa3nGZK1knBoBB24nkOCb4W0YvAhI1dzH8y/w== X-Received: by 2002:a05:6830:2785:b0:7d7:d510:4bf9 with SMTP id 46e09a7af769-7e1def2801emr5449638a34.12.1778169942579; Thu, 07 May 2026 09:05:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 19/29] fpu: Export default_nan, pick_nan, return_nan routines Date: Thu, 7 May 2026 11:05:07 -0500 Message-ID: <20260507160518.444797-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::330; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x330.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: 1778170317226158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 15 +++++++++++++++ fpu/softfloat-parts.c.inc | 6 +++--- fpu/softfloat-specialize.c.inc | 4 ++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index 1329bc4d2f..8c3a94bbbc 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -163,6 +163,21 @@ 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 *); + +FloatParts64 parts64_return_nan(const FloatParts64 *a, float_status *s); +FloatParts128 parts128_return_nan(const FloatParts128 *a, float_status *s); + /* * Operations */ diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 1cd0df4159..7d4b40022b 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -15,7 +15,7 @@ * indicated otherwise. */ =20 -static FloatPartsN partsN(return_nan)(const FloatPartsN *a, float_status *= s) +FloatPartsN partsN(return_nan)(const FloatPartsN *a, float_status *s) { switch (a->cls) { case float_class_snan: @@ -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 Sat May 30 18:38:10 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=1778170317; cv=none; d=zohomail.com; s=zohoarc; b=I+mDr6N8iUVAaQGU2MR7lBUzYcdhiaMy1UoePSq/CQ04x1O/vc68D/saUseu9m1IzZyYOeXg7i5TuyuxKQ+GRsyHfOG2B83EgESP1KrP0ZSGqA9acg8uTi7P8U02GjYFuv/OKdodOSlgq5FxAZ1TDmohOzdFYh5mdUaGLGHuBPc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170317; h=Content-Type: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=ackMbwyAPdCjYy8OyXqx3EFnvvl4/Re4rU80RDGR280=; b=mFjl21+dHuQmUGai6zQluiHLwrXK6ysI5XsvRdlZ3ZZlor2XtsfzXEP1TMgdlvB6XO5ZzOU6pr0RKKexAfy2j/u1z9RIp3SQ3c4ijZIOmU85ukg/06xBhLwtgrqR8B65U1MEkX6PoJBRrlD8pUt+F5Fa6lwukAbsKeMg2i+Xadk= 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 1778170317962340.1951148967595; Thu, 7 May 2026 09:11:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1ET-0004at-59; Thu, 07 May 2026 12:05: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 1wL1ER-0004a4-1S for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:47 -0400 Received: from mail-ot1-x32b.google.com ([2607:f8b0:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EP-0006xG-32 for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:46 -0400 Received: by mail-ot1-x32b.google.com with SMTP id 46e09a7af769-7dd73b7c757so588410a34.0 for ; Thu, 07 May 2026 09:05:44 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169944; x=1778774744; 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=ackMbwyAPdCjYy8OyXqx3EFnvvl4/Re4rU80RDGR280=; b=Qbh3v+EbGoVJE35SP87zPmfR06rgqnnK+7c6RK/u9rIUtcrZK4FRIVWUJJCHozJu+6 y+gvogT4g+MSu5BoWc3VrQ/pT1dhMj/Oab56dm6wW/VE3W6DHu9Z/5C6cPBn5dM7XPKX H+Jbgzrg1kq0MgtzqQm07+tSgjpHARjx0qrKBoyXW2XwmzYQWfpwSOZEqN+OiirjBXtN D4UXwMWwd488b2LB3Ushvdz5EjECk6ndoVfPo5gFbthejg18W7NXfmUloBJotFJl0A1H 9tyBWNbnx7Ymklvpvq7bnYN8qTS8FzkQLtNJj1yYsqXI8CKTUv2MXTmjvKZ+Av/0/rq8 Hrsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169944; x=1778774744; 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=ackMbwyAPdCjYy8OyXqx3EFnvvl4/Re4rU80RDGR280=; b=cyrPiOSPrMA6pckm0y+vieqTzQ7YLLoFzrBf+TSWFwB3+GOO54YohTsz6Vfh4r1HlP +AV9MsVLMIEBooSxaUQGVUJ37qWj3HRPUjSjBjMxTiRWApdDOVLPFxamlwW+nDWcCt6y GvFYbKH0rEihrIWASRrIAjI+uuHBRFqHqmViJPJ1/kiXBJhlyjLMAh/HRxYoIv+sYkVA 4Axhc/UreNR+ya/q39zQpON/Iewq/La61FZ6GnkIhep+w71fiyEN9Nx3x1PDm45aNvxK jqam5wyRGrtnbjlrjkEXFpznCx5toorKvCSsMqtEizFHBGGbwO9CgfsZ62In/anWGeiy qH5w== X-Gm-Message-State: AOJu0YzNUDKuKuOaPWEc+ktt5p3tb6xbOaf+lx2S2kIqv6BhnNJqeWyh uMcvj3+RozVQDsT9a1vMpGoyni8+eE5GtyiOYPCgMHtC/O4ceKC8YviiRHsWNx4GJIHVuIJrQ9Y s8Ohc X-Gm-Gg: AeBDies42VH1jwZGoggYmn1yK4HO010HmrwqB1fLZhcwYiMXwqQMrRpdyGzxJNMNJBY gcd+f9pdTwMGULI+yB43mvNz6KptQ+mps1oA9VglQJA2vqw5NWn0JnqjdsLz13jThg+622GFkyM aZK8kjrUtbDIKt6jJ1GuXiZQhSDL/KmNl9df7lY693QRECBCkhraPCPiPCio9eapWSbcaln9Qk2 j0CJX4uixEpFo8zXl5S2YZmkUVJ4+c12m2y/I5FlfRpM2aZdrtTyYKkvY9rxdjmgL1uKg9MIi45 sa2i9z/S0LnCZux8FI8M8zTbsUuQtt96Sz5f/lj67wPpA1V4FuiHiNljb31eeppfUiZybQPYkjS BI+AHS/hN8eNcR1kBJ+9VPQjQW7/mqexIPJH/C67jsrw85mrMaKFXZwG0F6AR8+df5kaHOn53wm FjZtLpYG8ivEIDzUh8rMD03i+u35+311Karz+GUl/PNgy2/3k4KTos+qG1 X-Received: by 2002:a05:6830:a90:b0:7dc:cc70:7788 with SMTP id 46e09a7af769-7e1def32d7amr5150654a34.7.1778169943595; Thu, 07 May 2026 09:05:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 20/29] fpu: Introduce parts64_round_to_fmt Date: Thu, 7 May 2026 11:05:08 -0500 Message-ID: <20260507160518.444797-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32b; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32b.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: 1778170319215158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 3 +++ fpu/softfloat.c | 22 +++++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index 8c3a94bbbc..1876264d43 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -196,4 +196,7 @@ FloatParts128 parts128_round_to_int(const FloatParts128= *a, int scale, float_status *s, const FloatFmt *fmt); =20 +FloatParts64 parts64_round_to_fmt(const FloatParts64 *p, float_status *s, + const FloatFmt *fmt); + #endif diff --git a/fpu/softfloat.c b/fpu/softfloat.c index b71bd49483..b6cf0c8188 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1396,6 +1396,24 @@ float64 float64_round_pack_canonical(FloatParts64 *p= , float_status *s) return pack_raw64(p, &float64_params); } =20 +/* + * Round to Fmt while remaining canonicalized. + */ +FloatParts64 parts64_round_to_fmt(const FloatParts64 *p, float_status *s, + const FloatFmt *fmt) +{ + FloatParts64 r =3D *p; + + parts64_uncanon(&r, s, fmt, false); + /* + * We normally expect uncanon to be followed by pack_raw, + * so we don't actually crop the bits. Do so now. + */ + r.frac &=3D MAKE_64BIT_MASK(0, fmt->frac_size); + parts64_canonicalize(&r, s, fmt); + return r; +} + static float64 float64r32_pack_raw(FloatParts64 *p) { /* @@ -5176,10 +5194,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); + *r =3D parts64_round_to_fmt(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 Sat May 30 18:38:10 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=1778170282; cv=none; d=zohomail.com; s=zohoarc; b=Ym26F11wm2m5uVD4+4kIXFWHkTNjy9fLYz+z2mox6vXiCmONU5yP7Npr8bFN4OH0Mkxlr/rSghmzoEmvuAXxUBIrS/nj6/LJjYOx6hxPRFwMlMatutXy0tHabZVfGXkGeTlnJo2oKHsjLTWe1Db7IISZgGzl7Uu1NtMs4zl2yVg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170282; h=Content-Type: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=xa8yuOjFBM/o+OAV5RQr1ox5V1qtU3XTjxW5aIymgbo=; b=dpDwsav7J0Ii4OkXhEzZkS/hk4/OSqt5KrGcPFSFdeiImqd0oXMXvmOwPOz2PN4NXfuS6MCjkflZyScHHgrd88litUtFwa2x3758/fdFx0W9CL3WWHux5ie2m0o5hv/i/jsIGnkHXDeRNY6D4cFQLSvy/Rtx7AQy61KRsvo47j8= 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 1778170282978895.5903667454747; Thu, 7 May 2026 09:11:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1ET-0004bh-Q7; Thu, 07 May 2026 12:05: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 1wL1ER-0004aK-QD for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:47 -0400 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EP-0006yh-RJ for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:47 -0400 Received: by mail-ot1-x335.google.com with SMTP id 46e09a7af769-7dcd89701acso972968a34.1 for ; Thu, 07 May 2026 09:05:45 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169945; x=1778774745; 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=xa8yuOjFBM/o+OAV5RQr1ox5V1qtU3XTjxW5aIymgbo=; b=OUz+M2+74poUILcbSWzpcB0ggKrrprv7L3icoqCyPK4hMe1RQ/oTjk8A0sFY4lqAUV 4BkkwXzXKCAG86L1aedfLpBgczrRVc2fbHzv9zMZxQ4S1Pwbx5W3vibjvRWw6ALwlvIu 8wMc+h4HImYyvLGL18TllP7sbWP77pQvzDPZ/jIx6OqyQdgazWiFOhne36iJBBb8R38v JhYM7YEPZPt6C8fhaRV8rHJ4BNabC1VD2uQ6s8M6VhPs22m8OyvbGrd0NnF1TvhESIKk WEBMatH8rDXhzaisfTK/VBLYgZeZ0hrPFcawPDtXzUC2HhaUE/WEIYiqWsyidGCPmayh gmdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169945; x=1778774745; 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=xa8yuOjFBM/o+OAV5RQr1ox5V1qtU3XTjxW5aIymgbo=; b=Q4xDCR0wHZxB6qW+l6KY6W+RAxCBsZXvY3M5e5Wg1d+YBL3NsWX12N9YKZfqyEJmr/ KWpBlMz4+mbR+FRppy8d1sGKbm73laYMGW4jWkZWYeqNtnADmm7ncgT9ntlfjnsRr+Nm EybT7Qh7T6Je8LwzLrvb01BIMhUCIAlzQ3D2vQYYqdy+5h5NmWas5SHVkX4Gf7CmccW3 hCGkoDdKg5z+xrGfrb50QEIueKPte5gZDHQOh5qftUoaNdDaR1qZBP2ogltS+nKNQbLy gskGR/Ak3X02RfI7/Q3jhWJkgH1VefpafHI6f3Eo3dbf8BGUZMJwGdQpPXOtA8AGvGAU RQYA== X-Gm-Message-State: AOJu0Yyy/zRmXrZLi/Z25b6BGvh8mQGKdXPHxhBeoeXFQcciNf5wIW0B 4cNXRDBniv4xPyP5XMP0g09VCTs6LVgqqwE1e61bQwO7UT0d8uyAecGPg+UhD/jB1YYvRc3/iD2 chdSA X-Gm-Gg: AeBDietm98Pyb2gATPQ5EiGbK0RfzQFw1deWx8jbSwd9RmB28GU38Sg6a4hl6Bky+kR Gvzf2c4krJ63idgzVVnu3ApSySWq9VB3AMGhLAfSqg/c2sVF/kEJXP33WbXKGj3059eIDZHlpik 1MaemBtU1dbym6so3W8l+l8CX68aM6Ua5VgbeyaEw0vO67tGrEnU9J0P9NW5CiIo1JsXsWbAHD1 Bum//LtAUyJks6GmlkIHbKdzFn0ap10WXDiB3SkbJpvew9pbZtVQHbILobEPJWNlouyro6NrRnv PYLjmF9FAlBXGPt9C5UNCUmhsFOnqtlpGGo22Dw+JDzF9NtfEMLV2Bz9J1t44Ch3JimJSfT5m09 sF4dHmNNsUJGlzqTYqVvHVCoEnE3RnMzTrahIjEF0QoRbN0ILIa0eUtcB0PgpJ1APcRQDnmzHG8 2riCqlSS/H/x7yJO4REB9gE8MEwJxwPzqNo1m2OI5TJHa/QA== X-Received: by 2002:a05:6830:82b5:b0:7d7:f15b:bdcf with SMTP id 46e09a7af769-7e1df1a93a3mr5052144a34.28.1778169944513; Thu, 07 May 2026 09:05:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 21/29] fpu: Return struct from parts{64,128}_pick_nan_muladd Date: Thu, 7 May 2026 11:05:09 -0500 Message-ID: <20260507160518.444797-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::335; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x335.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: 1778170284439154100 Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 7d4b40022b..211ecdf114 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 Sat May 30 18:38:10 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=1778169992; cv=none; d=zohomail.com; s=zohoarc; b=V9/Zw2gBlm7VakjxGqm+wd5P5ZzbxvPBhLbxtK5BojqrPfmrOxjzoFfXNs1vXgs49zkeMka+Biwaj6quCqEfNRiA4j0jevUulO30RN+L0N97HIRx2Z1WKR8OLjKZ4XRSCYCPJxAgR0ZQ9f5f6gBbGbT7PhV+6KDGHtxdTq+WAZI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778169992; h=Content-Type: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=UkAw+lVYJp+/TFLv7ThrsHP9Ke0UbhMUufIzBrbvwe0=; b=WUYG1z+4uteXnzwcqieGfTNCWh5/rPoZQnxLGGgmgzjXuMFD7y4dE8R0J9VqCj9n8E4GRfHsG9yF5c4qydvsOq1HxqeuMJsHxhAZpbaJR0ZTEsRpmzy4lODz1UC4uqQg0JP1cbVyMB4ry1Su7VM3kR5FJ2LdnDbKg4wY1GIFesI= 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 1778169992514482.42664276726487; Thu, 7 May 2026 09:06:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1EU-0004bx-DR; Thu, 07 May 2026 12:05:50 -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 1wL1ES-0004ae-S7 for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:48 -0400 Received: from mail-ot1-x32b.google.com ([2607:f8b0:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EQ-0006zv-RX for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:48 -0400 Received: by mail-ot1-x32b.google.com with SMTP id 46e09a7af769-7de4be15125so842679a34.0 for ; Thu, 07 May 2026 09:05:46 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169945; x=1778774745; 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=UkAw+lVYJp+/TFLv7ThrsHP9Ke0UbhMUufIzBrbvwe0=; b=A/6B3You62mDNZXebEGh9IApXgaRMhFp4NEtcTcbImMREqMXrNZX1YzSxic6hf4Db1 gFNs+IDIgU5saHIxudPrpgdYXAIl3PgqngMQoTb8CtQbNIma025O/sDEXKlS2c5dHwxg fN1PPq4AQ5r8RU7IMxqyoovaYTbadLq8o9dXohzoQX6dglvwxysR6Qrgif5KpiB0fjAf oTc1f2Us5xhTmwjI8MbD8iPwb0n4bfrfQ+Q7zdyNKYNrLMe2S3KEy7WMshlEITBrV7Yq 34Oj0VJZkXr/2iSxrkUSuVDSbTRKQqCFtSxg5KtpeaG+s9ziHd1rvLvgRq3uOTWmCCDh 5Gew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169945; x=1778774745; 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=UkAw+lVYJp+/TFLv7ThrsHP9Ke0UbhMUufIzBrbvwe0=; b=gXIVMXSFBO/iiypiIktUMfDwhkjFesFCzdcKLwPXQDK5ZYwsRM1jVY3SqefRHxmDcd u594agpZlYI+hcOfxwJtkMN30H/Qpw5H67yZ3gYpXxwbkBPM5NuXB/iweZJNAqhlne9t OimVHCRGO5AxvxXuypnQSQhxG1zMaGYG2lhwQO8m31LeKiVIRzIwTrEAy4FA3vLWp0SE xuJbG5W7USwVDylJXKuu7NrZ8nnII2UxK948XonRszGBkmE6hzfqr0gKIy/xusAHJOHi jXawQhFS0pjEjUwbBLTcfRk1aWZILPdau7DBdJ4iUzeQDiE59BurCw5v+n3EUCP1VvFw iiuQ== X-Gm-Message-State: AOJu0Yzpi6Htib4PTLjzFxJLRa2/xicYupV3EdiCZE8YmpPyRlr9TZ4t 3vVWX3+zFwmXIWzFK3t206Bd1fB00dyMEaQyNp7c4ww6wwDoWsluwjR2HJl5QJ7Fwy9nCFn9k16 4nWw2 X-Gm-Gg: AeBDietX9k49lnPbEtV/TXqYPmXGySZ4NCa7lQXrPgVbyt8pruR/Tx7sqJrfGr8T7gQ C00jbOpeeSredojgZAq8veA5fZeeCcIK/PW550f1AwGvA4NbzvQWwA1QGFJNKP7rR0CjRP3a56e qBiv2taXtzCuSKhou4T78kcUyDoMSc/RI5q7G+36PdMhIxke9TaPi1Ra9T7BfwAKiCYmSeALDL7 IDPMEggUOUSy1oPHrI11hbunuup1g6lhHDmFC1aULi9Owl01PHX+z6euPUN80OepFI5jxZv4El4 ZD4gyKYVABKQ0v6D8vQLvln2eMxk0Fs3vuHx/ob1OYo/ak3pGowMeAAh2WvzRs7E9dMjuyW5Jmf MZ0UpvN41lv8VaqOjqm+wnBF6mb0ersB35uznmVXdk3HfF8WUU8GA371cDEQr893bYeyFs5W4wf rniOe17pjGSJsHIh0fYloz+JW1Viep7nJUpi/eoN65R3kbQA== X-Received: by 2002:a05:6830:4182:b0:7d7:d524:bc88 with SMTP id 46e09a7af769-7e1def3f862mr5748609a34.10.1778169945395; Thu, 07 May 2026 09:05:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 22/29] fpu: Introduce record_denormals_used Date: Thu, 7 May 2026 11:05:10 -0500 Message-ID: <20260507160518.444797-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32b; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32b.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: 1778169995886154100 Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 b6cf0c8188..0a8da13e01 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 211ecdf114..028c2daa27 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 Sat May 30 18:38:10 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=1778170256; cv=none; d=zohomail.com; s=zohoarc; b=R0TNYqYp4qugqSzymVA3bIwHHcBFznl0DYTs2zKpH1Pmq1n9lcHGFMhMGggDMVMl5FJdUSJHx6QJHPDr4JBZvQakDCeJDeHmALnj041L+BNFtxzIJ28qxTBv99U+8Dz7uisI0qrSNch8uhd/2a/PodREwf23xc+ruZG7RBsHCDI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170256; h=Content-Type: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=jhbgvoCRwmebYNkEMIy2MxqqEuYsVTL29FJUMN7mzgw=; b=IDrCwYXA7hbQZ/sF0yVq4/aefTcEIOI8mKm2zZB0PsbCpEISBd5yHL1Lse9Jps7iOvwa2gtmqmrqvfdWnMtz4wft8DUob4nnlisAeAwg9k2IeHCeKby2cLACASoe8CJGYzW39pyQZnDPcV6z073iS/NEptT4z6EcxizvuKTm3Gk= 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 1778170256161228.74495939065025; Thu, 7 May 2026 09:10:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1Eb-0004ep-6l; Thu, 07 May 2026 12:05: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 1wL1ET-0004bk-Tj for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:49 -0400 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1ER-00070X-Na for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:49 -0400 Received: by mail-ot1-x334.google.com with SMTP id 46e09a7af769-7dcdd1b492eso877320a34.1 for ; Thu, 07 May 2026 09:05:47 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169946; x=1778774746; 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=jhbgvoCRwmebYNkEMIy2MxqqEuYsVTL29FJUMN7mzgw=; b=A5Q9lJGDK5/32mITkAeI1Gui5M5/Es8r/AX3Nswi5BHT3lRpTGKFRbQug4hPoFQfFl qLB7ui8r9jjyxPBABt+N9a9w987lpmxD1tFeg9oWS3JJEKuU2Tzg5bLz5cq4l9ILLYaH bAX9VXtrnwf81aITkc9OPVE/XFpCZdaWennPhh7TgX72IzWIYsw9pSMh3omHza1xqggC 5YMHJ6xtcKCMKlrD0bKqChB3N6XLyru0HnkG2jm1XwiAS4w+C/c9jhzVkjB8kaAzu2Pa h1Tc4an3+XN2M7PwL9Onemr7gwCg8ztOrIPSm0Z1ReoY4CXCZi1eqmvfYljgRAXjeSL1 DuOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169946; x=1778774746; 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=jhbgvoCRwmebYNkEMIy2MxqqEuYsVTL29FJUMN7mzgw=; b=VYc+lFPzV81OF+2t9uq4pLxtI/lfdyMSkQG/0hStH3H3co5Bkj7PxVGImIPIkvwt/X Edm5p7MgCesIGMIdvMPSbNPdfQEYMmJ0ZVH9Yi94HwmfcmQAHkXC+XIxlHKNsQS1PFXQ vnXmnXKMSATR9gv8PrdrcoyTGlPBHWHILXPp4Qwsr04/STI98j84aUtlw2MEs4iXyGGB 3QDBNeLl50+Su/rdt8H3LPrPsDReD5vMrhfSsQlfHKD32EI4mlP0CwTpanMu6Vypq3aO NPNgLyH/BMO78Nku1dPo2xH2a0yDQHfwAxOiamyNkKJdtaWd8GN7YK2nO8uspDh9/0bp VCfQ== X-Gm-Message-State: AOJu0Yy5htPekDDNYg8mbOSM3Miy8b1oCey16rGlnQc7HiKfw1dk4lXw RO9w7viaZalHgEe7UhrP9aQeNfG65ssCGiIwSo7WPJbA4JjQxhlDfYAMSksex/4FwSWJeWH0fnl Wba9z X-Gm-Gg: AeBDieuhRO4j5tLVszTgd96C1FBaWD6un//2iWExiaUkDglEhVj2w4vveePKiKCV9xq cRgV/fqwHW0HSmsynRv1IdKDqYQynwmb76QgKgr/qArcUWYuRzie+vuKDoEbLCD4c/F+Nu4P0Zn G0l6rM6yGQw5HFUuR/kTl8tzaY0XdWZhLleCfPkwoaT5rEenJ1K0gRYVugwkDY+Idd1/vPCcVSx C7NFZAvYnizOC6QVJRNU2A1YU7TgMPfu4TbwY/HBNkeQGEbcFRqdk4W8R3Au6QzlXH5Ow54YruT RrwfjfZb6v6zKSUtuFwNIJgjmtanTzET9w8ekNa3+ZOMoqymR56PNZj0WPlwFnf/uJNAd1qBc52 A8YQdcGlgD85/4KH6x6wH4kz2k1jo1nKpoLcNAluNLW6YHmGnQnciVhs+KMiEefXlZYDs2h/PBo W2ZMveFW7IUtTpu7q0m+ONDCIZxyHS52ca+fEJVRW2yZdZK4XWXNgUH/eQ X-Received: by 2002:a05:6830:8544:20b0:7dc:e059:c25d with SMTP id 46e09a7af769-7e1fc4b389dmr1307550a34.0.1778169946325; Thu, 07 May 2026 09:05:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 23/29] fpu: Split scalbn from partsN(muladd_scalbn) Date: Thu, 7 May 2026 11:05:11 -0500 Message-ID: <20260507160518.444797-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::334; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x334.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: 1778170258051154100 Handle the scaling separately with parts64_scalbn. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- fpu/softfloat.c | 37 ++++++++++++++++++++++++------------- fpu/softfloat-parts.c.inc | 20 ++++++++++---------- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 0a8da13e01..962528cb73 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1907,11 +1907,14 @@ 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(&pa, &pb, &pc, flags, status); =20 - /* Round before applying negate result. */ + /* Before rounding, scale. */ + if (scale) { + parts64_scalbn(pr, scale, status); + } parts64_uncanon(pr, status, &float16_params, false); + /* After rounding, apply negate result, especially for -0.0. */ if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } @@ -1931,10 +1934,14 @@ 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(&pa, &pb, &pc, flags, status); =20 - /* Round before applying negate result. */ + /* Before rounding, scale. */ + if (scale) { + parts64_scalbn(pr, scale, status); + } parts64_uncanon(pr, status, &float32_params, false); + /* After rounding, apply negate result, especially for -0.0. */ if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } @@ -1948,10 +1955,14 @@ 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(&pa, &pb, &pc, flags, status); =20 - /* Round before applying negate result. */ + /* Before rounding, scale. */ + if (scale) { + parts64_scalbn(pr, scale, status); + } parts64_uncanon(pr, status, &float64_params, false); + /* After rounding, apply negate result, especially for -0.0. */ if ((flags & float_muladd_negate_result) && !is_nan(pr->cls)) { pr->sign ^=3D 1; } @@ -2105,7 +2116,7 @@ float64 float64r32_muladd(float64 a, float64 b, float= 64 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(&pa, &pb, &pc, flags, status); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &float32_params, false); @@ -2121,7 +2132,7 @@ bfloat16 QEMU_FLATTEN bfloat16_muladd(bfloat16 a, bfl= oat16 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(&pa, &pb, &pc, flags, status); =20 /* Round before applying negate result. */ parts64_uncanon(pr, status, &bfloat16_params, false); @@ -2137,7 +2148,7 @@ float128 QEMU_FLATTEN float128_muladd(float128 a, flo= at128 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(&pa, &pb, &pc, flags, status); =20 /* Round before applying negate result. */ parts128_uncanon(pr, status, &float128_params, false); @@ -5116,7 +5127,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(&tp, &xnp, &rp, 0, status); xnp =3D *parts64_mul(&xnp, &xp, status); } =20 @@ -5196,8 +5207,8 @@ static void parts_s390_divide_to_integer(FloatParts64= *a, FloatParts64 *b, =20 /* Compute precise remainder */ r_precise_buf =3D *b; - r_precise =3D parts64_muladd_scalbn(&r_precise_buf, n, a, 0, - float_muladd_negate_product, sta= tus); + r_precise =3D parts64_muladd(&r_precise_buf, n, a, + float_muladd_negate_product, status); =20 /* Round remainder to the target format */ *r =3D *r_precise; diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 028c2daa27..b8baaf1e76 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -669,17 +669,19 @@ static FloatPartsN *partsN(mul)(FloatPartsN *a, Float= PartsN *b, * `b' then adding 'c', with no intermediate rounding step after the * multiplication. The operation is performed according to the * IEC/IEEE Standard for Binary Floating-Point Arithmetic 754-2008. - * The flags argument allows the caller to select negation of the - * addend, the intermediate product, or the final result. (The - * difference between this and having the caller do a separate - * negation is that negating externally will flip the sign bit on NaNs.) + * The flags argument allows the caller to select negation of the addend + * or the intermediate product. (The difference between this and having + * the caller do a separate negation is that negating externally will + * flip the sign bit on NaNs.) Note that float_muladd_negate_result + * is not applied here, and should be handled separately after rounding + * chooses the final sign of 0.0. * * 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) +static FloatPartsN *partsN(muladd)(FloatPartsN *a, FloatPartsN *b, + FloatPartsN *c, + int flags, float_status *s) { int ab_mask, abc_mask; FloatPartsW p_widen, c_widen; @@ -725,7 +727,7 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *= a, FloatPartsN *b, g_assert(ab_mask & float_cmask_zero); if (is_anynorm(c->cls)) { *a =3D *c; - goto return_normal; + goto finish_sign; } if (c->cls =3D=3D float_class_zero) { if (flags & float_muladd_suppress_add_product_zero) { @@ -770,8 +772,6 @@ static FloatPartsN *partsN(muladd_scalbn)(FloatPartsN *= a, FloatPartsN *b, a->sign =3D p_widen.sign; a->exp =3D p_widen.exp; =20 - return_normal: - a->exp +=3D scale; finish_sign: /* * All result types except for "return the default NaN --=20 2.43.0 From nobody Sat May 30 18:38:10 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=1778170252; cv=none; d=zohomail.com; s=zohoarc; b=BtonhEFNiOENp6mND/I8Lco73SBhnyDLlOSH7ft+6WFvvO943J41vSpAfzJAlgo2Bx5qI+9h2GWbuBD3t2961za1jS8NgmFB8tj2BeAqO1/V+2BGyNwTkrCXQn0MKGiNv3itACZwoUCvi04W1t8+9Jj2En3+68u06YgSbG7AAho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170252; h=Content-Type: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=IrUvh73Uqf5KK7Sqxeffo+zQ1jx0mgO/cnwZGHKztPQ=; b=c3F4JiQSdqdTUqlF9v+8ZYvNIjjM9PK6nMt/IcN/5yLBTTRvsjsllugxTM4qPN2JGtHq7TJxxdlHKOFKblkv9fhdjW95sQ6eq0h8bDo1znH8TiPBLepl22lGUOzGmfB9Qcc+/yyRU5K575pGFairiLB3R33zHjs7r6Pyim6IrTQ= 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 1778170252724251.64211008440702; Thu, 7 May 2026 09:10:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1Ea-0004el-Kp; Thu, 07 May 2026 12:05: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 1wL1EU-0004c1-ET for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:50 -0400 Received: from mail-ot1-x329.google.com ([2607:f8b0:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1ES-00071F-J7 for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:50 -0400 Received: by mail-ot1-x329.google.com with SMTP id 46e09a7af769-7dccb8644c4so567398a34.0 for ; Thu, 07 May 2026 09:05:48 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169947; x=1778774747; 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=IrUvh73Uqf5KK7Sqxeffo+zQ1jx0mgO/cnwZGHKztPQ=; b=IguKe7GgomL9GDtO1nXgNDjBnVtBPkqkjrpqXgAGKDNuyanT+L1zGwvBCQ1i/o1ega KIjsGnx5bbLRpcPvrVJiUqBVP/tkfe6OV2/V9sffwcOa3p/lFj36L5E/qD0xW1aJtYyb BweM8W7DzxFuXMs7QsTBoLatomcEUjB8S76wiZQCMvDcQyZ4aiLOWJjwyQrBHUrgELlm aVvehJKqSb1lavr3nu1nqHzTEOMtvpMWTSgNT/1QYATG6Yiul0rf7Nibl5M/ri3GaVD3 oUBJMLDIKNaZ8fia42O6L15V0BkOknp0YoLpdrlBQf6V+inI7L3HSHxozrQT6Dv/BH+h VD5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169947; x=1778774747; 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=IrUvh73Uqf5KK7Sqxeffo+zQ1jx0mgO/cnwZGHKztPQ=; b=hAjuKIJHYDJID+PEBygYoW+MtJj5WQxDlV1aZntjuNoXkQWA00sPoWqSV1yqV5Gbmn 4g7Jv0CBTmP3wytDK5ltiO3tPVjDHMOhO5ABhetJmbnBDMvqDlXWKk7JWYWGzzKpzjf3 OwNiT2Nzry2o/XxjjyfLPUfju3aYJEewxN3VHUTXNKYQZ1arZ1do+T5IHjmTRhy2n7la sGyO726x9qcLUw23OuRYl62gxl4eI8hvrBrnMJIybVsT0dj2EfjOGkA0IxjQ8QTUA6Wt Krl84HcG/lgmeYudSR9OONr5ir/U2qV0eodJB1QynP6TQ5mkJGKAwdQrAXOpWPGKDkMo 0q1A== X-Gm-Message-State: AOJu0YwR1d2W3D3HfMD86mqbBq7hrFBXA3uOfzIFvZx65OeHcQQNwPUV 0ln9OHSm6PLvxmwvbQfJhXEyX6V8PoxzuDFS9XNgpqwUH7sGmATXqJiZ4W59AvcCXTK4q3fplIe Y1kOg X-Gm-Gg: AeBDieuH/S9ffUQD6Jwa/4oXceyaXh3M/g22hVc8Tg56EfE5V7euvCKbKJeWeXacLGB DPAMw9N5i7GOljqKDdLtab1MscOoIi+CvSVi08pnXCDyD9Tw8XeGP0+eQyrvknZVSyowtAB9vd8 UCFMu/7ABTJavDhrXSIDJhroL4bqunIKHDQWTVqHyzT1Y9LuVtPZ7ZLFME4V379o4+6KqHRsgcx 6YtU0ABiwPdwy0ksIqc/QoUq187RvL92ER0Buqouyf+Tf7sCLJ1POPbUttO9s3u3snhvXqH06Jj /AAtk/vB1fsN5bNsAJ2KlqmWfLaC+dDIjNjursSMiJqnF2SrkMKkr1cZrZdmspwPi8QmQlbMgvK X5He7JYX2WelSy7aX5+BYcy26/zbTMVeEZVuHLSB+rOlLELWgEs61EQfV8kTurvX4H8BJ3UsKEM 4V4mdU3XHB6fkcPNxcI4/eZRQw/MrBZi6yL9OLYslS7i1+aA== X-Received: by 2002:a05:6830:3907:b0:7dc:c301:d0b7 with SMTP id 46e09a7af769-7e1df24e19amr5237587a34.28.1778169947094; Thu, 07 May 2026 09:05:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 24/29] fpu: Export parts{64,128}_compare Date: Thu, 7 May 2026 11:05:12 -0500 Message-ID: <20260507160518.444797-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::329; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x329.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: 1778170254817158500 At the same time, constify the inputs. Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 1876264d43..0dd8d9c526 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -182,6 +182,11 @@ FloatParts128 parts128_return_nan(const FloatParts128 = *a, float_status *s); * Operations */ =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_div(const FloatParts64 *a, const FloatParts64 *b, float_status *s); FloatParts128 parts128_div(const FloatParts128 *a, const FloatParts128 *b, diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index b8baaf1e76..7f5abbc6e6 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1569,8 +1569,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 Sat May 30 18:38:10 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=1778170093; cv=none; d=zohomail.com; s=zohoarc; b=a5/wJvhjfmKTQqVV82Js1yJBT4H1JRZW5XLgJp9rwwA6PKJ3NoOZK4RIz7SVQKn8S47cbp3jZm0mH0wLsVjhoygWZXfGadetYhuCjOWOLfUnoW785xVAWUjHIfwIEBbKkPHx56ROCNMLGXXUWsjsmClh+bqh6Bw79GaVVduFSEc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170093; h=Content-Type: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=b8/R07coZVPLeMow688U4HbHyRxrGDzvDIkI37R8zno=; b=nIGt1mIvbgdvleASXjQ4z+xuT0MEbvZYpr4ZS6ljHSal5BWYRtRfSL+2eN9dTqfrN8DcEFqLXHZw8QtJt7U8HVNyZbMsFECfndLZI2IskQ8vz8K5GhfPyvCO5hBuV86jiLE6xXjqHy3nxh2CBr8ARUUgv87OkwTd36/iwZgj6DQ= 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 1778170093476819.2692732043975; Thu, 7 May 2026 09:08:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1Eg-0004gX-MK; Thu, 07 May 2026 12:06: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 1wL1EZ-0004e2-Iw for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:55 -0400 Received: from mail-ot1-x330.google.com ([2607:f8b0:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1ET-00071r-Er for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:51 -0400 Received: by mail-ot1-x330.google.com with SMTP id 46e09a7af769-7dcd689829eso900922a34.3 for ; Thu, 07 May 2026 09:05:49 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169948; x=1778774748; 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=b8/R07coZVPLeMow688U4HbHyRxrGDzvDIkI37R8zno=; b=oixx+JVEf6/vCPUnbeJoqWaJDUaYkouNaesa1L5j7BiBvtOQl5NRECQQoI9+WnWAiH 4QNXVf5jTVQLVok4ckK2TrEpdkwBkN4RMnEGjn5Oc2gERYliycOQpAkhnsp7WK10tBT1 LkHooGf7mFoYGh72bWlcIrAdhN13lQ9gC+XXph2FYPZj9Geh/ECOl2t0fyrWK1fVz9PH K2s5J/5Lg7q3LYd8M3OJHqnIsfEVpK7Ui3BrBJcBT6YY5EKH7NpBDSnibC4ofacS7u3C tb35L6YU2AE12yaNLA6fwZ+8QxFePeTGXqhqeLOSuP2O9dOmGdYJMJK+kY4ZHyhxAO+q SfEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169948; x=1778774748; 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=b8/R07coZVPLeMow688U4HbHyRxrGDzvDIkI37R8zno=; b=Z2JOx7j60Tb4XuBKjNvVRxDBSmU4/iDWTr3o1a3o/4aof6MoteO7HwMSdbc1Dmybez HDcFEFW+FqxtWrm245172nhqUXRsfUYYnU7KpVLz1o6z1/Dv0dW1pmnnRY98lXJ7kdHy axebPZna/v3xuYRrrCv+QqcA29QBqB3pWHQ7U5CgvM3tZzLlmGwj6z2OFRXGknS1RRJf u5OrWeCv9S+5xNU6X/+NXZL90wCIbf15L6dzvSeTv+QflUoYf/q910HBdEwIcI9n0T2G zfuTGgPQMakK5dmC4wlJx3ywz10iXkN2eSY16k68khKAabal3dzKWDeP5p1eyh+KrUjy BnuQ== X-Gm-Message-State: AOJu0YzdWSDd6TjFDTCG+nI//TcOdAXPpRbQWAhMN0imZq7nleXqf3Uj w+l8ktur9CNfi8JlZHQ1q++yQE5bAcYvsCc2Y83Mu3obUsVnDv1Q/XMRn8+/PeG72ESb7qRaSfI XqHt2 X-Gm-Gg: AeBDies+TN0CTfFZSthdfK16LZPa9JWaMV6FUg9jMOYiSEURBlcDFwdw8sJgvqni/jY mCZ7bzy28YCN26D2G3l9Pfyujb0AWDxxtsdO3V4OsQwV8twjz742TTa507fllbSl/V+99lPlkPg c+s6Cp8K8racVRb82Dk5K6uKF59sMUzqxEKSk5Ra4fQAmVRPv4qC1HuV/FfbyxvjKiGBilZoeOQ mfedK3kinTF1fuzPUsIj4a0//hVNlj9+2TovvVl/FMez9iQ1dVMfz3Wx7RpcZ8Hj/U348VKZINK rj5vRKw4Th7X47wOSkIrr+xK6R+gqqPyjfSSGUh4hMyHxI3iEMNBrkEqojGkDLFeDww4TlSxHC7 rM4Xd//TPShi/oNBJovnrraCthKPk8+b/Glr0c4rSVR00Ik9qXcigIsRj3FW8w0yc9/dZb5HD9H UsSpMtks7x9RtUZ3ydmL4VtDlrF+ZhJD/fQxnn6Fq/QxMarWiIqi5AndRR X-Received: by 2002:a05:6830:3785:b0:7dc:d967:63de with SMTP id 46e09a7af769-7e1deea311fmr5564249a34.3.1778169947959; Thu, 07 May 2026 09:05:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 25/29] fpu: Return struct from parts{64,128}_mul Date: Thu, 7 May 2026 11:05:13 -0500 Message-ID: <20260507160518.444797-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::330; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x330.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: 1778170093721158500 At the same time, export. Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 0dd8d9c526..1285946321 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -192,6 +192,11 @@ FloatParts64 parts64_div(const FloatParts64 *a, const = FloatParts64 *b, FloatParts128 parts128_div(const FloatParts128 *a, const FloatParts128 *b, float_status *s); =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_round_to_int(const FloatParts64 *a, FloatRoundMode rmode, int scale, float_status *s, diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 962528cb73..c0bf255076 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1804,9 +1804,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 @@ -1814,9 +1814,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 @@ -1824,9 +1824,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) @@ -1857,9 +1857,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 @@ -1867,9 +1867,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 @@ -1877,23 +1877,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 /* @@ -5121,14 +5121,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(&tp, &xnp, &rp, 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 7f5abbc6e6..07bd0b2fad 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 Sat May 30 18:38:10 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=1778170320; cv=none; d=zohomail.com; s=zohoarc; b=jQzF8lqgp/kPyWu5P2s6VxqK3Btmnx56FCx1wAqUhfMTja0be68kG5q27VFKd3yhNZnkxEwfDLY9HsB1ygIrz+jyFgA0PelH2ZVwsVbyPMAYtu0hF2fmK3YM7/n0YPXJakzHPH6tvPcpKW89Y1CQmm0EC7SkJDr8py6dyJMV8B4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170320; h=Content-Type: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=cwufvbx5jfOeCU9YUfNQqB3vv3m9DQGfuwS+kcmA360=; b=hpSrBZjNeXtBN5mYMSke2Awa6rB7urlRJpIxOFWEfriG1+QZgh+eDPIZhLUEaNcr8CeGv7oPyw+Xe8z3YmDi7zI0XzF8v86gs6LXRzRPmRD9bJkYHsdjRXodAk0+uXXTbLFQ/wd91J1EtFl+9biNZYkY5uImKKNtaO8eLnbreEc= 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 177817032042455.9313763732099; Thu, 7 May 2026 09:12:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1FN-0005nA-0n; Thu, 07 May 2026 12:06: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 1wL1FL-0005m6-Du for qemu-devel@nongnu.org; Thu, 07 May 2026 12:06:43 -0400 Received: from mail-ot1-x32a.google.com ([2607:f8b0:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1FJ-0007HH-2x for qemu-devel@nongnu.org; Thu, 07 May 2026 12:06:42 -0400 Received: by mail-ot1-x32a.google.com with SMTP id 46e09a7af769-7df05fc49e5so1057963a34.3 for ; Thu, 07 May 2026 09:06:40 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169999; x=1778774799; 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=cwufvbx5jfOeCU9YUfNQqB3vv3m9DQGfuwS+kcmA360=; b=rLWtEGB4NOVa5rL5YBJxgAL7Omayl/IkhYBhcqKAGexGiqlTBEGn94W+VlfuoogeSj tE75rJkYBurbk0TfO0D1XaJV4NuQsYfh47nhDhzcFYRoGQupv4SD7BHwHoepp/mif1ce T/5g0yx6vosnE4OltSxTrF7TQspI5iIx/8oZJ4Mx1E8Zjol8tguYv/IKnHlqHtpj6Sc6 tY5lx5y+OL2neuDvyEf2hF2Bb2Yq6yOp/zLurnyL6F11G6qW9VO2JFwj2yZ0QXr/krmV RdwYT5llHRqlHv/ilOUCTxe6QN4FVfr77AhoQkAz3ZYjrjgHvzCNh/YbuPIgUYwFpaP3 oBeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169999; x=1778774799; 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=cwufvbx5jfOeCU9YUfNQqB3vv3m9DQGfuwS+kcmA360=; b=DzpMkxkezvLANy9kKpwKralSxdWwF+UCluMcfFOMyhY6dSc5WFjxdDv+6KoIAjrFoK d9zqe5PDOW75yHe+PCMZrSLdvC5mfyZkNFnygf2rzPsvP94K0A/sIZGV4ejUFz00v9ka lBPneUwwMZhrSkv/7rur3lUtpu+pUTC86eGEQPB9ycYLK6bc/My8owIZWDhfarehcylV 8F265/WkyyIdCh9iUjZkIOsyOcRmWFNej2fsHla9yOErVv6hF7SmcxOeXv5sBEQnyVfh e3lg0qBvb0m3eVg3x4/b9ZapPpFc5ObdNEDcL90dmWB+D0puHhppFdDooS+9iKSxavYR 8UgA== X-Gm-Message-State: AOJu0Yyv8YnSmpiiSYyXrlU/CgpHyrE85KoqWE09s4oVI/6M/qTeWEhN kdPaDvinAPHioCK+8SHh7haoXvRQsiHzS/KvQQjUldo2Q34BFLiK+3wS6dqCpNalnI9aglNU1hm Z5vIJ X-Gm-Gg: AeBDiet1DbKyAkAFAOW1LjAbWblkym0Plb9PflL/iImarRy87o3oSBvjgzZdA1XaCLD Gr25o1Eu9tFxwTfg6pf99TlbkA1NXJzG7tPgOFndYlP1d3F7LdZjzPgxLL1+dyDKM7MEDrtiGjh /CCyKktGD5g3upNqSyE3KaZDM/6Un6w/+bCLFS8fnU1qrnxxZ8g+BK9hA4G1WVINyrNMtxZgBHc S0f9Bt47orYZrj+E7r8qMnGFhf/fFGjsZtYHwNROPzL+PripmXkA+riWX7zbpwb5OWF/y5x2dXl VLisJjM3CSQc5B3kgc8kOEJxvUB/Q4/O+yQtKk4JuMzdoG8VSQZIulk3vP6VT7nLsLtzIwVBzWd zVYUeaxVXoagCoh1nIBXK6KkZVSEolica/hJAvDPeHte5Yg2O/Ac0MuvUTfY7Gh+h+OxatWKZ2i 9ncFbudeDQuXhJ9JSwNNtAR0SjDhfnKOzRfSp4xBngkLwbGQ== X-Received: by 2002:a05:6830:63ca:b0:7dc:e1e6:7687 with SMTP id 46e09a7af769-7e1deec8566mr5865103a34.4.1778169949224; Thu, 07 May 2026 09:05:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 26/29] fpu: Return struct from parts{64,128}_addsub Date: Thu, 7 May 2026 11:05:14 -0500 Message-ID: <20260507160518.444797-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::32a; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32a.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: 1778170321081154100 At the same time, export. Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 1285946321..9504d0daa0 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -182,6 +182,11 @@ FloatParts128 parts128_return_nan(const FloatParts128 = *a, float_status *s); * 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); + FloatRelation parts64_compare(const FloatParts64 *a, const FloatParts64 *b, float_status *s, bool quiet); FloatRelation parts128_compare(const FloatParts128 *a, const FloatParts128= *b, diff --git a/fpu/softfloat.c b/fpu/softfloat.c index c0bf255076..7234ab27da 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1582,9 +1582,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) @@ -1602,9 +1602,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) @@ -1622,9 +1622,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) @@ -1717,9 +1717,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) @@ -1737,9 +1737,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) @@ -1757,9 +1757,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) @@ -1775,15 +1775,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 07bd0b2fad..2114797aca 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -524,11 +524,11 @@ 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 /* * For addition and subtraction, we will consume an @@ -538,10 +538,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. */ @@ -549,7 +554,7 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Floa= tPartsN *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 @@ -558,23 +563,22 @@ static FloatPartsN *partsN(addsub)(FloatPartsN *a, Fl= oatPartsN *b, } =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 @@ -587,25 +591,22 @@ 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 p_nan: - *a =3D partsN(pick_nan)(a, b, s); - return a; + return partsN(pick_nan)(a_orig, b_orig, s); } =20 /* --=20 2.43.0 From nobody Sat May 30 18:38:10 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=1778170227; cv=none; d=zohomail.com; s=zohoarc; b=SjBmT1/UKEap6qsr938qUF1Vi08P+Jptk4IsA+rdLqKpQaHFE6jUosL6bDSgIpUCdkIS86CTmkJzGvFRQhBkfiS7gQ3jnFecyg4SpZWtjMXKKRQJSYEEoozt4lFX7TMVHWWggNzj4kq9jbw8TGO35raoeJH5ntWWfA8My4lmN48= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170227; h=Content-Type: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=JvDAz6TNBVJ1gXLXpmwXOO0ZCnNIm5yTD5SwDCkiTzg=; b=QBRk/vD6Z+u2aha+tyvjWWDWuuLu7tYNbETQgNFReX70proAoSildmmJfj0QlI0KTFawnHzIMEayhDMRzXvod378tXusr/tDlK7GR6rPMv/Gnk3ZdQUs0mWs12KzjQ2N7TCHuprhzYDTDB/IUd7x8jiAjbm9B/40RnoqmoO1CV4= 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 1778170227137231.65846850551168; Thu, 7 May 2026 09:10:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1Eh-0004gY-3X; Thu, 07 May 2026 12:06: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 1wL1Eb-0004f1-8p for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:58 -0400 Received: from mail-ot1-x331.google.com ([2607:f8b0:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EZ-00072P-9E for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:56 -0400 Received: by mail-ot1-x331.google.com with SMTP id 46e09a7af769-7de7c57b52cso802951a34.3 for ; Thu, 07 May 2026 09:05:51 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169950; x=1778774750; 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=JvDAz6TNBVJ1gXLXpmwXOO0ZCnNIm5yTD5SwDCkiTzg=; b=BHjY+NhXimEihaAjczvHiQd3hgO3EZeF0vtQz+So5N143lf4DMu+mJa1625DeRCJxG sWBut02Ai52H+pokoZ0CTpWVSlRkGOmbTP0y+dV4cu8H3pbHZoVOEo4E/W4UkWJzj2+s ZaqybJW2ZhNciivGXVUGlu+eF5j4H1cz5ELPl7EkK6gD5GEsch8diUZ17J25Upijv2pa dK2iJyxo/EjnQBqhvmZ4s3ZpWo/7JcyoPMjujHrXV6tRJGZFbOhRSHi4iWYMRGlnrv2y N+4ixcRilODRq+0hrU/6XCAbXK6i3GaYhBN//i0ThJYZLnSXBxpye3ZNxyAv7qx4+4Y4 qeHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169950; x=1778774750; 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=JvDAz6TNBVJ1gXLXpmwXOO0ZCnNIm5yTD5SwDCkiTzg=; b=j7qLh6IPbWxEFdTtt2o5vW+lK82HYafTu551PC4SxqyhcfTefNF9MOM0evd4jm+ZDw CUi315AzLL1Jix61QR4OdUl+I4TUf5pNyH7pldNMEtgl699H68xEyDS+lZYuGIz7tl+H QBZ4CSCiXG/vos3uSIDT2igG3LIEoAlZRHqohkQGH68MRvF6dj9jowES5dCYJDsIrfY6 6rlcNzDCQjxTN1UrXdYxPOPEPC3T1Z5nR8K3nnMhTqAIQ9M3SHnMEwUVa9VQOSa/Yqwt kmfHbPIlJz5AjccQBOytzWgfyarCK+5alQAp421liZ/fiFu5UgyobwEyU5NI7ygXdSoG pstA== X-Gm-Message-State: AOJu0YyZR4w4rpOL8XmG/ZoXjNJ7IpEk0feYNZ+aLZm7OLSScF6kppK8 q3NOW+Lv7Jm2dWfDC+xd7iUnbVzt13bpau41AMd1F/5ZR6qf35yIJXzhieLSRv5Gf4y6pzG2gZF 3BikD X-Gm-Gg: AeBDievUCnd2/eFJVkQSVYgFKQrPvx1UlLbHS5oN1XQhi6bhWTvDyjI+7chB7HV3QwE YbCl/r6jZEH2xyZLATBN+79IsKF1hJECM86Fosx0N2TA+kElkW9OPxo8Td5mRaL0x4SMVj3qJRO Y4MhiieY0EiHRaYVk98ubETReGlJR5/nuvq64uDhyc4ec8z+09EFS6S/2JyKRXfblfK/wTFg3/0 L57zbR1/bjWtrFRe5vYAlRmGyjfAXrbLlB4p6wozTgfOksyyrQ9Jo8kjqdxksd0RsAFdEaTtRDZ aGpOJeR0tA1ixvYnhcSfesfQoOPAmlXvS06/L50JE0xdE8Z1NTrDgi5SAo3X5tnM2RCfcacRKQ9 EU72wTeayFWozbvjygTTWChaBvKrtqSCoHs4gY2ag8iwzgUm4zjBtz2g9QbAehF5vdVMJ8GO+/M jonLTgoFY0f1GlBZlG4fVDgGYLYO2RXsH3wmKAOuuiQuVXwGPs250JbdId X-Received: by 2002:a05:6830:64c9:b0:7d9:f50f:9691 with SMTP id 46e09a7af769-7e1dea9d032mr5176488a34.0.1778169950179; Thu, 07 May 2026 09:05:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 27/29] fpu: Return struct from parts{64,128}_scalbn Date: Thu, 7 May 2026 11:05:15 -0500 Message-ID: <20260507160518.444797-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::331; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x331.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: 1778170228745158501 At the same time, export. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/fpu/softfloat-parts.h | 3 +++ fpu/softfloat-parts.c.inc | 14 ++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/include/fpu/softfloat-parts.h b/include/fpu/softfloat-parts.h index 9504d0daa0..46618d217e 100644 --- a/include/fpu/softfloat-parts.h +++ b/include/fpu/softfloat-parts.h @@ -214,4 +214,7 @@ FloatParts128 parts128_round_to_int(const FloatParts128= *a, FloatParts64 parts64_round_to_fmt(const FloatParts64 *p, float_status *s, const FloatFmt *fmt); =20 +FloatParts64 parts64_scalbn(const FloatParts64 *a, int n, float_status *s); +FloatParts128 parts128_scalbn(const FloatParts128 *a, int n, float_status = *s); + #endif diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 2114797aca..3a9c2748cd 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1633,22 +1633,24 @@ FloatRelation partsN(compare)(const FloatPartsN *a,= const FloatPartsN *b, /* * Multiply A by 2 raised to the power N. */ -static void partsN(scalbn)(FloatPartsN *a, int n, float_status *s) +FloatPartsN partsN(scalbn)(const FloatPartsN *a, int n, float_status *s) { switch (a->cls) { case float_class_snan: case float_class_qnan: - *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_denormal: float_raise(float_flag_input_denormal_used, s); /* fall through */ case float_class_normal: - a->exp +=3D MIN(MAX(n, -0x10000), 0x10000); - break; + { + FloatPartsN r =3D *a; + r.exp +=3D MIN(MAX(n, -0x10000), 0x10000); + return r; + } default: g_assert_not_reached(); } --=20 2.43.0 From nobody Sat May 30 18:38:10 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=1778170156; cv=none; d=zohomail.com; s=zohoarc; b=NZK311XQ7uVC6r+FuvChDIiuRL5fm0/Jvz4oj5Ub2Pj6K9BjNPeQy4nd8pRZGCumAspQcoQsHihSr9tE3fTpf1OAi5y0UbfehdX2E1orMsOUMOtNZwaOxzVj+dg2vL4RF+U5sp6lRG/fC5NuNPpUhVyqgdOT+OXfcUdm77e+LnA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170156; h=Content-Type: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=WXdWgo7U6STUK/+uhFBzCSUvNxA/ZTksmfzvSpriqBs=; b=cspfN55cJ7a6S32YNDuYHdV4I2P2FbtHzxCETp2yeyf6YqVivBecArU6adjNUj1PLEE82KvkjgqWGC4wHa3/CfyBmJR5RNxP3fkMtc3gPxpMB4HpticYipwWGfo64I1QkEWVGQ728JYC/RVjh5gW2oFCg0OgCpzsiXB5/VwWmhM= 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 1778170156339382.98564518799776; Thu, 7 May 2026 09:09:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1Ed-0004fw-8q; Thu, 07 May 2026 12:05: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 1wL1Eb-0004f2-AV for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:57 -0400 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EZ-00072X-9k for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:56 -0400 Received: by mail-ot1-x334.google.com with SMTP id 46e09a7af769-7dbe07d3ec3so527263a34.0 for ; Thu, 07 May 2026 09:05:52 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169952; x=1778774752; 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=WXdWgo7U6STUK/+uhFBzCSUvNxA/ZTksmfzvSpriqBs=; b=tX2G/g+I50xpbLODdL4GAIX7ZVZ9atAZs6iJMIqzGJlnZxEcQejhDwIL720pYGgZQ7 EN07rzyfomv/yoyqWJ5gRu2d5o5riwjP2wkib34TwNfTr/mzwNOSarV2dQWAvMxDL0zT Y2IQp5Pa/JztkFjuWQCyBmIuVBJbrdeAhgoCJzxF8PqVO4Yn9cLdvPmhZCSfaQqUeMFv zA/UHjmP1NVgVEvPwZlWbdKasgNkLMnWpW+qDaMJ9oMan4oFWMil9xBRnkzVCa8FiLRK T5xioLmD5ywln46IbH3m5aDd1tQw4B0r+sud26aysEGMb1RVXAntkelRlWKwJJI11uka nZrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169952; x=1778774752; 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=WXdWgo7U6STUK/+uhFBzCSUvNxA/ZTksmfzvSpriqBs=; b=FJB/LS3aK8K9MVBfTPYgtsPKrpq168x04rocHNu2hAFivwilQocFtjeIUcze4AlQYX iIv9KZzMrm55rVH9NccivQPoTNTk5xZX8dlok8uD3jMomgfn3umgRzmfYbX8mE4DJcSi a4Cza30dD4QuzVeZ3qGF3OXAcB/Geiqzs8CWKDb835rkYhFC9Y2F2ZrEVweBtIYpQM9m tvBRRC5NCLs3VleJ+3nT5meOt/3LJhu3BvupZEiMVrkf+cR7bTQzfYxWu7ay6WT4T2AE K7BF9SfVP2DOItlICyeIu4b5Xd1HGxRKjLVBOYmkUpOn7wkl0IRhcHWxUfKen5y2saYv DHDw== X-Gm-Message-State: AOJu0Yy6RZGT0g4HoZu376ZqrsZBtMEIIeS8d4XO3qq9r1XPo6ANpIFo FwDqjL2N8OYgL+/OU9gJSa94IQap7YbRuuvegTXC/JeHRYCGkmfGy020+oc33Etz8aGZyIQOnFo C9EUL X-Gm-Gg: AeBDiesH55ZpbBeSrbDpyeVM5cVrWns1aHJGH4YVdt+jhMBsjDlW0ogSR5igK/Qd6/Q P5m5e64rFdX0WAAt80vqMlAjWc55DZOF3dMaryPyvRjwYPQz90t1mmWabJ5Oo9yJRVRPAkczoOA R89BadD/3KGPQVUrWXDKvX+9a5bjxLX/0kQij8+EhuVDV+TLQYKTHioZKO0UjKzGszjTM3FvANw zeiihkwpABJcOwL5kHiTe3g8p++fqovo4R6ZolAYojb+1K+QhrocZcKgCm5EYm557aDoOvyB514 QryrBJU17HRAoprCR+u93a0cQ7LCG/7CtnJ2g5nz8+SSltxJSE+FS/AqlPzdBevr03NxPPSpOX3 /yLlqVL/vb9xXLMFIkKSI5UPZ/DmRbfrL3o7HoOCOrlRNoRwUXc8vtPSQmFiLs2ew8XyWV3Q9TS iJnxCOfDEp7nFJAae7y0raiSVWhAVFTtZXcEI9KLxsCaiS1g== X-Received: by 2002:a05:6830:d10:b0:7dc:c43b:9599 with SMTP id 46e09a7af769-7e1dee5c2a3mr4633994a34.7.1778169951445; Thu, 07 May 2026 09:05:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 28/29] fpu: Drop QEMU_FLATTEN from muladd routines Date: Thu, 7 May 2026 11:05:16 -0500 Message-ID: <20260507160518.444797-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::334; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x334.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: 1778170158178158500 The float16, bfloat16 and float128 paths are not so important that they require forced optimization. Reviewed-by: Philippe Mathieu-Daud=C3=A9 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 7234ab27da..90ebd83f69 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1900,9 +1900,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); @@ -2126,8 +2125,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); @@ -2142,8 +2141,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 Sat May 30 18:38:10 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=1778170044; cv=none; d=zohomail.com; s=zohoarc; b=h/mAHoVne0XScJoN1iOPNiGz/dY7SYEdZU0F0TSunU0N1YUsy/Puu0G8inz4HLoCfdgC1i7Zr7b6/ME0rkGCI6ZEsLE7uXSTuWce2MJFUGySz1GmcU8SLr5e4u9mPENZL8yPwQaOguM6XXDzKxz9TxFb1JqZ3Sz4bj9D6Z72tFE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778170044; h=Content-Type: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=9bNnzqtZZ2cVv22AUkUvkDYFz+muAIN/ZlkkhwHbAbo=; b=XhiR8rqbbRPCqSA2+I8O5DDU0pDhZTOhY9KWANcUYp/b3YsmiAnOs6L1oRUnIuA/NhhOwjUO0FbYxtFRErUPt5EQ1YUrcWJgFerLXYtnSK0OQIdlZ7UGKZHn3dSEG4GvAG1SGsZmFHVxdfjVgBXkbop3dwHFkbpmH/6HH5B06m0= 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 1778170044541749.4082647833452; Thu, 7 May 2026 09:07:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wL1Ed-0004gB-TY; Thu, 07 May 2026 12:05: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 1wL1Ec-0004fM-JP for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:58 -0400 Received: from mail-ot1-x332.google.com ([2607:f8b0:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wL1EZ-00072k-A5 for qemu-devel@nongnu.org; Thu, 07 May 2026 12:05:58 -0400 Received: by mail-ot1-x332.google.com with SMTP id 46e09a7af769-7dea20cf21aso971029a34.1 for ; Thu, 07 May 2026 09:05:53 -0700 (PDT) Received: from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7decae680bdsm14647398a34.27.2026.05.07.09.05.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 09:05:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778169953; x=1778774753; 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=9bNnzqtZZ2cVv22AUkUvkDYFz+muAIN/ZlkkhwHbAbo=; b=D5AwQ+0z48QUASF3ali/NHBNEkWRxsrE3cgAggfd4fRAQrVshrCc15ZwVH/B02UD2z 6TT5cM2eDGGU1wHCd9zRM+PBypEX+VR2zQq4OygNhbDtBIqor++51SQnO9LH7WdJFOet JToa39E8bqn/2bAsJ2AT4WE+a9VAjHc2YPS7RYKwuhsYpJiaBv3ZtBWLQDYezbfdLyLs DLmODF09Qi7wqkufPMo4IzZHIwTgE8cK/a4tYG0qR01NPy5E3pxKMk1C0DUZfwxeRTpb sDHijm7TW9S0AKBk4uF+G9gyX7VbO53e7x/N10sLq1xqaM+cMgvLi6mAbPe1aHLovnTo NUDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778169953; x=1778774753; 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=9bNnzqtZZ2cVv22AUkUvkDYFz+muAIN/ZlkkhwHbAbo=; b=p4nGNV8Y5ocepDYudqsT1EHbw7uERzxVOaqvHq4tOiEFachDwnhK7wFewQqJ+Q9Nbe NHTpirPbQx2mf0aIjV7vzRr5CXoz2wRctg94HUD5qWrOiIxkppb6deuG7tgADpId93CC CDAgYJPoYUw0zbvETkuaQgk86PYu6OfysaiUxXtUOHi9otmwFz4H2ro3ETIaNrQrADrH pV4M3PVZp5Ji8Sn6yjDunOgC+iH/EZdqR5yU8wpROViwYxo2qQwFNebjzqeagZKKOsFR l0CGXuUA2k5Yv4AQ+rfGo0PuXBm3XvnoWpMBiNfxKJdC5XbWIhS96E8Szsj0BkYmUrJP kXFQ== X-Gm-Message-State: AOJu0Yx3oc3/1KbdaAM3PUdUs8Jhv/tam8PAh4HTsxKxi0p2zr9UF7Wx xIlPjmH/lcRmtHxs8OeJew5a8SeB7plw/yZa1uYSJv6dcHXforVnqBIS5tOYPzzjek5WyQocqfv OJTsh X-Gm-Gg: AeBDieuHOb+uNCDmG6uWquZ4cfoiqLFP6FuFDk2nYNBskgP0Cg/mHQyd84HH9OqNcwb e3etNruBxT3nrZtTPoull9ZzQiT9UEpdZW2TZlT9k+uzbwpDYZRrqb/mm8vWr9kW1b5vQdjd5A3 GUXEzxUxPc1ELcKi8DYksOoE/YYe+d5QyHVOGM3cZAXy8vLUQQkFaBRxhU6ifbzShR4I8z+y2Oq GteanggkyoNGVtlLhvOZeu1mOs20iiiHUhfa4DIohPnWCAh5dy8ev1SieukWNGAr3qYmmM5R+al ozP03jKv1J6VIgwWHlAaXwbfaZ/BfDLz0vv0uyZ9VOWF4rAgu8HjmFxAlIraRQN0lriB4tRDmHQ ceOY6vw01FBjJ0Z74bp1Eyv3nOeEGsVRTDnQM/jLja3N+4R4XJZ+h0e1pNsN8KfisbpFfIzschO 9AUW5V1D95AmL+z9tAjra4gw0VsbvMawZux8USXsal7vemmg== X-Received: by 2002:a05:6830:3696:b0:7d7:fbe5:e9b3 with SMTP id 46e09a7af769-7e1deec4f0emr5662690a34.3.1778169952806; Thu, 07 May 2026 09:05:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 29/29] host-utils: Introduce signed saturation primitives Date: Thu, 7 May 2026 11:05:17 -0500 Message-ID: <20260507160518.444797-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507160518.444797-1-richard.henderson@linaro.org> References: <20260507160518.444797-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::332; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x332.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: 1778170045457158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/qemu/host-utils.h | 60 ++++++++++++++++++++++++++++++++++++ accel/tcg/tcg-runtime-gvec.c | 20 +++--------- 2 files changed, 64 insertions(+), 16 deletions(-) diff --git a/include/qemu/host-utils.h b/include/qemu/host-utils.h index 181d026b6c..2e8da7fb3d 100644 --- a/include/qemu/host-utils.h +++ b/include/qemu/host-utils.h @@ -606,6 +606,66 @@ static inline bool umul64_overflow(uint64_t x, uint64_= t y, uint64_t *ret) return __builtin_mul_overflow(x, y, ret); } =20 +/** + * sadd32_saturate - addition with saturation + * @x, @y: addends + * + * Computes @x + @y, and saturates rathern than truncating the result. + */ +static inline int32_t sadd32_saturate(int32_t x, int32_t y) +{ + int32_t ret; + if (sadd32_overflow(x, y, &ret)) { + ret =3D y < 0 ? INT32_MIN : INT32_MAX; + } + return ret; +} + +/** + * sadd64_saturate - addition with saturation + * @x, @y: addends + * + * Computes @x + @y, and saturates rathern than truncating the result. + */ +static inline int64_t sadd64_saturate(int64_t x, int64_t y) +{ + int64_t ret; + if (sadd64_overflow(x, y, &ret)) { + ret =3D y < 0 ? INT64_MIN : INT64_MAX; + } + return ret; +} + +/** + * ssub32_saturate - subtraction with saturation + * @x, @y: addends + * + * Computes @x + @y, and saturates rathern than truncating the result. + */ +static inline bool ssub32_saturate(int32_t x, int32_t y) +{ + int32_t ret; + if (ssub32_overflow(x, y, &ret)) { + ret =3D x < 0 ? INT32_MAX : INT32_MIN; + } + return ret; +} + +/** + * ssub64_saturate - subtraction with saturation + * @x, @y: addends + * + * Computes @x + @y, and saturates rathern than truncating the result. + */ +static inline bool ssub64_saturate(int64_t x, int64_t y) +{ + int64_t ret; + if (ssub64_overflow(x, y, &ret)) { + ret =3D x < 0 ? INT64_MAX : INT64_MIN; + } + return ret; +} + /* * Unsigned 128x64 multiplication. * Returns true if the result got truncated to 128 bits. diff --git a/accel/tcg/tcg-runtime-gvec.c b/accel/tcg/tcg-runtime-gvec.c index ff927c5dd8..67a741e45e 100644 --- a/accel/tcg/tcg-runtime-gvec.c +++ b/accel/tcg/tcg-runtime-gvec.c @@ -1109,10 +1109,7 @@ void HELPER(gvec_ssadd32)(void *d, void *a, void *b,= uint32_t desc) for (i =3D 0; i < oprsz; i +=3D sizeof(int32_t)) { int32_t ai =3D *(int32_t *)(a + i); int32_t bi =3D *(int32_t *)(b + i); - int32_t di; - if (sadd32_overflow(ai, bi, &di)) { - di =3D (di < 0 ? INT32_MAX : INT32_MIN); - } + int32_t di =3D sadd32_saturate(ai, bi); *(int32_t *)(d + i) =3D di; } clear_high(d, oprsz, desc); @@ -1126,10 +1123,7 @@ void HELPER(gvec_ssadd64)(void *d, void *a, void *b,= uint32_t desc) for (i =3D 0; i < oprsz; i +=3D sizeof(int64_t)) { int64_t ai =3D *(int64_t *)(a + i); int64_t bi =3D *(int64_t *)(b + i); - int64_t di; - if (sadd64_overflow(ai, bi, &di)) { - di =3D (di < 0 ? INT64_MAX : INT64_MIN); - } + int64_t di =3D sadd64_saturate(ai, bi); *(int64_t *)(d + i) =3D di; } clear_high(d, oprsz, desc); @@ -1177,10 +1171,7 @@ void HELPER(gvec_sssub32)(void *d, void *a, void *b,= uint32_t desc) for (i =3D 0; i < oprsz; i +=3D sizeof(int32_t)) { int32_t ai =3D *(int32_t *)(a + i); int32_t bi =3D *(int32_t *)(b + i); - int32_t di; - if (ssub32_overflow(ai, bi, &di)) { - di =3D (di < 0 ? INT32_MAX : INT32_MIN); - } + int32_t di =3D ssub32_saturate(ai, bi); *(int32_t *)(d + i) =3D di; } clear_high(d, oprsz, desc); @@ -1194,10 +1185,7 @@ void HELPER(gvec_sssub64)(void *d, void *a, void *b,= uint32_t desc) for (i =3D 0; i < oprsz; i +=3D sizeof(int64_t)) { int64_t ai =3D *(int64_t *)(a + i); int64_t bi =3D *(int64_t *)(b + i); - int64_t di; - if (ssub64_overflow(ai, bi, &di)) { - di =3D (di < 0 ? INT64_MAX : INT64_MIN); - } + int64_t di =3D ssub64_saturate(ai, bi); *(int64_t *)(d + i) =3D di; } clear_high(d, oprsz, desc); --=20 2.43.0