From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285119; cv=none; d=zohomail.com; s=zohoarc; b=kBlSzcxa3LlpXNWEu/6NOlEvJuItLz0PDMZMPvki5GEAoqpZp60ilTldVjcHMmQyooh0JDPWtfdVO8Y6dSvUBoidWt3sNLZozXQWxsfGqClRGOSDLFw4SIjuruGZrmk+5Dl9n2ikZQyZpB/+U5O9VAzMHgoZ8e5Uj5rAI9FINWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285119; 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=FcNFOnOL8974glwABu+kV2mxfPSi3R5uRGeROQDc4EQ=; b=Nv3w7zroSE3gassYiLqOdd9+gZqfanOIRvZOh49/7+pifb9r23pXl/s9peh/8udGwn/fIgCDGj2d8W2OsjbP8TQIDPYmKdhZxUJE4E3kWC7xyTike6ROQ+TGeZd24EBb5/1hGFCrX94/QDWWVd+Zeg9B/tQ3vSKM4LItCGfe+Ow= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285119361175.24269476078825; Thu, 20 Aug 2026 21:05:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUL-0005yd-GL; Fri, 21 Aug 2026 00:04:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUI-0005xj-Th for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:14 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUH-00039f-6W for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:14 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-384930ca5e2so542805a91.3 for ; Thu, 20 Aug 2026 21:04:12 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285052; x=1787889852; 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:content-type; bh=FcNFOnOL8974glwABu+kV2mxfPSi3R5uRGeROQDc4EQ=; b=lym96s6HCDxM/MXJMjRramhd6BsKbFyG77i8r1C4BufljHms1t34QQnLHIkvIK974h y38LBsE5MpDSOZg7t90vDmBsmaS8rD++MH2wEw/dY+LWdlE7afYy/U5FfSLOrcM2X9mR 0DwFnUTMUOhO9YJruUft+hltJKNvprs+dF2hgX7frskkzqy2F1REuOcwT8CJFhbAsdKK q9EYx/DEIx8l/9bHMN8BlT+rrNQKJkSNatYURgiYrmbB6D9wx4EbvbE0eF981LIwVH4u 0NHai0yRwhaXCUD/sxFgqHrKa4sejSfMc4xp7nLmYIPk94uUaEkrbBdwn613JgYFLNzp X+LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285052; x=1787889852; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=FcNFOnOL8974glwABu+kV2mxfPSi3R5uRGeROQDc4EQ=; b=glFo8BEJLyf2ZT4I3zHg4NvR+wbygTqaJX1ujh1YgUd2DAf31xHCmacaxqfARGavcp 4gcfUGisJxB2OF2oDhOdSmhtcuPn+5mzB06Erk0KmepvBZTcuPnFfd36v9JrF20tSFOA uLWEuxm+OMpfo7a/BvgCiNPFftgIjpM9SBzbIyUzWhn6av/b4Qe44HD72PE3zqRmyHjl 2s1CJCXq2A4nicssNZm22s4Hgg9BmBJTR0sryraFoL6H7qRhqEVlCoilnK2MDTXsTO3I eipZEncmQqIWLgy6wTPeFAWIwghYbWCERpbfMv3Y0q7I/Du+U3wLMV6G/7Bnuvy3eGEi xHig== X-Gm-Message-State: AFuF++mANKwjr72FkYkF9FcV5DYmwa5dH9ET1Xk+QYMPFB21z4KToDUF tdi+HUdf+4j3vXqEUzfs7n/RW1YihkYAGNSWthDcY5/vT9CTBSUlZDKvGZesIjEVcxOw9LswxLG 52mS4 X-Gm-Gg: AR+sD12wK/aOd2LsQMgpoPVsJ8olJ9wPkFyrcbyloQpJ2eSzcClPkfZCvzi2DJvcCae oKef3y1lWY37GQN7K1sUh6G/SYSbmqk/ouPS9alemo6E+NIWUlyKHO2SC5mQynuNAbvmGogxpBp wFfqEfm3xuuOwNT9qG/OKl260+B7Y74vy7lxk8tLlbKXnJscq10oKrN6Byyf6tD97jKoZGZ88Qd FcYmas7FvMDPByvifF1whlV6ZpWtJuwWgcoG4QPWE53+1/kZB7RZ9ZeL3nzF5QQ4N4UWTBaFACO bZ+38U4DnGNgYfgQ3LiIRVyfmmCwKqU7ZZAoh4vaLx80PKRh0+F7u+h+xmPXLtdhPQhon4tk3aO sieU1XYEYQJQHdTglg1BdHjm0/h7LCVaNXyhZd6mCj122oKOEOO4r5ijX0nkIvlVAs6+0K+JpKR L1YU9boQziy+28PG+eulk4oZyYiOYYGxeMCb3THE5Wgily96Tr6al1pYj2jz61+rsF5FZx X-Received: by 2002:a17:90b:58ce:b0:38e:5964:97a8 with SMTP id 98e67ed59e1d1-395c398662amr6901770a91.16.1787285051829; Thu, 20 Aug 2026 21:04:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 01/23] target/riscv: Split out vext_set_nf_elems_1s Date: Thu, 20 Aug 2026 21:03:42 -0700 Message-ID: <20260821040404.268123-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285120659158500 Content-Type: text/plain; charset="utf-8" Provide a helper that 1's element I for all NF vectors. For the callers, this performs the element mask test once instead of NF times. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 69 ++++++++++++++++---------------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index e28d8a3d9f..20a8f95efb 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -328,6 +328,15 @@ static void vext_set_tail_elems_1s(uint32_t vl, void *= vd, } } =20 +static void vext_set_nf_elems_1s(void *vd, uint32_t i, uint32_t nf, + uint32_t esz, uint32_t max_elems) +{ + for (uint32_t k =3D 0; k < nf; ++k) { + vext_set_elems_1s(vd, true, (i + k * max_elems) * esz, + (i + k * max_elems + 1) * esz); + } +} + /* * stride: access vector element from strided memory */ @@ -337,7 +346,6 @@ vext_ldst_stride(void *vd, void *v0, target_ulong base,= target_ulong stride, vext_ldst_elem_fn_tlb *ldst_elem, uint32_t log2_esz, uintptr_t ra) { - uint32_t i, k; uint32_t nf =3D vext_nf(desc); uint32_t max_elems =3D vext_max_elems(desc, log2_esz); uint32_t esz =3D 1 << log2_esz; @@ -345,23 +353,21 @@ vext_ldst_stride(void *vd, void *v0, target_ulong bas= e, target_ulong stride, =20 VSTART_CHECK_EARLY_EXIT(env, env->vl); =20 - for (i =3D env->vstart; i < env->vl; env->vstart =3D ++i) { - k =3D 0; - while (k < nf) { - if (!vm && !vext_elem_mask(v0, i)) { - /* set masked-off elements to 1s */ - vext_set_elems_1s(vd, vma, (i + k * max_elems) * esz, - (i + k * max_elems + 1) * esz); - k++; - continue; + for (uint32_t i =3D env->vstart; i < env->vl; env->vstart =3D ++i) { + if (!vm && !vext_elem_mask(v0, i)) { + if (vma) { + vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } + continue; + } + + for (uint32_t k =3D 0; k < nf; ++k) { target_ulong addr =3D base + stride * i + (k << log2_esz); ldst_elem(env, adjust_addr(env, addr), i + k * max_elems, vd, = ra); - k++; } } - env->vstart =3D 0; =20 + env->vstart =3D 0; vext_set_tail_elems_1s(env->vl, vd, desc, nf, esz, max_elems); } =20 @@ -632,7 +638,6 @@ vext_ldst_index(void *vd, void *v0, target_ulong base, vext_ldst_elem_fn_tlb *ldst_elem, uint32_t log2_esz, uintptr_t ra) { - uint32_t i, k; uint32_t nf =3D vext_nf(desc); uint32_t vm =3D vext_vm(desc); uint32_t max_elems =3D vext_max_elems(desc, log2_esz); @@ -641,24 +646,21 @@ vext_ldst_index(void *vd, void *v0, target_ulong base, =20 VSTART_CHECK_EARLY_EXIT(env, env->vl); =20 - /* load bytes from guest memory */ - for (i =3D env->vstart; i < env->vl; env->vstart =3D ++i) { - k =3D 0; - while (k < nf) { - if (!vm && !vext_elem_mask(v0, i)) { - /* set masked-off elements to 1s */ - vext_set_elems_1s(vd, vma, (i + k * max_elems) * esz, - (i + k * max_elems + 1) * esz); - k++; - continue; + for (uint32_t i =3D env->vstart; i < env->vl; env->vstart =3D ++i) { + if (!vm && !vext_elem_mask(v0, i)) { + if (vma) { + vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } + continue; + } + + for (uint32_t k =3D 0; k < nf; ++k) { abi_ptr addr =3D get_index_addr(base, i, vs2) + (k << log2_esz= ); ldst_elem(env, adjust_addr(env, addr), i + k * max_elems, vd, = ra); - k++; } } - env->vstart =3D 0; =20 + env->vstart =3D 0; vext_set_tail_elems_1s(env->vl, vd, desc, nf, esz, max_elems); } =20 @@ -824,25 +826,22 @@ ProbeSuccess: } } else { for (i =3D env->vstart; i < env->vl; i++) { - k =3D 0; - while (k < nf) { - if (!vext_elem_mask(v0, i)) { - /* set masked-off elements to 1s */ - vext_set_elems_1s(vd, vma, (i + k * max_elems) * e= sz, - (i + k * max_elems + 1) * esz); - k++; - continue; + if (!vext_elem_mask(v0, i)) { + if (vma) { + vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } + continue; + } + for (k =3D 0; k < nf; ++k) { addr =3D base + ((i * nf + k) << log2_esz); ldst_tlb(env, adjust_addr(env, addr), i + k * max_elem= s, vd, ra); - k++; } } } } - env->vstart =3D 0; =20 + env->vstart =3D 0; vext_set_tail_elems_1s(env->vl, vd, desc, nf, esz, max_elems); } =20 --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285085; cv=none; d=zohomail.com; s=zohoarc; b=XRlhNpdqgN1NKshgZ+n7bDprA6Dcbw0Ug6zV1fq0DGYEL/gseNMRApCwYL7YiF9e/7MmBjSP3Ji/fMqJWP3BTYjfiyghJqqyuwxX0+mV8P8KWvAhbgwbe8qEkwGs1MiNc5UAB0BSa8m2Gf9UTqizL8lfmEquZqpCYgdJ6xkIUY0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285085; 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=fuMC9PhVUGvU8XYUJlJKMiY++czJtpI2ArXd7iTeRnQ=; b=J091Mx2B5e4gXdTXvFBhCcBzqd2qAqQQv2CEEqCuXh8WHdlY0oHxGNYZ3JVbbyKrUtbGdA7hv2w7gamWrd8mki0PHj/Y2NGM20bYh+yPkx0AtSqECDGkzAYVExmEHVmtiWO+VkUnSXcwSXD12dvrdF4aAN9Bg/Z4S1aBHt38uqk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285084936755.1931760698619; Thu, 20 Aug 2026 21:04:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUN-000612-JJ; Fri, 21 Aug 2026 00:04:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUK-0005yF-D1 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:16 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUI-00039s-8C for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:16 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-cbedda4c154so328269a12.1 for ; Thu, 20 Aug 2026 21:04:13 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285053; x=1787889853; 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:content-type; bh=fuMC9PhVUGvU8XYUJlJKMiY++czJtpI2ArXd7iTeRnQ=; b=bIL4biltswjHqYaOsTxFxxI3FUxpwUpNIf7moTLpsrvnBP4vww6NiTZJX09XsYErYN A1XWr2jmDsZmL0tANpTwuMuEFoMq/kRM71mgaPtcIOGjV8CFGePOPZfV2tV04QFsNSa2 EtFH1LDdeBGf/QB81Hq2MqPi3zKwjqljd4f+sLosftumo8u7S3nLUmqtX48rCZhgz/8A Mui5SFNWvf4sba4RQ32S8lew0gwdMeUQMF8fKr0SW4hZIpAwmuLNLmpvj+ReIh70w2Ml RZHwjEEWs9EQovIdyja4618q9zMursyCQv+dNphiEbOeUJMAviykkEnfnAqHSmCdYDQp pDbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285053; x=1787889853; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=fuMC9PhVUGvU8XYUJlJKMiY++czJtpI2ArXd7iTeRnQ=; b=hp16jrSgy5RMN2CU/rcmfhoo8FF9Wb4B09TZN2DapIvyg4yAf5xs2ni2GEZ1SpF6Wt lMshnbppDi6IMlOZ6Nr7l+dPw2rhGA0P67ubF/Sfv/j/GR9sgp9Ke6XHVL955CMIQzi3 twSD/0tDXw+t5cvSP0rIVvPLCqgnqXlDx24idyHJuB27Ds8c8vhgqOcx0VELzG27Bk4a 7oJH4CvNGJReV0eChMxjoDDkL0aN6zm8XToxjFBdFYHNyA4p9H8lDluQGvItRL4hGcrM Ax6zR4rhp3cwWcod0lokL8wPqIZWZnOp/vAMCr46XxODMxntG6bqPOPL6CJRk2jXQkMa K0ng== X-Gm-Message-State: AFuF++lzQ1wZZoLHWvBX21Ht/3yfP/35lSs1N+i8bzrSf6avXsFCX8o1 AGPRu4oiB8jFqRyseC7AkL9guT9Wa8jYhRcm9TPGCjYx9t1tBc8RQjdvnXB2QwnYuUtQd737VsS 2NJlj X-Gm-Gg: AR+sD110eHEjFn/NG5bmt0IbT70S8wKUaGgZ06RzuTRdqOWrM6JIN0BWObCbW87TTBJ H606+QOENlkQpytpIlnzyjKhOafojEKN3S8epq4PXHx2QT41d1hHsmBx39z1D5SIAnZGXeN/+yP ceJfO9oNFAIDNBDqHDZJBsQ2dScUMj5Jh2ig39kuUEieuv6YXrZJvdPsZLK5gXdGnhMdvhiNgP/ gOIZWKt+tcRLjc1c/WFhSVVFu8LRLFY5n5aHIq9AKsvlsoeiQ/gB+tO6K0+M1UBlBRHQglfJuMt BPI1nGhW+Zgfk9KkKNFU3h/4al6Q66u6qZcqwfdASJntwU49PyYcXKcJtIiA7QKo6bCYU30k4S6 k57di2w4YSxGxeI8ZB1TlzJTtNuGcq68yb/c0hjycOOlSd6J7Ve4AA4BPxAPXOlZIwRkMnQED0s iHsGHmNiNuEQvFb6MqvGnq5oLppVCJLk7+uP2b4KhuGdM1ppNET3Qoiq22Gqte/qcmEqA= X-Received: by 2002:a17:90b:2785:b0:38f:23d6:b4ad with SMTP id 98e67ed59e1d1-395c3594cf5mr6502794a91.8.1787285052512; Thu, 20 Aug 2026 21:04:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 02/23] target/riscv: Split out vext_ldst_nf_tlb Date: Thu, 20 Aug 2026 21:03:43 -0700 Message-ID: <20260821040404.268123-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285086854158500 Content-Type: text/plain; charset="utf-8" Provide a helper that calls ldst_tlb for all NF vectors. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 77 +++++++++++++++----------------- 1 file changed, 35 insertions(+), 42 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 20a8f95efb..b04d461c08 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -337,6 +337,16 @@ static void vext_set_nf_elems_1s(void *vd, uint32_t i,= uint32_t nf, } } =20 +static void vext_ldst_nf_tlb(CPURISCVState *env, void *vd, target_ulong ad= dr, + uint32_t i, uint32_t nf, + uint32_t esz, uint32_t max_elems, + vext_ldst_elem_fn_tlb *ldst_tlb, uintptr_t ra) +{ + for (uint32_t k =3D 0; k < nf; k++, addr +=3D esz) { + ldst_tlb(env, adjust_addr(env, addr), i + k * max_elems, vd, ra); + } +} + /* * stride: access vector element from strided memory */ @@ -354,16 +364,11 @@ vext_ldst_stride(void *vd, void *v0, target_ulong bas= e, target_ulong stride, VSTART_CHECK_EARLY_EXIT(env, env->vl); =20 for (uint32_t i =3D env->vstart; i < env->vl; env->vstart =3D ++i) { - if (!vm && !vext_elem_mask(v0, i)) { - if (vma) { - vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); - } - continue; - } - - for (uint32_t k =3D 0; k < nf; ++k) { - target_ulong addr =3D base + stride * i + (k << log2_esz); - ldst_elem(env, adjust_addr(env, addr), i + k * max_elems, vd, = ra); + if (vm || vext_elem_mask(v0, i)) { + vext_ldst_nf_tlb(env, vd, base + stride * i, i, nf, + esz, max_elems, ldst_elem, ra); + } else if (vma) { + vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } } =20 @@ -417,6 +422,7 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, target_= ulong addr, int i, k, flags; uint32_t esz =3D 1 << log2_esz; uint32_t size =3D (elems * nf) << log2_esz; + uint32_t msize =3D nf * esz; uint32_t evl =3D env->vstart + elems; MMUAccessType access_type =3D is_load ? MMU_DATA_LOAD : MMU_DATA_STORE; =20 @@ -459,15 +465,10 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, targe= t_ulong addr, vext_continuous_ldst_tlb(env, ldst_tlb, vd, evl, addr, env->vs= tart, ra, esz, is_load); } else { - /* load bytes from guest memory */ for (i =3D env->vstart; i < evl; env->vstart =3D ++i) { - k =3D 0; - while (k < nf) { - ldst_tlb(env, adjust_addr(env, addr), i + k * max_elem= s, - vd, ra); - addr +=3D esz; - k++; - } + vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, + max_elems, ldst_tlb, ra); + addr +=3D msize; } } } @@ -479,7 +480,6 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, uint32_t desc, vext_ldst_elem_fn_host *ldst_host, uint32_t log2_esz, uint32_t evl, uintptr_t ra, bool is_load) { - uint32_t k; target_ulong page_split, elems, addr; uint32_t nf =3D vext_nf(desc); uint32_t max_elems =3D vext_max_elems(desc, log2_esz); @@ -522,17 +522,16 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVSta= te *env, uint32_t desc, =20 /* Load/store elements in the second page */ if (unlikely(env->vstart < evl)) { + addr =3D base + env->vstart * msize; + /* Cross page element */ if (unlikely(page_split % msize)) { - for (k =3D 0; k < nf; k++) { - addr =3D base + ((env->vstart * nf + k) << log2_esz); - ldst_tlb(env, adjust_addr(env, addr), - env->vstart + k * max_elems, vd, ra); - } + vext_ldst_nf_tlb(env, vd, addr, env->vstart, + nf, esz, max_elems, ldst_tlb, ra); env->vstart++; + addr +=3D msize; } =20 - addr =3D base + ((env->vstart * nf) << log2_esz); /* Get number of elements of second page */ elems =3D evl - env->vstart; =20 @@ -723,7 +722,7 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPURIS= CVState *env, uint32_t desc, vext_ldst_elem_fn_tlb *ldst_tlb, vext_ldst_elem_fn_host *ldst_host, uint32_t log2_esz, uintptr_t = ra) { - uint32_t i, k, vl =3D 0; + uint32_t i, vl =3D 0; uint32_t nf =3D vext_nf(desc); uint32_t vm =3D vext_vm(desc); uint32_t max_elems =3D vext_max_elems(desc, log2_esz); @@ -805,17 +804,16 @@ ProbeSuccess: =20 /* Load/store elements in the second page */ if (unlikely(env->vstart < env->vl)) { + addr =3D base + env->vstart * msize; + /* Cross page element */ if (unlikely(page_split % msize)) { - for (k =3D 0; k < nf; k++) { - addr =3D base + ((env->vstart * nf + k) << log2_es= z); - ldst_tlb(env, adjust_addr(env, addr), - env->vstart + k * max_elems, vd, ra); - } + vext_ldst_nf_tlb(env, vd, addr, env->vstart, nf, + esz, max_elems, ldst_tlb, ra); env->vstart++; + addr +=3D msize; } =20 - addr =3D base + ((env->vstart * nf) << log2_esz); /* Get number of elements of second page */ elems =3D env->vl - env->vstart; =20 @@ -826,16 +824,11 @@ ProbeSuccess: } } else { for (i =3D env->vstart; i < env->vl; i++) { - if (!vext_elem_mask(v0, i)) { - if (vma) { - vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); - } - continue; - } - for (k =3D 0; k < nf; ++k) { - addr =3D base + ((i * nf + k) << log2_esz); - ldst_tlb(env, adjust_addr(env, addr), i + k * max_elem= s, - vd, ra); + if (vext_elem_mask(v0, i)) { + vext_ldst_nf_tlb(env, vd, base + i * msize, i, nf, + esz, max_elems, ldst_tlb, ra); + } else if (vma) { + vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } } } --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285213; cv=none; d=zohomail.com; s=zohoarc; b=NU/mHFQF/5nRImqHeSAqZHltqbQynYbpHdES1FWC78TqlJdhoJMaXD5CUIFpznxGI+JLvbrqQX8sM6IqGvempLQXYsJ5g6M0KHhIglSiMGOwsmTeM7/puXxkAZIBbEUMnS6K/FrbRpnMey9ckaLTpc9OtCS2GkhF78+RXHtQrOQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285213; 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=taAgCVdsYQnHbEJNFb0X0g9aT5v9jNXyAHV3dCosVWA=; b=lWxt8krMybd27ESItJtqQ1OLSze/N41TKnQTa6zaC8A9sdm+ofPvcm+ynII+tOrQx5RXz8rZjglYKim8UKMCSah3c4vz44Hn2XTKDoOtpP+K2fqh4yglgHYx4gRN4QSOf6P7jA6ISapD1Rx6EITAExvqILQzMpAwrWE0z4soShg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285213763980.9372684130986; Thu, 20 Aug 2026 21:06:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUO-00061b-A1; Fri, 21 Aug 2026 00:04:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUL-0005yv-Eo for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:17 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUI-0003A2-OO for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:17 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-38a0c7e841fso687692a91.2 for ; Thu, 20 Aug 2026 21:04:14 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285053; x=1787889853; 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:content-type; bh=taAgCVdsYQnHbEJNFb0X0g9aT5v9jNXyAHV3dCosVWA=; b=zR/hYNUheXP3fxmqSwV2kMCBUCydFFrVouoDIIa7WiAmWSasnCHNjzGm9Cof6K0Bh8 F4Vo0n6z1v4QhWcrCIitSEYu83Rh2XQtyzsBcVGtXfEs3muNxGLQB2xDbcRJvn1Y+VXF TUmi1bn+mY2xt4imXBMoZOoduzJ92g4CoAZx7/9WQqr+ojLpOORINzK0Q3pa3xiTMZyN i9PdBco9zul0eM2PO2Gr/8m0xJK+BSqF7ywFmiwFtTQBNVe+6j4Afnf/UodzsAHoodEA jS7SojaFyrh5WzpXXY6acENbL4fP4mWf/eH79HI3g2Rc4K3PGafb8qGbfClONaQdvbW0 D5Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285053; x=1787889853; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=taAgCVdsYQnHbEJNFb0X0g9aT5v9jNXyAHV3dCosVWA=; b=MOpOorY6kQ8VQAgcrYO1c6jSuOL16OhUsWqzgas8GY9CQh2RSObaz3Rb6g3JHHje8N 6by7aeiEeLGD0Cg+ZAqw43JY3+QQlyd2coTfVfXcuLm/n/VQa+bqzx2XlsYgsEyytpyh Z9CJnU0WNzRR4D0sUfJEDeVbVQh7RoY7JgDf6J8Zpet6Xlg9nZc3XU8eMG28/dRyoS2F s5Pz7he/q4bq2Igh4qRXAT69oYPo0CnqapcvYGj0OmXHW1V5bTa4f3E3v55AIhK2cTs3 JXynw10E5MinMJTeZQUPnAGwyh4hYPESH3eEyMHdvYmEcLjKTqr65Iviq9/pGGfXrvaF vJ3A== X-Gm-Message-State: AFuF++ncUBZgSrn/TZnAipDUMjjv2KvcDaDp9E9qvTf98EKSB/WXnJBY tRspcvUyL7ENUAXFcApXitBYBLuAZiYdW7xuGc6/O7Ma86bcVagtyrJtlepkrPCymIYMy2UDToY W/50J X-Gm-Gg: AR+sD12YmwI8zaBLijG4e67ZD6keprDT68OAVnNYHkkH2wYjybQUsuKQB7HuLFRrsPC iwxipmTtOGJV73VC6CfSSEbC1Fmq3qaVvLzhvighyGzA3c6w2Ssr7D1P+BzxDY6kOcEGhrAkRBf y0caekkB/Z4rwZFfGW0m3h/4X0buOVZXEn5Sva6PKrOy9Ozg3B0axcucJgXyUEkRS6fZdS1vXAs FFCv3MEZ3do6lUZD1utqfgB3ET3P7Rq5/gULCFzOOcfeg3DIzTNBJ3Z7Inn34tBI/79jAgKMlOB eA5upC1vuxrpKMh57aRCZJ7TeZVg4C0ADfAGNNqpTI4fGjIe6P8qTp3mA7QCV1yYbPqlhGNdmeN fh4EQMDyrzo0YvxO9T7ORhZrAEKHtt8DGmHO/5G9i0CJq1zKD+Eu3DA/yoK3sXiKLbJK1RUDDNV u2M5oLcxTup5yb/CDZ+5wph/2NyXU2AQm4eiKa0StZPAzzHPfvMdzqRw1NOxVpQRsEOSc= X-Received: by 2002:a17:90b:5846:b0:38e:49c0:75a7 with SMTP id 98e67ed59e1d1-395c3718ee4mr6983439a91.8.1787285053274; Thu, 20 Aug 2026 21:04:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 03/23] target/riscv: Split out vext_ldst_nf_host Date: Thu, 20 Aug 2026 21:03:44 -0700 Message-ID: <20260821040404.268123-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285215053158501 Content-Type: text/plain; charset="utf-8" Provide a helper that calls ldst_host for all NF vectors. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index b04d461c08..6108cf3a6c 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -337,6 +337,15 @@ static void vext_set_nf_elems_1s(void *vd, uint32_t i,= uint32_t nf, } } =20 +static void vext_ldst_nf_host(void *vd, void *host, uint32_t i, uint32_t n= f, + uint32_t esz, uint32_t max_elems, + vext_ldst_elem_fn_host *ldst_host) +{ + for (uint32_t k =3D 0; k < nf; k++, host +=3D esz) { + ldst_host(vd, i + k * max_elems, host); + } +} + static void vext_ldst_nf_tlb(CPURISCVState *env, void *vd, target_ulong ad= dr, uint32_t i, uint32_t nf, uint32_t esz, uint32_t max_elems, @@ -419,7 +428,7 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, target_= ulong addr, vext_ldst_elem_fn_host *ldst_host, uintptr_t ra) { void *host; - int i, k, flags; + int flags; uint32_t esz =3D 1 << log2_esz; uint32_t size =3D (elems * nf) << log2_esz; uint32_t msize =3D nf * esz; @@ -450,13 +459,9 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, target= _ulong addr, vext_continuous_ldst_host(env, ldst_host, vd, evl, env->vstart, host, esz, is_load); } else { - for (i =3D env->vstart; i < evl; ++i) { - k =3D 0; - while (k < nf) { - ldst_host(vd, i + k * max_elems, host); - host +=3D esz; - k++; - } + for (uint32_t i =3D env->vstart; i < evl; ++i) { + vext_ldst_nf_host(vd, host, i, nf, esz, max_elems, ldst_ho= st); + host +=3D msize; } } env->vstart +=3D elems; @@ -465,7 +470,7 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, target_= ulong addr, vext_continuous_ldst_tlb(env, ldst_tlb, vd, evl, addr, env->vs= tart, ra, esz, is_load); } else { - for (i =3D env->vstart; i < evl; env->vstart =3D ++i) { + for (uint32_t i =3D env->vstart; i < evl; env->vstart =3D ++i)= { vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, max_elems, ldst_tlb, ra); addr +=3D msize; --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285243; cv=none; d=zohomail.com; s=zohoarc; b=EMuPu2wCHD4Ko8ABx/1538FjljokPHB/vPyuFwGxb0nTPdheRoCOTrgnWW2zRErC/DTrNAnkqtslOAC/2h+z+Q7tgYgVstsq1OcLpM8Cjg9Qi89H+uN9Va7l5j+PtLNlAwzARxGmRTV1/kcvqVNgUn7WyvL9pwL2qnjmAt4JIGE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285243; 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=Gl9t4+96sbWuifrUWiK56+aOXABIK2KdvSzfprs0Q7g=; b=XEkzuzZc9Exv5BdEizqW2ESCFNayijlRq5PqLTUhB0wUKfWFV6Gqq9LickCbYqUD3cV2PZP8TgPW3zvdhXvtMdqc3HkYChht37SyP3tGyey0M4suOGnjz5yZXLtG4QVehAFWzpYVhM+HnlVFG7BZK/z7gY9pE+7n0e5bZoQRxXw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285243207909.8233217414412; Thu, 20 Aug 2026 21:07:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUQ-00063Y-6K; Fri, 21 Aug 2026 00:04:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUL-0005zB-LK for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:17 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUJ-0003AN-PF for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:17 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-382ef647e20so547682a91.1 for ; Thu, 20 Aug 2026 21:04:15 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285054; x=1787889854; 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:content-type; bh=Gl9t4+96sbWuifrUWiK56+aOXABIK2KdvSzfprs0Q7g=; b=qyRhRqlv8NW8Zrx9DdcdIPzJUcBHOWo2orhYihczq3rxQKFSdE8rOgRvEzTaIVYHod Xk+TynJOrYIGfm/TPjnIHJAPyHZD+KyqhLN78a8a/4dwhYm6XarXro88tdc+ktuDh6kI LRrWDD2ib2HMaK2idByAlH0SqnrL9bsW2p8d/eDVi9wDB77xNV9j4UmiZtdNQRr5bJsL pTANTGLqBEpju0CYkj20/bcx8bYLRmZqBfJSnGezbHL6ABzzOW76Fn9ZIxljGMDBy/n5 BEcDIcj+mJLILWRsOw+2TF3m5hWK6vJW3a2LXucIER4GOTW/IY5KZhyL8q6BJBYF/++2 VwfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285054; x=1787889854; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Gl9t4+96sbWuifrUWiK56+aOXABIK2KdvSzfprs0Q7g=; b=h4IpfozlrSVG6BgmePu2JQaelGUbLyP/BJyD7ax+nrn7+IOUCSPOnnDDsR4v42gfeJ /D65VBH5ZwYKLRS0xy0AJUSGmitLerhMt0uAM/ui8gY3SxHunEJq27Vk0ntHw6eMbvAR a/gBujKEn2dP9UF/W8zKgbFnfau7xtfld8UI56fiSpUV7Sr2ifzDq0ICv7yZpiDKcazH w9a3jV+gXj/yuAYzPAr7OKh7AQYW4cq+RnGJOE0XPszoi6umZopN80CO3f2rKYNG+q5a 2R5or+JntqBoPiEy9hdxFhA4N7pM8kOMzHg+1R7+8KfmSvFTz/YSf9Ho5Q/ekeJrHZSQ xvNw== X-Gm-Message-State: AFuF++lp3+oD6SPGZt3pnP3HblxGPCPbaaLSREh1HD9poKowdCzhAQ98 LjoUiwcrqc2btcEdG8qfTIKknSMl0UcIXG7vyr8hmEgLE+ggf7dDDdgJg8e74bDMYAq5s6G9hnk ExOFw X-Gm-Gg: AR+sD10J+1OID0hsfjhpop3yu0z16GmZ+YFH5ilmN9LZY6/vAlMA65jRFITrPQKmuAZ 0DgFva2hgvQ/6vf04FpCIjGYY+rUBE11hsFXzJUSMayKNlx8ChhCC82bgeAiQSKbhIF/FVuhkDr 8TjC7fgxS1iSMSyigmlITrVGpNkkfny05X2RcjqK/AFXZFtDBHiHSatguM5Nhhbrk52jK3G3B8s qdiTOlJCN/9E7jHUjFtsSoGq/5z95TpMeI9DDkL6DMk/2NEgAWwnOuVeR1KR56QpdMH+eW+px8r 2p0ans15tZ3GvGtw54Ia7aP1J79NgnFXJt2hb579F2XZpXqq0VfihYWO2LT01IXyNLEf5KUztpv RUvSZ7dI5eT+9nh6a899pbX12J35eF1nyKeDSat9c4lRB9GjFTMwBQWOPZrZsZ7WrrBmkd7gqln bge2+FpVBn8OvHuyRb8MM2nvKu5F7IgFPZqDemGVGbBhwl6tOMxiTalSH4tAYHlVBtfOU= X-Received: by 2002:a17:90b:3d85:b0:395:4de0:b78f with SMTP id 98e67ed59e1d1-395c33ef91bmr6766319a91.1.1787285054153; Thu, 20 Aug 2026 21:04:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 04/23] target/riscv: Drop is_load parameter from vext_continuous_ldst_tlb Date: Thu, 20 Aug 2026 21:03:45 -0700 Message-ID: <20260821040404.268123-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285245145158500 Content-Type: text/plain; charset="utf-8" This parameter is unused. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 6108cf3a6c..da1e704c56 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -274,9 +274,8 @@ GEN_VEXT_HOST_ST_ELEM(ste_d, uint64_t, H8, stq_le) =20 static inline QEMU_ALWAYS_INLINE void vext_continuous_ldst_tlb(CPURISCVState *env, vext_ldst_elem_fn_tlb *ldst_t= lb, - void *vd, uint32_t evl, target_ulong addr, - uint32_t reg_start, uintptr_t ra, uint32_t esz, - bool is_load) + void *vd, uint32_t evl, target_ulong addr, + uint32_t reg_start, uintptr_t ra, uint32_t esz) { uint32_t i; for (i =3D env->vstart; i < evl; env->vstart =3D ++i, addr +=3D esz) { @@ -467,8 +466,8 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, target_= ulong addr, env->vstart +=3D elems; } else { if (nf =3D=3D 1) { - vext_continuous_ldst_tlb(env, ldst_tlb, vd, evl, addr, env->vs= tart, - ra, esz, is_load); + vext_continuous_ldst_tlb(env, ldst_tlb, vd, evl, addr, + env->vstart, ra, esz); } else { for (uint32_t i =3D env->vstart; i < evl; env->vstart =3D ++i)= { vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, @@ -501,9 +500,8 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, uint32_t desc, */ if (nf =3D=3D 1 && (evl << log2_esz) <=3D 6) { addr =3D base + (env->vstart << log2_esz); - vext_continuous_ldst_tlb(env, ldst_tlb, vd, evl, addr, env->vstart= , ra, - esz, is_load); - + vext_continuous_ldst_tlb(env, ldst_tlb, vd, evl, addr, + env->vstart, ra, esz); env->vstart =3D 0; vext_set_tail_elems_1s(evl, vd, desc, nf, esz, max_elems); return; --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285208; cv=none; d=zohomail.com; s=zohoarc; b=KSny9VjyxxT5Cn1OuUx4Nfj/9dcDjaGrcM3Wk5G0E+M3QDOjwtZ5qsGa1J4yTFJtXRXoPTHJhtbuwgr0CqO25JGQqO3s9JsMw7ek0fCBpS6hmhplzKbpYKUu1PG8tyMyhVO0p47iO4Xy/hgmOlKqZYoyyCyMKS0Eu6nzG3Q8Yhk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285208; 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=Sk77f80WPvGO0zvaNiZBatjOOICFxmk3ZLvZH1EsYws=; b=TfN/nfbI+Ad4fhHMFrvkLOzANSj9ISxrfpDCzRNmmB5Y48UKilaQn0BvrKhndJGtYmDF9UU7sg8QjLDzGbEcXhu18mmMCmaBy2EUjr+RIHLjnSp4uXRtfb1f/LxK2QhNs76clECXbKuezZEvkTrKSe15QP2QtQWdRYZe8B5nsxI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285208203618.1321859683072; Thu, 20 Aug 2026 21:06:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUP-00062A-IB; Fri, 21 Aug 2026 00:04:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUL-0005zZ-W5 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:18 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUK-0003AW-C7 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:17 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-c9aea40d799so397201a12.0 for ; Thu, 20 Aug 2026 21:04:15 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285055; x=1787889855; 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:content-type; bh=Sk77f80WPvGO0zvaNiZBatjOOICFxmk3ZLvZH1EsYws=; b=wgM85RCKFgEQsb6JogHs0pGd/9v/f5j1eM0VEmENTcGIUnulqcUCVo3LUeqbbjXY1h SYz/22MiBKw/Tz+KdB2dppG6KY+t+weYPuqAgvgUtEWfdmhHHS4p8Tk5tMuUGX9bjuN3 mxuHbn1iWSeh9KgPTd4Onbo2+Hh0LNzMKNmjoFxKRIg+o46Gedq8yEoYGMUiGijSlNtE Y6FHDovgQJG0IZ+9/gCHcIzSkqKdr6uGHsl9/l9aahfn9fMVbxcYFlOFhtXyILp03BVy xjZNTZQbnTZMIIOQuZ+ZFYGul0uLKjdjBX1AJQIo3g1/21J9lecgxoPqE3pBi+lzdS9I iNPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285055; x=1787889855; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Sk77f80WPvGO0zvaNiZBatjOOICFxmk3ZLvZH1EsYws=; b=eI8Mce3myjdtFKD7tiiRfINWoajPnrHVJ/vUHtlUfIN3kwdzZpTsGEvgPdzoLkzG1t c5kECbJYattSywc5HRvisBb3lFbnzkwX9agxlIp2e0fNxGbxiyxO07WB/HkeAH3oFw7t zAjxIgYAdFWjglyjubEfasgQB5SGUb8FveMMb5xRnMqVPPjHsDyz5Ak/FaA7TL7AxX6o h90VLuP13EF6PxBl7LUyHo0928UCKcV8zU8o3SMqDUCnjKZrIcALuToRgn9tFSn6q6wU keQ0sOAOlWZuDQ/Sx79zIuYP6K3cA+ZmmuukEeKifdW9Kcfq1us/6OD7Ll2PsGXMdau2 Fk9Q== X-Gm-Message-State: AFuF++mJvk5Jh+iRkuxN0upRR+l0Ibl8Vo0rvykcEbNVSBI3Sv/fMWZk q4RWr50sfYE35QWhcMXhjhohyvovta5KSc3dpothokinxfSCacpw1M4UkquCtILZsK2OmC4uFGO ZVT/b X-Gm-Gg: AR+sD100pxHcvCH7uEHlNRowqNKZ5paVdoBVDhPkMgncxhw41UnpN8HJpvPsYh3uDzU 7+rgvI94mjRtToD86w6+PfO07sNRHVgShxtBAtuTaSUBJUbGqe2A9N4qL2nGt2FEpq9DTG5RNdx 0k/pQTU80qlDet2j3jqXL7TG2haLHfwpXXlsM7OSYZLQech1m+1FobJW/01RiAB2ejT35wnoItI +MKs4UBawppbOQObYpGenKwm0mqefQb5qqeyGOGIvQMraEJRtR36xwwtTMoxUL3xZnnxG8bjAXM TYr2W8xRBAHXL+1EvdDdIGz/pru8TC+iseINEaXcnSJ5+gFiX/L8vUp8Gsr5Hp/aOd3u83DdDxB 6qsV+Vp/3gGvr1X6kmxaigVtz7cX77/MPz6+CBDj1WEHIAdyjSorfRo405Ilp6/xZm2d9nwNkhz o7brPLNmMA+iHJDnJULogJ0KYuAsUZ8BQeNwkmEF5m7x9fiYbYPh3LfiAXiDYPL7p+pdAeEBUV4 o3Yyg== X-Received: by 2002:a17:90b:4c49:b0:366:10f1:3d91 with SMTP id 98e67ed59e1d1-395c354d42dmr5747738a91.1.1787285054918; Thu, 20 Aug 2026 21:04:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 05/23] target/riscv: Remove vext_continuous_ldst_tlb Date: Thu, 20 Aug 2026 21:03:46 -0700 Message-ID: <20260821040404.268123-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285209107158500 Content-Type: text/plain; charset="utf-8" Drop the usage in vext_page_ldst_us, merging the nf =3D=3D 1 case into the vext_ldst_nf_tlb loop. Inline it into the last use in vext_ldst_us. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 34 ++++++++++---------------------- 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index da1e704c56..63a51f2b48 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -272,17 +272,6 @@ GEN_VEXT_HOST_ST_ELEM(ste_h, uint16_t, H2, stw_le) GEN_VEXT_HOST_ST_ELEM(ste_w, uint32_t, H4, stl_le) GEN_VEXT_HOST_ST_ELEM(ste_d, uint64_t, H8, stq_le) =20 -static inline QEMU_ALWAYS_INLINE void -vext_continuous_ldst_tlb(CPURISCVState *env, vext_ldst_elem_fn_tlb *ldst_t= lb, - void *vd, uint32_t evl, target_ulong addr, - uint32_t reg_start, uintptr_t ra, uint32_t esz) -{ - uint32_t i; - for (i =3D env->vstart; i < evl; env->vstart =3D ++i, addr +=3D esz) { - ldst_tlb(env, adjust_addr(env, addr), i, vd, ra); - } -} - static inline QEMU_ALWAYS_INLINE void vext_continuous_ldst_host(CPURISCVState *env, vext_ldst_elem_fn_host *ldst= _host, void *vd, uint32_t evl, uint32_t reg_start, void *= host, @@ -465,15 +454,10 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, targe= t_ulong addr, } env->vstart +=3D elems; } else { - if (nf =3D=3D 1) { - vext_continuous_ldst_tlb(env, ldst_tlb, vd, evl, addr, - env->vstart, ra, esz); - } else { - for (uint32_t i =3D env->vstart; i < evl; env->vstart =3D ++i)= { - vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, - max_elems, ldst_tlb, ra); - addr +=3D msize; - } + for (uint32_t i =3D env->vstart; i < evl; env->vstart =3D ++i) { + vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, + max_elems, ldst_tlb, ra); + addr +=3D msize; } } } @@ -495,13 +479,15 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVSta= te *env, uint32_t desc, =20 #if defined(CONFIG_USER_ONLY) /* - * For data sizes <=3D 6 bytes we get better performance by simply cal= ling - * vext_continuous_ldst_tlb + * For data sizes <=3D 6 bytes we get better performance + * by simply calling ldst_tlb. */ if (nf =3D=3D 1 && (evl << log2_esz) <=3D 6) { addr =3D base + (env->vstart << log2_esz); - vext_continuous_ldst_tlb(env, ldst_tlb, vd, evl, addr, - env->vstart, ra, esz); + for (uint32_t i =3D env->vstart; i < evl; + env->vstart =3D ++i, addr +=3D esz) { + ldst_tlb(env, adjust_addr(env, addr), i, vd, ra); + } env->vstart =3D 0; vext_set_tail_elems_1s(evl, vd, desc, nf, esz, max_elems); return; --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285266; cv=none; d=zohomail.com; s=zohoarc; b=iHDWqVop18hy+h81byTesYlxYWTcxo7N7UNxOpCrj6N1NXi5wL31PwDX1bKCXgU2Y0wCC3Gk62plMxmxK74dLNeccqK69BWgEP7uMgLX1180VkpX9peYEZyzaQHBVpDkQ4uBOkrFhaMCUvpbqcB+/ePw98+wGnaZtdvbilxcsRA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285266; 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=kFG+X+gNFB2lQusybVgjPeXj7Ar+44XCtkZGXEI5MiU=; b=lajtBj8oXIe/shTmh9XSS0za1Nn5CfstP178QAisNociSt9LFv+Io4V0On/XX9WG4Ys5BliZbihGMj0lGnBjVOWr87UtVbEWNInU5Uh1B8mTzNbTXp7uztqOLiSnIN58+bvboWh7TCAHHMf4MpzW2V1CR2wl0o+P7eQlvNJftcY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285266039606.7962931594906; Thu, 20 Aug 2026 21:07:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUP-00061y-7C; Fri, 21 Aug 2026 00:04:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUN-00060R-7B for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:19 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUL-0003B2-8g for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:18 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2d58efc7356so7077845ad.1 for ; Thu, 20 Aug 2026 21:04:16 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285056; x=1787889856; 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:content-type; bh=kFG+X+gNFB2lQusybVgjPeXj7Ar+44XCtkZGXEI5MiU=; b=lyS4tjgiyZTR7VhSqeYXblio0umpvpT3nFlkZdyy17Ybnb/PUFxpqb1fnkujMwzKWs dqca1qGZw6Wgx+YTbJka4159uLBphHulFUhbmk/r2x1sazWtnHyxBoCP8rCZTb0bMBJ1 ZbN3uKSTvbeCPMzM2sthAXRf4diBYERtZksPav5vGbKRdWlerbRnU7ZXsunb3KrEyitU fyqyUW4YkVSJQvVQXBaYbD1SQP5WErdSFXDyKVq1d6xvGy3sOr3Dv3/i/nqCdyCIhJff GBseTbLmWvvRROfga8ymaNjeHWJInRUCRvYfY//cmHOABDiwS2HD8P/XorHZqC+MflbZ HJPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285056; x=1787889856; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=kFG+X+gNFB2lQusybVgjPeXj7Ar+44XCtkZGXEI5MiU=; b=nMdzo2J+ygUWUdM98404ZZkQz6SM8DboYXmamZwAhIiAxXoUMLI86A6jbJhLFRxaXZ dWqukZfMzPOKET8C7UIcF1TPI8/6Y2Dlfnheb/cdFwzObJngi2uSjyDPu+tGogg4UX8k z8hngltkWDbNuStHXVCctmjM24lZVu2irRba7kMK62FBrbYazTXoC5nyTSr2+IKNIL83 okc2cP9H3sn8cBIFfJrSbHaWYd6AfxqNY0+tRhKPnSTUPKrxVubGnVe2m1DU4Dzw+VIO jzf7tUDeclThXqjkH62b4km44DIx6qSU2s3DlkN+ccUbO5D3WFhC884q6NMHX6hXw+jY GKsg== X-Gm-Message-State: AFuF++lbInZOfgCKQhxhdyW0/r0rYKt7I+V/vIjx1Sauf9rW/4eKLZoq m1lOrvC5fHcjfxYdgNzt+rPwq2HbIR0zq3riv2uikmVgZSNDi10Iws+aTHR1NmbC9qog+YVKR1f g5Qzo X-Gm-Gg: AR+sD12tFaJ0WheVb6m/QJqTfAMaM2WRDGFKRTfirF8iD/nZsnBox8OAMJtHNU5uJnp ntXFU21XwdAOWOPoYmNnugiKJpOElu7bSphhFgFtgsa3Nyxls4nx+QAHqjAlE0IFVU+l3w8Rq1e OUX73+nPaA8bNFtgotW9XmFPg7RJEKXjNP0sNl9ydebX0PV0jZWfxepkoU6D9Lfo4YdHVBFngdp I6G3drd9DZxB/T7cA3OBdQ9UqC0ko9uJbfmHtWhCrwkImbpNunVGXN169GcpdTipIUGCzn09PBT xakF2jTUntxace+bmSn9o5VsbZjr0/Ysrv5VzDfTtw86mAgbJ0cxhfEaMKLDGS8RDmx6FhWIpat +p25JsEgDpA+h7yG4xBEPKr7r5sUqGWIQ5PjOiOpDKqLZqB3tIAdr04EOMmwdY7jkZcHbNkUVZ2 YB6poe3KYkZSIiIydOCOsb1Bthp8ZQ006Zo6nDCxrE+M+ntIVuNivdMeifmFaNPdXM+S8= X-Received: by 2002:a17:90b:3912:b0:392:e5b1:d833 with SMTP id 98e67ed59e1d1-395c3738b35mr5334615a91.13.1787285055674; Thu, 20 Aug 2026 21:04:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 06/23] target/riscv: Move misalignment check out of vext_page_ldst_us Date: Thu, 20 Aug 2026 21:03:47 -0700 Message-ID: <20260821040404.268123-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285267321158500 Content-Type: text/plain; charset="utf-8" Alignment faults generally have precedence over page faults, therefore we need to test for that before probing pages. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 62 +++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 12 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 63a51f2b48..18840336cb 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -31,6 +31,9 @@ #include "tcg/tcg-gvec-desc.h" #include "internals.h" #include "vector_internals.h" +#ifdef CONFIG_USER_ONLY +#include "user/cpu_loop.h" +#endif #include =20 static target_ulong vtype_reserved(CPURISCVState *env, target_ulong vtype) @@ -433,16 +436,7 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, target= _ulong addr, probe_pages(env, addr, size, ra, access_type, mmu_index, &host, &flags, true); =20 - bool misaligned =3D addr & (esz - 1); - - /* - * Allow the host fast-pash when: - * 1. Page permission/pmp/watchpoint are checked and we have a conti= gous - * host mapping. - * 2. Zicclsm is enabled or load/store is not a misaligned access. - * Otherwise, we will fall back to the slow TLB-path. - */ - if (flags =3D=3D 0 && (riscv_cpu_cfg(env)->ext_zicclsm || !misaligned)= ) { + if (flags =3D=3D 0) { if (nf =3D=3D 1) { vext_continuous_ldst_host(env, ldst_host, vd, evl, env->vstart, host, esz, is_load); @@ -462,6 +456,20 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, target= _ulong addr, } } =20 +static void vext_test_alignment(CPURISCVState *env, vaddr addr, uint32_t e= sz, + MMUAccessType access_type, int mmu_index, + uintptr_t ra) +{ + if (!riscv_cpu_cfg(env)->ext_zicclsm && (addr & (esz - 1)) !=3D 0) { +#ifdef CONFIG_USER_ONLY + cpu_loop_exit_sigbus(env_cpu(env), addr, access_type, ra); +#else + riscv_cpu_do_unaligned_access(env_cpu(env), addr, access_type, + mmu_index, ra); +#endif + } +} + static inline QEMU_ALWAYS_INLINE void vext_ldst_us(void *vd, target_ulong base, CPURISCVState *env, uint32_t des= c, vext_ldst_elem_fn_tlb *ldst_tlb, @@ -474,16 +482,21 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVSta= te *env, uint32_t desc, uint32_t esz =3D 1 << log2_esz; uint32_t msize =3D nf * esz; int mmu_index =3D riscv_env_mmu_index(env, false); + MMUAccessType access_type =3D is_load ? MMU_DATA_LOAD : MMU_DATA_STORE; =20 VSTART_CHECK_EARLY_EXIT(env, evl); =20 + addr =3D base + env->vstart * msize; + + /* Recognize alignment fault before memory protection fault. */ + vext_test_alignment(env, addr, esz, access_type, mmu_index, ra); + #if defined(CONFIG_USER_ONLY) /* * For data sizes <=3D 6 bytes we get better performance * by simply calling ldst_tlb. */ if (nf =3D=3D 1 && (evl << log2_esz) <=3D 6) { - addr =3D base + (env->vstart << log2_esz); for (uint32_t i =3D env->vstart; i < evl; env->vstart =3D ++i, addr +=3D esz) { ldst_tlb(env, adjust_addr(env, addr), i, vd, ra); @@ -495,7 +508,6 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, uint32_t desc, #endif =20 /* Calculate the page range of first page */ - addr =3D base + ((env->vstart * nf) << log2_esz); page_split =3D -(addr | TARGET_PAGE_MASK); /* Get number of elements */ elems =3D page_split / msize; @@ -725,7 +737,27 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPURI= SCVState *env, =20 VSTART_CHECK_EARLY_EXIT(env, env->vl); =20 + /* Search for the first active element. */ + if (!vm) { + for (i =3D env->vstart; i < env->vl; ++i) { + if (vext_elem_mask(v0, i)) { + break; + } + if (vma) { + vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); + } + } + if (i =3D=3D env->vl) { + goto tail; + } + env->vstart =3D i; + } + addr =3D base + ((env->vstart * nf) << log2_esz); + + /* Recognize alignment fault before memory protection fault. */ + vext_test_alignment(env, addr, esz, MMU_DATA_LOAD, mmu_index, ra); + page_split =3D -(addr | TARGET_PAGE_MASK); /* Get number of elements */ elems =3D page_split / msize; @@ -823,6 +855,7 @@ ProbeSuccess: } } =20 + tail: env->vstart =3D 0; vext_set_tail_elems_1s(env->vl, vd, desc, nf, esz, max_elems); } @@ -866,9 +899,14 @@ vext_ldst_whole(void *vd, target_ulong base, CPURISCVS= tate *env, uint32_t desc, uint32_t evl =3D nf * max_elems; uint32_t esz =3D 1 << log2_esz; int mmu_index =3D riscv_env_mmu_index(env, false); + MMUAccessType access_type =3D is_load ? MMU_DATA_LOAD : MMU_DATA_STORE; =20 /* Calculate the page range of first page */ addr =3D base + (env->vstart << log2_esz); + + /* Recognize alignment fault before memory protection fault. */ + vext_test_alignment(env, addr, esz, access_type, mmu_index, ra); + page_split =3D -(addr | TARGET_PAGE_MASK); /* Get number of elements */ elems =3D page_split / esz; --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178728529022450.821276882052985; Thu, 20 Aug 2026 21:08:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUP-00062K-L5; Fri, 21 Aug 2026 00:04:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUN-00061D-P6 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:19 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUM-0003BN-4L for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:19 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-384930ca5e2so542837a91.3 for ; Thu, 20 Aug 2026 21:04:17 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285056; x=1787889856; 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:content-type; bh=zWgraQC/iHNbGM9tiX/UbYCokd7ddZcoQW3LV3tut1Y=; b=cwqOSzB68ZApWVC/fts6+2aN5qK0BUqa34mJoXwLrsZhWakvdTWkIvprfbssFNjdws Ad6FtvN93M/HMEVFDPSN9pwJKIk4ytSUOjI6fTP3LCc1rvaCp1H11liJVnVf8rJxHabw BzaQFYsYx+Y8c/LPnTNA93rd92BqBLGed21pYTH2VeXRzmHM2Ca1br1VPBhBswN6zcuh ZqbOto2YdfQy8IWS/BuVMKn6VIwRz8ShruBlxW+L/XS2c4929s3vc3Zs6XXqV+u1C1Sl IO4WkraOY3Qi87B69zT/SE9TyF5cB/cQ2UUrDZZmpvqTLR4fn8Y7qgdTVogqlrqsX+jI +13Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285056; x=1787889856; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=zWgraQC/iHNbGM9tiX/UbYCokd7ddZcoQW3LV3tut1Y=; b=gC9/0o2xL5HXDHU69ycavEMLAFsrp7lr5zoYZGtv8uNdjOU58pf2aeV302yB3JIs2Z sx864uBugOk3IlP//k1z7htxHOMIZx44liRKyZYFkTA9uYZO7f94IDvPYaRNxf6dQxXi ZYTznvV+LGguD5Ap9XBlZJHwJvWlR6SXwnhh8Hfsb2shg+oNcpfBJTc0RRTSDfq+agF3 NMu/llJ1rgViQxlkK7jqduIrCPUIgma9/ilgraYtqGtS38g/O1Ra6uTPFdhJws1ltcNA yfddznuOwXkJAQqCwyzlMJ1O9iK0xo1od4u1Pg6cd16ByI69M3LMBOyg13Vv3Y7F2fqQ 99wA== X-Gm-Message-State: AFuF++k+qvnJOphhxlE0rCVK6z4QtwSTgico8N86yVad0DTWFrHI1NdR U3TfUs1IyxwJi7yZ1dvHEhLOktKXtL2niE6pmEaSnj/316tgJ9XfprxBVFMItUxakdctRguedFq 1UaEg X-Gm-Gg: AR+sD11ecQGe1jf7ry4y5eySwDzUXaIfrXKIIAbePrktLQ4n1Mu8SX+OqT933johz/+ j1D3Zit3tNz7ihgRetUpW0nIVstQXMIn1ZcDUFYkS0Er70fvszWWLeWuUduE4EEKXyZ6PmumIqC clqh+dARg77PQyOAwCn9hwzNG6xgkM26nQXsI0gqYEDE+XnQ0zI0NUZohUasu+i8sBuQAMacDfX sehqfQX3rCQMHEFatCttS2FarBvzuD2sMyz55X5XDsOwEb5Agj/5IRkTsiec6DBMp5MALAG8nJe cWjr1hvgdZyxl4OS1JZTgQPoEaRxVYUUgvtL/aIqrpAXa7eVfN4jSelSnEdKoxeXdj6YahIOIyy 9PzsJMriC5sEM44esRaQq/8Fdzrc25vLqs2Dw2f2LglikKIGKYmyH4IPOn0UnEAEtnp5BrqhTPo 4GJ71Jt+g0Y+E5pyy/8nThHWLWL2uxLLzCzNmMmvrt8PNu9lBZQLgGVHDza+F3WnMthyk= X-Received: by 2002:a17:90a:da87:b0:38e:2860:253f with SMTP id 98e67ed59e1d1-395c3731c29mr6565696a91.12.1787285056488; Thu, 20 Aug 2026 21:04:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 07/23] target/riscv: Split out vext_page_ldst_us_{host, tlb} Date: Thu, 20 Aug 2026 21:03:48 -0700 Message-ID: <20260821040404.268123-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1787285291377158500 Content-Type: text/plain; charset="utf-8" Split out the tail of vext_page_ldst_us, after probing. Merge vext_continuous_ldst_host into vext_page_ldst_us. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 101 ++++++++++++++++--------------- 1 file changed, 51 insertions(+), 50 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 18840336cb..505f0331f2 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -275,33 +275,6 @@ GEN_VEXT_HOST_ST_ELEM(ste_h, uint16_t, H2, stw_le) GEN_VEXT_HOST_ST_ELEM(ste_w, uint32_t, H4, stl_le) GEN_VEXT_HOST_ST_ELEM(ste_d, uint64_t, H8, stq_le) =20 -static inline QEMU_ALWAYS_INLINE void -vext_continuous_ldst_host(CPURISCVState *env, vext_ldst_elem_fn_host *ldst= _host, - void *vd, uint32_t evl, uint32_t reg_start, void *= host, - uint32_t esz, bool is_load) -{ - if (HOST_BIG_ENDIAN) { - for (; reg_start < evl; reg_start++, host +=3D esz) { - ldst_host(vd, reg_start, host); - } - } else { - if (esz =3D=3D 1) { - uint32_t byte_offset =3D reg_start * esz; - uint32_t size =3D (evl - reg_start) * esz; - - if (is_load) { - memcpy(vd + byte_offset, host, size); - } else { - memcpy(host, vd + byte_offset, size); - } - } else { - for (; reg_start < evl; reg_start++, host +=3D esz) { - ldst_host(vd, reg_start, host); - } - } - } -} - static void vext_set_tail_elems_1s(uint32_t vl, void *vd, uint32_t desc, uint32_t nf, uint32_t esz, uint32_t max_elems) @@ -411,6 +384,52 @@ GEN_VEXT_ST_STRIDE(vsse64_v, int64_t, ste_d_tlb) */ =20 /* unmasked unit-stride load and store operation */ +static inline QEMU_ALWAYS_INLINE void +vext_page_ldst_us_host(void *vd, void *host, uint32_t i, uint32_t evl, + uint32_t nf, uint32_t log2_esz, uint32_t max_elems, + vext_ldst_elem_fn_host *ldst_host, bool is_load) +{ + uint32_t esz =3D 1 << log2_esz; + + if (nf =3D=3D 1) { + if (!HOST_BIG_ENDIAN && esz =3D=3D 1) { + size_t size =3D evl - i; + if (is_load) { + memcpy(vd + i, host, size); + } else { + memcpy(host, vd + i, size); + } + } else { + do { + ldst_host(vd, i, host); + host +=3D esz; + } while (++i < evl); + } + } else { + uint32_t msize =3D nf << log2_esz; + do { + vext_ldst_nf_host(vd, host, i, nf, esz, max_elems, ldst_host); + host +=3D msize; + } while (++i < evl); + } +} + +static inline QEMU_ALWAYS_INLINE void +vext_page_ldst_us_tlb(CPURISCVState *env, void *vd, target_ulong addr, + uint32_t i, uint32_t evl, uint32_t nf, + uint32_t log2_esz, uint32_t max_elems, + vext_ldst_elem_fn_tlb *ldst_tlb, + int mmu_index, uintptr_t ra) +{ + uint32_t esz =3D 1 << log2_esz; + uint32_t msize =3D nf << log2_esz; + do { + vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, max_elems, ldst_tlb, r= a); + addr +=3D msize; + env->vstart =3D ++i; + } while (i < evl); +} + static inline QEMU_ALWAYS_INLINE void vext_page_ldst_us(CPURISCVState *env, void *vd, target_ulong addr, uint32_t elems, uint32_t nf, uint32_t max_elems, @@ -420,39 +439,21 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, targe= t_ulong addr, { void *host; int flags; - uint32_t esz =3D 1 << log2_esz; uint32_t size =3D (elems * nf) << log2_esz; - uint32_t msize =3D nf * esz; - uint32_t evl =3D env->vstart + elems; + uint32_t i =3D env->vstart; MMUAccessType access_type =3D is_load ? MMU_DATA_LOAD : MMU_DATA_STORE; =20 - /* - * Maximum vector length is VLMAX =3D=3D 2^16 =3D=3D LMUL * VL / SEW, = and - * occurs for LMUL =3D=3D 8, SEW =3D=3D 8, VL =3D=3D 2^16. - */ - g_assert(env->vstart < UINT16_MAX && UINT16_MAX - env->vstart >=3D ele= ms); - /* Check page permission/pmp/watchpoint/etc. */ probe_pages(env, addr, size, ra, access_type, mmu_index, &host, &flags, true); =20 if (flags =3D=3D 0) { - if (nf =3D=3D 1) { - vext_continuous_ldst_host(env, ldst_host, vd, evl, env->vstart, - host, esz, is_load); - } else { - for (uint32_t i =3D env->vstart; i < evl; ++i) { - vext_ldst_nf_host(vd, host, i, nf, esz, max_elems, ldst_ho= st); - host +=3D msize; - } - } + vext_page_ldst_us_host(vd, host, i, i + elems, nf, log2_esz, + max_elems, ldst_host, is_load); env->vstart +=3D elems; } else { - for (uint32_t i =3D env->vstart; i < evl; env->vstart =3D ++i) { - vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, - max_elems, ldst_tlb, ra); - addr +=3D msize; - } + vext_page_ldst_us_tlb(env, vd, addr, i, i + elems, nf, log2_esz, + max_elems, ldst_tlb, mmu_index, ra); } } =20 --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285234; cv=none; d=zohomail.com; s=zohoarc; b=Ew0RNU+/sONe9KYgTybU6tW9DTIeEfUwWyLD87gj1dbgVCewPmC3G8wsBbIluW634x3jU0gz6HfLD1I7PF14xjUv/Ow/qk2Ix862XJIKi7dUPTrbWx3QojTMKwbWRdj8G2Mv285E149vwATeNjt5/qHjEpgKj20GF3aZo2k7HhQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285234; 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=W+PCmHSRhTicbeZtNSYjuRxoRU2mRhQsx0kY/BYPfII=; b=lS+ItzMeUYYAR3rBtEYx+O1uTcSrs9YZ0XALmER+JH/Lg54Ad9168EqXPOiTIUbp8APB5jsIwZMHJiyN137Yo+wA9hIMgCVyVdHDodSY8R78eu+koEfohue1h419VB1Fn1dyIXf+ZmE9Agb7E111FkswBAphERqNl2SXcC6evmw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285234083348.99146729745246; Thu, 20 Aug 2026 21:07:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUQ-00063d-BX; Fri, 21 Aug 2026 00:04:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUO-00061g-J4 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:20 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUM-0003Bm-KF for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:20 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-cbedbaba5fdso368690a12.0 for ; Thu, 20 Aug 2026 21:04:18 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285057; x=1787889857; 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:content-type; bh=W+PCmHSRhTicbeZtNSYjuRxoRU2mRhQsx0kY/BYPfII=; b=m/sHvMzPriPJESeLX7qvY3xo+SPR8whLXxoYGZpF+XLiWxak3m3GBhQmTSjiZDBcUs oPJe9Rtobbw8h6h0pLwa727nXDcOVoOOo6l/yMR4imqHcGZYe3LtbqMFnhsq0+S8dZ8S C2jzjJqGuZmf597MOx2BfFVW4AES2EYgDnq5lQ10Pw1u665SI+TFenOPoGlf45EyPE9e 7rOe4o+qXoVmoGO5hSix53PFMLBsUbM3nRoSZ4G8nVd1+W9Ou7VV+93+TE8POagcInCw mWzEklkx3hcwjXrPe9bAj99SELbEACCw4aPaGAk4EWnxlSRXUGNkwyvCjcGDeHnJ5/Al TGLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285057; x=1787889857; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=W+PCmHSRhTicbeZtNSYjuRxoRU2mRhQsx0kY/BYPfII=; b=ATgBXAWrmUcC8m1uoFmQGzKLce+GYK7ddFK6Lo8DxjIEck2UOpAlopPaYg3Zmf0G5x 8iu3qnSCuy2+LhXCKfxSHRf2zEM/BWA+41QsmwEFCXciXdzAluR6Vw4556Nc2Okvl23J 44Xw+dJHnptbkjBMKQyPkRSOwx5c6oQPFm0FB5SE4J3dQmbCGZ2ZTvoBge2rhdY90bqA dSVf+lTJmTLcrDJluO13ehjiQJ+ud49MKjzA+tdYI/Jyk7yQQtYYMQ9UL/4lgk2gAbCI C7mrULlz2dnVyOudgGrtrnkeOo7gCK+hAdfx0iggGXceTmtCKJCb+fz68NzFHA5d+izC clpw== X-Gm-Message-State: AFuF++l4fgKihz/4VUsEWnESsNXs2cVJ/FXZAdysoyJOHA0eq124/gXd xGWIficfU5SNzwJgYbvPxt0EIveegRV40lfb7XvhTakNZcnt8gzS76p/AObzUJ9HixVWukTtHfz fv5dd X-Gm-Gg: AR+sD1070HLK+rc3j4pBaqiTHbdE+yVbO4l/Ir056T95iSCtTUNIuF9roj58jsHsRRd fDJGqwLfNe3qBhcm1UGjrAbSmEAzf8d/bZvU6IqO8Gnn2OiGDTGDiCfphOWAGM+YprZGNp/AxLs C2UkMLzWHoJMCLhneZHhMJ+Sc0kchSqrg004WC1X6wdU+c54wzMSHTybwC+vD3MbOWLd/l3441e hTt05ObxIkfVVlbDp8WqbDkyG1uI207txNrG4L6379EmgDSvXltbmfdhjmgTt6/ER67igR2gn7t oU6fsAfQQJ0N94X8QGpv5czVSGMOmBKDBTHkMVdPJWbUjwDskUz+yBMTAMSSnhap+OVwxnkmZTh pRsAIDR9tRT+jUBIHes6AEx1Ih3SH63on01zLC3KuYQGqDn2cRKirJPWBOp0b2wqBFbful7ThHN QxBQe4PM8tU5zF9MpP79YUa/K0Vgi+maqxVwFxuW2ZLuaaX0lvNkAx2mu7MhO+ouBhIFU= X-Received: by 2002:a17:90b:57e5:b0:381:11eb:d78e with SMTP id 98e67ed59e1d1-395c35f0a79mr6218841a91.14.1787285057149; Thu, 20 Aug 2026 21:04:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 08/23] target/riscv: Rewrite vext_ldst_us Date: Thu, 20 Aug 2026 21:03:49 -0700 Message-ID: <20260821040404.268123-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285235307158500 Content-Type: text/plain; charset="utf-8" We already computed the page split here, which means we were quite ready to call probe_access directly. Do so, then use vext_ldst_nf_{host,tlb} to load the elements. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 88 ++++++++++++++++++++------------ 1 file changed, 56 insertions(+), 32 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 505f0331f2..36e64465f2 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -477,17 +477,19 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVSta= te *env, uint32_t desc, vext_ldst_elem_fn_host *ldst_host, uint32_t log2_esz, uint32_t evl, uintptr_t ra, bool is_load) { - target_ulong page_split, elems, addr; + target_ulong elems, addr, last, last_in_page, page_split; uint32_t nf =3D vext_nf(desc); uint32_t max_elems =3D vext_max_elems(desc, log2_esz); uint32_t esz =3D 1 << log2_esz; uint32_t msize =3D nf * esz; int mmu_index =3D riscv_env_mmu_index(env, false); MMUAccessType access_type =3D is_load ? MMU_DATA_LOAD : MMU_DATA_STORE; + uint32_t i =3D env->vstart; + void *host; =20 VSTART_CHECK_EARLY_EXIT(env, evl); =20 - addr =3D base + env->vstart * msize; + addr =3D base + i * msize; =20 /* Recognize alignment fault before memory protection fault. */ vext_test_alignment(env, addr, esz, access_type, mmu_index, ra); @@ -498,50 +500,72 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVSta= te *env, uint32_t desc, * by simply calling ldst_tlb. */ if (nf =3D=3D 1 && (evl << log2_esz) <=3D 6) { - for (uint32_t i =3D env->vstart; i < evl; - env->vstart =3D ++i, addr +=3D esz) { + for (; i < evl; env->vstart =3D ++i, addr +=3D esz) { ldst_tlb(env, adjust_addr(env, addr), i, vd, ra); } - env->vstart =3D 0; - vext_set_tail_elems_1s(evl, vd, desc, nf, esz, max_elems); - return; + goto tail; } #endif =20 - /* Calculate the page range of first page */ + /* Calculate the page range of first page. */ + last =3D base + evl * msize - 1; + last_in_page =3D addr | ~TARGET_PAGE_MASK; page_split =3D -(addr | TARGET_PAGE_MASK); - /* Get number of elements */ - elems =3D page_split / msize; - if (unlikely(env->vstart + elems >=3D evl)) { - elems =3D evl - env->vstart; - } + + /* Validate the first page is accessible. */ + host =3D probe_access(env, adjust_addr(env, addr), + MIN(last, last_in_page) - addr + 1, + access_type, mmu_index, ra); + + /* Get number of complete elements in the first page. */ + elems =3D MIN(page_split / msize, evl - i); =20 /* Load/store elements in the first page */ if (likely(elems)) { - vext_page_ldst_us(env, vd, addr, elems, nf, max_elems, log2_esz, - is_load, mmu_index, ldst_tlb, ldst_host, ra); - } + uint32_t page_evl =3D i + elems; =20 - /* Load/store elements in the second page */ - if (unlikely(env->vstart < evl)) { - addr =3D base + env->vstart * msize; - - /* Cross page element */ - if (unlikely(page_split % msize)) { - vext_ldst_nf_tlb(env, vd, addr, env->vstart, - nf, esz, max_elems, ldst_tlb, ra); - env->vstart++; - addr +=3D msize; + if (host) { + vext_page_ldst_us_host(vd, host, i, page_evl, nf, log2_esz, + max_elems, ldst_host, is_load); + } else { + vext_page_ldst_us_tlb(env, vd, addr, i, page_evl, nf, + log2_esz, max_elems, + ldst_tlb, mmu_index, ra); } =20 - /* Get number of elements of second page */ - elems =3D evl - env->vstart; - - /* Load/store elements in the second page */ - vext_page_ldst_us(env, vd, addr, elems, nf, max_elems, log2_esz, - is_load, mmu_index, ldst_tlb, ldst_host, ra); + /* Usually the first page contains the entire vector. */ + if (likely(page_evl =3D=3D evl)) { + goto tail; + } + env->vstart =3D i =3D page_evl; + addr +=3D elems * msize; } =20 + /* Cross page element */ + if (unlikely(page_split % msize)) { + vext_ldst_nf_tlb(env, vd, addr, i++, nf, esz, max_elems, ldst_tlb,= ra); + if (i =3D=3D evl) { + goto tail; + } + env->vstart =3D i; + addr +=3D msize; + } + + /* Validate the second page is accessible. */ + assert(i < evl); + elems =3D evl - i; + host =3D probe_access(env, adjust_addr(env, addr), elems * msize, + access_type, mmu_index, ra); + + if (host) { + vext_page_ldst_us_host(vd, host, i, evl, nf, log2_esz, + max_elems, ldst_host, is_load); + } else { + vext_page_ldst_us_tlb(env, vd, addr, i, evl, nf, log2_esz, max_ele= ms, + ldst_tlb, mmu_index, ra); + } + + tail: env->vstart =3D 0; vext_set_tail_elems_1s(evl, vd, desc, nf, esz, max_elems); } --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285277; cv=none; d=zohomail.com; s=zohoarc; b=XHICV8ULsxNvlEtF2qAF9l/tORWIEBpTqrUV1uBFAcHgum2roJzDahNB/F7lwkyHzVAXa4KsqGyclMaRHMowK2BIumTSeW8kb3x1jIMtNTTwMH2C7Y8dlyDM1PZ2ZOvTHQuf//UjzkBtEHBWURkTvy74jjqIsAz11eRhjCqPtOg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285277; 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=Yg0R9lp1wA+wZ7tNXGKNkxI/zEhk3zYnixoj/UZ92CU=; b=LQ4ZJTZMQGt5ylgmuW046uUydlA/0Rrf1/yqAKjtw01bo+Lva7WfQ2imCiR5ggji9X4pmtPlHagCPXCDsb+2542oEDmje/Jn+jP6SzKTxX+tIR7GVbxUPXJYvrCXphtD+2EwJM1odoOWjMeWoqc4sImMpU/0jUPP8QRSI2Ce3ZY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285277594968.2188045029527; Thu, 20 Aug 2026 21:07:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUR-00065s-VK; Fri, 21 Aug 2026 00:04:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUP-00062M-Kw for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:21 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUN-0003CE-FL for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:21 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-38deea72eebso498041a91.1 for ; Thu, 20 Aug 2026 21:04:19 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285058; x=1787889858; 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:content-type; bh=Yg0R9lp1wA+wZ7tNXGKNkxI/zEhk3zYnixoj/UZ92CU=; b=vUgU5ibilclgcA2pUVS+mY+sfjDAT7pvVoLbp4q60k1VUTk1KQjlDJWCtGPSWQ8Hgj sCgxdQWeWTgY/olviwNY6ffvgRj3Pe+Hz2DYNEMAEvF3FvIWQc5F5nM3R5Ldw/0NiCDr e/CIkFDD8yd+L8Uc/4WzN/4z5jvj4gKerFVUpbM2XInVcukrpoaITgHZvyV+O2fooxHF wC6WeGrKRB69Sw/1Qeb5pe2i81od4zy6HCFsIRUs6F4U1fIjGZ/otITfPc45nV9Xep0H MCnSu//ye9TWJ00Vg/H+DWdvRJ3JAoqZ+sM/iyTD0DH8+4htmr4bfFvsES4wzSoR7kdu i9EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285058; x=1787889858; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Yg0R9lp1wA+wZ7tNXGKNkxI/zEhk3zYnixoj/UZ92CU=; b=IcKNLKFqdpymxHSMHE4S7kTjKm88viyWtWx36U/oqA7mrvgQGq59KBzVepx6PT8M4+ fyu7UQFSOMYNTrvJR6t0eccLLn4TykCywcFZ3QD07h8kuVJq5ka6BOMvDF7tty/EtmDt GZ9UzNG3tg8yBEl5hQJ2Xk049t1L+/vClVB43FNiueZGV7Zi9CAvH4vsx3EgNGRKyYqI AtMOCjJSTpQHTEu0GiTvtNm5tTf1TqEHzOw4DpS14qQC5wf26lth2RqvuxS+vhZRFPD/ yapri9i65XAZSfk5ToN5OcdCVpxe6hXNuJ7dLbFcWs7a0Hsf9/0SOLcF+MLg2Y2s7QoM 5mGg== X-Gm-Message-State: AFuF++nL0cWO6jPnMlkPuqN85gRUfOUWzG2UeejRteP+ozj6ewhSmq9q CMR4PIj8tDa8sYdaBNAcgda4zB4NXqiLw3YNCoZhA9U6C6hX0h4uetnTzmZICH8tjhectfg44sG Kb2sH X-Gm-Gg: AR+sD11EhboYaXyqPajA4D03CV9qN86477/egVnI9iQ/bIDHjVqZQctQUlXUvAeG69m Z6kZodnjFPDAkxExkqqgsOYsObCrWNBeas1oLYqYzW3UpAWX+I9YkVdleAgPhD9W/Ezhme5rPAa N57C9DClRWAvcOxDo5teSzb16QvP6Wi3I18wTniee5l55KDM7wB3fgb0rh29uGXpXWVxAfBKJOa PrRrzXATClbMxbIz9nJysmZ6WlyHtPVDZNirx+L9YuM1L09CUnamjZhGiLl6EAMm7psxWdv4if0 0HvI3K4+ZE3MzDhsLEgVN40nhGoO2hyuYSdUZaMM3Fuh6xGvcxJKt8mSEto8d2ZP0JVgSfd9prG 4xSt9pvS1H40gM/hGZLEOsmThAqKD6wXwGe5LQVSj6/Zq73uMq3p13GDVDTYtRQiV4kcJ8lKTu6 +ad3+uRoyutX9mCDehNVKu5WPuAQICmSQhCVeiW5VmAYmzi66cDs4YqYJXBezKJMeqea4= X-Received: by 2002:a17:90a:e7c3:b0:38f:dec8:f7e9 with SMTP id 98e67ed59e1d1-395c37130d0mr6036466a91.12.1787285057907; Thu, 20 Aug 2026 21:04:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 09/23] target/riscv: Rewrite vext_ldff Date: Thu, 20 Aug 2026 21:03:50 -0700 Message-ID: <20260821040404.268123-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285279294158500 Content-Type: text/plain; charset="utf-8" Do not call probe_pages for every active element. We can make do with no more than 2 such calls for the two pages the insn might reference. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 256 +++++++++++++++++++++---------- 1 file changed, 171 insertions(+), 85 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 36e64465f2..abfd2ec45d 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -748,135 +748,221 @@ vext_ldff(void *vd, void *v0, target_ulong base, CP= URISCVState *env, uint32_t desc, vext_ldst_elem_fn_tlb *ldst_tlb, vext_ldst_elem_fn_host *ldst_host, uint32_t log2_esz, uintptr_t = ra) { - uint32_t i, vl =3D 0; + uint32_t i =3D env->vstart, vl =3D env->vl; uint32_t nf =3D vext_nf(desc); uint32_t vm =3D vext_vm(desc); uint32_t max_elems =3D vext_max_elems(desc, log2_esz); uint32_t esz =3D 1 << log2_esz; uint32_t msize =3D nf * esz; uint32_t vma =3D vext_vma(desc); - target_ulong addr, addr_i, offset, remain, page_split, elems; + target_ulong addr, last, last_in_page, page_split, elems; int mmu_index =3D riscv_env_mmu_index(env, false); + bool first_active; int flags; void *host; =20 VSTART_CHECK_EARLY_EXIT(env, env->vl); =20 - /* Search for the first active element. */ - if (!vm) { - for (i =3D env->vstart; i < env->vl; ++i) { + /* Skip forward to the first active element. */ + if (vm) { + first_active =3D i =3D=3D 0; + } else if (i =3D=3D 0 && vext_elem_mask(v0, 0)) { + first_active =3D true; + } else { + first_active =3D false; + while (1) { if (vext_elem_mask(v0, i)) { break; } if (vma) { vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } + if (++i =3D=3D vl) { + goto tail; + } } - if (i =3D=3D env->vl) { - goto tail; - } - env->vstart =3D i; } - - addr =3D base + ((env->vstart * nf) << log2_esz); + addr =3D base + i * msize; =20 /* Recognize alignment fault before memory protection fault. */ vext_test_alignment(env, addr, esz, MMU_DATA_LOAD, mmu_index, ra); =20 + /* Calculate the page range of first page. */ + last =3D base + vl * msize - 1; + last_in_page =3D addr | ~TARGET_PAGE_MASK; page_split =3D -(addr | TARGET_PAGE_MASK); - /* Get number of elements */ - elems =3D page_split / msize; - if (unlikely(env->vstart + elems >=3D env->vl)) { - elems =3D env->vl - env->vstart; + + /* + * If the first element is active, it must succeed. + * If it also crosses the page, just go ahead and load it. + */ + if (unlikely(page_split < msize) && first_active) { + vext_ldst_nf_tlb(env, vd, addr, 0, nf, esz, max_elems, ldst_tlb, r= a); + env->vstart =3D i =3D 1; + addr +=3D msize; + page_split =3D -(addr | TARGET_PAGE_MASK); + first_active =3D false; } =20 - /* Check page permission/pmp/watchpoint/etc. */ - probe_pages(env, addr, (env->vl - env->vstart) * msize, ra, MMU_DATA_L= OAD, - mmu_index, &host, &flags, true); + /* + * Test whether the first page is accessible. + * If the first element is active, it must succeed. + */ + flags =3D probe_access_flags(env, adjust_addr(env, addr), + MIN(last, last_in_page) - addr + 1, + MMU_DATA_LOAD, mmu_index, !first_active, + &host, ra); =20 - if (flags & ~TLB_WATCHPOINT) { - /* probe every access */ - for (i =3D env->vstart; i < env->vl; i++) { - if (!vm && !vext_elem_mask(v0, i)) { - continue; - } - addr_i =3D adjust_addr(env, base + i * (nf << log2_esz)); - if (i =3D=3D 0) { - /* Allow fault on first element. */ - probe_pages(env, addr_i, nf << log2_esz, ra, MMU_DATA_LOAD, - mmu_index, &host, NULL, false); + /* Get number of complete elements in the first page. */ + elems =3D MIN(page_split / msize, vl - i); + + /* Load complete elements from the first page. */ + if (likely(elems)) { + uint32_t page_evl =3D i + elems; + + if (flags =3D=3D 0) { + if (vm) { + vext_page_ldst_us_host(vd, host, i, page_evl, nf, log2_esz, + max_elems, ldst_host, true); } else { - remain =3D nf << log2_esz; - while (remain > 0) { - offset =3D -(addr_i | TARGET_PAGE_MASK); - - /* Probe nonfault on subsequent elements. */ - probe_pages(env, addr_i, offset, 0, MMU_DATA_LOAD, - mmu_index, &host, &flags, true); - - /* - * Stop if invalid (unmapped) or mmio (transaction may - * fail). Do not stop if watchpoint, as the spec says = that - * first-fault should continue to access the same - * elements regardless of any watchpoint. - */ - if (flags & ~TLB_WATCHPOINT) { - vl =3D i; - goto ProbeSuccess; + host -=3D addr - base; + do { + if (vext_elem_mask(v0, i)) { + vext_ldst_nf_host(vd, host + i * msize, i, nf, esz, + max_elems, ldst_host); + } else if (vma) { + vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } - if (remain <=3D offset) { - break; + } while (++i < page_evl); + } + } else { + /* + * If the first element is active, it must succeed. + * This will load from MMIO or fault from INVALID. + */ + if (first_active) { + vext_ldst_nf_tlb(env, vd, addr, 0, nf, esz, + max_elems, ldst_tlb, ra); + i =3D 1; + addr +=3D msize; + } + + /* Stop if invalid (unmapped) or mmio (transaction may fail). = */ + if (flags & (TLB_INVALID_MASK | TLB_MMIO)) { + env->vl =3D i; + goto tail; + } + + /* None of these ldst_tlb calls may fault. */ + if (vm) { + vext_page_ldst_us_tlb(env, vd, addr, i, page_evl, nf, + log2_esz, max_elems, + ldst_tlb, mmu_index, ra); + } else { + do { + if (vext_elem_mask(v0, i)) { + vext_ldst_nf_tlb(env, vd, base + i * msize, i, nf, + esz, max_elems, ldst_tlb, ra); + } else if (vma) { + vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } - remain -=3D offset; - addr_i =3D adjust_addr(env, addr_i + offset); - } + } while (++i < page_evl); + } + } + + /* Usually the first page contains the entire vector. */ + if (likely(page_evl =3D=3D vl)) { + goto tail; + } + i =3D page_evl; + } + + /* Skip forward to the next active element. */ + if (!vm) { + while (1) { + if (vext_elem_mask(v0, i)) { + break; + } + if (vma) { + vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); + } + if (++i =3D=3D vl) { + goto tail; } } } -ProbeSuccess: - /* load bytes from guest memory */ - if (vl !=3D 0) { - env->vl =3D vl; + + addr =3D base + i * msize; + page_split =3D -(addr | TARGET_PAGE_MASK); + + /* Validate the second page is accessible. */ + if (unlikely(page_split < msize)) { + /* + * Cross page element which isn't first. + * We have not yet advanced addr to the next page. + */ + target_ulong next_page =3D addr + page_split; + flags |=3D probe_access_flags(env, adjust_addr(env, next_page), + last - next_page + 1, MMU_DATA_LOAD, + mmu_index, true, &host, ra); + + /* Stop if invalid (unmapped) or mmio (transaction may fail). */ + if (flags & (TLB_INVALID_MASK | TLB_MMIO)) { + env->vl =3D i; + goto tail; + } + + vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, max_elems, ldst_tlb, r= a); + if (++i =3D=3D vl) { + goto tail; + } + addr +=3D msize; + if (host) { + host +=3D addr - next_page; + } + } else { + flags =3D probe_access_flags(env, adjust_addr(env, addr), + last - addr + 1, MMU_DATA_LOAD, + mmu_index, true, &host, ra); + + /* Stop if invalid (unmapped) or mmio (transaction may fail). */ + if (flags & (TLB_INVALID_MASK | TLB_MMIO)) { + env->vl =3D i; + goto tail; + } } =20 - if (env->vstart < env->vl) { + /* Load complete elements from the second page. */ + if (flags =3D=3D 0) { if (vm) { - /* Load/store elements in the first page */ - if (likely(elems)) { - vext_page_ldst_us(env, vd, addr, elems, nf, max_elems, - log2_esz, true, mmu_index, ldst_tlb, - ldst_host, ra); - } - - /* Load/store elements in the second page */ - if (unlikely(env->vstart < env->vl)) { - addr =3D base + env->vstart * msize; - - /* Cross page element */ - if (unlikely(page_split % msize)) { - vext_ldst_nf_tlb(env, vd, addr, env->vstart, nf, - esz, max_elems, ldst_tlb, ra); - env->vstart++; - addr +=3D msize; - } - - /* Get number of elements of second page */ - elems =3D env->vl - env->vstart; - - /* Load/store elements in the second page */ - vext_page_ldst_us(env, vd, addr, elems, nf, max_elems, - log2_esz, true, mmu_index, ldst_tlb, - ldst_host, ra); - } + vext_page_ldst_us_host(vd, host, i, vl, nf, log2_esz, + max_elems, ldst_host, true); } else { - for (i =3D env->vstart; i < env->vl; i++) { + host -=3D addr - base; + do { + if (vext_elem_mask(v0, i)) { + vext_ldst_nf_host(vd, host + i * msize, i, nf, esz, + max_elems, ldst_host); + } else if (vma) { + vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); + } + } while (++i < vl); + } + } else { + /* None of these ldst_tlb calls may fault. */ + if (vm) { + vext_page_ldst_us_tlb(env, vd, addr, i, vl, nf, + log2_esz, max_elems, + ldst_tlb, mmu_index, ra); + } else { + do { if (vext_elem_mask(v0, i)) { vext_ldst_nf_tlb(env, vd, base + i * msize, i, nf, esz, max_elems, ldst_tlb, ra); } else if (vma) { vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } - } + } while (++i < vl); } } =20 --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285084; cv=none; d=zohomail.com; s=zohoarc; b=DqNFQT0NYhMQ3PW0Kpzv/uQNcgu2FmrlO7OhrYWGNc2VLpxBC/6jwd0YjHGMUVETLqC/5ig17Q5ez8Te0CJ4/g1WI2HVRWSs8GGnC+teDZm4eUfzI5nTr5uk8P8UM++2s1CFIg80DuYLVvOk9gpvOc2h4SPrATSv8P0z5XYD5ws= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285084; 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=7bhHwXmi5Ia9z6djPqPB3zlOaGaSOImvwNPGZX3JZAw=; b=TpHYKTg/jw9gmI9djVKi1uxXAslG+fSEpuYshIanwxGqy9PeHjs3sb4M8zr62a7QKFdLEUeKO9XuYAvm//WUss9s4EhI/tvrR2BgmRkRNq3GGUYWx3l2xJlle76+sl7FrqNj8cJbREEhMAxuHKZTrbluNDWs4AUD654k8nPgpP0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285084818898.5686669722907; Thu, 20 Aug 2026 21:04:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUS-00066S-Mp; Fri, 21 Aug 2026 00:04:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUP-00062m-RH for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:21 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUO-0003CU-54 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:21 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-38a0c7e841fso687786a91.2 for ; Thu, 20 Aug 2026 21:04:19 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285059; x=1787889859; 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:content-type; bh=7bhHwXmi5Ia9z6djPqPB3zlOaGaSOImvwNPGZX3JZAw=; b=vVp7DJVDUeyLpilXHQ81gwM7zuZxoMktecorvaqSs7KY+xxQ/SfYdYdT/oo/YL8Iyq +gb+l4dDFzNCN0iV8AVPP+XWWtnPCTr3VEOKBdPwc72aX0P6Zp3fqpwlLwcgesoVG3M3 SPdVroyezE3O5MlL1WfplTYpWX1BawE1AboUA98eSyh4FPGjRuxvDwsnQH/exY1zzDb2 5gAOyOe/rKNLl3dybiezQG2ClplNCTxKMR/DURPr7hGCu7YC/rqiVcoN+MHdNDNE1x03 zQrHgS4t8Op84ZgYwK6J+fzWCpX2taPtRnJhaW4dmDu1FrX0BFKcx8uJRJtrlZCTPB1d +wRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285059; x=1787889859; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=7bhHwXmi5Ia9z6djPqPB3zlOaGaSOImvwNPGZX3JZAw=; b=MRzXaTpOCENPPjK4UQLTSioy/bM1XCS8g3gFcBYa7CqTA8MtXFkKHt7KphbFa8swiq p7yHpNwvUTT3n0Ru1C9uc9/HxAiVtOvCAkOoJAFyYtWEFfFwWmxcASx5RRQ+prMjlFYm oEYE8jrQ5c2eOSCkV4bWovVhhdVBCEw5dLKmMMe8bL00FD/YgAXUxjcYb1PEPpmXeE5F YowZYrPEgn7gpT6BRu7iurPDknisUJpw79W/Ekld7q5W7BELFFFUvy6sREQhb9pcw95T l//KlhF8zuyjVpjhxuB45FfNJED3A61lpIOBjos5iWnIjXjiDYMSqmm1X1rYkSCD3qrk Uj/w== X-Gm-Message-State: AFuF++kC916g8t9mpZlL+e39J1rxdvsqDb+rtE3l0uoK5WitQdrZasWd 3FEWKZqSTXK4dPYQrrmrf8RZE6PiA2PUKTl75pqKRMKlUj472d7cYXkkrsXeM4PvrFKl2VIP0fd fKSeU X-Gm-Gg: AR+sD12mfcsrlz4e30SiAZFeqzcGZPSS+LXfJdOX/zrC+5rw+7icr133SM0alzBwPvD 1T/4eEgvdXwETHCzvg/9aF/2mwhHbElIWksOLaq53jRLOduyaVxjtRKGTbijL2vPeqRKyzF8edi toaXFd+ffWc+kzmbPtEH/noEmi1ROELEdAF7uDEEDAYk+GqGTL6/AImwzyk28ev9JoTVl2amwBB uSp8JGKD8qbjaWwhFSpuvK2PYuQhOFCFarXVA5K0ocSnS1Hys1STa8cO/YuH9iNt2nwqn6n7kfR z/euCWDKhmIM0HLleNm6Czm5PBIjJw0/Veinn7QWJncHAlctegwDWj45yld8RoTBwboJKr2/04R vua1u9Mx3riz3+tANQn6vRSkT2ycws6vUIJE2p8U3rQNdb2dvwtFK6Qr/qjaoUcFui8ENApXSjm r99zdoBNt5naK4RTKCqA2eLCH9YL7riDm1+cudAZ8Tlp35fg4nMxvsRQFKZo3a7H7rt14= X-Received: by 2002:a17:90a:e7c2:b0:38e:4f41:83df with SMTP id 98e67ed59e1d1-395c3a959b2mr6191648a91.15.1787285058599; Thu, 20 Aug 2026 21:04:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 10/23] target/riscv: Split out vext_ldst_us_notail Date: Thu, 20 Aug 2026 21:03:51 -0700 Message-ID: <20260821040404.268123-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285086840158500 Content-Type: text/plain; charset="utf-8" Split out vext_ldst_us_tail that doesn't use 'desc'. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 34 +++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index abfd2ec45d..76f3babed6 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -472,14 +472,14 @@ static void vext_test_alignment(CPURISCVState *env, v= addr addr, uint32_t esz, } =20 static inline QEMU_ALWAYS_INLINE void -vext_ldst_us(void *vd, target_ulong base, CPURISCVState *env, uint32_t des= c, - vext_ldst_elem_fn_tlb *ldst_tlb, - vext_ldst_elem_fn_host *ldst_host, uint32_t log2_esz, - uint32_t evl, uintptr_t ra, bool is_load) +vext_ldst_us_notail(void *vd, target_ulong base, CPURISCVState *env, + uint32_t log2_esz, uint32_t nf, uint32_t evl, + uint32_t max_elems, bool vma, + vext_ldst_elem_fn_tlb *ldst_tlb, + vext_ldst_elem_fn_host *ldst_host, + uintptr_t ra, bool is_load) { target_ulong elems, addr, last, last_in_page, page_split; - uint32_t nf =3D vext_nf(desc); - uint32_t max_elems =3D vext_max_elems(desc, log2_esz); uint32_t esz =3D 1 << log2_esz; uint32_t msize =3D nf * esz; int mmu_index =3D riscv_env_mmu_index(env, false); @@ -503,7 +503,7 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, uint32_t desc, for (; i < evl; env->vstart =3D ++i, addr +=3D esz) { ldst_tlb(env, adjust_addr(env, addr), i, vd, ra); } - goto tail; + return; } #endif =20 @@ -535,7 +535,7 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, uint32_t desc, =20 /* Usually the first page contains the entire vector. */ if (likely(page_evl =3D=3D evl)) { - goto tail; + return; } env->vstart =3D i =3D page_evl; addr +=3D elems * msize; @@ -545,7 +545,7 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, uint32_t desc, if (unlikely(page_split % msize)) { vext_ldst_nf_tlb(env, vd, addr, i++, nf, esz, max_elems, ldst_tlb,= ra); if (i =3D=3D evl) { - goto tail; + return; } env->vstart =3D i; addr +=3D msize; @@ -564,10 +564,22 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVSta= te *env, uint32_t desc, vext_page_ldst_us_tlb(env, vd, addr, i, evl, nf, log2_esz, max_ele= ms, ldst_tlb, mmu_index, ra); } +} + +static inline QEMU_ALWAYS_INLINE void +vext_ldst_us(void *vd, target_ulong base, CPURISCVState *env, uint32_t des= c, + vext_ldst_elem_fn_tlb *ldst_tlb, + vext_ldst_elem_fn_host *ldst_host, uint32_t log2_esz, + uint32_t evl, uintptr_t ra, bool is_load) +{ + uint32_t nf =3D vext_nf(desc); + uint32_t max_elems =3D vext_max_elems(desc, log2_esz); + + vext_ldst_us_notail(vd, base, env, log2_esz, vext_nf(desc), evl, max_e= lems, + vext_vma(desc), ldst_tlb, ldst_host, ra, is_load); =20 - tail: env->vstart =3D 0; - vext_set_tail_elems_1s(evl, vd, desc, nf, esz, max_elems); + vext_set_tail_elems_1s(evl, vd, desc, nf, 1 << log2_esz, max_elems); } =20 /* --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285209; cv=none; d=zohomail.com; s=zohoarc; b=TChT5CO6aa7f5wYlsT/pUAD8pg4NEoA00bCvKvbYT1FWzYJBoChucdDQiV172jmffKzWqiUdUTIXkccpz3p8uDaJHe/ZT4t6ZMRd0aIXyO7pzWJzUXCH9uRmMwQ5QzgO+KPb7Mp7NJ7TAMVx6tl8d4zcqIsMvBYYRBKhr7l+RN4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285209; 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=zakSNcKNR+QZBPobFR1l5c+AA7ezfGojoAb40bpT830=; b=RA0ddwK7NIjvq1P/oDiGkPAerIs9Yns5OYlOtstoh5I+axuA7Pj+/ZLeRgRhWHkFloRbxJYmi7yficC+TB8I3Oh+3LTRIetXBkHgHg3fINfbeSbsQnidscQ/JnkUYgMErr2cfyd//TVpQ07kSZN2XQ7aJQrKiM7QClDbbdLbEgY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285209461824.0179613477508; Thu, 20 Aug 2026 21:06:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUT-00067Q-JU; Fri, 21 Aug 2026 00:04:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUR-00065A-28 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:23 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUP-0003Cz-56 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:22 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-38f0f132f56so1179337a91.0 for ; Thu, 20 Aug 2026 21:04:20 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285060; x=1787889860; 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:content-type; bh=zakSNcKNR+QZBPobFR1l5c+AA7ezfGojoAb40bpT830=; b=lmpv914v6z0oLWBs6VX7NteSitlUk/jJgv8kPWMox1PjGNB+kddAcKdkwGS/8J7vl4 jKfqZ7nWvdKsIjH4KVkPn4i3QKqaK72QmsbNzrEkBbszeQfGg9U19fnu62H64Mw7+RD9 sRq4q99Sxqdt4i/hsnCurGT0wXbU1kPkc/hDLOirHDaPIqyXYFIzvApyZa8TwtVPJtjk ylZW6lJ1CLd0TOmGs4aEpReo1wBj52L/QexM+sUBJngfgW9rwoDFvdDWdoAKq1mkAPr8 tnMemV6f11G4Wh9KLyQ0Mx2VOyZmZ8rfAc4c7iKT22UKTxowQU1rEIgcK0upgJmwC8Pu 5JOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285060; x=1787889860; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=zakSNcKNR+QZBPobFR1l5c+AA7ezfGojoAb40bpT830=; b=EggMqOhCSpkq3qr5aZ28NruT4b/m+9Wv04P4HYgYVWOZHW8Sv2BA8NI3QrEb830IA1 3nClQXbCZxjmhNC72Y/6txbkoO+vvjKN3zcs4pvwYld96/JkvCjUBsmNYatUeT9sFd2J YjdS1Mi9Cilik9M4P4BRRMaNdIal3XghjD4NK/LyL9QxV/eE1njwTVBa2v+RGv4Yp+wu wk5SMcwOkbDq41GIGIXNr0wfQRjXM94GhKf9iykBqTwRe//QA311gs3Pi8HOKtzG2jP2 WfvFSV6BzuakRydwsrHhXuMlyPTjdmvLsOFvc0QNs5Dm3w30yEqRpnTpAsPCB3Uyr9I6 9vTA== X-Gm-Message-State: AFuF++meChHNEz5JEDWCIaBRNJpqUtb//CyEiCX2TbAjAqfbZef2sGCV PNZbKPgv/PcVAf2is32YR63U7CO2R6M8qpOVXtpDqVczaE3+czNVl7M+UzbPw9mj7rtLrduLdzY dJX5m X-Gm-Gg: AR+sD12suwDV6oEEmnCgSBbqfumuUINo8BfzHPHLtuVB0xQ6Y4WQVh1spXBDvrhgVe/ Mg15KgUXiPOWfGm5GSoVAjmAv9uoJA/Vav+YxvAjROAHAvfEIAOvyQpmkjHiUfykiWzl1KK2EQW Mceirfec4CgYrwKeRO1k6dYKsdH+7hS4RqB99XhcFW5S+HezBuFNCYHDTF3UFECIscUB96uf2bJ asOtrIqMOLjLIIikcHggcuOghFFck3K+AbpKS7fgwwufvENUvUezdbWn/LREe85mKIX0sPP1tn6 kOB7aexzJC8ew9iOPI4ndVZwGOrZtkn0fr0IQTHBPZm3sljL88/JrTuW+cTgA3FliIttjJlG8Cq 6b2cSDilpzdqwoTBDlyWvQ278FeCE8gu73xZvDRdNo7WqkCk5jea/8jbCX4XFcm6XOsH7ssEszy nMeZWQDL91kKc0nxPLtLxlcFhePraYREp5+f++7yJPxpgr7QDir1t66niDl02RZSUQI/78 X-Received: by 2002:a17:90b:2e4b:b0:38f:de94:bf34 with SMTP id 98e67ed59e1d1-395c514b5cbmr2741953a91.10.1787285059543; Thu, 20 Aug 2026 21:04:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 11/23] target/riscv: Use vext_ldst_us_notail in vext_ldst_whole Date: Thu, 20 Aug 2026 21:03:52 -0700 Message-ID: <20260821040404.268123-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285211189158500 Content-Type: text/plain; charset="utf-8" This eliminates the last use of probe_pages. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 119 +------------------------------ 1 file changed, 3 insertions(+), 116 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 76f3babed6..76990894e5 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -149,50 +149,6 @@ static inline uint32_t vext_max_elems(uint32_t desc, u= int32_t log2_esz) return scale < 0 ? vlenb >> -scale : vlenb << scale; } =20 -/* - * This function checks watchpoint before real load operation. - * - * In system mode, the TLB API probe_access is enough for watchpoint check. - * In user mode, there is no watchpoint support now. - * - * It will trigger an exception if there is no mapping in TLB - * and page table walk can't fill the TLB entry. Then the guest - * software can return here after process the exception or never return. - * - * This function can also be used when direct access to probe_access_flags= is - * needed in order to access the flags. If a pointer to a flags operand is - * provided the function will call probe_access_flags instead, use nonfault - * and update host and flags. - */ -static void probe_pages(CPURISCVState *env, target_ulong addr, target_ulon= g len, - uintptr_t ra, MMUAccessType access_type, int mmu_i= ndex, - void **host, int *flags, bool nonfault) -{ - target_ulong pagelen =3D -(addr | TARGET_PAGE_MASK); - target_ulong curlen =3D MIN(pagelen, len); - - if (flags !=3D NULL) { - *flags =3D probe_access_flags(env, adjust_addr(env, addr), curlen, - access_type, mmu_index, nonfault, host= , ra); - } else { - probe_access(env, adjust_addr(env, addr), curlen, access_type, - mmu_index, ra); - } - - if (len > curlen) { - addr +=3D curlen; - curlen =3D len - curlen; - if (flags !=3D NULL) { - *flags |=3D probe_access_flags(env, adjust_addr(env, addr), cu= rlen, - access_type, mmu_index, nonfault, - host, ra); - } else { - probe_access(env, adjust_addr(env, addr), curlen, access_type, - mmu_index, ra); - } - } -} - static inline void vext_set_elem_mask(void *v0, int index, uint8_t value) { @@ -430,33 +386,6 @@ vext_page_ldst_us_tlb(CPURISCVState *env, void *vd, ta= rget_ulong addr, } while (i < evl); } =20 -static inline QEMU_ALWAYS_INLINE void -vext_page_ldst_us(CPURISCVState *env, void *vd, target_ulong addr, - uint32_t elems, uint32_t nf, uint32_t max_elems, - uint32_t log2_esz, bool is_load, int mmu_index, - vext_ldst_elem_fn_tlb *ldst_tlb, - vext_ldst_elem_fn_host *ldst_host, uintptr_t ra) -{ - void *host; - int flags; - uint32_t size =3D (elems * nf) << log2_esz; - uint32_t i =3D env->vstart; - MMUAccessType access_type =3D is_load ? MMU_DATA_LOAD : MMU_DATA_STORE; - - /* Check page permission/pmp/watchpoint/etc. */ - probe_pages(env, addr, size, ra, access_type, mmu_index, &host, &flags, - true); - - if (flags =3D=3D 0) { - vext_page_ldst_us_host(vd, host, i, i + elems, nf, log2_esz, - max_elems, ldst_host, is_load); - env->vstart +=3D elems; - } else { - vext_page_ldst_us_tlb(env, vd, addr, i, i + elems, nf, log2_esz, - max_elems, ldst_tlb, mmu_index, ra); - } -} - static void vext_test_alignment(CPURISCVState *env, vaddr addr, uint32_t e= sz, MMUAccessType access_type, int mmu_index, uintptr_t ra) @@ -1015,52 +944,10 @@ vext_ldst_whole(void *vd, target_ulong base, CPURISC= VState *env, uint32_t desc, vext_ldst_elem_fn_host *ldst_host, uint32_t log2_esz, uintptr_t ra, bool is_load) { - target_ulong page_split, elems, addr; - uint32_t nf =3D vext_nf(desc); - uint32_t vlenb =3D riscv_cpu_cfg(env)->vlenb; - uint32_t max_elems =3D vlenb >> log2_esz; - uint32_t evl =3D nf * max_elems; - uint32_t esz =3D 1 << log2_esz; - int mmu_index =3D riscv_env_mmu_index(env, false); - MMUAccessType access_type =3D is_load ? MMU_DATA_LOAD : MMU_DATA_STORE; - - /* Calculate the page range of first page */ - addr =3D base + (env->vstart << log2_esz); - - /* Recognize alignment fault before memory protection fault. */ - vext_test_alignment(env, addr, esz, access_type, mmu_index, ra); - - page_split =3D -(addr | TARGET_PAGE_MASK); - /* Get number of elements */ - elems =3D page_split / esz; - if (unlikely(env->vstart + elems >=3D evl)) { - elems =3D evl - env->vstart; - } - - /* Load/store elements in the first page */ - if (likely(elems)) { - vext_page_ldst_us(env, vd, addr, elems, 1, max_elems, log2_esz, - is_load, mmu_index, ldst_tlb, ldst_host, ra); - } - - /* Load/store elements in the second page */ - if (unlikely(env->vstart < evl)) { - /* Cross page element */ - if (unlikely(page_split % esz)) { - addr =3D base + (env->vstart << log2_esz); - ldst_tlb(env, adjust_addr(env, addr), env->vstart, vd, ra); - env->vstart++; - } - - addr =3D base + (env->vstart << log2_esz); - /* Get number of elements of second page */ - elems =3D evl - env->vstart; - - /* Load/store elements in the second page */ - vext_page_ldst_us(env, vd, addr, elems, 1, max_elems, log2_esz, - is_load, mmu_index, ldst_tlb, ldst_host, ra); - } + uint32_t evl =3D (riscv_cpu_cfg(env)->vlenb * vext_nf(desc)) >> log2_e= sz; =20 + vext_ldst_us_notail(vd, base, env, log2_esz, 1, evl, evl, false, + ldst_tlb, ldst_host, ra, is_load); env->vstart =3D 0; } =20 --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285111; cv=none; d=zohomail.com; s=zohoarc; b=kA7Wiw9ZXOdbGS+vixjAfzJANlTl3R6/jYG7F3FjYSk+ekQ9FgO0pwBHH9VzUOThEQlveSgkesYfzoZfX3jeTwBcepaQF/w286VvNDhtTf3wBE17t6WBYwZx5T4DZgm2O7yJDxmueJyrcOj2NFbgEa+NX4Jd+RA9TnoxhGrrTB0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285111; 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=Ki19VWjqhUrb9W5NVrRU/ayXP3I7g7OAHfGnfTrb0dc=; b=ds0o7B7fberX975jc5hMYzn13BfUVMG4SPEFZx+G1/UmxqAZXaA1F3802XaeAdhQpr2YDNbMwH427mTrj04CahL9QHlRamjZ5ZqKEbTQbe66FtK+6PI5St2SXd5cSNtp6rhVEh8EQGGTKfT6xfdzxXR5cpJIkE14Vn5jbE3Mz/A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285111471131.0573318045598; Thu, 20 Aug 2026 21:05:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUg-00068u-DH; Fri, 21 Aug 2026 00:04:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUR-00065C-Ab for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:23 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUP-0003DI-T3 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:23 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-38deea72eebso498055a91.1 for ; Thu, 20 Aug 2026 21:04:21 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285060; x=1787889860; 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:content-type; bh=Ki19VWjqhUrb9W5NVrRU/ayXP3I7g7OAHfGnfTrb0dc=; b=bxykv2A4wBgeDyRSBNaGtWGUq2wSugk6yIG+LPBjcfOUqdGxCEhFOtXKmGiwWBWnQC Lyz8ijOPKA5hbiqOY8pmCrllD7SNnQpmK18bW3m3xrvgN2lz7frsi+KINC8eohZBwKqj UXql0HtFnBaayJCdPK3bcFqnnu1cEFkI8ckwQNs7ZRGsPkQzsbd76Mlah7ykB/p8j9pM i+kbWZ9vVmA+YKdBZi8PiAFViXirTMBSGSjQKQjUxlCuUkb3UFRegL2/YJQH5aiuARCJ NmID03i8YFRJI46ClunumQOz3jnSJTq4HjbGe0vfwLZ+vZIqwi3p3eVatNrO5MboXdsi Hm6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285060; x=1787889860; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Ki19VWjqhUrb9W5NVrRU/ayXP3I7g7OAHfGnfTrb0dc=; b=f64MyhcndIuPKgOg58JhaUo2gDACaw6mLVlcpF9iMqPsHeL2DsyUWiWmfEXbC3rCWl hZzTIxgby70qHQmLpCR6+/j4JluWdvfktkyqOD7A36irsukTgMWKBmXRP5mIkmg/psdM 1CSQTjSr9M0x7KsTRXvhK0hMmuGV+wGJexIDmDUQFkgMQFNlK0cuV8MW3C/GMJnj3v77 G3JC5Prgpdbx6QVYqqX+JREu2Fg1WbchOALmgrhpO38yLiFke91L8eEXRsmb9dk+KkcP 4oEcSlHQQMO4yKwlFlTe5vrD5XBF1Gclsp4oW/OG1ryb9bkUnrnjCUc/pGCkWrFWVQFS qfUQ== X-Gm-Message-State: AFuF++ltQyOd7S8+JxEUD9ppfKDPwidZGJpekkCh5Dpzd1PvDtNBL4pT Wd8WbseUxvHnFgG5kO7H9Z/i1T38RbSurM1y00Uz7yEzcaLc63EeATfEchORUWYZav/MxVsV0vD 0Do6N X-Gm-Gg: AR+sD12a6u7kKedex0Y+agvqcAvEy38mECjW00sRcOy4iI03FEh6o+R2piLNB4Fk/kJ I6v00H5/JYyBKBS93yonwVug0KgB2awmAiAfIP1cCAEgHAluW7ljRo6AAaon6lf9Dn0Ep7ktIOe CBS7Jp+HaZ4n3aUnnQI2XfJFZQg/7fg+vCTeJnPmMlNsSItCgw9YihBTOmNeCL2jaQHXYIqF/4u DTzd4wqMVy6njTvB/8ikU1VURSisEYs15/JgxmpOSRE3MBpQVYKSaTlrhx11Hc4vAtD0ggYaMva tBG3qm1ZGebLvgunsHXtf4S8oo2myPI5VI+j6QrMMoWrfk5Q/M6szSQjrFPElW7PuDXCI5e/qIQ XfkXuilDm7AHQw3/ELCiO0Mtu54yhdStYCcI3fD7ABP4MBIlgG0yPij05jABJCzhRzm1VwBDbgs Wv12BNDWlvNGeaRt5DlNSV4odv5S+G8C3SBdtiI5VD3O9Qlhp5EqQVjy/k2HgryroGJ6r4 X-Received: by 2002:a17:90b:2ccb:b0:36b:bec8:94c5 with SMTP id 98e67ed59e1d1-395c35ba5aemr6408309a91.10.1787285060350; Thu, 20 Aug 2026 21:04:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 12/23] target/riscv: Mark VSTART_CHECK_EARLY_EXIT unlikely Date: Thu, 20 Aug 2026 21:03:53 -0700 Message-ID: <20260821040404.268123-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285112774158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_internals.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/tcg/vector_internals.h b/target/riscv/tcg/vector_= internals.h index 5681b81815..d081397f65 100644 --- a/target/riscv/tcg/vector_internals.h +++ b/target/riscv/tcg/vector_internals.h @@ -26,7 +26,7 @@ #include "internals.h" =20 #define VSTART_CHECK_EARLY_EXIT(env, vl) do { \ - if (env->vstart >=3D vl) { \ + if (unlikely(env->vstart >=3D vl)) { \ env->vstart =3D 0; \ return; \ } \ --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285189; cv=none; d=zohomail.com; s=zohoarc; b=bQX2rWWjqo5PXt2eqDQBVcJlk+VZH+QvyNpIQ3I8aiTLK6599/1vd7Qfs/Qu5nCO+uVs5cRqfwuNPc+D6G+Hvx8thfdV1kko62u7/r459g3Mvgl3QZWJ/hxH5X8T/hvVPjt/APGJhtZnAauuKYliu+HnnvnxXcI+XogQ6TGuezA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285189; 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=l5FefkHt4+mIAwzFGxwVE4fW9WR3b86gApc4aXRCX/Q=; b=MdAP4P3r/NjfYFefrMI3MMQmOPR4mjFsn0HnFeRsMLbHZsukXIXXNTNJXvJWv7ZUOytbp6wDFsy9PgMs+b1izce2KV5v55pqofb4J7kBccjZgyIoTtXYmX6lRXu31qX/7eVIU6hu1BzRVWFqS1m4xsibzaqZ0hR0YG1oLTNGpWY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285189192896.8738000797208; Thu, 20 Aug 2026 21:06:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUo-0006Jc-RK; Fri, 21 Aug 2026 00:04:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUS-00066E-57 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:24 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUQ-0003Dl-Et for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:23 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-38deea72eebso498060a91.1 for ; Thu, 20 Aug 2026 21:04:22 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285061; x=1787889861; 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:content-type; bh=l5FefkHt4+mIAwzFGxwVE4fW9WR3b86gApc4aXRCX/Q=; b=wSmtlPo7Y553S78PRnPNI9Cg6g/VCrLZK2reD7jzrLfgNFmv9Kc35bPDPi5W7r2xrx 3wFR1qDcjNrva5ROdQBElUIMCCgomHPZFTizTsxBeaLYAdKGE5sKV3GSrGB27Gah8jM5 cjw9EPXcXMH8souX+CHGURp1dSTe3vlKQG6onvZOgEF2gOAkRw566Yfxzf9CpAZ7ZXfI nYs1uOSSgL630vfVEcwZ6eJ9LluIQY/DQ13PdBGJvzFgSZ1lQbzBRPOOP530oVDUh7CR mWqiny4qHh/W7WfaByvD0fMsPBqvLNBInksVFH4RshoYjrYN11FPx5pN26TyMXuzFF/W EhhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285061; x=1787889861; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=l5FefkHt4+mIAwzFGxwVE4fW9WR3b86gApc4aXRCX/Q=; b=pCw19PtM8okhz2l4hiwCn3ez5R0xJzBgqCfuttHJkouEetzr9v7lmlPrJtkNP3CjmO OY5SFfy5D0VlIqeaF0/8CvTbWq0LddP09vqnioyEtwtaBeIK2mrRAyj9RBuZDpaLwABt B31Fyn4rpNnjnfmGUbvbailn1dTMxHvIOcw6fjUeMjUWRzgkK01GdARLRaKAfQsBvurY WIJgwaeF0t+N0xUBcNXHVqJisMx9p/ItMNQ4Erv67V5mtI0lFMQjkIoXkRHeKAR3YdKr QqVaQR8/SN3mClYcQnWi6tovubMb1HgQHKya6cw/l5DN5m13A2zkTBUofV8N4uvq8TiF 3QuA== X-Gm-Message-State: AFuF++l37BQZb5rjPUVYQ4L+cj9VHQ/W5aK2hCrRjIi5QzpGDTkEMd4S jeQ5snfLdKtonDvzwCNGmfuz/hDKyZL52p0wbW/wbAN1+UzaMta/xaAlbqXmmgmnWlw4o7MKAIs pAOCa X-Gm-Gg: AR+sD113QorCqh1TDeT+gmwkfIQ8IDJ7otMilCm6KfqDbSwemJkLjTh6Vj5ksBAjWeP U8oyjoyAvZ9xuFtE9vBp6Uv+9AZXp71QC9Dsdiga3izlOp6jtmLJPOOa8zeTBhwSRpJLCRrNP/+ pYy5/uHyJZ8twgHNCIS5HStsBg3fprOqAInoNCJ1eqaSOZJIyS0DEQ+Z9ncLz1bbjQqbEITHKrj FN4MdT0qGxEDnOLckCdsr9yDMwW4vjWZEucAr0WPZ3oMEWt4nj9wY2Q3qVvqXVUMTVQ/2XqxNkZ cQ518vI58FyfsMTILgAOu5VvtzTYUzk0NDmpNAxZldkTP7c8jLFImGwlYPtIQ00RBbkmolevSG+ gpNt8l/UTu50EZJpq7Dder46NQQiJRsLsfqAouejdjuRpkfuiIuYB1FcZkPmKOswx+rLZeddrEr fFypPLexuDsiUfBpZ8zWi6PpXCoiB2kn2AWqIi4HPlyOlxaof6u8AJjyjjEQF/7aXaTaA= X-Received: by 2002:a17:90a:da8c:b0:381:a766:efcc with SMTP id 98e67ed59e1d1-395c3865a2emr6346970a91.14.1787285061064; Thu, 20 Aug 2026 21:04:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 13/23] target/riscv: Remove unused VDATA,WD Date: Thu, 20 Aug 2026 21:03:54 -0700 Message-ID: <20260821040404.268123-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285190940158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/riscv/internals.h | 1 - 1 file changed, 1 deletion(-) diff --git a/target/riscv/internals.h b/target/riscv/internals.h index 5d84e4de96..9e4da39ea0 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -94,7 +94,6 @@ FIELD(VDATA, VTA, 4, 1) FIELD(VDATA, VTA_ALL_1S, 5, 1) FIELD(VDATA, VMA, 6, 1) FIELD(VDATA, NF, 7, 4) -FIELD(VDATA, WD, 7, 1) =20 /* float point classify helpers */ target_ulong fclass_h_bf16(uint64_t frs1); --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285215; cv=none; d=zohomail.com; s=zohoarc; b=DX6cGLBGyEQLyhgnP1omqT7rSo/osbVZEn1GP/z6+QiSjKQAESxryR8z68VX1E76RZh0DTYWcmAFoqkuMFd/XQ9ImtVX7CDUkOOgbTNhuReAoGI7gZPYdE4m2ccLiV3s87tY4hvNX9pk61RNnlqYfwL+lfg7vtDNLYt+ItWVJ6g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285215; 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=iUY4RptRktypsob4goKzTfAtgRhOitw3SAZ3982l394=; b=hN+l9t9c330w1uRnwYaim4ROGfmVJjn7b3EQ0lSgfRCYrrrslIcmJ60OzL3zQjbG/3feSYr4C4ZbpKZWnFfreXnvOZEDCkzjAJAC0LBFbNHEwJKpcnoB7IwgO1h5qgug3vEriyKqdFJ/UxAPLGDfwvRvg5LA7cYtMUvYufxFvSI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285215840255.65922040799273; Thu, 20 Aug 2026 21:06:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUs-0006Nl-ND; Fri, 21 Aug 2026 00:04:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUT-00067O-DQ for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:25 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUR-0003E1-CF for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:25 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-cc16c6dcae2so599804a12.2 for ; Thu, 20 Aug 2026 21:04:22 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285062; x=1787889862; 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:content-type; bh=iUY4RptRktypsob4goKzTfAtgRhOitw3SAZ3982l394=; b=d7d+LJzlubEHCeqRRFR3t9E564G87awbM/LoGQcfumiUIztFxpjCIhxmsq7NTi03Ds eh/BW4CLI57CZwTzyRt/tUBYMqMAVRuYmaO24oWViKONnBEOtDI3FbB5YHi8LjKEVBTO 2BtBIdrVIgyxciOenNi3jts8P9dbAi/XvU//bpqoF9VVuoSiDHLxY3LPdQvhIT/rryBG x3MIww3IOx4Ek19NEL8dQWD9aQIWTJwpA17eieJ682ZDfvTHCb7GQ/UszU+dIzaTWFu0 meTRs/svOlXuuPeOumI5SACnoQys6LDEQjVsnb3se2uJe9dJtVbsBRIFSOoS4wZ2LR59 ORQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285062; x=1787889862; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=iUY4RptRktypsob4goKzTfAtgRhOitw3SAZ3982l394=; b=SrhnftDplc1aUyKjjTjJXG8iXtZNByz0lQpQdw9ScPR4IYfgQBsMMkpjIy8KLQ0O9+ HAzb/+hoYw9HKNjS/FuVZMNK3uJVwJzc7qIgtpeDzUvp/SscrY8llH2Qp7UO4tE1SeIX mtJNsYsliqmJCkcpOCj5d+nH8lY18iqMHe9UDKVGJqDZJj3PQ5MoX6ROgmiRUs8igRY3 kffOlLxzitk8LhzbylMm1yT0gC6OmCVt8KE1yoU4jmK3sLIsYbRx+GtIJgmVLxYXqSju QyDoXPOP/Y6KV/+i4ZHXFl0KVTuUW28VNWm18u9fQ9ps0Gpzp6sjCKPk1VqZjtQSAaoW kXMQ== X-Gm-Message-State: AFuF++lOXiyIaQwbNe3WFefGjl1f0EHdY49FCDbLa18xHCcYyDKhelRv dF6H0mDJHyOSa+fguzRKdADhP/5ntdYINwb4B9zLspWGad+NSYA6ENKg6uYy5RMKaxaocxiT6JH U22LT X-Gm-Gg: AR+sD11vuIBlrMl8woQbKEFERFPOQIX/D6CTzvCjIdTIKvinpa3AS070ZTb+QGem65k 9Pa+Bf6OLQvjYZPih/QL/zndHnzYoJmTl1QKIWqHBq+EkRaJwkrpJKEYZOpp9/+GIgV1eFxu8sH +aaV243y/5PPqXKQcfHHrqfjfNcttWZDG/mZ8OAoYe8m7Z5NKNcuxs+cMt3IpAzntYNlLhjePIs jI9zdPIH7vkLuvxNwNx7L6ln8BkA5uEmhD+DdanDZIn6uV4PlKfClYWa4dWYy+zkIKBFDIAMFb2 Gw7ZSTXKRT1xc868PqwnES+VjoBhLJxb8RqLPIs52HvlxTJL0Axo5HXeyLPSEsp/4GSrNnKLUWP lj3LNUUR5/eHT/cb5OkHp3vbBAfPnmhnQXN7pHqcx3J1IOnAKjhVkG6v14g/GyqF70tktfNY2kX LRdYYN2m2C5h+Z8mqJM/42ZF2lLhGp2iwAeoQtbxLgZaftON1tmO+1RhMtQIxCnXQ/ngo= X-Received: by 2002:a17:90b:3d87:b0:38f:837e:fc5d with SMTP id 98e67ed59e1d1-395c334050emr6674778a91.3.1787285061772; Thu, 20 Aug 2026 21:04:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 14/23] target/riscv: Add MEM_IDX, BSWAP, ALIGN to VDATA Date: Thu, 20 Aug 2026 21:03:55 -0700 Message-ID: <20260821040404.268123-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285217087158500 Content-Type: text/plain; charset="utf-8" Populate it in all vector ldst operations. Not yet used within the helpers. Signed-off-by: Richard Henderson --- target/riscv/internals.h | 3 +++ target/riscv/tcg/insn_trans/trans_rvv.c.inc | 25 ++++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/target/riscv/internals.h b/target/riscv/internals.h index 9e4da39ea0..b7ffb6098c 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -94,6 +94,9 @@ FIELD(VDATA, VTA, 4, 1) FIELD(VDATA, VTA_ALL_1S, 5, 1) FIELD(VDATA, VMA, 6, 1) FIELD(VDATA, NF, 7, 4) +FIELD(VDATA, MEM_IDX, 11, 3) +FIELD(VDATA, BSWAP, 14, 1) +FIELD(VDATA, ALIGN, 15, 1) =20 /* float point classify helpers */ target_ulong fclass_h_bf16(uint64_t frs1); diff --git a/target/riscv/tcg/insn_trans/trans_rvv.c.inc b/target/riscv/tcg= /insn_trans/trans_rvv.c.inc index a22e2cae6c..3916236762 100644 --- a/target/riscv/tcg/insn_trans/trans_rvv.c.inc +++ b/target/riscv/tcg/insn_trans/trans_rvv.c.inc @@ -693,6 +693,14 @@ static uint8_t vext_get_emul(DisasContext *s, uint8_t = eew) typedef void gen_helper_ldst_us(TCGv_ptr, TCGv_ptr, TCGv, TCGv_env, TCGv_i32); =20 +static uint32_t vdata_add_memopidx(DisasContext *s, uint32_t data) +{ + data =3D FIELD_DP32(data, VDATA, MEM_IDX, s->mem_idx); + data =3D FIELD_DP32(data, VDATA, BSWAP, s->mo_endianness !=3D 0); + data =3D FIELD_DP32(data, VDATA, ALIGN, !s->cfg_ptr->ext_zicclsm); + return data; +} + static bool ldst_us_trans(uint32_t vd, uint32_t rs1, uint32_t data, gen_helper_ldst_us *fn, DisasContext *s, bool is_store) @@ -712,6 +720,7 @@ static bool ldst_us_trans(uint32_t vd, uint32_t rs1, ui= nt32_t data, * The first part is vlen in bytes (vlenb), encoded in maxsz of simd_d= esc. * The second part is lmul, encoded in data of simd_desc. */ + data =3D vdata_add_memopidx(s, data); desc =3D tcg_constant_i32(simd_desc(s->cfg_ptr->vlenb, s->cfg_ptr->vlenb, data)); =20 @@ -890,6 +899,8 @@ static bool ldst_stride_trans(uint32_t vd, uint32_t rs1= , uint32_t rs2, mask =3D tcg_temp_new_ptr(); base =3D get_gpr(s, rs1, EXT_NONE); stride =3D get_gpr(s, rs2, EXT_NONE); + + data =3D vdata_add_memopidx(s, data); desc =3D tcg_constant_i32(simd_desc(s->cfg_ptr->vlenb, s->cfg_ptr->vlenb, data)); =20 @@ -991,6 +1002,8 @@ static bool ldst_index_trans(uint32_t vd, uint32_t rs1= , uint32_t vs2, mask =3D tcg_temp_new_ptr(); index =3D tcg_temp_new_ptr(); base =3D get_gpr(s, rs1, EXT_NONE); + + data =3D vdata_add_memopidx(s, data); desc =3D tcg_constant_i32(simd_desc(s->cfg_ptr->vlenb, s->cfg_ptr->vlenb, data)); =20 @@ -1127,6 +1140,8 @@ static bool ldff_trans(uint32_t vd, uint32_t rs1, uin= t32_t data, dest =3D tcg_temp_new_ptr(); mask =3D tcg_temp_new_ptr(); base =3D get_gpr(s, rs1, EXT_NONE); + + data =3D vdata_add_memopidx(s, data); desc =3D tcg_constant_i32(simd_desc(s->cfg_ptr->vlenb, s->cfg_ptr->vlenb, data)); =20 @@ -1231,15 +1246,15 @@ static bool ldst_whole_trans(uint32_t vd, uint32_t = rs1, uint32_t nf, } } } else { - TCGv_ptr dest; - TCGv base; + TCGv_ptr dest =3D tcg_temp_new_ptr(); + TCGv base =3D get_gpr(s, rs1, EXT_NONE); TCGv_i32 desc; uint32_t data =3D FIELD_DP32(0, VDATA, NF, nf); data =3D FIELD_DP32(data, VDATA, VM, 1); - dest =3D tcg_temp_new_ptr(); + data =3D vdata_add_memopidx(s, data); + desc =3D tcg_constant_i32(simd_desc(s->cfg_ptr->vlenb, - s->cfg_ptr->vlenb, data)); - base =3D get_gpr(s, rs1, EXT_NONE); + s->cfg_ptr->vlenb, data)); tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd)); fn(dest, base, tcg_env, desc); } --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285265; cv=none; d=zohomail.com; s=zohoarc; b=Jsypan5b5/Dw0/yIUH6+avzy/cghWUS5vtp8kSc6y8czU9q36A9SlCxXsLhrYlguWs8HBgUjp51zAzbVDQg/vFQcla4Etul75GxnbHCAPO26CYZ91t2aDsrtbOSyCpdMpMufYRamdg9xuH4T5RSX/qUaQvlQfkjDJySZhiE3dVA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285265; 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=68pOmPzSVLedIxa6xDxSTghcazTA2dqFNSAoW+HSS78=; b=m9gSgm7X08qNhLs6/sfB8kn9OdG8rJYdV73SWVf/wZxfm8z0lTM3O71oNxi+b3GjkTswX3jPzHvHs5kCxlRSxyvHmDCV6xecqGHMiq3QO/SmN4g/xRUjbOD71eAOQI32hsu+Qc1zRpUoat9mZ+Em1kQFou/CDImwWWgJCuDRYc8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285264957565.7190977876916; Thu, 20 Aug 2026 21:07:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUn-0006HX-V7; Fri, 21 Aug 2026 00:04:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUV-00067j-Qx for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:29 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUS-0003EN-1W for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:25 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-c96b08cdd1cso485851a12.0 for ; Thu, 20 Aug 2026 21:04:23 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285062; x=1787889862; 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:content-type; bh=68pOmPzSVLedIxa6xDxSTghcazTA2dqFNSAoW+HSS78=; b=zgx0Q3Uvi5gGdT5PuYekznxAqFy1c4+8a7isMEBvB9gGXPNRL6pXxEV15JTykx/rOo Pjm2G3qXsCjsejL1DiMiNjd+ErVrfYcZNxWz017lwU/RXpBZdtw+Sz7J50H9QquSTk3Q L6Y7D/vQR14olT/QmggNK3td6jWFJfQ9HyiDBWi1D18Za1hH+ivFLcvifBTPoAUx1eed SGQ5Ie8jDLwIN9Nn4y1msHlAeMptSwrVPHnVlAE7b+Bh3BgPrces9ZBH574J4fceXpdG L0nZ4rgMwSERPBGrrMIe9t+ylgFLVadOxE7SCYFLuPrLFOFMuCx7jHx1n6gyWyIHv47v yfcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285062; x=1787889862; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=68pOmPzSVLedIxa6xDxSTghcazTA2dqFNSAoW+HSS78=; b=Cf1Pt18MVDI+iox/gjmXSTASjBP/n5xNKw2UCN2e2WuF1djVDmXeLdH4G+skS3oH14 ryoNAdS3ljbyaIIzv8Vweyydvt5SEd9f8vzfqI0/YliroMovek/YztU27fZnfk70xGlT PwdLkPHjxXwCuMelYE6uyxidHP87s23405uXahd67rkB3A4LJ34APWDPnCEByXxJb6m8 d649UIWO/OMWFQqxD7XUcVhGpn8icR/KOyD4kBRU4P/qUmCN4jQDCP0B8ohpnkakORIx rPGIOtgHuYHYe8lHjoyQGeUTyW+ybnS2g4EwfA+CC3pF/q/oBE4y9BLDTOXXbNmXRUET 4zVA== X-Gm-Message-State: AFuF++lFRBKmDCA+AfJ7K1UthGG7LPbPtmlG/2F4vjZXvIXjJa/B6fDJ G355GKUkjhEcG0LQw4wu0OfAo0kOMNSXhE9sdi7HUCWQ2Fo6hvTtIvr6JP2VOGw/Oj05MgJLZR8 hLUM7 X-Gm-Gg: AR+sD11ar1w3KMbfJTHg1CYEXdHoWAt+wGkf0DI31KKXjXBUt0kYIJ8eP+rM5kapFFx 3Lw4ZUZVXRqgN3wCPaH04SLmA0R8lPqK8AbuU0x+wgorp7XuO+t3wX+wbUdK+YGsQCsbzB8TPnF Opmjy3qKA6hC0ciYYaKAZHzJQXkTZ4AxAauDtU5x/d5OAVjTJCvhZaTEZmTYhkeik8eoatE2thU nAHlnyRYZsMEerOi2IBaBER9EMT//U8zYH2Nm/0SkP9YaDy/m6Y6Kp3A1rDF2rM6uh1bRW+MLzF gVzF1PyZhpKS9ykNJF+3l122yYpWlD9Ja+iPvFn+XvPCPRLcpmB9l6GV1/kZv1UZZlvqlLUDa03 cIZoPmOGl3weyi83KQTC0YfLEJqM/bLcr67WRwTBOO3xPWaBsy/4YSGh9rSidlys0LMQUwOPLCC pvfg1tLr0bD0WXevH530OQW0WLx3x6Ifp9wGPSU1Wai8kyVMHUKynsmjYanYeCbunkizM= X-Received: by 2002:a17:90b:1b05:b0:38e:67e1:15b with SMTP id 98e67ed59e1d1-395c353226dmr5177944a91.6.1787285062470; Thu, 20 Aug 2026 21:04:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 15/23] target/riscv: Pass MemOpIdx to vext_ldst_us Date: Thu, 20 Aug 2026 21:03:56 -0700 Message-ID: <20260821040404.268123-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285267317158500 Content-Type: text/plain; charset="utf-8" Use mmu data passed in with VDATA. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 76990894e5..9b0c3f70c2 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -158,6 +158,19 @@ static inline void vext_set_elem_mask(void *v0, int in= dex, ((uint64_t *)v0)[idx] =3D deposit64(old, pos, 1, value); } =20 +static inline MemOpIdx vext_oi(uint32_t desc, MemOp memop) +{ + uint32_t data =3D simd_data(desc); + + if (FIELD_EX32(simd_data(desc), VDATA, BSWAP)) { + memop |=3D MO_BSWAP; + } + if (FIELD_EX32(simd_data(desc), VDATA, ALIGN)) { + memop |=3D MO_ALIGN; + } + return make_memop_idx(memop, FIELD_EX32(data, VDATA, MEM_IDX)); +} + static inline MemOpIdx vext_make_memop_idx(CPURISCVState *env, size_t size) { int mmu_idx =3D riscv_env_mmu_index(env, false); @@ -406,12 +419,12 @@ vext_ldst_us_notail(void *vd, target_ulong base, CPUR= ISCVState *env, uint32_t max_elems, bool vma, vext_ldst_elem_fn_tlb *ldst_tlb, vext_ldst_elem_fn_host *ldst_host, - uintptr_t ra, bool is_load) + uintptr_t ra, bool is_load, MemOpIdx oi) { target_ulong elems, addr, last, last_in_page, page_split; uint32_t esz =3D 1 << log2_esz; uint32_t msize =3D nf * esz; - int mmu_index =3D riscv_env_mmu_index(env, false); + int mmu_index =3D get_mmuidx(oi); MMUAccessType access_type =3D is_load ? MMU_DATA_LOAD : MMU_DATA_STORE; uint32_t i =3D env->vstart; void *host; @@ -505,7 +518,8 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, uint32_t desc, uint32_t max_elems =3D vext_max_elems(desc, log2_esz); =20 vext_ldst_us_notail(vd, base, env, log2_esz, vext_nf(desc), evl, max_e= lems, - vext_vma(desc), ldst_tlb, ldst_host, ra, is_load); + vext_vma(desc), ldst_tlb, ldst_host, ra, is_load, + vext_oi(desc, log2_esz)); =20 env->vstart =3D 0; vext_set_tail_elems_1s(evl, vd, desc, nf, 1 << log2_esz, max_elems); @@ -947,7 +961,8 @@ vext_ldst_whole(void *vd, target_ulong base, CPURISCVSt= ate *env, uint32_t desc, uint32_t evl =3D (riscv_cpu_cfg(env)->vlenb * vext_nf(desc)) >> log2_e= sz; =20 vext_ldst_us_notail(vd, base, env, log2_esz, 1, evl, evl, false, - ldst_tlb, ldst_host, ra, is_load); + ldst_tlb, ldst_host, ra, is_load, + vext_oi(desc, log2_esz)); env->vstart =3D 0; } =20 --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285200; cv=none; d=zohomail.com; s=zohoarc; b=MeRHsZb/4jS4qarC4G4WOZhVEAmqB7u6E3b2AgaVgUL6lH829S7/cdmzpuYMx73tT+jpKutyes2pC0ZazoJJ37t/v3rAlEIBIsRBPol/Ez/VICVWslczEBWdSr9UFbFS/Mc0CMBGBtMHSvzSGXvMGDNoL6R/6WOTp9OtqUcNnuU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285200; 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=bhNir2CKcbFwxivO6W8m2We0DbEIiM40sRu7ky0424c=; b=Xz+NMHwobI6frnEIaCVVCDkxxZMIGrnKfuoKETnVm+7Wiwqt+hZ1lzCVyusd9vH+zCuxSjH2bpw+UqkUvFCxzPG/4glxSfmkFAPJGIsSKN6DtZnC6l5FDvnElMhPdUHLbxJeoGBeTYfn0A+KShZQPnu20owFTRPjAzlKrBDZAEU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285200634301.4362539303231; Thu, 20 Aug 2026 21:06:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUo-0006JJ-LS; Fri, 21 Aug 2026 00:04:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUV-00067k-R4 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:29 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUS-0003Ej-OP for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:25 -0400 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-38e42560ebcso396374a91.1 for ; Thu, 20 Aug 2026 21:04:24 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285063; x=1787889863; 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:content-type; bh=bhNir2CKcbFwxivO6W8m2We0DbEIiM40sRu7ky0424c=; b=EMUp1OqdwuKiN2vA+ZXwWtLdZRbFwzYAPN8NPEw5mYhHi/rvGxVPg2SqIMcs+rblmi jCbYtmVTIZI7rF9SC1hZvbM0Oqn+g5gVx3E1XAWBEiYc/O5BWDFxP3sYXtKoOdUBcYki Q69bSLZ8oDdWQ2jnIDr4IV56fDgwiBTDvolOj8Fdr7dYJTUzs0iQ+Gegdnz6w0vXFINI YEZyY4jl4MKZS5d+xRaXAphQ17R7uTb1kd6OUKh3znkMZX/TVZaUbB/viG1eEoCJX4rM BVFm7ph0ZLxbbqKzi2zl/bO5P1+2LI9QRyN/J8VVp/3Xah9pm8xInhlliaO5shJ8e/9f XAqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285063; x=1787889863; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=bhNir2CKcbFwxivO6W8m2We0DbEIiM40sRu7ky0424c=; b=JaODCg6NAeMNq1YnDqHVc4SQD7RlZmJJPVowneZ6aUvVpExc7rr4mJf+qHR/NUaKDq cQdqsbw+o5qAdjAWSolMX1JNfIHruylus3nnV9UyozUdRmqfv4b3dG2A9+hadU3lpa0A A45BFn+buqxXrEnea0iFH9tfj81wHMPVqtbzFWqJpnfAB9ht/c20QTX6nOxnUfpqY6pU fMfh6QBFtOXJDRhReHOsz1BMG9Qv0AQaHzJ5911LP7jy+DosLnUphk/8C95NIJGkC8pA sE90Trawe9mMkDt/ut7efjqB3ImntotnPOv0tjMzedJu67ef1xWlzVyNH4Ay4A+k1mvb KG2A== X-Gm-Message-State: AFuF++leji/J5z5nq88alrVu0nSbEOuIt+TqYXo1UQDHmvBvIg+Ycn3o 3WvbkYzOzOusWKL3yo23FJQXZlpd2Ahhelg8Tc0RNL/QOmcgkcE/6l4+GJv+FjnHCLEnvUDWud7 kL/ta X-Gm-Gg: AR+sD12TQtI0i1ZIjEXbi428dBKcAPaLRKRA2Lq8drzYnwfw3Y2MUpXTcMduT0HpZLY frdXDWMwl4TLCficxQLU6xHfpa9gI9s2xCICl2WUBWOiEeMk7bAEKG/iv1L1eGX8955xBfjgLj0 tlfAyim4hRp5/Mg0HVARaIfNkPQfgz/zNdAI8T1Y10N1uZl0obG2LolzOj9M1VhpO8V4KkhhWkN 5s5RXCPtV4K3Uo02PR+u0MAICcfF5Yr37s0lIij4U8yD6DjXjWO6TKNURldzR+IslFSkVjSCG8Q POsaleLL7ANf5qFiSiqr0iQMhzFhBnoytEwcS97tJjf97CosnOkjkZWET1cNDMh/wYPrvdoREvA w3Bc0lZgfc00KOjg9yQ2PyLye5hgqTsgLnJcnkHZr8J3vGya/LuqnYz4CxXVtFzot/13HoO+3/l lV39VfHcNC9iUAnSyW/2zlH1I75YsaPN9ypAjJu0CmqLdsELuhXaMHYxG92ak71OVLAJEvVUrHv 4fwew== X-Received: by 2002:a17:90b:4c11:b0:38e:7168:281 with SMTP id 98e67ed59e1d1-395c3878304mr5336109a91.10.1787285063205; Thu, 20 Aug 2026 21:04:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 16/23] target/riscv: Build MemOpIdx to vext_ldff Date: Thu, 20 Aug 2026 21:03:57 -0700 Message-ID: <20260821040404.268123-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285202992158500 Content-Type: text/plain; charset="utf-8" Use mmu data passed in with VDATA. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 9b0c3f70c2..98a0a5d025 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -711,7 +711,8 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPURIS= CVState *env, uint32_t msize =3D nf * esz; uint32_t vma =3D vext_vma(desc); target_ulong addr, last, last_in_page, page_split, elems; - int mmu_index =3D riscv_env_mmu_index(env, false); + MemOpIdx oi =3D vext_oi(desc, log2_esz); + int mmu_index =3D get_mmuidx(oi); bool first_active; int flags; void *host; --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285336; cv=none; d=zohomail.com; s=zohoarc; b=Z6hEAZnJmLAJ5C0yvMSd6kRbrNdUhLxd5utQFn1C0xYdUtzrqqGOJns1vjoIVaT3OEHZOq9X5vt3iJgOH1qXjvVeYeJVLM+kazbYtFkPnp8VJac0gHdjfz580MeJ9nMulFwf2jZaOW5n5imImPDOteX9GEAX5MfmCeprM8mlwdI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285336; 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=RTJWXgQvQM7wk42NYFJf+QI6HP3tire/g0xQeY4+0Hk=; b=Audjzj9nNBGiQZvBJ9vK+yKeYz/TMZc/BNff73Q8M/wjDenrsnyzMm/lEXoWLCCTE+9mEI1tkTvsXCcR3ls8eS1u2zxO6CbRgvHnyQKv4XFb8wstiuZlp4TMCJzxbpydfhB87oyPYkGoW5Xa0+AzZ+ECIZtppkSNGTdpGrm7ZJg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285336440463.5129648240709; Thu, 20 Aug 2026 21:08:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGV1-0006TH-D4; Fri, 21 Aug 2026 00:04:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUZ-00068N-Nx for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:33 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUV-0003F9-K5 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:31 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2cc7e86e7aeso7228515ad.2 for ; Thu, 20 Aug 2026 21:04:25 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285064; x=1787889864; 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:content-type; bh=RTJWXgQvQM7wk42NYFJf+QI6HP3tire/g0xQeY4+0Hk=; b=RaqA4uP8IfPI6+LWID3r4wqnZM8ZDB0/zcoWjtpvVTpIHkZXpc2pS0gzEyFaJtTOm2 GuoywfQnbBfzP72+VcZgS3boleOJRE4UmalH3Zb454el9l3FcdHK2QestpK4FkzhC1XM 0NrR8/Rx03+8mi7VV12S6FAreKR7zLiD4V1LcbrTjQET1PMQjc9cSb1JO79Yy7ZQzD3o 82h4/sK8Q5F89gcYd2a8Zc9GEHul7D7PDNmE8Ag1epkAKLYvZDNzeZ9idmiqtu/hidfS 60HPhgI3pbrEVw5cSTw57rxpbdg//7vHOdCdmoNIyRSlPTVfJ8qIXrUYtTLz8w8MOVQ8 GluA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285064; x=1787889864; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=RTJWXgQvQM7wk42NYFJf+QI6HP3tire/g0xQeY4+0Hk=; b=NkLEcqwbmHfoJs1HI4kDNToX9GLjpZpMXqv+NAzxG5Z5h1FzQRBwg7Ww2+UrR5jkl/ IHq3kry/1nVp64JTMf1isv+6SoD11BmCSSbp8qQ2fGh/t/1UA2/O/s3ja7mE+NSSf9kM LJcc0BCEc5Nd6yZ/XZiHAee0K1obFZxp+VHYMu2O7hv8H7is6stlqJu2Fxek/R0O5/Fi btXzEVJKyM9Av7kMexFnG3zk6vwFR+D2Bn0BH4w0Os5ZRKZC5CkUDZXca6Wa8mcwSRlu 3B6vY8maJ+gXobGq0PqLBkDHzh+oN8DH5WdTizSIy2g+fzZeWE7VWZU1KBo+Nv0aOlKh tTWA== X-Gm-Message-State: AFuF++mHMZE4uLcaO6RZ/Mz2jN/o1QpfbC0nf1acUQ3vsH53lgfH5zo5 rMup2JmODCUBKhyBPVKFlWvRA0Cxjqed83fbNa5VM5DdDYSstM37If6al2x0kAHpfrMBT0yewuW 6y3kG X-Gm-Gg: AR+sD11hfPxcJz+dlyQB7q6sLQcBQT7X58JdByP8Ob0anEq6y+VRDla3LAN76dCHcNJ e5GKVluX7t/pAp0xJL6EIPJi5TH7H37gANdwhL+h3/Qb8d4NxfYqJzacC36sRUHDBs4Nk+a5Nis JVSOlajNvYZeQlCM1K7EBgUq48ZuxRe3bJBD9MUb9171fqhd42QYI5SiPWskdpN1aeJtV1QZ/0s h3zL5rUaIjpXC2NtJNaHEQ+0NZHhp/rg5/TI274AzHmGqQ730KI0nQ3GXxQlF/GH+al9R6VQnnx Ocr0Sz9B09ZJltJnvSzH3XKgawI2Ug3i6POwFwu7yRqf6LoAToYSdoYjKfAazyKYuUV3ecJDPFy OwrC1k80CWPgcrUGAl+5YN+NIRHQL1Y8D0lLG7xigYw3Iv3p9Dg7pmWD2oGyMCKPbkEzDuxbfSl 6oMk7wN2CzEZYaxAOQSTemwmyNJRjvj1wd3HRpzDayG9X3i7WBvAXcJ8S+xy6HcjB56sg= X-Received: by 2002:a17:90b:51c3:b0:383:f52b:d616 with SMTP id 98e67ed59e1d1-395c3707434mr6501632a91.10.1787285064171; Thu, 20 Aug 2026 21:04:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 17/23] target/riscv: Pass MemOpIdx to vext_ldst_elem_fn_tlb Date: Thu, 20 Aug 2026 21:03:58 -0700 Message-ID: <20260821040404.268123-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285337574158500 Content-Type: text/plain; charset="utf-8" Avoids continually looking up mmu_index with every operation. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 91 +++++++++++++++----------------- 1 file changed, 43 insertions(+), 48 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 98a0a5d025..f65da46144 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -171,32 +171,20 @@ static inline MemOpIdx vext_oi(uint32_t desc, MemOp m= emop) return make_memop_idx(memop, FIELD_EX32(data, VDATA, MEM_IDX)); } =20 -static inline MemOpIdx vext_make_memop_idx(CPURISCVState *env, size_t size) -{ - int mmu_idx =3D riscv_env_mmu_index(env, false); - MemOp memop =3D size_memop(size) | mo_endian_env(env); - - if (!riscv_cpu_cfg(env)->ext_zicclsm) { - memop |=3D MO_ALIGN; - } - - return make_memop_idx(memop, mmu_idx); -} - /* elements operations for load and store */ typedef void vext_ldst_elem_fn_tlb(CPURISCVState *env, abi_ptr addr, - uint32_t idx, void *vd, uintptr_t retad= dr); + uint32_t idx, void *vd, + MemOpIdx oi, uintptr_t retaddr); typedef void vext_ldst_elem_fn_host(void *vd, uint32_t idx, void *host); =20 -#define GEN_VEXT_TLB_LD_ELEM(NAME, ETYPE, H, LDSUF) \ -static inline QEMU_ALWAYS_INLINE \ -void NAME##_tlb(CPURISCVState *env, abi_ptr addr, \ - uint32_t idx, void *vd, uintptr_t retaddr) \ -{ \ - ETYPE *cur =3D ((ETYPE *)vd + H(idx)); \ - MemOpIdx oi =3D vext_make_memop_idx(env, sizeof(ETYPE)); \ - *cur =3D cpu_##LDSUF##_mmu(env, addr, oi, retaddr); \ -} \ +#define GEN_VEXT_TLB_LD_ELEM(NAME, ETYPE, H, LDSUF) \ +static inline QEMU_ALWAYS_INLINE \ +void NAME##_tlb(CPURISCVState *env, abi_ptr addr, uint32_t idx, \ + void *vd, MemOpIdx oi, uintptr_t retaddr) \ +{ \ + ETYPE *cur =3D ((ETYPE *)vd + H(idx)); \ + *cur =3D cpu_##LDSUF##_mmu(env, addr, oi, retaddr); \ +} =20 #define GEN_VEXT_HOST_LD_ELEM(NAME, ETYPE, H, LDSUF) \ static inline QEMU_ALWAYS_INLINE \ @@ -216,15 +204,14 @@ GEN_VEXT_HOST_LD_ELEM(lde_h, uint16_t, H2, lduw_le) GEN_VEXT_HOST_LD_ELEM(lde_w, uint32_t, H4, ldl_le) GEN_VEXT_HOST_LD_ELEM(lde_d, uint64_t, H8, ldq_le) =20 -#define GEN_VEXT_TLB_ST_ELEM(NAME, ETYPE, H, STSUF) \ -static inline QEMU_ALWAYS_INLINE \ -void NAME##_tlb(CPURISCVState *env, abi_ptr addr, \ - uint32_t idx, void *vd, uintptr_t retaddr) \ -{ \ - ETYPE data =3D *((ETYPE *)vd + H(idx)); \ - MemOpIdx oi =3D vext_make_memop_idx(env, sizeof(ETYPE)); \ - cpu_##STSUF##_mmu(env, addr, data, oi, retaddr); \ -} \ +#define GEN_VEXT_TLB_ST_ELEM(NAME, ETYPE, H, STSUF) \ +static inline QEMU_ALWAYS_INLINE \ +void NAME##_tlb(CPURISCVState *env, abi_ptr addr, uint32_t idx, \ + void *vd, MemOpIdx oi, uintptr_t retaddr) \ +{ \ + ETYPE data =3D *((ETYPE *)vd + H(idx)); \ + cpu_##STSUF##_mmu(env, addr, data, oi, retaddr); \ +} =20 #define GEN_VEXT_HOST_ST_ELEM(NAME, ETYPE, H, STSUF) \ static inline QEMU_ALWAYS_INLINE \ @@ -282,10 +269,11 @@ static void vext_ldst_nf_host(void *vd, void *host, u= int32_t i, uint32_t nf, static void vext_ldst_nf_tlb(CPURISCVState *env, void *vd, target_ulong ad= dr, uint32_t i, uint32_t nf, uint32_t esz, uint32_t max_elems, - vext_ldst_elem_fn_tlb *ldst_tlb, uintptr_t ra) + vext_ldst_elem_fn_tlb *ldst_tlb, + MemOpIdx oi, uintptr_t ra) { for (uint32_t k =3D 0; k < nf; k++, addr +=3D esz) { - ldst_tlb(env, adjust_addr(env, addr), i + k * max_elems, vd, ra); + ldst_tlb(env, adjust_addr(env, addr), i + k * max_elems, vd, oi, r= a); } } =20 @@ -302,13 +290,14 @@ vext_ldst_stride(void *vd, void *v0, target_ulong bas= e, target_ulong stride, uint32_t max_elems =3D vext_max_elems(desc, log2_esz); uint32_t esz =3D 1 << log2_esz; uint32_t vma =3D vext_vma(desc); + MemOpIdx oi =3D vext_oi(desc, log2_esz); =20 VSTART_CHECK_EARLY_EXIT(env, env->vl); =20 for (uint32_t i =3D env->vstart; i < env->vl; env->vstart =3D ++i) { if (vm || vext_elem_mask(v0, i)) { vext_ldst_nf_tlb(env, vd, base + stride * i, i, nf, - esz, max_elems, ldst_elem, ra); + esz, max_elems, ldst_elem, oi, ra); } else if (vma) { vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } @@ -388,12 +377,13 @@ vext_page_ldst_us_tlb(CPURISCVState *env, void *vd, t= arget_ulong addr, uint32_t i, uint32_t evl, uint32_t nf, uint32_t log2_esz, uint32_t max_elems, vext_ldst_elem_fn_tlb *ldst_tlb, - int mmu_index, uintptr_t ra) + MemOpIdx oi, uintptr_t ra) { uint32_t esz =3D 1 << log2_esz; uint32_t msize =3D nf << log2_esz; do { - vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, max_elems, ldst_tlb, r= a); + vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, + max_elems, ldst_tlb, oi, ra); addr +=3D msize; env->vstart =3D ++i; } while (i < evl); @@ -443,7 +433,7 @@ vext_ldst_us_notail(void *vd, target_ulong base, CPURIS= CVState *env, */ if (nf =3D=3D 1 && (evl << log2_esz) <=3D 6) { for (; i < evl; env->vstart =3D ++i, addr +=3D esz) { - ldst_tlb(env, adjust_addr(env, addr), i, vd, ra); + ldst_tlb(env, adjust_addr(env, addr), i, vd, oi, ra); } return; } @@ -472,7 +462,7 @@ vext_ldst_us_notail(void *vd, target_ulong base, CPURIS= CVState *env, } else { vext_page_ldst_us_tlb(env, vd, addr, i, page_evl, nf, log2_esz, max_elems, - ldst_tlb, mmu_index, ra); + ldst_tlb, oi, ra); } =20 /* Usually the first page contains the entire vector. */ @@ -485,7 +475,8 @@ vext_ldst_us_notail(void *vd, target_ulong base, CPURIS= CVState *env, =20 /* Cross page element */ if (unlikely(page_split % msize)) { - vext_ldst_nf_tlb(env, vd, addr, i++, nf, esz, max_elems, ldst_tlb,= ra); + vext_ldst_nf_tlb(env, vd, addr, i++, nf, esz, + max_elems, ldst_tlb, oi, ra); if (i =3D=3D evl) { return; } @@ -504,7 +495,7 @@ vext_ldst_us_notail(void *vd, target_ulong base, CPURIS= CVState *env, max_elems, ldst_host, is_load); } else { vext_page_ldst_us_tlb(env, vd, addr, i, evl, nf, log2_esz, max_ele= ms, - ldst_tlb, mmu_index, ra); + ldst_tlb, oi, ra); } } =20 @@ -623,6 +614,7 @@ vext_ldst_index(void *vd, void *v0, target_ulong base, uint32_t max_elems =3D vext_max_elems(desc, log2_esz); uint32_t esz =3D 1 << log2_esz; uint32_t vma =3D vext_vma(desc); + MemOpIdx oi =3D vext_oi(desc, log2_esz); =20 VSTART_CHECK_EARLY_EXIT(env, env->vl); =20 @@ -636,7 +628,8 @@ vext_ldst_index(void *vd, void *v0, target_ulong base, =20 for (uint32_t k =3D 0; k < nf; ++k) { abi_ptr addr =3D get_index_addr(base, i, vs2) + (k << log2_esz= ); - ldst_elem(env, adjust_addr(env, addr), i + k * max_elems, vd, = ra); + ldst_elem(env, adjust_addr(env, addr), + i + k * max_elems, vd, oi, ra); } } =20 @@ -753,7 +746,8 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPURIS= CVState *env, * If it also crosses the page, just go ahead and load it. */ if (unlikely(page_split < msize) && first_active) { - vext_ldst_nf_tlb(env, vd, addr, 0, nf, esz, max_elems, ldst_tlb, r= a); + vext_ldst_nf_tlb(env, vd, addr, 0, nf, esz, + max_elems, ldst_tlb, oi, ra); env->vstart =3D i =3D 1; addr +=3D msize; page_split =3D -(addr | TARGET_PAGE_MASK); @@ -798,7 +792,7 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPURIS= CVState *env, */ if (first_active) { vext_ldst_nf_tlb(env, vd, addr, 0, nf, esz, - max_elems, ldst_tlb, ra); + max_elems, ldst_tlb, oi, ra); i =3D 1; addr +=3D msize; } @@ -813,12 +807,12 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPUR= ISCVState *env, if (vm) { vext_page_ldst_us_tlb(env, vd, addr, i, page_evl, nf, log2_esz, max_elems, - ldst_tlb, mmu_index, ra); + ldst_tlb, oi, ra); } else { do { if (vext_elem_mask(v0, i)) { vext_ldst_nf_tlb(env, vd, base + i * msize, i, nf, - esz, max_elems, ldst_tlb, ra); + esz, max_elems, ldst_tlb, oi, ra); } else if (vma) { vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } @@ -868,7 +862,8 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPURIS= CVState *env, goto tail; } =20 - vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, max_elems, ldst_tlb, r= a); + vext_ldst_nf_tlb(env, vd, addr, i, nf, esz, + max_elems, ldst_tlb, oi, ra); if (++i =3D=3D vl) { goto tail; } @@ -909,12 +904,12 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPUR= ISCVState *env, if (vm) { vext_page_ldst_us_tlb(env, vd, addr, i, vl, nf, log2_esz, max_elems, - ldst_tlb, mmu_index, ra); + ldst_tlb, oi, ra); } else { do { if (vext_elem_mask(v0, i)) { vext_ldst_nf_tlb(env, vd, base + i * msize, i, nf, - esz, max_elems, ldst_tlb, ra); + esz, max_elems, ldst_tlb, oi, ra); } else if (vma) { vext_set_nf_elems_1s(vd, i, nf, esz, max_elems); } --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285123; cv=none; d=zohomail.com; s=zohoarc; b=evby3O+5xMEZukB9hv14gOxXyUK5pA6zN0yGcAk5c0smVaMZY+y2g1EW7wuA9q1mhSbSTxhjIb9OZ0wazhRKlWXZMFI7xURD/PgkEsge4WXfKpUH+lF/OpV58ZYwq5kps+R4jvxyPJcWWYumpX0i3M8R/AFxiDC3JT8xhQ5/gNQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285123; 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=erKbFuTfEb8twlwL8KOeUQx1ZKUgJRBYtRM9xW0W6Yg=; b=QZEc0Ni3rZoOhOBEJW5LCsmz5/rPaiPXahHpoYbSfuvpPn4n8JcrROiCLbSs1peHYijaVgi1gDowOqrm56IDwLQOdl4Sb9WRc9kiORwJo1P6jLN48d10zRG7l9QXOItfNfhyKFfXqv2PzTphEaTB8pAvL/DpQlXKokdEFlpZXgA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285123799974.9546908603933; Thu, 20 Aug 2026 21:05:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUs-0006OO-SO; Fri, 21 Aug 2026 00:04:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUa-00068P-0o for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:33 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUV-0003Fd-JW for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:31 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-c96b08cdd1cso485875a12.0 for ; Thu, 20 Aug 2026 21:04:26 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285065; x=1787889865; 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:content-type; bh=erKbFuTfEb8twlwL8KOeUQx1ZKUgJRBYtRM9xW0W6Yg=; b=D7wCuV/jj3pRuUFGjoFdgDIEiggZu6JLV7DenVmi1mCMQsSQMemiBNIr/0UxlnLilg gYg0AaPY9RmAdeoqgAfAjjFu3gOnGOxRdEkPc33/HM7+boTI2d2CH+MTnxuXsE1c96Ht AbGK6BIkyXmWyAD+UubXfT5E1pHevDiPyr2SWzOO69LlvgJg1/djWKnNYbgQKp52ZgCr TV1o+AB6HufXD4Yj8FVZcKKhAIk1aBlh/rAHQs5vEwdn2VnCD+/kSNX8+p6omkRhbrUG nVA1UYAbJxW+fqgsd728OnoJ0LFRJT2kg5OaRmfHI06/fIsyo7Md3G1YFMXvj1SC4EEN s0OQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285065; x=1787889865; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=erKbFuTfEb8twlwL8KOeUQx1ZKUgJRBYtRM9xW0W6Yg=; b=NpRlHs047f6nsRjMv+ERxvAE+cMYXgsIXqJ7+7RfQ4hNkPfGrK/7yyF4tlsIiYrqHG PS24V4DTgsU4vkGPWvRNbHk/ZxSw3xwXOJdwlNyalVd859nDl5bkry/n3FfW2JulCBNh UUB3O+SURi7/mg7/bJdu4i/05gA3d/BUmKwAbfhyoC4DhDyIQAWr7K6hrEa0lPGx4tOI REnO88mslKW7XDQpj0IngKI3jJRvnNE4xGj7uiCuYSezdq5yswY0wPTfDTq4RH2I1Gqm MKhm8bBZjBiq0YSx7rzwuwUx67D0OHuGsItof0ByexTaOAPjRzPZ8HtRl4XkfHfvBOaF cM3A== X-Gm-Message-State: AFuF++ku1y16B4LfOo/TTU9hxxFIo2z3PJ6nvBbXOlZxeUDygeQ2zm2l 79rxsD5JqIQqK6z2lrRFOIwLTgsvvFcrCUTxUMq3ryHljhgTFfFlY/igxreS1D9sUjO25h0TsWL mIFL7 X-Gm-Gg: AR+sD12oirzlp8Lh8pw70RoiWmhenWha2rX0iwmkCP7dj1RwapkGWKx2R/jjNYgy5Tj j6BzCdInjlB9GikpxgnprNkEBuqzz6D5154ZGExGyRVtU5EBT5HETNzZOg8ECy+SlYIfvi0q12n 0qm9N9MG8Gb/TxBLfymwQ7zwh+VChf6Agw1uFARiV2zGFUAcsW7H1idW6ogd/6aIPWOSeGNO5mR UYY4qvNrofG+JDcwZ3JGNaYswWGHOOXNd3KlQ+SKgAbZ+tJmzsxw93yvjvgtW4vKcn8yWqiiCOB 0PEuixSIIBKGexogF86vYkGFlKK5GNZpzostQXVFtIkkRSSoJSV2qVPh1LpjhaNzb43ikD9nUA5 RB7eTjIo90b/PHvkoibYv4qDdkz8Hyv9k1OsMNVzNp8KtlsaFi+EB43sYu5bYQkLE0oWWK77RS8 YWtt05v43g3I2L5M9gg3wS4c82ZV3g6+xE2tf33YdyAfuNR6sFqx2mNLXHl+TfeMfaqRY= X-Received: by 2002:a17:90b:4a89:b0:38e:fea2:df53 with SMTP id 98e67ed59e1d1-395c3511456mr5730420a91.4.1787285065190; Thu, 20 Aug 2026 21:04:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 18/23] target/riscv: Use FLATTEN rather than ALWAYS_INLINE for vector ldst Date: Thu, 20 Aug 2026 21:03:59 -0700 Message-ID: <20260821040404.268123-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::531; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x531.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285124780158500 Content-Type: text/plain; charset="utf-8" It turns out there are fewer places that need annotation if we just flatten from the outer helper macros instead of everything along the call stack. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 147 +++++++++++++++---------------- 1 file changed, 70 insertions(+), 77 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index f65da46144..c5b4085f9c 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -158,7 +158,7 @@ static inline void vext_set_elem_mask(void *v0, int ind= ex, ((uint64_t *)v0)[idx] =3D deposit64(old, pos, 1, value); } =20 -static inline MemOpIdx vext_oi(uint32_t desc, MemOp memop) +static MemOpIdx vext_oi(uint32_t desc, MemOp memop) { uint32_t data =3D simd_data(desc); =20 @@ -178,20 +178,18 @@ typedef void vext_ldst_elem_fn_tlb(CPURISCVState *env= , abi_ptr addr, typedef void vext_ldst_elem_fn_host(void *vd, uint32_t idx, void *host); =20 #define GEN_VEXT_TLB_LD_ELEM(NAME, ETYPE, H, LDSUF) \ -static inline QEMU_ALWAYS_INLINE \ -void NAME##_tlb(CPURISCVState *env, abi_ptr addr, uint32_t idx, \ - void *vd, MemOpIdx oi, uintptr_t retaddr) \ +static void NAME##_tlb(CPURISCVState *env, abi_ptr addr, uint32_t idx, \ + void *vd, MemOpIdx oi, uintptr_t retaddr) \ { \ ETYPE *cur =3D ((ETYPE *)vd + H(idx)); \ *cur =3D cpu_##LDSUF##_mmu(env, addr, oi, retaddr); \ } =20 -#define GEN_VEXT_HOST_LD_ELEM(NAME, ETYPE, H, LDSUF) \ -static inline QEMU_ALWAYS_INLINE \ -void NAME##_host(void *vd, uint32_t idx, void *host) \ -{ \ - ETYPE *cur =3D ((ETYPE *)vd + H(idx)); \ - *cur =3D (ETYPE)LDSUF##_p(host); \ +#define GEN_VEXT_HOST_LD_ELEM(NAME, ETYPE, H, LDSUF) \ +static void NAME##_host(void *vd, uint32_t idx, void *host) \ +{ \ + ETYPE *cur =3D ((ETYPE *)vd + H(idx)); \ + *cur =3D (ETYPE)LDSUF##_p(host); \ } =20 GEN_VEXT_TLB_LD_ELEM(lde_b, uint8_t, H1, ldb) @@ -205,20 +203,18 @@ GEN_VEXT_HOST_LD_ELEM(lde_w, uint32_t, H4, ldl_le) GEN_VEXT_HOST_LD_ELEM(lde_d, uint64_t, H8, ldq_le) =20 #define GEN_VEXT_TLB_ST_ELEM(NAME, ETYPE, H, STSUF) \ -static inline QEMU_ALWAYS_INLINE \ -void NAME##_tlb(CPURISCVState *env, abi_ptr addr, uint32_t idx, \ +static void NAME##_tlb(CPURISCVState *env, abi_ptr addr, uint32_t idx, \ void *vd, MemOpIdx oi, uintptr_t retaddr) \ { \ ETYPE data =3D *((ETYPE *)vd + H(idx)); \ cpu_##STSUF##_mmu(env, addr, data, oi, retaddr); \ } =20 -#define GEN_VEXT_HOST_ST_ELEM(NAME, ETYPE, H, STSUF) \ -static inline QEMU_ALWAYS_INLINE \ -void NAME##_host(void *vd, uint32_t idx, void *host) \ -{ \ - ETYPE data =3D *((ETYPE *)vd + H(idx)); \ - STSUF##_p(host, data); \ +#define GEN_VEXT_HOST_ST_ELEM(NAME, ETYPE, H, STSUF) \ +static void NAME##_host(void *vd, uint32_t idx, void *host) \ +{ \ + ETYPE data =3D *((ETYPE *)vd + H(idx)); \ + STSUF##_p(host, data); \ } =20 GEN_VEXT_TLB_ST_ELEM(ste_b, uint8_t, H1, stb) @@ -308,9 +304,9 @@ vext_ldst_stride(void *vd, void *v0, target_ulong base,= target_ulong stride, } =20 #define GEN_VEXT_LD_STRIDE(NAME, ETYPE, LOAD_FN) \ -void HELPER(NAME)(void *vd, void * v0, target_ulong base, \ - target_ulong stride, CPURISCVState *env, \ - uint32_t desc) \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, void * v0, target_ulong base, \ + target_ulong stride, CPURISCVState *env, \ + uint32_t desc) \ { \ uint32_t vm =3D vext_vm(desc); \ vext_ldst_stride(vd, v0, base, stride, env, desc, vm, LOAD_FN, \ @@ -323,9 +319,9 @@ GEN_VEXT_LD_STRIDE(vlse32_v, int32_t, lde_w_tlb) GEN_VEXT_LD_STRIDE(vlse64_v, int64_t, lde_d_tlb) =20 #define GEN_VEXT_ST_STRIDE(NAME, ETYPE, STORE_FN) \ -void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ - target_ulong stride, CPURISCVState *env, \ - uint32_t desc) \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ + target_ulong stride, CPURISCVState *env, \ + uint32_t desc) \ { \ uint32_t vm =3D vext_vm(desc); \ vext_ldst_stride(vd, v0, base, stride, env, desc, vm, STORE_FN, \ @@ -342,7 +338,7 @@ GEN_VEXT_ST_STRIDE(vsse64_v, int64_t, ste_d_tlb) */ =20 /* unmasked unit-stride load and store operation */ -static inline QEMU_ALWAYS_INLINE void +static void vext_page_ldst_us_host(void *vd, void *host, uint32_t i, uint32_t evl, uint32_t nf, uint32_t log2_esz, uint32_t max_elems, vext_ldst_elem_fn_host *ldst_host, bool is_load) @@ -372,7 +368,7 @@ vext_page_ldst_us_host(void *vd, void *host, uint32_t i= , uint32_t evl, } } =20 -static inline QEMU_ALWAYS_INLINE void +static void vext_page_ldst_us_tlb(CPURISCVState *env, void *vd, target_ulong addr, uint32_t i, uint32_t evl, uint32_t nf, uint32_t log2_esz, uint32_t max_elems, @@ -403,7 +399,7 @@ static void vext_test_alignment(CPURISCVState *env, vad= dr addr, uint32_t esz, } } =20 -static inline QEMU_ALWAYS_INLINE void +static void vext_ldst_us_notail(void *vd, target_ulong base, CPURISCVState *env, uint32_t log2_esz, uint32_t nf, uint32_t evl, uint32_t max_elems, bool vma, @@ -499,7 +495,7 @@ vext_ldst_us_notail(void *vd, target_ulong base, CPURIS= CVState *env, } } =20 -static inline QEMU_ALWAYS_INLINE void +static void vext_ldst_us(void *vd, target_ulong base, CPURISCVState *env, uint32_t des= c, vext_ldst_elem_fn_tlb *ldst_tlb, vext_ldst_elem_fn_host *ldst_host, uint32_t log2_esz, @@ -521,20 +517,19 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVSta= te *env, uint32_t desc, * stride, stride =3D NF * sizeof (ETYPE) */ =20 -#define GEN_VEXT_LD_US(NAME, ETYPE, LOAD_FN_TLB, LOAD_FN_HOST) \ -void HELPER(NAME##_mask)(void *vd, void *v0, target_ulong base, \ - CPURISCVState *env, uint32_t desc) \ -{ \ - uint32_t stride =3D vext_nf(desc) << ctzl(sizeof(ETYPE)); \ - vext_ldst_stride(vd, v0, base, stride, env, desc, false, \ - LOAD_FN_TLB, ctzl(sizeof(ETYPE)), GETPC()); \ -} \ - \ -void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ - CPURISCVState *env, uint32_t desc) \ -{ \ - vext_ldst_us(vd, base, env, desc, LOAD_FN_TLB, LOAD_FN_HOST, \ - ctzl(sizeof(ETYPE)), env->vl, GETPC(), true); \ +#define GEN_VEXT_LD_US(NAME, ETYPE, LOAD_FN_TLB, LOAD_FN_HOST) \ +QEMU_FLATTEN void HELPER(NAME##_mask)(void *vd, void *v0, \ + target_ulong base, CPURISCVState *env, uint32_t desc) \ +{ \ + uint32_t stride =3D vext_nf(desc) << ctzl(sizeof(ETYPE)); \ + vext_ldst_stride(vd, v0, base, stride, env, desc, false, \ + LOAD_FN_TLB, ctzl(sizeof(ETYPE)), GETPC()); \ +} \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ + CPURISCVState *env, uint32_t desc) \ +{ \ + vext_ldst_us(vd, base, env, desc, LOAD_FN_TLB, LOAD_FN_HOST, \ + ctzl(sizeof(ETYPE)), env->vl, GETPC(), true); \ } =20 GEN_VEXT_LD_US(vle8_v, int8_t, lde_b_tlb, lde_b_host) @@ -543,16 +538,15 @@ GEN_VEXT_LD_US(vle32_v, int32_t, lde_w_tlb, lde_w_hos= t) GEN_VEXT_LD_US(vle64_v, int64_t, lde_d_tlb, lde_d_host) =20 #define GEN_VEXT_ST_US(NAME, ETYPE, STORE_FN_TLB, STORE_FN_HOST) \ -void HELPER(NAME##_mask)(void *vd, void *v0, target_ulong base, \ - CPURISCVState *env, uint32_t desc) \ +QEMU_FLATTEN void HELPER(NAME##_mask)(void *vd, void *v0, \ + target_ulong base, CPURISCVState *env, uint32_t desc) \ { \ uint32_t stride =3D vext_nf(desc) << ctzl(sizeof(ETYPE)); = \ vext_ldst_stride(vd, v0, base, stride, env, desc, false, \ STORE_FN_TLB, ctzl(sizeof(ETYPE)), GETPC()); \ } \ - \ -void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ - CPURISCVState *env, uint32_t desc) \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ + CPURISCVState *env, uint32_t desc) \ { \ vext_ldst_us(vd, base, env, desc, STORE_FN_TLB, STORE_FN_HOST, \ ctzl(sizeof(ETYPE)), env->vl, GETPC(), false); \ @@ -566,8 +560,8 @@ GEN_VEXT_ST_US(vse64_v, int64_t, ste_d_tlb, ste_d_host) /* * unit stride mask load and store, EEW =3D 1 */ -void HELPER(vlm_v)(void *vd, void *v0, target_ulong base, - CPURISCVState *env, uint32_t desc) +QEMU_FLATTEN void HELPER(vlm_v)(void *vd, void *v0, target_ulong base, + CPURISCVState *env, uint32_t desc) { /* evl =3D ceil(vl/8) */ uint8_t evl =3D (env->vl + 7) >> 3; @@ -575,8 +569,8 @@ void HELPER(vlm_v)(void *vd, void *v0, target_ulong bas= e, 0, evl, GETPC(), true); } =20 -void HELPER(vsm_v)(void *vd, void *v0, target_ulong base, - CPURISCVState *env, uint32_t desc) +QEMU_FLATTEN void HELPER(vsm_v)(void *vd, void *v0, target_ulong base, + CPURISCVState *env, uint32_t desc) { /* evl =3D ceil(vl/8) */ uint8_t evl =3D (env->vl + 7) >> 3; @@ -602,7 +596,7 @@ GEN_VEXT_GET_INDEX_ADDR(idx_h, uint16_t, H2) GEN_VEXT_GET_INDEX_ADDR(idx_w, uint32_t, H4) GEN_VEXT_GET_INDEX_ADDR(idx_d, uint64_t, H8) =20 -static inline void +static void vext_ldst_index(void *vd, void *v0, target_ulong base, void *vs2, CPURISCVState *env, uint32_t desc, vext_get_index_addr get_index_addr, @@ -637,12 +631,12 @@ vext_ldst_index(void *vd, void *v0, target_ulong base, vext_set_tail_elems_1s(env->vl, vd, desc, nf, esz, max_elems); } =20 -#define GEN_VEXT_LD_INDEX(NAME, ETYPE, INDEX_FN, LOAD_FN) = \ -void HELPER(NAME)(void *vd, void *v0, target_ulong base, = \ - void *vs2, CPURISCVState *env, uint32_t desc) = \ -{ = \ - vext_ldst_index(vd, v0, base, vs2, env, desc, INDEX_FN, = \ - LOAD_FN, ctzl(sizeof(ETYPE)), GETPC()); = \ +#define GEN_VEXT_LD_INDEX(NAME, ETYPE, INDEX_FN, LOAD_FN) \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ + void *vs2, CPURISCVState *env, uint32_t des= c) \ +{ \ + vext_ldst_index(vd, v0, base, vs2, env, desc, INDEX_FN, \ + LOAD_FN, ctzl(sizeof(ETYPE)), GETPC()); \ } =20 GEN_VEXT_LD_INDEX(vlxei8_8_v, int8_t, idx_b, lde_b_tlb) @@ -662,13 +656,12 @@ GEN_VEXT_LD_INDEX(vlxei64_16_v, int16_t, idx_d, lde_h= _tlb) GEN_VEXT_LD_INDEX(vlxei64_32_v, int32_t, idx_d, lde_w_tlb) GEN_VEXT_LD_INDEX(vlxei64_64_v, int64_t, idx_d, lde_d_tlb) =20 -#define GEN_VEXT_ST_INDEX(NAME, ETYPE, INDEX_FN, STORE_FN) \ -void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ - void *vs2, CPURISCVState *env, uint32_t desc) \ -{ \ - vext_ldst_index(vd, v0, base, vs2, env, desc, INDEX_FN, \ - STORE_FN, ctzl(sizeof(ETYPE)), \ - GETPC()); \ +#define GEN_VEXT_ST_INDEX(NAME, ETYPE, INDEX_FN, STORE_FN) \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ + void *vs2, CPURISCVState *env, uint32_t des= c) \ +{ \ + vext_ldst_index(vd, v0, base, vs2, env, desc, INDEX_FN, \ + STORE_FN, ctzl(sizeof(ETYPE)), GETPC()); \ } =20 GEN_VEXT_ST_INDEX(vsxei8_8_v, int8_t, idx_b, ste_b_tlb) @@ -691,7 +684,7 @@ GEN_VEXT_ST_INDEX(vsxei64_64_v, int64_t, idx_d, ste_d_t= lb) /* * unit-stride fault-only-fisrt load instructions */ -static inline void +static void vext_ldff(void *vd, void *v0, target_ulong base, CPURISCVState *env, uint32_t desc, vext_ldst_elem_fn_tlb *ldst_tlb, vext_ldst_elem_fn_host *ldst_host, uint32_t log2_esz, uintptr_t = ra) @@ -922,12 +915,12 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPUR= ISCVState *env, vext_set_tail_elems_1s(env->vl, vd, desc, nf, esz, max_elems); } =20 -#define GEN_VEXT_LDFF(NAME, ETYPE, LOAD_FN_TLB, LOAD_FN_HOST) \ -void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ - CPURISCVState *env, uint32_t desc) \ -{ \ - vext_ldff(vd, v0, base, env, desc, LOAD_FN_TLB, \ - LOAD_FN_HOST, ctzl(sizeof(ETYPE)), GETPC()); \ +#define GEN_VEXT_LDFF(NAME, ETYPE, LOAD_FN_TLB, LOAD_FN_HOST) \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ + CPURISCVState *env, uint32_t desc) \ +{ \ + vext_ldff(vd, v0, base, env, desc, LOAD_FN_TLB, \ + LOAD_FN_HOST, ctzl(sizeof(ETYPE)), GETPC()); \ } =20 GEN_VEXT_LDFF(vle8ff_v, int8_t, lde_b_tlb, lde_b_host) @@ -948,7 +941,7 @@ GEN_VEXT_LDFF(vle64ff_v, int64_t, lde_d_tlb, lde_d_host) /* * load and store whole register instructions */ -static inline QEMU_ALWAYS_INLINE void +static void vext_ldst_whole(void *vd, target_ulong base, CPURISCVState *env, uint32_t = desc, vext_ldst_elem_fn_tlb *ldst_tlb, vext_ldst_elem_fn_host *ldst_host, uint32_t log2_esz, @@ -963,8 +956,8 @@ vext_ldst_whole(void *vd, target_ulong base, CPURISCVSt= ate *env, uint32_t desc, } =20 #define GEN_VEXT_LD_WHOLE(NAME, ETYPE, LOAD_FN_TLB, LOAD_FN_HOST) \ -void HELPER(NAME)(void *vd, target_ulong base, CPURISCVState *env, \ - uint32_t desc) \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, target_ulong base, \ + CPURISCVState *env, uint32_t desc) \ { \ vext_ldst_whole(vd, base, env, desc, LOAD_FN_TLB, LOAD_FN_HOST, \ ctzl(sizeof(ETYPE)), GETPC(), true); \ @@ -988,8 +981,8 @@ GEN_VEXT_LD_WHOLE(vl8re32_v, int32_t, lde_w_tlb, lde_w_= host) GEN_VEXT_LD_WHOLE(vl8re64_v, int64_t, lde_d_tlb, lde_d_host) =20 #define GEN_VEXT_ST_WHOLE(NAME, ETYPE, STORE_FN_TLB, STORE_FN_HOST) \ -void HELPER(NAME)(void *vd, target_ulong base, CPURISCVState *env, \ - uint32_t desc) \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, target_ulong base, \ + CPURISCVState *env, uint32_t desc) \ { \ vext_ldst_whole(vd, base, env, desc, STORE_FN_TLB, STORE_FN_HOST, \ ctzl(sizeof(ETYPE)), GETPC(), false); \ --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285160; cv=none; d=zohomail.com; s=zohoarc; b=Xi6PNTFdRbrmpAI6JWuEr0+fGTyh6wDKT4lxwvkKh3mQYhNzYN2cBhr7Fa3VkK2U5jBfIpweg2xWWqiNiafBR5jHFYQrRqdTVvDusntS2cl4LpY4hQQRULUOTwgLfsfBH+v0hmfR2biyjPoMyXjFLMf7OCizy6/fSQMJC3kp7q8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285160; 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=HRZwvHbqGF3WUpbuWxH7XOYS4tVXJqwo7euDjl4jlvQ=; b=jImuzzfpBgO081YZyoGd61xHGfBPfd2YL/bWhwNG1Xt5AVnc194TQfygr8LXr+HEOepiPFmGd/LHnssxaY/GAkhsyV01fT9qb8eBjXVCWz0IeQCiUPp21EGQPQKE2zn+441UcD71AiFff6idBBoOClxA2kpOfim/8/JRFqi9wE8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285160433131.9648590431176; Thu, 20 Aug 2026 21:06:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUz-0006S6-TF; Fri, 21 Aug 2026 00:04:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUZ-00068M-Nd for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:33 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUV-0003Fn-JX for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:29 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-38125cebfdaso675541a91.1 for ; Thu, 20 Aug 2026 21:04:27 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285066; x=1787889866; 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:content-type; bh=HRZwvHbqGF3WUpbuWxH7XOYS4tVXJqwo7euDjl4jlvQ=; b=hMmuiNoj5N1x1+JRJ0aNhEgvwX+vL0pkWYqtn1MyWr77//LXYhJf5ILuobSdWuYKFp A2BpQ30iO0R4lhhBBls2IjAz1Nwosu4oghwvIpGsuG18mFmJCA0xPuC9XX110PeHwl+g MxFNZi+529NBwY83JEk8ys+KrublwiNIJGci0OwLy2P+1spWDhrd0hnLlX3wAk12o1WN 7pUTlN/ip3hb71syWlCLmycpn/Kfzp2Fzjh5ZIBaeS3rkXtwXqGNXuobqtul67Hocrk2 scQoL2f79F2BWMMSkiMo72EyFAld4skddBFkyUAUD+NjHfgZoRxMqJSLu1uIsnzPqM0P IkQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285066; x=1787889866; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=HRZwvHbqGF3WUpbuWxH7XOYS4tVXJqwo7euDjl4jlvQ=; b=LPrAoDlX0w+SkHs2iYo2Eq+0TiyDC09Oz1/8xAffCv2wBT0dvA4tcJrxmurTMc91eh aSOA34dgh83W0k9Pl6XU7iCS9XQIpJkXyeBB2RiHXQKufhxd9ZiblQ9li3yL4B1IPm3I 7gPn1epsJnmA3aPP9HYbGt9iTCD+m4l2rA69vHbcX+qrOeaABkGo45vqUzhZgZia/YI4 dV4C0k0m3JPwbhnibPBXzhpd/hRKkX4jb2l+XBOVcr9capTAju2c+r2yGeeXa+TkNgyj dngyIp365l7+VkbqtGr6QCtmOWhkZ5/oyykN9mU3jCbiRczOKq+MgsxyOeS+MtFw2ana 5U5g== X-Gm-Message-State: AFuF++k6qHUCj0inlwZynnNKzrliGIS7RQ+6jMznS1O2e+c+MgJ/NQXp odowSKpfLGLSr6lWo1sYw0aIWOGbQE+PKi3L8ih9tkoGK9KKBecO5xfrdca+NgW8dD7/FCIRJ9O 0PcNv X-Gm-Gg: AR+sD139ODCpqBHgDyhFmXlQBbIiI8aP8rL8G2l43Q5c0DJYUs2/hkIkA2CPjANnDKL TdSol4/D2IjWQK/I7oaMuqzRxXWEFcjGrC4ClsAq756KA4YG6NiEKcQHVz5kVGel6E1wUNthNK9 i3PARXDt/hGCQqB13nq5g5Go/kvlbqgWHkmwFgBmzOBx4GVG4/OdMMT5Bo+EC5fEpkOholQOiO9 qawbLrSwvns5FZhgi+AX8a7BDEk/DYxm2z0rDaVxgoxt75HHfA3x4NIwpWt8stnglHsxwGw2Brl gUP9qI4sIfcJnCivFf54aLakvAXxEWZk5qZ/9z7M5IgOKYG+RFhCdhnh6OCsmY8gAdnhv/rvWPf y3hAhiVE+v/sx0O+t2aXDC0Ze8pI32C2CTtvZbC/i/67RyZbgnUzuDmRd8Thw+vxD8ZFLpFvjg1 mSt0o7Nh5bVLXz8gi09lkl6ZmurUmc69+qu+wLrAmZStFA3+X6uqzdEB/kcvu+FCbyUN4= X-Received: by 2002:a17:90b:2687:b0:38f:26c7:165e with SMTP id 98e67ed59e1d1-395c383cae0mr6624780a91.9.1787285066060; Thu, 20 Aug 2026 21:04:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 19/23] target/riscv: Drop v0 argument from gen_helper_ldst_us Date: Thu, 20 Aug 2026 21:04:00 -0700 Message-ID: <20260821040404.268123-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285160935158500 Content-Type: text/plain; charset="utf-8" Since we're also passing env, v0 is always env->vreg. Signed-off-by: Richard Henderson --- target/riscv/helper.h | 44 ++++++++++----------- target/riscv/tcg/vector_helper.c | 34 ++++++++-------- target/riscv/tcg/insn_trans/trans_rvv.c.inc | 25 ++++-------- 3 files changed, 47 insertions(+), 56 deletions(-) diff --git a/target/riscv/helper.h b/target/riscv/helper.h index 4fc2d3a155..8a42a6ce03 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -161,24 +161,24 @@ DEF_HELPER_FLAGS_3(hyp_hsv_d, TCG_CALL_NO_WG, void, e= nv, tl, tl) =20 /* Vector functions */ DEF_HELPER_4(vsetvl, tl, env, tl, tl, tl) -DEF_HELPER_5(vle8_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vle16_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vle32_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vle64_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vle8_v_mask, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vle16_v_mask, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vle32_v_mask, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vle64_v_mask, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vse8_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vse16_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vse32_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vse64_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vse8_v_mask, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vse16_v_mask, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vse32_v_mask, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vse64_v_mask, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vlm_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vsm_v, void, ptr, ptr, tl, env, i32) +DEF_HELPER_4(vle8_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vle16_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vle32_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vle64_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vle8_v_mask, void, ptr, tl, env, i32) +DEF_HELPER_4(vle16_v_mask, void, ptr, tl, env, i32) +DEF_HELPER_4(vle32_v_mask, void, ptr, tl, env, i32) +DEF_HELPER_4(vle64_v_mask, void, ptr, tl, env, i32) +DEF_HELPER_4(vse8_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vse16_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vse32_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vse64_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vse8_v_mask, void, ptr, tl, env, i32) +DEF_HELPER_4(vse16_v_mask, void, ptr, tl, env, i32) +DEF_HELPER_4(vse32_v_mask, void, ptr, tl, env, i32) +DEF_HELPER_4(vse64_v_mask, void, ptr, tl, env, i32) +DEF_HELPER_4(vlm_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vsm_v, void, ptr, tl, env, i32) DEF_HELPER_6(vlse8_v, void, ptr, ptr, tl, tl, env, i32) DEF_HELPER_6(vlse16_v, void, ptr, ptr, tl, tl, env, i32) DEF_HELPER_6(vlse32_v, void, ptr, ptr, tl, tl, env, i32) @@ -219,10 +219,10 @@ DEF_HELPER_6(vsxei64_8_v, void, ptr, ptr, tl, ptr, en= v, i32) DEF_HELPER_6(vsxei64_16_v, void, ptr, ptr, tl, ptr, env, i32) DEF_HELPER_6(vsxei64_32_v, void, ptr, ptr, tl, ptr, env, i32) DEF_HELPER_6(vsxei64_64_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_5(vle8ff_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vle16ff_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vle32ff_v, void, ptr, ptr, tl, env, i32) -DEF_HELPER_5(vle64ff_v, void, ptr, ptr, tl, env, i32) +DEF_HELPER_4(vle8ff_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vle16ff_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vle32ff_v, void, ptr, tl, env, i32) +DEF_HELPER_4(vle64ff_v, void, ptr, tl, env, i32) =20 DEF_HELPER_4(vl1re8_v, void, ptr, tl, env, i32) DEF_HELPER_4(vl1re16_v, void, ptr, tl, env, i32) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index c5b4085f9c..66a5f68de8 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -277,11 +277,12 @@ static void vext_ldst_nf_tlb(CPURISCVState *env, void= *vd, target_ulong addr, * stride: access vector element from strided memory */ static void -vext_ldst_stride(void *vd, void *v0, target_ulong base, target_ulong strid= e, +vext_ldst_stride(void *vd, target_ulong base, target_ulong stride, CPURISCVState *env, uint32_t desc, uint32_t vm, vext_ldst_elem_fn_tlb *ldst_elem, uint32_t log2_esz, uintptr_t ra) { + void *v0 =3D env->vreg; uint32_t nf =3D vext_nf(desc); uint32_t max_elems =3D vext_max_elems(desc, log2_esz); uint32_t esz =3D 1 << log2_esz; @@ -309,7 +310,7 @@ QEMU_FLATTEN void HELPER(NAME)(void *vd, void * v0, tar= get_ulong base, \ uint32_t desc) \ { \ uint32_t vm =3D vext_vm(desc); \ - vext_ldst_stride(vd, v0, base, stride, env, desc, vm, LOAD_FN, \ + vext_ldst_stride(vd, base, stride, env, desc, vm, LOAD_FN, \ ctzl(sizeof(ETYPE)), GETPC()); \ } =20 @@ -324,7 +325,7 @@ QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, targ= et_ulong base, \ uint32_t desc) \ { \ uint32_t vm =3D vext_vm(desc); \ - vext_ldst_stride(vd, v0, base, stride, env, desc, vm, STORE_FN, \ + vext_ldst_stride(vd, base, stride, env, desc, vm, STORE_FN, \ ctzl(sizeof(ETYPE)), GETPC()); \ } =20 @@ -518,14 +519,14 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVSta= te *env, uint32_t desc, */ =20 #define GEN_VEXT_LD_US(NAME, ETYPE, LOAD_FN_TLB, LOAD_FN_HOST) \ -QEMU_FLATTEN void HELPER(NAME##_mask)(void *vd, void *v0, \ - target_ulong base, CPURISCVState *env, uint32_t desc) \ +QEMU_FLATTEN void HELPER(NAME##_mask)(void *vd, target_ulong base, \ + CPURISCVState *env, uint32_t desc) \ { \ uint32_t stride =3D vext_nf(desc) << ctzl(sizeof(ETYPE)); \ - vext_ldst_stride(vd, v0, base, stride, env, desc, false, \ + vext_ldst_stride(vd, base, stride, env, desc, false, \ LOAD_FN_TLB, ctzl(sizeof(ETYPE)), GETPC()); \ } \ -QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, target_ulong base, \ CPURISCVState *env, uint32_t desc) \ { \ vext_ldst_us(vd, base, env, desc, LOAD_FN_TLB, LOAD_FN_HOST, \ @@ -538,14 +539,14 @@ GEN_VEXT_LD_US(vle32_v, int32_t, lde_w_tlb, lde_w_hos= t) GEN_VEXT_LD_US(vle64_v, int64_t, lde_d_tlb, lde_d_host) =20 #define GEN_VEXT_ST_US(NAME, ETYPE, STORE_FN_TLB, STORE_FN_HOST) \ -QEMU_FLATTEN void HELPER(NAME##_mask)(void *vd, void *v0, \ - target_ulong base, CPURISCVState *env, uint32_t desc) \ +QEMU_FLATTEN void HELPER(NAME##_mask)(void *vd, target_ulong base, \ + CPURISCVState *env, uint32_t desc) \ { \ uint32_t stride =3D vext_nf(desc) << ctzl(sizeof(ETYPE)); = \ - vext_ldst_stride(vd, v0, base, stride, env, desc, false, \ + vext_ldst_stride(vd, base, stride, env, desc, false, \ STORE_FN_TLB, ctzl(sizeof(ETYPE)), GETPC()); \ } \ -QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, target_ulong base, \ CPURISCVState *env, uint32_t desc) \ { \ vext_ldst_us(vd, base, env, desc, STORE_FN_TLB, STORE_FN_HOST, \ @@ -560,7 +561,7 @@ GEN_VEXT_ST_US(vse64_v, int64_t, ste_d_tlb, ste_d_host) /* * unit stride mask load and store, EEW =3D 1 */ -QEMU_FLATTEN void HELPER(vlm_v)(void *vd, void *v0, target_ulong base, +QEMU_FLATTEN void HELPER(vlm_v)(void *vd, target_ulong base, CPURISCVState *env, uint32_t desc) { /* evl =3D ceil(vl/8) */ @@ -569,7 +570,7 @@ QEMU_FLATTEN void HELPER(vlm_v)(void *vd, void *v0, tar= get_ulong base, 0, evl, GETPC(), true); } =20 -QEMU_FLATTEN void HELPER(vsm_v)(void *vd, void *v0, target_ulong base, +QEMU_FLATTEN void HELPER(vsm_v)(void *vd, target_ulong base, CPURISCVState *env, uint32_t desc) { /* evl =3D ceil(vl/8) */ @@ -685,10 +686,11 @@ GEN_VEXT_ST_INDEX(vsxei64_64_v, int64_t, idx_d, ste_d= _tlb) * unit-stride fault-only-fisrt load instructions */ static void -vext_ldff(void *vd, void *v0, target_ulong base, CPURISCVState *env, +vext_ldff(void *vd, target_ulong base, CPURISCVState *env, uint32_t desc, vext_ldst_elem_fn_tlb *ldst_tlb, vext_ldst_elem_fn_host *ldst_host, uint32_t log2_esz, uintptr_t = ra) { + void *v0 =3D env->vreg; uint32_t i =3D env->vstart, vl =3D env->vl; uint32_t nf =3D vext_nf(desc); uint32_t vm =3D vext_vm(desc); @@ -916,10 +918,10 @@ vext_ldff(void *vd, void *v0, target_ulong base, CPUR= ISCVState *env, } =20 #define GEN_VEXT_LDFF(NAME, ETYPE, LOAD_FN_TLB, LOAD_FN_HOST) \ -QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, target_ulong base, \ CPURISCVState *env, uint32_t desc) \ { \ - vext_ldff(vd, v0, base, env, desc, LOAD_FN_TLB, \ + vext_ldff(vd, base, env, desc, LOAD_FN_TLB, \ LOAD_FN_HOST, ctzl(sizeof(ETYPE)), GETPC()); \ } =20 diff --git a/target/riscv/tcg/insn_trans/trans_rvv.c.inc b/target/riscv/tcg= /insn_trans/trans_rvv.c.inc index 3916236762..3d32564660 100644 --- a/target/riscv/tcg/insn_trans/trans_rvv.c.inc +++ b/target/riscv/tcg/insn_trans/trans_rvv.c.inc @@ -690,8 +690,7 @@ static uint8_t vext_get_emul(DisasContext *s, uint8_t e= ew) /* *** unit stride load and store */ -typedef void gen_helper_ldst_us(TCGv_ptr, TCGv_ptr, TCGv, - TCGv_env, TCGv_i32); +typedef void gen_helper_ldst_us(TCGv_ptr, TCGv, TCGv_env, TCGv_i32); =20 static uint32_t vdata_add_memopidx(DisasContext *s, uint32_t data) { @@ -705,14 +704,10 @@ static bool ldst_us_trans(uint32_t vd, uint32_t rs1, = uint32_t data, gen_helper_ldst_us *fn, DisasContext *s, bool is_store) { - TCGv_ptr dest, mask; - TCGv base; + TCGv_ptr dest =3D tcg_temp_new_ptr(); + TCGv base =3D get_gpr(s, rs1, EXT_NONE); TCGv_i32 desc; =20 - dest =3D tcg_temp_new_ptr(); - mask =3D tcg_temp_new_ptr(); - base =3D get_gpr(s, rs1, EXT_NONE); - /* * As simd_desc supports at most 2048 bytes, and in this implementatio= n, * the max vector group length is 4096 bytes. So split it into two par= ts. @@ -725,7 +720,6 @@ static bool ldst_us_trans(uint32_t vd, uint32_t rs1, ui= nt32_t data, s->cfg_ptr->vlenb, data)); =20 tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd)); - tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0)); =20 /* * According to the specification @@ -745,7 +739,7 @@ static bool ldst_us_trans(uint32_t vd, uint32_t rs1, ui= nt32_t data, =20 mark_vs_dirty(s); =20 - fn(dest, mask, base, tcg_env, desc); + fn(dest, base, tcg_env, desc); =20 if (!is_store && s->ztso) { tcg_gen_mb(TCG_MO_ALL | TCG_BAR_LDAQ); @@ -1133,22 +1127,17 @@ GEN_VEXT_TRANS(vsxei64_v, MO_64, rnfvm, st_index_op= , st_index_check) static bool ldff_trans(uint32_t vd, uint32_t rs1, uint32_t data, gen_helper_ldst_us *fn, DisasContext *s) { - TCGv_ptr dest, mask; - TCGv base; + TCGv_ptr dest =3D tcg_temp_new_ptr(); + TCGv base =3D get_gpr(s, rs1, EXT_NONE); TCGv_i32 desc; =20 - dest =3D tcg_temp_new_ptr(); - mask =3D tcg_temp_new_ptr(); - base =3D get_gpr(s, rs1, EXT_NONE); - data =3D vdata_add_memopidx(s, data); desc =3D tcg_constant_i32(simd_desc(s->cfg_ptr->vlenb, s->cfg_ptr->vlenb, data)); =20 tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd)); - tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0)); =20 - fn(dest, mask, base, tcg_env, desc); + fn(dest, base, tcg_env, desc); =20 finalize_rvv_inst(s); =20 --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285196; cv=none; d=zohomail.com; s=zohoarc; b=VOlkAziGSvMKjZ6wZp+dYEm9YVzp7W0NAyV8fI8e+RFHlA85QCJzE+USzX7xISWaxEOQvzzP+XbnWLBJs0tt2EAHnjPfvQXgTA6SS2B7TR1RBzKLymkLgy/W3dt3a93FlevA6I6VRrNUVPLFWJcpcO3SumDRU6U88dad60p9/oc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285196; 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=2WObrjAhqD3Znpz9vQQq9dMaoW/8w0bJAnFWTLVI39A=; b=At2Kkz/ja97U3efpYnhdCDwurr1wjnlQoQY/88ZH9HB07NNJTv2B86Te49Bce3nqSkPkOPXP1xvANYzz/oV8UkOUAkvkRTuK4/xoJLPro9Edd4k95SefgbDLFr5YSJ+hVnCyKwU1hyzoAt92qKruNa0MAWv09MkXMod3OXkR4WE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285196647867.8317356283791; Thu, 20 Aug 2026 21:06:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGUy-0006RP-SK; Fri, 21 Aug 2026 00:04:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUc-00069G-34 for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:35 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUX-0003Fx-EC for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:33 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-38f0f132f56so1179376a91.0 for ; Thu, 20 Aug 2026 21:04:27 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285067; x=1787889867; 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:content-type; bh=2WObrjAhqD3Znpz9vQQq9dMaoW/8w0bJAnFWTLVI39A=; b=ygT+0jZrK8QgD6MxF6OSEt1I5+UxzbqDqptoGQa+7WcBPVNAesgsHo11JZ0PPeEm9V QMRgdDZWEctYHYA88ejFFwm5Gm8caIAO//Z8owxVY4G6mbYTyHBHBW/aYaBB8n+VMzJS MAvYMffpXWC1tmvlowS8PZXrZN6t9N47Y3S6Ie++XCJqd7hidq7yWLYsfj9BpB+UwOVB rkzwmAvK9QQ0rMh8nVjkkPaErJ9eGJmevSrE9br5RMqnkaq6pS4BJ0VqhnNkECA6rVEz g534dIKmd1QbKFrhJf3/hACMkoWDWnbMl+bSh+LMv5nI8g10EAN8yhb+bvf/x/VXwbmt k3ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285067; x=1787889867; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=2WObrjAhqD3Znpz9vQQq9dMaoW/8w0bJAnFWTLVI39A=; b=b6O1p0AB0CrvJ/dpW5J3UzWB0a6q0V3nclIIZvN9wlYSrcXhz3IyKI1hqc61XGiTFY QQLntbkUBQI3mb2TFQOVYpIxL98VSlM9kTW8d/P+4fL2xnlByaWSiZKTCbHJ6sZLse8k BfQkIOokG2uKlTTcBqvIwXpBg4IbVsD2o9KH54W9A/bJDsy9qJj3ork2+KeqcN1bJjgx k7ZoPFe/IdneDzr2lcMmAOXcDFIimnbCR6FoccIqJCerT7CVn8SGtlQIdQpIzEjz8UvN /7w2ChAZc6Tn6pDebsGExFO/UL2R3FMmTk5qiPRFUKFGVWcPJTORuUnYbNgpZjSESSR1 OJ5A== X-Gm-Message-State: AFuF++m5S7g1vcrTmky9cmSCAi9nWX6XQpVanLmKPe95MpfBqDi1Q0v4 r+cH0z3mvXhU2VqqAUdhh37t+UT2RfHvLM+g/NAiDIJOBpopzmZhlU8UbrSztRJ4lCAshKzEQ9+ LYHCP X-Gm-Gg: AR+sD11uJaOTFo42OSZV0VLbvDjhCGhdy522jMRl0j4SyBUNkGsrBHw7wYsUfxy70Gr SclePz2Zljqlfvbcvebu0HYlUB9xBKzI5oiWICMh2svMD6Ge2BekafEg2dLN/pXt1MzdR2u0Qb9 DK7LAzPJToXgs3XVs4ZplYvIFG2G7Yz0HxqqhbaDZ/ECX2vj/AQZxnDFCRPP9RQxf3ifRjt9FBh Z0ixAwObyZtNcwSOUYuWnawy8/8ks5HD/kohLTc2nuA06IWOncpy5C9vkB4LO/Sp3PYaksIdq3b GXFzZe5XM615XRhL8u2atSc/JaOipShxLSkfXz1BIAjMD4w7SZOlNFTCD73qBB8ZzNLv4TTS7Jd dQRCuUUvSSJJZh+ph5qFWj9xJTQez5X5iHJukOc7tB4jDMkmB1w7jRaGLQXUyiLYlm2v2PAs5PU XKG8oRJtay+G5dZ7usgruMXdkQp/CKcf2mmXdx0oj1vAr22LdG1xtBBEdSJGj5mPrtj1k= X-Received: by 2002:a17:90b:39a3:b0:384:927f:3db9 with SMTP id 98e67ed59e1d1-395c4bdddaemr2389261a91.1.1787285066884; Thu, 20 Aug 2026 21:04:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 20/23] target/riscv: Drop v0 argument from gen_helper_ldst_stride Date: Thu, 20 Aug 2026 21:04:01 -0700 Message-ID: <20260821040404.268123-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285197123158500 Content-Type: text/plain; charset="utf-8" Since we're also passing env, v0 is always env->vreg. Signed-off-by: Richard Henderson --- target/riscv/helper.h | 16 ++++++++-------- target/riscv/tcg/vector_helper.c | 4 ++-- target/riscv/tcg/insn_trans/trans_rvv.c.inc | 16 +++++----------- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/target/riscv/helper.h b/target/riscv/helper.h index 8a42a6ce03..3ef352898b 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -179,14 +179,14 @@ DEF_HELPER_4(vse32_v_mask, void, ptr, tl, env, i32) DEF_HELPER_4(vse64_v_mask, void, ptr, tl, env, i32) DEF_HELPER_4(vlm_v, void, ptr, tl, env, i32) DEF_HELPER_4(vsm_v, void, ptr, tl, env, i32) -DEF_HELPER_6(vlse8_v, void, ptr, ptr, tl, tl, env, i32) -DEF_HELPER_6(vlse16_v, void, ptr, ptr, tl, tl, env, i32) -DEF_HELPER_6(vlse32_v, void, ptr, ptr, tl, tl, env, i32) -DEF_HELPER_6(vlse64_v, void, ptr, ptr, tl, tl, env, i32) -DEF_HELPER_6(vsse8_v, void, ptr, ptr, tl, tl, env, i32) -DEF_HELPER_6(vsse16_v, void, ptr, ptr, tl, tl, env, i32) -DEF_HELPER_6(vsse32_v, void, ptr, ptr, tl, tl, env, i32) -DEF_HELPER_6(vsse64_v, void, ptr, ptr, tl, tl, env, i32) +DEF_HELPER_5(vlse8_v, void, ptr, tl, tl, env, i32) +DEF_HELPER_5(vlse16_v, void, ptr, tl, tl, env, i32) +DEF_HELPER_5(vlse32_v, void, ptr, tl, tl, env, i32) +DEF_HELPER_5(vlse64_v, void, ptr, tl, tl, env, i32) +DEF_HELPER_5(vsse8_v, void, ptr, tl, tl, env, i32) +DEF_HELPER_5(vsse16_v, void, ptr, tl, tl, env, i32) +DEF_HELPER_5(vsse32_v, void, ptr, tl, tl, env, i32) +DEF_HELPER_5(vsse64_v, void, ptr, tl, tl, env, i32) DEF_HELPER_6(vlxei8_8_v, void, ptr, ptr, tl, ptr, env, i32) DEF_HELPER_6(vlxei8_16_v, void, ptr, ptr, tl, ptr, env, i32) DEF_HELPER_6(vlxei8_32_v, void, ptr, ptr, tl, ptr, env, i32) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 66a5f68de8..15c1281538 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -305,7 +305,7 @@ vext_ldst_stride(void *vd, target_ulong base, target_ul= ong stride, } =20 #define GEN_VEXT_LD_STRIDE(NAME, ETYPE, LOAD_FN) \ -QEMU_FLATTEN void HELPER(NAME)(void *vd, void * v0, target_ulong base, \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, target_ulong base, \ target_ulong stride, CPURISCVState *env, \ uint32_t desc) \ { \ @@ -320,7 +320,7 @@ GEN_VEXT_LD_STRIDE(vlse32_v, int32_t, lde_w_tlb) GEN_VEXT_LD_STRIDE(vlse64_v, int64_t, lde_d_tlb) =20 #define GEN_VEXT_ST_STRIDE(NAME, ETYPE, STORE_FN) \ -QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, target_ulong base, \ target_ulong stride, CPURISCVState *env, \ uint32_t desc) \ { \ diff --git a/target/riscv/tcg/insn_trans/trans_rvv.c.inc b/target/riscv/tcg= /insn_trans/trans_rvv.c.inc index 3d32564660..5e352dbf41 100644 --- a/target/riscv/tcg/insn_trans/trans_rvv.c.inc +++ b/target/riscv/tcg/insn_trans/trans_rvv.c.inc @@ -878,32 +878,26 @@ GEN_VEXT_TRANS(vsm_v, MO_8, vsm_v, st_us_mask_op, st_= us_mask_check) /* *** stride load and store */ -typedef void gen_helper_ldst_stride(TCGv_ptr, TCGv_ptr, TCGv, - TCGv, TCGv_env, TCGv_i32); +typedef void gen_helper_ldst_stride(TCGv_ptr, TCGv, TCGv, TCGv_env, TCGv_i= 32); =20 static bool ldst_stride_trans(uint32_t vd, uint32_t rs1, uint32_t rs2, uint32_t data, gen_helper_ldst_stride *fn, DisasContext *s) { - TCGv_ptr dest, mask; - TCGv base, stride; + TCGv_ptr dest =3D tcg_temp_new_ptr(); + TCGv base =3D get_gpr(s, rs1, EXT_NONE); + TCGv stride =3D get_gpr(s, rs2, EXT_NONE); TCGv_i32 desc; =20 - dest =3D tcg_temp_new_ptr(); - mask =3D tcg_temp_new_ptr(); - base =3D get_gpr(s, rs1, EXT_NONE); - stride =3D get_gpr(s, rs2, EXT_NONE); - data =3D vdata_add_memopidx(s, data); desc =3D tcg_constant_i32(simd_desc(s->cfg_ptr->vlenb, s->cfg_ptr->vlenb, data)); =20 tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd)); - tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0)); =20 mark_vs_dirty(s); =20 - fn(dest, mask, base, stride, tcg_env, desc); + fn(dest, base, stride, tcg_env, desc); =20 finalize_rvv_inst(s); return true; --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285340; cv=none; d=zohomail.com; s=zohoarc; b=CCNIZH28vHqYuCXH1Je+bi4mdBe7fOyy7U7hNTRmYQj66m9W34mVI2U8JKTtE6a2mb2n9LZbzYCyKu8eAMN10SmpROfU4dvTHSIo5HyvpvZ8zuz8js00F/FAdJmM8CYldL7nGrPsgmwdDXdsR593EFVGOnZumYRM7ge8uhJ3SZQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285340; 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=7DhfVuYLFdEoMKrZZuk/ONJCjnZ312P16LOTlvJKbjU=; b=PMRPGK0JohBz8N1RvhTmOkSmZKWxn4NDX5CfhEwepTvC2iqHyw2WcYb6dwkwoVeow60c4lYP2qKDhogX4nEQ115HG40SmcY6fYcUoSTFBkKP2VP1l85acZ/XxkCqsQkAcfyzGCl+4WDYiMYWUvCmbv4UiQ34kFRH42OxFrjgh4A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285340754272.2377331319086; Thu, 20 Aug 2026 21:09:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGV1-0006Sl-6b; Fri, 21 Aug 2026 00:04:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUc-00069F-2v for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:35 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUX-0003GO-Ei for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:33 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-3900e39d935so503030a91.0 for ; Thu, 20 Aug 2026 21:04:28 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285068; x=1787889868; 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:content-type; bh=7DhfVuYLFdEoMKrZZuk/ONJCjnZ312P16LOTlvJKbjU=; b=L2ciFoAHp442rdiFdzfDmjVbiBK3QbQeXmw5xWXkOQ7DXN2bEeU+9sieByBl6pYANf d5VAJ2yJVo6gBGyngQQ81jdbtU6Mu/IGs4/tfnemHjKo/XSC4OMCLLIT3ZNJqoGLVRr7 FjPfUW3kOegGz5ilMB9fBlzlQ611pfm56qGIr9ahtPY66czYq64hZoVHBJ5TwLwmsZhe 0gfk+QG5OoniWTOtgURG5fRpXdL1XJNEOIMqt4DPi059K8C2F8gkJqc+q5HyDn9AnyuP CX9X59Lr1hMc27eYf+mlQkv8uFf92yCIHmER274EgcBxQ6ML3+lsjWqFgFhrmJZ+XeWx OoGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285068; x=1787889868; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=7DhfVuYLFdEoMKrZZuk/ONJCjnZ312P16LOTlvJKbjU=; b=mGVsjh79meJy2DQ1DD02aZsM5imljhHlzGqG78Nrp2PIeiPDL/smQL08nQmbxBksGX 75kJQAKfClVUxCqcnhgeBPOmEiKYi/GxhJU6H3Rs1NIglhHs4XnF4jAHWsaDGfhZ4hmF K5d7ZEXtXEivxsSLnAMPtTKJRjN4cLPR3v2qLHrBlsOTYx4dJW7vheciddZ3SNi/yIdB cpLnBgo9ZZiBAen588E4G4bBu4sWaauIQsvqzKAabAOpTlCWq5lTQZsGMbu4HY/pCRRL Pxllw0JGy8NG8X936lQTMObQQlDObWZevgZRDefGy1Gh2ZTaNyuFCo+wOsdx0YwlVjN4 lMyg== X-Gm-Message-State: AFuF++kevyqr5cx3Qh0DGkfuLr+RXbV6fKY46NDz9/VEwq2DrakkV/hI zdkMRqlQhFI+XKCDWO9rbGCft8W8ndhg/uNvW5Q1D9GdeOgItyYIxV6S1gVtjiHZWkXQvurzSZn THa8N X-Gm-Gg: AR+sD11ZwfK/ESMWF7RBumt0HfhR5+YBmT5f+PMMRSVjUV4TtUJC77wmP+K1mAuPm4U MNrruBvFvEprSXBpy11Je465nRc4ROhL9Lp9mtnFDImRguyexBsxXxiWBDms5Rih6oIz9hNhS/q uTWEEnYZCc+H6az94GWevv3n/BAeoc1opdHL1HgYJVf0DgFzvNsJ13PxXAdycb30fuSS8VCuW9X TTphn1bTeBBwFIy31WR+ksFJxusAVcQVdQVFqi5DxPNt8ttgOES1Zt6Xmdpkut8NCJNMToH5PkR ZSXYWyjYT80DTYCFB88wExeGZJkOG/eo7P33KznYe+wEF96nPGRQLXeJ2DmJnU4nxxx06lkbJDJ rbwRdDomklTShVbjqWrVjOl35pwm2bTnnkvhBQoQTA5O5I2n/RKXppLqzMclu/HVBdS50eFRPcV Fd2CFnufwPNo5491Ci8z4L40YvwE/h477Cbd6mL2fBuFR8LatTsJ1YeJSHuZ1ZMJObbWFF X-Received: by 2002:a17:90b:5907:b0:36a:5d1f:7b6 with SMTP id 98e67ed59e1d1-395c33ed38amr6655108a91.2.1787285067592; Thu, 20 Aug 2026 21:04:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org Subject: [PATCH v2 21/23] target/riscv: Drop v0 argument from gen_helper_ldst_index Date: Thu, 20 Aug 2026 21:04:02 -0700 Message-ID: <20260821040404.268123-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285341594158500 Content-Type: text/plain; charset="utf-8" Since we're also passing env, v0 is always env->vreg. Signed-off-by: Richard Henderson --- target/riscv/helper.h | 64 ++++++++++----------- target/riscv/tcg/vector_helper.c | 15 ++--- target/riscv/tcg/insn_trans/trans_rvv.c.inc | 17 ++---- 3 files changed, 46 insertions(+), 50 deletions(-) diff --git a/target/riscv/helper.h b/target/riscv/helper.h index 3ef352898b..bf49a793d5 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -187,38 +187,38 @@ DEF_HELPER_5(vsse8_v, void, ptr, tl, tl, env, i32) DEF_HELPER_5(vsse16_v, void, ptr, tl, tl, env, i32) DEF_HELPER_5(vsse32_v, void, ptr, tl, tl, env, i32) DEF_HELPER_5(vsse64_v, void, ptr, tl, tl, env, i32) -DEF_HELPER_6(vlxei8_8_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei8_16_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei8_32_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei8_64_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei16_8_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei16_16_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei16_32_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei16_64_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei32_8_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei32_16_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei32_32_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei32_64_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei64_8_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei64_16_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei64_32_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vlxei64_64_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei8_8_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei8_16_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei8_32_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei8_64_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei16_8_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei16_16_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei16_32_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei16_64_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei32_8_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei32_16_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei32_32_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei32_64_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei64_8_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei64_16_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei64_32_v, void, ptr, ptr, tl, ptr, env, i32) -DEF_HELPER_6(vsxei64_64_v, void, ptr, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei8_8_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei8_16_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei8_32_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei8_64_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei16_8_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei16_16_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei16_32_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei16_64_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei32_8_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei32_16_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei32_32_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei32_64_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei64_8_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei64_16_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei64_32_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vlxei64_64_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei8_8_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei8_16_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei8_32_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei8_64_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei16_8_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei16_16_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei16_32_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei16_64_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei32_8_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei32_16_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei32_32_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei32_64_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei64_8_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei64_16_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei64_32_v, void, ptr, tl, ptr, env, i32) +DEF_HELPER_5(vsxei64_64_v, void, ptr, tl, ptr, env, i32) DEF_HELPER_4(vle8ff_v, void, ptr, tl, env, i32) DEF_HELPER_4(vle16ff_v, void, ptr, tl, env, i32) DEF_HELPER_4(vle32ff_v, void, ptr, tl, env, i32) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 15c1281538..d46fd5c9c4 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -598,12 +598,13 @@ GEN_VEXT_GET_INDEX_ADDR(idx_w, uint32_t, H4) GEN_VEXT_GET_INDEX_ADDR(idx_d, uint64_t, H8) =20 static void -vext_ldst_index(void *vd, void *v0, target_ulong base, +vext_ldst_index(void *vd, target_ulong base, void *vs2, CPURISCVState *env, uint32_t desc, vext_get_index_addr get_index_addr, vext_ldst_elem_fn_tlb *ldst_elem, uint32_t log2_esz, uintptr_t ra) { + void *v0 =3D env->vreg; uint32_t nf =3D vext_nf(desc); uint32_t vm =3D vext_vm(desc); uint32_t max_elems =3D vext_max_elems(desc, log2_esz); @@ -633,10 +634,10 @@ vext_ldst_index(void *vd, void *v0, target_ulong base, } =20 #define GEN_VEXT_LD_INDEX(NAME, ETYPE, INDEX_FN, LOAD_FN) \ -QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ - void *vs2, CPURISCVState *env, uint32_t des= c) \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, target_ulong base, void *vs2, \ + CPURISCVState *env, uint32_t desc) \ { \ - vext_ldst_index(vd, v0, base, vs2, env, desc, INDEX_FN, \ + vext_ldst_index(vd, base, vs2, env, desc, INDEX_FN, \ LOAD_FN, ctzl(sizeof(ETYPE)), GETPC()); \ } =20 @@ -658,10 +659,10 @@ GEN_VEXT_LD_INDEX(vlxei64_32_v, int32_t, idx_d, lde_w= _tlb) GEN_VEXT_LD_INDEX(vlxei64_64_v, int64_t, idx_d, lde_d_tlb) =20 #define GEN_VEXT_ST_INDEX(NAME, ETYPE, INDEX_FN, STORE_FN) \ -QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ - void *vs2, CPURISCVState *env, uint32_t des= c) \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, target_ulong base, void *vs2, \ + CPURISCVState *env, uint32_t desc) \ { \ - vext_ldst_index(vd, v0, base, vs2, env, desc, INDEX_FN, \ + vext_ldst_index(vd, base, vs2, env, desc, INDEX_FN, \ STORE_FN, ctzl(sizeof(ETYPE)), GETPC()); \ } =20 diff --git a/target/riscv/tcg/insn_trans/trans_rvv.c.inc b/target/riscv/tcg= /insn_trans/trans_rvv.c.inc index 5e352dbf41..4556c644cc 100644 --- a/target/riscv/tcg/insn_trans/trans_rvv.c.inc +++ b/target/riscv/tcg/insn_trans/trans_rvv.c.inc @@ -975,33 +975,28 @@ GEN_VEXT_TRANS(vsse64_v, MO_64, rnfvm, st_stride_op, = st_stride_check) /* *** index load and store */ -typedef void gen_helper_ldst_index(TCGv_ptr, TCGv_ptr, TCGv, - TCGv_ptr, TCGv_env, TCGv_i32); +typedef void gen_helper_ldst_index(TCGv_ptr, TCGv, TCGv_ptr, + TCGv_env, TCGv_i32); =20 static bool ldst_index_trans(uint32_t vd, uint32_t rs1, uint32_t vs2, uint32_t data, gen_helper_ldst_index *fn, DisasContext *s) { - TCGv_ptr dest, mask, index; - TCGv base; + TCGv_ptr dest =3D tcg_temp_new_ptr(); + TCGv_ptr index =3D tcg_temp_new_ptr(); + TCGv base =3D get_gpr(s, rs1, EXT_NONE); TCGv_i32 desc; =20 - dest =3D tcg_temp_new_ptr(); - mask =3D tcg_temp_new_ptr(); - index =3D tcg_temp_new_ptr(); - base =3D get_gpr(s, rs1, EXT_NONE); - data =3D vdata_add_memopidx(s, data); desc =3D tcg_constant_i32(simd_desc(s->cfg_ptr->vlenb, s->cfg_ptr->vlenb, data)); =20 tcg_gen_addi_ptr(dest, tcg_env, vreg_ofs(s, vd)); tcg_gen_addi_ptr(index, tcg_env, vreg_ofs(s, vs2)); - tcg_gen_addi_ptr(mask, tcg_env, vreg_ofs(s, 0)); =20 mark_vs_dirty(s); =20 - fn(dest, mask, base, index, tcg_env, desc); + fn(dest, base, index, tcg_env, desc); =20 finalize_rvv_inst(s); return true; --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285318; cv=none; d=zohomail.com; s=zohoarc; b=m8n1FnwuPP1uML7gBlfQnD/9OdBv1MgLy9QMY+DFF6d4FrV3jb0dNEKoIHQVDczq4NyIvLgUHNXLYRYw0oUktYjhEoJbGoYkfSUm4+KcQFzuRKCZWEFqSS8hGmNM+aj6l9GrfjT3P2dj3t3HYQ230++qHEE2SCtKbYhMpT8zCEU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285318; 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=hB/TBe/tgCga7z7P0ES69Q94cYLYvjn4re5w156s5Ek=; b=VtmfxU3wpvGYG00QKBXOsnBW2BjYKFK6kVWTuCHJd5dcLIwPFvVcF5/U37i+KdyafHbp7mNsCnaDVHO8TeN3nQfSTVyjAVO/IAKOXvkdyAQXZ3JIKQD/x2cW6glpYDm5lOyC+PbBfzjXWihYtburfrxwHiPepHBVWmXlo2UYohM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285318304695.4863978044501; Thu, 20 Aug 2026 21:08:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGV1-0006TK-OM; Fri, 21 Aug 2026 00:04:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUc-00069Z-Ne for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:36 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUZ-0003Gb-Dh for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:34 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-3856d6fbcb3so434424a91.2 for ; Thu, 20 Aug 2026 21:04:29 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285069; x=1787889869; 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:content-type; bh=hB/TBe/tgCga7z7P0ES69Q94cYLYvjn4re5w156s5Ek=; b=ek1B8wZkF3/Y+Kg5jhSy/WN+bC9LpzaTveQ5ffiz0wYnyPixl1lzHt+e0yr+YGIVcQ NrWCv8133UgCpT3B9HYWD2lxPrPbLdO/vFIrPDuBnGZ+/3bU5KSiN4k1I2/LTB1a1OKU pHU8O5/sUx+962bcpMUG2x5UJEBd4fAssmnrVG4rq3Jj2/l1UGj604XCFWEUNlAFzRg5 WvNfYC0RkgMjTZoYTi2Cm8Hw+XM3qW85HLmBHqGmvtwsGgWHfwancviNaIEAeXQ+xSMl jCgPFLEa6G7w9yaOK5HSkcRbYDdHSunpMQo2D7dTs7+/E/sDtyKUAOUEnQN4pQNPXfZn 5qyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285069; x=1787889869; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=hB/TBe/tgCga7z7P0ES69Q94cYLYvjn4re5w156s5Ek=; b=UScjtX3SlxzcU72qQEBGufeQXfJ579im20mwVgfszSrquV8M49Oi8/5Vd4RyUcR4YO 44rKPjD2TxcEe6/MPcCoI2wkgC64YwsYW1zHtVN+OFCVIrlkDPcr/dyDZNjunaskQKr6 C9ChGzhtG8Dyc/f6lnFNx6PIpYfs7uIcDcbgY9aZHUJVqIjHceS9onVi7ZgBUQfoRPZp HSY1u+/jSf4hzzYn/+egz6eFa3XohCgm50rJ2d2BQ+Iv8Kb0axdT9VcE8KJ2tgx3MWv9 CqPqS1prCGLcY4BS7LW/SY9SE+KJ/jEFKn7G92cRob8DNq1jdHrG6QyMkQZQqvS3SS5N ARRg== X-Gm-Message-State: AFuF++lD3sF/KABbJLuTBcC6tF+VKtbYk/7mYijMaxEQ+ScD42c78n1i TEp8IW1VtUXOUHkiVq8gfJBsYCZD3t9yWlA/7QCjaUEShRi7d1YquVLyxlXUNYxkWxKr/8fCLN2 GEPC6 X-Gm-Gg: AR+sD12x3z6UxnmjuKaPHVQvptaK+2teAK04yfKOCtmUIB0SAl7nuJproVmVMEGTQ1h ejP+SAe/rDPBd7d+B1ckyjeIDyQyFQKBhTjAjAbPX+ZD8xQKUStirq55pksgkg62eOgx3XYKJxv ZZQbAjfuIq3GHsvxC/VLF/jMpOGwV/MXKYPHDBkqk3jm2Y2tTVoZcs7Fl/ffp4BNbOfzOx9O7fc fFUGKL1p5NNzX04CPc9dV/srPsfoGN+OnyflQa1SSmbzuDBKubf6D67hRcPb2QHqIuaog3RvGQq xeZARQAy1Kkuq/J/k2/dPZ8gq698pJlPqEdKBud7vRM0v1z3pMUHZWEF0oX1un54LRXjmqCP7RA StRKNlMZ3HzQtehp3udax6NrS7aIHUGhOK+p+MrB+Ng75WCvazCCpz60hE0jXHFJ71Jk0lqlp7N nNPISp6WVzB4NEixTYWBAO/Ud1CRdrG9wO2L/nOxtcL9K9dko+MxcLvLtBn8DpJJpAX6o= X-Received: by 2002:a17:90a:e7c3:b0:38f:efed:5448 with SMTP id 98e67ed59e1d1-395c371d53amr5567107a91.8.1787285068548; Thu, 20 Aug 2026 21:04:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, Joel Stanley Subject: [PATCH v2 22/23] tests/tcg/riscv64: Vector load test Date: Thu, 20 Aug 2026 21:04:03 -0700 Message-ID: <20260821040404.268123-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285319545158500 Content-Type: text/plain; charset="utf-8" From: Joel Stanley A userspace program to perform vector loads and stores that cross page boundaries, and check the result. Signed-off-by: Joel Stanley Signed-off-by: Richard Henderson Message-ID: <20260820130223.2762-2-joel@jms.id.au> --- tests/tcg/riscv64/Makefile.target | 13 +++ tests/tcg/riscv64/test-rvv-ldst.S | 131 ++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 tests/tcg/riscv64/test-rvv-ldst.S diff --git a/tests/tcg/riscv64/Makefile.target b/tests/tcg/riscv64/Makefile= .target index 4da5b9a3b3..68a5ec5255 100644 --- a/tests/tcg/riscv64/Makefile.target +++ b/tests/tcg/riscv64/Makefile.target @@ -13,6 +13,19 @@ run-test-noc: QEMU_OPTS +=3D -cpu rv64,c=3Dfalse TESTS +=3D test-aes run-test-aes: QEMU_OPTS +=3D -cpu rv64,zk=3Don =20 +# Vector load test +TESTS +=3D test-rvv-ldst +test-rvv-ldst: CFLAGS +=3D -march=3Drv64gcv +test-rvv-ldst: LDFLAGS =3D -nostdlib -static +run-test-rvv-ldst: QEMU_OPTS +=3D -cpu max + +# Re-run the vector tests at each supported VLEN +TEST_RVV_VLENS =3D 128 256 512 1024 +EXTRA_RUNS +=3D $(patsubst %,run-test-rvv-ldst-vlen%,$(TEST_RVV_VLENS)) +run-test-rvv-ldst-vlen%: test-rvv-ldst + $(call run-test, $@, env QEMU=3D$(QEMU) $(QEMU) $(QEMU_OPTS) -cpu max$(CO= MMA)vlen=3D$* $<, \ + test-rvv-ldst with vlen=3D$*) + # Test for fcvtmod TESTS +=3D test-fcvtmod test-fcvtmod: CFLAGS +=3D -march=3Drv64imafdc diff --git a/tests/tcg/riscv64/test-rvv-ldst.S b/tests/tcg/riscv64/test-rvv= -ldst.S new file mode 100644 index 0000000000..939b3f038b --- /dev/null +++ b/tests/tcg/riscv64/test-rvv-ldst.S @@ -0,0 +1,131 @@ +/* + * RISC-V vector load/store page crossing test + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + + .section .rodata + // Page aligned so the within-page cases never cross a boundary + .set MAX_PAGE_SIZE, 65536 + .balign MAX_PAGE_SIZE +src_data: + .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 + .byte 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F + .set NUM_BYTES, . - src_data + + .balign MAX_PAGE_SIZE +pageA_start: + // Fill the page, stopping 8 bytes short of the boundary + .fill MAX_PAGE_SIZE - 8, 1, 0xfa +src_cross_data: + .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27 +pageB_start: + .byte 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F + .set NUM_CROSS_BYTES, . - src_cross_data + + .section .bss + .balign MAX_PAGE_SIZE +dst_data: + .space 16 + + .balign MAX_PAGE_SIZE + .space (MAX_PAGE_SIZE - 8) +dst_cross_data: + .space 16 + +.option norelax +.option norvc + + .text + .globl _start +_start: + // Case 1: Load/store within a page. t3 is the exit code on failure + li t3, 1 + la a0, src_data + li a1, NUM_BYTES + + // SEW=3D8, LMUL=3D1 + vsetvli t0, a1, e8, m1, ta, ma + + // Check the load will cover 16 bytes + bne t0, a1, fail + + // perform load + vle8.v v1, (a0) + + // Store vector content in memory + la a2, dst_data + vse8.v v1, (a2) + + // Compare first half + ld t1, 0(a0) + ld t2, 0(a2) + bne t1, t2, fail + + // Compare second half + ld t1, 8(a0) + ld t2, 8(a2) + bne t1, t2, fail + + // Case 2: Load straddles a page boundary + li t3, 2 + la a0, src_cross_data + li a1, NUM_CROSS_BYTES + + // SEW=3D8, LMUL=3D1 + vsetvli t0, a1, e8, m1, ta, ma + bne t0, a1, fail + + // perform load + vle8.v v1, (a0) + + // Store vector content in memory + la a2, dst_data + vse8.v v1, (a2) + + // Compare first half + ld t1, 0(a0) + ld t2, 0(a2) + bne t1, t2, fail + + // Compare second half + ld t1, 8(a0) + ld t2, 8(a2) + bne t1, t2, fail + + // Case 3: Store straddles a page boundary + li t3, 3 + la a0, src_data + li a1, NUM_BYTES + + // SEW=3D8, LMUL=3D1 + vsetvli t0, a1, e8, m1, ta, ma + bne t0, a1, fail + + // perform load + vle8.v v1, (a0) + + // Store vector content in memory + la a2, dst_cross_data + vse8.v v1, (a2) + + // Compare first half + ld t1, 0(a0) + ld t2, 0(a2) + bne t1, t2, fail + + // Compare second half + ld t1, 8(a0) + ld t2, 8(a2) + bne t1, t2, fail + +pass: + li a0, 0 + j exit + +fail: + mv a0, t3 + +exit: + li a7, 93 // sys_exit + ecall --=20 2.43.0 From nobody Fri Aug 21 21:30:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787285213; cv=none; d=zohomail.com; s=zohoarc; b=esFoBLeO+E1QyoU6tU3TBgN+m+zPjsuvPubRZAEK3rXYGpCTtTa/J9OUNHGYFl9irS7gbsU9pCSpDLP0uuWzwm6aTOyytzb/vmvzXjl/gWJ2RRSX7BGsVeUzp1mI0DMhXbUi7qeRxksMUJDMVQwXhH6ZGTsqiqFbu4JziiUe2LY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787285213; 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=oUcA47zI0T3mx+6NPIXLmuwEUg4/HjoJ4MZuVuTU53U=; b=fm0ehZSssuLz/aVMq/6OhgGFfdYyxvXFi2TDZpNEoW1xpVZmehj6OCu0yjGkEu14yNwkHVoyLJEFP03LtTas4W3nYtm5vlqXBmS9oUwLfkRXv8nEmYTzzw8tUbYidijHqy6WHtYX2I5fTluUF+IJIhw5CTqIgaDvQihRu+OHDUU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787285213603464.86988700033396; Thu, 20 Aug 2026 21:06:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wxGV3-0006U4-Ae; Fri, 21 Aug 2026 00:05:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wxGUc-00069a-Pi for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:36 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wxGUZ-0003Gp-Et for qemu-devel@nongnu.org; Fri, 21 Aug 2026 00:04:34 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-38ec1402b05so402486a91.2 for ; Thu, 20 Aug 2026 21:04:30 -0700 (PDT) Received: from stoup.. ([108.174.179.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-395c4c194d2sm1298383a91.15.2026.08.20.21.04.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 21:04:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787285069; x=1787889869; 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:content-type; bh=oUcA47zI0T3mx+6NPIXLmuwEUg4/HjoJ4MZuVuTU53U=; b=BGgzDcHdCBfsSXDsAQRxcXUaTcdl4Szu7CCO9LyZlTw1QnOIZc4lsIUq0IMazl0m0X K/z/ERf5iCIfxVd2I1OiGXET/9MlX3rh0SRDxW3CqXO2xKFtrTGWRoU63+dpn5m2oCEg T0wBag+9qqQFDMgGLtcF0IWKyFN7TqGxV3QBU1BzlKGZQsBRBe01NRid2xthh1Q6+F4N Co9a+YS55aSW1cnxOZREOwORXm8JIs16Y0PqT6vWl1rx9gJtne7dai+HGk8M0ts4DH6n B5Lj8OfM9qJVJBIljinPU3Li3gb4dk2iVCk9Nasna9AOLFqqZ+ES5l0iVXDRCsLY0rGS q17A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787285069; x=1787889869; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=oUcA47zI0T3mx+6NPIXLmuwEUg4/HjoJ4MZuVuTU53U=; b=lgKxAUZR+MnBsWufRt7bo7Dej3gdxpM3thqH9ysEUGDrJmZMOwh6s6i9EejxNEBmcY fDQNNu4Pye2hO4RVnVqaEUT/sGCaR46tvhI3CPBNouuPy6e7k7lenDlv8S2YgKLedYxA ZQ6EPZvXwRADkSNFac9JUaE7RQqS0ApMjJ0NLy1kcggs4phFjDl4FpCfyjk5dPP64BE+ qgpZhH6hXtVg63oThma1wXZl46L2RGGgZVjxudwJJqBYES0+sH04yorWdNwAVpWsNwon eyk8Saa+0Fnn+fn1RBzANyEl5xJBDSw/cXfxU8aV2lcrOT7i7cUab8iK32Dig2kPNmkw YNFQ== X-Gm-Message-State: AFuF++nvEIZwEtcf4qJn9KridqJvDVjjsv26K0O1KX956b2jYgxB5dQv ZlVIHy84uapMJp9eSrYRQRiq86owv1mDuPc0Qgxqcq64WrgfsDIkJKcMyt+4Z4osn/nDkT1dchH EvrjJ X-Gm-Gg: AR+sD12rGdFbUawPnVsZ7vBhleBWXEsYGPNoQCcE1R6Lm6Frd4f57ChTwzVDBT5a9Ve M1UpEGQX4zJj0CcKoj/H+WdO25H4211DHx8MlpYcWYWqdmlscYAFxJzcX0V5Z3SRWpmoXlf6eeg lyCfrBSBNcLZPKXcpFOSG+0B0pg3qrIZegMNQiHJFcmInJukLGkB5LD01c1ZkmvTGRYByZj6dDC e91LiqNGNrQpp/yt31JbIKmnvs3qATdBx9OZ0E+WXaSZlck5KnutufT4aHm+TQUO01EmHiD009G Zt4UJQ4qBRzGuIDXAqKbhWr8RImcb4jl2tJhm3Wvc8v+vx+PD9u7X2yFptMm7cAEpFNqvK92kPk gIDjpqAyFtSOkmQUzZog/4cXaBvMnAkqJeGzripiTuRXwpoIwVX+nyUEX8kxU9I28n2RYnQ3rqh xwucy1mfPrreOJYJHbMsrXzO16nUcjujBtTZDAst7EiLqGF5OOO4x6nky/Avk+ZfWX5/oE91/XE UM3Ow== X-Received: by 2002:a17:90b:2d91:b0:38e:2e86:ed02 with SMTP id 98e67ed59e1d1-395c39cd288mr6454633a91.14.1787285069386; Thu, 20 Aug 2026 21:04:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, Joel Stanley Subject: [PATCH v2 23/23] tests/tcg/riscv64: Add intrinsics version of test-rvv-ldst Date: Thu, 20 Aug 2026 21:04:04 -0700 Message-ID: <20260821040404.268123-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821040404.268123-1-richard.henderson@linaro.org> References: <20260821040404.268123-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787285215053158500 Content-Type: text/plain; charset="utf-8" From: Joel Stanley A C userspace program to perform vector loads and stores that cross page boundaries, and check the result. Signed-off-by: Joel Stanley Signed-off-by: Richard Henderson Message-ID: <20260820130223.2762-3-joel@jms.id.au> --- tests/tcg/riscv64/test-rvv-ldst-intrinsics.c | 66 ++++++++++++++++++++ tests/tcg/riscv64/Makefile.target | 12 +++- 2 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 tests/tcg/riscv64/test-rvv-ldst-intrinsics.c diff --git a/tests/tcg/riscv64/test-rvv-ldst-intrinsics.c b/tests/tcg/riscv= 64/test-rvv-ldst-intrinsics.c new file mode 100644 index 0000000000..3dbc862470 --- /dev/null +++ b/tests/tcg/riscv64/test-rvv-ldst-intrinsics.c @@ -0,0 +1,66 @@ +/* + * RISC-V vector load/store test, including accesses that cross a page + * boundary. Intrinsics version of test-rvv-ldst.S. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include +#include +#include +#include + +#define MAX_PAGE_SIZE 65536 +#define NUM_BYTES 16 + +struct cross_page { + uint8_t pad[MAX_PAGE_SIZE - NUM_BYTES / 2]; + uint8_t data[NUM_BYTES]; +}; + +/* Page aligned so the within-page cases never cross a boundary */ +static const uint8_t src_data[NUM_BYTES] + __attribute__((aligned(MAX_PAGE_SIZE))) =3D { + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, +}; + +static const struct cross_page src_cross + __attribute__((aligned(MAX_PAGE_SIZE))) =3D { + .data =3D { + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + }, +}; + +static uint8_t dst_data[NUM_BYTES] __attribute__((aligned(MAX_PAGE_SIZE))); +static struct cross_page dst_cross __attribute__((aligned(MAX_PAGE_SIZE))); + +static void vec_copy(uint8_t *dst, const uint8_t *src, int code) +{ + size_t vl =3D __riscv_vsetvl_e8m1(NUM_BYTES); + if (vl !=3D NUM_BYTES) { + exit(code); + } + + vuint8m1_t v =3D __riscv_vle8_v_u8m1(src, vl); + __riscv_vse8_v_u8m1(dst, v, vl); + + if (memcmp(dst, src, NUM_BYTES)) { + exit(code); + } +} + +int main(void) +{ + /* Case 1: load/store within a page */ + vec_copy(dst_data, src_data, 1); + + /* Case 2: the load straddles a page boundary */ + vec_copy(dst_data, src_cross.data, 2); + + /* Case 3: the store straddles a page boundary */ + vec_copy(dst_cross.data, src_data, 3); + + return 0; +} diff --git a/tests/tcg/riscv64/Makefile.target b/tests/tcg/riscv64/Makefile= .target index 68a5ec5255..3c6cd4937c 100644 --- a/tests/tcg/riscv64/Makefile.target +++ b/tests/tcg/riscv64/Makefile.target @@ -14,10 +14,11 @@ TESTS +=3D test-aes run-test-aes: QEMU_OPTS +=3D -cpu rv64,zk=3Don =20 # Vector load test -TESTS +=3D test-rvv-ldst -test-rvv-ldst: CFLAGS +=3D -march=3Drv64gcv +TESTS +=3D test-rvv-ldst test-rvv-ldst-intrinsics +test-rvv-ldst-intrinsics test-rvv-ldst: CFLAGS +=3D -march=3Drv64gcv test-rvv-ldst: LDFLAGS =3D -nostdlib -static -run-test-rvv-ldst: QEMU_OPTS +=3D -cpu max +test-rvv-ldst-intrinsics: LDFLAGS =3D -static +run-test-rvv-ldst-intrinsics run-test-rvv-ldst: QEMU_OPTS +=3D -cpu max =20 # Re-run the vector tests at each supported VLEN TEST_RVV_VLENS =3D 128 256 512 1024 @@ -26,6 +27,11 @@ run-test-rvv-ldst-vlen%: test-rvv-ldst $(call run-test, $@, env QEMU=3D$(QEMU) $(QEMU) $(QEMU_OPTS) -cpu max$(CO= MMA)vlen=3D$* $<, \ test-rvv-ldst with vlen=3D$*) =20 +EXTRA_RUNS +=3D $(patsubst %,run-test-rvv-ldst-intrinsics-vlen%,$(TEST_RVV= _VLENS)) +run-test-rvv-ldst-intrinsics-vlen%: test-rvv-ldst-intrinsics + $(call run-test, $@, env QEMU=3D$(QEMU) $(QEMU) $(QEMU_OPTS) -cpu max$(CO= MMA)vlen=3D$* $<, \ + test-rvv-ldst-intrinsics with vlen=3D$*) + # Test for fcvtmod TESTS +=3D test-fcvtmod test-fcvtmod: CFLAGS +=3D -march=3Drv64imafdc --=20 2.43.0