From nobody Fri Aug 28 00:13:54 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=1786823256; cv=none; d=zohomail.com; s=zohoarc; b=jUP9yDhmNrTTYHo8XUskcZ3rC3d39C3/XhFve1IHnBm5+EnF6DYxmjTS+ViTHUFVy5zzUh3eMxT13cKzjhVvWKwZq7Wg1P+QWZaabKh5lAePGdXY20fPuRECLB7L9khrOT6TTjphqQKK3jN5xadYpaBFjRFBSqH215Ix9jlahVA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823256; 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=PzBLl8LzGGcRrUydQjVBOOxvZ01zRJ24g+lFCxShePRlpjjmv9/zTzF5+fbv9ms3AdUluY8MecjvHM7zYwI/VHPirOPSlc/m16NRqPhSNLhCTb31EHCgpkBZn0EGWJsyNF4gDvwKrQTSePshmIZ59eFcTopKJFFjVhOKImoTJq8= 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 1786823256508770.3801482435226; Sat, 15 Aug 2026 12:47:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKk-0007Mu-7w; Sat, 15 Aug 2026 15:46: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 1wvKKS-0007Gq-Gi for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:05 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKQ-0008FS-3m for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:04 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2d5655cc850so2241565ad.3 for ; Sat, 15 Aug 2026 12:46:01 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.45.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823160; x=1787427960; 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=ngVXFLKiuracZoCOGOGSLyBeH/M2RMz5k819RLU37JYetNRMe/UOEdmNxRTZ97eqlB CWmPwxVQNlCIoJGly8xfKI1FBsi6t8qzSbBgMYqJ6t0pNAuOyuAT4cmJXufribmAUeUw MdQXfHjxMYjgfKzsZJMnFLZKD1+XuVpkbxvAmHecHYJPDRaYtUYd6+wPpnt/14hI4FqL XPvDgIOpVs/qqicB0Bo8sSsBcf+X4RfL8QbYXLcr1/QwGEjulZFez3WnTp1ozYKkGu/C iCE2qkveMtK597AsNoE+AHqzD4F5F+Jwy4LlZAcpvbF+3kCmKJbNfZUv1sTPtdtLts3Y 51kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823160; x=1787427960; 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=hsvkvXEzSEFs716i7lD16/325i5DfBh65mMlsPCpL2gTKpxdvkS9Z02p/Xiz0i9PWU Lk3oXDZ7iR0BrKwH7HmT7vka81nym+F5pLIZvDGME1pc6KR0QYL/T/uK2xeZU8gVR1eq hNM3DgNy5razTLM0vahF+Px+trVHQ9rAx8pF1kIT4yrQ51Izr1yEnMUFgEDmBAa2WjY7 75+JlzOC7SPfp6OK3k4YA0rBtOYJJPs4FyA9XBciQt0IjNfD+wGrn+e3RLlA42IHRmFB bHGUZb9ooKAK7Qa3zBKgFIu93yNpnWOSluGYOGvwFAduLWpFFYzEpXE8Qd+WMYL2VSdn WlAw== X-Gm-Message-State: AOJu0Yx9h5aeoYneujF92thrJF0LCs6qI/G3WeTdSLzsmEE+43w7Naib ECUdYjMC9zCPmoHBNwOoboWgd/UGpG0SH49nGrmb4utxpNqyxBvHm04Z8JPjFdESEreR46MlQAg RlK6b X-Gm-Gg: AR+sD12MDr8P2znUeTBSXemlpvi2jzqASeCukRamSs2gbZU8MSKfkroRvkg7Ag1hus/ V+8B0pumEFZLlZtUrIj0x0R6Uy9EdB6h4nNDXuxJrBb1jvZNsDGITZHI9KZDKusYNCNjBzQKbnq 5vxQLqax9uYk6mZi9aDI0ItXLiHUKWtWBviwUR8QSflKx5bjvD9veVuzDrImxSHqZNSmWqc/kSN b9WJOwIFoCOdSap7FdkeXm0rna40Ebn5nhrpaYDooWGGGjlaLCtoa8CaCimh3KtE4ZgdQT9DntO G/Hi5ocSjMqNXjgBLSQnV9H/+wJSSsrfqksNJphLlJciSDRAr+BMulb1WFfKN5lv/s14B79vqoD smktqFx08ETtpBUhCS8Y0wUFnBtgm0f+qTGDn0xlRrBEoKWS4bDnESZxBzz52ImqkVW6X5RgWkp YxPH37z7LrTYJysXQmdKVHhoc8d8nm9SRNSwlJUd1R8yGVuFf+Q3nFzNWEs72nRjZ0qgJCmo4mn xnT76BO6xpEwmfBRmR2paQkf+hz5Gg= X-Received: by 2002:a17:902:c40a:b0:2c7:f4bd:91b5 with SMTP id d9443c01a7336-2d3b04bba89mr151713965ad.0.1786823160413; Sat, 15 Aug 2026 12:46:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 01/23] target/riscv: Split out vext_set_nf_elems_1s Date: Sat, 15 Aug 2026 12:45:26 -0700 Message-ID: <20260815194549.1377505-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823257582158500 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 28 00:13:54 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=1786823410; cv=none; d=zohomail.com; s=zohoarc; b=ZN3z2Al32DiHCk5D9u2Jb5+cnz9w7UtWgMtAjCLAUvbKSKPQ2huEsVxuOz+zHkZPezYXsptScgpW/eetaUZ0AZvVrjjmT2Ads6ApLk153xW7tVulbRouY+EbVleCPSvLNw0P6469KCOA3KKHezRQtg4ORW/OaCIzyxQJ1nUEOmA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823410; 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=9jJ818IWZdbZ+oA7FKlW0IozvBhiq4MYdB9KFJONT5M=; b=d2ikcmksWW1dq7RAeB31EDq2BzRKKED5Pniqm5TQ6Cju+omVr+sq+MQN1zzR3pvnkTTHklgvEPK45FY2Gh4ULXSIWGq9mrDxkqtdeTaojKYkYCr+CirRopFC22dtdxc1oyfVw/MAj3qI5cmgTUZXfYPww7VML4Cuhw2CB9G8n0E= 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 1786823410765225.4959894535118; Sat, 15 Aug 2026 12:50:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKk-0007KJ-07; Sat, 15 Aug 2026 15:46: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 1wvKKT-0007Gs-36 for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:05 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKR-0008Fq-Bd for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:04 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2d032846c95so30945415ad.1 for ; Sat, 15 Aug 2026 12:46:02 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823162; x=1787427962; 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=9jJ818IWZdbZ+oA7FKlW0IozvBhiq4MYdB9KFJONT5M=; b=Kl32tiE6ejrUzhfI2EUvwbEUvDwwQ0/3IAEK8qHo5OnEQNVbN5zJ72CwEHRmhrHG7g nyb3hXDSKN2xJNuCbxeMtkhQXoc3wSIsIU5689C/Spfho/CDnumo3xIhonHvydrKytL0 fxlyuC7qIdgdsZNOAmhvuZVcmjwf5+EZXXrVjrqqaSZNqJP49GmkabrHysRYeZAuiIFd PSaH/vDZh3OiJLGNC2HutF2+jpxYftL8ZVocupZ/2nW6GB0G/RWUX+T5RA//kWb+0iPg ZGz1kNxgflwnI0Ui91U4lUUNUfUcuIGU6F0baXZnG5djTD0JF85fzr6gXDEA42MYTk2M WBfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823162; x=1787427962; 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=9jJ818IWZdbZ+oA7FKlW0IozvBhiq4MYdB9KFJONT5M=; b=VWydtU2c29Msjb9efWQaSWJDRJL2jQc3+qas1xJDzlzbdh+0JUwiRiPXBqPxJAk9Jw 3Qlw/s2yTo8Vc/BbzlxFSOqvBGuFFPnjVlM4+8g4FczBr/bcAEic5wqg5+DmkJTTgT4B fkJinGeokKdnBddNilF3ZISuCDLOUA3K4+DiBQ2/qKeTLof8xQ1Hi06LSfXydU0nwi2X WqMx78U+Lpsmih7PgSrL4xV3pssgCP8xM0OQ1RM+gsxSxfCK8W4LwyASiIWkSeAfu5Yg Fs4JVmYQmUSuyrTpdd0hwhdI0k5DGeCqHLRqRiQGuf2Vifu37CU76PrwaSnH9W1tbKSI CDSw== X-Gm-Message-State: AOJu0YyUEM3Y/cbMnOpUkMTuInfMctSTlkHawBbeF8qX53notd6Tvvq2 6bDR2rauD3eQmekrBOQcpupzeGeNjSjw7/jDwK0EODNoDhWvxTLezLqw+c7YmfOJyqj5fhENaEj fF1CD X-Gm-Gg: AR+sD10Z6AS2fclhP222xaQqhNoq1i+ot10oa/c/UvUe+oIRp2AfzRgczxT61XS1oFB zKKpGvfQ/vAuzAeDmpZtSEOSf8rgGX5nVs3tePTrmDQANTaoDaFSvwv1Jm5xRRIr5dCkGDpB0Sf NeqvqhvWPKG+5DhJT3gaZH8pbrrl7Dl6eEFa7ku0rPdLi37arwRZQPvF4LWfFe0ALX4nC4PsZFk 5i/x1OGake9WmUF+2x/cRNoTNxGoEGEHptV0vhHYEi3STFFzXNEIAMpbtZceLDM/1fqLgtynYvP 0jglJjkMOGq493nS9aB9RngxAa+crN4PwrUEYSMbypF+SfkZusyTBj7RV+GFlgclpdBiGfNdW4b cyvDJXkxjXksc2cuml+dpXdUz0MlKIrl1RKAZRStHMPi4vv2wuC1hgb+NSAxiEmPedUaCqTl3jA jaP03D2hoUjoTaITAfUl26/P9TsZUsc5iXHGdP7lqwF0rw8a28PY6p8JNelWN1dPhI8n4fTtq/j zf20OCZW+A9TTA1eIamcsV7uaR7Oag= X-Received: by 2002:a17:903:144b:b0:2d3:2e86:647a with SMTP id d9443c01a7336-2d3b07effbfmr179973825ad.5.1786823161883; Sat, 15 Aug 2026 12:46:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 02/23] target/riscv: Hoist vma check out of vext_set_tail_elems_1s Date: Sat, 15 Aug 2026 12:45:27 -0700 Message-ID: <20260815194549.1377505-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823411751158500 Content-Type: text/plain; charset="utf-8" In all cases we've already extracted it in the caller. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 35 +++++++++++++++++--------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 20a8f95efb..8f74162d50 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -311,19 +311,11 @@ vext_continuous_ldst_host(CPURISCVState *env, vext_ld= st_elem_fn_host *ldst_host, } } =20 -static void vext_set_tail_elems_1s(uint32_t vl, void *vd, - uint32_t desc, uint32_t nf, +static void vext_set_tail_elems_1s(uint32_t vl, void *vd, uint32_t nf, uint32_t esz, uint32_t max_elems) { - uint32_t vta =3D vext_vta(desc); - int k; - - if (vta =3D=3D 0) { - return; - } - - for (k =3D 0; k < nf; ++k) { - vext_set_elems_1s(vd, vta, (k * max_elems + vl) * esz, + for (uint32_t k =3D 0; k < nf; ++k) { + vext_set_elems_1s(vd, true, (k * max_elems + vl) * esz, (k * max_elems + max_elems) * esz); } } @@ -368,7 +360,9 @@ vext_ldst_stride(void *vd, void *v0, target_ulong base,= target_ulong stride, } =20 env->vstart =3D 0; - vext_set_tail_elems_1s(env->vl, vd, desc, nf, esz, max_elems); + if (vma) { + vext_set_tail_elems_1s(env->vl, vd, nf, esz, max_elems); + } } =20 #define GEN_VEXT_LD_STRIDE(NAME, ETYPE, LOAD_FN) \ @@ -482,6 +476,7 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, uint32_t desc, uint32_t k; target_ulong page_split, elems, addr; uint32_t nf =3D vext_nf(desc); + uint32_t vma =3D vext_vma(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; @@ -500,7 +495,9 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, uint32_t desc, esz, is_load); =20 env->vstart =3D 0; - vext_set_tail_elems_1s(evl, vd, desc, nf, esz, max_elems); + if (vma) { + vext_set_tail_elems_1s(evl, vd, nf, esz, max_elems); + } return; } #endif @@ -542,7 +539,9 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, uint32_t desc, } =20 env->vstart =3D 0; - vext_set_tail_elems_1s(evl, vd, desc, nf, esz, max_elems); + if (vma) { + vext_set_tail_elems_1s(evl, vd, nf, esz, max_elems); + } } =20 /* @@ -661,7 +660,9 @@ vext_ldst_index(void *vd, void *v0, target_ulong base, } =20 env->vstart =3D 0; - vext_set_tail_elems_1s(env->vl, vd, desc, nf, esz, max_elems); + if (vma) { + vext_set_tail_elems_1s(env->vl, vd, nf, esz, max_elems); + } } =20 #define GEN_VEXT_LD_INDEX(NAME, ETYPE, INDEX_FN, LOAD_FN) = \ @@ -842,7 +843,9 @@ ProbeSuccess: } =20 env->vstart =3D 0; - vext_set_tail_elems_1s(env->vl, vd, desc, nf, esz, max_elems); + if (vma) { + vext_set_tail_elems_1s(env->vl, vd, nf, esz, max_elems); + } } =20 #define GEN_VEXT_LDFF(NAME, ETYPE, LOAD_FN_TLB, LOAD_FN_HOST) \ --=20 2.43.0 From nobody Fri Aug 28 00:13:54 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=1786823395; cv=none; d=zohomail.com; s=zohoarc; b=EGRdm0fxuLqKH4sb4/EFAEBa3VGgP7zED1hzEX6OL8Ddwnad6hgnYUBgQMtvUfdc3jEpU+P6bKcJ7waXnjgOj71EleozKtM1ihrTwyQB6c2mPH1Y4kAuVTi0LDxJIMiOQRJD+rCwgDt6eLrhN0liQvJo627NRRRMLPMC4ZlC/Do= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823395; 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=MMt/T2qixGKzpFjQy6Eiw9D8oTLk6WHuNvJpilBc82M=; b=f8MpTDaMRP1k2uFO+hLUx7vM2GFMwRVcb+Gg8fdv+88stHU/Wt7Fl1B+O96xmd9P4BDhta3IBya2pH6f3rWpOLGkC53EpGDTFLYjttoLNIHE/h4nohZgp4wS8zYKgzvHukK3N2TMehv+HTzLjEWuw+Q6RshJZBCp2cotkNTXEms= 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 1786823395424942.6991751240441; Sat, 15 Aug 2026 12:49:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKn-0007P0-0P; Sat, 15 Aug 2026 15:46:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKU-0007Gv-0T for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:07 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKS-0008GI-4g for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:05 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2cc891373e0so27936675ad.2 for ; Sat, 15 Aug 2026 12:46:03 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823163; x=1787427963; 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=MMt/T2qixGKzpFjQy6Eiw9D8oTLk6WHuNvJpilBc82M=; b=s1JOcfVsKdJ08WVjca43s5m/C7PCJFsl2d/uLtov9fuQAx7F6na6/3qwDRJa1U2goG 8TE8LCs9qMqmsO6tCmiHdcngYI94c3By/nfcAb8lRDcWdx+tlFMlLAhybiJv7tokgjtj Yr3q3cVXJa/fiuCc54xz02/R8fQDvBIvZAam4h3cEyUyt9yStun6/pQF67VmkHtLpdGj xG3ragVUhvZ2M2C/uQEV3t7rbVdaff/tzJbXE1/RlEabsaFLDlPeW8syW4qCDieq+wEi qUIxd/X8t/XyikDYCTychoNwnd/NcXMiOlAWi28aKoi0bcTkZbs+/IsJ9UE0jSKVdBCa 2RYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823163; x=1787427963; 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=MMt/T2qixGKzpFjQy6Eiw9D8oTLk6WHuNvJpilBc82M=; b=S/lL/CCNeZ2TbCbBkG1XeM21Cm7lBo3Z5RJ1DVPDOW1jHGO6U1is5ZmOK82hYDaST8 rzjR3KWbFSQh4/FnXoGrg9+PnHZ5SGWGQrpdIjv5kgZHY6GmsrjZ9n2wwnaFyMCIzwGz xbVH7btfZQHgLJKrs9paB3ckm5ZOgNlxO77s+0wRS9uSTBt2GLYBcevCSopRvmpjX5/o LPhUknaRajUblAW5ZzqzuM73T/bmauNPA+8SJdi/dvYdvOX4GaB5T9K6uMA22Z3nWSS4 7MgSdpZOnDkzk5oZFSDYeURF4bKhLmYU1HX25TzWi9bo1pawyOuVYpQO9C/uYstVZzj2 sdkQ== X-Gm-Message-State: AOJu0YwGeVUwDk+Zu3m2k4m1X1O95MTavBC6MLQObNu9eElc2mWXA+ff VSXgArffasH2YWWxr92YsoBF4dBTGhfgrwyuarVIzwlUnl4Uk2FGBP/AI6PX9ijOS6EMVGy/qas 8dPI7 X-Gm-Gg: AR+sD12f6CK/cUNHcG9edF5DMUn/DO3KZKoI319syZn5fXHtPYPLZ7CBrD9NSUx1bqx wORj4Enmh0StKg+1RgYg8H4dme8aTVj06iEWQ1nFFBdV34nlUKi+xZ8Md53ljrHTugvxTU7Xibq 08TjxutwRyMxgAPTh5FLv/oo0J+o6V1qY3e6aopHUbHDVf1XnCjyQHdZ+s8U7As3A7hidp58PJG AGJxIzFgjYucC5HHPNJBC3acl8Sg+s9qwrI3QEfMLxYmv4X08IB5dZMrpgDQImpjEmsLt/ViQhz gqgghRLctZB+7k7UVY6l1Nem332o7HpxRN11zgxbJ+cDm5N3qV1eZIk2Ur6r0IHI8uPaltVty7t fyroDvzPJ+P1XnYuXqD3LfFNL9MtUV+MLA93FrgmIQYHywTOwt4LH506ZiAGXKGp5SSCmdTVfh5 4WDps6YIkA3a31DDY7Nr967rVgLkvRur6zbQcLhWKekrLvODINZkD5841q9P911tm9fiu0SDMoI srWK2Gx1tZNpSIw8Ys+ X-Received: by 2002:a17:902:e54c:b0:2ca:329:3da1 with SMTP id d9443c01a7336-2d3b0f3e8b7mr154018905ad.16.1786823162666; Sat, 15 Aug 2026 12:46:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 03/23] target/riscv: Split out vext_ldst_nf_tlb Date: Sat, 15 Aug 2026 12:45:28 -0700 Message-ID: <20260815194549.1377505-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823397707158500 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 8f74162d50..9c0cbcac16 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -329,6 +329,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 */ @@ -346,16 +356,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 @@ -411,6 +416,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 @@ -453,15 +459,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; } } } @@ -473,7 +474,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 vma =3D vext_vma(desc); @@ -519,17 +519,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 @@ -724,7 +723,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); @@ -806,17 +805,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 @@ -827,16 +825,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 28 00:13:54 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=1786823345; cv=none; d=zohomail.com; s=zohoarc; b=J2QbGlXg0b752DmACFG1IGhCsjPI5v5wXHr7dbacr6iiV4mcvbht2NvVdUzK+E+oVPT+iNXsKgp8iNxets720FZL5kZpqOvvVUpB9LRZdULtr4A2Q0eQbWd+CqTubEzFTfKLhtkK3d1v+yJlA0UHH/3MbVNS/lp/MQAPiXrFQ/0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823345; 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=s86Xnn5/dpDzfSJV6NAIFZxa3V37+nMyLlFJu9gce9M=; b=BsMTguetjY0XpW63Tv0PFSz4Gfweyx57WbBeyRZchFPHGsTU7ru688h+revYVnXntRjWoxiMwUnJkQAvv89sTgMd1wPisW5s8PeBhdQ22sPdhzis2vMgTxhuXYSSvTkD1RqlmCoEqkkw/kPnAgzg+Vl6eqDR8lurVl4bf/Xtwmc= 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 1786823345308541.6423223353962; Sat, 15 Aug 2026 12:49:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKm-0007P3-VF; Sat, 15 Aug 2026 15:46: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 1wvKKY-0007It-8T for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:13 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKT-0008GW-1p for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:10 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2cc61541f8cso39476925ad.0 for ; Sat, 15 Aug 2026 12:46:04 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823163; x=1787427963; 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=s86Xnn5/dpDzfSJV6NAIFZxa3V37+nMyLlFJu9gce9M=; b=f4LpFnQCSi1qQUpQEKDkbaM61OtRPO9ZdVXjEQBe+ynxZqZiwtilfBN2o15vB+tP0x 0MVJgis6cEEbCO9RI1yvvftDhS68FbKYhVuJ7M0Kr4tV+/H9FaMPDKn+DgOHbpqX2hVn yEpDbrrUsCabq4TtCWxlO04K2JTBP+Dle4RlT7Y7t6gTvb86HmSW8b+43jjZhCyJCeth TVcTGR4swheUgjRwlrPmv9o8/VPpTEk80OVtrVq49xeXFqR+XQFbspoXVrOffKqOyqNr NMm7dPZA2RDyHL4Y+UkiekQAZHzEBE6VOVpDgtS3tBxVSV7GQDmoS7QYLEMkB2J9ZW+T XkLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823163; x=1787427963; 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=s86Xnn5/dpDzfSJV6NAIFZxa3V37+nMyLlFJu9gce9M=; b=RBbF9RKCPysbemuxFqUSUN8zerJq3231r62/rZQF4bFUmcmb5nTQJk/FK8YStf34/o 0nRvG2GQcpYAFdnX/hOK5yv25K3Em7NpedEN51Kiubc0yzIjGAB5nnZVtQzi93A1quPu EBhKFfON9GyGwkpNfo3Q2hDkrPxj0hUaPsDQiQ9Y11pDFQEhimel3d9cCTKuIX1zd7LU JM+09YVCupmxFPuFItt+PsuWLcrj3OLbnL0zzX4rxxBxQ/mfXE1hijV3oFXHZ4edVNHe MVMR4gG9Zv4g2FvKpAVplP/oyCPvpN5mCxU6zFsYHOxZoIqeR+hk/zfMhb0OKjzQFp7H ta8w== X-Gm-Message-State: AOJu0YyruEVSxP8kgvnYs2iHerWyAKyeNKog7T+c8i6r1/GOfW1PLRra CierTP2NymraYjfhQ+5w2ttYirsexpJJh4Dhy8UtcWe/4Vhj/u7tlFyq83vYY3vFKJ2jWV+f7Nn UcAgb X-Gm-Gg: AR+sD11V0t4rwOuT6kxJA9UktMquEwllHvrC6KGlC5s8FFf07IxWPZO1Y9YpSxaCveb hF01HMhrCnuq6KTpk8sB2LvpS8OU69KFTHueW+2SPw3Nm47OvR1ky2WXqDlhWXtiOtszdC0HNAU zLXKp37wMeTxSgRrHTckth2Vx5RVFZCa2s/aG9njtSYfMR67KRJ1GI3uOQ9Et5a4stBpR8fl1l+ Dj8MufBJ2nvlQk5wRPz4LSbnoo1Uvcpp1iMgfFTnfHOe9xYT7HB2/yHocWpdKMlbMoX7ixUOoT4 QjY+DkupcuwddQey19/8UDsG1fhHWk1HYbbBGDIm+ekRxa85Gt0uvNGiebTN8qdu9jFa7dTYRYt LdBZb7a2chBGzBtbb1uCmztmjItza4hNZA5OxW0tWXCHF84zGQQviK47fWY2OYtTnSINRKc3bzy 98HnhKMNRdXdMv2dqq2aM0CTjYqDMkyqTsEKQzx1+5s28iyfHuu1HeYLVZAWws36SqAJTvk9X49 cvPVGDqNSZIP/r0fC5u X-Received: by 2002:a17:902:ce83:b0:2ca:e496:5f19 with SMTP id d9443c01a7336-2d3b0043318mr120672885ad.19.1786823163368; Sat, 15 Aug 2026 12:46:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 04/23] target/riscv: Split out vext_ldst_nf_host Date: Sat, 15 Aug 2026 12:45:29 -0700 Message-ID: <20260815194549.1377505-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823347616158500 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 9c0cbcac16..661f1ab2f6 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -329,6 +329,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, @@ -413,7 +422,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; @@ -444,13 +453,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; @@ -459,7 +464,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 28 00:13:54 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=1786823417; cv=none; d=zohomail.com; s=zohoarc; b=VimaDOZNJyZTibC9FaDbR4oT6d+TfWgLyGZLaaVQ7vDbIfcttMFrR/CEAQFIKLB2AzERqAgiZBq9fjCdOs1+RiX3vVAJTT47YOhMRsxda8RcTXYNaavrbgLeCVUhFncJWfS/ckWVN5OZp1Gmp3EjwQsEj62DcnZIm7c7tr4kiFg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823417; 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=PwrL7badJiVWs6ya4sCETcneM+ddqqSpHKgWHUOhTRE=; b=edX8ozcE+c0slWo768tMWgVnf+sKe43BtYPqtTmMODUnMY5mp++SH+30cNUADl4CUDfeiFCl81eFk6mBDNqauk2471z5UV58KdlxHXtattB0fVzsJyH1lijVxI0kwp4jaCxvc9ZgAnwSR/O0D/ZOiBHvNKfggWRQ0QQocuA+1Mo= 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 1786823417138408.6391557064885; Sat, 15 Aug 2026 12:50:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKq-0007T9-Bj; Sat, 15 Aug 2026 15:46:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKV-0007Hg-Ei for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:07 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKT-0008H0-Nt for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:07 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2cc891373e0so27936765ad.2 for ; Sat, 15 Aug 2026 12:46:05 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823164; x=1787427964; 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=PwrL7badJiVWs6ya4sCETcneM+ddqqSpHKgWHUOhTRE=; b=PSwqPLDxMypoB/hSJyzI71RrJd13etBFNdC6V58tIhWu7lfCL5Aqk+gbp3UkdootTv YE3wMU4MWToOjJ4lRhrO4DICsmSEAKMFfZezG4lna4HeKZcSz3VLljqlLKrV4JkDqsye Xxj7Fp6+AOAuI1h62ieBOfZJMd9UZwZ4ZnO9B4x/vz1g3v/rj1/AR3v7HGwYxWH9IpqY BHmxSNm0Jm7iNOoZM0WP0aEGZa2AMp/9qjNJVIWV1BnQE3oiDJ6nle6WalYvjVZJ3z/X kNa3odS+sbtUxaSrEgEFyMgSpcAuRoNwJABL+vyKpzsWxrBmJPamSuBiXDDvkx6CkzWj 2UKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823164; x=1787427964; 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=PwrL7badJiVWs6ya4sCETcneM+ddqqSpHKgWHUOhTRE=; b=PL8VtVe4IUv2WPdSA5m6+gYpOGx6wYbBop34Rji2GhfZmLHVY2oDzSyE/pHQ/xhKMx MFMEncRAz/OTbeSwCpjZm4jYzEqUgCInN0xj2C3OLvnO2YVHmYw2/PfCq/dZDZ87fnU5 OEy50Cxer4q2KDvd1jptcOTX2b3PFoSWdwdVF4A9IDEXcWTblaDAlLD2IFlleBaNRkso YDfMKdyDQ2K4blzurpmvY3ZQpppYW7gCdshZicW6qHbazwxgq46ScgZckXvfJjTUWAFT awL4NqDAgk9vfDOZmpOsvRgQ0Prew6HhNUHAtQletZYjOMWljeHOom9GBVYBaNlpohub lpYQ== X-Gm-Message-State: AOJu0YzFog74XLxRSxW9EIO3+GARULWcLwwiaDkrHL0BMe+DnFPM04p7 mu89UB9mmOb9nUCrLVQxOdk8Wd35XVOqkkLJTXSJrIeGJGCf1XDL7CpIhuY76kl9wCl7bSYnF9Z rCCBo X-Gm-Gg: AR+sD13NSykZF5tS+IDgewXRXCZN5B8T3aco5+2xrhEXcquOHIBChfdsF6XT+rYGy9v tDb0ugmgapbhme+MIVHVwfqbSfKNBtnSzowHn7fl11SaDhPb+0MI5Tm2dfapGGPNJLjHPz+liaz f1rDA3i1p1zou7USilHLeosGU7YV8ksu5D+6/6gYNlg71i6DPryuRqAOohl2v00pHMzglbglsZm p9+bas0gw/H7Gjw7c2CKZ7egWX8lgQKhH4RbcbfCuSc3JRpfcNGq8L+DI7KitLA40Bke4TIvX8X odGvqhTUEN8KXeV0UIMe0zDggOT9oa5rs65JOnZ/eP6gKRfwj90cRsMCrPlSurJ9isd9GkDMVSd /6VLMKn+ji70S3x7fr1+/PKiheUlP0cYCPgwxeP4HixsO2bWrIb4NQl6HilzPEZbvYvoCAkHcqN gV17he2DNaDmW7Mec+OTFSDTbPx3A5z7DxG3Vhcl4MjjLYti/SBUorSyYAVwpxmWSvdIm3r72Of McLz5bT2iEeBfkN333K X-Received: by 2002:a17:903:1965:b0:2c0:e5ee:f55e with SMTP id d9443c01a7336-2d3b0db9f3cmr161142175ad.7.1786823164184; Sat, 15 Aug 2026 12:46:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 05/23] target/riscv: Add evl argument to vext_ldst_elem_fn_host Date: Sat, 15 Aug 2026 12:45:30 -0700 Message-ID: <20260815194549.1377505-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823417773158500 Content-Type: text/plain; charset="utf-8" This merges vext_continuous_ldst_host into the ldst_host function. We can then handle the byte little-endian optimization at compile-time. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 83 +++++++++++++++----------------- 1 file changed, 40 insertions(+), 43 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 661f1ab2f6..3786a17231 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -214,7 +214,8 @@ static inline MemOpIdx vext_make_memop_idx(CPURISCVStat= e *env, size_t size) /* 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); -typedef void vext_ldst_elem_fn_host(void *vd, uint32_t idx, void *host); +typedef void vext_ldst_elem_fn_host(void *vd, void *host, + uint32_t idx, uint32_t evl); =20 #define GEN_VEXT_TLB_LD_ELEM(NAME, ETYPE, H, LDSUF) \ static inline QEMU_ALWAYS_INLINE \ @@ -226,12 +227,15 @@ void NAME##_tlb(CPURISCVState *env, abi_ptr addr, = \ *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 inline QEMU_ALWAYS_INLINE \ +void NAME##_host(void *vd, void *host, uint32_t idx, uint32_t evl) \ +{ \ + do { \ + ETYPE *cur =3D (ETYPE *)vd + H(idx); \ + *cur =3D LDSUF##_p(host); \ + host +=3D sizeof(ETYPE); \ + } while (++idx < evl); \ } =20 GEN_VEXT_TLB_LD_ELEM(lde_b, uint8_t, H1, ldb) @@ -239,7 +243,16 @@ GEN_VEXT_TLB_LD_ELEM(lde_h, uint16_t, H2, ldw) GEN_VEXT_TLB_LD_ELEM(lde_w, uint32_t, H4, ldl) GEN_VEXT_TLB_LD_ELEM(lde_d, uint64_t, H8, ldq) =20 +#if HOST_BIG_ENDIAN GEN_VEXT_HOST_LD_ELEM(lde_b, uint8_t, H1, ldub) +#else +static inline QEMU_ALWAYS_INLINE +void lde_b_host(void *vd, void *host, uint32_t idx, uint32_t evl) +{ + memcpy(vd + idx, host, evl - idx); +} +#endif + 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) @@ -254,12 +267,15 @@ void NAME##_tlb(CPURISCVState *env, abi_ptr addr, = \ 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 inline QEMU_ALWAYS_INLINE \ +void NAME##_host(void *vd, void *host, uint32_t idx, uint32_t evl) \ +{ \ + do { \ + ETYPE data =3D *((ETYPE *)vd + H(idx)); \ + STSUF##_p(host, data); \ + host +=3D sizeof(ETYPE); \ + } while (++idx < evl); \ } =20 GEN_VEXT_TLB_ST_ELEM(ste_b, uint8_t, H1, stb) @@ -267,7 +283,16 @@ GEN_VEXT_TLB_ST_ELEM(ste_h, uint16_t, H2, stw) GEN_VEXT_TLB_ST_ELEM(ste_w, uint32_t, H4, stl) GEN_VEXT_TLB_ST_ELEM(ste_d, uint64_t, H8, stq) =20 +#if HOST_BIG_ENDIAN GEN_VEXT_HOST_ST_ELEM(ste_b, uint8_t, H1, stb) +#else +static inline QEMU_ALWAYS_INLINE +void ste_b_host(void *vd, void *host, uint32_t idx, uint32_t evl) +{ + memcpy(host, vd + idx, evl - idx); +} +#endif + 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) @@ -284,33 +309,6 @@ vext_continuous_ldst_tlb(CPURISCVState *env, vext_ldst= _elem_fn_tlb *ldst_tlb, } } =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 nf, uint32_t esz, uint32_t max_elems) { @@ -334,7 +332,7 @@ static void vext_ldst_nf_host(void *vd, void *host, uin= t32_t i, uint32_t nf, 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); + ldst_host(vd + k * max_elems, host, i, i + 1); } } =20 @@ -450,8 +448,7 @@ vext_page_ldst_us(CPURISCVState *env, void *vd, target_= ulong addr, */ if (flags =3D=3D 0 && (riscv_cpu_cfg(env)->ext_zicclsm || !misaligned)= ) { if (nf =3D=3D 1) { - vext_continuous_ldst_host(env, ldst_host, vd, evl, env->vstart, - host, esz, is_load); + ldst_host(vd, host, env->vstart, evl); } 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); --=20 2.43.0 From nobody Fri Aug 28 00:13:54 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=1786823436; cv=none; d=zohomail.com; s=zohoarc; b=YJ9pVAtLt1QjXAFqOIdFoH5JHln+cSQPaWJ15iOl757q4E+XWkDpuovrzN8K/t9g91WnXBVxZoaZ/oHsByRc69rut6FRWC0xdUHau2yT18ysygagEA63IJ85ThxLei/59xRTBqBe/3vFQGFlEDHZZXJXn+oQFO613i+HyYHlsZ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823436; 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=US7bLFAj81tqEBwMk45KMnHmQvxx6oAKzY8BWowRu2M=; b=nfXps1YFVU9onHdh6o1hrPnWEy/8vo4F2V4zA9l92/zkNhHB/lpXe9B+OdOjrsHMk4IQzLNASymZVuqvXSRLuvmAV5HEgb7fFPbmoWlPUmMLo//VF4cIRWwqWyJO0py7O6x8RFZyytq2Zkez/VR2qS551BLQ+u9ItlzRjUfGihU= 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 1786823436282294.3432176081375; Sat, 15 Aug 2026 12:50:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKl-0007Nm-0E; Sat, 15 Aug 2026 15:46: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 1wvKKX-0007Iq-MH for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:13 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKV-0008HL-6R for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:08 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2cca0c5799eso19521675ad.0 for ; Sat, 15 Aug 2026 12:46:05 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823165; x=1787427965; 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=US7bLFAj81tqEBwMk45KMnHmQvxx6oAKzY8BWowRu2M=; b=KepZacLOtB4brD0XpMunciNYfhQJaDkIyXSD0tospxRtVcfscK1k8g2ZVjmvGG5iZn tBwhLsnypIYeur9UKmQKCSuSkjllZ7S6wYvui7t3+7PvJYMUIDw41/Hd06B20l9Eorwz TBnwBPzX1zQGgIMNQpnurYzz30ZoXbEZP29L0SQ2tVzCZIBt6qBoeQ73HbdlmjFhgw0k EI4I5ToBvZt8dclBjLkKB3dyXTyacof3pUiNa3UuAl6DgnqEiFwnh3hLheSp/NPdRwB6 UMa61IsLXk7US1BEuC8Y9hKzO+uB4eavcGG3W9bjHhKdHgSyr+w2Kqj1t14GwOtmEqWY rYsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823165; x=1787427965; 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=US7bLFAj81tqEBwMk45KMnHmQvxx6oAKzY8BWowRu2M=; b=ixgVUiCSyGxHUS/iOonQmb9SoFk5XIu22D3POrcN08J0Xeu6Hy9+D242xTwO9kesJU fH4KcuJ0IZ1n8ji4yjp9Oq7CUmE93d1F/JOKthmza+gQsyDbwcbrQ777oFrbMIjiMblk dwk8B/pjlBVcswiQXlr/pzO0XF9zmUHJq1AEJ2l+0GVNM8vkevdW1eAIJg31AB2LddOu gAhr9kudsbP4x0+jYnTcCy2S+OaYFVkb3DiF+JNWPfksSFZpaLvUX0mc1CRw4n9dvkjj Z9BQC1L7xXaDMIOyOOJrgXDPxMBzvPMWAatJFLvklmM+DDzBYEbE4ZMr9hpqV6RaHXVV Zucw== X-Gm-Message-State: AOJu0YysISL18MDPzABrgwB6kYpPNr0srNb4G569iE3KLUXpjY1Zc2vi UesUTcbizRn2OYySiZEcho6mw8TOItSPNaNu8xQLxY1WOGTOUMoTU66dpxcixUVIvkDcG30Rv/M JDDZB X-Gm-Gg: AR+sD13xYL4V5zYzvhVg2Vw/9k/wd6QJV+aRqmKkvHNcE7h5FjYf6Ne6kKL5qXxadJ0 2PldS5Avp/+fbOGP0oOVme5ze9ds/gLrdXrLd+LCEez261r5WYuz9PHYYClg/8QsewwK6eS+hB2 c4pdtgfltR6NMBg1ed8HcL48Er9Iz8HZAWfzD33aFYIZVKv1QTKLfDDnUQmSymbvq3Mi9yvyfNQ rYJ5TjLAT1UxFElMqDNY6byPCRTYgnhOV3aAT+p2oecyFR35nyDdQF5rHN1rGZIluF2fFrarGvl XAoBHElOF8he7vp1lM45I6Kzkwr1js2KH6wQxiQa0ukcJLvdSYKJID7Lz/1tOlucC01320Ocd+k ymIVG0hu0nhwecAXBJ0cJKhcWnaelTYAoUQxYN2qMDVwF+ArD207XxBDmUptm7Yl/+D5VlRcN81 Yso74BGFNOCvr1pXKsvWn8gyVCmKcdRblEOlLhM1Z2HoAymfXsBVsOlbGK9kxrL56cJOhjmy9Xb WikDbNKOpzCfB9zP8HtF40ccE2nq54= X-Received: by 2002:a17:902:fdab:b0:2c9:b8b7:5d1c with SMTP id d9443c01a7336-2d3b0d43f16mr170532915ad.16.1786823164851; Sat, 15 Aug 2026 12:46:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 06/23] target/riscv: Drop is_load parameter from vext_continuous_ldst_tlb Date: Sat, 15 Aug 2026 12:45:31 -0700 Message-ID: <20260815194549.1377505-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823437815158500 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 3786a17231..a571982388 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -299,9 +299,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) { @@ -458,8 +457,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, @@ -493,9 +492,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; if (vma) { vext_set_tail_elems_1s(evl, vd, nf, esz, max_elems); --=20 2.43.0 From nobody Fri Aug 28 00:13:54 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=1786823291; cv=none; d=zohomail.com; s=zohoarc; b=XMbfpUBUITOSF9tlJqOVHzTzXIJAun/EPShJ4bTMCBTHPnK0c0KfQVWLTP8v0qqsj8rSBJuJpby/dZslYYvZIc9G/zhITx17zy+Yxp57Tg7/bG7N//uGE7ac0pUsAj+8am7elGyMi8a5RWouS8bMrf/BeDswzNusL/lcEbHv8vI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823291; 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=Xezu+aLsn29Ptsvz8sNuNE28HxsbWNLxvXcnJIkVSDs=; b=E3lwNhgx1VtlzqUExYWEW12nH6J49343IMbOxlh5+enxFlnIigw+pgLDP2wZ+q1cWW0NBmu/OwTrLP6otS4DE6gaxBsytIj2GGJ1RgprzOynOKOhuo8FSkfomjVb+TRg8PAWEd2vsIG9kKQtN3mfRXZo1CZC32/DTJy6NIBJwuY= 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 1786823291795760.7696210443462; Sat, 15 Aug 2026 12:48:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKk-0007Nj-Qn; Sat, 15 Aug 2026 15:46: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 1wvKKZ-0007Iy-K0 for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:14 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKY-0008I4-0I for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:11 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2cca0c5799eso19521715ad.0 for ; Sat, 15 Aug 2026 12:46:07 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823166; x=1787427966; 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=Xezu+aLsn29Ptsvz8sNuNE28HxsbWNLxvXcnJIkVSDs=; b=Fe6TLIt884ZvJ+ohOFN/jdS8H4addubspWwEcIwnv3B9WXJoP7+3wT1MKe6bAfx/av vyMQscmYYjgGn2IBOFEFsGAst3T2FnXwLjobMZawTpQ6AkyF/TjHmYC29h/zE3s3q8nR PhpET2RKIYZXVF4AOvK4k2OxhZfIpBcYiXWqPdKtF+HRfIrVPHRQLtVojkgtlTmruCJ3 xFvFyDYwc0vbDtGbEOR6WUAI3tl7igzXyGUcSC7s+Hp+rb1mrX+KHsa2iir9LAY3OKGc 7GYvV5FvBaOTbp17siZ1khqnIf6wgso+QKBX+isOWkJyw8MVYgEr4w4CsUEoWjV7RTdc n7tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823166; x=1787427966; 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=Xezu+aLsn29Ptsvz8sNuNE28HxsbWNLxvXcnJIkVSDs=; b=G6Jzs6c1bsd9lWwUyVI/rh0LkBc/Gjkdu8P3vgVgWq6vusP6y9pS+kxWQpuD0opUyy L/RgvhJw5jl6xlX3MBbHWnLED1PEl7hgzxbAmWAF7e6O+iSTtIx2LMvOoThqu/p9I01R nBpdpSKROGhAxZNAI5xJemICLXoXshO9o9aqWLNWAzDmiZccT5+tYNH8Wqe8+qnKc4pu qu7U8EoeTvsK57+brJa8J4lLuUUD8/A6CfWYNnW2m/JYGazrCH2qqTQ+r7BGEjxzUcoV mRq26rdG/AsJldEK4NqtyxPBPiiuYm++Kf8gt42LrH84sRRPwHH07VKwoVeShbNSKgHK ZoMA== X-Gm-Message-State: AOJu0YyrZ41fF91WXA3rBVxbqpMRE99ArhO10eMbgqACtRGFj6UKW3Sk /DpVZ+VT1rS3wuzqkQs81/k1I82QDhqBIDa7NYo4/j/H8MfK24I5PedBSK7gB1bb9vmYRO3Tq+C Cj3jx X-Gm-Gg: AR+sD10Z4rGlOnjfksWNHIQvrqovwLnRwxfklGYziwHFF9vNmhYeu0flHaXESy2EM5W eGJ8VxsGfCwTHZNJKL4susFYBwHSyaWN3hMqf63mr4gh+WgeJyaOsn+WPdaPrXspwWgxkJ2a91h 4STItK3QMiFp2ikreob/hj9S+ZiAoUUJAb4EH0wnYmYuYTnUWceUqNivmt94CSbztaQ3UgtiCd+ k7cjoHWimLknfwR065TY3C75jjdXqYiJTRzLxvyFfzy5fdCSoSTkiBg8u35EEp9U9If5fQCv7tF 1zkEaTYpvzLVEJbZjf/qWIpkib73NVhlPC+5QMPQzo5KQwGHP3O2z5yiJml0Lod9TuUiSPcYhMJ urKh0JXoqTLg9g9H/wilsAQlziWTXA1DPiWQmNQk3qQuYecsaN5Nr9aqIxZL57B+PKUKn8y26Pu ez9QVFUwTOa3rZ93wg/An6FXfqyhPdrIw+0fFDyE7A89iHJe+24nJNI+SeCx1DneaFN3jirZSxM 587EJvwd/zOO+m3JkarXws34LVi2vI= X-Received: by 2002:a17:902:cf03:b0:2cf:ca89:499d with SMTP id d9443c01a7336-2d3b0b1f7a7mr153331045ad.7.1786823165729; Sat, 15 Aug 2026 12:46:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 07/23] target/riscv: Remove vext_continuous_ldst_tlb Date: Sat, 15 Aug 2026 12:45:32 -0700 Message-ID: <20260815194549.1377505-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-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: 1786823293611158501 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 a571982388..79c1d77a14 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -297,17 +297,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 void vext_set_tail_elems_1s(uint32_t vl, void *vd, uint32_t nf, uint32_t esz, uint32_t max_elems) { @@ -456,15 +445,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; } } } @@ -487,13 +471,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; if (vma) { vext_set_tail_elems_1s(evl, vd, nf, esz, max_elems); --=20 2.43.0 From nobody Fri Aug 28 00:13:54 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=1786823275; cv=none; d=zohomail.com; s=zohoarc; b=LPk6fooKreyXECed12niYT+IVk/8BK6yX4CGVfVadCLRYEhrwXPrKbkPC2jZ2AJUqViPoDWh/RflK6WeDdBnWQRJpufRSp8hTxs6jq/xE/lZmIUY2pOp8wf3uCqD7RMsURTiFPzqQGhLSqtVSh9nXrZvOrb9c7IrlvqjE1kEUXo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823275; 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=igBGUbI9Br7/yOtZA1N4yUxnnhsC2oSUup6hyiOZht8=; b=ETNslxbDt1t8uHGooYqSP9dQghgkhEy1PJaG6gBAPtpRzcCS7QJkMuL7gMKO4WfN5CSiUJEfo5U790z2EUNbqXTYQDvhIQWUdU/ESyuvH+XWEyh73aAGLNYTATCfzduEuUleNolvmWVDrMCdQ256lenjzP2hynhuwIl0usW2Mvo= 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 1786823275861174.35491536388463; Sat, 15 Aug 2026 12:47:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKr-0007UE-6f; Sat, 15 Aug 2026 15:46: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 1wvKKZ-0007J1-Ov for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:14 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKX-0008IE-J9 for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:11 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2cacb8416a1so20692695ad.1 for ; Sat, 15 Aug 2026 12:46:08 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823167; x=1787427967; 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=igBGUbI9Br7/yOtZA1N4yUxnnhsC2oSUup6hyiOZht8=; b=urzUJyYaPFSczIbSa/HZLkv49bsag/CVepml2lD2R4fGaDvJZcu3nkvbUG8JLCSUr6 czjVlF+znvvrrGB89KHxgks3llCK9uy7hOiXHYhvFHe/PmllOsfzFkpExqRBwahj8KX7 QkdbYqbxKW9/ptKZXGZhdvm5gPKOoDKbzHuRDCXWFFBBKvPuftsiHHCkfOBLzU5IkAD2 iYLXjE3BddI2CMoxQhvM1JcRMFIkjzsqlp2cH4TZE+B+rigIcYY+umTQUOPHB/cV5mEN hXEFXZE0NK0tLe/gKXfS6URCVww2kJGo8pOb4dHBqnyMfaLWMsS2S4e3bEyFdJIQkejL VnQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823167; x=1787427967; 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=igBGUbI9Br7/yOtZA1N4yUxnnhsC2oSUup6hyiOZht8=; b=h9gnguVfa/bVXglrRcMiLYuNb1lA79cfWLFgJvkC7ieOxP1/aFx1/0Ho6sTESktCpg lGsLdRNZCeHoP+wGyjW6LNRWqDz6jIzecfR821VcRsxTnqmVMWbOfIp7AgrMEFSY+YgX xUAX1qJlcGmvG6kobEtouTqojA32Fv9BAwtQ/ofascctcp6mc9xZSDDB23OZ0sQUJhH6 ifqDA1Oe/t/VLtGmqIq5w3ULnWVRVOy+wul/JIW7ZggFYIPKIFxyRtuXB/hEUKK8WR5e jtMux5ZVTrnqXKH5ws07/z0hs5bdzdwGbit37mHmcsZ+139Fj4mvULQ3yOtFjky2cdx+ Fyvw== X-Gm-Message-State: AOJu0Yx03xFyEMvh3WLyW7bSYL5MLqtwjSei4TLOR6xIoVfp98YWjm8M Zc4L6KYZ0Bh6oyo6lR1CnLW8/ZU4xSi7l3MB2Qv7KbPm9XfAkywrMRuquWiNkCzSGW2ka86Ahwk agqkA X-Gm-Gg: AR+sD1138JE/VUiQLJ903kfCPvSpCSYyHqwuvCZrIPR6PW8KiBEbX233gTs2ulSt7D/ GZYiMQ6sgDjJ5GJep24px9eVkIoMDIkK1BHLfrfxXJL9yAfRzDYXB8RjqbuOQj5GbofAU64/3my LfC+87qsyu0sj6AK7D2scdAVKknRbj1mWSAFAN4RjKcASHFRB90KOKbE1+KPC8kXHdstSAfhTlh sE75S552IFJlEkPZpn3WAsuuau+ypVJeIFqqwjr+ya/tYywSa2Sj8ilsqHxuYRzZdYHQoDG5Z3y KBJ9NJVmPUbXnHcJEb2FwdypdBUvCjC24xze4TmwME2tFd6UU96tyH/B820S6+l3rmaoyg7zEts XYR0jVftWqr/UGFnrkYgkfSgzEO3HWwP0zWEVSJDjnJjtwv638GSkJ445JK9iAaLqzVV9cyE2IH D3Jlrea7aglc/HlA2Xvk0xi+Mi4sigwvDNCegoZLQqae3QaLNI28gQhMaWzyNJoDMUBubK3WBvT uNyqNNxfdTxV1t0x8e9 X-Received: by 2002:a17:903:3c6b:b0:2ca:ed57:8586 with SMTP id d9443c01a7336-2d3b0da5dc0mr166165965ad.23.1786823167045; Sat, 15 Aug 2026 12:46:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 08/23] target/riscv: Move misalignment check out of vext_page_ldst_us Date: Sat, 15 Aug 2026 12:45:33 -0700 Message-ID: <20260815194549.1377505-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823277471158500 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 79c1d77a14..12ef020840 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) @@ -425,16 +428,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) { ldst_host(vd, host, env->vstart, evl); } else { @@ -453,6 +447,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, @@ -466,16 +474,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); @@ -489,7 +502,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; @@ -723,7 +735,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; @@ -821,6 +853,7 @@ ProbeSuccess: } } =20 + tail: env->vstart =3D 0; if (vma) { vext_set_tail_elems_1s(env->vl, vd, 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 28 00:13:54 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=1786823457; cv=none; d=zohomail.com; s=zohoarc; b=mUu4l2hmk626hpH+IOtmnC5rkEEgyFJuPTNPxh79v+8nCEjpECv5f3jo+6jWMic0Pf+rKQ5E2mCLUlOwTm/ijezmdpZJUrQVp7fdi5Q9kaaSPpsGhFn6Kjjdfht5Jc/TVD9LTVp8OK0vJOjwzHxLvqYoG/d5C1IR03CSd9l6cdg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823457; 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=GgeC2Gz0Cy5NIUncliWwHs8r8iCx5AzYcDVo3ksrI48=; b=CyikvnlyfE3wg7yei4radd8wjqVTrSZNGAcS1CFWLomUOn/uYol8MpU3uv+n9Ac/0mmjdO+SDLt6eK/dOxVqmjMnLYCmo498xsuRt/Kj3kHjFdJmB9vsPQZX81iiFparVbJ5wfeLtMQFsLHWISOUOrMaTs2d/VkfgTF8lj/TH6s= 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 1786823456989312.2810292335737; Sat, 15 Aug 2026 12:50:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKp-0007SA-93; Sat, 15 Aug 2026 15:46:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKb-0007JC-G0 for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:18 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKY-0008Ih-OD for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:12 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2ccf2360620so21440535ad.3 for ; Sat, 15 Aug 2026 12:46:10 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823169; x=1787427969; 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=GgeC2Gz0Cy5NIUncliWwHs8r8iCx5AzYcDVo3ksrI48=; b=PgqeUTJALDRCrFqF9ysOwv1NejWOoeDT8+YqgaeTrGPlRHV88HjgQszNxu4XyupCKj uyUzJWNfCtg4H0EL3MpSW9XpBTrbwMm8pwEnRWMNRgbkzR3UojunpQCFotTLBQd0DkqP snSTri5iqa2ncIwz27aw6r5VpYKsquTLjyDUZsoyHrH6awIswtRyWjGNLvx6ULxhd7ya JEgU4pcn9vKbTaqdvhAGfZL35FktTZSw0CP8PhzAm09GrUzHuCARJUJzi8+Hk63MCi3O +Ne0fmdmLX1uWNjq7bTQ0vi4oHZLVEg2km7xC776h0iphmDt99hv3SgsdShLSQzq26Dm 3XXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823169; x=1787427969; 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=GgeC2Gz0Cy5NIUncliWwHs8r8iCx5AzYcDVo3ksrI48=; b=PK22vNRwzRhbPNTLW8Piy/La5U0lRsKGQvh+ksHhm+Eiq8eAxN/cE2QycW1pB/1T4U T/W2pTgntJnHUvlhLUpJ1RI3BIHKcmdOFUAsjwa6S2N98oLd/mi3Tiv0nYTucLbIquVV fwkaTdjP/xf6Ho3QBgreLFgVWGRChV0ZIu80b9vwX7E4cqaZU7J54LGztUxgtzsIi72K pqmN9s6LXU/2GyaV2Vq1+dqTA7Ak5MYHPu1csgt0VeYx4RoiECYLe1qiJ7a4jx9Co7s8 +UZKufa+dDncH6skslH3U7R1X5PjmqHA1nzZnjEz8j46ujmpUjyH7ju62U5vj7FjE/Oz JXCA== X-Gm-Message-State: AOJu0Yw0qR/il+YcyQ7EyYygPsp7e/B2L2DbLNMy/qQYcQH4kTOdKHsD MhLlZE3E9a7T0P/YCQ54AvLHcCc90CitbX4QLG7x9qQLpNn6Sm9qRAI+tCteR4wFjI8l+nbloQy wAu1J X-Gm-Gg: AR+sD11tLxBqhuzHbVQfZ9UXSVnaGtOLxIlcChBFE8cECatP4hTXUBEnLzZA+541nlv yM7Z6cOLqmTEU5zs9ly0uC3mUFl95cYgtYHP+FyN6nRldgVPE73j8irAucmX57KG7q4QLKc43QS quxYs1jVFDqOovfmefH9EPR5z4I3jEVou8MxDVUHK6lLOiLT/i0YyPkm6B3ZK0RJmroBeP5PovH TJexUyHvkhwRmpYlm3BkWojh92TgXfeUAsg4cvuBIU81+uVNHIIkESts6+6rku93DXnXjSZwpWs fbGW+9agO18VWnEl+5iUc3EiGkgPAruiqt3zYv8ImW6biXND57CGWHlIRNb0EFfhSKv2qDyyWOj PDNPrUlIWfozmY/QsAiqDLBUTNHvNForp8ZWFUQv2A8ashGu2KxLYQSzOAs6ZERF8Eq9Zl678ro zVL6os8BfuHk4hOfRyMVgoJVq2Imc7BJkYkg/0TyrVeHXLacDJ/fu6Po9hTalt6bCrngH+KzTZ6 u7Tek9jxJD8/OvTgB5P X-Received: by 2002:a17:903:360c:b0:2ca:b8fd:f31 with SMTP id d9443c01a7336-2d3b0d5e37amr160724755ad.15.1786823169041; Sat, 15 Aug 2026 12:46:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 09/23] target/riscv: Split out vext_page_ldst_us_{host,tlb} Date: Sat, 15 Aug 2026 12:45:34 -0700 Message-ID: <20260815194549.1377505-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823457896158500 Content-Type: text/plain; charset="utf-8" Split out the tail of vext_page_ldst_us, after probing. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 60 ++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 12ef020840..7f721dc24d 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -403,6 +403,39 @@ 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) +{ + if (nf =3D=3D 1) { + ldst_host(vd, host, i, evl); + } else { + uint32_t esz =3D 1 << log2_esz; + 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, @@ -412,38 +445,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) { - ldst_host(vd, host, env->vstart, evl); - } 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); 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 28 00:13:54 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=1786823330; cv=none; d=zohomail.com; s=zohoarc; b=euGrrpnlFIAREmrGMETFfSz0YpxEr2A/EWKeMZHdTc/MEqtwEze4Qo3jbJsqnAnkZIJt88NmkYK57TqS/npdqiGkLpMSujvVpUiA8X4QF8OSBwbPieG2cPIatywxbJ9PZG/krtgPHJ1YyuBU4aEdHPYQ3FD8ZKnOWFNSvwXVsFo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823330; 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=GMRQ7YEyei+qjQhGFj1uUysjBQ7VBvuvI2+o6V/d73c=; b=ld+AXeXJNhYAhsYMrjkiMuYIWOMEn/aiWHtbWIBwcugLk23EFUaK3/pA7AAQI+WaKQVVhexDQfwqlZYbKU9CssnQFCeUUVEUMW7p2uxTe+9gZGPM6bMwldW4puRaxAYymfUOYjRNkZyfkqgxIrJhjDRoEO7Uj4Fkl2Ej14FK3f8= 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 1786823330097784.2634003579265; Sat, 15 Aug 2026 12:48:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKm-0007OC-4Q; Sat, 15 Aug 2026 15:46: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 1wvKKc-0007JG-WA for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:18 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKb-0008J6-53 for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:14 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2cc61541f8cso39477365ad.0 for ; Sat, 15 Aug 2026 12:46:11 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823170; x=1787427970; 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=GMRQ7YEyei+qjQhGFj1uUysjBQ7VBvuvI2+o6V/d73c=; b=ORGuE/uOz4V6/NSBgarQfy+okIkapNV7bgrXr7MNfU+rDyK9o4Bz5z/C1R+iOGmRny cePBShvx5lzdOgKN+fJt0mPqRpU4CUTWbQr/2hN9+89JigP8+JTr+jdT5oZyzbd9bTGh aXyfwH16Qy6+wlXh6e/ubB7QChKu893ixEJGt9z7LbYFwMNtgeZ+WdwLh/xueqMSdiOv MmeEfvBmowl+e7zquGrEAG6kABmV0GM2T/xA6VBMLWTqcutpu7R/e2eBVqBRj2d0vbgl gIzwNJ/w5qjoyQeRKiM13pgnewRTT/UzNiLIpYjp2A0cBTx1M8uRVGN4dsLA6zXdKGvn ZOAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823170; x=1787427970; 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=GMRQ7YEyei+qjQhGFj1uUysjBQ7VBvuvI2+o6V/d73c=; b=KcodtsA2d0PjmLbSjTjUOnbYTdjI5oVNP3d9qM1OH5qNKcf9FGGBekMtcQONQi/NoH +2pfHMW4jqqz1WHCxWJw7C+30UEl1TCXSujcioR1z4f2KaOGCIzqMbUOc7SDOTWtl/cg FNz0LwTAfBeZXh2pZapcSmOCsj9mz1qQXKZWLB0hLib0fbBk3Mmwz2VcBXc8Xf8ZrmbB mx/VXF8OIvGDdR0HOTlOFzKC6pTIeY2cJ1TlWb4r9BPYVOuXdx0tyPYm7mHX2wAQ0kBj 7EwvjE+jEeo8/E9/DNR2h+gjG2Msh/2PcAeaf6/XxEOvTUGfcC1OXBdmBhYCiSnrI6F/ 6ZAg== X-Gm-Message-State: AOJu0YyXKIWzXpep0knK551GENbAu4pn5UvtIoo7FY1CMevv6RvlWOhz XIO18hlQL6bmH2lOk4JjIxf87/tYSYzxljlP+CC43EH9HEerUAj2jr91IOE5wdr3ZinFwPO6CwS gqhK6 X-Gm-Gg: AR+sD11fAwiDcuvRWr8FeyJ/1ZGH7klwdt9CzF8bv+PEB4QeOpOq2HW3mA0ZAA49/IN 2okh3zFJ1yddAeULbk3rjLPnW3L0tIGVoZYW2v0cc/p8IIwYVFllyLf9GSp+6bgovQpGayvLVbN K7lWlcmdPbYw/lfHGCbIrV4vByITQFbKup03GP1e9YWOiTlEAzinvhGFAH615BQkJkOsfmLoY1Y yWi4dbzhyJMH6tMTWNkUBOliLz42rzK7AD7oc36HsN9liV8cz3YU8jqYoGUtJs/crfj2JmzC75h MbLyzfnfUXsRZjHDOvJsmD4LHV2EBM5PE0p1c079xWwoqiSUD7uZ7vfTII/Y4O+frtMXQ/zUdXd cXI0HBcTkELSk9p2GrfsVopZ0zGf66Lql/P2Vw63JY2a987BJFws3rwYCZ1u9q7qM+xgU411RDi ED4lAM233YWOnwd6d1yNerSdBohRcffCi1cyyItHf83VXH+tOYmTzD5nF2a7IB7hf5ABzExvliT tUERreMYKclZkDb768k X-Received: by 2002:a17:903:3c6b:b0:2d2:cb45:35ac with SMTP id d9443c01a7336-2d3b0037d06mr117765765ad.18.1786823170299; Sat, 15 Aug 2026 12:46:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 10/23] target/riscv: Rewrite vext_ldst_us Date: Sat, 15 Aug 2026 12:45:35 -0700 Message-ID: <20260815194549.1377505-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823331522158500 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 | 92 ++++++++++++++++++++------------ 1 file changed, 57 insertions(+), 35 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 7f721dc24d..5b03e23fc3 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -483,7 +483,7 @@ 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) { - 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 vma =3D vext_vma(desc); uint32_t max_elems =3D vext_max_elems(desc, log2_esz); @@ -491,10 +491,12 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVSta= te *env, uint32_t desc, 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); @@ -505,52 +507,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; - if (vma) { - vext_set_tail_elems_1s(evl, vd, nf, esz, max_elems); - } - return; + goto tail; } #endif =20 - /* Calculate the page range of first page */ - 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; - } + /* Calculate the page range of first page. */ + last =3D base + evl * msize - 1; + last_in_page =3D addr | ~TARGET_PAGE_MASK; + page_split =3D last_in_page - addr; + + /* 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); + } 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); + } 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; if (vma) { vext_set_tail_elems_1s(evl, vd, nf, esz, max_elems); --=20 2.43.0 From nobody Fri Aug 28 00:13:54 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=1786823314; cv=none; d=zohomail.com; s=zohoarc; b=Mok9Nfi9t60Jmr034qTxhpI5A6chJPJh6vkTLDmKRE781dZX9bGAY2ljXGrTw9+OF0jta5l8IOGcdimXu85vo8/G8k+E0R/MOiXBVOrk1GlS/9zo8F9FsfM1leFXTLiOiSjJML+SZwUDNRH6WIHsIibWEdTJGweYfr8kX4G5pcI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823314; 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=SDG8brCROUt59NSkp02IKoNqQYLa+S3EnhwTp/+RG4Q=; b=I/vRSGdBsxLaTaxAoFPX+6W90gVnbj98b9adpEmkApubCMIBQvHGft3NHyQ+1ihUF9Jfu9rH81fa84w4Y4K5GD0/oVszATE/waBrTQbsc70b+Lj6qWA8NsjuBv1Z/sPhc3KI53TU+bnb0U0gFRyhKyQWYvN4V7jvAm1BLctVVNQ= 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 1786823314689177.69025046416982; Sat, 15 Aug 2026 12:48:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKl-0007O7-LZ; Sat, 15 Aug 2026 15:46: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 1wvKKf-0007JU-GT for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:21 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKb-0008Jc-93 for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:16 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2ceaf8a1265so31519335ad.2 for ; Sat, 15 Aug 2026 12:46:12 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823171; x=1787427971; 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=SDG8brCROUt59NSkp02IKoNqQYLa+S3EnhwTp/+RG4Q=; b=r7GmYVaxN9OGiG/NNXaVB82rJ3S41P1jsjPYOfCQJbJEUwp/G2mNGIiSkQtR47uG+n a1qNf48b7C5h1mNLFgZsFp8szbFs8u8b5/pOKQcq8PQYLdkRq9VY4tyEL3R28gDV9bnv b/b/PL/8h8msHYlG7nVJVF7DqppLTQJQ4Eo/e8lHKz8pFfinQRjsuxxEEwMXu/vsY0VK OA7zR+OwEOELrRYObl2FV7inPW0N8bjdy7h7Yr4U7j7+Mb9EXtv7d+XW6u3WT4n0XDUS DYnfPW5oAvAToeIWsozACEfL2yddzn1HmxYgd2cQmJhmRcxPRyUAgBCGpAXXTMKB6CJH OG4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823171; x=1787427971; 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=SDG8brCROUt59NSkp02IKoNqQYLa+S3EnhwTp/+RG4Q=; b=jzy8vz2zvv6OsvSm772joynUsfOcK25NdxFAhVXB+nwbN1POqN4es61tqunjv5jCFD /vljqJOTRwjjACfHczFYkSSRTbGW4Y8tRfsTJa2xleQaGdPK3hsOFy2v9gf2baccxhIf /L9K2X7MSMp2pchcxIdGkdV1ZY/2rM/pkUYZBhmNaEuYaeHRuhIacGsL+eNWHLYlts3V Uo4oJASyI1ZW1j79eVc5DUsMlfVGSIwsNVpqiWmHrQQaY1aA7u07VXOvukmtU3E1GB/4 k0YLNPAibseOkNyrhrhrZoS82XoPy/z3e3DGVLCmOo/9+ekeF3kiE215J7aTFJDbaoNI HBgQ== X-Gm-Message-State: AOJu0YyaNyxo2qn5xe1SMX1eEqz68bv6KAQKamP/5u9eT3RC8SURYEiD vnj/sTj5lZQvXq59gmzSmvhM1hmXTGdGP5ln6/Lo41vHhiGiOGAP5OntZ0AFYqT1YqD6pcUZwwp W2UVv X-Gm-Gg: AR+sD12cd7M2Zyktgn/lD78heFPkWhGoH5EtRJLVREBCc9EZifpTl93xNWWKTFQZvKk I44ZlUvYHHzpBlaEI9hL4i+lRe1TEd1GRN4pndM+FpJfmDO6j9ojl5oPqFCvqkxUS1FgP+S6ZkI wON1+LwMbNFjINcltZzCibHq/4v6yR+znYHGNRtOZ5Mm7S2LOfynx4SJKSReYwYViPHxWphMOwt 28DeY3xKfNiqywWZml3wPe7CN3rSvqxOZcW877xCI70GlgNh5Ts4Ga9jmzXu1/PKoHxfaRZdzLR ghTDMfSgvkX2mvdxblqa/lDOw4XTDwczTMlwdxOal6U0oLqL+ZzCzMDUBdhe33w2yoLRXoDNGcL dab4aOLQe8nQ21udeiBdozcVoya7sjlFI1OK6cPEU7hG3qUOUF/rgf95OhrWuaQue+m9xZo3Aif j4RCWrEBmBJhTaniFB9FmFxQavMHpfaLuaiIf9f/SLjnJo1iPLWXMnblCLKMBk1Gc9gvdpkI06n eu/gS5Hsbt4OSLMXJQ8VShWkAY94iA= X-Received: by 2002:a17:903:22c6:b0:2c0:db23:4c4 with SMTP id d9443c01a7336-2d3b0c8852emr168380435ad.16.1786823171044; Sat, 15 Aug 2026 12:46:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 11/23] target/riscv: Rewrite vext_ldff Date: Sat, 15 Aug 2026 12:45:36 -0700 Message-ID: <20260815194549.1377505-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823315561158500 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 | 258 ++++++++++++++++++++----------- 1 file changed, 172 insertions(+), 86 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 5b03e23fc3..b482537f40 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -759,135 +759,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 - 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; + /* Calculate the page range of first page. */ + last =3D base + vl * msize - 1; + last_in_page =3D addr | ~TARGET_PAGE_MASK; + page_split =3D last_in_page - addr; + + /* + * 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); } 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); } 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 28 00:13:54 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=1786823409; cv=none; d=zohomail.com; s=zohoarc; b=oE+5+BxExH/DON+7V1ojb4n8AYqFlyqfVS+j9w+meGlQZ3Y/m2o/Y7itPl+6x1ROAZMhLYMBStlNDZLUsdcYmnO7EFUw73jF+C3N3i27wRdbFK86g3sZ2DK0fIFxKT6bMq0xU931eOL6RGhI79HAqVT/IhkKq3atY/MgmupTiOs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823409; 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=kIcqFilPWZIzxet5M1i5bmYJsXUO1m+vtWn5m97WeJ8=; b=clvp981KZbiAVECj7r78NKfWiC5T7LCPlrx3kozDsAgIEAeYZx6tK1Zwq77ZVruxlHaLcbBaH4uoCIDWQq7KaAN9k9tHrIJySXH0ey7x05dnNgONyOLXVEyMqQpd1G/UwLgEV4qciv97iEUOJx3AqNMeAbPcqC43TfWX8i4D5XU= 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 1786823409864185.98743292964627; Sat, 15 Aug 2026 12:50:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKp-0007SY-P0; Sat, 15 Aug 2026 15:46:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKf-0007JS-Ft for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:19 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKb-0008Jt-JB for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:16 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2d5335cf904so11076965ad.2 for ; Sat, 15 Aug 2026 12:46:13 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823172; x=1787427972; 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=kIcqFilPWZIzxet5M1i5bmYJsXUO1m+vtWn5m97WeJ8=; b=D2a6AUzfxCR8ryziqEgbiCVpWMszK5EXUjfZ09Kley8m+qNcj+A9W40e37oqLj8nzy cwv8AvFh3nP7UGgUJ496arnmc7XvX4Lpbox9lXHli8mbLjALxgeP5tB4e904B9FTkOWG 4I4nnXUgna9KI/Xoh6Po/nyx2rwhmJFF/+YV4OckwUPgkTOH3h32bMtWaMez9VY7BYNt LR+xcViDOWvozcMXVBJXnT6u/iaCrW33WHmxgVRi4pcUYBii7+5U9OzhMqWmiSCxdt5C T0dzfm6N1rq35XPm85sytQdTi7/hxnT4dhA7DMOR1JRzbq8ncEWtovSd6IZe2th/KYS0 r1+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823172; x=1787427972; 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=kIcqFilPWZIzxet5M1i5bmYJsXUO1m+vtWn5m97WeJ8=; b=KCY8W1E232pkknr8tbwRfXKdMeTTmJjDtIt5efLmY62A7/g/qeVuvhPPE+7H8uZvVu rqMyBiOanFEcX2OEiN4l2Qi4mEOsx+FGlL2j65DrAwoVrsvNaow6x9gdGkqogwoBd0nr zCwvJa90KJhMiV+T/0Sw2Jtjep2B55SXk5G/oZFKGggkmRmjLPQKEvxgLtTy0VxFAAcp DqEvec/h9vUiJ9AQlA2D87zp7uuNTmwtRx3nm7rBPbyRvczAvAMYbKWHKiVKvy8W2v8u r7wvUCBGIWGXLGygdeNGYHDfm9LMneKN2p4ic7st48ObNYR9sM8ZD7C74zvNjiO/5oCi ni7g== X-Gm-Message-State: AOJu0Yysudk+Xu1/AATPxm1sc4GK3Z9W+ezV2xnZ91LIy9PzER/Qkm8M mvFG0ZgMT4Dqx5bcOgDK6FMasjSzayS29xJcbUtpu5kCgIl5o0Js10b1mXOPRINEZa2pIR10O7S mDazD X-Gm-Gg: AR+sD11g/Y5H74b9XuxhIu538u0GbURCgj1sFqgvrDtNffWQdawHJyuRKAC7qzKyq/3 pCnS50LYtWXjcuxLGZrbbZzrMzLWSX+t7pBIgj4TFMyvZUJ/GbuiooCoGZ+PfKAxpfHGqkuj4w+ LngGErnrllOQGT66ZB3YtzF4gfvDcLPTyhw7nwLTvzxOabEYx48pAzSJ9YYDBYTvPlsZQ0XnRJN 7619pjUjPqhVsF8hhpEzc3IyfenB3+l697SQsBTi2kVAyoGFOF7IE/oWowJnTp54JL5yKddFa24 x4hPSDLTZlF3sv7X5OqBAbEo7cFyZpcIpyT9i2ANagvUXp9PZ9E8SrejNcJSBB7j1f5mx2AxD2l xbHtJSVrV2r+Tw13BjYyEysbpoOosd8z3ZTcYQgLVVq+X9J/vtxB8oeVDj00ornX33WVpHi8hV2 GF/JlhTDO5WlBej+h1shSEdCgDJkTYX1fA7Wafzvg0nQOzIUjGVt+xoy2W4C40iXregreSu6Ip6 pQ2myOjNMtsosJ5vfZYTjaTpw== X-Received: by 2002:a17:902:f647:b0:2c6:a772:7e43 with SMTP id d9443c01a7336-2d3b0cf4b68mr172787265ad.18.1786823172022; Sat, 15 Aug 2026 12:46:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 12/23] target/riscv: Split out vext_ldst_us_desc Date: Sat, 15 Aug 2026 12:45:37 -0700 Message-ID: <20260815194549.1377505-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823411760158500 Content-Type: text/plain; charset="utf-8" Rename vext_ldst_us to vext_ldst_us_desc and split out a new vext_ldst_us that doesn't use 'desc'. Signed-off-by: Richard Henderson --- target/riscv/tcg/vector_helper.c | 38 ++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index b482537f40..abb1ebcb43 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -478,15 +478,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_us(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, uint32_t log2_esz, - uint32_t evl, uintptr_t ra, bool is_load) + 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 vma =3D vext_vma(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); @@ -579,6 +578,17 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVStat= e *env, uint32_t desc, } } =20 +static inline QEMU_ALWAYS_INLINE void +vext_ldst_us_desc(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, + uint32_t evl, uintptr_t ra, bool is_load) +{ + vext_ldst_us(vd, base, env, log2_esz, vext_nf(desc), evl, + vext_max_elems(desc, log2_esz), vext_vma(desc), + ldst_tlb, ldst_host, ra, is_load); +} + /* * masked unit-stride load and store operation will be a special case of * stride, stride =3D NF * sizeof (ETYPE) @@ -596,8 +606,8 @@ void HELPER(NAME##_mask)(void *vd, void *v0, target_ulo= ng base, \ 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); \ + vext_ldst_us_desc(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) @@ -617,8 +627,8 @@ void HELPER(NAME##_mask)(void *vd, void *v0, target_ulo= ng base, \ 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); \ + vext_ldst_us_desc(vd, base, env, desc, STORE_FN_TLB, STORE_FN_HOST, \ + ctzl(sizeof(ETYPE)), env->vl, GETPC(), false); \ } =20 GEN_VEXT_ST_US(vse8_v, int8_t, ste_b_tlb, ste_b_host) @@ -634,8 +644,8 @@ void HELPER(vlm_v)(void *vd, void *v0, target_ulong bas= e, { /* evl =3D ceil(vl/8) */ uint8_t evl =3D (env->vl + 7) >> 3; - vext_ldst_us(vd, base, env, desc, lde_b_tlb, lde_b_host, - 0, evl, GETPC(), true); + vext_ldst_us_desc(vd, base, env, desc, lde_b_tlb, lde_b_host, + 0, evl, GETPC(), true); } =20 void HELPER(vsm_v)(void *vd, void *v0, target_ulong base, @@ -643,8 +653,8 @@ void HELPER(vsm_v)(void *vd, void *v0, target_ulong bas= e, { /* evl =3D ceil(vl/8) */ uint8_t evl =3D (env->vl + 7) >> 3; - vext_ldst_us(vd, base, env, desc, ste_b_tlb, ste_b_host, - 0, evl, GETPC(), false); + vext_ldst_us_desc(vd, base, env, desc, ste_b_tlb, ste_b_host, + 0, evl, GETPC(), false); } =20 /* --=20 2.43.0 From nobody Fri Aug 28 00:13:54 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=1786823263; cv=none; d=zohomail.com; s=zohoarc; b=BO1+KFQ1gq6iofHqi1B4Kba39Xlq/QdDsOWYakZM3d3zYCcnfWOQezzKHR+gGBXH6N7/lbpAnPm5wohySCdM2HCwVSR4orjpmi96C1ydWES5MM143I4N2fvsEs0zccQ5JRgjxV3qqELRfeuLlYSJ98nzJB2mAvpeqMnoRmYWTLE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823263; 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=UhKBD+tRgxL1bjQJ7VX4BBXuneohxZ5oDU1L18T6RBU=; b=f90bV5H54XAj1PF1dxdEzvmvfoPABVz+BJtyQJg3jPoSgdqcJeF5KKCHnTHkH1dgtSmnJTWOIIiJx4Xbstlc/tuxdMjFwQnj866SiKDW3TAaJ8hwhpiLr+CVIj5BGvmG0XzpMyUZC8on+eqmMy064dR+gCYduqLbItev1U7Xmck= 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 1786823263339349.74197133832047; Sat, 15 Aug 2026 12:47:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKw-0007Zj-GM; Sat, 15 Aug 2026 15:46:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKg-0007Je-Ob for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:21 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKd-0008KI-EN for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:17 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2cfbbdfa60bso18721415ad.3 for ; Sat, 15 Aug 2026 12:46:15 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823174; x=1787427974; 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=UhKBD+tRgxL1bjQJ7VX4BBXuneohxZ5oDU1L18T6RBU=; b=Kvn7KsXjkbjjkN/BDjVxbahGsGf0aq1uGtUcH55tGoH80MqmJp/gZUKRVug8YUmcgE 5GmoqihDdh5WYNpviPfRdL3ZjSBwbA9zaEBiTei19NPY1zWUoOXZvasfM6Zu/EQtPRVe srHZ6TAOHFOyF/5KZqWJWYsdsRo4Aae+3z97lLN8kxu26kVCVjLCj3ySpmjV2N6dgXrd RfF3i7LGaWSp/lKTF376q1Ad8aZCrDJkUpBnMFMD4eoaedeYk3B2NXCmMYr8zBhHEvKO 8suBxf30dirh7g5GcpMOtpHVoQL2pLj2XWCbTC5q1jfdIsc3QG/NGURyy6ZvyfT2N1Iw nNOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823174; x=1787427974; 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=UhKBD+tRgxL1bjQJ7VX4BBXuneohxZ5oDU1L18T6RBU=; b=BP0/mAzMgChZyMJ1qw/MuGexjm960+lT+FswyxxWqtN8MBnetft24gta2vEcTxuiG0 XBwGA5b5Xyun+3AjnzrFcjYPAHNfd2FJnf9Qqssvyqtea/clynaUO28dTeQ+7CWSDBRo 31WT4p185fC8z8Q/f8axaWfgifQ2mD442PnCMHq3JOUlYYudOluTgKqLo4l/BVfjqC5m bQgZJ/5NcsNcleXDOzbQFgnTm4gK4pkmamlWSa/O2IWE5z+jbATvxPmur8EUkKjs92VZ b518mYhSnD7ShajwULP8lL0SQWNrYJzPrd3y0qk7nS8jEUY/KWEBwsL9px4I0zMuMicS EF5A== X-Gm-Message-State: AOJu0YzCfUylJzMZwHpoozLogQgCR3eFQsDV1v+Um+h50Pjohr+9HV2o iZcIz9aFm/jupqnH1vtg7G4jjV24O4uuA9fvZru40Qal3GvZ+ErxxBmKI1esNmaFOLE8u9jJQlo W2WhL X-Gm-Gg: AR+sD12xdQxb1qTw1CR8QPzAp1ONaf6q9zHGXfHJqhBWPbg2Y1qsOtXzJL8f8UQd4VX UNSPktcxuAL1PA/lQuh2JAayXly2utQGvdU12qM5JuPZQVkMtGHI0ySCGQyT8yPJtugtYGCEZfI 3xG1ZybMz2IRTSbXBDD0WlJ0/7/WzBP8R3l65mdbeRlbzIVy7J/dBNBTKU26yuq3MPXi0TR+0tb lvqzZNXVj0EsDpoxWlX3pWv1AiObu+LMjzwYG83raAR6HIc7JfKGhNcrMboMoLNZqj9/Wxc4/xa AvuJ7sa2XEg8T8iN/jzvmQuxW49YRGZRF/aN7ZZ+gIBTh0enU0fMBRFSlbbuACpXlDmFR0aXJvl UyCA/7cOU5fuKf7Dr8/yQt400A20C9mlS8p66zoD/zuf7R/hGXZK8F9lmZlImehCjDfb/hOCx7Q VmqvYUyVqKcqncBBnA49O1+WO7BgpznY9q4rllt+Mh0s7W6nkNxN/o61zq6u0kZdBEEdcvo3C1q mrC/8tzADMU3G+q/5KN X-Received: by 2002:a17:903:32cd:b0:2d3:a572:7d52 with SMTP id d9443c01a7336-2d3b0d5c87dmr151528925ad.18.1786823173898; Sat, 15 Aug 2026 12:46:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 13/23] target/riscv: Use vext_ldst_us in vext_ldst_whole Date: Sat, 15 Aug 2026 12:45:38 -0700 Message-ID: <20260815194549.1377505-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823265308158500 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 | 120 +------------------------------ 1 file changed, 3 insertions(+), 117 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index abb1ebcb43..178ed32429 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) { @@ -436,33 +392,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); - 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) @@ -1026,53 +955,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; + uint32_t evl =3D (riscv_cpu_cfg(env)->vlenb * vext_nf(desc)) >> log2_e= sz; =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; - 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); - } - - env->vstart =3D 0; + vext_ldst_us(vd, base, env, log2_esz, 1, evl, evl, false, + ldst_tlb, ldst_host, ra, is_load); } =20 #define GEN_VEXT_LD_WHOLE(NAME, ETYPE, LOAD_FN_TLB, LOAD_FN_HOST) \ --=20 2.43.0 From nobody Fri Aug 28 00:13:54 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=1786823460; cv=none; d=zohomail.com; s=zohoarc; b=k39YkyhPc9n2x+UFkfSihMcTL7fV/TK/O6XtEc6pDNTrhKKdYmVhf/zMK6/iV3uVZTj2z/F0f/ncx+yWIU9+nhAU1+ZNcBpM2lL0LMbPYY+wGTHbYlLgL3NwQNAUnstYMXkuZYTOnmde6hNlwDBmPe1WkXs17jZFw/zU8o3W0cQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823460; 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=iWe+oHUSpmEtUDcnV+ijyQtLI0lKxZP7lDNZmrsl5yf5XlYPKWVu1EAiYLTHFmU2f3waDmkEyJF8LWUGOIV0Lvl3n2K943QyGPyBQYhBy8aYSKqEbKzPysaHyDTvTP3wyupwMiNo4piV8XaDK5GRjUFUqFUSzIHEPNpVGCKgVfM= 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 1786823460140527.7689937464945; Sat, 15 Aug 2026 12:51:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKn-0007Pr-Fc; Sat, 15 Aug 2026 15:46:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKg-0007Jf-Oo for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:21 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKf-0008Km-1A for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:18 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2cfbbdfa60bso18721475ad.3 for ; Sat, 15 Aug 2026 12:46:16 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823175; x=1787427975; 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=mTtuLKkQ38fHV1kw1UHjRl5dP4rDS5hLDBqlvOhZfXMP2orC34lQCe5Tzb+FrX2i0M f8y/HBpjIDxoVRoc6eQpPPd8+0gdP77W9PflFg24qfRx5K8j+aqCLN8PYBlO9UY0h48L c+ImAsMBOtNVfkjCkbC+WsYkDII7x4GaC3SPj+P75uZA8E7lWCdCZCcXFMIWHWM9jxRH 7hZUvPbILjuedWCESNX20YFP2qTkEkNhrjMZJYgosYqjkad7cwBm4WRKxJFWcpn8w2YA GuFkqxXi0eYkXiTQkAlv8hUe51r8JRa8EiWrq2ObVXqRHReEYwqH7KsIXuV9NF69LMjz Jn8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823175; x=1787427975; 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=ZsaRvGzZ+LkQziKW/whS5/0fL8Q6RYe8TaRTLt7JVdqPw1X5dIBMPnMkKumL+5P6lZ KWIFGMZCj5sAparUc7UJxjbNRZDdAKv/UHbHPKmyKFSpRKQf9u1dtbLvAtHVNPkexSY6 liOgjF8PIliyaYoEPa40hR0JkB8hLSgKrFcYWWyNIhXwGFpYhsD4KPG2moqI5r7d6scz /r45RWSkBIYbljTCK3rOBjfmm6SzFn9BeYccGEJFRsBlpjqCRhGGcNx3JahpTydrCM3r NHoy5/ZCCtPx1ihzWrhX7OR9gdFPnKp2v7DYFbj1waWph4AxGUUWylD/tgATLJNy8dT/ Djrw== X-Gm-Message-State: AOJu0Yw9g/vQGHnTDkZC89v+B0I4Yv258zam7PDv0I1KcSDsdd/Vg9lo vq/990FGtZk2ox8zi5ZsLFVLBUwaV3LAxlpFHKN6uh3q0BKIzs+fnLnXao9yY98n5wn6+GVdOiK 7Ubik X-Gm-Gg: AR+sD12gMXiuUhj3TlkQlcCrBFHc697Nrbv51YbiTZ0hhE4eFnwC4pAYncKokjIr3KU VHg74LXB2oxWXfJ8j6qQGTcR/vGihgaSEeyAEvGURk3a6SbkoD6N7y0zmwoeS2EeIHH0imX/Y1C D7178JrnehOLJRODwZ/QVokEynemBHrVIboZuz2zy6TDTt3gOqyi9azeUmAWya4WXETMhaDLr4D gg1B3EpO73zAAiCeUTOr470XISLWI6b/3riL6oN/GfS+P6w0qy6aaSLiRe+9a1LfaKGnVbq95M2 LvpG92RNSoNvQB077UV0UKOXFa21KXQn3tWnty1JILoSbyavC4W1nJnqFWTIEvTD+BxDbMdSOe7 C5+t3LIvIYcodlHQ9anujDtUIbUSHRiKGj/TbGtTZHco+9VqwU0huwkBI4x1vIjehzRYsiWkXb7 1A+4EklpFsOJE1bbV34t4G2/fOf8tyhEmVJtvNVUH6v8t/BH1XcxVnpkiSOZHzjryC77tPQsdw5 Zelj1Q265X2fLu30sqYX3xfyxd26bs= X-Received: by 2002:a17:902:d4c1:b0:2c9:c517:d070 with SMTP id d9443c01a7336-2d3b0ad45d3mr144910895ad.3.1786823175273; Sat, 15 Aug 2026 12:46:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 14/23] target/riscv: Mark VSTART_CHECK_EARLY_EXIT unlikely Date: Sat, 15 Aug 2026 12:45:39 -0700 Message-ID: <20260815194549.1377505-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823461916158500 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 28 00:13:54 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=1786823432; cv=none; d=zohomail.com; s=zohoarc; b=gPC7Q6onipwykul/BgJ1TbQW2I7ZQYUVEHOU5cJfvuPOd6kVhuY6JHoY1sNIxKX1/NMgto3+q36dv9s4IVW5/urUrNUF/kodNbiYywdC3BnsADzh3x4I9fPr3LPluuLjFVPBO1ZG3A7bsnxjSjYgDXZZ/VI2Eco/BcEATw9EwfQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823432; 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=WLUOcDuG3FGVUETiIgf5XdsQwhfjvqoyscUqIRo+NNmsGPlaY8jTxr/x4LhfJ7kvM4O5HMfTXSfK9wMjNGBGy0pAFnUKAo7s2hk6RI0ALtxpcptB3+EHpDhz7zocXkmHYJ2ga+QT9HCQUEPcftmw5vZYVdM4y4kSPIzxCCuRM7A= 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 1786823432097575.6599729035212; Sat, 15 Aug 2026 12:50:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKq-0007Sq-1Q; Sat, 15 Aug 2026 15:46:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKh-0007Jm-Qc for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:21 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKf-0008L8-D5 for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:19 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2ccf2360620so21440805ad.3 for ; Sat, 15 Aug 2026 12:46:16 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823176; x=1787427976; 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=yehZofRQ7Z/gNC9jJNCKPylGA6hUwn6fST0Coxi3Zi3tq/svwvIPIhIvE7ZXI4lQWJ Eo1KAenPJOTlXlJC9zyVFoKWkXWx1qyp6pcAKpmhFA+xcScvTYEGNndtnr5NdOHxEKx/ t9mp8B1amcJaHrzI/KtQ0ZnIx6+8laR5dvbkcwISZ4tng51QQGyX6DAU8tX0wmcP2fmp IRDA6c9JFTiHuABUQWbk/NXfPfr0YWZTpwXqWzskKjC/bIGlFY9CgZTX3SG3ekYL/dGX JTR1rTw9cQtZT5CZMNaYhJYljkrXQGyeZLGrc26nyZnN28A6xIhTBMZszKOSpay7XTpY TCDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823176; x=1787427976; 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=rEXxi+8HBxpuQ9aySx3QpYj10Rh/IiJG33D1oki9PdknOZUz/AL0jWiK25xWgfCXI9 tOjvO+rRD+CclpMg3Ezl8OgYd2YF02LN7ilcyb17da8vdyKcXxD4llMJdeeYEAZqhVXi ShSxW4FkORZODRfQKQVTIL/hS2BioN0r5YL8WsIMO9JSg81JHDwtU7FkINlcUH6q0Ocp zncqY7dv8rjCGoMF9atM+ris7Nbu1IkJeXzkx96JQuQ/iXjy5eODXGCiNweKSo5Bfgjx cgPF5QUdL3P9PM8wqK9eThKaRvfYwgdECKtnmh+Y+ZO6pS/4bl8dsw4UBNs20G1zSYqv zFEQ== X-Gm-Message-State: AOJu0Yxam/WDdZsQMYikuitpxfcubbJgtl3xvhF9J+nKXeChtPc1l8Rh RomhckLPZreNo5/MCziw9miG/1j1dJJBnNzYD2XXzy6H4E4XBd0KKBg9eZJ3qftdShfRVvjUlAm NF5sd X-Gm-Gg: AR+sD1152dcWd2Ayq36DRbebadLnxQvWCyzard4Kj48vuKFfQqLxciv3LuSjGUYnIkZ zgsaUK/IuWqNS7LJ0EK/SbaeIYoetcDZidT5UW3SLHCfFqpfaRpF79AhGEJlb7EjKcjk6+irByw w270ijnUn5IXxEwLPg/X2HHyWgl9WNGAXSM3gU6+0VOx5GLOHEShDsXs9PVGIbtwuJrXg/95ugA THfdUe1tNqASXQpkX9T5z/VPRMmtvWQacY4AZl83+jYRbSrvCv2IQc/HrnwzLddHY+Mn+8IWtME GKFWqQKHQav1UUmnch25SarkHQ6w8e96klQwnDYhGkcwZx6EY9bGOlB6Ywdrqyb6iBjqR6CVxwj iNyblK9AKYm2wv7w9elh/D0G3iJJA1WTi3hoXjIaWHF12yyJ1MdNZDDv8DU87HHRkWhoZdGOrDl YwMAeKkccwhdLTNTyJ47U/oS4SRcF3Jq3JMJx6iM7VKj5nbOk6WxNuXPvKjVP2uNXx8PXYXpMAB iVrCRAKliDnza5h8ATT X-Received: by 2002:a17:902:d592:b0:2c2:62ee:5a0d with SMTP id d9443c01a7336-2d3b0d5cec9mr179207975ad.14.1786823175954; Sat, 15 Aug 2026 12:46:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 15/23] target/riscv: Remove unused VDATA,WD Date: Sat, 15 Aug 2026 12:45:40 -0700 Message-ID: <20260815194549.1377505-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823433808158500 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 28 00:13:54 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=1786823467; cv=none; d=zohomail.com; s=zohoarc; b=Fa11dHBuJ2Icx3wu20IflCvl0nAcC4wEw3H7IyScJHjaPjQuK5uzM4clnnu+Sfa1/x3gmXhru+KxWfTmQBanZCLzktj3suUKtU96G8wI/X5X/CEhAThVEMsWTfZT+Mgd7rGm/yJbwjuINPc5LxvWMxI46b56BqtYet4e9xYHRn4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823467; 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=jwiigR+mB6INuncGog2xJgKXaIH2pBhDOaOc35AD/dG2skSpYiy5f29pYDBLy3Fv1y3iGYrge5Y2YXuOip23PLpYUGPZEfEiPLg8MHGz/XHZ7+uYVsRCoE4hq8h5yHJymhSm7Qdxw7RWifcfpZj8M2uoD7GlSMVXSPPW3NRlKCc= 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 178682346736581.64515919249709; Sat, 15 Aug 2026 12:51:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKn-0007QA-MI; Sat, 15 Aug 2026 15:46:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKi-0007Jo-HO for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:21 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKg-0008LS-Cs for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:19 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2caed617615so28246995ad.3 for ; Sat, 15 Aug 2026 12:46:17 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823177; x=1787427977; 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=aVQVKXkq55wjPiBT4H3LGqy6oTCQ3gjL9NFCJ1iKXZ6IgW8WTxGGcnDCrfMESz2Y2y ELsomweFs7i53mLwlWDAV0Gr5J8/pG+wOzUXikw4swZwX3PS42TA/ZYE0bK3B5axm22v tXpa/8r/O+6FPv7lpZrlQaA7Rf9NO1/YshDekbVXoVhogsGm0kdsEMB2hwBN6SRg8t0i JATOZzydu84bzpt1Tl8dPrN/wLurEFCqcf61TT7cjo2EVPmVSSVJMv3NKadXkulZvzRH 2SoSUvb78igz0WjA94c3WfC8+kG/Nm5YY1+MKzxq0NUu76euAZ3i1Xe5DuHpheMpx6z2 VTRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823177; x=1787427977; 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=ec+eyLPUrpU0wlndNG3Qr0ErA+4tkdNzwiHukSLxt6MZW6MTorqqWu3jrYDRnVevW+ Fzmw5IAj9uSO/vOz/XhMORXjo+8+XVtWlS1xgnGQJn3qGL9fN1Z5ogUqFfkZ4VCfUbwL RX3923Q0ErEnMK1U+OQE/dOkGQb90xBmPsos+LaOo0y7cxo9OJR94sjiYGJ+ZP0l+lyT bYnyX0jvG+jJIxih0ActvQyO+wvKBqDnLCSXDTmoZAfkLmGyzXnmhSKMCzTB8Vo+P7G9 RjE0aHjQZCY87gD2sfh7se3xPyh6A9eg33GHURk4MDADVYCNxjjZGWwh9wG+mXpN0tdc sfoQ== X-Gm-Message-State: AOJu0YwPRdZst+jfvgTiqcddnOiys3njn3PggBd2pksEhWkHNDb0hObk lK4u4qwBP3N/DmLnlI4z4992OHl5QwYLgdFm3VuVleTR/9tgnZjppvALePnNZ2nKQCLlLnGF5O9 xU1xL X-Gm-Gg: AR+sD104UNk1eucCuOp2iH/TT/+fOQ2+ThYJ4m6CbsASlVjkq+ACULhLXID0FvD2qX8 PMd9V2iCtqbswFDXHe0abGt6eAPEWTnSPtVPINyYGy6KtmXH0sm4ut4bXUKyJ7YcqpfbEEILvYn jK2K5alkphHc/xn+MQmp5n+oWdHVhKxqma2bFH1BOhg+Gi/+JoPhraW16JeoFUrbr0oSkIPmfxw mzkUNsIm/ye2it2sHjdKJFI6UqxII5sr7qBSn5O9KCG8H9UkNhjpnIAFuIdwUkZUtB4irHnNZi6 n5RY5xOuFIySNHeh6SeuxeB/ZiLHKLFIy/vr+om+Xid1DSe+SiTNbLg7v5lIm6phNrnutpdRZx8 TdVTySj8N3OIO5YPhxIz7Ymm0yz4OKwrWKjsRCsfhsP/GXToJhno2FY4TLr93Dfg/jlDgqFThaE Qjx3Zb1yAoRN8Elxq4/zCfoeKB6wAsPEZRkmy3pADKL7bc7r9vwJXjnZXJuPnc+9daPkyYSNwLo Z+fcTLhT+7AbEv8lKWu X-Received: by 2002:a17:903:3d05:b0:2c9:aae1:a611 with SMTP id d9443c01a7336-2d3b0fc1d57mr184020795ad.23.1786823176770; Sat, 15 Aug 2026 12:46:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 16/23] target/riscv: Add MEM_IDX, BSWAP, ALIGN to VDATA Date: Sat, 15 Aug 2026 12:45:41 -0700 Message-ID: <20260815194549.1377505-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823467939158500 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 28 00:13:54 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=1786823382; cv=none; d=zohomail.com; s=zohoarc; b=Dg90ADDpae66lZ4Djz+ocpHTKeJ4Fj8kAT9HlqTiAeK8zoCK99A7LmMY9HadvrxivXbmGzPejn2y8ia7dYnYC4EkGu2Dkt3HyqBvkEv1LdeHWJ47b7Ma/8jqtXdCUw8xPrwrv74Vv6ZPQS4A2hPCj0dQ12C5SzmzwUnZFNIQpRo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823382; 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=HEmanzey66AM32+Ka5lo5pqmPx+R0ZxDJxeFbZuCuhU=; b=TuIKUowLb0YpMyyz0aUtpUn2V76thlA2iVxF9b2+iDtFeJUikeJdNSRO+wfDhaXL3v8iv5M+EFlsy95RQ5HADWi+0+XzCUjjXb0wA7on7C2AjeE4RMoaV5UDM2jNE8sYqsvdzu0QYbyj2+j8e6ZF6pYNtPDhXli+ckKNPDW1480= 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 1786823382034403.05488356293176; Sat, 15 Aug 2026 12:49:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKo-0007Qe-0B; Sat, 15 Aug 2026 15:46:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKj-0007KD-6d for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:21 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKh-0008Lk-0j for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:20 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2d5335cf904so11077445ad.2 for ; Sat, 15 Aug 2026 12:46:18 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823178; x=1787427978; 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=HEmanzey66AM32+Ka5lo5pqmPx+R0ZxDJxeFbZuCuhU=; b=rx7+pkXEX7ktDiXbmz3tiskY/UKvR8R2DSX+tKhhoPLhFwlutDQiGnSMqGBgVUm5HG ZziMc+r4G90cCEElITJnkiyBZHRXhLPQRXy57ax2zZtbtb5FyTTwKH8SnDlNi/xcj34W V3fVEiySecq6BdZfxDst1OUUGvvV/xyrjMrgPGV4VbQTpMBuvfUAXjQO0GFtZf17ioEN /asR86UrIAkaUJ95sYfInAmfRhVoRsc0jkbVf5b2PhuFC/uYFq+z47IdQJK2wuA32s+A IbU7qcXHVH+Sipv5jiBpUW5AYnIY0wFZ0Uc275SkkY6xGWlr6D3rcEJALituX3qluGWm 9NNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823178; x=1787427978; 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=HEmanzey66AM32+Ka5lo5pqmPx+R0ZxDJxeFbZuCuhU=; b=A5gCpv5doKJVIGlr4hMxj0FUSyFT0kQiiydV+FHtR+O97SrkBc2byVLLVdNfDqUobD K9j/bZq/eWwxBOJ1WeNurCBc00uYJwOCKYIyXi/kzJ9zJMlNRlu2SGHc3hTifgejhLCz pLe8ByE9cxO2D08K7HY0D8Oh3uklgm+kvccE+XhhOzIvS0q5cHngvs8E9IyoJPBn6qoy QxNEUfAR+4kxBxtKp4kDb12cOOqJ5N8jfrRphex7LhVJ/ITp6SBcWe8Pfek95CA1USc9 5UtSk4BCtKDzfm68OAsbPlsZVLu+B55mDZtFrD9EXaA2wvGcBZd2q3ylr4lm7DTriUCR 5k6Q== X-Gm-Message-State: AOJu0YzNF09/w45eHXaV9nS0iliJbBUB0SE5w+tuJejLbM3We6GyOw3q mGTlzU6bJGURRNfT4RgnHQLzhP8ZGgsLSalCZMbJaZxHnZt/Iy+WYJ+8DzNxTGRpkC4msjP/CRk nuc0g X-Gm-Gg: AR+sD12Oabhhzb78v4UWkZo5Ms4BhduGya0qiXuMJc2/RukdmU1mrtETl7R2p2dhOHW beZX6h0z6XwE4KJOqfsel3OHJRAqzygqZkjg3doF9ftn/zuNFl9x9/atfa7q8adn1jiHIe/RGhp cYViKfJehKHP5wslVI4nAUE8gBBFSKt/iYIbQ5yels6G7qv/SjXMIEyncYsIu6C1pjFv4MSH77w 8GZSR1m/ZGNDxqF1d91glZeEZC/4+wg25f11K5RSd1dAuNlPRZJzjGbSYwazWIlGO2cPyxWdVv/ 9+Jb2/Lrnj5UUXQoEvIInowbT4hiXHfNbtCW7RKPltiGvU/N1uE6/t9JYsXzYRgEB1GfTbt4tUi W0qs2egUvsSZm26Rh15PvtLOljSVDmq0rMSdYEp61SPQcll3ceINfZXayaISHEoY+zseRu5yptu LcXC1CXq8UqnjmEaizMzoaJHRyGQ8uCr2pnnSPq3eJgCfr6iFyabXCk5bRkwUw8IxIXObVA0ur0 63ajgCTt486QlRToJ7H X-Received: by 2002:a17:903:2c8:b0:2ca:e5c:7fcf with SMTP id d9443c01a7336-2d3b08014f7mr182553535ad.3.1786823177576; Sat, 15 Aug 2026 12:46:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 17/23] target/riscv: Pass MemOpIdx to vext_ldst_us Date: Sat, 15 Aug 2026 12:45:42 -0700 Message-ID: <20260815194549.1377505-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823383688158500 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 178ed32429..5ead4cd6fe 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); @@ -412,12 +425,12 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVSta= te *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; @@ -515,7 +528,8 @@ vext_ldst_us_desc(void *vd, target_ulong base, CPURISCV= State *env, { vext_ldst_us(vd, base, env, log2_esz, vext_nf(desc), evl, vext_max_elems(desc, log2_esz), vext_vma(desc), - ldst_tlb, ldst_host, ra, is_load); + ldst_tlb, ldst_host, ra, is_load, + vext_oi(desc, log2_esz)); } =20 /* @@ -958,7 +972,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(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)); } =20 #define GEN_VEXT_LD_WHOLE(NAME, ETYPE, LOAD_FN_TLB, LOAD_FN_HOST) \ --=20 2.43.0 From nobody Fri Aug 28 00:13:54 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=1786823373; cv=none; d=zohomail.com; s=zohoarc; b=QssTxq2BAAH+b6ZBy3Vnb7yuOo8iwKBabwq1ei41qq7ThQPI0HnuOGyBRALsVCk2xBvrvTJuK2T0e+XEKqVqFlbqFxc9O7YOoDWfTRuCgHHPfBV507Y2Giw3q7x+FZNJgnJGjM1S2Z/iICVjqTeiNaNLmZr5b96QCn0p9KC0/r4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823373; 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=A0aLKOztLw78X0OgZcDJCRDvYWBytKazqo7YQ2T67oc=; b=U4yVHbdO85L3YEe4ft/U4xHldKt3du3w2tYpxSWjpVH4gtHJ7saYHPXBy4He4oVPg/MlT1qeJebSDfs4oQdnSPLKVI1BVenhk2UomYsEuz/4nO65b3SYn+6e2C0gbt6pW2nCQ/1A9euL0iGC+xhl9fiRd54UQfUxNLcPTPRQpxs= 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 1786823373243102.2316603758228; Sat, 15 Aug 2026 12:49:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKm-0007OD-94; Sat, 15 Aug 2026 15:46: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 1wvKKj-0007L0-NP for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:21 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKi-0008M6-96 for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:21 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2ce98cb8165so20040305ad.1 for ; Sat, 15 Aug 2026 12:46:19 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823178; x=1787427978; 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=A0aLKOztLw78X0OgZcDJCRDvYWBytKazqo7YQ2T67oc=; b=QDtStq+FgM+3/MUf7syK6CrTyWckeeD/IZuLSXXzIsPBSihsZXODa7Vs1bDzB87WBV O/Nc75y+4BnRQzoP1HnXEfh4IOONPFwWMcvkTzgtDU3nrEPudPovK2Dq3E3a+dVeg9vf Tp9sXrwdV7il0gfZvinRXf++x+JvTMMX4rTZkulANBGgjgMj8g1DEhwr14CsvJ2/EwAh f6xDAlZlVNr023ix84hjG+NtTLFqCzKNlm0L/7jILPAN4lQTrZt9P8zC1jm/xsW/wP4b GFyB7y9i+j4zv02KlvNIJkX8b9dvbRgx+EFJpTXvqMtKFoIc4QMc6ElxCGl2S772fAah zJ7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823178; x=1787427978; 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=A0aLKOztLw78X0OgZcDJCRDvYWBytKazqo7YQ2T67oc=; b=Hsx0Gk1/c+jS2Sxub8eb+1VhJnPbwr0aaqu8nJWwO/ZSqPaPFtCdIyH4Aryq+uYSZb JHABS0aPq4xlFvP1JZGmTtHsxT/NbDMZHNdzs1krjwuRLINbK32NTUfOR+nmfsMIYRS7 nHebTw7oHmUe+PaukammCCCsrihTABFNhVrLfosDQqTVIfaTO0MouYFfMxdGhZn+lOId NNmNHu4cZ9wQkb9W12+W5+9PDBKXlxq/NTmF0v6bhauoRcbfWihzaLlEW24wH/cXJFK9 6VT+UhTqRENpsmO0ZD6QshV5Jp1FMmYy4qT9KeuAEi/P1y+cgSNsbzINxJAus/0KDEd6 HzLw== X-Gm-Message-State: AOJu0YxNlCcHbEPu3BOtvKUSvnl2lqm7vaUBklH5jm6ta0DCCDaRJ8Vo wKVkSU+tILDGVXOQ543nL2PI50tGnaRcKDT3bvSzwbPjByW834WwmA63ouHhzBiThTktBp5M84A dunUX X-Gm-Gg: AR+sD11z6d+wWVcfuVbs853NYX0gKG39iuOJKgvRw4RdPXw3GapWC9jw5lMMsz9qC79 rYRqx0Wfl5f4R0MPjr4fLtFavRSWBiIDUMAR0yVW3clSC8S96Tn+o2l1NsxNrUCaA/H5QhY8mAM p5h0ccaZwTPnWFqJ6njuHkH5TUpCuRsJAjTY4H3uIJN5BZustRzgU0Hb1O7233p5LYvlcbpSWpb mTNBIN859wj3KN+uc369oTCzNubb6FcReh6wPFPA98NFfd2F7JpR/bDY1B5YW1MApvjWbbrPTYc eXrxqGfRycRaR/GPLNICb23S0BfywaEi1sMGoPpLJ4Yhm89lNuL8GxACjzosiPRgSgxP2CEgOjh kEblx82k4M64u+GK/1oZvZdLYfl9RjRXOpwrDEZpGSVZpOKTDF3pW3JbZZH6lc0ho0vOQ1RBVJi Lw/rO9vvfI3F6HF2r1B05laEeXtpJuhY2SvtL7diBXlcKeXHoagP45dYkBVDxIX5GW8JoTIHzwq UFYdQjocgl63ykrkkdl X-Received: by 2002:a17:903:1b46:b0:2cf:7db9:e13e with SMTP id d9443c01a7336-2d3afdaf598mr128004755ad.3.1786823178266; Sat, 15 Aug 2026 12:46:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 18/23] target/riscv: Build MemOpIdx to vext_ldff Date: Sat, 15 Aug 2026 12:45:43 -0700 Message-ID: <20260815194549.1377505-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1786823373676158500 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 5ead4cd6fe..9c643f60ec 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -720,7 +720,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 28 00:13:54 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=1786823373; cv=none; d=zohomail.com; s=zohoarc; b=iBY/DfWZ3XpheFXZasrjaWnUTub2EwpmfavzlNWaJGqnHFDkCWbqklk9QAc0NYbaAYwGzGXZB33bcEcKZ8u9qhOa5X1w35QoeRHXInoKqw3jnEBQ5o4ft7wcHl+t+Wh9JcCozOCMEKUDe55HOmNlJ3agzwer1fPshbMxKi+Fpec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823373; 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=NpuvhGia9PKI/LebOobTv0tqzmFTpPQqmvFmsy+gO6g=; b=YSyoOto9frBy07pVscpEN/BX/0GD5e11+twI3N/FTNrctxgMaggwVDfFWWZCUSE123XoRGF7whmtLTaibRj/NAx/1z0ofDCkVfVvx+feYs/z05xY15wbXVm5VHvqi9zuDq0ZLIB9DFl6H30EYHZHvzIM5c0wpnWg8+0cnq8YuzE= 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 1786823373526630.7705468724987; Sat, 15 Aug 2026 12:49:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKo-0007Qs-5S; Sat, 15 Aug 2026 15:46:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKk-0007Nn-Ve for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:23 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKi-0008MT-Tt for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:22 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2cc61541f8cso39478065ad.0 for ; Sat, 15 Aug 2026 12:46:20 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823179; x=1787427979; 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=NpuvhGia9PKI/LebOobTv0tqzmFTpPQqmvFmsy+gO6g=; b=SILdjQx2MnIAWPjGx8KApbOeBXHSIG5PD5WO/uT9ixCn80NPmG6dbOMoy1WdH0TmYs 4IDKCdR4KDrthDSyA+GdE3ZYXa7fORafp2a34JbRfu756wP/d0XTDgtuRNFaN4OMLOIZ /n2aQ6Qjs57fVxOViFBVvyuzj9DQRVlDuOhT5LSfnQ/Xa7aZzfqaCx5Psa5KDM5PwzUu xrxzlKpl1RhYrwrKDmH1KqXCquZlcXcUAYRSXEGz/KRbgr31GFKwuQP26fkApD4ZhWz3 3j7DIo9BGi+BUMSRPcgyChaxBgIWthMQEkwxAyLId7o/n1C8SHi0iAmg8OTK2NO4l7P2 YXUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823179; x=1787427979; 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=NpuvhGia9PKI/LebOobTv0tqzmFTpPQqmvFmsy+gO6g=; b=ptZLgpvfO905T/o3OB9d96SILG+N77RBj5gwrYSyBxxJhw/o6UKtE01eNSSdFFsEwg D8AV166OhTR3QmE3ImlJfrh+57BrEJfYKBynVuj+eUnK6HrlMTCcqDvmVhXN8zwwWAfm ljEM1hP308/wSAMjkcts55ng4ur95FWv7uDkuHgDC2VaZLenF0Up5NPVgrV0zmFN3SDa UTnY2tm+shBZPstxw+zrdKzlSv1PzwM3aLIHTeXFby2RPSbkvF+3fhGzPL/2swaHTb9L K7gRV9A/hWV7bCWd2FefWkL8KdhWVhLpQmNo1Fjg1y2/amGGwsGYXZon0mVydfxiT+ml t37A== X-Gm-Message-State: AOJu0Yy7SNmGkrDKDONVeKzRJ2rrIG0HB+eIIr54mhTvNBEB+qroKAKp gm7Mfq35OoLDp2jYPn7Lc9B+/u4N8Pt8dO3YZ3fSnfv+wyd+d3bRNv4fOjijnPARIqisOItZpNd CFnvD X-Gm-Gg: AR+sD13d2ZOKgw7mS+8Ix6xyfMv7UoexvHd29zPIN6RvR+q+55T3dPd7X7GHZv2W9fZ 8EW9Fuy+Ueww1rQFXalDpLfmfwSG8aa1g8vdGEJFXV1AJwwtbWys5/s+LMvO6u+/daWkSTWOpCm /0EQ1A7z9c7Dhftq3/cyp7peH2TbWiYSr91NR3KZ2L5NF4rLj6UhNosWC64isSl1rXtoOPcPett dzPO0AQxCZNrnS2uwgmJnJY5QXcorEjKpblyHNsKfGQEcL3ndk/yMfdQ003ldu+mKwZL0S82P6p aJgjd22uhy6fPTQcLxeg/LYEWc0ksfXk7f+6wlGFedyfWvfh9z2de12nU3eej3uD49j8g2EDpZH D/wS7x+AfigSrYrPT3n1xqbgGXi5b14HCtFQI/12Hs4LaddiQHjluFo5encYy7P6Bq3fs6EEtEr bYn9ietHt2VsO9As6LiIan+8NF59IvIt3Yhilu4a7bjelxvmFtUwyw/z254FiyO8diSG4E2BPAa WA57U4Y7IEh81ELv4It X-Received: by 2002:a17:902:e806:b0:2cc:80d6:b72 with SMTP id d9443c01a7336-2d3b0091b5cmr116428965ad.20.1786823179025; Sat, 15 Aug 2026 12:46:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 19/23] target/riscv: Pass MemOpIdx to vext_ldst_elem_fn_tlb Date: Sat, 15 Aug 2026 12:45:44 -0700 Message-ID: <20260815194549.1377505-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1786823375632158500 Content-Type: text/plain; charset="utf-8" Avoids continually looking up mmu_index with every operation. Allows for big-endian support with no extra effort. 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 9c643f60ec..473b112426 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -171,33 +171,21 @@ 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, void *host, uint32_t idx, uint32_t evl); =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 \ @@ -229,15 +217,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 \ @@ -299,10 +286,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 @@ -319,13 +307,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); } @@ -394,12 +383,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); @@ -449,7 +439,7 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *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); } goto tail; } @@ -478,7 +468,7 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *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. */ @@ -491,7 +481,8 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *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) { goto tail; } @@ -510,7 +501,7 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, log2_esz, max_elems, ldst_host); } 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 tail: @@ -630,6 +621,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 @@ -643,7 +635,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 @@ -762,7 +755,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); @@ -807,7 +801,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; } @@ -822,12 +816,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); } @@ -877,7 +871,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; } @@ -918,12 +913,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 28 00:13:54 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=1786823312; cv=none; d=zohomail.com; s=zohoarc; b=O4VUzIDhvLrWgRZL/QJ8P76O3YXWuQXRXXbF7mMYOJH3rtJ+hxoqQpy0XML/PvuspbPpplxHAvgt6366LvFA2W6+Ya4dmVrDW7bFOROpOG3oLYFbFe6kukxC22j4Me3+Ma1vE6esi9N2PMsdboq3C8ukTbmDlQDJ0Z+Kie4o1dc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823312; 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=7bZekzKnK+mg088URZdChMVNehIPR960HYA/tqwZ5V0=; b=atVMuNFSwdJWD1BXOt+RQVTkSriuqaKQm48VvnpC4mo7Ntr1iiR5CRp23RtwIDyWfy+9+S+NkYo3VuazQ0CVpoPtbBYtOJejHYIOUAUt+gEcJnPJiLcjLa0CsvLJ3StkdqSh1HNYOHKP21prN/f7I+gZz6qxMzDCtAeqgo+XrWY= 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 1786823312543248.05679167924222; Sat, 15 Aug 2026 12:48:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKq-0007TO-IT; Sat, 15 Aug 2026 15:46:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKm-0007Op-QL for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:24 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKk-0008NJ-9m for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:24 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2d032846c95so30947335ad.1 for ; Sat, 15 Aug 2026 12:46:21 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823181; x=1787427981; 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=7bZekzKnK+mg088URZdChMVNehIPR960HYA/tqwZ5V0=; b=D521YCkJEKiQH0z47uQOqu6sI0K8cNpukOpfj8TwAoQSqKd6a+10EQHjYN0eS0svNy Ml5ZZ3fWgncznF2FWf2KMU0/eCoY3EN233fKyZLvoLkV5UEgn3myIcTi75xjWpalYyuj CHYLj3i6Mi3ON9h9K3DDwggMv7YkNpQ1aRwwyxQSgLHY7Aj5VFTkvQ60dRWU5r3QIeiy oDBj0DP8sn3J4u/Fu1MmWhS9WDsvZBgmN2Z4zSpVYus8VztGLkmjN2Un1f3FaQ0j8KGZ yyIL88s5LWT0Ac3nQYtbYrj3RB7eT4WyF1ORAss1z0X+dZ1t/A4kKYO6+5BpEp7PIYRa VDnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823181; x=1787427981; 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=7bZekzKnK+mg088URZdChMVNehIPR960HYA/tqwZ5V0=; b=nMi3hngn1a6sIu01BVd9/+Jc9NRN3pEniQJC+E40pWVnR/ERq8QjsRRzejsXGBxkFt zuW7TBgCr6KXwt5mB4ZyPy9hk0AeKU+Iirwr/5uOSNLgLLcgfRgWl5NRIJbzXP2okRYt 974bxcr6ty7M1gP41RjGbXbLr+NE+W38cWE3FhfqMf7gn19ZiRiKFWa0B0wqoGgIUnUi 8tx8wIKsxfq/zLpxnnfhdf4YzMgiJ6tGoLxYSSmytVcKFrUVoNeyJpMyMKuJAa8hjKo2 BLx2aK8OFdgTtmclQ3emBHBXh3tVXPdjqIr4oXRkLWwY5+TMGY5yMNMJQ+CDuJOGcUO9 x/7w== X-Gm-Message-State: AOJu0YzVxDDDoFY+vgSHPw4kzA5UccHYKxg+RYI5R99maiBeFJxQIt/E wFc/BUdr85I30WroNozgyjjnrGVo41hq6fzJbWrsQozwnoXBsMAlAbekrh4hBU+IiL8YIwm6Tit iplym X-Gm-Gg: AR+sD11MtNh/iuuUD6CDq1y6TbfMLQkSslh7FNzYe+RHKXgP8nBt2CaI69bj9Ugrycc oJXPg7ZId25xbpISC3CljX90tvKRx+3GM7x7ylKT5ZIDEpoZi7gJRfxusJ2UCR7QhjehCmeO1L7 YQuMS1F+mhYxy3RBzoeUefgKn3QAuaG/0XTNLgweEW0UQr7lgj1gVx8EEOhRXLgjc1LjvRxAE8m cz5icM4JtLXDyoAT1/pcYS5JJ22WmAEiieAKnnaDPYVA+h3ufcLHFNPRwfF98UqpJgKEwTdvzap cw7T4rYOpImtvljrD7HF23mvuSWHIxu2YywaVFAJWnn6eUFqtSwVyd/PMUTKVtCY4jhs3BJ4oRM 0UF6O2qxiFIgHB07GCd4eyNg1slqvWoqPy2jKvh+mTbYQ29ZPj+VHZmfswp5HufNahTCfSEui2W gdkUNRXEnzjMNXMSTbja4tFsgl4uu06/oUjy+aqmHNZxqIyWa90weRC9vYavv6Nni2BOJNdboMn 9DbyburVmq3Cve7iQXx X-Received: by 2002:a17:902:e5c7:b0:2c9:bf82:dd11 with SMTP id d9443c01a7336-2d3b0842406mr169956855ad.7.1786823180803; Sat, 15 Aug 2026 12:46:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 20/23] target/riscv: Use FLATTEN rather than ALWAYS_INLINE for vector ldst Date: Sat, 15 Aug 2026 12:45:45 -0700 Message-ID: <20260815194549.1377505-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823313706158500 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 | 143 +++++++++++++++---------------- 1 file changed, 67 insertions(+), 76 deletions(-) diff --git a/target/riscv/tcg/vector_helper.c b/target/riscv/tcg/vector_hel= per.c index 473b112426..2a24e15a31 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 @@ -179,17 +179,15 @@ typedef void vext_ldst_elem_fn_host(void *vd, void *h= ost, uint32_t idx, uint32_t evl); =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, void *host, uint32_t idx, uint32_t evl) \ +static void NAME##_host(void *vd, void *host, uint32_t idx, uint32_t evl) \ { \ do { \ ETYPE *cur =3D (ETYPE *)vd + H(idx); \ @@ -206,8 +204,7 @@ GEN_VEXT_TLB_LD_ELEM(lde_d, uint64_t, H8, ldq) #if HOST_BIG_ENDIAN GEN_VEXT_HOST_LD_ELEM(lde_b, uint8_t, H1, ldub) #else -static inline QEMU_ALWAYS_INLINE -void lde_b_host(void *vd, void *host, uint32_t idx, uint32_t evl) +static void lde_b_host(void *vd, void *host, uint32_t idx, uint32_t evl) { memcpy(vd + idx, host, evl - idx); } @@ -218,8 +215,7 @@ 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)); \ @@ -227,8 +223,7 @@ void NAME##_tlb(CPURISCVState *env, abi_ptr addr, uint3= 2_t idx, \ } =20 #define GEN_VEXT_HOST_ST_ELEM(NAME, ETYPE, H, STSUF) \ -static inline QEMU_ALWAYS_INLINE \ -void NAME##_host(void *vd, void *host, uint32_t idx, uint32_t evl) \ +static void NAME##_host(void *vd, void *host, uint32_t idx, uint32_t evl) \ { \ do { \ ETYPE data =3D *((ETYPE *)vd + H(idx)); \ @@ -245,8 +240,7 @@ GEN_VEXT_TLB_ST_ELEM(ste_d, uint64_t, H8, stq) #if HOST_BIG_ENDIAN GEN_VEXT_HOST_ST_ELEM(ste_b, uint8_t, H1, stb) #else -static inline QEMU_ALWAYS_INLINE -void ste_b_host(void *vd, void *host, uint32_t idx, uint32_t evl) +static void ste_b_host(void *vd, void *host, uint32_t idx, uint32_t evl) { memcpy(host, vd + idx, evl - idx); } @@ -361,7 +355,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) @@ -378,7 +372,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, @@ -409,7 +403,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(void *vd, target_ulong base, CPURISCVState *env, uint32_t log2_esz, uint32_t nf, uint32_t evl, uint32_t max_elems, bool vma, @@ -511,7 +505,7 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState= *env, } } =20 -static inline QEMU_ALWAYS_INLINE void +static void vext_ldst_us_desc(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, @@ -528,20 +522,19 @@ vext_ldst_us_desc(void *vd, target_ulong base, CPURIS= CVState *env, * 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_desc(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_desc(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) @@ -549,20 +542,19 @@ GEN_VEXT_LD_US(vle16_v, int16_t, lde_h_tlb, lde_h_hos= t) GEN_VEXT_LD_US(vle32_v, int32_t, lde_w_tlb, lde_w_host) 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) \ -{ \ - 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) \ -{ \ - vext_ldst_us_desc(vd, base, env, desc, STORE_FN_TLB, STORE_FN_HOST, \ - ctzl(sizeof(ETYPE)), env->vl, GETPC(), false); \ +#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) \ +{ \ + 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()); \ +} \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, void *v0, target_ulong base, \ + CPURISCVState *env, uint32_t desc) \ +{ \ + vext_ldst_us_desc(vd, base, env, desc, STORE_FN_TLB, STORE_FN_HOST, \ + ctzl(sizeof(ETYPE)), env->vl, GETPC(), false); \ } =20 GEN_VEXT_ST_US(vse8_v, int8_t, ste_b_tlb, ste_b_host) @@ -573,8 +565,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; @@ -582,8 +574,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; @@ -609,7 +601,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, @@ -646,12 +638,12 @@ vext_ldst_index(void *vd, void *v0, target_ulong base, } } =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) @@ -671,13 +663,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) @@ -700,7 +691,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) @@ -933,12 +924,12 @@ 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) \ -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) @@ -959,7 +950,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, @@ -973,8 +964,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); \ @@ -998,8 +989,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 28 00:13:54 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=1786823234; cv=none; d=zohomail.com; s=zohoarc; b=Gzq9yaCbdwNYcrDWKrrQ6bH26o1Qi92D8z3hHSczj6Ut1aYFNMkjppDHwShRszU4Fu1zFb51+wGdZwskRCjFNHBLBPQzdyWEVyTM46mTwpbzJa0NwsFZ01PCwomBhUPaKI0+6LahlXD7DizkG5cKH1iwRISIBZFzKB4eBfFwhYU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823234; 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=GLaEYJbl0Dyipkg33zPZjuDb8MXzzFbtXmin3nDjnhY=; b=ElsMdABwbcRlsorxjXpsePGMv3YeBOfpj+DkHVss25E1sFjNdfqPIvYLn2NIvZDtU0DTfjZaWa9Wz51KzEN2KUAiB9JxjSih7NO9Zbv4ZjdkkV5pE/ZZDLPRanOhCAHeVOR/9m89giB/T1tCuH0a5bqhrBu0QqrGT27LaWCXdYo= 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 178682323428466.55695141279762; Sat, 15 Aug 2026 12:47:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKt-0007XI-4T; Sat, 15 Aug 2026 15:46:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKo-0007RN-I3 for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:26 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKm-0008O9-7v for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:26 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2d5335cf904so11077715ad.2 for ; Sat, 15 Aug 2026 12:46:23 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823183; x=1787427983; 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=GLaEYJbl0Dyipkg33zPZjuDb8MXzzFbtXmin3nDjnhY=; b=Ymv02PVN+jBz3209kGbbdURPXGVme/RSuDRqEmiWKk+OPvuiESmRKH1U3d4LpOWezs Lhh13M1N1WvcGdV/EPDY3viLhWw573UtYbYHWzOUVKq8HTS7oeBwfyGqmMqtl6wiV78h vNLhVsCgwXAomLpHRQz+xcDYDjspVQIFCJj1qvcbY+jARjDlSSm9vGu7RO01XkTBA722 0S4yx1RuHOb3/AhIcsKrD4fpNfJjqogmABQZWhNPAqJPwvyMM72tf+r0FxEw2lb/C5zO mCS1As8svvxFXwdlNRv4xXSRDCY+BAoZfvWaSclVWTg1MxUJEtRu+aV3SEbt+q2e7jPF THIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823183; x=1787427983; 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=GLaEYJbl0Dyipkg33zPZjuDb8MXzzFbtXmin3nDjnhY=; b=h04HAdL8ISC9NC5EtVS6/uMauaImXne8aVyy3ePnHFiJevt3jT42GstcJoC6clgsxn 2JsfDnILPwh13F9XLhUrdUKfkFnJvdkEgsW/aFFUC8nIBt/MYns0YwXcmPtXfDI2NKrm ly1Kfppqmbbd6Bb41Ann0+vR3mfitb3fa+a46tTSK4rCqZVGExhbZqT1NJ1XJ5WuvsUL +g89Fbcc682ZmPLwT3lw0jkqtUD39wQYGO2G4kx/ZY/8MWkruY7xg4+BJZvtLp3p5Wbx xVl9p2miQJZZghzNiZAYLvTMoRLbo7OSpGBePuKk99gTTDKjDmaoRLpSE567gytrwi0V yM3g== X-Gm-Message-State: AOJu0YwGlskg+tsKRGvu65WQ2cqzikln0VCpqIJst5LZa0NsPMTcTEYx RCY6g/aHHRMdW1TdA0qy5eRdu4WjBJIOksoXQISfRdGmqh8Cy6aMyTfDpTwAoJkDwuHnKqCcs7V dNtLf X-Gm-Gg: AR+sD10Bi24bzB27MNIHG650RA+TksRX83nRVSmTAsUKOazf7p8GW6amE7WPBau2C+8 LOBfZ/SK7wCDa/z8ggQdFwi4DaFCLpuS06oZk7VWi1SitM2ZjJa3NJELOegNabwJ45V3VBd5lAZ i8K3AbXhKK25m+0G1/RWt/nUU5yjP0NlSIwbWoTGoRe5EbFxDJRVVUojyjZDjrWqR7ue/jL/lHv Ex08xX5r1AHDo52PTPtlmeLtnPOCLxYuD80u6OQ+v+BUL9a4VbZ67lwKHyRPvog13pVXJ4PSZtd +cewXybiTYmbjJ0yioJ89YD3vMnzL1+JY7o37mIRsksQRa38HFCzF+9JT5UQcwS3QxIchbuPHzx 2wNoFEC8kAqCjZvZHwy6AruTAquEi7EUQ6zljGiOWX5i/y1Ip3ctYk7psJh/nWWo+alAk+0UH7H x8ZdLa10hhkRJg6xCg52rAW97JWtL4oqMJ94gyTcdEFxERdexqCWYzU79jwAD0QZgs5yHxLay1A zTp5ggA56S7i0AVDol2H3fXgisRtj8= X-Received: by 2002:a17:902:c942:b0:2ca:ecfa:1308 with SMTP id d9443c01a7336-2d3b0cf5f6dmr144716845ad.20.1786823182914; Sat, 15 Aug 2026 12:46:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 21/23] target/riscv: Drop v0 argument from gen_helper_ldst_us Date: Sat, 15 Aug 2026 12:45:46 -0700 Message-ID: <20260815194549.1377505-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823235288158500 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 | 36 +++++++++-------- target/riscv/tcg/insn_trans/trans_rvv.c.inc | 25 ++++-------- 3 files changed, 48 insertions(+), 57 deletions(-) diff --git a/target/riscv/helper.h b/target/riscv/helper.h index 542b7c264f..ffd759aef3 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -162,24 +162,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) @@ -220,10 +220,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 2a24e15a31..2548ad9c2c 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -292,11 +292,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; @@ -326,7 +327,7 @@ void HELPER(NAME)(void *vd, void * v0, target_ulong bas= e, \ 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 @@ -341,7 +342,7 @@ void HELPER(NAME)(void *vd, void *v0, target_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 @@ -523,14 +524,14 @@ vext_ldst_us_desc(void *vd, target_ulong base, CPURIS= CVState *env, */ =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_desc(vd, base, env, desc, LOAD_FN_TLB, LOAD_FN_HOST, \ @@ -543,15 +544,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) \ -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, \ - CPURISCVState *env, uint32_t desc) \ +QEMU_FLATTEN void HELPER(NAME)(void *vd, target_ulong base, \ + CPURISCVState *env, uint32_t desc) \ { \ vext_ldst_us_desc(vd, base, env, desc, STORE_FN_TLB, STORE_FN_HOST, \ ctzl(sizeof(ETYPE)), env->vl, GETPC(), false); \ @@ -565,7 +566,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) */ @@ -574,7 +575,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) */ @@ -692,10 +693,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); @@ -925,10 +927,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 28 00:13:54 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=1786823324; cv=none; d=zohomail.com; s=zohoarc; b=Cmbhv/x/mHyInkL/z3o4CxNnzj/exDyeWIVRcOEh+js14Ejv0reV11J5vcIjAIkTGGYt9rz8lWZW4FQuy5KgARjtKhB9mnhLwZnHfJ/7HrjgKFrqfQ4OiqIMLBSBD03smETWpsoCrPaF18GtUVAfyAyW8j5PbnAU9Tmab46hCxo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823324; 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=+ncRv98FOpWWg4cYJGCijDVpUQGTeB1NBMwEEckvxpo=; b=F/x2EjzXCGCK8kDRw6zc79o3QzawmJZ9jnm12ek4V9cI6OpFxnzVCzTPs14cAbj9Uz8E21pNZMLpB70PU23n1M0aIAGAijV6WIZSYi7Kdj/Qdj1RzPhV2gl5s5OUSb537yMk1DVvuSnc4ZncG7tafOUo7lTftNFAC8t5PeSvy80= 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 1786823324838527.462946912131; Sat, 15 Aug 2026 12:48:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKz-0007ax-De; Sat, 15 Aug 2026 15:46:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKp-0007SH-Do for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:27 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKn-0008OW-PI for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:27 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2d530328efbso15065065ad.0 for ; Sat, 15 Aug 2026 12:46:25 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823184; x=1787427984; 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=+ncRv98FOpWWg4cYJGCijDVpUQGTeB1NBMwEEckvxpo=; b=p+JdtOB7POAyvBs0/t1maqls8vcl6UiAjRw6KCc8rDMIjx4w09zdQ1Xgd/Thky9EdB 8zjmOVAkoH8UpNQyNIOpmYMFykfqnfjMij9KcludMnXFR7PJyY2xB9ufi9ZD2C4Urilp O3Ap3YSrh6bNO+/kYmC/crxtYI2s5G5pr1HDGzDc29JZXcbjkZkT/HmWN3JrcxdbR1pL dr8STordK4fVJTsqDYLFGcq1/yHruT7NyPWT1SdP9XoXi0agl+wsXR+/aRvbAQuqpHAG Oa5qtmBHKSC5JYAh54EHZAqpipvhHMY3jbvYXVFh7VaFPd8ft8hTN+FdvAuwzNbEMZd7 QRHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823184; x=1787427984; 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=+ncRv98FOpWWg4cYJGCijDVpUQGTeB1NBMwEEckvxpo=; b=LF/s0jkItxhooFG9rt5uOgwCIWHgrXzvJGQYMmoBeBUE9R2XSthTQNyJZwYfWvzlXQ gq4mgGOdBvHPCmFCL/xR2E3hWlfBSdJr2iUhgFNLrsi6VYaP2GUHjZJoS9ayaIaSomS4 A80QlS4/fae3hIYsGlpioNPjz4V2/7xMeKNiivlwou3DQ3yWlGWcil63nLRnF5xILbcD T8Ci42yoGta4L1jd7Gf5ApIKDrtd6oqB/WWnrAEwjkzqkupHvtIm1WW/uM597INohoeQ V7feOyxF4PJ41pRkfalZfixLmT/CzB2Vkc8f0KE597SNa6EPq1TeXc6eNUsg3vLsRKiJ jnUQ== X-Gm-Message-State: AOJu0YwPzjdPoyCQ/DmKhexXPmmGfBD8GBl5juT3Cqw2e7uH/dqA551e QINFh7ofhnM+3e5gOM3l+gNYyDtzrZM6bFisAjvgjbQZX4qfODxV0xtX4zMHGyRKEtWszos7iP3 g1Gqm X-Gm-Gg: AR+sD126/nYIKXkTJFBWtnLkmhyv9q9qz0lyJpfNWTyfGMLhtDfbnN5G7MCk/Z9JsCG P8hG3YItnzggubsB78/nIOjAXfKn4LF0y6Djzz1CjpRCVcARApTQPWOqC6N5rtXuu8wMunteFfP 1FertwHYHJa9kuLO5izGYKerfPIyqDJ8QBJF8qFZoWMKRUUwPuB6RkuYDwjI+CypolLMJL9LEEa 3zdQ8ZApyDU8TvTkEC4E17CC87NZqZt1/6N3kN8tsNDGlgDcqoyxS4Eao5jTyjLhPEDjOkeni+7 z2BL+L6u3Tr1qszTm9ElfzyC6bBK+T1X395wnewTUNQfuqbNaVHy04G70XjRC5/vm9dC1me0/Ih 9cqJmzT/0hMUrJsQhg+Fffep26mVyasSMUpmGqCFFooLYZyPXXHDD9gcfw1sFEvGPXYV6YhJL9b 7+ZYnVFjIi+bwmTCy3ex422y1NDvWb5IzJ4BbQDj7ISJ6wC5+eM2KyeSqJedmM3chIZkHgbUHg0 m/HkWiim1g1wZXv903S X-Received: by 2002:a17:903:950:b0:2c9:9a2e:dab0 with SMTP id d9443c01a7336-2d3b0827064mr172243755ad.3.1786823184307; Sat, 15 Aug 2026 12:46:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 22/23] target/riscv: Drop v0 argument from gen_helper_ldst_stride Date: Sat, 15 Aug 2026 12:45:47 -0700 Message-ID: <20260815194549.1377505-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823325721158500 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 | 10 ++++------ target/riscv/tcg/insn_trans/trans_rvv.c.inc | 16 +++++----------- 3 files changed, 17 insertions(+), 25 deletions(-) diff --git a/target/riscv/helper.h b/target/riscv/helper.h index ffd759aef3..82a478962b 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -180,14 +180,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 2548ad9c2c..354c0b0da5 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -322,9 +322,8 @@ vext_ldst_stride(void *vd, target_ulong base, target_ul= ong 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) \ +void HELPER(NAME)(void *vd, target_ulong base, target_ulong stride, \ + CPURISCVState *env, uint32_t desc) \ { \ uint32_t vm =3D vext_vm(desc); \ vext_ldst_stride(vd, base, stride, env, desc, vm, LOAD_FN, \ @@ -337,9 +336,8 @@ 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) \ +void HELPER(NAME)(void *vd, target_ulong base, target_ulong stride, \ + CPURISCVState *env, uint32_t desc) \ { \ uint32_t vm =3D vext_vm(desc); \ vext_ldst_stride(vd, base, stride, env, desc, vm, STORE_FN, \ 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 28 00:13:54 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=1786823292; cv=none; d=zohomail.com; s=zohoarc; b=BuLRMZyWibzLJeiRuiOyWQmeiYWjmrS5ZqqOw8iguj4q5mkIHGs2MwQaDebzypcTz8e1bn72eFOFzu6+HFkVdzWtc9+0GGsemqQCLUJKkQMtMMJwnUxnGJam5/e8/pjDjG2c/CNyk4WoYfgEfwM3ZoLD9fhFOqfObgYz+x7+V3M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786823292; 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=mYRQeAvknjyLDklW5tIpZ3uNJGDTrB+oedKoB4JiGRA=; b=fsUFsWb5PRTAQdr2N3l9vr3KJ8hW0ficwEmeTPck6nBMKwbu7G3ddPLkZ2TtRnKvwg2jyuJvJoLYp9hCVOwUGLOw92iHRqrg1MU7vpRHtoZjuTsWgtAOgWMTDYJ4ruk3No+Pek3PU2PamFNUJNOo0IvhaUW/rExtlSNsMSto5gc= 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 178682329217217.986479873482153; Sat, 15 Aug 2026 12:48:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wvKKu-0007XM-1P; Sat, 15 Aug 2026 15:46:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wvKKs-0007VT-2l for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:30 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wvKKq-0008PD-4D for qemu-devel@nongnu.org; Sat, 15 Aug 2026 15:46:29 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2cc97653887so35605635ad.1 for ; Sat, 15 Aug 2026 12:46:27 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae753ebcsm21179465ad.5.2026.08.15.12.46.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 12:46:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786823187; x=1787427987; 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=mYRQeAvknjyLDklW5tIpZ3uNJGDTrB+oedKoB4JiGRA=; b=g4ikNXdDR0JKVj4CbFGfWDj/B452xlzD7lsM9v4qA5J+PwdQeR45TUEU2ArXTZuJRk ZpwHTRlWruD53c9NJNfs4kyI3CjpfFU6zHY8Zz7Z9BKGAGPqcASSN5WHOPY9gJ1aZws6 ekDeyIxdHYlWuYGJozwDnlTQm52vxKxlLFkNByeDcXCThH2/qB2qq+oyPKnbPDgI8k3d SBY1QeB4oXN6xtsr9vCmyCNcKV6unqHWTtUB7egwreNzBW4HAxIKiolpl7aPE3hI6GvO h2nj4hZT1IOQvJNLOR9arFyAQqfO10jQ53hRChQ7aFIss/ZxstVOjfZlhxhRgyO4qbHY +R8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786823187; x=1787427987; 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=mYRQeAvknjyLDklW5tIpZ3uNJGDTrB+oedKoB4JiGRA=; b=Yh0prEQ9XLhrBjy/N/2bvDUtxauuIvb6Dk7jaYvu4eM56Z04FXReYR7Mf972QPWaQ6 jNk4rQs7+JJxgaTI7SI8ihO8Efy7rnxEn3HCwFHqD8AzUhbImJC93YvrHR6C014Iqela drVs3hQuNm5pgcsS72fEjL39RmNCPaTh75PcE4bORCkwg49xnwIsXA0PksVvEIDUdIim FY9Z/dT4ndAQ4d6P0YRG0z4h6d1+BHoMCvh4d1AM6GKUtYMqOXiSWoGFDPxwlMYdhMz0 dMtsT5rVPa9K40AVuKOhZRRBIBXqtnwwu6Lmyn2fjh5yAqEbguznaN/2g1vCq5BmZhLI Wihg== X-Gm-Message-State: AOJu0Yzm3xTv0pbpmASn9i5ya2fx5F+t8lvUssBH4zPhL0T4qbWD/7pg MRVvWRIhvoC+kyowccwt0O+he/V0H9DMcfyeTYrwt2FDDb3yxBFgu+kR9QjtknMhYYkGm2U8a6t nG0C0 X-Gm-Gg: AR+sD11bsH7wQP14xQ+iSdmmu4s723PWhRfUXKjyyZMjLP2yiO+SLHjxqjqg2LKtt/G /4Id5NXzyVKeN+5Dp+hM4V9bDQeza/gwK+LSnecF1k/2kpCYOPjYZw6iHj8WYbc4jTwNvJ/JCCV VF+55il+JNKVsnDK0QYNE39IKacr64UG/qedVmtZEp28eZmG6KTNlFyOHT/dNnVZn1UdmHewhuc hPnSFljH4gp/8/FjWpOXVpMt9aIe5B4yC45Nav3quMT+dNgz3oomJWjZpwXOTZJNhDaw4IITapL ZzrQhS/Nko6IXeSEmYty16ZuGuqxnQDdTSi7GSGej6GCbsdWWNly2M15r1f7symfTRCKZqMVHk3 MkGj/CE7XFclhnj5I4mbxsjdHmzeyVJT2MvoiO7O6lyIv29XyChicpslC85hHqw5Cu8cFMD7I4s 1vnH+NXVDrRruFa9xZzuJvWxEmYu9Sr3Va4stpkv1MlOrE/1OdNnDNIe2pypfveu+XmqR2uzOsd y6fkhjiOuqd2G0p73dd X-Received: by 2002:a17:902:e78c:b0:2ca:e19c:986 with SMTP id d9443c01a7336-2d3b0cdbd75mr172887785ad.1.1786823186696; Sat, 15 Aug 2026 12:46:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: frank.chang@sifive.com, max.chou@sifive.com, qemu-riscv@nongnu.org Subject: [PATCH 23/23] target/riscv: Drop v0 argument from gen_helper_ldst_index Date: Sat, 15 Aug 2026 12:45:48 -0700 Message-ID: <20260815194549.1377505-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260815194549.1377505-1-richard.henderson@linaro.org> References: <20260815194549.1377505-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786823293613158500 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 82a478962b..96fb2347df 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -188,38 +188,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 354c0b0da5..b7b3805a6d 100644 --- a/target/riscv/tcg/vector_helper.c +++ b/target/riscv/tcg/vector_helper.c @@ -601,12 +601,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); @@ -638,10 +639,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 @@ -663,10 +664,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