From nobody Sat Nov 15 09:50:13 2025 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=1752860280; cv=none; d=zohomail.com; s=zohoarc; b=ILSzsAXjJ3yHZlH/x+7dD8Cacoa1bgcRuQ04W5hGX4sau+6c+77kjFumBtaYByCo+uajKjZJH38+yP4UstETOfJCo21mNAGbgnxYDCDSrodNBoQodeiElF2dNynDsv52XniKtm8bgW/AtpxN1yi15tX3ID+Ddh4X++F+zG/3S+M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752860280; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YKf/B8VHSsBfUBqECITYfDua3rP9fWZhGEM4I7F0JlY=; b=hYg5sYl2zPJQ9fvNsxkDluhvx+nPuH6MlBVQiayHKBEW1ACh0i8Y8cFfjdq3QNm1+r92XedRJXcbBkk8oEfJtUZYgEkl87pesPYXLXTeDFkz/lh3Z9MyTYYglWdL4hgMzIYsFLcme2Djq/UxrFmZ+fAAh5k3MxGyJ1Z6yLCTMJY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752860280296386.70022838420493; Fri, 18 Jul 2025 10:38:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucp1P-00011e-9h; Fri, 18 Jul 2025 13:37:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ucouw-0004zR-C2 for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:42 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ucout-0000pt-Ie for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:41 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-3a6d77b43c9so1872037f8f.3 for ; Fri, 18 Jul 2025 10:30:37 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b61ca25443sm2454655f8f.9.2025.07.18.10.30.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jul 2025 10:30:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1752859836; x=1753464636; 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=YKf/B8VHSsBfUBqECITYfDua3rP9fWZhGEM4I7F0JlY=; b=wdR6pxGtvoQ3tRrDmA/2adNUm3WyNsGXCqBgEkE80WoaussEaBhfi5nvFXNo2T3BBm KhAaZoJ5O5A1V1ba8Tw/abIAcsdCvwszJCo+lzlxim5cTpr17NaYyg65jHxSps5r1IsC +FWN8czbl4NWoUQSuOo2DqMDBGOxUwX6it5FmtmOqcL2dixq0rY4zhTVskfRaKxOIZ+q MK08lwHQYYLhqJYKmz65RgIPdJPNLa9U2uRnIW4XdvWhl96fxA9bAei35o0eQD2rml+/ PSr1l/waVFmi4eFa9Zs9ZRz/XJC19UcKc5Vx6skNyZIsgdNNGiKc/LZa4ZP3aV0BKkJg n+Sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752859836; x=1753464636; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YKf/B8VHSsBfUBqECITYfDua3rP9fWZhGEM4I7F0JlY=; b=YQpAxaKSk5CpHY9ZsTj1pH1bMT7bsmX+aRA7rNMes/Gk2UamPlruQ2+eESHlFWTWU3 yWy5dya8vYQ3Y1gneXBDyhW7RIStGgHFx1D7uCx7plWzlfDepwlPHz9NgPg+0P0JB7jQ WY6nrrtIIQr7ZahrO2ei+aqP7vjzcLdFJZL5/IdwJP+l13naShkdv5XGNicb2lu+oPeV mASn+jj1FdH/k8QM47vROCUzuvBUvyByh9Uz3ULB2tKM3uBVBdhe5xxY6w4Yh3UlUelY MdmFXhly2E4PoZ4cQI8on/hrKYHoAIhqQ15J/nJgySkd7dQOAbQy1HT+qsw/MNAeo29T lC7g== X-Forwarded-Encrypted: i=1; AJvYcCW2kyyuN+Ghr6rqqIJ6XT6d5lUcJzNLl+sV+7cWRCud82A0jo/gN9mi+gbYfFJ9usvge/HHKi535LnZ@nongnu.org X-Gm-Message-State: AOJu0YxJUfgM/1r2GscdAnODaZ3nOHeX1v1EL5pN9BDLLHCZIr0JPZuD tGC1+XzSDBp4auD9zlW70A5kJrcdE6eDqBXVc5tHrhc3oLBF3SOO749QEtcYdmzPT2+8Q7MrEzX Ju2mX X-Gm-Gg: ASbGnctcGt94MSUiR5MNUFsMYfjoCdGKPdOwHAXh+bMpPVBP7V1obDiGyyk2fpK1437 L8poScFFG59w90gKDh9u/N4/HIx+ihnIFKlkpKThjbCO+ticI+yW1hJ1fiUB1przdTn89M5xWnH r+avTliqgzOkKaENxtKsqa6xcod9zxugNof4ANZc2dkyh775ro18jXDWNBCkgIkkEmBhCm8j57V Ik/oSX3nxM71HL++emqhAhywI329QCEFpTajvqkrZCevHRC3icSO1UsSn2TzU+MjOb9fcfnYiKy i+fHyFaaldfy1h2l0DCWuNy6XCGXrsde/5D4qMKw8cyvsbXo6TLKsUKB/u51DHxMYHlLpSMLGeK 7IxM5eRFHspn4KvncSz6m86KhFrPc X-Google-Smtp-Source: AGHT+IEgNdhiz0KsbxfjF3n3pcGcpcrzTZcB5zmCjOLwN7kmeBH4xUvtwkyKLdlX81FnA+fDwqwHnA== X-Received: by 2002:a05:6000:2309:b0:3a4:dfa9:ce28 with SMTP id ffacd0b85a97d-3b60e4be284mr10090209f8f.5.1752859835902; Fri, 18 Jul 2025 10:30:35 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PATCH for-10.1 01/10] target/arm: Add BFADD, BFSUB, BFMUL (unpredicated) Date: Fri, 18 Jul 2025 18:30:23 +0100 Message-ID: <20250718173032.2498900-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718173032.2498900-1-peter.maydell@linaro.org> References: <20250718173032.2498900-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x431.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1752860282527116600 Content-Type: text/plain; charset="utf-8" FEAT_SVE_B16B16 adds bfloat16 versions of the SVE floating point (unpredicated) instructions, which are encoded via sz=3D=3D0b00. Fixes: 7b1613a1020d2942 ("target/arm: Enable FEAT_SME2p1 on -cpu max") Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/tcg/helper.h | 3 +++ target/arm/tcg/translate-sve.c | 6 +++++- target/arm/tcg/vec_helper.c | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/target/arm/tcg/helper.h b/target/arm/tcg/helper.h index 0a006d95142..d9ca5b7c56e 100644 --- a/target/arm/tcg/helper.h +++ b/target/arm/tcg/helper.h @@ -728,16 +728,19 @@ DEF_HELPER_FLAGS_4(gvec_fclt0_h, TCG_CALL_NO_RWG, voi= d, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_4(gvec_fclt0_s, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i3= 2) DEF_HELPER_FLAGS_4(gvec_fclt0_d, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i3= 2) =20 +DEF_HELPER_FLAGS_5(gvec_fadd_b16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(gvec_fadd_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst= , i32) DEF_HELPER_FLAGS_5(gvec_fadd_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst= , i32) DEF_HELPER_FLAGS_5(gvec_fadd_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst= , i32) DEF_HELPER_FLAGS_5(gvec_bfadd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst,= i32) =20 +DEF_HELPER_FLAGS_5(gvec_fsub_b16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(gvec_fsub_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst= , i32) DEF_HELPER_FLAGS_5(gvec_fsub_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst= , i32) DEF_HELPER_FLAGS_5(gvec_fsub_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst= , i32) DEF_HELPER_FLAGS_5(gvec_bfsub, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst,= i32) =20 +DEF_HELPER_FLAGS_5(gvec_fmul_b16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(gvec_fmul_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst= , i32) DEF_HELPER_FLAGS_5(gvec_fmul_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst= , i32) DEF_HELPER_FLAGS_5(gvec_fmul_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst= , i32) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 7b575734fde..f00cccf1548 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -190,6 +190,10 @@ static bool gen_gvec_fpst_zzz(DisasContext *s, gen_hel= per_gvec_3_ptr *fn, static bool gen_gvec_fpst_arg_zzz(DisasContext *s, gen_helper_gvec_3_ptr *= fn, arg_rrr_esz *a, int data) { + /* These insns use MO_8 to encode BFloat16 */ + if (a->esz =3D=3D MO_8 && !dc_isar_feature(aa64_sve_b16b16, s)) { + return false; + } return gen_gvec_fpst_zzz(s, fn, a->rd, a->rn, a->rm, data, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64= ); } @@ -4146,7 +4150,7 @@ static bool trans_FADDA(DisasContext *s, arg_rprr_esz= *a) =20 #define DO_FP3(NAME, name) \ static gen_helper_gvec_3_ptr * const name##_fns[4] =3D { \ - NULL, gen_helper_gvec_##name##_h, \ + gen_helper_gvec_##name##_b16, gen_helper_gvec_##name##_h, \ gen_helper_gvec_##name##_s, gen_helper_gvec_##name##_d \ }; \ TRANS_FEAT(NAME, aa64_sve, gen_gvec_fpst_arg_zzz, name##_fns[a->esz], = a, 0) diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index bae6165b505..76a9ab0da39 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -1467,16 +1467,19 @@ void HELPER(NAME)(void *vd, void *vn, void *vm, = \ clear_tail(d, oprsz, simd_maxsz(desc)); = \ } =20 +DO_3OP(gvec_fadd_b16, bfloat16_add, float16) DO_3OP(gvec_fadd_h, float16_add, float16) DO_3OP(gvec_fadd_s, float32_add, float32) DO_3OP(gvec_fadd_d, float64_add, float64) DO_3OP(gvec_bfadd, bfloat16_add, bfloat16) =20 +DO_3OP(gvec_fsub_b16, bfloat16_sub, float16) DO_3OP(gvec_fsub_h, float16_sub, float16) DO_3OP(gvec_fsub_s, float32_sub, float32) DO_3OP(gvec_fsub_d, float64_sub, float64) DO_3OP(gvec_bfsub, bfloat16_sub, bfloat16) =20 +DO_3OP(gvec_fmul_b16, bfloat16_mul, float16) DO_3OP(gvec_fmul_h, float16_mul, float16) DO_3OP(gvec_fmul_s, float32_mul, float32) DO_3OP(gvec_fmul_d, float64_mul, float64) --=20 2.43.0 From nobody Sat Nov 15 09:50:13 2025 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=1752860983; cv=none; d=zohomail.com; s=zohoarc; b=Ia/G5XFrHvZi8MYgGCNuW6pcsEjnU8Zx4+Ob2vfZTImB/4NRsrWFOr+zeamBoSJnh0biL7QdmuTyBpJo6l1Ph6l4Je0XBMgs65lXhXuwFILtSjFE+WrF5ctUq5kI3HfySBpjGAEuugy1qihdCCDfBj3e/XVZDCfi0dxFCm9JgSM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752860983; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uLfjhxFT0Ps5Y4fJ3SOOFDl8UOrvO7ldqv+w/Ov3CDc=; b=NG4O8De+l3qlDSwJUwiTb4vO0s4LbPNPMT3mxKUuL7zx6joSz4AQaJFe6n1ioodw8Ezr/3b1m074HS0yxV//6BNPYdP4cwPPPxN4zynmBJeLQFa0p75xwN41PeuXyzaYGnYKetNcXn744J/ULTLjocvm8yAuh/w/0pFnfxW/ZXI= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752860983616255.16175865800528; Fri, 18 Jul 2025 10:49:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucpDD-0006Qt-D7; Fri, 18 Jul 2025 13:49:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ucouw-0004zg-NK for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:42 -0400 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ucout-0000q4-HR for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:42 -0400 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-3b5e6bfb427so1362294f8f.2 for ; Fri, 18 Jul 2025 10:30:38 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b61ca25443sm2454655f8f.9.2025.07.18.10.30.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jul 2025 10:30:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1752859837; x=1753464637; 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=uLfjhxFT0Ps5Y4fJ3SOOFDl8UOrvO7ldqv+w/Ov3CDc=; b=Y1KiAL5ovlnZ9lfk77op6jQJr3fZCG/AfpLg981gGMOoxy9zOsTzRTWVfZBsW7RNCm Vkv+oVYi54b6KpMAEFeplcPfxFYhCpx1wvBwzbkeR+9zwdsGpMCXQAtOQjGnfnGoNqmd U4oiC2viYjpMFwGzKsfWqbCHQ2gL2wEbuTAJb3fMH+MXM/izeSYC3Z6mrXBXqn7e9IsX 0Rodc9yf6VChMU13pAYMpfawbbT4FlMaVWeVJVWmXrQvT9j1CY2eUnhX6vxEnT77slux f9NCOaKYNdfbxtgrtkMqO/CQFqlJOytWlw1b7C8v7WLvI2MaFJFH8EVi8Uj2uV5HNrK8 L+9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752859837; x=1753464637; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uLfjhxFT0Ps5Y4fJ3SOOFDl8UOrvO7ldqv+w/Ov3CDc=; b=JDBLkUDKnXa3MLJ+OwbUNZGLc+lIZIIku50HCzDtpVB8ystAPADm+Xp8ggYSWPlpX7 WC1osh/UustJOsS/pZ+7Rz1QWHyGzB5fUgYrLi1uZNNjNIm4dyFBtf0NXYVSfN4tVbbB 0XQPRNovmzDYnLvkdLnsaUoDojmzr+ZpFmrAYDluhYAcR2kR9pldvwQ++VOC498OjBNQ W5f4r3dMHUybDthfvZNPU0taQd+g3gTpbhXxhHRy4FTv5qgipLAubJ2kTHP+hWhgO1H7 /Gb1r/ng1UiZbewRVKPOdwtu0Ai+TNBrbkm1ZqtQ7qgCNuT5KOFOEibMWw4sNQrstLvd b4TQ== X-Forwarded-Encrypted: i=1; AJvYcCWMGqiFRzWFeo/crHotluy10BdJaFD+B6ROxyKxP2LnEp1T/9j3pwm63fIhUoh1zubdQ9ZaeFnagLE5@nongnu.org X-Gm-Message-State: AOJu0YwIcOvfbWodERe5lrjQ8Yj8UODrDNGzZwIpI5TEEhCEAaHClYjn 4fyaPpEvH7WSnIWR5i7aK0fbLkVIRaGOnfu0HQeEMpHt8x8qC2fx1MPPv5dynoK5OOE= X-Gm-Gg: ASbGncueOjsuNnCLX2U+ehUPrFjkH95OfCB6KHPRppgI2Sncy6+6PbQMrNmJd2TF2Z+ v0EykbRirJWpoSf0a6xk8Ls4b0hGel4wvxQpoCRnq/Arft9isChdSd53+/xCYWEj6XPxbDC5P2W 89yF7xLhsjZ1rAW9meVsemsOfGKSQ4ReQSoubc/NXeQkibxKVrg9rE+4fE46QhcflGS5VZSTkxn ZyatXdTVpsLGVcyYfi8fbkmgVO3Aird/A32N9zOj6gf1kKLazyaFkhKOxHrVnB1+NdID19TPRYi L8i2RUeZNOD9QS5Ki1Vl31occHtSVD5AvjmF9TtAfelRcHB35urUVr8ZQOUiHqQ6+gKM+NJuW5K hEio4P240TTELDWiKUWglw56bXN3Z X-Google-Smtp-Source: AGHT+IEZ/8Dq4H3f1TYlOQSvccLptAZUQh3U3D5++hHppWYiv3XFQTkhVjQZMZYQNW07AvaF8Dwong== X-Received: by 2002:a05:6000:652:b0:3b5:dc07:50a4 with SMTP id ffacd0b85a97d-3b61b0ec0f1mr2991191f8f.2.1752859837151; Fri, 18 Jul 2025 10:30:37 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PATCH for-10.1 02/10] target/arm: Add BFADD, BFSUB, BFMUL, BFMAXNM, BFMINNM (predicated) Date: Fri, 18 Jul 2025 18:30:24 +0100 Message-ID: <20250718173032.2498900-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718173032.2498900-1-peter.maydell@linaro.org> References: <20250718173032.2498900-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::432; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1752860984636116600 Content-Type: text/plain; charset="utf-8" FEAT_SVE_B16B16 adds bfloat16 versions of the SVE floating point (predicated) instructions, which are encoded via sz=3D0b00. Add BFADD, BFSUB, BFMUL, BFMAXNM, BFMINNM; these are all the insns in this group which do not change behaviour for AH=3D1. We will deal with BFMAX/BFMIN (which do have different AH=3D1 behaviour) in a following commit. Fixes: 7b1613a1020d2942 ("target/arm: Enable FEAT_SME2p1 on -cpu max") Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/tcg/helper-sve.h | 10 ++++++++++ target/arm/tcg/sve_helper.c | 5 +++++ target/arm/tcg/translate-sve.c | 22 +++++++++++++++++----- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/target/arm/tcg/helper-sve.h b/target/arm/tcg/helper-sve.h index c36090d13d1..d612bcaded3 100644 --- a/target/arm/tcg/helper-sve.h +++ b/target/arm/tcg/helper-sve.h @@ -1196,6 +1196,8 @@ DEF_HELPER_FLAGS_5(sve_fcmne0_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_5(sve_fcmne0_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_6(sve_fadd_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fadd_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fadd_s, TCG_CALL_NO_RWG, @@ -1203,6 +1205,8 @@ DEF_HELPER_FLAGS_6(sve_fadd_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(sve_fadd_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_6(sve_fsub_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fsub_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fsub_s, TCG_CALL_NO_RWG, @@ -1210,6 +1214,8 @@ DEF_HELPER_FLAGS_6(sve_fsub_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(sve_fsub_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_6(sve_fmul_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fmul_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fmul_s, TCG_CALL_NO_RWG, @@ -1252,6 +1258,8 @@ DEF_HELPER_FLAGS_6(sve_ah_fmax_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(sve_ah_fmax_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_6(sve_fminnum_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fminnum_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fminnum_s, TCG_CALL_NO_RWG, @@ -1259,6 +1267,8 @@ DEF_HELPER_FLAGS_6(sve_fminnum_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(sve_fminnum_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_6(sve_fmaxnum_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fmaxnum_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fmaxnum_s, TCG_CALL_NO_RWG, diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index 43b872c7fd6..a229503bc21 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -4629,14 +4629,17 @@ void HELPER(NAME)(void *vd, void *vn, void *vm, voi= d *vg, \ } while (i !=3D 0); \ } =20 +DO_ZPZZ_FP(sve_fadd_b16, uint16_t, H1_2, bfloat16_add) DO_ZPZZ_FP(sve_fadd_h, uint16_t, H1_2, float16_add) DO_ZPZZ_FP(sve_fadd_s, uint32_t, H1_4, float32_add) DO_ZPZZ_FP(sve_fadd_d, uint64_t, H1_8, float64_add) =20 +DO_ZPZZ_FP(sve_fsub_b16, uint16_t, H1_2, bfloat16_sub) DO_ZPZZ_FP(sve_fsub_h, uint16_t, H1_2, float16_sub) DO_ZPZZ_FP(sve_fsub_s, uint32_t, H1_4, float32_sub) DO_ZPZZ_FP(sve_fsub_d, uint64_t, H1_8, float64_sub) =20 +DO_ZPZZ_FP(sve_fmul_b16, uint16_t, H1_2, bfloat16_mul) DO_ZPZZ_FP(sve_fmul_h, uint16_t, H1_2, float16_mul) DO_ZPZZ_FP(sve_fmul_s, uint32_t, H1_4, float32_mul) DO_ZPZZ_FP(sve_fmul_d, uint64_t, H1_8, float64_mul) @@ -4661,10 +4664,12 @@ DO_ZPZZ_FP(sve_ah_fmax_h, uint16_t, H1_2, helper_vf= p_ah_maxh) DO_ZPZZ_FP(sve_ah_fmax_s, uint32_t, H1_4, helper_vfp_ah_maxs) DO_ZPZZ_FP(sve_ah_fmax_d, uint64_t, H1_8, helper_vfp_ah_maxd) =20 +DO_ZPZZ_FP(sve_fminnum_b16, uint16_t, H1_2, bfloat16_minnum) DO_ZPZZ_FP(sve_fminnum_h, uint16_t, H1_2, float16_minnum) DO_ZPZZ_FP(sve_fminnum_s, uint32_t, H1_4, float32_minnum) DO_ZPZZ_FP(sve_fminnum_d, uint64_t, H1_8, float64_minnum) =20 +DO_ZPZZ_FP(sve_fmaxnum_b16, uint16_t, H1_2, bfloat16_maxnum) DO_ZPZZ_FP(sve_fmaxnum_h, uint16_t, H1_2, float16_maxnum) DO_ZPZZ_FP(sve_fmaxnum_s, uint32_t, H1_4, float32_maxnum) DO_ZPZZ_FP(sve_fmaxnum_d, uint64_t, H1_8, float64_maxnum) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index f00cccf1548..2739c226d73 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -407,6 +407,10 @@ static bool gen_gvec_fpst_zzzp(DisasContext *s, gen_he= lper_gvec_4_ptr *fn, static bool gen_gvec_fpst_arg_zpzz(DisasContext *s, gen_helper_gvec_4_ptr = *fn, arg_rprr_esz *a) { + /* These insns use MO_8 to encode BFloat16. */ + if (a->esz =3D=3D MO_8 && !dc_isar_feature(aa64_sve_b16b16, s)) { + return false; + } return gen_gvec_fpst_zzzp(s, fn, a->rd, a->rn, a->rm, a->pg, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A6= 4); } @@ -4206,13 +4210,21 @@ TRANS_FEAT_NONSTREAMING(FTSMUL, aa64_sve, gen_gvec_= fpst_arg_zzz, s->fpcr_ah ? name##_ah_zpzz_fns[a->esz] : \ name##_zpzz_fns[a->esz], a) =20 -DO_ZPZZ_FP(FADD_zpzz, aa64_sve, sve_fadd) -DO_ZPZZ_FP(FSUB_zpzz, aa64_sve, sve_fsub) -DO_ZPZZ_FP(FMUL_zpzz, aa64_sve, sve_fmul) +/* Similar, but for insns where sz =3D=3D 0 encodes bfloat16 */ +#define DO_ZPZZ_FP_B16(NAME, FEAT, name) \ + static gen_helper_gvec_4_ptr * const name##_zpzz_fns[4] =3D { \ + gen_helper_##name##_b16, gen_helper_##name##_h, \ + gen_helper_##name##_s, gen_helper_##name##_d \ + }; \ + TRANS_FEAT(NAME, FEAT, gen_gvec_fpst_arg_zpzz, name##_zpzz_fns[a->esz]= , a) + +DO_ZPZZ_FP_B16(FADD_zpzz, aa64_sve, sve_fadd) +DO_ZPZZ_FP_B16(FSUB_zpzz, aa64_sve, sve_fsub) +DO_ZPZZ_FP_B16(FMUL_zpzz, aa64_sve, sve_fmul) DO_ZPZZ_AH_FP(FMIN_zpzz, aa64_sve, sve_fmin, sve_ah_fmin) DO_ZPZZ_AH_FP(FMAX_zpzz, aa64_sve, sve_fmax, sve_ah_fmax) -DO_ZPZZ_FP(FMINNM_zpzz, aa64_sve, sve_fminnum) -DO_ZPZZ_FP(FMAXNM_zpzz, aa64_sve, sve_fmaxnum) +DO_ZPZZ_FP_B16(FMINNM_zpzz, aa64_sve, sve_fminnum) +DO_ZPZZ_FP_B16(FMAXNM_zpzz, aa64_sve, sve_fmaxnum) DO_ZPZZ_AH_FP(FABD, aa64_sve, sve_fabd, sve_ah_fabd) DO_ZPZZ_FP(FSCALE, aa64_sve, sve_fscalbn) DO_ZPZZ_FP(FDIV, aa64_sve, sve_fdiv) --=20 2.43.0 From nobody Sat Nov 15 09:50:13 2025 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=1752860563; cv=none; d=zohomail.com; s=zohoarc; b=mdK9Fmsod6l3Hucboi7+PUaJucNlDH096SwqhV/eSDtIS7fjq3LT9HdSRkaa8WKIgwvArB7r86qlQx3P4VCXXHCqf582w9HFpb1DCCMxlO+HiNhGT9YpH0kjxD+MJ8yQB37jf4nNgX7geF7zoBY59mW1QTkyOKjXiW10dOV1AJA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752860563; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RxiUs6iZVyfgl9d86a275Qgs9iTqajSpXpijYt48TxM=; b=PzR+KMIr/vJXDHync+rvZRXLuExRoMfWaUYkGuyMKNjbAC8Rt7unDBt20lO4PFjH2iRKNxRjpqYeTyfmSHCR+c7TcMS44rBswbsFM4kAQ4OMN4+JSEaq4EjtWa+rFPPf89xeLYa/R4K6hiQzVkDVVoII9vuZVobd56QvUVhyANY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752860563828309.8454694477632; Fri, 18 Jul 2025 10:42:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucp6G-0006fk-28; Fri, 18 Jul 2025 13:42:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ucoux-00050w-St for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:44 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ucout-0000qD-VE for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:43 -0400 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-3a588da60dfso1454204f8f.1 for ; Fri, 18 Jul 2025 10:30:39 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b61ca25443sm2454655f8f.9.2025.07.18.10.30.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jul 2025 10:30:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1752859838; x=1753464638; 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=RxiUs6iZVyfgl9d86a275Qgs9iTqajSpXpijYt48TxM=; b=JdhrYLPWMCCaXSqO/8pzHdkXBf75+pfspdE2YI29QjK+sZP3A6r8UFLOD3gyQ2MP+7 BY08OKNEKtnaagA8M+qenMbz28MBDmTvuj5x8iM094Zxx3lzwCXJMeUtUykudNG02vbL o17oYq9ucFaUMkYfI94pyeJiaEwjAn30yEqAlVZKNCoZGxr8zN0s0Jnx/ZsVOt8TLkjz 5xq5wmYkApV1c778kd9+2E0/1vqTToPslnjql8olW3f9vMfrNb+KrcIKxyhHOV7M9/a4 5FBMLcPhJ3q22oyaN2u6nwZEKJDKBx9C0dUNzUNkrD1sn3ad7qzSSi40UAT5pHeLB3ir Qx5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752859838; x=1753464638; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RxiUs6iZVyfgl9d86a275Qgs9iTqajSpXpijYt48TxM=; b=oOciD6wpPMwi/4qyF+Q7SAOI5THhzpHCajYPDWQe2+RPz+Sv37JTH+gGc3eU6o7unc OxbgmPnTVhLFWS7CxxZIfSsCp3jMmdHjaP1pY4oHxq+xO1QoOLZACmo6FI8e4Xf22D7b C9bNyCqqACTnzeoofYrIPHgOF9KghF4gUYvXvsTYYGbzgNBFkhRmiKb4nNCdAOaPn3Fv z89aVfq6QoDwSHSzc0cP8h2hw3Ojcpbr92NsIg+89gSPk3E+D2VlNc0lDhXHN0jKzYkG CfVArP9oDTb9AoVcgj/153Gc2l6D8jV/kswsxOwvcao3qlE3gLR/dubPkWN14f38tf/T PvzQ== X-Forwarded-Encrypted: i=1; AJvYcCWhdJ0LYnRK6xhpSmjZS1rT1iwDpnQAQUkXjVvFosKiuSUnHA3sQ33t/HeJyr/V7uL0zrut5udEmx/E@nongnu.org X-Gm-Message-State: AOJu0YxAuIF7elfXZs8L6OYo43O/BbIBaEo3gsFUvNeTA7MROAsaTkPy hXiEHomc8JHdG00sPzfS5CvwbVOWUO098/2UjhyVqet2YL0lpkx+c7vb6Cf0OJfC0ITSjkNyyFq kGhrd X-Gm-Gg: ASbGnctSxQ8YIOCG+gacQBD6t4OfR5mbz7aHJkajNvBk2VvsYtBAJFpknaMN4kTodt8 3f+z54ti8L2UGmtIegSTSZ1Zpqq6QinzpVst7rUZT2vGG14/kiP2GyqOB3mGvewM4ROovhtzPNo qeLaucSw2jk/n9Zo9uhB7D30UZJjjZBseXMhSl4jHv53nYuru4Rxw4JlkkeLvMQx7hQEPWCZOmf 09B6P8LafYucsPIu+blPFWiU0ZmJ5EnRUTnv0GKODwrUyqq6ukhk3MVgRgcmxAOKG2PjdXSA9cO Lc29cXyuGaod4xLZ2euqTe91cwmbrMDOyTkQsbYhoh2wCXU8oqFbFwDKLb2ycOyFsciwmtMd8P0 4iiPoR1EjYVkmZeWPWvGRyy356kna X-Google-Smtp-Source: AGHT+IEVaVlpvMpYmZ0FgokhwR+ZbGw4V/qYatVFSl4IyceDSxLcN6LrsCpVaFODf4LjX/oCzUVo6w== X-Received: by 2002:a05:6000:40ce:b0:3a5:27ba:47a8 with SMTP id ffacd0b85a97d-3b60e52355cmr8174611f8f.52.1752859838163; Fri, 18 Jul 2025 10:30:38 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PATCH for-10.1 03/10] target/arm: Add BFMIN, BFMAX (predicated) Date: Fri, 18 Jul 2025 18:30:25 +0100 Message-ID: <20250718173032.2498900-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718173032.2498900-1-peter.maydell@linaro.org> References: <20250718173032.2498900-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::429; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1752860565449116600 Content-Type: text/plain; charset="utf-8" FEAT_SVE_B16B16 adds bfloat16 versions of the SVE floating point (predicated) instructions, which are encoded via sz=3D0b00. Add the BFMAX and BFMIN insns. These have separate behaviour for AH=3D1 and AH=3D0; we have already implemented the AH=3D1 helper for the SME2 versions of these insns. Fixes: 7b1613a1020d2942 ("target/arm: Enable FEAT_SME2p1 on -cpu max") Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/tcg/helper-sve.h | 8 ++++++++ target/arm/tcg/sve_helper.c | 4 ++++ target/arm/tcg/translate-sve.c | 17 +++++++++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/target/arm/tcg/helper-sve.h b/target/arm/tcg/helper-sve.h index d612bcaded3..cb6c2355e58 100644 --- a/target/arm/tcg/helper-sve.h +++ b/target/arm/tcg/helper-sve.h @@ -1230,6 +1230,8 @@ DEF_HELPER_FLAGS_6(sve_fdiv_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(sve_fdiv_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_6(sve_fmin_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fmin_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fmin_s, TCG_CALL_NO_RWG, @@ -1237,6 +1239,8 @@ DEF_HELPER_FLAGS_6(sve_fmin_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(sve_fmin_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_6(sve_fmax_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fmax_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_fmax_s, TCG_CALL_NO_RWG, @@ -1244,6 +1248,8 @@ DEF_HELPER_FLAGS_6(sve_fmax_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(sve_fmax_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_6(sve_ah_fmin_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_ah_fmin_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_ah_fmin_s, TCG_CALL_NO_RWG, @@ -1251,6 +1257,8 @@ DEF_HELPER_FLAGS_6(sve_ah_fmin_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(sve_ah_fmin_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_6(sve_ah_fmax_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_ah_fmax_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve_ah_fmax_s, TCG_CALL_NO_RWG, diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index a229503bc21..1a56fa86d9c 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -4648,18 +4648,22 @@ DO_ZPZZ_FP(sve_fdiv_h, uint16_t, H1_2, float16_div) DO_ZPZZ_FP(sve_fdiv_s, uint32_t, H1_4, float32_div) DO_ZPZZ_FP(sve_fdiv_d, uint64_t, H1_8, float64_div) =20 +DO_ZPZZ_FP(sve_fmin_b16, uint16_t, H1_2, bfloat16_min) DO_ZPZZ_FP(sve_fmin_h, uint16_t, H1_2, float16_min) DO_ZPZZ_FP(sve_fmin_s, uint32_t, H1_4, float32_min) DO_ZPZZ_FP(sve_fmin_d, uint64_t, H1_8, float64_min) =20 +DO_ZPZZ_FP(sve_fmax_b16, uint16_t, H1_2, bfloat16_max) DO_ZPZZ_FP(sve_fmax_h, uint16_t, H1_2, float16_max) DO_ZPZZ_FP(sve_fmax_s, uint32_t, H1_4, float32_max) DO_ZPZZ_FP(sve_fmax_d, uint64_t, H1_8, float64_max) =20 +DO_ZPZZ_FP(sve_ah_fmin_b16, uint16_t, H1_2, helper_sme2_ah_fmin_b16) DO_ZPZZ_FP(sve_ah_fmin_h, uint16_t, H1_2, helper_vfp_ah_minh) DO_ZPZZ_FP(sve_ah_fmin_s, uint32_t, H1_4, helper_vfp_ah_mins) DO_ZPZZ_FP(sve_ah_fmin_d, uint64_t, H1_8, helper_vfp_ah_mind) =20 +DO_ZPZZ_FP(sve_ah_fmax_b16, uint16_t, H1_2, helper_sme2_ah_fmax_b16) DO_ZPZZ_FP(sve_ah_fmax_h, uint16_t, H1_2, helper_vfp_ah_maxh) DO_ZPZZ_FP(sve_ah_fmax_s, uint32_t, H1_4, helper_vfp_ah_maxs) DO_ZPZZ_FP(sve_ah_fmax_d, uint64_t, H1_8, helper_vfp_ah_maxd) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 2739c226d73..27af3df9a4b 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4218,11 +4218,24 @@ TRANS_FEAT_NONSTREAMING(FTSMUL, aa64_sve, gen_gvec_= fpst_arg_zzz, }; \ TRANS_FEAT(NAME, FEAT, gen_gvec_fpst_arg_zpzz, name##_zpzz_fns[a->esz]= , a) =20 +#define DO_ZPZZ_AH_FP_B16(NAME, FEAT, name, ah_name) \ + static gen_helper_gvec_4_ptr * const name##_zpzz_fns[4] =3D { \ + gen_helper_##name##_b16, gen_helper_##name##_h, \ + gen_helper_##name##_s, gen_helper_##name##_d \ + }; \ + static gen_helper_gvec_4_ptr * const name##_ah_zpzz_fns[4] =3D { \ + gen_helper_##ah_name##_b16, gen_helper_##ah_name##_h, \ + gen_helper_##ah_name##_s, gen_helper_##ah_name##_d \ + }; \ + TRANS_FEAT(NAME, FEAT, gen_gvec_fpst_arg_zpzz, \ + s->fpcr_ah ? name##_ah_zpzz_fns[a->esz] : \ + name##_zpzz_fns[a->esz], a) + DO_ZPZZ_FP_B16(FADD_zpzz, aa64_sve, sve_fadd) DO_ZPZZ_FP_B16(FSUB_zpzz, aa64_sve, sve_fsub) DO_ZPZZ_FP_B16(FMUL_zpzz, aa64_sve, sve_fmul) -DO_ZPZZ_AH_FP(FMIN_zpzz, aa64_sve, sve_fmin, sve_ah_fmin) -DO_ZPZZ_AH_FP(FMAX_zpzz, aa64_sve, sve_fmax, sve_ah_fmax) +DO_ZPZZ_AH_FP_B16(FMIN_zpzz, aa64_sve, sve_fmin, sve_ah_fmin) +DO_ZPZZ_AH_FP_B16(FMAX_zpzz, aa64_sve, sve_fmax, sve_ah_fmax) DO_ZPZZ_FP_B16(FMINNM_zpzz, aa64_sve, sve_fminnum) DO_ZPZZ_FP_B16(FMAXNM_zpzz, aa64_sve, sve_fmaxnum) DO_ZPZZ_AH_FP(FABD, aa64_sve, sve_fabd, sve_ah_fabd) --=20 2.43.0 From nobody Sat Nov 15 09:50:13 2025 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=1752860693; cv=none; d=zohomail.com; s=zohoarc; b=lEyCjgmT529Ytduetkp1QHeFx/KVPfQsyuUXt2X5vYv1NvnfkZSQ+42VXu9W+BNyic8Xzw6mVuGOlplHp4+cBWzE3Fj+WBFGwuGQtj0jjiadajY9QlCuB5YAVCa9Nl3lYA8wL0VAf5lfnPTmkIsxrZj/BxU2rOZECgPO5yBdrqA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752860693; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jgkKA7jFLUhvg4OYYIjmQGp+3jhrWVpDQ9M3g3VK3l8=; b=b7OVJd4yKsi7e8vKoCHVqAC66JYAdUon9+51KQcDsYiz3yrPZBANNH/k8kzH5LJW1CT53YNwwQyGdk2DBYFL50cLxvhYJ7oPb6Dv6kJMvHuaEXsUS2xctfw1XR3Notb/VA7SlLkJwWoIiwiwByChzad7kRkxBKXKtaIQ7s4CqwQ= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752860693380426.05030294644087; Fri, 18 Jul 2025 10:44:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucp6I-0006jG-0c; Fri, 18 Jul 2025 13:42:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ucouy-00051U-Lt for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:44 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450: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 1ucouw-0000qa-Ia for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:44 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-4561a4a8bf2so25174595e9.1 for ; Fri, 18 Jul 2025 10:30:41 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b61ca25443sm2454655f8f.9.2025.07.18.10.30.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jul 2025 10:30:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1752859839; x=1753464639; 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=jgkKA7jFLUhvg4OYYIjmQGp+3jhrWVpDQ9M3g3VK3l8=; b=lpoefUY8l/3UXGevDvBZZcBVreyO2Xa8kB5KHscI0J8PkIyn71+YfbRe/EffPGKnpj ZP5Wta9JstARHJE8V3GcdBXq8tU58QlvpRptRanbexZ7ox/Uigso4cWuVlqM2F8RRy1p enzGWtz1Y/tfU+VhlsRzjfhtAuuszKCC3oM2IYs9JPg5SGcTxL0rHrA310fht/sQ6eEr YBv5LCmyhwD4Gcsm+ElprOc5fDDhlj4NsHV1Vi3+EMl4D5qeB9AFHpkFJira4YWHGlmK wCMtyLAXKXbnwK7u1aXnI3WsBQNeq5edheUhetx+NHAw+kGAd6Fg+lAAvLWqRfp7szpl +N6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752859839; x=1753464639; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jgkKA7jFLUhvg4OYYIjmQGp+3jhrWVpDQ9M3g3VK3l8=; b=c5IkAYUEs81dTBan2M6J1p3NHukqzxsxAMD1YjTyOqFHQ0yf2m/3L3eFayMuyzdT8i s1/VQ9leDciDZA+YEDNRhKZcojySyWRWRh7qEns4gFmLSSSX3rlMHEVNVrWolHVyRW0e mLJaDK+00QKSMLv2Uo55uiVlFz72/q9Q4Zsbr7TCgNnfiFnZP/YkrUFkD7pyVG5ACWS5 2yTS1P8iUNNyS1JF3hdfXqgWa5m2g4q65FNVf7JrufMEsTG+jx/hNidKPDtn9HkQEBz2 YqtsSURHc3UAyM3jwjCokV8cARbmX6jyZlwVYifNqozICv21Ky7AKZdrxGJIAH68diZh ybKg== X-Forwarded-Encrypted: i=1; AJvYcCWKYvKMkS/VPYIoGq09/okKwOtNqzqXfBrQojR9arwVegSBki4/SNqMzfzdcNzMWpsjb4cAPOJTayLk@nongnu.org X-Gm-Message-State: AOJu0Yx0nSEfqAlAjhcq3aNevfn7mh9WoQfGCXYvXPTg2qnGieNkR2NG QyCiYosApxixIHoEBAVP8rpNY96lpH0/EjkUAyezUh/RmReNDntEncPy3RpHYYSRMko= X-Gm-Gg: ASbGncsjlf8bywZVifSX7jQXVgTFMkn+SUPlFm97D50+FoJhx90qbaRDyaUMJbjMYW/ //mkba4fpqsE688XkdRAnY1AVlYck95SARwiWQYasWpJb1cDtNpwHzPtdDKfD6UCDTYl4stWyOY 71UZkRO8ul4t24Pcn+a37rBItkgUdPBI95q6m4xBptoxbj+Tos7aUfOY7zfdUJMVF2FSn6lEXpd h5EpnvS7+jBVS1EZ3rCLZ+L2pSF14I0/PEq4RKOseQRL2PT+yR3FPPUA3MdIv3yqF37X8y1OfCO f7A26UeLH4zMc6fQ5YlmU1sk7Fo6I3DZx1SgJ307MwLW5pkUU8PPqPoulhd4TBOdli29F42U2tO NMRdnXzOixemCTfy3zez4BSxKXBCIriSAZYnN6gg= X-Google-Smtp-Source: AGHT+IGvFxZwDESpi2qQ5RZMrpAbqn3QdxdXvxFK56bUHp4YKFG1zl1qCN9hsUp6DRRCVyNXtCxGzg== X-Received: by 2002:a05:6000:3cf:b0:3a6:d95c:5db with SMTP id ffacd0b85a97d-3b60e4cb61emr9126609f8f.26.1752859839407; Fri, 18 Jul 2025 10:30:39 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PATCH for-10.1 04/10] target/arm: Add BFMUL (indexed) Date: Fri, 18 Jul 2025 18:30:26 +0100 Message-ID: <20250718173032.2498900-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718173032.2498900-1-peter.maydell@linaro.org> References: <20250718173032.2498900-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1752860694713116600 Content-Type: text/plain; charset="utf-8" FEAT_SVE_B16B16 adds a bfloat16 version of the FMUL insn in the floating-point multiply (indexed) instruction group. The encoding is slightly bespoke; in our implementation we use MO_8 to indicate bfloat16, as with the other B16B16 insns. Fixes: 7b1613a1020d2942 ("target/arm: Enable FEAT_SME2p1 on -cpu max") Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/tcg/helper.h | 2 ++ target/arm/tcg/sve.decode | 1 + target/arm/tcg/translate-sve.c | 2 +- target/arm/tcg/vec_helper.c | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/target/arm/tcg/helper.h b/target/arm/tcg/helper.h index d9ca5b7c56e..4da32db9021 100644 --- a/target/arm/tcg/helper.h +++ b/target/arm/tcg/helper.h @@ -823,6 +823,8 @@ DEF_HELPER_FLAGS_5(gvec_ftsmul_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_5(gvec_ftsmul_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_5(gvec_fmul_idx_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_5(gvec_fmul_idx_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_5(gvec_fmul_idx_s, TCG_CALL_NO_RWG, diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 2efd5f57e45..a76f2236f43 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1062,6 +1062,7 @@ FMLS_zzxz 01100100 11 1 ..... 000001 ..... ....= . @rrxr_1 esz=3D3 ### SVE FP Multiply Indexed Group =20 # SVE floating-point multiply (indexed) +FMUL_zzx 01100100 0. 1 ..... 001010 ..... ..... @rrx_3 esz=3D0 FMUL_zzx 01100100 0. 1 ..... 001000 ..... ..... @rrx_3 esz=3D1 FMUL_zzx 01100100 10 1 ..... 001000 ..... ..... @rrx_2 esz=3D2 FMUL_zzx 01100100 11 1 ..... 001000 ..... ..... @rrx_1 esz=3D3 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 27af3df9a4b..918cf6e1bd4 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -3907,7 +3907,7 @@ TRANS_FEAT(FMLS_zzxz, aa64_sve, gen_gvec_fpst_zzzz, */ =20 static gen_helper_gvec_3_ptr * const fmul_idx_fns[4] =3D { - NULL, gen_helper_gvec_fmul_idx_h, + gen_helper_gvec_fmul_idx_b16, gen_helper_gvec_fmul_idx_h, gen_helper_gvec_fmul_idx_s, gen_helper_gvec_fmul_idx_d, }; TRANS_FEAT(FMUL_zzx, aa64_sve, gen_gvec_fpst_zzz, diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index 76a9ab0da39..33a136b90a6 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -1785,6 +1785,7 @@ void HELPER(NAME)(void *vd, void *vn, void *vm, = \ =20 #define nop(N, M, S) (M) =20 +DO_FMUL_IDX(gvec_fmul_idx_b16, nop, bfloat16_mul, float16, H2) DO_FMUL_IDX(gvec_fmul_idx_h, nop, float16_mul, float16, H2) DO_FMUL_IDX(gvec_fmul_idx_s, nop, float32_mul, float32, H4) DO_FMUL_IDX(gvec_fmul_idx_d, nop, float64_mul, float64, H8) --=20 2.43.0 From nobody Sat Nov 15 09:50:13 2025 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=1752861036; cv=none; d=zohomail.com; s=zohoarc; b=Rnvq4FwfAGSaDvK81INirzH//drc4qWnNpfQGiRcndhlPEg89gT5PQ4Op31MwDL+c/dqcYUG3MP0oW2etfjl8+6HXFswC6aNaVVmEjjX0oNXJAdVgA302npuWfhc50A2AXwQ9X34tcigW+RGvLWdi52kNz+Z8iX3qH3HqNM5fwE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752861036; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=83s1l7e8slhfNxjdmj0HuMqD4EcLsV28TpE5dx21NzY=; b=AwzJFAdvAos3jtjTEet1v/rxRk/+YCAf2sQt3FQFkaCnQzgt6mvO//av2J2YMeEMVQpCWnfLDixeCpgKgBrq/wXGuVprkwwqDuOWJ+cAXyYXJTRDCDt/8VIOIlueLJEp83JLZIoodlnrld6ZOcw7EMrExWeRCdoWBDYyI4PJKTQ= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752861036145677.0198025118768; Fri, 18 Jul 2025 10:50:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucpDk-0007A9-Vh; Fri, 18 Jul 2025 13:50:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ucov0-000537-EB for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:46 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450: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 1ucoux-0000r0-Mn for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:46 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-45618ddd62fso24721345e9.3 for ; Fri, 18 Jul 2025 10:30:42 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b61ca25443sm2454655f8f.9.2025.07.18.10.30.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jul 2025 10:30:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1752859841; x=1753464641; 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=83s1l7e8slhfNxjdmj0HuMqD4EcLsV28TpE5dx21NzY=; b=ptzvvufoKTTe0GsziqwQAEtd7TUaitvGZtN7M9IEV0ePxpm4njk/i+ipqadPS5aKnx hcqEjtvv0ylrbY1wwG0TXC03arKEOPE1FghgALbHp9E9r/8LMK5kLr4ctvpRXFCUyEAW TmwD9nsFKmY2MiRGX0euah52FH3b7wN7CUHzxtqFf++YRRgp/wOL6OR81+weKI7r0OdF 8IWnC8Z8Tqc+/JksxiAhgUSW1PNnYs4YIP7+VZ4e1J9b58rNzjE1yynR9AJAALqF4/EY kCyWVK25U2spOYLmHsM1WyRBIwdo6+zZVZX4eQHriZzjqbcC3jZfKtfYftfhZUPVZjt6 FIfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752859841; x=1753464641; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=83s1l7e8slhfNxjdmj0HuMqD4EcLsV28TpE5dx21NzY=; b=Yh73Da7dbJSGi2qNHkUkrYQR2zAkxfLwxu6RrmqsgtWwRByokkU2jEkTxQJm/wxC2u 3emILHi00sNf70KT+2kg5hFSV8tX+KrufbyK5Tb/yb+PwsGUiWQfl54DEc+2WZvFf5va 2kQEeitwCR/zZn2u6xQ5hlW3mlmUa6AnoFitri3ghQ/84vacK2a3OdnYmZm0h/TS9gu/ RnPK176C8YpCAevOXyiWP4iFA7FOasxCkS85Hvdm11/nq9+RmOdjxQcQQgKIEsY8HArS ZMPxnvRz3drEE+6wSN3577gnpXtoADDVUkC5N6lMr0VQL4yguNxLYESG1LnoNfasOiWh tSoQ== X-Forwarded-Encrypted: i=1; AJvYcCW/QO1JtWu3DzQ93t2hi5oViOpvh/MZr+FS5K+EKEw9+5RV+ClpaoE9PvyetmSsqIfc/f/gYoUpGKta@nongnu.org X-Gm-Message-State: AOJu0YwNRQmQYSiqjYwyhmoGpugHGQixIjSpfNpAns1mHutj5OpxDovV txknv2njnHC/pxu7a6RMIFD754B1aYaynrsIlQyQjpM4dnJG1VddmNb8xpsCmnB+wF8= X-Gm-Gg: ASbGncvxfUIFVQPW9SRQJHjQ9puGKepj6ufCVuwC4CpC5YarVLvJZIq/fwpZwArHZhY Fvyu8hLzLULA+IcTAAGX8FEZoKrv4Lo/HWbrtl8ObIj6V6I9i7a0G0qytNTzxE0afDM1Gm61iNc KXgvGqgoQbzHOAhSm5TmcZzp3CQPhPDafb8jXMWrvPmc9BUAUGhQwwW3wMLuZ879e3iYoQGVSkV wUenSBnv7XBCmgnoggxjpvQLQWrR/zMy5L8/S5rySycdsVIIbfunqBpVHetOfv5euUszqk2cU7t pfHfa7wgjKHrs6N+YhZHmCeQF8LANNXicnzcsEnaozkDYoshygA52for7klhUFZR/V3CgHZSijM zVIJp9uU63KVj4CMbsT1Wyl3dB5D8 X-Google-Smtp-Source: AGHT+IF5qlS51ngxkOnePtdx/r9fP5wVYXkNq5FayuK+HvABgeKa+5Hq+untG0XVyYjLx/kbLxjQng== X-Received: by 2002:a05:600c:c4a6:b0:440:6a1a:d89f with SMTP id 5b1f17b1804b1-45632a45295mr92026695e9.4.1752859841431; Fri, 18 Jul 2025 10:30:41 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PATCH for-10.1 05/10] target/arm: Add BFMLA, BFMLS (vectors) Date: Fri, 18 Jul 2025 18:30:27 +0100 Message-ID: <20250718173032.2498900-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718173032.2498900-1-peter.maydell@linaro.org> References: <20250718173032.2498900-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1752861037210116600 Content-Type: text/plain; charset="utf-8" FEAT_SVE_B16B16 adds bfloat16 versions of the FMLA and FMLS insns in the "SVE floating-point multiply-accumulate writing addend" group, encoded as sz=3D0b00. Fixes: 7b1613a1020d2942 ("target/arm: Enable FEAT_SME2p1 on -cpu max") Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/tcg/helper-sve.h | 14 +++++++ target/arm/tcg/sve_helper.c | 69 ++++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 21 ++++++++--- 3 files changed, 98 insertions(+), 6 deletions(-) diff --git a/target/arm/tcg/helper-sve.h b/target/arm/tcg/helper-sve.h index cb6c2355e58..5e4b7fd8cf4 100644 --- a/target/arm/tcg/helper-sve.h +++ b/target/arm/tcg/helper-sve.h @@ -1541,6 +1541,8 @@ DEF_HELPER_FLAGS_6(sve_fcadd_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_6(sve_fcadd_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_7(sve_fmla_zpzzz_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_fmla_zpzzz_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_fmla_zpzzz_s, TCG_CALL_NO_RWG, @@ -1548,6 +1550,8 @@ DEF_HELPER_FLAGS_7(sve_fmla_zpzzz_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_7(sve_fmla_zpzzz_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_7(sve_fmls_zpzzz_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_fmls_zpzzz_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_fmls_zpzzz_s, TCG_CALL_NO_RWG, @@ -1555,6 +1559,8 @@ DEF_HELPER_FLAGS_7(sve_fmls_zpzzz_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_7(sve_fmls_zpzzz_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_7(sve_fnmla_zpzzz_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_fnmla_zpzzz_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_fnmla_zpzzz_s, TCG_CALL_NO_RWG, @@ -1562,6 +1568,8 @@ DEF_HELPER_FLAGS_7(sve_fnmla_zpzzz_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_7(sve_fnmla_zpzzz_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_7(sve_fnmls_zpzzz_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_fnmls_zpzzz_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_fnmls_zpzzz_s, TCG_CALL_NO_RWG, @@ -1569,6 +1577,8 @@ DEF_HELPER_FLAGS_7(sve_fnmls_zpzzz_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_7(sve_fnmls_zpzzz_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_7(sve_ah_fmls_zpzzz_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_ah_fmls_zpzzz_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_ah_fmls_zpzzz_s, TCG_CALL_NO_RWG, @@ -1576,6 +1586,8 @@ DEF_HELPER_FLAGS_7(sve_ah_fmls_zpzzz_s, TCG_CALL_NO_R= WG, DEF_HELPER_FLAGS_7(sve_ah_fmls_zpzzz_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_7(sve_ah_fnmla_zpzzz_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_ah_fnmla_zpzzz_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_ah_fnmla_zpzzz_s, TCG_CALL_NO_RWG, @@ -1583,6 +1595,8 @@ DEF_HELPER_FLAGS_7(sve_ah_fnmla_zpzzz_s, TCG_CALL_NO_= RWG, DEF_HELPER_FLAGS_7(sve_ah_fnmla_zpzzz_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_7(sve_ah_fnmls_zpzzz_b16, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_ah_fnmls_zpzzz_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_7(sve_ah_fnmls_zpzzz_s, TCG_CALL_NO_RWG, diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index 1a56fa86d9c..105cc5dd122 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -5099,6 +5099,75 @@ DO_ZPZ_FP(flogb_d, float64, H1_8, do_float64_logb_as= _int) =20 #undef DO_ZPZ_FP =20 +static void do_fmla_zpzzz_b16(void *vd, void *vn, void *vm, void *va, void= *vg, + float_status *status, uint32_t desc, + uint16_t neg1, uint16_t neg3, int flags) +{ + intptr_t i =3D simd_oprsz(desc); + uint64_t *g =3D vg; + + do { + uint64_t pg =3D g[(i - 1) >> 6]; + do { + i -=3D 2; + if (likely((pg >> (i & 63)) & 1)) { + float16 e1, e2, e3, r; + + e1 =3D *(uint16_t *)(vn + H1_2(i)) ^ neg1; + e2 =3D *(uint16_t *)(vm + H1_2(i)); + e3 =3D *(uint16_t *)(va + H1_2(i)) ^ neg3; + r =3D bfloat16_muladd(e1, e2, e3, flags, status); + *(uint16_t *)(vd + H1_2(i)) =3D r; + } + } while (i & 63); + } while (i !=3D 0); +} + +void HELPER(sve_fmla_zpzzz_b16)(void *vd, void *vn, void *vm, void *va, + void *vg, float_status *status, uint32_t des= c) +{ + do_fmla_zpzzz_b16(vd, vn, vm, va, vg, status, desc, 0, 0, 0); +} + +void HELPER(sve_fmls_zpzzz_b16)(void *vd, void *vn, void *vm, void *va, + void *vg, float_status *status, uint32_t des= c) +{ + do_fmla_zpzzz_b16(vd, vn, vm, va, vg, status, desc, 0x8000, 0, 0); +} + +void HELPER(sve_fnmla_zpzzz_b16)(void *vd, void *vn, void *vm, void *va, + void *vg, float_status *status, uint32_t de= sc) +{ + do_fmla_zpzzz_b16(vd, vn, vm, va, vg, status, desc, 0x8000, 0x8000, 0); +} + +void HELPER(sve_fnmls_zpzzz_b16)(void *vd, void *vn, void *vm, void *va, + void *vg, float_status *status, uint32_t de= sc) +{ + do_fmla_zpzzz_b16(vd, vn, vm, va, vg, status, desc, 0, 0x8000, 0); +} + +void HELPER(sve_ah_fmls_zpzzz_b16)(void *vd, void *vn, void *vm, void *va, + void *vg, float_status *status, uint32_t des= c) +{ + do_fmla_zpzzz_b16(vd, vn, vm, va, vg, status, desc, 0, 0, + float_muladd_negate_product); +} + +void HELPER(sve_ah_fnmla_zpzzz_b16)(void *vd, void *vn, void *vm, void *va, + void *vg, float_status *status, uint32_t de= sc) +{ + do_fmla_zpzzz_b16(vd, vn, vm, va, vg, status, desc, 0, 0, + float_muladd_negate_product | float_muladd_negate_c); +} + +void HELPER(sve_ah_fnmls_zpzzz_b16)(void *vd, void *vn, void *vm, void *va, + void *vg, float_status *status, uint32_t de= sc) +{ + do_fmla_zpzzz_b16(vd, vn, vm, va, vg, status, desc, 0, 0, + float_muladd_negate_c); +} + static void do_fmla_zpzzz_h(void *vd, void *vn, void *vm, void *va, void *= vg, float_status *status, uint32_t desc, uint16_t neg1, uint16_t neg3, int flags) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 918cf6e1bd4..37ecbc2b7c0 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4368,19 +4368,28 @@ TRANS_FEAT(FCADD, aa64_sve, gen_gvec_fpst_zzzp, fca= dd_fns[a->esz], a->rd, a->rn, a->rm, a->pg, a->rot | (s->fpcr_ah << 1), a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) =20 +static bool do_fmla_zpzzz(DisasContext *s, arg_rprrr_esz *a, + gen_helper_gvec_5_ptr *fn) +{ + /* These insns use MO_8 to encode BFloat16 */ + if (a->esz =3D=3D MO_8 && !dc_isar_feature(aa64_sve_b16b16, s)) { + return false; + } + return gen_gvec_fpst_zzzzp(s, fn, a->rd, a->rn, a->rm, a->ra, a->pg, 0, + a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A= 64); +} + #define DO_FMLA(NAME, name, ah_name) \ static gen_helper_gvec_5_ptr * const name##_fns[4] =3D { \ - NULL, gen_helper_sve_##name##_h, \ + gen_helper_sve_##name##_b16, gen_helper_sve_##name##_h, \ gen_helper_sve_##name##_s, gen_helper_sve_##name##_d \ }; \ static gen_helper_gvec_5_ptr * const name##_ah_fns[4] =3D { \ - NULL, gen_helper_sve_##ah_name##_h, \ + gen_helper_sve_##ah_name##_b16, gen_helper_sve_##ah_name##_h, \ gen_helper_sve_##ah_name##_s, gen_helper_sve_##ah_name##_d \ }; \ - TRANS_FEAT(NAME, aa64_sve, gen_gvec_fpst_zzzzp, \ - s->fpcr_ah ? name##_ah_fns[a->esz] : name##_fns[a->esz], \ - a->rd, a->rn, a->rm, a->ra, a->pg, 0, \ - a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) + TRANS_FEAT(NAME, aa64_sve, do_fmla_zpzzz, a, \ + s->fpcr_ah ? name##_ah_fns[a->esz] : name##_fns[a->esz]) =20 /* We don't need an ah_fmla_zpzzz because fmla doesn't negate anything */ DO_FMLA(FMLA_zpzzz, fmla_zpzzz, fmla_zpzzz) --=20 2.43.0 From nobody Sat Nov 15 09:50:13 2025 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=1752860702; cv=none; d=zohomail.com; s=zohoarc; b=H6Q8e8sE+ASTjKoaPGawAlPE2vbp3RyoF55gOGGXw+dgLsDMbtLP/78TdoSguGkh8O6j9D9XUgaY9oeGMLj9LlIT1yCp1Xh0Hl7cEYyedgA/27rBw2isu9R+kKbnA8a4N3rkvBTjY8guy5gGYvxN+mvZ0AnIOmj709D9CGShzuQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752860702; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VyMsfSztYFHbGVMCLKLC5I8Ijnyva6nXu44zZ1IshgE=; b=P8QY7r0yBdjxvFX50KyM+9HkkyY2DneoLnqrKKt+QLx4xJ3clfl0x0Ks4G4rOdMJXmbhDNxGb1rkpd0oI4zEyXXfyRyO62SQ1gjIIdp3CjGvB9biW71meaPzclqr/YaYpAk7Kl/gshmH+UcYfSNmWBi78MgzEKlp8ro6ejYBBKU= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752860702812507.5071163474255; Fri, 18 Jul 2025 10:45:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucp8Z-00009i-Mt; Fri, 18 Jul 2025 13:44:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ucov2-00054b-30 for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:48 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ucouy-0000rR-NT for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:47 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-3a588da60dfso1454243f8f.1 for ; Fri, 18 Jul 2025 10:30:43 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b61ca25443sm2454655f8f.9.2025.07.18.10.30.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jul 2025 10:30:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1752859843; x=1753464643; 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=VyMsfSztYFHbGVMCLKLC5I8Ijnyva6nXu44zZ1IshgE=; b=ljupMkHrAwyFR9XozWzoypbNuZqqiZDg4n0HEJuO5c6aPfpLTjo6zbZuUaohmE106J 5LiWxtbgq0EbDIEQR90PDHN+eveBM9P2s+19UzTOQjdGdQjpd4cMw98g0wxh7ZG7gfNb ThwInp5LjbR3gnK2BAZFSS0GlSFZAvqowIKQiLzGzwmX2zygy5vTyV+BALdMvGhsNqUe HMu1m2f3k9Nspf6MROhYGe/D7fi2lqkW2QMU+mRu9JYqPtBlaFcmIHp1Q6IOFgOkxqok g4/eC2V2NGAd1Fk0+AuU99lvuiFUm7UF9oBXv6HbpC/WHbjKqI2JNywgf5iTWbKnStt6 wqJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752859843; x=1753464643; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VyMsfSztYFHbGVMCLKLC5I8Ijnyva6nXu44zZ1IshgE=; b=L4Qm7pHUUNrNIFCGGq9mrDg1CzTk7qD24vxCfDwaGk2gZeYYI57SH77MjxJe2EqpdR r+r59w+xDAHF7y5XhcpbceCqvCPn3qFoSPlAnvOKp+bDB95c+JVtx+U4O9mg/gYjijcr +s9gIjdgz1R/nT6lHbT9LI7mizt6AG97H54hXRBSKhm/Q93yLr3bSPaganmgIX9tda1s aXDKpb4f+lmMYHBUYqp3JmsAVbRcV92RBtBsDDNeBAkMPxo1fVzj7rY/x0DhhWuj0qZh Db+HsU9h/4D3+LKu7Z/DWBFqDSVpk2SHM40GCIeSAo2XBoG9fGUuRq8TeyZfq16JXdVw eOlQ== X-Forwarded-Encrypted: i=1; AJvYcCVdzEK9tiIHK6CwfurKo51MCAm2QjQfQiVq0lrA23wTXDGvsstb0Y87gyCN6hrgyVgxWeCAuj5/5d2R@nongnu.org X-Gm-Message-State: AOJu0YwjOu+tV03bM0QylVslcQjSbjSVkY2sZnb/oppmpnqkwwwJTUMW XcKBZdKRYSne+QAeR16kioFvWNJ85m5lSJOzMZ9sZ21nnwD5/xkxBkINjXvSqyy/bC1wurr3zk6 2hAnH X-Gm-Gg: ASbGncsyGN5AvqnC7nBeKK1WC1CexPHq4o141jri+WzdMaWuBrrSRQs+uUxCZwgs0qZ Oali8fHeBtApYBbwPh+9Y8F3HCKEX8ujpylbv3pA4ZStciAWoWVVpGoxO0w7QvVhfGkGgPIadH7 xC0XWPFJHOBztoiNUu7Mqp22kmIcVmYyDQL6pJMsxGvH0uSoQlxxpDjORzh6RDPXyMeYdClJhUD I1s6FU2Y+nGlvffxVclX3J11ayQdTb7rpZOv04VMAhg1yCwiO5LPr2O6e/OxrE0+R4D3hS3vfh8 GVVVY/2YmpH6FZzFQDQiJCfUj+VYl6wyntA8sadk73Inl+3l8Iktz5fobWEAPIoxBTs4Rsu7PQ3 8rCaPd7ZvIxGRdCzQ3xmEXiwzQc5nim7sVj+TJBw= X-Google-Smtp-Source: AGHT+IF8JvaDI+K4gJ6Ood9Ko2I0lJRIE7kQvERFUFXAxL5aRNdguIns1WeHEMxzzgU7H6yDCVb6vw== X-Received: by 2002:a05:6000:2002:b0:3a3:ec58:ebf2 with SMTP id ffacd0b85a97d-3b60e4c4915mr7728316f8f.7.1752859842562; Fri, 18 Jul 2025 10:30:42 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PATCH for-10.1 06/10] target/arm: Add BFMLA, BFMLS (indexed) Date: Fri, 18 Jul 2025 18:30:28 +0100 Message-ID: <20250718173032.2498900-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718173032.2498900-1-peter.maydell@linaro.org> References: <20250718173032.2498900-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::433; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1752860704788116600 Content-Type: text/plain; charset="utf-8" FEAT_SVE_B16B16 adds bfloat16 versions of the FMLA and FMLS insns in the SVE floating-point multiply-add (indexed) insn group. Implement these. Fixes: 7b1613a1020d2942 ("target/arm: Enable FEAT_SME2p1 on -cpu max") Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/tcg/sve.decode | 2 ++ target/arm/tcg/translate-sve.c | 25 ++++++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index a76f2236f43..a77b725c876 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1052,9 +1052,11 @@ FCMLA_zzxz 01100100 11 1 index:1 rm:4 0001 rot:= 2 rn:5 rd:5 \ ### SVE FP Multiply-Add Indexed Group =20 # SVE floating-point multiply-add (indexed) +FMLA_zzxz 01100100 0. 1 ..... 000010 ..... ..... @rrxr_3 esz=3D0 FMLA_zzxz 01100100 0. 1 ..... 000000 ..... ..... @rrxr_3 esz=3D1 FMLA_zzxz 01100100 10 1 ..... 000000 ..... ..... @rrxr_2 esz=3D2 FMLA_zzxz 01100100 11 1 ..... 000000 ..... ..... @rrxr_1 esz=3D3 +FMLS_zzxz 01100100 0. 1 ..... 000011 ..... ..... @rrxr_3 esz=3D0 FMLS_zzxz 01100100 0. 1 ..... 000001 ..... ..... @rrxr_3 esz=3D1 FMLS_zzxz 01100100 10 1 ..... 000001 ..... ..... @rrxr_2 esz=3D2 FMLS_zzxz 01100100 11 1 ..... 000001 ..... ..... @rrxr_1 esz=3D3 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 37ecbc2b7c0..fc76624b5a1 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -3883,24 +3883,31 @@ DO_SVE2_RRXR_ROT(CDOT_zzxw_d, gen_helper_sve2_cdot_= idx_d) *** SVE Floating Point Multiply-Add Indexed Group */ =20 +static bool do_fmla_zzxz(DisasContext *s, arg_rrxr_esz *a, + gen_helper_gvec_4_ptr *fn) +{ + /* These insns use MO_8 to encode BFloat16 */ + if (a->esz =3D=3D MO_8 && !dc_isar_feature(aa64_sve_b16b16, s)) { + return false; + } + return gen_gvec_fpst_zzzz(s, fn, a->rd, a->rn, a->rm, a->ra, a->index, + a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A6= 4); +} + static gen_helper_gvec_4_ptr * const fmla_idx_fns[4] =3D { - NULL, gen_helper_gvec_fmla_idx_h, + gen_helper_gvec_bfmla_idx, gen_helper_gvec_fmla_idx_h, gen_helper_gvec_fmla_idx_s, gen_helper_gvec_fmla_idx_d }; -TRANS_FEAT(FMLA_zzxz, aa64_sve, gen_gvec_fpst_zzzz, - fmla_idx_fns[a->esz], a->rd, a->rn, a->rm, a->ra, a->index, - a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) +TRANS_FEAT(FMLA_zzxz, aa64_sve, do_fmla_zzxz, a, fmla_idx_fns[a->esz]) =20 static gen_helper_gvec_4_ptr * const fmls_idx_fns[4][2] =3D { - { NULL, NULL }, + { gen_helper_gvec_bfmls_idx, gen_helper_gvec_ah_bfmls_idx }, { gen_helper_gvec_fmls_idx_h, gen_helper_gvec_ah_fmls_idx_h }, { gen_helper_gvec_fmls_idx_s, gen_helper_gvec_ah_fmls_idx_s }, { gen_helper_gvec_fmls_idx_d, gen_helper_gvec_ah_fmls_idx_d }, }; -TRANS_FEAT(FMLS_zzxz, aa64_sve, gen_gvec_fpst_zzzz, - fmls_idx_fns[a->esz][s->fpcr_ah], - a->rd, a->rn, a->rm, a->ra, a->index, - a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) +TRANS_FEAT(FMLS_zzxz, aa64_sve, do_fmla_zzxz, a, + fmls_idx_fns[a->esz][s->fpcr_ah]) =20 /* *** SVE Floating Point Multiply Indexed Group --=20 2.43.0 From nobody Sat Nov 15 09:50:13 2025 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=1752860314; cv=none; d=zohomail.com; s=zohoarc; b=LZ5/ZMi9xGhFcdyuYYzuGRavdMvUoaLi6fbQGOUPrF9PCtPyem5RsYOSWueU3pwTmw6rVO7nwnEHlQyMjjZbNj5+PfgVktAq/F4Dj/ZfELIUSIR8jFbM/WWuTuLXJ1mXGJm+hB9i2N+QgD6cVpbmmhotMttdFZ8naxRxyKcVBzs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752860314; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XvEZoZH3mUSnAV2VTJKTR+Ia4eaH8LTVsbCwMx9JGI4=; b=JHGompUDThVB4zgmwRgp9tRGMBhu5AcEpxLnfGb65+QpHCskKkphBro9Lcg+zlgVnoJbtqgNrZfheKztujRH17FAReMf5k/e7cKJOgGUWXmxPWTPVaFPh6WT7KZQlvH15K4OeToMRUvJuN7hfuj9dUClFHNFpO7j9gC/V0xwJbQ= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175286031453034.66690363074542; Fri, 18 Jul 2025 10:38:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucp1x-0001wX-Gd; Fri, 18 Jul 2025 13:37:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ucov3-00055a-An for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:51 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450: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 1ucouz-0000s8-Pv for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:48 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-45619d70c72so27916785e9.0 for ; Fri, 18 Jul 2025 10:30:45 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b61ca25443sm2454655f8f.9.2025.07.18.10.30.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jul 2025 10:30:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1752859844; x=1753464644; 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=XvEZoZH3mUSnAV2VTJKTR+Ia4eaH8LTVsbCwMx9JGI4=; b=dOFS40arjTd82yGeo/6/JZeJh8EtxaQ3O+PQu8GCP9We7ZQLMSe65/svq0PzjwdRgA cgDTpmj7xEF3YwT3SLemPul9AtqCoQ+pR0vedc8l4qr2GxhtnQvkl3gXmMuFzq3+e/PM BgMwh/vwnhwIFFdJbWY2FLz8ELccxJjA50DlWjtKQGm8aGkYHBS+b6NDT8nWnm1ujslp QcfAM6y0bcVawBQDDynGbPBjeRM4/Tv1SVWWDLZRt5UF+fipOg+Y1Ij2qvNV+i0r7DaL rlOLhkOPR4Wj6yFtut1Jt3WtfjROhfPt5LD6TiDGRt3jkIMN6R7AXFSeaEsH4scG9ZFL FXew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752859844; x=1753464644; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XvEZoZH3mUSnAV2VTJKTR+Ia4eaH8LTVsbCwMx9JGI4=; b=I78lVfXnq6FptUPyfp/vRVVyOceCNw/fAwVDVYlqAHa3cYVxsi0hnichqamjJ27nwA 36N8byRVBeIN8nIhtOPDjHbb/CQcusen2WYJ/eH1VM6PziPgWqavoI6O4drNC5LfUbZf KpVhGwwm/o32X5xiBtL9L7ZgmJuLSnVaEFzuGpouI0nm2DqasxfNW/b97q6QOLlWdXNb bwN9NH/UUSIJxBTLUXc18Yrq43ckwp9aOh3dnIUi9BPb58BbSqNrf2/21Z/YKNhYD+En Vkip9RCvtWNov/g7aryFafmrHR4rjnzwWgsoCgiQRMJMZbbFYjBoHmKDiGB1+wRZTqnv uMig== X-Forwarded-Encrypted: i=1; AJvYcCXK4mTfUb8fTurkakt2EWkRFrbQ8QR9AkZO2ucS+UuFfizwC/Oju33MI3ZKzPK/RWqIKzu2FPZPxnNC@nongnu.org X-Gm-Message-State: AOJu0Ywex/8q4bPpQ1ErCO7lMY+k4UGQnQOqIM3DqK55houdRplRQgHZ IVkzQIdZQgWG4aCFw7IA07EWLQcGI3dwIPQyZZfkDLm6ikOEOqY1lNIvAdR25LZhBYbNVQC2ym3 mlMDp X-Gm-Gg: ASbGncujdrKv+dcc9RCHcDqC2K2KrUiRxn2Y8ybDgtJ/o1l6XBV1zozKNpe5GYZHY+L sXIHAnKP27B0IAqpNCBAtlP/KhjOOqkKVWxEEZhAw7ss6ELVMxEOzRIrZAfn8MBVNVHAzbgK3t5 6ZgDDkHMCg+9/LtctTyFgo1V213ZVsewkZ4zJZwIVcopPul1FFPSeffdKqqvdkP5hzyqg0sA/aK 3NkYa1Ia0FGTq+Z3CWrigoTySFm4k7J+EonDp6LEfTVF74RN1q30xDVc8ppF0onXdlNtqWszhgl WN0NfLIx0AE1txaDwv5NDDYZGWoaBX5aXH0pnSOWSpCw4Xrm33jmVvZ9AX2cXj6aLCJEewSSzHI 30FPKgvL8azA6CUShwDbUXLFzduS6fvXROrtwCXk= X-Google-Smtp-Source: AGHT+IFrnkwHPbSooHVEXVPASDSTgFr48II+Atg7XpMzelaM+pU51pxQrmZcUuFUHaUMFnjvgtSzvQ== X-Received: by 2002:a5d:5f47:0:b0:3a5:7895:7f6b with SMTP id ffacd0b85a97d-3b613ab26f5mr7415234f8f.7.1752859843644; Fri, 18 Jul 2025 10:30:43 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PATCH for-10.1 07/10] target/arm: Correct sense of FPCR.AH test for FMAXQV and FMINQV Date: Fri, 18 Jul 2025 18:30:29 +0100 Message-ID: <20250718173032.2498900-8-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718173032.2498900-1-peter.maydell@linaro.org> References: <20250718173032.2498900-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1752860316826116600 Content-Type: text/plain; charset="utf-8" When we implemented the FMAXQV and FMINQV insns we accidentally inverted the sense of the FPCR.AH test, so we gave the AH=3D1 behaviour when FPCR.AH was zero, and vice-versa. (The difference is limited to hadling of negative zero and NaN inputs.) Fixes: 1de7ecfc12d05 ("target/arm: Implement FADDQV, F{MIN, MAX}{NM}QV for = SVE2p1") Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index fc76624b5a1..2ed440aff15 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4020,7 +4020,7 @@ static gen_helper_gvec_3_ptr * const fmaxqv_ah_fns[4]= =3D { gen_helper_sve2p1_ah_fmaxqv_s, gen_helper_sve2p1_ah_fmaxqv_d, }; TRANS_FEAT(FMAXQV, aa64_sme2p1_or_sve2p1, gen_gvec_fpst_arg_zpz, - (s->fpcr_ah ? fmaxqv_fns : fmaxqv_ah_fns)[a->esz], a, 0, + (s->fpcr_ah ? fmaxqv_ah_fns : fmaxqv_fns)[a->esz], a, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) =20 static gen_helper_gvec_3_ptr * const fminqv_fns[4] =3D { @@ -4032,7 +4032,7 @@ static gen_helper_gvec_3_ptr * const fminqv_ah_fns[4]= =3D { gen_helper_sve2p1_ah_fminqv_s, gen_helper_sve2p1_ah_fminqv_d, }; TRANS_FEAT(FMINQV, aa64_sme2p1_or_sve2p1, gen_gvec_fpst_arg_zpz, - (s->fpcr_ah ? fminqv_fns : fminqv_ah_fns)[a->esz], a, 0, + (s->fpcr_ah ? fminqv_ah_fns : fminqv_fns)[a->esz], a, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) =20 /* --=20 2.43.0 From nobody Sat Nov 15 09:50:13 2025 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=1752860693; cv=none; d=zohomail.com; s=zohoarc; b=bt33peObB6zHlSp9BPAKGfIeMMK1zlpauOYHcSD7dbsIYZ6AhKnCQ+GbpUkxkVon5l6YfDXvw2m+4wnS+6gEfSwVZO+Ui4yzBLKRxiEoZrCxX1KEMb1U+8Rxieef5t2KwXX6SmdQCHvjeB+rdSTrX5+Rvz90/IE5JtiWya5rXQE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752860693; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VTq6sdILRqpJUa4aACdnr1dXTMtMDz2K4P9Jj5bpG7E=; b=FErtImtIobJDtw+gPXNUs/Vv0fdu2Cl6UbJgdxjIclOm82nImXnqEuYlvcunIMJ1ywVYfYa/8KleDs7XnjsmYdBpqRBA4wnfAa7HS0cXrZm0uTxDC+MaMAQ3YbmApPJrIIoTP4ds9wzMUPYoTRFFm0OtOz2F7omPnTXU5vz5yrs= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752860693296576.1869569445955; Fri, 18 Jul 2025 10:44:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucp89-000867-Us; Fri, 18 Jul 2025 13:44:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ucov3-00055z-Uq for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:52 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450: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 1ucov0-0000sa-Nt for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:49 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-451d54214adso17179825e9.3 for ; Fri, 18 Jul 2025 10:30:46 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b61ca25443sm2454655f8f.9.2025.07.18.10.30.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jul 2025 10:30:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1752859845; x=1753464645; 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=VTq6sdILRqpJUa4aACdnr1dXTMtMDz2K4P9Jj5bpG7E=; b=Cr1rBjbQOPdd0iMcCKRN8oEZlarmlzn7k232BHijLQBlBsBpTUdjMZjNkQy7F3TPbN Qs2vVNmaBcjJNO1Go+tUZwwy5m7c725j3rHb0Bof3oO+d119QECTCBh6ecfvDg2/unBe GA9kLqqktK7h2EEmwxpwWEht1sKk6K528Q7oAm1L/78KvqUBpNLwBQZHXm48Xp+IlTEN EmhrSKZU/v+bVI5qGvVopxXpsPdcLOBk47ahikYh9Q3W6QiRmrjNDVofdryD5sFDQv+l IC3NDq1Jxz5dvjDmNpUd4lt0earNkwfvcRZxyCHbFs2zYCFFZj9plB1hMN+ASZJ9TpuD o8HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752859845; x=1753464645; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VTq6sdILRqpJUa4aACdnr1dXTMtMDz2K4P9Jj5bpG7E=; b=YlnieUhdDGCheW1jy/s1AEb8YEWpAS8PCRzdC3jhQkoK/aXCuScDl+FxO/+MkVD/cL EWB5flvhhugKtGr14uFGThIOCScdazJjYWi1j2yzQPPo+4RkBIRyf2994iQDHZ4PS3E+ Dv+1FVkrIVun0RvKV+RT1i/9zrbOF2ZWFmteHjyT5ZmnVSv0mRpP7CnfScjY/RCH2zUj tClpyIXqt8XC16rS2hTka3F3uVkaHlAN5Kaoe2D3ebbk0jg2PEst9e+eeWq9NM7+rKSZ rKP372X+TZPdQUAc5Ybq4cZTGFu0yhiGej8RBlDkQVR5f2j8bhyxMvnkSo6Cv4kS1Btt qHFA== X-Forwarded-Encrypted: i=1; AJvYcCUjf4k+UmfV53tNkOZricLMz+lvChWoBruQwbLZf3IeFZa+nbIE5Z8Y96Ymp00UxsJzuUZ/JJcSPdsX@nongnu.org X-Gm-Message-State: AOJu0YwT00u5YxIN4kVfkkucVkSBvEYDFAx8dU45wQVYbzN9s722XgD7 JB9AcDowA4SK0i5EjnJrIyvIB25VS0Yp0rznMvgtYR0gH4Sbn0xgpVGMPAKV58cFz38HsTuM50s lyZZd X-Gm-Gg: ASbGncvsUcPx3ffRbxFiOqWFinpKdr6nhCDjl0MiezPVbQu2CoNyQp4DJmz7MzmGNjD jCCdqMFvKK0Imw9sHC2/zoJiQvSeCL9tJL+4uwKUB5NwPqFItm+gg6IZgk2oQgkBeWrTV69ptpF UYnuGxCPZZj5FSqngK+X/eB3SP8O0/Dew9wEX0FXcEhaY6CqSsIuMsRvSUb5vhpK2bKv/c82t11 abLiIcOlZvMwX2GqHt3J0imgCDE6V4K4hsW+FTiIljfLIMbyRzJAyksxC06SeH1Tt4g3ujvnec6 7ZLg+AGPDYM4dL8tAGJ1pbEaFN7EXrpDUn5GqWXTk6W7ksrGSf781PZg/nNMhHlzKIBVJ55myDU g71N196o7lb/KDKKA+WZvaHlp5pA2EzhwfmybzMQ= X-Google-Smtp-Source: AGHT+IFgt7aZDHGjiKQDQO1pSNy326DvR33iyVj7kf8kRYd06fhb2TFbEm0B9AIQoF6bRuk1daRsSA== X-Received: by 2002:a05:6000:230b:b0:3b6:333:256f with SMTP id ffacd0b85a97d-3b613eb49f0mr6272738f8f.58.1752859844744; Fri, 18 Jul 2025 10:30:44 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PATCH for-10.1 08/10] target/arm: Don't nest H() macro calls in SVE DO_REDUCE Date: Fri, 18 Jul 2025 18:30:30 +0100 Message-ID: <20250718173032.2498900-9-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718173032.2498900-1-peter.maydell@linaro.org> References: <20250718173032.2498900-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1752860694727116600 Content-Type: text/plain; charset="utf-8" In the part of the SVE DO_REDUCE macro used by the SVE2p1 FMAXQV, FMINQV, etc insns, we incorrectly applied the H() macro twice when calculating an offset to add to the vn pointer. This has no effect on little-endian hosts but on big-endian hosts the two invocations will cancel each other out and we will access the wrong part of the array. The "s * 16" part of the expression is already aligned, so we only need to use the H macro on the "e". Correct the macro usage. Fixes: 1de7ecfc12d05 ("target/arm: Implement FADDQV, F{MIN, MAX}{NM}QV for = SVE2p1") Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/tcg/sve_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index 105cc5dd122..bf894f0bf13 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -4509,7 +4509,7 @@ void helper_sve2p1_##NAME##qv_##SUF(void *vd, void *v= n, void *vg, \ TYPE data[ARM_MAX_VQ]; \ for (unsigned s =3D 0; s < segments; s++) { \ uint16_t pg =3D *(uint16_t *)(vg + H1_2(s * 2)); \ - TYPE nn =3D *(TYPE *)(vn + H(s * 16 + H(e))); \ + TYPE nn =3D *(TYPE *)(vn + (s * 16 + H(e))); \ data[s] =3D (pg >> e) & 1 ? nn : IDENT; \ } \ *(TYPE *)(vd + H(e)) =3D FUNC##_reduce(data, status, segments); \ --=20 2.43.0 From nobody Sat Nov 15 09:50:13 2025 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=1752860693; cv=none; d=zohomail.com; s=zohoarc; b=BbBTqlzrxe4NEqPuQmO5r+RoF+wYoaguxk0vX/GHXi2AsejtEWJu5B1yBibR6rCZQPZjGgBG5RSU7rjvQe627Pk48Z8+0JOIA8dPh++NX5MAktAsQzTDNQHw8vZG9Yvbx7GVT1k1PTMEd11kevj/7OBDwzHk4/5W3KrvMRB8jyY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752860693; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tjBlcjoHjKFWMnPECWtFEiFouTdLLlV7xjpvri9h4/Q=; b=Fic/sCDGgBtS2i6JLwEzCDTk/qPDV0bCbz8zda8VZbpV5A/gU3qOb0bnt2jwVGhx1kWx1+BJrq0TY16K/zdMuMd1+Ftcb+bmOob4nFJ2proO6PY9wruT0ytee+uinexQpYaXHCXilY2oGqtuREmydRPJjrRuC8wQz+6t/iAzrNk= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175286069370024.42807430723724; Fri, 18 Jul 2025 10:44:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucp8T-0008Kl-9Q; Fri, 18 Jul 2025 13:44:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ucov5-00056U-Q4 for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:52 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450: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 1ucov2-0000t7-UR for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:51 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-4560cdf235cso12123115e9.1 for ; Fri, 18 Jul 2025 10:30:47 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b61ca25443sm2454655f8f.9.2025.07.18.10.30.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jul 2025 10:30:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1752859846; x=1753464646; 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=tjBlcjoHjKFWMnPECWtFEiFouTdLLlV7xjpvri9h4/Q=; b=xEvMwmHGGc3NCIjoVLDoqx9Wz9BnwMRsTbxrz7HnHgFsju8b70eXj0DULN8H4x9PV+ SjtYlffIac2JePO/0eD9DXz1+Ok6cWER2OTUAIP7J4e8BGdGuaIdilFH6GqL38zxdAHX WneM4cHi0kJecdhUnBwNWLQ3zF1FzzEA1+/8W2DX1xBL4H1d4OVyCq4d9O3WTRIvPrW7 6KfH226flC4oiyq2vgux1uW+iIGTeGn1XkKzFTsKo2bbO7FsXviwye2yQCX4nu6uOEOD c3KQaCfbfG/CIsmg/WDb5I95D/9BgdkKrq2c4DgRRFAD2Ye1zqfrAKJJK5mFlAS5jXht xSPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752859846; x=1753464646; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tjBlcjoHjKFWMnPECWtFEiFouTdLLlV7xjpvri9h4/Q=; b=Z0icxzQEcK1EpXGx5Egq4wrbl8OOj9kDMHVcov2JIQ2fT00V20IjuYnq+YlVpR/RdJ 7lugmWMoqizcv0n5atqqOykMAw+pf2Z9Qa+kRxEQ+QvxzR3d7gZFJ4p8054qlKa5YQDL 14cq5KEyil8YbJvs+uG8mg7NbBPE0pOH1DdG+43pN6rFIdvdV/EKD6TFMLpu60pkSkfr dd4E3CFViA9UNspp3dzEstomoyjBqCJPDzFqoQrFDArfiyfuHfoTjwtE3W6cSR5Kk1ch 4qTwt8RBAifK0CzrAXg2Bebyo8zJSmizliuNfx2IGxX010v1fPNyZrqMv1dVz3QArAwt iuJw== X-Forwarded-Encrypted: i=1; AJvYcCVdv8+NPDWGqwjWjX944jL0U4AAwVbOsPR6rkrIONhWt3q3RFTF8LODfWL1BVNB/y43JUPfsUoUWoUy@nongnu.org X-Gm-Message-State: AOJu0YyQ05Ug/H7nJ2eoDn13tPReH0OY/Lfr19OHBsi8GT+C2sX+/R+f 0Ejxczwnf4zOchUnFP2voSexnWGv65x+bDm4zEMblTskFWToytenPCPszXkLMdZLzgfImJ4AoYZ YBfUW X-Gm-Gg: ASbGncvuNQjBq6vphAWsnKzNJWScrbUOnQc4AzYsCE2ikSVq2K/GUE6YGaC1X5Yjwjp WAu6wF9ruiUfhabT3O3cJFrM2VMNpdxm+df1Wni75hnmHTMJQi6G2X163JzBvhK5Zb2rUwnrV7t Sl4hTMW8ANvb4Re3FBxDqWqvd9v4U3SATr5IKvAmqZ0+mWiLrJtLqq9YUgQK+/9Yz+hSU/gDNKN xFfiFXLRt0rYbnBUtqdrfF09jgKiXc0eEDhGYhexxoCG9Eims5ywdP4k9WMfX6x3j6OoC85lA7B e1X8vnw3KhFb878G6Fe7zEFhJR0Zfloi1/BCrl7y0wARwQ7fr+bBI9h2xLuxKk3wk/GJ6cG6vN2 NZmbeZQZdLfwYRQYWOM4YATVLO77n X-Google-Smtp-Source: AGHT+IEM5IeVlpaYzMT8E/ZRNsxxJNfeKd9LAHdFMwPc4k1ufXXEoTxH9UlEfVfAQqxyhnASfTLs+g== X-Received: by 2002:a05:600c:6207:b0:43d:42b:e186 with SMTP id 5b1f17b1804b1-456352e7865mr75082205e9.8.1752859846147; Fri, 18 Jul 2025 10:30:46 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PATCH for-10.1 09/10] target/arm: Honour FPCR.AH=1 default NaN value in FMAXNMQV, FMINNMQV Date: Fri, 18 Jul 2025 18:30:31 +0100 Message-ID: <20250718173032.2498900-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718173032.2498900-1-peter.maydell@linaro.org> References: <20250718173032.2498900-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1752860694818116600 Content-Type: text/plain; charset="utf-8" The FMAXNMQV and FMINNMQV insns use the default NaN as their identity value for inactive source vector elements. We open-coded this in sve_helper.c, hoping to avoid a function call. However, this fails to account for FPCR.AH=3D1 changing the default NaN value to set the sign bit. Use a call to floatN_default_nan() to obtain this value. Fixes: 1de7ecfc12d05 ("target/arm: Implement FADDQV, F{MIN, MAX}{NM}QV for = SVE2p1") Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/tcg/sve_helper.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index bf894f0bf13..803f0a094dc 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -4484,33 +4484,35 @@ static TYPE FUNC##_reduce(TYPE *data, float_status = *status, uintptr_t n) \ } \ } \ uint64_t helper_sve_##NAME##v_##SUF(void *vn, void *vg, \ - float_status *s, uint32_t desc) \ + float_status *status, uint32_t desc) \ { \ uintptr_t i, oprsz =3D simd_oprsz(desc), maxsz =3D simd_data(desc); \ TYPE data[sizeof(ARMVectorReg) / sizeof(TYPE)]; \ + TYPE ident =3D IDENT; \ for (i =3D 0; i < oprsz; ) { \ uint16_t pg =3D *(uint16_t *)(vg + H1_2(i >> 3)); \ do { \ TYPE nn =3D *(TYPE *)(vn + H(i)); \ - *(TYPE *)((void *)data + i) =3D (pg & 1 ? nn : IDENT); \ + *(TYPE *)((void *)data + i) =3D (pg & 1 ? nn : ident); \ i +=3D sizeof(TYPE), pg >>=3D sizeof(TYPE); \ } while (i & 15); \ } \ for (; i < maxsz; i +=3D sizeof(TYPE)) { \ - *(TYPE *)((void *)data + i) =3D IDENT; \ + *(TYPE *)((void *)data + i) =3D ident; \ } \ - return FUNC##_reduce(data, s, maxsz / sizeof(TYPE)); \ + return FUNC##_reduce(data, status, maxsz / sizeof(TYPE)); \ } \ void helper_sve2p1_##NAME##qv_##SUF(void *vd, void *vn, void *vg, \ float_status *status, uint32_t desc) \ { \ unsigned oprsz =3D simd_oprsz(desc), segments =3D oprsz / 16; \ + TYPE ident =3D IDENT; \ for (unsigned e =3D 0; e < 16; e +=3D sizeof(TYPE)) { \ TYPE data[ARM_MAX_VQ]; \ for (unsigned s =3D 0; s < segments; s++) { \ uint16_t pg =3D *(uint16_t *)(vg + H1_2(s * 2)); \ TYPE nn =3D *(TYPE *)(vn + (s * 16 + H(e))); \ - data[s] =3D (pg >> e) & 1 ? nn : IDENT; \ + data[s] =3D (pg >> e) & 1 ? nn : ident; \ } \ *(TYPE *)(vd + H(e)) =3D FUNC##_reduce(data, status, segments); \ } \ @@ -4521,14 +4523,17 @@ DO_REDUCE(fadd,h, float16, H1_2, float16_add, float= 16_zero) DO_REDUCE(fadd,s, float32, H1_4, float32_add, float32_zero) DO_REDUCE(fadd,d, float64, H1_8, float64_add, float64_zero) =20 -/* Identity is floatN_default_nan, without the function call. */ -DO_REDUCE(fminnm,h, float16, H1_2, float16_minnum, 0x7E00) -DO_REDUCE(fminnm,s, float32, H1_4, float32_minnum, 0x7FC00000) -DO_REDUCE(fminnm,d, float64, H1_8, float64_minnum, 0x7FF8000000000000ULL) +/* + * We can't avoid the function call for the default NaN value, because + * it changes when FPCR.AH is set. + */ +DO_REDUCE(fminnm,h, float16, H1_2, float16_minnum, float16_default_nan(sta= tus)) +DO_REDUCE(fminnm,s, float32, H1_4, float32_minnum, float32_default_nan(sta= tus)) +DO_REDUCE(fminnm,d, float64, H1_8, float64_minnum, float64_default_nan(sta= tus)) =20 -DO_REDUCE(fmaxnm,h, float16, H1_2, float16_maxnum, 0x7E00) -DO_REDUCE(fmaxnm,s, float32, H1_4, float32_maxnum, 0x7FC00000) -DO_REDUCE(fmaxnm,d, float64, H1_8, float64_maxnum, 0x7FF8000000000000ULL) +DO_REDUCE(fmaxnm,h, float16, H1_2, float16_maxnum, float16_default_nan(sta= tus)) +DO_REDUCE(fmaxnm,s, float32, H1_4, float32_maxnum, float32_default_nan(sta= tus)) +DO_REDUCE(fmaxnm,d, float64, H1_8, float64_maxnum, float64_default_nan(sta= tus)) =20 DO_REDUCE(fmin,h, float16, H1_2, float16_min, float16_infinity) DO_REDUCE(fmin,s, float32, H1_4, float32_min, float32_infinity) --=20 2.43.0 From nobody Sat Nov 15 09:50:13 2025 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=1752860317; cv=none; d=zohomail.com; s=zohoarc; b=aSIOUJqihS8Fne4A+x6ZWeKwsux4IF3B47ygoNSmKFIwwp615hlC3eTlN0HIWwqPtIg2rD6ybwXNg6iDbO4jlgkjZm+8iQlJV6rYoAWJSO/unw9FSRFvDBqTsgJSaAgjT341VwxdrYWekVU48ZrSyinOlQL4S28pO6v50ZROWe4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752860317; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YaGSJlsr3yRCDJI1YrZClWcvDHAKT1kniD2vWA35Tqc=; b=XLlS7YFBgYp2gxAsIj5LH1v+tTLWoPWdHrH2yCF+8sdihwK9vmeJuXiJ/44pkU7CB5ZqfskXHZPyDQm/Sa0NVskiElG9aM7eMIzr0EAm7l4BDdpK5oqgMNdZcaNZDvIweHZgGv+KfnTaVAeBnksc48OPHsM4Ox2qlSOCdlV/5q0= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752860317422416.58878262981386; Fri, 18 Jul 2025 10:38:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ucp2P-0002DT-8k; Fri, 18 Jul 2025 13:38:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ucov5-00056V-QC for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:52 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450: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 1ucov3-0000tU-KJ for qemu-devel@nongnu.org; Fri, 18 Jul 2025 13:30:51 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-456108bf94bso16161345e9.0 for ; Fri, 18 Jul 2025 10:30:48 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b61ca25443sm2454655f8f.9.2025.07.18.10.30.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jul 2025 10:30:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1752859847; x=1753464647; 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=YaGSJlsr3yRCDJI1YrZClWcvDHAKT1kniD2vWA35Tqc=; b=MRH3GgUpWb4t77VnMbgKNxLv4GfXLfZjCWQFDHHYyV1jKi33YOLx6Yju66bExwmClk ev1xCHugSneV2PHhTN+oGu6KZ3iresA7toDOK0NxqTajD1HhRDm7pqme+JsvjJXSMckR YIlMlCK/70CsTwWL/PTKIiSbV4Sd/MK3ScxLBFhlvE9geKsiz5g/Yg0mUz3tSKkAKayA QyQRZIG8oPKRCavCRGBNtLE+LQq+JvH7XoinDrL6hGiM3Dx1tkofqR3kMWmDmkHhIPYs JowFApGRS9fBQGE8WBJD+uafJrV/U1JrOuxe5SsfmCfpG1JReeZqQFazngOJO5ovwVsk Y39g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752859847; x=1753464647; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YaGSJlsr3yRCDJI1YrZClWcvDHAKT1kniD2vWA35Tqc=; b=mAqBWc3Wsn724eurYzPzwE2xWS+ImCCYpgTECwLenb3bYVoRLORXVx+33UZ3vZWaOb tiUFIEjajj75zSOKA3T3zaxEa1jwusRaXn7AtpsMPKDjn2+vwVtGpv9s12WizB2/D9+7 12A9P9qmUaZ4lP5jy/gAf4KKY+f4BOBwfp39yLmgzAu8HklBeC+Wkncum9QaqPuHd/QE MwVAkeAmduyuxSP9LaIjUHCcJIpsHzyyMSgh9VPCSRmEKRChxRtGZtGGp2Gy0IjKKT3M BY/QxxB0K0xZJJ5ICVQ+cRgkVMAoCSbcWn48GE95Y2yhVTp9M761F9bm6S3FvJj9dZFs fdsQ== X-Forwarded-Encrypted: i=1; AJvYcCWJQHzS7yRw+xBavFb3ubCI8MJy5ocWdwN5RQSl+t2u5kkfi21Of4ywp7JDyWoavnPuVvI6vdYjQcVM@nongnu.org X-Gm-Message-State: AOJu0YyMmZ01chMlDgTjh0eHqVTiFkmD3P9kjtZ/ioV9PUbmLQuJ39uL 3q5/YbCLblCPhTvWTTZFPgcPf/RXMNasjHtQUWnOLKM9REFPjHPnvFFqfkdjwzxUU2g= X-Gm-Gg: ASbGncuJ+lDRl4hLJ8kDr2hbxDbC4EJI6kC+uBAJa6wS3TEnYBTwed6km+7xUkZwur7 mhlXiKZtqmFLhhScaIbuttdTHQx5S635CdrW7pXurU+Qx8/Z2WFRK+wBazdCkvdBsJ9O17GRsOt JhAaaCFlygbkJPJPK/PD5hyOdNwNrf5gktDKy1WHmyR4rrI+Zq0O+Jx269mE412tXANR40OV3t3 RsqibU6M7U5RLLek0FhMBnpr5tHkSLdDbVCP0H6jpX+UFZFgJBsB/SiNJmG2BXnDpacsFzOEFrV g4p7fvO7EIElbiPwvzPkjWcwN2UDnxSkdt9s6yo2CKENturyk758UhGTff01v+K6dAvzEjBj/Gr b+HPyfweDrL/jR3190szbYZr55VHJ X-Google-Smtp-Source: AGHT+IFMMA/UJESRWi1RVuZfqGsjIKXgDCpXcCDJ0EohkVo74Wsu52jpLiByalkjGRVqNYmkISC0dw== X-Received: by 2002:a5d:5d10:0:b0:3a4:c8c1:aed8 with SMTP id ffacd0b85a97d-3b60e53eae9mr11528375f8f.39.1752859847186; Fri, 18 Jul 2025 10:30:47 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PATCH for-10.1 10/10] target/arm: Make LD1Q decode and trans fn agree about a->u Date: Fri, 18 Jul 2025 18:30:32 +0100 Message-ID: <20250718173032.2498900-11-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718173032.2498900-1-peter.maydell@linaro.org> References: <20250718173032.2498900-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1752860318964116600 Content-Type: text/plain; charset="utf-8" For the LD1Q instruction (gather load of quadwords) we use the LD1_zprz pattern with MO_128 elements. At this element size there is no signed vs unsigned distinction, and we only set the 'u' bit in the arg_LD1_zprz struct because we share the code and decode struct with smaller element sizes. However, we set u=3D0 in the decode pattern line but then accidentally asserted that it was 1 in the trans function. Since our usual convention is that the "default" is unsigned and we only mark operations as signed when they really do need to extend, change the decode pattern line to set u=3D1 to match the assert. Fixes: d2aa9a804ee6 ("target/arm: Implement LD1Q, ST1Q for SVE2p1") Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/tcg/sve.decode | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index a77b725c876..aea7f519730 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1345,7 +1345,7 @@ LD1_zprz 1100010 11 1. ..... 11. ... ..... ...= .. \ =20 # LD1Q LD1_zprz 1100 0100 000 rm:5 101 pg:3 rn:5 rd:5 \ - &rprr_gather_load u=3D0 ff=3D0 xs=3D2 esz=3D4 msz=3D4 scal= e=3D0 + &rprr_gather_load u=3D1 ff=3D0 xs=3D2 esz=3D4 msz=3D4 scal= e=3D0 =20 # SVE 64-bit gather load (vector plus immediate) LD1_zpiz 1100010 .. 01 ..... 1.. ... ..... ..... \ --=20 2.43.0