From nobody Tue May  6 21:36:02 2025
Delivered-To: importer@patchew.org
Authentication-Results: mx.zohomail.com;
	dkim=pass;
	spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as
 permitted sender)
  smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org;
	dmarc=pass(p=none dis=none)  header.from=linaro.org
ARC-Seal: i=1; a=rsa-sha256; t=1625231133; cv=none;
	d=zohomail.com; s=zohoarc;
	b=HObsoXLpolhwTUP7MaBnW6QrfDh9N9wbwiKx5CTnSbLSJyeZ/lGJwH9cfAlUhqJAWzkkivqeOBIo/UlmoiB/Yqa3cyWeBO+Kq8VsVfkMEe0KZn7vHWpmI7NZ+ZER+ZcP+/QYz6g9hY2XdKIeUq2DExwAr+Sw7GmeHVM7D4HWC3c=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1625231133;
 h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To;
	bh=lqrA6R3NcSmRZoOwqEjjG4q5g+H1FjaFX1pr/cYb440=;
	b=mZs5TpRJDkNRtBGOMKamS5pPyopXahi4GCOY4HJlvb9WYhK9JujTG8uBL22/njmbN1g3NjD9M11GRVSpqas6hImWkSPbPZ3zHEuFn8eMBJUg1FQe2xlu7ABGk5PdhYClqxtGAH8bqsh7vykGWm4bZ1Ecs41CNXRoi9n2gsiVlyA=
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=<peter.maydell@linaro.org> (p=none dis=none)
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1625231133217633.6611700743301;
 Fri, 2 Jul 2021 06:05:33 -0700 (PDT)
Received: from localhost ([::1]:54210 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1lzIrM-0007u0-2O
	for importer@patchew.org; Fri, 02 Jul 2021 09:05:32 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:33154)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1lzIm7-0007cI-3x
 for qemu-devel@nongnu.org; Fri, 02 Jul 2021 09:00:07 -0400
Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]:40844)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1lzIm2-0007el-JX
 for qemu-devel@nongnu.org; Fri, 02 Jul 2021 09:00:06 -0400
Received: by mail-wr1-x434.google.com with SMTP id g7so12336044wri.7
 for <qemu-devel@nongnu.org>; Fri, 02 Jul 2021 06:00:02 -0700 (PDT)
Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148])
 by smtp.gmail.com with ESMTPSA id s3sm3333351wro.30.2021.07.02.06.00.00
 for <qemu-devel@nongnu.org>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 02 Jul 2021 06:00:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding;
 bh=lqrA6R3NcSmRZoOwqEjjG4q5g+H1FjaFX1pr/cYb440=;
 b=xlOHx9adrufnXZVkSsZihbMQu0N6+hwxGRw8f+EStZjg/b0VTAU2wJXRIWQ8REtlRw
 MXHCQcFGA6H7W3cD9NWwbKWfHL4TkMISE9R9dqAMABGb4uYEl0HB7PgKsvYMhRrjRRI+
 1fRGAeCqt+kGWUUfQV/o/5Jsh1Wum5lddNJozlWkei/XQWzgIy1mvxj6oy6RBjjLYJ6i
 /ltkQJCpzOpxIdLPMihgfQ8HOBpWwPa7v2/28kt6CbTBVf5A87TLhMuoIXRi9LtmGsWN
 IOgUiQK9OSJS2RhJy/7yBYlREq1Kzqlr4+AH7+BK+uL+29TsbvH8clFGWPAVo0JwbQeb
 BRYA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=lqrA6R3NcSmRZoOwqEjjG4q5g+H1FjaFX1pr/cYb440=;
 b=R60TOmduoAxdL2EM3Db9TUv4ALiTtqpSpumQOxHkfDdcIqBamdHyedDaC618rP+hbE
 ueC+CoEoH6spXK+Db49awTWpE+JjAvD5bPCnVvNP1+Q5yoVAFQrSuKWrnVOHRDvKWaaf
 DAtnFus+WjSDut2FtfQx8nsml23FQo1cabCxVIMeKFD743sKADeJd0BGxLzRYUMc2ZRv
 HUId5N7iEKGx/0eQTjAOMJV9+9Z5jgEKpfgcwIsMXe6Y2+DNlXL5bBnhooyzyo9L8+HS
 nHE7+TrIdm1dszSEp6Zk7cKGWJFWMgj/5eDurhY0H9y2jk3NYQUOmGQcFeOWg0ytJdvE
 l9hw==
X-Gm-Message-State: AOAM533VGxN/yQRtW/Owr55yk/117jN+YUlgbaoGCNiyJlvFDN+Ubm4t
 DgASedy3zAGpeJ5w6jQvPjeDz6okp/+VJ/x0
X-Google-Smtp-Source: 
 ABdhPJz9+HuaktijGl/FA6VKOwaift/vGvoELqyas7C/lXu4Pc51Yt+C9yOCqlzO0kJDW0mnjun9NQ==
X-Received: by 2002:adf:e507:: with SMTP id j7mr5741969wrm.152.1625230801184;
 Fri, 02 Jul 2021 06:00:01 -0700 (PDT)
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 07/24] target/arm: Fix MVE widening/narrowing VLDR/VSTR offset
 calculation
Date: Fri,  2 Jul 2021 13:59:37 +0100
Message-Id: <20210702125954.13247-8-peter.maydell@linaro.org>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20210702125954.13247-1-peter.maydell@linaro.org>
References: <20210702125954.13247-1-peter.maydell@linaro.org>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17
 as permitted sender) client-ip=209.51.188.17;
 envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org;
 helo=lists.gnu.org;
Received-SPF: pass client-ip=2a00:1450:4864:20::434;
 envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x434.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.23
Precedence: list
List-Id: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: pass (identity @linaro.org)
X-ZM-MESSAGEID: 1625231134138100004
Content-Type: text/plain; charset="utf-8"

In do_ldst(), the calculation of the offset needs to be based on the
size of the memory access, not the size of the elements in the
vector.  This meant we were getting it wrong for the widening and
narrowing variants of the various VLDR and VSTR insns.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20210628135835.6690-2-peter.maydell@linaro.org
---
 target/arm/translate-mve.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/target/arm/translate-mve.c b/target/arm/translate-mve.c
index 67462bdf27d..e9a5442a724 100644
--- a/target/arm/translate-mve.c
+++ b/target/arm/translate-mve.c
@@ -120,7 +120,8 @@ static bool mve_skip_first_beat(DisasContext *s)
     }
 }
=20
-static bool do_ldst(DisasContext *s, arg_VLDR_VSTR *a, MVEGenLdStFn *fn)
+static bool do_ldst(DisasContext *s, arg_VLDR_VSTR *a, MVEGenLdStFn *fn,
+                    unsigned msize)
 {
     TCGv_i32 addr;
     uint32_t offset;
@@ -141,7 +142,7 @@ static bool do_ldst(DisasContext *s, arg_VLDR_VSTR *a, =
MVEGenLdStFn *fn)
         return true;
     }
=20
-    offset =3D a->imm << a->size;
+    offset =3D a->imm << msize;
     if (!a->a) {
         offset =3D -offset;
     }
@@ -178,22 +179,22 @@ static bool trans_VLDR_VSTR(DisasContext *s, arg_VLDR=
_VSTR *a)
         { gen_helper_mve_vstrw, gen_helper_mve_vldrw },
         { NULL, NULL }
     };
-    return do_ldst(s, a, ldstfns[a->size][a->l]);
+    return do_ldst(s, a, ldstfns[a->size][a->l], a->size);
 }
=20
-#define DO_VLDST_WIDE_NARROW(OP, SLD, ULD, ST)                  \
+#define DO_VLDST_WIDE_NARROW(OP, SLD, ULD, ST, MSIZE)           \
     static bool trans_##OP(DisasContext *s, arg_VLDR_VSTR *a)   \
     {                                                           \
         static MVEGenLdStFn * const ldstfns[2][2] =3D {           \
             { gen_helper_mve_##ST, gen_helper_mve_##SLD },      \
             { NULL, gen_helper_mve_##ULD },                     \
         };                                                      \
-        return do_ldst(s, a, ldstfns[a->u][a->l]);              \
+        return do_ldst(s, a, ldstfns[a->u][a->l], MSIZE);       \
     }
=20
-DO_VLDST_WIDE_NARROW(VLDSTB_H, vldrb_sh, vldrb_uh, vstrb_h)
-DO_VLDST_WIDE_NARROW(VLDSTB_W, vldrb_sw, vldrb_uw, vstrb_w)
-DO_VLDST_WIDE_NARROW(VLDSTH_W, vldrh_sw, vldrh_uw, vstrh_w)
+DO_VLDST_WIDE_NARROW(VLDSTB_H, vldrb_sh, vldrb_uh, vstrb_h, MO_8)
+DO_VLDST_WIDE_NARROW(VLDSTB_W, vldrb_sw, vldrb_uw, vstrb_w, MO_8)
+DO_VLDST_WIDE_NARROW(VLDSTH_W, vldrh_sw, vldrh_uw, vstrh_w, MO_16)
=20
 static bool trans_VDUP(DisasContext *s, arg_VDUP *a)
 {
--=20
2.20.1