From nobody Sat Nov 15 20:49:58 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=cispa.de Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747887452797775.0245179145761; Wed, 21 May 2025 21:17:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uHxMR-0007Dg-CR; Thu, 22 May 2025 00:16:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uHvNG-0008Ue-HW for qemu-devel@nongnu.org; Wed, 21 May 2025 22:09:34 -0400 Received: from xmailer.gwdg.de ([134.76.10.29]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uHvNE-0006UV-Eh for qemu-devel@nongnu.org; Wed, 21 May 2025 22:09:34 -0400 Received: from mbx19-sub-04.um.gwdg.de ([10.108.142.69] helo=email.gwdg.de) by mailer.gwdg.de with esmtps (TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (GWDG Mailer) (envelope-from ) id 1uHvMy-000QY4-1U; Thu, 22 May 2025 04:09:16 +0200 Received: from lorenz-IdeaPad-5-15ALC05.fritz.box (10.250.9.199) by MBX19-SUB-04.um.gwdg.de (10.108.142.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.1544.14; Thu, 22 May 2025 04:09:16 +0200 From: Lorenz Hetterich To: CC: Song Gao , Lorenz Hetterich Subject: [PATCH] check loongarch64 vldi immediates Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2971 Signed-off-by: Lorenz Hetterich Date: Thu, 22 May 2025 04:08:37 +0200 Message-ID: <20250522020837.9080-1-lorenz.hetterich@cispa.de> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.250.9.199] X-ClientProxiedBy: MBX19-GWD-08.um.gwdg.de (10.108.142.61) To MBX19-SUB-04.um.gwdg.de (10.108.142.69) X-Virus-Scanned: (clean) by clamav 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=134.76.10.29; envelope-from=lorenz.hetterich@cispa.de; helo=xmailer.gwdg.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Thu, 22 May 2025 00:16:44 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1747887460116116600 Content-Type: text/plain; charset="utf-8" --- target/loongarch/tcg/insn_trans/trans_vec.c.inc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/target/loongarch/tcg/insn_trans/trans_vec.c.inc b/target/loong= arch/tcg/insn_trans/trans_vec.c.inc index dff92772ad..5589a9e865 100644 --- a/target/loongarch/tcg/insn_trans/trans_vec.c.inc +++ b/target/loongarch/tcg/insn_trans/trans_vec.c.inc @@ -3460,6 +3460,16 @@ TRANS(xvmskltz_d, LASX, gen_xx, gen_helper_vmskltz_d) TRANS(xvmskgez_b, LASX, gen_xx, gen_helper_vmskgez_b) TRANS(xvmsknz_b, LASX, gen_xx, gen_helper_vmsknz_b) =20 +static bool vldi_check_value(DisasContext *ctx, uint32_t imm) +{ + if (((imm >> 8) & 0xf) > 12) { + generate_exception(ctx, EXCCODE_INE); + return false; + } + return true; +} + + #define EXPAND_BYTE(bit) ((uint64_t)(bit ? 0xff : 0)) =20 static uint64_t vldi_get_value(DisasContext *ctx, uint32_t imm) @@ -3588,6 +3598,9 @@ static bool gen_vldi(DisasContext *ctx, arg_vldi *a, = uint32_t oprsz) sel =3D (a->imm >> 12) & 0x1; =20 if (sel) { + if (!vldi_check_value(ctx, a->imm)) { + return true; + } value =3D vldi_get_value(ctx, a->imm); vece =3D MO_64; } else { --=20 2.43.0