From nobody Thu Apr 30 01:49:14 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=1776284479; cv=none; d=zohomail.com; s=zohoarc; b=XdnO2+1OgxdJ2URLzdXlsCsi9Bp/aw4Tqba0LkleoYsUxyDK/8Mw1bdVPrurLhcR4T0LI0WEl2l7waGJ1X0hJ0CU20TLvi/ifdCgE7Yx9/xrmfvhrrYWASw/KtUeU7GLwCwGri3rtaXRN/bXCzKTXyzabpVQEHIaVKHEpmTGHdk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776284479; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=V/fJbCFAPRAVo1uJrZAiFTkDKhoSheG/KaRtMAVYIKE=; b=J2hUtMLZp5z9KqhDuBuWYuxUuwjDIwc8Sv/n5jDnyg8Umrr0yrRd9yPNNGMILqsIV8HLkxJamP1BGYF/O6b9eKdk0rwp20bbdT0LXAX24odxjvX5FWXQlpQB8jplHIEx5EqTQA7ZD7nEj5A9zE4uj9f+nKyR6axFSwocFQKDZkE= 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 1776284479307473.2801801983194; Wed, 15 Apr 2026 13:21:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wD6j6-0005gS-FO; Wed, 15 Apr 2026 16:20:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wD6j4-0005cq-Nb for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:20:42 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wD6j3-0001kX-3D for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:20:42 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-43d7a5e77b1so2277523f8f.1 for ; Wed, 15 Apr 2026 13:20:40 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43ead35662csm7070366f8f.14.2026.04.15.13.20.37 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 15 Apr 2026 13:20:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776284439; x=1776889239; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=V/fJbCFAPRAVo1uJrZAiFTkDKhoSheG/KaRtMAVYIKE=; b=tZU5TrsRIfC/Hlb+eCAIU7UwBt3V7UJqIXUoReRtCVxxotGKNdyXxxEQXh8JD7CVtS vCeZpFHpJ8npRqS/VP/a7YUqu2o/lpaLIZSlSg6/9Ylk+kuuspxJhX7DMz/UPSyUTmNB GwMR1Du7zQfLv6ovaE8Gqm9+wHFm+8hrtffvpjVOXCXbu+Dm6GgZt4kB0BQ7gx2X59wA 8XwQGUuTo8YrDE7w38E+rud0Jm75kVYhJNho5byBc7c3jisoA6gdemgWcWmK+cA7jsMu LLy5ff1W93lX9iTs5f5+wA0vgBuKlklcmIs/wUSHj8ys/H9v5mB3VPcvdnZdGWUWIuYw 107A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776284439; x=1776889239; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=V/fJbCFAPRAVo1uJrZAiFTkDKhoSheG/KaRtMAVYIKE=; b=o/eO/s/IdK+wUh8qgl8o2axvz6C+MgD6xmqTWYQCQohbv6DFWpkLX8FWNTKvCfeXj2 Knanb4+z8BmVgfHNV4umiC5WjQ1eg5FplcmyS73vOwVfbu6QVEVa6mmrf+dvrD4FP6rg ysCQe35QZlcTrnP37y0B53lL8lLuVSC1BMNT5ym0gdldxA6ZT0gWOf7OxCY3TVmrgs05 3f/vYp/2IM4/BDYFlzXMnDZ7kveCqjsekkonFW9P5E+ZLtO0ZObgKNFrtXlsVj8/XM7R mNUpIiFrMVhm+4KyPy2fJTdSLXLHMHdbusYxFT+KJqIMw9vWgETyfQ85qo6lqOvB4Ur9 p6ng== X-Gm-Message-State: AOJu0YxpUaczN3dI3vIKmarxQTwx5gKDWH/a5WZxzsOL3ZDqMAqFcNwi f3CPoEvmwxpk/VSVK8T65JsKSowmSesprodKWX0+9KYhRKT7iiHL6s/chbavX1BLQH81dlyrSZK tiQ+D1b4= X-Gm-Gg: AeBDietOANEqoqnReN+jcSMqx6GJBiyRF2C7qjpxRrcv/Y+wJ/NXflxPj6zKetI92Jq XgW3nsVDRLoX1Mi4kYdUMaFEfn6mRvdWFiAE9dFCvN90zgKhQlclhqz+FYFk8/IIwv/YuXN2qt2 01xsC91gLDyblNprjveZ3gKCz3uWr26AMUY+CpDylRK84VTQALLC6TS9+nCUemSZKHWRK8S6RFF v0hpGulmOV8lIrRZcdJmMIcpkLEIpKlB4NX05oUU7SZu7pE0k7T7/FdOf8xwHXAANKhOTLAzudA 1Z4hVPAe0Wc4HvO5aR/94QFcRyw9eL8ZlJznwv4QCLZUCQv4ZVwHSdEmbhVau1pUClDqUeMfO5R w0j/haCSuRnu0reJi94JG4+FxmfbAGt8gV7H5PcAGX/4ZN20u8iiP/p0huhlRJjXBK1gFfXuK2+ QWbowrTal0uTumEDq5rTFbDylN80PzI+2PzZiCaIvd9Hy//yBvkgxUCcN65JtfknJh/v6jR3iK X-Received: by 2002:a05:6000:2812:b0:439:ccd7:cdcc with SMTP id ffacd0b85a97d-43eb10e5a7bmr720188f8f.18.1776284439048; Wed, 15 Apr 2026 13:20:39 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Richard Henderson Cc: Jiaxun Yang , Aleksandar Rikalo , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [RFC PATCH v5 1/6] target/mips: Expand TRANS_DF_iv() macro for MSA Load/Store Date: Wed, 15 Apr 2026 22:20:21 +0200 Message-ID: <20260415202027.83008-2-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260415202027.83008-1-philmd@linaro.org> References: <20260415202027.83008-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=philmd@linaro.org; helo=mail-wr1-x430.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: 1776284481926158500 In order to ease the conversion of MSA Load/Store runtime helpers to translated code, expand the TRANS_DF_iv() macro. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- target/mips/tcg/msa_translate.c | 59 ++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translat= e.c index 82b149922fa..2e1a769e032 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -164,7 +164,6 @@ static inline bool check_msa_enabled(DisasContext *ctx) return true; } =20 -typedef void gen_helper_piv(TCGv_ptr, TCGv_i32, TCGv); typedef void gen_helper_pii(TCGv_ptr, TCGv_i32, TCGv_i32); typedef void gen_helper_piii(TCGv_ptr, TCGv_i32, TCGv_i32, TCGv_i32); typedef void gen_helper_piiii(TCGv_ptr, TCGv_i32, TCGv_i32, TCGv_i32, TCGv= _i32); @@ -175,9 +174,6 @@ typedef void gen_helper_piiii(TCGv_ptr, TCGv_i32, TCGv_= i32, TCGv_i32, TCGv_i32); }; \ TRANS(NAME, trans_func, NAME##_tab[a->df]) =20 -#define TRANS_DF_iv(NAME, trans_func, gen_func) \ - TRANS_DF_x(iv, NAME, trans_func, gen_func) - #define TRANS_DF_ii(NAME, trans_func, gen_func) \ TRANS_DF_x(ii, NAME, trans_func, gen_func) =20 @@ -758,25 +754,64 @@ TRANS(FTINT_U, trans_msa_2rf, gen_helper_msa_ftint_u= _df); TRANS(FFINT_S, trans_msa_2rf, gen_helper_msa_ffint_s_df); TRANS(FFINT_U, trans_msa_2rf, gen_helper_msa_ffint_u_df); =20 -static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i *a, - gen_helper_piv *gen_msa_ldst) +static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i *a, bool is_load) { - TCGv taddr; + TCGv_i32 wd; + TCGv_va addr; =20 if (!check_msa_enabled(ctx)) { return true; } =20 - taddr =3D tcg_temp_new(); + addr =3D tcgv_va_temp_new(); + gen_base_offset_addr(ctx, addr, a->ws, a->sa << a->df); =20 - gen_base_offset_addr(ctx, taddr, a->ws, a->sa << a->df); - gen_msa_ldst(tcg_env, tcg_constant_i32(a->wd), taddr); + wd =3D tcg_constant_i32(a->wd); + + if (is_load) { + switch (a->df) { + case 0: + gen_helper_msa_ld_b(tcg_env, wd, addr); + return true; + case 1: + gen_helper_msa_ld_h(tcg_env, wd, addr); + return true; + case 2: + gen_helper_msa_ld_w(tcg_env, wd, addr); + return true; + case 3: + gen_helper_msa_ld_d(tcg_env, wd, addr); + return true; + } + } else { + switch (a->df) { + case 0: + gen_helper_msa_st_b(tcg_env, wd, addr); + return true; + case 1: + gen_helper_msa_st_h(tcg_env, wd, addr); + return true; + case 2: + gen_helper_msa_st_w(tcg_env, wd, addr); + return true; + case 3: + gen_helper_msa_st_d(tcg_env, wd, addr); + return true; + } + } =20 return true; } =20 -TRANS_DF_iv(LD, trans_msa_ldst, gen_helper_msa_ld); -TRANS_DF_iv(ST, trans_msa_ldst, gen_helper_msa_st); +static bool trans_LD(DisasContext *ctx, arg_msa_i *a) +{ + return trans_msa_ldst(ctx, a, true); +} + +static bool trans_ST(DisasContext *ctx, arg_msa_i *a) +{ + return trans_msa_ldst(ctx, a, false); +} =20 static bool trans_LSA(DisasContext *ctx, arg_r *a) { --=20 2.53.0 From nobody Thu Apr 30 01:49:14 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=1776284511; cv=none; d=zohomail.com; s=zohoarc; b=m19V6+Fqx6DidiZXRF5tIzV19yJVfBDXAV1zqsjNo9MQ0av3etMN9UsQIDsGkeI5KW+eXu7b1AMKmxVgTZe2pZR+J28M3146YNu2oPXnvDNNcLeUX+5LxWpdqcHWBFz46ySkvHKvnCcxyIkgVBkCSHQpXDmEUJC7guDPiiX9beU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776284511; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4LXW55SWZ5i76XTZpCWe3HLcWznDOC4tq1zgusBrG7Y=; b=Uxgry0EPzaUc19L+KgoCcs8PNTaxwpTrxaUCa2dD91mKabo8DxUzqvw9iZYzlZIzPepVlKEgxX41Bx2E1putAs763IqjyC44qNwMEvpOoHRlcvKznsN9SAfouRV1+d9WBNSsHtW9KjviID48MO82JHy6xZ7R3ZB2iyxWeV/I4rY= 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 1776284511878843.6389901065318; Wed, 15 Apr 2026 13:21:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wD6jT-0005lK-7E; Wed, 15 Apr 2026 16:21:09 -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 1wD6jO-0005kd-93 for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:21:04 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wD6jC-0001pc-LR for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:20:53 -0400 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-43cf7683a28so4899894f8f.2 for ; Wed, 15 Apr 2026 13:20:49 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43ead33d6e9sm7792609f8f.1.2026.04.15.13.20.44 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 15 Apr 2026 13:20:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776284446; x=1776889246; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4LXW55SWZ5i76XTZpCWe3HLcWznDOC4tq1zgusBrG7Y=; b=QEG68PCbr8IT1dHvlyLwElGynUyja8fbahApNZpSU7kUmdP0UTOJHKA/BZPRASBaat jGRXLpS9H3Z1MbCnOQ8WXlvJeHsy/UaeeXbg9n2f0lkU0KiyU0dQxW46HrE3vKptI7OQ XEQ+ImwvqBW2Mcu0ZpDzJ0fuZD1zPNzhkm2/1mL7s1Jb9bcK0Wz4SqnB703p3+oC4spe 7Hr/gObiPWUnyvxbq3Du2WlN87Nr6UYaEhqjd1TO3CdQ8JR7smI2TnYlLdHxiTbTIDDp RhdkTds4Sd6IBLtq5I+QyMG/hRsUyeBVrRd6OXvqhCHK0jBHhr+BY//mMfVB/SXKKodw IfIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776284446; x=1776889246; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=4LXW55SWZ5i76XTZpCWe3HLcWznDOC4tq1zgusBrG7Y=; b=AGVE9mjCOABVUbQywq4A2ULtuKXsnz0iKTNFnBgxHI0et/vRyfOkNAzmSIyh66mxAE 4GaoDTahIVgU21/cyDNzIXISVqWqDM03QmN8sbVNsM8GCJZG8c2woKh3LbdlaI/5KP8Y 7GBuvrSKwDJctQGcJjyQpRy88c5YgrOEqdDH56HpDj3HbzA2PP1l/SnGuLpgccEYgwDp +fOiXZwoASYBh/2lL1rkNX80QdDRwcZ7NB3MmsfefzJV4AVvP+R6HmlqqbWaBFIg/u5P CkiQ83bXwGMQTquSDUfecq4OYUglhR6FjXch9tKXwHZS9MFoUkifR6cWG4YMUaBhp2yt hlWw== X-Gm-Message-State: AOJu0Ywm1w5Xhw9sS+IU5wCzbDREr7tfBH+UfqiggSim7ZYO1q4uiSoj NXaYVPX4O9LNArGiHjgXCz98PJFQ2581OoQqXXxr7eff23RfofekynNNpZVr9b0YIWEuO47vFG0 lu6fDsIo= X-Gm-Gg: AeBDietI2thyp4X1YtoR+l04lSkjhNNHPIhNHpX1EUUEw0y8gNNN7YpeCgnxqh78ISH psWKegN1n5sID6b8jKUosQy/c3Im4nsxJUolHFLFhXWtXZZOaUjGLdB5VCXey0gM3qXnbh/2tNY iP6fGwUtF5dpgf6ZNMhLs/DutkTQ1/dE/Bc8ny+HKx9rpzf19Zvebmtq+F7strbom05dkWy/LCF 8DyIAJdKIDUeZOoiUEIP+0FecOuEmf+tjKeQnxaWRUEUuww/yV+mXhe97Q8QYWy96q7DgYLlXZh wn7JucLBPVUBs0OrO++Y2qyAEx3yvzedfQbyM5/vYG0E2j+XXd533VOJhP8OBW9DH33pI3uyYoz YuNvSXRJ2OdVEvQ9vNhLrjY3Vm5ZE49IsuxWTVDHAV9DJ99CRyQlz9fkgvC5CUR1zdhNbU4yyDv 1zU25juSv7yUZforx3vwSDsg8ppFmLndM91D+fZSftQoWtm8FdCtlDaEccKPtfOwkXg38zMKp2 X-Received: by 2002:a05:6000:60f:b0:43e:a69b:d814 with SMTP id ffacd0b85a97d-43ea69bd9fcmr12554190f8f.28.1776284446287; Wed, 15 Apr 2026 13:20:46 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Richard Henderson Cc: Jiaxun Yang , Aleksandar Rikalo , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [RFC PATCH v5 2/6] target/mips: Convert MSA LD/ST.B (Byte Vector) Date: Wed, 15 Apr 2026 22:20:22 +0200 Message-ID: <20260415202027.83008-3-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260415202027.83008-1-philmd@linaro.org> References: <20260415202027.83008-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::435; envelope-from=philmd@linaro.org; helo=mail-wr1-x435.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: 1776284514394154100 Replace runtime helpers by translation. Replace the legacy cpu_ld/st*_data_ra() calls by tcg_gen_qemu_ld/st() which allow to respect atomicity. Consider the host endianness. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- target/mips/tcg/msa_helper.h.inc | 1 - target/mips/tcg/msa_helper.c | 28 ---------------------------- target/mips/tcg/msa_translate.c | 30 ++++++++++++++++++++++++------ 3 files changed, 24 insertions(+), 35 deletions(-) diff --git a/target/mips/tcg/msa_helper.h.inc b/target/mips/tcg/msa_helper.= h.inc index 4963d1553a0..50a2732e916 100644 --- a/target/mips/tcg/msa_helper.h.inc +++ b/target/mips/tcg/msa_helper.h.inc @@ -436,7 +436,6 @@ DEF_HELPER_4(msa_ffint_u_df, void, env, i32, i32, i32) #define MSALDST_PROTO(type) \ DEF_HELPER_3(msa_ld_ ## type, void, env, i32, tl) \ DEF_HELPER_3(msa_st_ ## type, void, env, i32, tl) -MSALDST_PROTO(b) MSALDST_PROTO(h) MSALDST_PROTO(w) MSALDST_PROTO(d) diff --git a/target/mips/tcg/msa_helper.c b/target/mips/tcg/msa_helper.c index f554b3d10ee..d9f35fca657 100644 --- a/target/mips/tcg/msa_helper.c +++ b/target/mips/tcg/msa_helper.c @@ -8223,20 +8223,6 @@ static inline uint64_t bswap32x2(uint64_t x) return ror64(bswap64(x), 32); } =20 -void helper_msa_ld_b(CPUMIPSState *env, uint32_t wd, - target_ulong addr) -{ - wr_t *pwd =3D &(env->active_fpu.fpr[wd].wr); - uintptr_t ra =3D GETPC(); - uint64_t d0, d1; - - /* Load 8 bytes at a time. Vector element ordering makes this LE. */ - d0 =3D cpu_ldq_le_data_ra(env, addr + 0, ra); - d1 =3D cpu_ldq_le_data_ra(env, addr + 8, ra); - pwd->d[0] =3D d0; - pwd->d[1] =3D d1; -} - void helper_msa_ld_h(CPUMIPSState *env, uint32_t wd, target_ulong addr) { @@ -8310,20 +8296,6 @@ static inline void ensure_writable_pages(CPUMIPSStat= e *env, } } =20 -void helper_msa_st_b(CPUMIPSState *env, uint32_t wd, - target_ulong addr) -{ - wr_t *pwd =3D &(env->active_fpu.fpr[wd].wr); - int mmu_idx =3D mips_env_mmu_index(env); - uintptr_t ra =3D GETPC(); - - ensure_writable_pages(env, addr, mmu_idx, ra); - - /* Store 8 bytes at a time. Vector element ordering makes this LE. */ - cpu_stq_le_data_ra(env, addr + 0, pwd->d[0], ra); - cpu_stq_le_data_ra(env, addr + 8, pwd->d[1], ra); -} - void helper_msa_st_h(CPUMIPSState *env, uint32_t wd, target_ulong addr) { diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translat= e.c index 2e1a769e032..340a0a14aaf 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -756,8 +756,16 @@ TRANS(FFINT_U, trans_msa_2rf, gen_helper_msa_ffint_u_= df); =20 static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i *a, bool is_load) { + static const MemOp mo_atom_df[4] =3D { + MO_ATOM_NONE, + }; TCGv_i32 wd; + TCGv_i128 t16; TCGv_va addr; + MemOp mop; + int idx =3D a->wd << 1; + TCGv_i64 d0 =3D msa_wr_d[idx + FP_ENDIAN_IDX]; + TCGv_i64 d1 =3D msa_wr_d[idx + !FP_ENDIAN_IDX]; =20 if (!check_msa_enabled(ctx)) { return true; @@ -770,9 +778,6 @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i= *a, bool is_load) =20 if (is_load) { switch (a->df) { - case 0: - gen_helper_msa_ld_b(tcg_env, wd, addr); - return true; case 1: gen_helper_msa_ld_h(tcg_env, wd, addr); return true; @@ -785,9 +790,6 @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i= *a, bool is_load) } } else { switch (a->df) { - case 0: - gen_helper_msa_st_b(tcg_env, wd, addr); - return true; case 1: gen_helper_msa_st_h(tcg_env, wd, addr); return true; @@ -800,6 +802,22 @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_= i *a, bool is_load) } } =20 + t16 =3D tcg_temp_new_i128(); + + mop =3D MO_128 | MO_LE; + mop |=3D a->df << MO_ASHIFT; /* MO_ALIGN */ + mop |=3D mo_atom_df[a->df]; + + if (is_load) { + tcg_gen_qemu_ld_i128(t16, addr, ctx->mem_idx, mop); + tcg_gen_extr_i128_i64(d0, d1, t16); + } + + if (!is_load) { + tcg_gen_concat_i64_i128(t16, d0, d1); + tcg_gen_qemu_st_i128(t16, addr, ctx->mem_idx, mop); + } + return true; } =20 --=20 2.53.0 From nobody Thu Apr 30 01:49:14 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=1776284511; cv=none; d=zohomail.com; s=zohoarc; b=DfVS4mQT29h/jev7ZdSM99hC8DNTZBLwaX5N8N3g6WvxXQ58NFnSt/2t8EQY9H7GnUJcG2pFYabvrwbP6X2JTd4fhwzqDHPNHuQMBajVzzhL9vd0TS63vqViBQp6p9NRuThTWkgmbHFTt5LPjH+Ct0y8BpR4Z5LOVy/hj9Um6x0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776284511; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=spGxmOhOSsGGCE7d6Xa2sLvNfzB1VyOj40S+qP0AZgw=; b=GSvFNJUl2fja9DopCBNKq/nO4MIP01c3WSG5cZcSA8YaK4sgPv1XEc9ha8hPt0NVNiSCLT/FZvcRlhDYfuTDugEc3i2lU90194QcClHmfjO5p6Sab1eoxYfgmXvMNbawJaceBRwKlW4Ou0En17odeCpwGQGyb1iHRJYki/XHmbE= 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 1776284511044872.0524785955187; Wed, 15 Apr 2026 13:21:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wD6jX-0005mR-VJ; Wed, 15 Apr 2026 16:21:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wD6jT-0005lJ-Ae for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:21:09 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wD6jO-00020t-2j for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:21:06 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-488a88aeec9so96088325e9.2 for ; Wed, 15 Apr 2026 13:20:56 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488f208451bsm62746255e9.14.2026.04.15.13.20.52 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 15 Apr 2026 13:20:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776284454; x=1776889254; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=spGxmOhOSsGGCE7d6Xa2sLvNfzB1VyOj40S+qP0AZgw=; b=By+R9G4IWKBjhevZeceZuzzheXwN1KSk1ZvFrVS10N54+dDv9NK9t3umSw9Kzb/68m QZSnPCNQcE2SJFNgg9a7lYZzgdooLIwvtRYbbkljSnSvS4zFOd42wwvVQiXGh1vRkGZj 0N6Zsm7QGfqm7EoAEc02iVeS30aQj9+746pz/VtQUY2eoUiOr4LKD/l6+wgGOqBqeqym QBmC65IWWiiXNTPDBcKKjB8i30UHweG0dLLhUTfeXg2NxpS0ApMniVZxsXtsuTuvQEQh rwXLqWuKGMqBf2WRQ4j9fzUqQh/lXGqpg6wae75c+eDDywCXSTAc9t0y4rChwcAp+B22 2T3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776284454; x=1776889254; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=spGxmOhOSsGGCE7d6Xa2sLvNfzB1VyOj40S+qP0AZgw=; b=etPGKG3IwAkbBhOVZAboTcC4VpfI3HmuXr9Jdeu07YvOSdzHJp35dZhB9gMz2NUiVt j6U6aFp/pMhYK6rMX72zFDkp1OkVeRzOsDjmBlNTMYdbkdndrdUL0Xehtlq17CagyqZB Y4msnaHlWhfntN/qH4iGVvwH4tzXFfOkTl8l/y9hGFnpPh9WgojfxkFvd9NFLflxRMdv 772K7D8Tbwoz2vIVnUZnt0DZIvjKfEZUTkfVUqN5ptEgTihWbCVvd7bk6JrgDo9q0h9z CunnOb1PdJ8VeeaQKV3aqXETl9DXxds4Tea1o0klU2V8pkJJXAQlmop+7//NkbzYqFJb FPtQ== X-Gm-Message-State: AOJu0YzRdEYBTskTYHTlJYU3WTpaKQNPVY70Aar8feMZWIfJPQjwExUB suh4b7fH8GpW/pfGi5hFOdO5p5FmHAyITqekz4qmYLeChstbE3JNB1XWbIf9JOqPUWcIHs8Aea/ IgboGp20= X-Gm-Gg: AeBDietshFEF3QCCMlFFYBGlWO4xXEo3vd2BLDk68UQLefIQBuA4hwq+dU1pJItXwFq ALXTxfsRSlGxM7s3ygYNK/WxWuN9cELy1BcJfcO6jt8npPLAe12lYKkqWL+Phy3fHwNGp3kQFcl D3lb2DhxZoaXV2TZ/VZOya/gbkgTPD39r6X0EShcElD5ctk5C5WzstwEWU6EBh2Sx8yD/VTH15I NR10SKKO1eNc3iKGQgblb+CItmzjOcNCCT6Wp3ZP5Ie/oqERej89HGYfrHx4hG9z99qtZKeIx5E kd9acTKatnHdxL0DFnCbH53V5cgcuRQax+NYychvOuubMEXaVCjj2Vn8SaKlu34UYNXxfU+4D1w q+ZeyTQ+7khS579xXz7WpZguzjbTDrh9p8zO52+REs+ty1i34wAlpdULEzAKiNAv4ymqPiGYIuB ZUAO0Mr7AR87fP4SRXJLs4ZHzjJW2PN8A51/jHMvATljtEiJSWWWwsmtj+DxOLzyY7ENd3bqAF X-Received: by 2002:a05:600c:a404:b0:488:bfc3:ef3 with SMTP id 5b1f17b1804b1-488d6671271mr285797805e9.0.1776284453909; Wed, 15 Apr 2026 13:20:53 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Richard Henderson Cc: Jiaxun Yang , Aleksandar Rikalo , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [RFC PATCH v5 3/6] target/mips: Convert MSA LD/ST.H (Halfword Vector) Date: Wed, 15 Apr 2026 22:20:23 +0200 Message-ID: <20260415202027.83008-4-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260415202027.83008-1-philmd@linaro.org> References: <20260415202027.83008-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=philmd@linaro.org; helo=mail-wm1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1776284512450154100 Replace runtime helpers by translation. Replace the legacy cpu_ld/st*_data_ra() calls by tcg_gen_qemu_ld/st() which allow to respect atomicity. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/msa_helper.h.inc | 1 - target/mips/tcg/msa_helper.c | 48 -------------------------------- target/mips/tcg/msa_translate.c | 32 +++++++++++++++++---- 3 files changed, 26 insertions(+), 55 deletions(-) diff --git a/target/mips/tcg/msa_helper.h.inc b/target/mips/tcg/msa_helper.= h.inc index 50a2732e916..86a79bf804c 100644 --- a/target/mips/tcg/msa_helper.h.inc +++ b/target/mips/tcg/msa_helper.h.inc @@ -436,7 +436,6 @@ DEF_HELPER_4(msa_ffint_u_df, void, env, i32, i32, i32) #define MSALDST_PROTO(type) \ DEF_HELPER_3(msa_ld_ ## type, void, env, i32, tl) \ DEF_HELPER_3(msa_st_ ## type, void, env, i32, tl) -MSALDST_PROTO(h) MSALDST_PROTO(w) MSALDST_PROTO(d) #undef MSALDST_PROTO diff --git a/target/mips/tcg/msa_helper.c b/target/mips/tcg/msa_helper.c index d9f35fca657..5489d8830dd 100644 --- a/target/mips/tcg/msa_helper.c +++ b/target/mips/tcg/msa_helper.c @@ -8212,38 +8212,11 @@ void helper_msa_ffint_u_df(CPUMIPSState *env, uint3= 2_t df, uint32_t wd, /* Element-by-element access macros */ #define DF_ELEMENTS(df) (MSA_WRLEN / DF_BITS(df)) =20 -static inline uint64_t bswap16x4(uint64_t x) -{ - uint64_t m =3D 0x00ff00ff00ff00ffull; - return ((x & m) << 8) | ((x >> 8) & m); -} - static inline uint64_t bswap32x2(uint64_t x) { return ror64(bswap64(x), 32); } =20 -void helper_msa_ld_h(CPUMIPSState *env, uint32_t wd, - target_ulong addr) -{ - wr_t *pwd =3D &(env->active_fpu.fpr[wd].wr); - uintptr_t ra =3D GETPC(); - uint64_t d0, d1; - - /* - * Load 8 bytes at a time. Use little-endian load, then for - * big-endian target, we must then swap the four halfwords. - */ - d0 =3D cpu_ldq_le_data_ra(env, addr + 0, ra); - d1 =3D cpu_ldq_le_data_ra(env, addr + 8, ra); - if (mips_env_is_bigendian(env)) { - d0 =3D bswap16x4(d0); - d1 =3D bswap16x4(d1); - } - pwd->d[0] =3D d0; - pwd->d[1] =3D d1; -} - void helper_msa_ld_w(CPUMIPSState *env, uint32_t wd, target_ulong addr) { @@ -8296,27 +8269,6 @@ static inline void ensure_writable_pages(CPUMIPSStat= e *env, } } =20 -void helper_msa_st_h(CPUMIPSState *env, uint32_t wd, - target_ulong addr) -{ - wr_t *pwd =3D &(env->active_fpu.fpr[wd].wr); - int mmu_idx =3D mips_env_mmu_index(env); - uintptr_t ra =3D GETPC(); - uint64_t d0, d1; - - ensure_writable_pages(env, addr, mmu_idx, ra); - - /* Store 8 bytes at a time. See helper_msa_ld_h. */ - d0 =3D pwd->d[0]; - d1 =3D pwd->d[1]; - if (mips_env_is_bigendian(env)) { - d0 =3D bswap16x4(d0); - d1 =3D bswap16x4(d1); - } - cpu_stq_le_data_ra(env, addr + 0, d0, ra); - cpu_stq_le_data_ra(env, addr + 8, d1, ra); -} - void helper_msa_st_w(CPUMIPSState *env, uint32_t wd, target_ulong addr) { diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translat= e.c index 340a0a14aaf..111d9eedd11 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -754,10 +754,27 @@ TRANS(FTINT_U, trans_msa_2rf, gen_helper_msa_ftint_u= _df); TRANS(FFINT_S, trans_msa_2rf, gen_helper_msa_ffint_s_df); TRANS(FFINT_U, trans_msa_2rf, gen_helper_msa_ffint_u_df); =20 +/* + * Byte pattern: ab.cd.ef.gh -> ba.dc.fe.bg + */ +static void gen_bswap16x4_i64(TCGv_i64 dst, TCGv_i64 src) +{ + uint64_t m =3D 0x00ff00ff00ff00ffull; + TCGv_i64 t0 =3D tcg_temp_new_i64(); + TCGv_i64 t1 =3D tcg_temp_new_i64(); + /* src =3D abcdefgh */ + tcg_gen_andi_i64(t0, src, m); /* t0 =3D .b.d.f.h */ + tcg_gen_shli_i64(t0, t0, 8); /* t0 =3D b.d.f.h. */ + tcg_gen_shri_i64(t1, src, 8); /* t1 =3D habcdefg */ + tcg_gen_andi_i64(t1, t1, m); /* t1 =3D .a.c.e.g */ + tcg_gen_or_i64(dst, t0, t1); /* dst =3D badcfebg */ +} + static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i *a, bool is_load) { static const MemOp mo_atom_df[4] =3D { MO_ATOM_NONE, + MO_ATOM_SUBALIGN, /* Slightly stronger than required */ }; TCGv_i32 wd; TCGv_i128 t16; @@ -778,9 +795,6 @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i= *a, bool is_load) =20 if (is_load) { switch (a->df) { - case 1: - gen_helper_msa_ld_h(tcg_env, wd, addr); - return true; case 2: gen_helper_msa_ld_w(tcg_env, wd, addr); return true; @@ -790,9 +804,6 @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i= *a, bool is_load) } } else { switch (a->df) { - case 1: - gen_helper_msa_st_h(tcg_env, wd, addr); - return true; case 2: gen_helper_msa_st_w(tcg_env, wd, addr); return true; @@ -813,6 +824,15 @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_= i *a, bool is_load) tcg_gen_extr_i128_i64(d0, d1, t16); } =20 + if (mo_endian(ctx) !=3D MO_LE) { + switch (a->df) { + case 1: + gen_bswap16x4_i64(d0, d0); + gen_bswap16x4_i64(d1, d1); + break; + } + } + if (!is_load) { tcg_gen_concat_i64_i128(t16, d0, d1); tcg_gen_qemu_st_i128(t16, addr, ctx->mem_idx, mop); --=20 2.53.0 From nobody Thu Apr 30 01:49:14 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=1776284507; cv=none; d=zohomail.com; s=zohoarc; b=n9gKTjqJeD4xc8DoYlmt4sU+4gbU73l3itldSNjtLieBCmMMbpjN6eNDtdK1Vkz0rfEe3zHIwwKgbL+WaCndUeAE/qEzShnDkoqhtRq4N5ewvbPftJ9X+TQqlS8OTt5vi9ImGBD+bU+fP1RSGPT4jYsrEjv5oUCbh7up+rMX2kw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776284507; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XQxFJPSgxiSAygD5mi5SczIQoWbnt2abBGmh2Uo80nw=; b=EnUmiI1crmQ7722+vTB6/kFtTmElvLChOA9suvtf2QvGYRhZm4XPEEFqoWTOHJS7YaYkhbsMB+eKrIInMBw0hhS4oxh/4qU+3BNF6TQyOg8NS/QLtbvTtWW0w/Oi1qoEdd1KCqTXv+8v2iWn0GLlxPru5t5lLPTp+VCE6eqkXfM= 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 1776284507453214.4926447239601; Wed, 15 Apr 2026 13:21:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wD6jX-0005mQ-VI; Wed, 15 Apr 2026 16:21:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wD6jT-0005lL-6l for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:21:07 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wD6jQ-00021R-N9 for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:21:06 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-43d572f7437so4601536f8f.1 for ; Wed, 15 Apr 2026 13:21:03 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43ead3ebaaasm7486042f8f.32.2026.04.15.13.20.59 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 15 Apr 2026 13:21:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776284461; x=1776889261; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XQxFJPSgxiSAygD5mi5SczIQoWbnt2abBGmh2Uo80nw=; b=ebaE+wpLRLagnJ+a3VUSd52Fp+asjEnp03czH2kmqZbRvAzEo2DufZdEPFjHzy657P eHQ53kXYvZAQU9aWECGMf9QxVz2EyQ64S4AMMfXs0wvV9eQcGaPt+SS/e7W2WdqGhu38 oP42a7qYrKPwUx2BzxfMWdkmg5GPM0Cy/bS5oHuAyYw7FoenXJDg8TonzljBFxhKWbMm DLfisc/Rqp7n2tnW83n8C/OcshEeoVBzsLwmJT6DEOk/ScUTLTWZBEGZHyVcMLXKpnh7 rFaM14Y7UsGg2mrxcZMQ9Kz3NE7vwkCm3+v/aOZPxH2zbXLXOuPIdNu3PBsyVcltR25T M2EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776284461; x=1776889261; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XQxFJPSgxiSAygD5mi5SczIQoWbnt2abBGmh2Uo80nw=; b=dWLgSLwz+G13NvC92Gk2lOptUKHmxN+hZqIBkFLFgy2UKti8l1giE7TWj/LQmYwE5O kJsXQzcR2fsqvIIR+wt6iCC+mn/Bnnvp8PxhZuvi3tR8tW6xPSkguRDR+S6oJY8v1tR6 GsORNNrmyzS4JRQ+0rzJ/VnShYNYjF00Sf26fj36KUUY3wkub632z/HJo7NzywC+MLLS EBdxzF2S+VC2JlyK5ON7YqrujE60kHo7TRB3/Y5DuIbkzidZxsHXO7k2T8QvY8FKWDkH FTK6VFePmYOhfR5WFXZu64yngwE1VgmfXWuSCU3bV492zB00DVZrxi3RiqvrATl0KwN8 L4Pg== X-Gm-Message-State: AOJu0YyuJiZ0R8q15RY6b5kpAoTtL+oLfZCIhjpFxXGQ2UCSvSwU7C5W DQewdSlTqc+11nJhBjQMnZmkruNtG3xZsvQX+1pwo3fP9niL2gX/7rpinbUa8l/CZ0pAzwcDS4t ELb2Qo1E= X-Gm-Gg: AeBDietjQha63ZyGA2LiJFHzYqCG+S3Ale7ERztbuU6RFWg77bPB/A1c02WcT6Fh9RN M9By++DInIodbTUg/maIa5U6HyMenXjl0FIw4NSHQ227huQQV6m049daobj1EDdNV5xHCqgVn++ uEB2tZ7rKlTyCA22IoeUnTyIfx+2Y9Dc8/U/OSYfvu4hL0Zyefcnf7Q3aJTiGMOwrDsFFolck1c UlvhmuV9ahZw92stSQQPzRoMD1WlxO1IzU4QR2ckkBS11NQK/YjZbaWFPE0eaDUlCSA7QDMshdb L7eOHN+FBuZuJgFnPXxzXCT40bN8MiJSSjAt0yqNEe1PPUqgHCXXWV8Ge70Xhi7GYa29GPJoRYC VtBWLJTgHAJ7mReVpaCQKvVZcCILWrPurfFMGUk01oAL1Nc7UWL6cfJWAt7JkMzhWzx6GhpGAh9 nBuiTjUDewg8NRTqKHrnyDLNjaPTLzTvDNRopTmQlaIlaWKiJgqahjEZrysT4wez5l83Jwrsu3 X-Received: by 2002:a05:6000:250f:b0:43d:1c7a:8b5b with SMTP id ffacd0b85a97d-43d642d1d00mr35230807f8f.40.1776284461492; Wed, 15 Apr 2026 13:21:01 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Richard Henderson Cc: Jiaxun Yang , Aleksandar Rikalo , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [RFC PATCH v5 4/6] target/mips: Convert MSA LD/ST.W (Word Vector) Date: Wed, 15 Apr 2026 22:20:24 +0200 Message-ID: <20260415202027.83008-5-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260415202027.83008-1-philmd@linaro.org> References: <20260415202027.83008-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42a; envelope-from=philmd@linaro.org; helo=mail-wr1-x42a.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: 1776284509874158500 Replace runtime helpers by translation. Replace the legacy cpu_ld/st*_data_ra() calls by tcg_gen_qemu_ld/st() which allow to respect atomicity. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- target/mips/tcg/msa_helper.h.inc | 1 - target/mips/tcg/msa_helper.c | 47 -------------------------------- target/mips/tcg/msa_translate.c | 20 ++++++++++---- 3 files changed, 14 insertions(+), 54 deletions(-) diff --git a/target/mips/tcg/msa_helper.h.inc b/target/mips/tcg/msa_helper.= h.inc index 86a79bf804c..f0d31ceef29 100644 --- a/target/mips/tcg/msa_helper.h.inc +++ b/target/mips/tcg/msa_helper.h.inc @@ -436,6 +436,5 @@ DEF_HELPER_4(msa_ffint_u_df, void, env, i32, i32, i32) #define MSALDST_PROTO(type) \ DEF_HELPER_3(msa_ld_ ## type, void, env, i32, tl) \ DEF_HELPER_3(msa_st_ ## type, void, env, i32, tl) -MSALDST_PROTO(w) MSALDST_PROTO(d) #undef MSALDST_PROTO diff --git a/target/mips/tcg/msa_helper.c b/target/mips/tcg/msa_helper.c index 5489d8830dd..c93c0cddebc 100644 --- a/target/mips/tcg/msa_helper.c +++ b/target/mips/tcg/msa_helper.c @@ -8212,32 +8212,6 @@ void helper_msa_ffint_u_df(CPUMIPSState *env, uint32= _t df, uint32_t wd, /* Element-by-element access macros */ #define DF_ELEMENTS(df) (MSA_WRLEN / DF_BITS(df)) =20 -static inline uint64_t bswap32x2(uint64_t x) -{ - return ror64(bswap64(x), 32); -} - -void helper_msa_ld_w(CPUMIPSState *env, uint32_t wd, - target_ulong addr) -{ - wr_t *pwd =3D &(env->active_fpu.fpr[wd].wr); - uintptr_t ra =3D GETPC(); - uint64_t d0, d1; - - /* - * Load 8 bytes at a time. Use little-endian load, then for - * big-endian target, we must then bswap the two words. - */ - d0 =3D cpu_ldq_le_data_ra(env, addr + 0, ra); - d1 =3D cpu_ldq_le_data_ra(env, addr + 8, ra); - if (mips_env_is_bigendian(env)) { - d0 =3D bswap32x2(d0); - d1 =3D bswap32x2(d1); - } - pwd->d[0] =3D d0; - pwd->d[1] =3D d1; -} - void helper_msa_ld_d(CPUMIPSState *env, uint32_t wd, target_ulong addr) { @@ -8269,27 +8243,6 @@ static inline void ensure_writable_pages(CPUMIPSStat= e *env, } } =20 -void helper_msa_st_w(CPUMIPSState *env, uint32_t wd, - target_ulong addr) -{ - wr_t *pwd =3D &(env->active_fpu.fpr[wd].wr); - int mmu_idx =3D mips_env_mmu_index(env); - uintptr_t ra =3D GETPC(); - uint64_t d0, d1; - - ensure_writable_pages(env, addr, mmu_idx, ra); - - /* Store 8 bytes at a time. See helper_msa_ld_w. */ - d0 =3D pwd->d[0]; - d1 =3D pwd->d[1]; - if (mips_env_is_bigendian(env)) { - d0 =3D bswap32x2(d0); - d1 =3D bswap32x2(d1); - } - cpu_stq_le_data_ra(env, addr + 0, d0, ra); - cpu_stq_le_data_ra(env, addr + 8, d1, ra); -} - void helper_msa_st_d(CPUMIPSState *env, uint32_t wd, target_ulong addr) { diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translat= e.c index 111d9eedd11..8486508f5ba 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -770,11 +770,21 @@ static void gen_bswap16x4_i64(TCGv_i64 dst, TCGv_i64 = src) tcg_gen_or_i64(dst, t0, t1); /* dst =3D badcfebg */ } =20 +/* + * Byte pattern: abcd.efgh -> dcba.hgfe + */ +static void gen_bswap32x2_i64(TCGv_i64 dst, TCGv_i64 src) +{ + tcg_gen_bswap64_i64(dst, src); + tcg_gen_rotri_i64(dst, dst, 32); +} + static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i *a, bool is_load) { static const MemOp mo_atom_df[4] =3D { MO_ATOM_NONE, MO_ATOM_SUBALIGN, /* Slightly stronger than required */ + MO_ATOM_SUBALIGN, /* Slightly stronger than required */ }; TCGv_i32 wd; TCGv_i128 t16; @@ -795,18 +805,12 @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa= _i *a, bool is_load) =20 if (is_load) { switch (a->df) { - case 2: - gen_helper_msa_ld_w(tcg_env, wd, addr); - return true; case 3: gen_helper_msa_ld_d(tcg_env, wd, addr); return true; } } else { switch (a->df) { - case 2: - gen_helper_msa_st_w(tcg_env, wd, addr); - return true; case 3: gen_helper_msa_st_d(tcg_env, wd, addr); return true; @@ -830,6 +834,10 @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_= i *a, bool is_load) gen_bswap16x4_i64(d0, d0); gen_bswap16x4_i64(d1, d1); break; + case 2: + gen_bswap32x2_i64(d0, d0); + gen_bswap32x2_i64(d1, d1); + break; } } =20 --=20 2.53.0 From nobody Thu Apr 30 01:49:14 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=1776284513; cv=none; d=zohomail.com; s=zohoarc; b=J4uZandn5Dykgma4YolZ4oIbvxPf4FDhqAXDNG9Xz56m783CgG/ap5FjDUe2aLq4CP8wOr8vaAt5ONEs6Ksq509oIAs5QRIEynmd3lLpXqy62BTbNAuRUr4a7X5tMctLiHL19667Jw1ncMNhk1iFncvSRv5xCmSOqu9/rpYalLo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776284513; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9tRASIuS0HGZ1KXlQIrarfjjRdCGTU4SsT3rkHsGSRk=; b=L8Hdzl7rBpouwpp4+bYPr3mfafMWii++MSIBufMzZi/Q6nIRbdzJ+sFKGPQzdsPiCu3Bd+I2/QXaXCEK0O5rd6RShvlSrCjRLpecgS3eemIsWq3nkg5WWePkaMfPWQTepJKsCVPhz7Tuj3W/11egjXWu4fumD0noz1VQCJA706w= 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 1776284513692719.9281432256325; Wed, 15 Apr 2026 13:21:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wD6jb-0005nS-JE; Wed, 15 Apr 2026 16:21:15 -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 1wD6jZ-0005n5-Nn for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:21:13 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wD6jX-00029U-TE for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:21:13 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-4838c15e3cbso68232695e9.3 for ; Wed, 15 Apr 2026 13:21:11 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488f0eb43f6sm27720695e9.25.2026.04.15.13.21.07 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 15 Apr 2026 13:21:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776284469; x=1776889269; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9tRASIuS0HGZ1KXlQIrarfjjRdCGTU4SsT3rkHsGSRk=; b=XMewRmWONnYAyynYj+99nvUUxzMiASVJx7Jo4/yDMJc/URdZbY/V9xqzQ9vNJQoqsx 4mWfxR6h40+IPrXk9azoDC65goTRnqt/M3vNnFB5jCzqfohtrYg1lcrmo/GT9f/YZO3o A5f2QIctyDY6zwlQZds7qkHpDo4hCxdMw2cfQYrl+shjgczENsAuh4OTKIB1LctkD3LS CTYcm9t0ASie7TIbe6Td8KaJfD63ZAYfHmy5+dRvowc1/sN2CoHiP6IDn4S7sR5IdBpX G820wFz25w49w8lqd+6yf84exFP8UwkDPgyEywOP69414wnfnnUHy44QiGkPWatCzHhs HKlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776284469; x=1776889269; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=9tRASIuS0HGZ1KXlQIrarfjjRdCGTU4SsT3rkHsGSRk=; b=VgnUv9SgG86WL+cT53BUli+ZC4mRdUAHt9lVE4MCF69BY0kZRw4obWLmqt6ctIEejr iRh+pYjnl0mSHCDYVZGbTmvExvGFYd19GWSPUsMjR+/sZE988Wf/thgPyhqit9ETByCm 6f5aZ8zN2zD4w4tR6Tf2v7oPI9dZgFvT6i2fxmWXqsH9RHvTRcn/N4OkgrIoFKA9+8I1 OlC+dVpxoO5GLGFBiNYvLMBRPPHUjgJW9yB8j0W3twBXHJiWWv3qK6xGWLTV9jJBXr4L yL5Cr5/lko8MnpdIPwKEFnh2GIBePPKVZjg70iqzXU7Xnw28TspWDEhwSRlrZw1f3Prt Dd2w== X-Gm-Message-State: AOJu0Yz/18DnY1wRX2ixyIwkx15SW35y9q3LgL9MiThVIdoTmNHqjm7a wfvSlWqc/m8KfQJk7fdd1nPTfWLjBJysh8Wiw7xJw98a8ogemK6owc3B2CrUVp25Kl/L26vqeFk i8VQI6Q8= X-Gm-Gg: AeBDietlCaFJ49DJfXM7RGwp9UYo5dSt62oeSLuW3JuaZobwm9W5qSPGaJ/EqiBf9eM 7FR7kTELeNaWe8mUeLYSNOFxdudxauu6TJinf3LL51o+/vhh5ybJeb3MGPCw8PMp3wQgfuk56+u vZ5nUOVi7nb3XkoztclOjIhKh5+3GvE+bDZUc73M8/S1Zje7cc9VPXjsOdXMmU+h/vUebZTFNbq ZO4Fmq7TqU5TzKBLpPMK5R/cMViazUu5Nembd6Y4Z5FmwwkX5nayHSYTROiacvsbvHGl+UOqxtU AfRJvl0vB2PcLxnHS21uTCX/iS3Vstk5BOSQQyzjce1pF2EXxjwND2yXwcqzXy4qEWH8cR+o/xg AIkBfhQ/dCqk86O4hLyd7LI1y0JbzFrcUQVPyCoquJGxxRVOEVfj+Vav6ewuD1wYnRKVPOb/dmV PjFUm/TwS7UV5VeVnbEsnMaSKiCFthE3EZc/4fLKGj5+CX7gxCI0aFLTYluncp1P3sFb6MByGP X-Received: by 2002:a05:600c:1f83:b0:488:b99b:4177 with SMTP id 5b1f17b1804b1-488d687bf61mr317200555e9.25.1776284469049; Wed, 15 Apr 2026 13:21:09 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Richard Henderson Cc: Jiaxun Yang , Aleksandar Rikalo , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [RFC PATCH v5 5/6] target/mips: Convert MSA LD/ST.D (Doubleword Vector) Date: Wed, 15 Apr 2026 22:20:25 +0200 Message-ID: <20260415202027.83008-6-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260415202027.83008-1-philmd@linaro.org> References: <20260415202027.83008-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=philmd@linaro.org; helo=mail-wm1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1776284515688158500 Replace runtime helpers by translation. Replace the legacy cpu_ld/st*_data_ra() calls by tcg_gen_qemu_ld/st() which allow to respect atomicity. Remove the ensure_writable_pages() hack and MSALDST_PROTO macro. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/msa_helper.h.inc | 6 ---- target/mips/tcg/msa_helper.c | 53 -------------------------------- target/mips/tcg/msa_translate.c | 18 +---------- 3 files changed, 1 insertion(+), 76 deletions(-) diff --git a/target/mips/tcg/msa_helper.h.inc b/target/mips/tcg/msa_helper.= h.inc index f0d31ceef29..e994353056f 100644 --- a/target/mips/tcg/msa_helper.h.inc +++ b/target/mips/tcg/msa_helper.h.inc @@ -432,9 +432,3 @@ DEF_HELPER_4(msa_ftint_s_df, void, env, i32, i32, i32) DEF_HELPER_4(msa_ftint_u_df, void, env, i32, i32, i32) DEF_HELPER_4(msa_ffint_s_df, void, env, i32, i32, i32) DEF_HELPER_4(msa_ffint_u_df, void, env, i32, i32, i32) - -#define MSALDST_PROTO(type) \ -DEF_HELPER_3(msa_ld_ ## type, void, env, i32, tl) \ -DEF_HELPER_3(msa_st_ ## type, void, env, i32, tl) -MSALDST_PROTO(d) -#undef MSALDST_PROTO diff --git a/target/mips/tcg/msa_helper.c b/target/mips/tcg/msa_helper.c index c93c0cddebc..67ec19ea95c 100644 --- a/target/mips/tcg/msa_helper.c +++ b/target/mips/tcg/msa_helper.c @@ -21,11 +21,8 @@ #include "cpu.h" #include "internal.h" #include "tcg/tcg.h" -#include "accel/tcg/cpu-ldst.h" -#include "accel/tcg/probe.h" #include "exec/helper-proto.h" #include "exec/memop.h" -#include "exec/target_page.h" #include "fpu/softfloat.h" #include "fpu_helper.h" =20 @@ -8205,53 +8202,3 @@ void helper_msa_ffint_u_df(CPUMIPSState *env, uint32= _t df, uint32_t wd, =20 msa_move_v(pwd, pwx); } - -/* Data format min and max values */ -#define DF_BITS(df) (1 << ((df) + 3)) - -/* Element-by-element access macros */ -#define DF_ELEMENTS(df) (MSA_WRLEN / DF_BITS(df)) - -void helper_msa_ld_d(CPUMIPSState *env, uint32_t wd, - target_ulong addr) -{ - wr_t *pwd =3D &(env->active_fpu.fpr[wd].wr); - uintptr_t ra =3D GETPC(); - uint64_t d0, d1; - - d0 =3D cpu_ldq_data_ra(env, addr + 0, ra); - d1 =3D cpu_ldq_data_ra(env, addr + 8, ra); - pwd->d[0] =3D d0; - pwd->d[1] =3D d1; -} - -#define MSA_PAGESPAN(x) \ - ((((x) & ~TARGET_PAGE_MASK) + MSA_WRLEN / 8 - 1) >=3D TARGET_PAGE_= SIZE) - -static inline void ensure_writable_pages(CPUMIPSState *env, - target_ulong addr, - int mmu_idx, - uintptr_t retaddr) -{ - /* FIXME: Probe the actual accesses (pass and use a size) */ - if (unlikely(MSA_PAGESPAN(addr))) { - /* first page */ - probe_write(env, addr, 0, mmu_idx, retaddr); - /* second page */ - addr =3D (addr & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE; - probe_write(env, addr, 0, mmu_idx, retaddr); - } -} - -void helper_msa_st_d(CPUMIPSState *env, uint32_t wd, - target_ulong addr) -{ - wr_t *pwd =3D &(env->active_fpu.fpr[wd].wr); - int mmu_idx =3D mips_env_mmu_index(env); - uintptr_t ra =3D GETPC(); - - ensure_writable_pages(env, addr, mmu_idx, GETPC()); - - cpu_stq_data_ra(env, addr + 0, pwd->d[0], ra); - cpu_stq_data_ra(env, addr + 8, pwd->d[1], ra); -} diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translat= e.c index 8486508f5ba..b1d764bd179 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -785,8 +785,8 @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_i= *a, bool is_load) MO_ATOM_NONE, MO_ATOM_SUBALIGN, /* Slightly stronger than required */ MO_ATOM_SUBALIGN, /* Slightly stronger than required */ + MO_ATOM_IFALIGN_PAIR }; - TCGv_i32 wd; TCGv_i128 t16; TCGv_va addr; MemOp mop; @@ -801,22 +801,6 @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_= i *a, bool is_load) addr =3D tcgv_va_temp_new(); gen_base_offset_addr(ctx, addr, a->ws, a->sa << a->df); =20 - wd =3D tcg_constant_i32(a->wd); - - if (is_load) { - switch (a->df) { - case 3: - gen_helper_msa_ld_d(tcg_env, wd, addr); - return true; - } - } else { - switch (a->df) { - case 3: - gen_helper_msa_st_d(tcg_env, wd, addr); - return true; - } - } - t16 =3D tcg_temp_new_i128(); =20 mop =3D MO_128 | MO_LE; --=20 2.53.0 From nobody Thu Apr 30 01:49:14 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=1776284492; cv=none; d=zohomail.com; s=zohoarc; b=BI7ohrgGmPNfciov/RjBkvFyvbnvWVS7dMy1phd7CtYqOhCoQCIcNuyopczVF7fm4RDHyuWM7nh5YLvgN60r73dP+jo8EZn4r0BecoCDpf8warUW93Jq2a+YzbFlWIt1TBnYVOF8RzmbvtQAm1ZxD/iYg1go2A0z/9WHjt/Ehuk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776284492; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=MUkjDs+mtkxR+/O5PV1pe66NoNJBydx+UdKWQ2gp0U4=; b=HfnpRmm63sT3eHzbR4A9MHUhpuBXGy8XDIi/hHOgUYwm6/SgBgVPLkoaw60G12By8QXEjBo2hoNh6SwnmO66SfK3Qmg2Y/q/u/qJosDuYq+TkQaULg/Kh+bOtuPS5e6N2k/uIKc1qUSiKj/JHb6MFE3yY019fXXFUktSiMAYwyw= 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 1776284492887697.2858932641412; Wed, 15 Apr 2026 13:21:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wD6jj-0005tU-4r; Wed, 15 Apr 2026 16:21: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 1wD6jg-0005t1-Rw for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:21:20 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wD6jf-0002J4-7M for qemu-devel@nongnu.org; Wed, 15 Apr 2026 16:21:20 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-43d43e09de5so4343225f8f.1 for ; Wed, 15 Apr 2026 13:21:18 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43ead3e00b3sm7132251f8f.27.2026.04.15.13.21.14 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 15 Apr 2026 13:21:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776284476; x=1776889276; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MUkjDs+mtkxR+/O5PV1pe66NoNJBydx+UdKWQ2gp0U4=; b=KRCpEhTYgFbsWwRQLY3R0kSGswmPrRHU6S5TtQUVnXm5DmOZpeBDHGl5/8bFLnHVxV 1MvdhnVo7v6TCJpVUV7MgiWhyBZ8UKrRaRkV8fiQrrxo9P3fLcnG0V7DAKkpGPsiDce1 j8OidaKnE4Mi5LkJ1/TDj5fWjgCGFWkrSNWi9siyDXePYRdDy81iybaopDeTLoxgOqYc qxB9dyQqrm9s1lOSOmSlfE33iqRgr97FBz9b2XO4qq6Qs112kk8HJzvcWRhGSF8cofbu VC4huB24Gle1Vl6WcOMy1XF02smwpeZvabUXh1oeA+IaqNYqHnGSszVMtD8DEXjOHC0D epug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776284476; x=1776889276; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=MUkjDs+mtkxR+/O5PV1pe66NoNJBydx+UdKWQ2gp0U4=; b=sjEyqL3u5XbUXRp+u81JjpEtq1k/9p2VsLjLNKKYnqP9ZARtWQYiuFInigUkKbY8Xk UuNtprFAxVpzNNW+8iQQWPlvO++mBrehvDUST8oKCIwshUDpYzakkWCzpAg9rv0n0VTY uWpFMoDKtjwlyO10o8+fh9FGfzmvJD1XMT9oSamyjiYErAvHxGEna5ygxEtd6rww8CaQ RwlDSudBilxSSXxR9o3NIqCSPjDi0S25BAELdimUIkqOGq96GOEK+vSzJ6rz3lR4QhCM asgqILDXmPAafGLSrMamfQ+vfFkwT2Xe16Dli64H05ERUCInqpPlYMomwo0Q4oEJlAey 8cUw== X-Gm-Message-State: AOJu0Yy1GtDD+drGJxdyfnstS/FujvSkNKbLhQvLxSJlhTGMpV3VE0Bc IKmLfxpyne5fl/aFXAtkjfazsnvQ8CSrJPx/oHbs/3sIMO0QYoyyLV4wLq2P7qvMRoGsTdHybY1 +h8JFhFI= X-Gm-Gg: AeBDievglnStlW04m8NVxxqek2dKgj1+CRxJw5EuscIiuy3utBCRylv5wkP7TLKwwSz JDNKnZFf2OlCTKWmujfwrGsWkvnIJnQzoKkUAYLa5Ma82Q19Mkfky0Irl25YUTJz63lu407JoWD 5ZhGbLek7Ehl2DxRsUIH0yORRQnXAR1zNfhgei8bjmrrbJ8WLpINCceUq5VzXEZp93VAEGh5MMO yhD3E21epbm0I0NlFTERkrY4V8vn2zX+qzMVOCuVXfdTZiXqUTz9XwBS1ZmcrEEuXCuwJrX1m2g ttAG62wXw8by+/6LOwyL9L7USR8TO+oHR3qtbxSNPJfoBCUerHN+PU2iECduED7Ncg7KE/3Vedv kRemxs+u7r+2f/cWkVawSa2KSLzMHDCsQJHEbIslEdHakddy4GMPUyoGFSzsx08defETPjWAcOP +NgswJLVaSt+mZfeaxrZE8GtRAcXLMixWhgtUe4tOSuHhC1hp/T/WfP5yJLHpNF5FjXEnBYi7z X-Received: by 2002:a05:6000:60f:b0:43e:a69b:d814 with SMTP id ffacd0b85a97d-43ea69bd9fcmr12556111f8f.28.1776284476381; Wed, 15 Apr 2026 13:21:16 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Richard Henderson Cc: Jiaxun Yang , Aleksandar Rikalo , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [RFC PATCH v5 6/6] target/mips: Endian-swap MSA LD/ST.D (Doubleword Vector) Date: Wed, 15 Apr 2026 22:20:26 +0200 Message-ID: <20260415202027.83008-7-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260415202027.83008-1-philmd@linaro.org> References: <20260415202027.83008-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42f; envelope-from=philmd@linaro.org; helo=mail-wr1-x42f.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: 1776284494534154100 Doubleword Vector entries need to be swapped w.r.t. endianness. Fixes: 83be6b54123 ("Fix MSA instructions LD. on big endian host") Fixes: 6decc572dce ("Fix MSA instructions ST. on big endian host") Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- Probably optimizable since tcg_gen_qemu_ld/st_i128 handles MO_BSWAP. --- target/mips/tcg/msa_translate.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translat= e.c index b1d764bd179..63d797a39b7 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -822,6 +822,10 @@ static bool trans_msa_ldst(DisasContext *ctx, arg_msa_= i *a, bool is_load) gen_bswap32x2_i64(d0, d0); gen_bswap32x2_i64(d1, d1); break; + case 3: + tcg_gen_bswap64_i64(d0, d0); + tcg_gen_bswap64_i64(d1, d1); + break; } } =20 --=20 2.53.0