From nobody Sat Sep 26 20:01:32 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788638462; cv=none; d=zohomail.com; s=zohoarc; b=CLquLpUAUQqFzESU7NwO+kOGq8dxQxYEhD8dDACtxz1n4A6DvmjsWuRdQAbhzaEekXNXj0MEhGNrdNi3TMdCAs/39IaR3EmkWwzuTRbU0wQMF5C2KLKbIYFKnrQSQdRGMP92b+j2hNsOwnOcMyKpZDoCA7qX6AJrMXNFVg6FP9w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788638462; 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=k+TohD5bx2HhycXesAHlop/DzWBoRKT6Njidelnyb0U=; b=ACUpEthKopM/K2cWzB0JpXO3zyQrBz3wQaH906RCMzDcmAY/gk//pll9HxEa3nIjSwbXUhEf9xvu823/UMGKC2n23rMLp8kbulxJ+fq96Wdg6NmF3gp21xAPOl1BqMTjSPKNx8JornRxGmijxm94oVcSJxUdpGyu0vB2LrRNLBQ= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788638462799623.4704183016516; Sat, 5 Sep 2026 13:01:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2wYY-0006jb-Qg; Sat, 05 Sep 2026 16:00:06 -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 1x2wYX-0006ie-Fz for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:05 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2wYU-00055F-2j for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:05 -0400 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 685Hc0973289505 for ; Sat, 5 Sep 2026 20:00:00 GMT Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gga37289r-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 05 Sep 2026 20:00:00 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2d9057fab9eso32795775ad.1 for ; Sat, 05 Sep 2026 13:00:00 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3342af0bc08sm14316431eec.17.2026.09.05.12.59.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Sep 2026 12:59:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= k+TohD5bx2HhycXesAHlop/DzWBoRKT6Njidelnyb0U=; b=R5uy20m9AXhtEYCF sGWwhUO6ciVsQZpfiEHj5fWFkgkD57rILlZgBNEyHothr6NVSLpS29csjowvylJt ZjOiY2doHVPE+lgFlcDAW2PkEIl69jBD/8yP3zhiB4C5luPj6hDdPGCVOJySBUbx m2cO73llOgafBG3Wq2YjF2mja2+hVnAuC4kqflWDcsdfemKHf0VQyl3id48ser9b n0No/2sueYvlWlHLubZK4eNy4c4ZU2IrEiIx5oQss0l/Cauq3c0H+bM2/FO5hWI4 Htaw/sTgEbAlvk2lkYPFxJyNwsdJE8aepNwa/c7B3G9zqjw8ttd3PEYjsVeZFerj V4PvSg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788638399; x=1789243199; darn=nongnu.org; h=content-transfer-encoding:content-type: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=k+TohD5bx2HhycXesAHlop/DzWBoRKT6Njidelnyb0U=; b=ZCHYja9JGmFurVfKNG0LMqGxWl7pfHXRxTUOf/815825QqoLl5r/peCB6rJynOUDdN qL5XcYyWFGnMArCxcBCaXPo2Ln/EDXn9gbKL9MiQbQVDFOeq4ojw0vKlYRy/VoVrdEVj zU/gs8HgOcbpQ2iKK/USj2CG2dgJR84WkfkQqE8bjG6QNk8Ew9IxIXrHYA9QdxWmYA25 ZiyL5SZup/fhDerOgOBtgVMwQfCT63OwQQvdO3SrGTFVunrcYaV+K/qM595FJHq3a9IS /oYQAZsEL4Lo/mPbyHHaGQ3qRGe2smMHC/ENfl0wMTKMajkE1YRjGpVXKYu5baZhEAS1 1s6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788638399; x=1789243199; h=content-transfer-encoding:content-type: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=k+TohD5bx2HhycXesAHlop/DzWBoRKT6Njidelnyb0U=; b=AG2w/2N/HStbKrq/T9cLeJDvdBnf9xhCilM8TwvX9OrUV5puuW7/0v3mrN8OpfEWfE +6LcDI/3GQDYCpgvaMMiierRZh0O/54m0IXiG6EToFZK0ns+98fGxIn4Zi+IphriYQuw 3lDeB41WUdHfG9NUX4m/0kjGvIgF1atVfBy2peqEdtdlO8YwACcIf+evbt/U4jCU/NSI FBkYR1Vb5oGkSF+sLQIpPieQ1aLjNfPuS6J8+oytAq50GGtcN7LUEHvazwwpb3xMiW0u gzg6amWKAjFnKEaXaILCjpLCro14ZY/s15eZzBBTDh+e/U6tF4GaK7qgAoh+v7zqge0l wzjw== X-Gm-Message-State: AFuF++mGXQ/NFuYNNHpQlIbOlk/6MlWS+++uG9DKZaiRC/Pp2g6wA8qF CBz2dJ5JlxCNj2t5TLIR99hCo+K1w2PmQPIRs+r7k2+GJFNR9KZOpCfIsOivSIX6RiRgE2Yjc1M Ht7JYH1OnNQ2BgPD5G+WPyxqrN4JTipFYrQZdUN/Xnwc5n5/WUHcHn8Ys5snoWCrHog== X-Gm-Gg: AYBFou3xTsoIMwJJ8Iu8Noy3OvqFyCzcYgFQf/OmHhBWMt4dUXFdaR0HHWxw8YWCewk /dUSHSE8SFYISEpP1d1x5B0ve2PO7FvSzHt6M5IlagqMYcodM19svRnIo5vxhH5kl5bXOTC1+S9 9Ndu33ki2x8AbPtBNkwDf+mRHHQnKOYA42A93SZprWf7cxvE8jhYFA0IhhUl/WYVYpvztg80PKK dyxeZbR5AfrXlb/XqRnmLQ3HDSGuMfSlpc0z1CKMGlOxEQJXeTAe6sZuVJRrlzehQ/Q8yGzbzkl VH+SzzJ10vdUipvWiNWQU7YMr8N2h1+V2PlZFIyZSdPUPwlynOQOMxfQd645enx5XXZCrdhJeJ4 u1ghzYVzurFMXMYb1jz23V+t7+YVXrpcGXIWseVN969S5mRy1 X-Received: by 2002:a17:902:7788:b0:2d7:4cd4:5a7f with SMTP id d9443c01a7336-2db127c0b20mr152157735ad.12.1788638399113; Sat, 05 Sep 2026 12:59:59 -0700 (PDT) X-Received: by 2002:a17:902:7788:b0:2d7:4cd4:5a7f with SMTP id d9443c01a7336-2db127c0b20mr152157325ad.12.1788638398569; Sat, 05 Sep 2026 12:59:58 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Brian Cain , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier , Anton Johansson , Matheus Tavares Bernardino Subject: [PATCH v4 1/6] target/hexagon: fix HVX big-endian byte access Date: Sat, 5 Sep 2026 12:59:50 -0700 Message-Id: <20260905195955.2001304-2-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> References: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: GBM7j7if8wyIf706_0GDRoGY_7lUl0Zj X-Proofpoint-ORIG-GUID: GBM7j7if8wyIf706_0GDRoGY_7lUl0Zj X-Authority-Analysis: v=2.4 cv=CbQ4Irrl c=1 sm=1 tr=0 ts=6a9c74c0 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=vUhCv2GA6jJ6UuKgImsA:9 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA1MDIyMiBTYWx0ZWRfX5FiS4ptiBgce Nzm2xS0eRByVWco7TdkbURRvIfr0JY9/AUwNatsRO/3QM5itFLl52HZUXpJmQrpaWW9rL2Ar40f /oKUWIUr2mXSQGiG+o3zG2JaY1GeRjY= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA1MDIyMiBTYWx0ZWRfX8Z5MXVfpK3hr n5RIk+BId93f/SShDPWdrXsnCzKtJdjDruNLvLG5gZnAhG+kY9TGZLCNiy65YpcknYJNHWaA2qE FY8AuTmCrezEJNstt0cUa1V7Gbv/INbAWBpBL0Qcww0BVN8RZ840sDbF+CvU3Ebaed7h/YcnPhG 0SAzNdgE0/TwQAdq0NL0cAchHrC3AHEfpmWq7aPQ8N2uvJiOXSlLnAePa84DmeilgcVOyDGNRxK Ksqn/+y/BcBTxAtRBurdrESMso7wq1PRGTcHfPKdh+i+s8nUIZx6rTrVMwuM4wzAuNTMlV+0h00 SK8ND8CgW04hoi2Pt62qEbbjB2r8vWb1PqCRzuBGh+QlKjFTfK4muVzgN012pCywuEB/bNwFBxR ym9WlCRWdVeiM+zD3/yXS3NFUVltNGj/oor5O2FgxeUxSE3E8bGxYOAURMlD2ldHm72f3YIdhBT 9snF1cP4xM+iyk+2ebQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-05_06,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 phishscore=0 bulkscore=0 suspectscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609050222 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=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1788638465788154100 Keep HVX lanes host-native while converting byte indexes at memory and helper boundaries. Also place vector comparison predicate bytes according to host word order. Suggested-by: Anton Johansson Reviewed-by: Anton Johansson Reviewed-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- target/hexagon/mmvec/macros.h | 23 +++++++++++++++-------- target/hexagon/mmvec/mmvec.h | 18 ++++++++++++++++++ target/hexagon/cpu.c | 17 +++++++++++------ target/hexagon/genptr.c | 3 ++- target/hexagon/mmvec/system_ext_mmvec.c | 2 +- target/hexagon/op_helper.c | 17 ++++++++++++----- 6 files changed, 59 insertions(+), 21 deletions(-) diff --git a/target/hexagon/mmvec/macros.h b/target/hexagon/mmvec/macros.h index b36f833b1de..e85beed3387 100644 --- a/target/hexagon/mmvec/macros.h +++ b/target/hexagon/mmvec/macros.h @@ -53,7 +53,7 @@ =20 #define LOG_VTCM_BYTE(VA, MASK, VAL, IDX) \ do { \ - env->vtcm_log.data.ub[IDX] =3D (VAL); \ + hexagon_mmvec_set_byte(&env->vtcm_log.data, IDX, VAL); \ if (MASK) { \ set_bit((IDX), env->vtcm_log.mask); \ } else { \ @@ -133,7 +133,8 @@ target_ulong va_high =3D EA + LEN; \ for (int i0 =3D 0; i0 < 4; i0++) { \ log_byte =3D (va + i0) <=3D va_high; \ - LOG_VTCM_BYTE(va + i0, log_byte, INC. ub[4 * IDX + i0], \ + LOG_VTCM_BYTE(va + i0, log_byte, \ + hexagon_mmvec_get_byte(&(INC), 4 * IDX + i0), \ 4 * IDX + i0); \ } \ } while (0) @@ -144,7 +145,8 @@ target_ulong va_high =3D EA + LEN; \ for (int i0 =3D 0; i0 < 2; i0++) { \ log_byte =3D (va + i0) <=3D va_high; \ - LOG_VTCM_BYTE(va + i0, log_byte, INC.ub[2 * IDX + i0], \ + LOG_VTCM_BYTE(va + i0, log_byte, \ + hexagon_mmvec_get_byte(&(INC), 2 * IDX + i0), \ 2 * IDX + i0); \ } \ } while (0) @@ -157,7 +159,8 @@ target_ulong va_high =3D EA + LEN; \ for (int i0 =3D 0; i0 < 2; i0++) { \ log_byte =3D (va + i0) <=3D va_high; \ - LOG_VTCM_BYTE(va + i0, log_byte, INC.ub[2 * IDX + i0], \ + LOG_VTCM_BYTE(va + i0, log_byte, \ + hexagon_mmvec_get_byte(&(INC), 2 * IDX + i0), \ 2 * IDX + i0); \ } \ } while (0) @@ -174,7 +177,8 @@ log_byte =3D ((va + i0) <=3D va_high) && QVAL; \ uint8_t B; \ B =3D cpu_ldub_data_ra(env, EA + i0, ra); \ - env->tmp_VRegs[0].ub[ELEMENT_SIZE * IDX + i0] =3D B; \ + hexagon_mmvec_set_byte(&env->tmp_VRegs[0], \ + ELEMENT_SIZE * IDX + i0, B); \ LOG_VTCM_BYTE(va + i0, log_byte, B, ELEMENT_SIZE * IDX + i0); \ } \ } while (0) @@ -216,9 +220,10 @@ uint8_t val; \ val =3D cpu_ldub_data_ra(env, env->vtcm_log.va[i + j],= ra); \ dst |=3D val << (8 * j); \ - inc |=3D env->vtcm_log.data.ub[j + i] << (8 * j); \ + inc |=3D hexagon_mmvec_get_byte(&env->vtcm_log.data, j= + i) \ + << (8 * j); \ clear_bit(j + i, env->vtcm_log.mask); \ - env->vtcm_log.data.ub[j + i] =3D 0; \ + hexagon_mmvec_set_byte(&env->vtcm_log.data, j + i, 0);= \ } \ dst +=3D inc; \ for (int j =3D 0; j < sizeof(TYPE); j++) { \ @@ -249,7 +254,9 @@ int log_byte =3D 0; \ for (i0 =3D 0; i0 < ELEM_SIZE; i0++) { \ log_byte =3D ((va + i0) <=3D va_high) && QVAL; \ - LOG_VTCM_BYTE(va + i0, log_byte, IN.ub[ELEM_SIZE * IDX + i0], \ + LOG_VTCM_BYTE(va + i0, log_byte, \ + hexagon_mmvec_get_byte(&(IN), \ + ELEM_SIZE * IDX + i0),= \ ELEM_SIZE * IDX + i0); \ } \ } while (0) diff --git a/target/hexagon/mmvec/mmvec.h b/target/hexagon/mmvec/mmvec.h index 8e72f2f6ae7..662f9d1597e 100644 --- a/target/hexagon/mmvec/mmvec.h +++ b/target/hexagon/mmvec/mmvec.h @@ -20,6 +20,7 @@ =20 #include "exec/target_long.h" #include "qemu/bitmap.h" +#include "qemu/bitops.h" =20 #define MAX_VEC_SIZE_LOGBYTES 7 #define MAX_VEC_SIZE_BYTES (1 << MAX_VEC_SIZE_LOGBYTES) @@ -69,6 +70,23 @@ typedef union { int8_t b[MAX_VEC_SIZE_BYTES / 1 / 8]; } MMQReg; =20 +static inline uint8_t hexagon_mmvec_get_byte(const MMVector *v, size_t ind= ex) +{ + return extract64(v->ud[index / 8], (index % 8) * 8, 8); +} + +static inline void hexagon_mmvec_set_byte(MMVector *v, size_t index, + uint8_t value) +{ + v->ud[index / 8] =3D deposit64(v->ud[index / 8], (index % 8) * 8, 8, + value); +} + +static inline uint8_t hexagon_mmqreg_get_byte(const MMQReg *q, size_t inde= x) +{ + return extract32(q->uw[index / 4], (index % 4) * 8, 8); +} + typedef struct { MMVector data; DECLARE_BITMAP(mask, MAX_VEC_SIZE_BYTES); diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 4a7b76e3bcc..ac5821a1e44 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -182,7 +182,7 @@ static void print_vreg(FILE *f, CPUHexagonState *env, i= nt regnum, if (skip_if_zero) { bool nonzero_found =3D false; for (int i =3D 0; i < MAX_VEC_SIZE_BYTES; i++) { - if (env->VRegs[regnum].ub[i] !=3D 0) { + if (hexagon_mmvec_get_byte(&env->VRegs[regnum], i) !=3D 0) { nonzero_found =3D true; break; } @@ -193,9 +193,12 @@ static void print_vreg(FILE *f, CPUHexagonState *env, = int regnum, } =20 qemu_fprintf(f, " v%d =3D ( ", regnum); - qemu_fprintf(f, "0x%02x", env->VRegs[regnum].ub[MAX_VEC_SIZE_BYTES - 1= ]); + qemu_fprintf(f, "0x%02x", + hexagon_mmvec_get_byte(&env->VRegs[regnum], + MAX_VEC_SIZE_BYTES - 1)); for (int i =3D MAX_VEC_SIZE_BYTES - 2; i >=3D 0; i--) { - qemu_fprintf(f, ", 0x%02x", env->VRegs[regnum].ub[i]); + qemu_fprintf(f, ", 0x%02x", + hexagon_mmvec_get_byte(&env->VRegs[regnum], i)); } qemu_fprintf(f, " )\n"); } @@ -211,7 +214,7 @@ static void print_qreg(FILE *f, CPUHexagonState *env, i= nt regnum, if (skip_if_zero) { bool nonzero_found =3D false; for (int i =3D 0; i < MAX_VEC_SIZE_BYTES / 8; i++) { - if (env->QRegs[regnum].ub[i] !=3D 0) { + if (hexagon_mmqreg_get_byte(&env->QRegs[regnum], i) !=3D 0) { nonzero_found =3D true; break; } @@ -223,9 +226,11 @@ static void print_qreg(FILE *f, CPUHexagonState *env, = int regnum, =20 qemu_fprintf(f, " q%d =3D ( ", regnum); qemu_fprintf(f, "0x%02x", - env->QRegs[regnum].ub[MAX_VEC_SIZE_BYTES / 8 - 1]); + hexagon_mmqreg_get_byte(&env->QRegs[regnum], + MAX_VEC_SIZE_BYTES / 8 - 1)); for (int i =3D MAX_VEC_SIZE_BYTES / 8 - 2; i >=3D 0; i--) { - qemu_fprintf(f, ", 0x%02x", env->QRegs[regnum].ub[i]); + qemu_fprintf(f, ", 0x%02x", + hexagon_mmqreg_get_byte(&env->QRegs[regnum], i)); } qemu_fprintf(f, " )\n"); } diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c index 1f109d44de8..cfcbd77d47a 100644 --- a/target/hexagon/genptr.c +++ b/target/hexagon/genptr.c @@ -1557,7 +1557,8 @@ static void vec_to_qvec(size_t size, intptr_t dstoff,= intptr_t srcoff) tcg_gen_deposit_i64(mask, mask, bits, j, size); } =20 - tcg_gen_st8_i64(mask, tcg_env, dstoff + i); + tcg_gen_st8_i64(mask, tcg_env, + dstoff + (i ^ (HOST_BIG_ENDIAN ? 3 : 0))); } } =20 diff --git a/target/hexagon/mmvec/system_ext_mmvec.c b/target/hexagon/mmvec= /system_ext_mmvec.c index 8351f2cc01b..081cadd814a 100644 --- a/target/hexagon/mmvec/system_ext_mmvec.c +++ b/target/hexagon/mmvec/system_ext_mmvec.c @@ -26,7 +26,7 @@ void mem_gather_store(CPUHexagonState *env, target_ulong = vaddr, int slot) env->vstore_pending[slot] =3D 1; env->vstore[slot].va =3D vaddr; env->vstore[slot].size =3D size; - memcpy(&env->vstore[slot].data.ub[0], &env->tmp_VRegs[0], size); + memcpy(&env->vstore[slot].data, &env->tmp_VRegs[0], size); =20 /* On a gather store, overwrite the store mask to emulate dropped gath= ers */ bitmap_copy(env->vstore[slot].mask, env->vtcm_log.mask, size); diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 71555a7ba36..d74faebc582 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -168,7 +168,10 @@ void HELPER(commit_hvx_stores)(CPUHexagonState *env) int size =3D env->vstore[i].size; for (int j =3D 0; j < size; j++) { if (test_bit(j, env->vstore[i].mask)) { - cpu_stb_data_ra(env, va + j, env->vstore[i].data.ub[j]= , ra); + cpu_stb_data_ra(env, va + j, + hexagon_mmvec_get_byte(&env->vstore[i]= .data, + j), + ra); } } } @@ -191,9 +194,11 @@ void HELPER(commit_hvx_stores)(CPUHexagonState *env) for (int i =3D 0; i < sizeof(MMVector); i++) { if (test_bit(i, env->vtcm_log.mask)) { cpu_stb_data_ra(env, env->vtcm_log.va[i], - env->vtcm_log.data.ub[i], ra); + hexagon_mmvec_get_byte(&env->vtcm_log= .data, + i), + ra); clear_bit(i, env->vtcm_log.mask); - env->vtcm_log.data.ub[i] =3D 0; + hexagon_mmvec_set_byte(&env->vtcm_log.data, i, 0); } =20 } @@ -1404,7 +1409,8 @@ void HELPER(vhist)(CPUHexagonState *env) =20 for (int lane =3D 0; lane < 8; lane++) { for (int i =3D 0; i < sizeof(MMVector) / 8; ++i) { - unsigned char value =3D input->ub[(sizeof(MMVector) / 8) * lan= e + i]; + unsigned char value =3D hexagon_mmvec_get_byte(input, + (sizeof(MMVector) / 8) * lane + i); unsigned char regno =3D value >> 3; unsigned char element =3D value & 7; =20 @@ -1419,7 +1425,8 @@ void HELPER(vhistq)(CPUHexagonState *env) =20 for (int lane =3D 0; lane < 8; lane++) { for (int i =3D 0; i < sizeof(MMVector) / 8; ++i) { - unsigned char value =3D input->ub[(sizeof(MMVector) / 8) * lan= e + i]; + unsigned char value =3D hexagon_mmvec_get_byte(input, + (sizeof(MMVector) / 8) * lane + i); unsigned char regno =3D value >> 3; unsigned char element =3D value & 7; =20 --=20 2.34.1 From nobody Sat Sep 26 20:01:32 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788638477; cv=none; d=zohomail.com; s=zohoarc; b=gfC0s/6KyHCGWL/Sp2mfdbEfl+lK/UbNwH4eFXT0QgqD8fJIMxkR7BuOjC8F2Yk12WLiQp2BLXTo9MGE0If0/m6KeQsS/wCg0PtqdQ99MM8NavTHk5BQfImGWexweVhDQomOCfkdWp4YWH8iwQyeBh984XB3SMJXd9D4NbsY0bg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788638477; 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=juq5ZinBhPzOSKDUGTfqthO6Pp9zsRWNDrQ54Ur55pQ=; b=JNP5wH7MRji8vkII9YLAAoQjIoq+bIUIzWVDzlwihiMXAdlTm3Y7PWsvpFI1fOiNpKG8NbEy3pzTRjY9JueXyBmOzhFmHtnv73WWFoLDoX+pYgbG/3R+JKP9IJGR/s8hmwQpFq5WVnnY4mw0T2dOV5HwEEaisGck5e2UN4f5iec= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788638477963942.2142270647873; Sat, 5 Sep 2026 13:01:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2wYY-0006jB-8T; Sat, 05 Sep 2026 16:00:06 -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 1x2wYW-0006iP-Sv for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:04 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2wYU-00055y-Jt for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:04 -0400 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 685HbGQO2356100 for ; Sat, 5 Sep 2026 20:00:01 GMT Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ggbf8j53f-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 05 Sep 2026 20:00:01 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2d02df2bf09so19706795ad.0 for ; Sat, 05 Sep 2026 13:00:01 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3342af0bc08sm14316431eec.17.2026.09.05.12.59.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Sep 2026 12:59:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= juq5ZinBhPzOSKDUGTfqthO6Pp9zsRWNDrQ54Ur55pQ=; b=eeKSpBKbfX3ADDXS dGAypWy6JIDsNvw/hJXAr4D0IclRv9XzkV6N2XYNNXOtT6VTixOu3v62no7oDEA0 s+q6qLkousU2Cvs0AurAPIbjsIY7RpNNTkF1Lzrystm/Ccrf/R4/9GjaiTPG17pQ 2j2YHhr9Jc6fLcu2/1epjhJ2DWmcDPSPkQJwNfxdUolSz98wsoPVsHymzve6fCLQ CiOMVmgSrxLtOVNIWfJUfi3a7KesxAxmrq1t55J33kCNx/veEfZcJgqxfH1DC+7R 37r3DhWlymE9FuWJk5OaxFDhZ0zLUfNrHyevghswvkTwPof7duVnv9fAl/QZIc1N yltX8w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788638400; x=1789243200; darn=nongnu.org; h=content-transfer-encoding:content-type: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=juq5ZinBhPzOSKDUGTfqthO6Pp9zsRWNDrQ54Ur55pQ=; b=EMZh02by8TF39pZmi1io7YfAqwkROWD39wnf4toqz/yu0zsQxWbkXm+l7BJoPQuSfe UMv5WjMV281igkINM38SZz8uFvcXr/sFt0Rdzb0mbptJej2Y8A1gonhZ5WOge5YppaBW UVRrKli1xj4H8BBBNrv2Id7L2M++ecEVlVkIvQ+Aanld1mqJvN5vtWLAVbeBB+BwM1Mj 0x7iSkYDzOmqt+UM5HXm6jpg+A4zkBwd8HTK87QFlcrk1rZjDThvS4n1Gbk8yRtW48C1 iCAkT8HBci5zRz0V+5R5pGVNbOAtcyOTNscc27EiRpLqFW8TcyYgxIycYU9Y9pa4MjC3 RN2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788638400; x=1789243200; h=content-transfer-encoding:content-type: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=juq5ZinBhPzOSKDUGTfqthO6Pp9zsRWNDrQ54Ur55pQ=; b=JxpljIjNV1VsEj6guyQJFOCihQTEDCLbKxW16fqehwOHb4y2AJ+AkSQe+wlxSK3aRG zqH/uIXvpAGrl4RSITGKjQEPMkhQ5Vx2kmn/TY9XxuVLotD/HnhYwLaXesfAHFug4/GU mvM7COSNZmWB43vOJuzprRatamP3ZtlhFu3PhIKnh7IEXJgMBgp/P5fBj8lbaQjFMe9Y EynpWeSdUpE0VIYHv4+LIuwIqMzyqESmr8lJYyFkYA1B/cjlFgpHYaL9IIUrMdyx8yZI a4pcs4jLA4x68IJqH3CiXRXURQSl3p92xIfStc/ysUIr9aQuer/SMtfSVPPtvBPFBkyR 6I7g== X-Gm-Message-State: AFuF++lkrYd26l7dqumxLHvyekJVdqA6qJKoV7YCe/jJkYgbiOtwPECF 9hq5ryW2fkadHG+lxDBP4cg9xFlDadi5p0/azZClz+A8l7L4nlqduPWSF4ICWkQah9GnXLVdi6O ZBGAf4wtXBO8Hf/nwVfFSMJEIZEOd99VAyXfOFHLU7UigBMNF/zr5Y0U4y1usxPYugw== X-Gm-Gg: AYBFou2ZxITeZ64lgzTOnLi85wH997N2lxRT9rRcRVTFbXcW9TTvudyW88myDXAoBUt e4cdnJTjgSWsBL3MWvhmDzvE6PWuPefD5LJD7uQN5en2nMkMxa7NRS7hNfuLzzIjGdQ7ah+WrRn SepZ/EsJTamwyCGhl34reBPjc7rw7BbFR5M9GwMYnwH1gKINSnoavqKezccv/fDFXmGq9sG7BcA v5AsN0XxO9zOq5DbbwM9rzapQg51K8ctr7BwATX99me5NnS11JeJs68W8s8OLEtBokHY0L8nNXZ i7nAbCT5/gOellvPDMN46I8yn5k8bSdYtxKnx4cYL6UdM6MP+/kXKvGCCe5JH7+ARZY/1VKsOi9 9NqviL8djFdoxS/Irh+7EW7ku8tATMhHK84j+ey5ElF2+i1wH X-Received: by 2002:a17:903:2a8e:b0:2da:e68f:45b4 with SMTP id d9443c01a7336-2db124aacbfmr232627085ad.8.1788638400340; Sat, 05 Sep 2026 13:00:00 -0700 (PDT) X-Received: by 2002:a17:903:2a8e:b0:2da:e68f:45b4 with SMTP id d9443c01a7336-2db124aacbfmr232626745ad.8.1788638399869; Sat, 05 Sep 2026 12:59:59 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Brian Cain , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier , Matheus Tavares Bernardino Subject: [PATCH v4 2/6] target/hexagon: fix HVX scatter/gather region-length check Date: Sat, 5 Sep 2026 12:59:51 -0700 Message-Id: <20260905195955.2001304-3-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> References: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA1MDIyMSBTYWx0ZWRfXxgwmF5sxxerx nsge2Mc5+EzlIUlPDavPDYXWTvKVg7n08obR+Ytxt7BQBL01daywDFa8sl1IeivQnhvX+ZxygRz gEh4eZKLKqeL/+xolGAbR+ZvjEzgcHc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA1MDIyMSBTYWx0ZWRfX21Mf029CZ80N p+cC8N4JiZd0gN3jjU2O2HyiAJQ8G6fGjz3mikJfgUl5e4kDzGOAgYKujiS8OsTZCp/6CwzDj9q A7ALg/ui628fmlhESR/gl3DXVR/PiAqNYvgunqyMdsNQqSjM4xPtNJVmi112yVhxQL9ExRLCY2F nGDVsaGmi+LNvznu9kbJ1THAVYtL0yYyfxs1ZcoXHE1wgfQJx8VY5qa9e2lb8zJdf3Nu3a/+wD2 5csQtFNiuaZfFH5gUXoz3bmk/Wf4XhUo/5WCY2SpjaTkS2mo+rwJ53diHKpqY0PQHBgIn4J8nCE F7fOHoN6i8s25II2KT9PxLJR78tCNBIh9oNCauIbHTRVs9pD/xTo0Xyjx8kH1kKLcJoIDkLavP9 XX6eEZUyCM+SrTbErc3NPVaMr2ddUDpb5cNvvvUEXFZWgZ/LCRFoDleqSLDDI8BoWxnzXjpSmQW AePdcHTP+huyWp+TcPA== X-Authority-Analysis: v=2.4 cv=UIjt2ify c=1 sm=1 tr=0 ts=6a9c74c1 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=dpjYNSh0uHncNrtL9ygA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-GUID: 3NOMGtq5-b62nYQIhTQwGqM2IHfJ3EJV X-Proofpoint-ORIG-GUID: 3NOMGtq5-b62nYQIhTQwGqM2IHfJ3EJV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-05_06,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 clxscore=1015 spamscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609050221 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=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1788638481445154100 The region-length bounds check compared (EA + i0) <=3D (EA + LEN), which reduces to i0 <=3D LEN and never actually depends on the region base. This let vgather/vscatter keep elements whose offset was beyond the declared region instead of dropping them. Compare the offset to the region length directly instead. Only load bytes for gather lanes that are kept. A dropped or predicate-false lane must not access memory and raise an exception. Reviewed-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- target/hexagon/mmvec/macros.h | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/target/hexagon/mmvec/macros.h b/target/hexagon/mmvec/macros.h index e85beed3387..858afd995d9 100644 --- a/target/hexagon/mmvec/macros.h +++ b/target/hexagon/mmvec/macros.h @@ -130,9 +130,9 @@ do { \ int log_byte =3D 0; \ target_ulong va =3D EA; \ - target_ulong va_high =3D EA + LEN; \ + int in_region =3D (OFFSET) <=3D (LEN); \ for (int i0 =3D 0; i0 < 4; i0++) { \ - log_byte =3D (va + i0) <=3D va_high; \ + log_byte =3D in_region; \ LOG_VTCM_BYTE(va + i0, log_byte, \ hexagon_mmvec_get_byte(&(INC), 4 * IDX + i0), \ 4 * IDX + i0); \ @@ -142,9 +142,9 @@ do { \ int log_byte =3D 0; \ target_ulong va =3D EA; \ - target_ulong va_high =3D EA + LEN; \ + int in_region =3D (OFFSET) <=3D (LEN); \ for (int i0 =3D 0; i0 < 2; i0++) { \ - log_byte =3D (va + i0) <=3D va_high; \ + log_byte =3D in_region; \ LOG_VTCM_BYTE(va + i0, log_byte, \ hexagon_mmvec_get_byte(&(INC), 2 * IDX + i0), \ 2 * IDX + i0); \ @@ -156,9 +156,9 @@ do { \ int log_byte =3D 0; \ target_ulong va =3D EA; \ - target_ulong va_high =3D EA + LEN; \ + int in_region =3D (OFFSET) <=3D (LEN); \ for (int i0 =3D 0; i0 < 2; i0++) { \ - log_byte =3D (va + i0) <=3D va_high; \ + log_byte =3D in_region; \ LOG_VTCM_BYTE(va + i0, log_byte, \ hexagon_mmvec_get_byte(&(INC), 2 * IDX + i0), \ 2 * IDX + i0); \ @@ -170,15 +170,18 @@ do { \ int i0; \ target_ulong va =3D EA; \ - target_ulong va_high =3D EA + LEN; \ uintptr_t ra =3D GETPC(); \ int log_byte =3D 0; \ + int in_region =3D (OFFSET) <=3D (LEN); \ for (i0 =3D 0; i0 < ELEMENT_SIZE; i0++) { \ - log_byte =3D ((va + i0) <=3D va_high) && QVAL; \ - uint8_t B; \ - B =3D cpu_ldub_data_ra(env, EA + i0, ra); \ - hexagon_mmvec_set_byte(&env->tmp_VRegs[0], \ - ELEMENT_SIZE * IDX + i0, B); \ + uint8_t B =3D 0; \ + \ + log_byte =3D in_region && QVAL; \ + if (log_byte) { \ + B =3D cpu_ldub_data_ra(env, va + i0, ra); \ + hexagon_mmvec_set_byte(&env->tmp_VRegs[0], \ + ELEMENT_SIZE * IDX + i0, B); \ + } \ LOG_VTCM_BYTE(va + i0, log_byte, B, ELEMENT_SIZE * IDX + i0); \ } \ } while (0) @@ -250,10 +253,10 @@ do { \ int i0; \ target_ulong va =3D EA; \ - target_ulong va_high =3D EA + LEN; \ int log_byte =3D 0; \ + int in_region =3D (OFFSET) <=3D (LEN); \ for (i0 =3D 0; i0 < ELEM_SIZE; i0++) { \ - log_byte =3D ((va + i0) <=3D va_high) && QVAL; \ + log_byte =3D in_region && QVAL; \ LOG_VTCM_BYTE(va + i0, log_byte, \ hexagon_mmvec_get_byte(&(IN), \ ELEM_SIZE * IDX + i0),= \ --=20 2.34.1 From nobody Sat Sep 26 20:01:32 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788638483; cv=none; d=zohomail.com; s=zohoarc; b=KoJJMjabi/AsXMQH8fH5hM36VOWCFsJwlqlTZzSulI2dcJrM9JVMhvofKdaMwIxwl8UHDyigyQ4HhC8Zu5MgV5JbNWpcjJ4qkN7eMVjUmTyO2NGZDCM2AEbqSIcR7yAZLyqO7MpGCYcSxrv33z1mOh9A343NOXkcOJcs3cOYeHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788638483; 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=vafqYva72uUiSMNa6o58yvOC4e5NILuvByOVikcpC18=; b=bLHVYeV6S7xb5CgZONajK1+L40tanPUNNVYd4HAQjcmngIIMqP0JQuypdhUghGo5dJigee897gTtwKx+aiq9U2uCVCYGXBwMQMGvKI8zFkRjfI0YOSbSVm5SCUmqzRvg169zKiweSMwnYmep9mdPvVHGZu2FI/+uMCPjPlu6EN4= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788638483332684.8195052797815; Sat, 5 Sep 2026 13:01:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2wYZ-0006kQ-Vf; Sat, 05 Sep 2026 16:00:08 -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 1x2wYY-0006jA-4C for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:06 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2wYW-00056j-3D for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:05 -0400 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 685HcUCc4117451 for ; Sat, 5 Sep 2026 20:00:02 GMT Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gg8sd2jye-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 05 Sep 2026 20:00:02 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3965ba1ba3eso2695414a91.2 for ; Sat, 05 Sep 2026 13:00:02 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3342af0bc08sm14316431eec.17.2026.09.05.13.00.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Sep 2026 13:00:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= vafqYva72uUiSMNa6o58yvOC4e5NILuvByOVikcpC18=; b=hLdKLlQqPZixuRxI sFnLhlsOetjg1JHGG1YxzWDhdDBuAVRoJowbGti/QE8Iw3FAEGcYjhd1ilqLj91b u9x+MbvGeTrplgWYnVfPHK5OBhTUZF9LLvTTWQi4J5whcvoxkjX7BGes7jrXh7Fv 1YSkl7eUvp95qI5pxs7bW0AzPJ8RiT7W57xlQWLcxkTLDyDCUFiwmuGzHQQXNjWq lSXhFWrehsCWYgoz/UwWhP8FafE7iUOiLt6SdxJbxGDrFuDCBlqttECLbfyrniD4 LFm8NP9AL0CjfnE5W9LBON2PDJcVC98APcp0bxsjFC4vzZ/dG+AAMXiSZJYSk2my AVBm9g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788638402; x=1789243202; darn=nongnu.org; h=content-transfer-encoding:content-type: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=vafqYva72uUiSMNa6o58yvOC4e5NILuvByOVikcpC18=; b=Zjw4D+EKUZAfUii44YOAo/vb7UwbaaOUZn6LkOUAXbceyc0O9h7+BZXz2YVjXCoHmG ulDYUv7TCaWJkjnYaS/ed0tYwluwAck78GuWatYhveHMMPI1EDGuWNAC/oHByldGIrY+ dXNIoMQCqrHdSDGSqDoOm083mnooHIdNc46gLNRPaCDe7IJiK7tLxRVOzkX+gOxUlaoD idt4LfYlR+5fsp6hBqv5Wn4ZB+B+6jpz8fNER4NRrhlTpNyIEUOI/J3KUlBOH8G+MnW7 pqc05MVCiAqxegSM9uA22HlMeFhe6+bVScHyA6opzdeHmcwiFOsm4i1Ap8aRKKc8dFLZ 8VZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788638402; x=1789243202; h=content-transfer-encoding:content-type: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=vafqYva72uUiSMNa6o58yvOC4e5NILuvByOVikcpC18=; b=K2XYUbB8eXMpQLTO0eGoV4kWO+U/pRWRP/nie85Ri55yPKom8JQm2lrnzUntde9eSK UH73nHS7PP6DcHZmuFiH+vaOLMtAJRbjmSpK6vncN//V513Qbho27ww5455biUVGxUuA o2pTu4abUJdJyRS6VP8f+6p3OWkzAGl/zvZikc44ZIgbtJlE3cUvmqDW3yladGNqZz/c jvC+M8zFYUMpUDthWJj1GLRJmm8fatGwxUlqhmFdlTzteCVL4aJI3QWsU/BSPO/LN9YM vXeil5FA9R9S3zeIYUsrY6qzLoDcuafiwoyND+L2h8B/C0FWJLoF2o/Lz0njKYnbZKQh /dnQ== X-Gm-Message-State: AFuF++mXnJHZBI0KNuE46/o811QLKqjQziDIIsB3r3ilIHcdJLfzfOfA RXLtRTFiq+0NwcmvsMqlD2BI6lb2DGMBZCLPQZ5MPafaY7eECeEvFEoHQodX7WPdQB1ZpbwN4iN 0YYawdsvvO1QlnuXFxCDnXYvPMEWsoKkuV6M1AXGigUGtzforwxFVsCzpqMIGjBAb4w== X-Gm-Gg: AYBFou12tDVmzCsnJ6a26m1/76FoY+nVDG8tvodoM7RMROcM3Tt3hOGvkyh/5fUbvN5 cGrcVeZrQ5xYmuAFMdoDVy9wuiXPsKgW+JSKdg0r+gIcquVRLqBYGh8NQkxFduL27sjfFZYs+pN DoNRzFcDFh4fzrn8p7hnQbRv4cxSlOJMZL1zZMYij9HWQLHl3d5EwVJx3bSGeYdG61K0X+fQD6k EsMj3jbVQUHsMvFKo9gJR29017UbN+2KEkVBZRiEuNoI7KNKCfUXXSDm5ZENqoBkjx35JVjKXOe 4kb3MzYUREHNIlqpiee3JrgQSt4bZ5whk5bfca/6RxeLz0yvoNvLyZadxbJ60QNHuJWcS9P+ZJb vOba1ArN5uzzGZkwV3RGv4BpivhFs3ADJixENCDHGh1YZ4DKh X-Received: by 2002:a17:903:46cd:b0:2ca:1479:d9dc with SMTP id d9443c01a7336-2db125c332fmr241736315ad.12.1788638402108; Sat, 05 Sep 2026 13:00:02 -0700 (PDT) X-Received: by 2002:a17:903:46cd:b0:2ca:1479:d9dc with SMTP id d9443c01a7336-2db125c332fmr241735915ad.12.1788638401744; Sat, 05 Sep 2026 13:00:01 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Brian Cain , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v4 3/6] tests/tcg/hexagon: add vgather/vscatter region-length tests Date: Sat, 5 Sep 2026 12:59:52 -0700 Message-Id: <20260905195955.2001304-4-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> References: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: s22DOcjJ3-idlk3PWeis8IfBawHx2frR X-Proofpoint-ORIG-GUID: s22DOcjJ3-idlk3PWeis8IfBawHx2frR X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA1MDIyMiBTYWx0ZWRfX4UrfqE7x22ms Z69nHedjeXpmSr1CpNhdCuTM554nruBuevoNwFwmpJwLVxx8CAoriuUvfeXD3Zw3QXTgJR/ogyn egwQQ5bLeNOX0dN/W51RTXep/YtEDeA= X-Authority-Analysis: v=2.4 cv=dfmwG3Xe c=1 sm=1 tr=0 ts=6a9c74c2 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=0wXhRAlk9XZiN57P8QAA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA1MDIyMiBTYWx0ZWRfX/ZkEBjEx4VKY iu+OkNJzke0LMlPz1k6/Xxdi4FUDDYfAuGhwW9bagR+Mz6/h1+uXh4g6Lo5zL5TRCH0dsuZ7p8/ fTAoPRV6nLRuFi0G1tcW9NIqI0sPepF/eIP8wk11cgRJo/Z8iDH+GFoqoWka+KG8ILad2/iDYGk Gb2ysekPuy8DwdlzK5ep3MC/vLrhu8ebOGIKgD6FjX8Xa/2mwgWXRNk3RRvoysWZR3YlviSy2HN 4F3fiWViHbV6YtAH24bKxnHeFKvpJsbzsXxulJVELAV5MzBIXkQw09MITgRvwWaEvAMEEf/Dtmm O3W+96GuFanOTLezh0uXZYJCHXrM3+zkj2tcbid93qr4txGzoATxsttw0oJBoOcvUjlPbt85Gdo 62RWzIiTgL2u1rXWgcDRakpIBXAE0wMoxiZPSBo1ECjqzhBSZxbeMYwEC7htfY4twsOl7k+Zyro rUpDk9j6+0njp+obtAA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-05_06,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 priorityscore=1501 spamscore=0 malwarescore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 suspectscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609050222 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=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1788638485506154100 Cover the case where an offset lies beyond the region length: it must be dropped rather than read/written. Place one dropped gather offset on a PROT_NONE page to verify that the instruction does not access memory for that lane. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- tests/tcg/hexagon/scatter_gather.c | 137 ++++++++++++++++++++++++++++- 1 file changed, 136 insertions(+), 1 deletion(-) diff --git a/tests/tcg/hexagon/scatter_gather.c b/tests/tcg/hexagon/scatter= _gather.c index bf8b5e03172..40f00cc6cf5 100644 --- a/tests/tcg/hexagon/scatter_gather.c +++ b/tests/tcg/hexagon/scatter_gather.c @@ -31,7 +31,11 @@ #include #include #include +#include #include +#include +#include +#include =20 typedef long HVX_Vector __attribute__((__vector_size__(128))) __attribute__((aligned(128))); @@ -85,6 +89,23 @@ unsigned int word_predicates[MATRIX_SIZE] __attribute_= _((aligned(128))); /* make this big enough for all the operations */ const size_t region_len =3D sizeof(vtcm); =20 +/* Mu (region length - 1); offset is kept iff offset <=3D Mu */ +#define REGION_LEN_TEST_MU 127 +#define GATHER_LEN_TEST_PAGE_SIZE 4096 +static unsigned char *gather_len_test_src; +static unsigned char gather_len_test_dst[128] __attribute__((aligned(128))= ); +static unsigned char gather_len_test_dst_ref[128]; + +/* The dropped offset must remain in the backing destination buffer. */ +#define SCATTER_LEN_TEST_DST_SIZE 512 +static unsigned char scatter_len_test_dst[SCATTER_LEN_TEST_DST_SIZE] + __attribute__((aligned(128))); +static unsigned char scatter_len_test_dst_ref[SCATTER_LEN_TEST_DST_SIZE]; +static unsigned short region_len_test_offsets[MATRIX_SIZE] + __attribute__((aligned(128))); +static unsigned short scatter_len_test_values[MATRIX_SIZE] + __attribute__((aligned(128))); + /* optionally add sync instructions */ #define SYNC_VECTOR 1 =20 @@ -96,7 +117,7 @@ static void sync_scatter(void *addr) * synchronization. Normally the dummy load would be deferred as * long as possible to minimize stalls. */ - asm volatile("vmem(%0 + #0):scatter_release\n" : : "r"(addr)); + asm volatile("vmem(%[addr] + #0):scatter_release\n" : : [addr] "r"(add= r)); /* use volatile to force the load */ volatile HVX_Vector vDummy =3D *(HVX_Vector *)addr; vDummy =3D vDummy; #endif @@ -855,6 +876,112 @@ void check_gather_16_32_masked(void) MATRIX_SIZE * sizeof(unsigned short)); } =20 +static void init_region_len_test_offsets(void) +{ + memset(region_len_test_offsets, 0, sizeof(region_len_test_offsets)); + region_len_test_offsets[0] =3D 0; /* in region */ + region_len_test_offsets[1] =3D REGION_LEN_TEST_MU - 1; /* in region */ + region_len_test_offsets[2] =3D REGION_LEN_TEST_MU; /* in region */ + region_len_test_offsets[3] =3D REGION_LEN_TEST_MU + 1; /* dropped */ + region_len_test_offsets[4] =3D 256; /* dropped */ +} + +/* vgather must drop elements whose offset is beyond the region */ +void create_gather_region_len_test(void) +{ + unsigned char *mapping; + + mapping =3D mmap(NULL, 2 * GATHER_LEN_TEST_PAGE_SIZE, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + assert(mapping !=3D MAP_FAILED); + assert(mprotect(mapping + GATHER_LEN_TEST_PAGE_SIZE, + GATHER_LEN_TEST_PAGE_SIZE, PROT_NONE) =3D=3D 0); + gather_len_test_src =3D mapping + GATHER_LEN_TEST_PAGE_SIZE - 256; + + for (int i =3D 0; i < 256; i++) { + gather_len_test_src[i] =3D (unsigned char)(13 + 7 * i); + } + init_region_len_test_offsets(); + memset(gather_len_test_dst, FILL_CHAR, sizeof(gather_len_test_dst)); +} + +/* gather with a region shorter than the source buffer, using HVX */ +void vector_gather_region_len(void) +{ + HVX_Vector voff =3D *(HVX_Vector *)region_len_test_offsets; + + Q6_vgather_ARMVh((HVX_Vector *)gather_len_test_dst, + (int)(uintptr_t)gather_len_test_src, + REGION_LEN_TEST_MU, voff); + + sync_gather(gather_len_test_dst); +} + +/* gather with a region shorter than the source buffer, using C */ +void scalar_gather_region_len(unsigned char *dst) +{ + for (int i =3D 0; i < MATRIX_SIZE; i++) { + unsigned short off =3D region_len_test_offsets[i]; + if (off <=3D REGION_LEN_TEST_MU) { + dst[2 * i] =3D gather_len_test_src[off]; + dst[2 * i + 1] =3D gather_len_test_src[off + 1]; + } + } +} + +void check_gather_region_len(void) +{ + memset(gather_len_test_dst_ref, FILL_CHAR, + sizeof(gather_len_test_dst_ref)); + scalar_gather_region_len(gather_len_test_dst_ref); + check_buffer(__func__, gather_len_test_dst, gather_len_test_dst_ref, + sizeof(gather_len_test_dst_ref)); +} + +/* vscatter must drop elements whose offset is beyond the region */ +void create_scatter_region_len_test(void) +{ + init_region_len_test_offsets(); + for (int i =3D 0; i < MATRIX_SIZE; i++) { + scatter_len_test_values[i] =3D 0x4100 + i; + } + memset(scatter_len_test_dst, FILL_CHAR, sizeof(scatter_len_test_dst)); +} + +/* scatter with a region shorter than the destination buffer, using HVX */ +void vector_scatter_region_len(void) +{ + HVX_Vector voff =3D *(HVX_Vector *)region_len_test_offsets; + HVX_Vector vval =3D *(HVX_Vector *)scatter_len_test_values; + + Q6_vscatter_RMVhV((int)(uintptr_t)scatter_len_test_dst, + REGION_LEN_TEST_MU, voff, vval); + + sync_scatter(scatter_len_test_dst); +} + +/* scatter with a region shorter than the destination buffer, using C */ +void scalar_scatter_region_len(unsigned char *dst) +{ + for (int i =3D 0; i < MATRIX_SIZE; i++) { + unsigned short off =3D region_len_test_offsets[i]; + if (off <=3D REGION_LEN_TEST_MU) { + memcpy(dst + off, &scatter_len_test_values[i], + sizeof(scatter_len_test_values[i])); + } + } +} + +void check_scatter_region_len(void) +{ + memset(scatter_len_test_dst_ref, FILL_CHAR, + sizeof(scatter_len_test_dst_ref)); + scalar_scatter_region_len(scatter_len_test_dst_ref); + check_buffer(__func__, scatter_len_test_dst, scatter_len_test_dst_ref, + sizeof(scatter_len_test_dst_ref)); +} + /* print scatter16 buffer */ void print_scatter16_buffer(void) { @@ -1035,6 +1162,14 @@ int main() print_scatter16_32_buffer(); check_scatter_16_32_masked(); =20 + create_gather_region_len_test(); + vector_gather_region_len(); + check_gather_region_len(); + + create_scatter_region_len_test(); + vector_scatter_region_len(); + check_scatter_region_len(); + puts(err ? "FAIL" : "PASS"); return err; } --=20 2.34.1 From nobody Sat Sep 26 20:01:32 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788638481; cv=none; d=zohomail.com; s=zohoarc; b=hhYCcntnfZqLu+TkLw0wW5iZm69qVmmco37xMWNMvq4xjpOqIIF0csm3t9y4RB4PPCvWvFnyAtmeb1FtblWRHvNn8jOizlMyZ6Nc+Qd5TN/nyFeC2loARxf8KFIAnH3W4ITwlsgjBmJg3qSuQDs/fFZOASTPQY5uhusFyqQXKqI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788638481; 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=a+CBXDO4Pm2yaldDRatlLKjTbgDEs6+OwEBymI4oKm8=; b=Amqzrn9+Lvv0ECTmPY66TpXJ3kjWEZD7OuxT3p0ZFSHYa5Xq6ZFhLG6PmYBZTbzLJQEHYtHP54pkI876GSACrFspW8O8/nBr+5OkgpX7pMEyEiml2PvAXexbez04s70JcJ5sjtH9/4e4mMOaPM8Q18OtVw0HqZP4nUyoulbJsR4= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788638464635843.6324943978742; Sat, 5 Sep 2026 13:01:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2wYc-0006og-Gj; Sat, 05 Sep 2026 16:00:10 -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 1x2wYZ-0006jz-51 for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:07 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2wYX-000570-Bi for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:06 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 685HbJU22296020 for ; Sat, 5 Sep 2026 20:00:04 GMT Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ggcca1xg0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 05 Sep 2026 20:00:03 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-cc1c18c775eso3549704a12.0 for ; Sat, 05 Sep 2026 13:00:03 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3342af0bc08sm14316431eec.17.2026.09.05.13.00.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Sep 2026 13:00:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= qcppdkim1; bh=a+CBXDO4Pm2yaldDRatlLKjTbgDEs6+OwEBymI4oKm8=; b=dg a++8zgWGDR1RGW4rARVj3jjGES1e1xyVVbmb6ARRfCdtiJX0Ly4D4nnltgcxprGK Z/ZfhZVOq/SYyM58qllNx4/pn5vnC3TkaEYMevf9WjoEHC3RMEXJLLiZ6iJyB0Fa AfT6BGvZS0GmRijTKQtMl8vYR7OBtAPmMyn2LEYYAl7jrF/3F3sPdLniWKUHfHZT HVndcL10A88bk5cusrSD/EaXzsuMOqvnPwH6VMW/nbH5VbDGcJZlk8scpyVn1VUR Kqjw/SeF2tktg4NhmAz1Lr0HvCsOtt2dC1ybj64l0mNFQ0aQWkaEkfVCmxjywRJQ IGIwng+xMQZpV9M66w/w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788638403; x=1789243203; darn=nongnu.org; h=content-transfer-encoding:content-type:content-type: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=a+CBXDO4Pm2yaldDRatlLKjTbgDEs6+OwEBymI4oKm8=; b=cyuIvr+48wiKBJoYLB3kBapboujXsfHjLQ91dOkysblwAaIoW4wjK8tNqzyb1C45CR Vp4a/eD9+4ET+VbAN+Yvk+ZJt8PWcMBRz7DqOu4GRhzSg/4iJhvGBdZZg/bVg1TY8mAL stxzE9w8/TznkHZu9TKjcniAhy9iGiXPea9kZX7V1gpW5OCg4R2hNJRAML7b1aoFK4x/ 7NABV82QAQWL7xSgn/9c3MMGHYh8+3kcLPI8UWyHha5DEZuiIQRxYkZe0grTxStnqgSO CnqOQagGnql4kFCBtcWq1IiAfG1j4E9633OAbYA2fPDW02X7SEXonhYOWnO/DlP9bDOe AJSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788638403; x=1789243203; h=content-transfer-encoding:content-type:content-type: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=a+CBXDO4Pm2yaldDRatlLKjTbgDEs6+OwEBymI4oKm8=; b=j+LIRBpsKZZM4+FnYla/3Ao/A5mt6thBd/K2sncNMSEUtK6a6sBhgjamJl8vCqZp2Y tp8WE7lMEM6OqLQIM34N7o3xsNH6cuYEFfFbFv82IYw3Z6N0dGw8k++A+qG5WSUXu8+2 WbI5ribuAxTHcmXs3pUtfebQi05IaE/+/D1hnWrFX73DTi99WUkggkR8du8PgPl1aBOQ DuAF6fe19S8bS64WIytot/tyNz0aH0Wo+RViVlOYKeiRQYL4MhbDl5MqQUYkWckw4Xd4 VO8hG8GxJ7iA1+mF47w7fjld3YHDKnj/xrP104ZtqEJgh9k4iTjc1g4+HwJlBcaligBD HGPg== X-Gm-Message-State: AFuF++mDfx6z9HR+vJl8JpR+xVnYHR2nu+lZDe9mvdqNNqsVZURuuUFz vbo68Fh6nmNF50fsbPxYkBsOCUMhlbp+ntC2gE2iZt0KxKrrFzeA7XLh3h6PpOIrFEkQaT0ixu4 OQwPMt3Bo5827udYOwQRNmLVGHXHiMwFSMt3RH+Mr5Tx4g7t2HaLBoJO2txjzb+cHoA== X-Gm-Gg: AYBFou1EZOZqfVtnm17ubsbqDDr1zXQW8vMvTzAL7k4BXiZcVPc4H4nyNwJPqApS3D4 JiWnD9BOfeqMBCnpWPxgaTa1MeFi3L7MVSMJLl0+AOpKtt5SJRlW53gb+eVRPVZQ6ssHDkwsmNb SeVGFTvapgiCJgvmiLCZaBm/LeFjYzRhE8GfdDlcWmX0Rs+1rE1K92Ck6zISv39iwB5J9yxXJ8v ICig+5KGbhmirtgJmiSjBL0kLJkXwtkIzs3yeyDTbhSRPrNZX6xn1c1dJAxF/arnpk2lex+Jg2L PRLSQPys26ohN10zd4eFuE6zcILrvmVjaOGNQoaHYYclw/Iv3CCgsb8NevuqUWC45CJlvy3uD3v FGWpyrHebSI+t4i0w25LgWsCsHtkQRA6oTz4+6vcUm95jM1TC X-Received: by 2002:a17:903:198e:b0:2d7:5da6:2af4 with SMTP id d9443c01a7336-2dafaee6769mr217481285ad.4.1788638403273; Sat, 05 Sep 2026 13:00:03 -0700 (PDT) X-Received: by 2002:a17:903:198e:b0:2d7:5da6:2af4 with SMTP id d9443c01a7336-2dafaee6769mr217481135ad.4.1788638402858; Sat, 05 Sep 2026 13:00:02 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Brian Cain , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier , Matheus Tavares Bernardino Subject: [PATCH v4 4/6] target/hexagon: fix HVX predicate save size for histogram ops Date: Sat, 5 Sep 2026 12:59:53 -0700 Message-Id: <20260905195955.2001304-5-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> References: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 2ja8J8BC3akU7YfefnVKBUs0bRuxMXlI X-Authority-Analysis: v=2.4 cv=EJo2FVZC c=1 sm=1 tr=0 ts=6a9c74c3 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=iBrAFeRkQMIbT85dZ3EA:9 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-ORIG-GUID: 2ja8J8BC3akU7YfefnVKBUs0bRuxMXlI X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA1MDIyMiBTYWx0ZWRfX4AoNpHJhMnox 51jkdJdgUt14CbdXAd1k2xp8oXxuAS3KwdgnRnDL05RgdGniaXIP5+i01Sw0QqzP/Wi4E1HeyQM Vyc7qomvQPtXNV4TZYw1SsjDEi+jeyGlqwambAhWEG7ALgUe/MycDVhitV9tQV7sJDZ7yxUREYl m1xcCx4gNUwDgr6tVXv1rTYc2DDd4ZdteEtnB1EH3Ht3CuNgd6CIQZAObiC7+07/Imi5WgUa9Ii BtkK2nK7YizoZw0uRoplsoOj4FLOfvb8E92ekgiQzJ2ryDDb+NZEcnoloj7WsiYf1Ed8LJuBcbJ 2jKhZVNgIiE8ftF5VwU5P2aZglxxGlclqmYR5ZpWudKIV+E7nXcMYeK4LNN0A2nFd8/sR5FZVy9 sjlGd1t47aaAhGMkpccFy+S63tS2prtN8I1aQWrov6IiPI1wa5BrS9STiMa3HeTP75oLYsfkA1T 8qVnCfdPTzT2Q4+rP3A== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA1MDIyMiBTYWx0ZWRfX+csgTJC1x/C0 Rrvc9CvjaUN22s+LnXvzzwi8tZ527vAKdSsC+9k1yxB6j7AxbHjraDG7PqyGurJU+1TNoQIUb/v 4tmetHyYv0oTrbJ1zLvGDVgu/q2ALMw= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-05_06,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 clxscore=1015 bulkscore=0 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609050222 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=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1788638486778158500 Content-Type: text/plain; charset="utf-8" The masked histogram instructions save the predicate operand to the qtmp temporary with a gvec move sized sizeof(MMVector). Both source and destination are MMQReg, which is eight times smaller, so the move read 112 bytes past the predicate register and wrote them over the fields following qtmp in CPUHexagonState, that is vstore[0]. Use the size of the registers actually being copied. Fixes: 7ba7657bc93 ("Hexagon HVX helper overrides for histogram instructio= ns") Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- target/hexagon/gen_tcg_hvx.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/target/hexagon/gen_tcg_hvx.h b/target/hexagon/gen_tcg_hvx.h index 2a342cdee69..d3f2cc7bc62 100644 --- a/target/hexagon/gen_tcg_hvx.h +++ b/target/hexagon/gen_tcg_hvx.h @@ -50,7 +50,7 @@ static inline void assert_vhist_tmp(DisasContext *ctx) if (ctx->pre_commit) { \ intptr_t dstoff =3D offsetof(CPUHexagonState, qtmp); \ tcg_gen_gvec_mov(MO_64, dstoff, QvV_off, \ - sizeof(MMVector), sizeof(MMVector)); \ + sizeof(MMQReg), sizeof(MMQReg)); \ } else { \ assert_vhist_tmp(ctx); \ gen_helper_vhistq(tcg_env); \ @@ -66,7 +66,7 @@ static inline void assert_vhist_tmp(DisasContext *ctx) if (ctx->pre_commit) { \ intptr_t dstoff =3D offsetof(CPUHexagonState, qtmp); \ tcg_gen_gvec_mov(MO_64, dstoff, QvV_off, \ - sizeof(MMVector), sizeof(MMVector)); \ + sizeof(MMQReg), sizeof(MMQReg)); \ } else { \ assert_vhist_tmp(ctx); \ gen_helper_vwhist256q(tcg_env); \ @@ -82,7 +82,7 @@ static inline void assert_vhist_tmp(DisasContext *ctx) if (ctx->pre_commit) { \ intptr_t dstoff =3D offsetof(CPUHexagonState, qtmp); \ tcg_gen_gvec_mov(MO_64, dstoff, QvV_off, \ - sizeof(MMVector), sizeof(MMVector)); \ + sizeof(MMQReg), sizeof(MMQReg)); \ } else { \ assert_vhist_tmp(ctx); \ gen_helper_vwhist256q_sat(tcg_env); \ @@ -98,7 +98,7 @@ static inline void assert_vhist_tmp(DisasContext *ctx) if (ctx->pre_commit) { \ intptr_t dstoff =3D offsetof(CPUHexagonState, qtmp); \ tcg_gen_gvec_mov(MO_64, dstoff, QvV_off, \ - sizeof(MMVector), sizeof(MMVector)); \ + sizeof(MMQReg), sizeof(MMQReg)); \ } else { \ assert_vhist_tmp(ctx); \ gen_helper_vwhist128q(tcg_env); \ @@ -115,7 +115,7 @@ static inline void assert_vhist_tmp(DisasContext *ctx) if (ctx->pre_commit) { \ intptr_t dstoff =3D offsetof(CPUHexagonState, qtmp); \ tcg_gen_gvec_mov(MO_64, dstoff, QvV_off, \ - sizeof(MMVector), sizeof(MMVector)); \ + sizeof(MMQReg), sizeof(MMQReg)); \ } else { \ TCGv tcgv_uiV =3D tcg_constant_tl(uiV); \ assert_vhist_tmp(ctx); \ --=20 2.34.1 From nobody Sat Sep 26 20:01:32 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788638465; cv=none; d=zohomail.com; s=zohoarc; b=WIUaERRTvc2GiMyhfxLr2fOXh5C0E4PN8J5/sKDVmu5r44h/DjbLk3YR1Dw8LkWUrHYXo7q/Vx1toE/75cik40EJNWbUetYkX++hcUeU8ZijFJY6rQxiVtvWf7cO07coGwHQlYBG/qjTveRe6DHdvtj8/iIoRPq0yxNjapFX3s8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788638465; 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=VRaZktLH6FSYAnvGOw4//fv/Pl+ly6gy7uH+narcn0w=; b=moFh+jww+CUFQIVqb7QNaIti6LEgVKO0HDAgvWXJ5j6MQ1LllgaCK7DK9idBgc5fjAnUs6Xi6dWcJj5PS6UdGbuuATcHuQv/h3b4whZckCiniCGkmTxzsvC/46Q7loasoUQjo3FE5A8b0i3f6z48yx32uYELPCkcAJpvYQ5zlEs= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788638464950213.7497081594064; Sat, 5 Sep 2026 13:01:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2wYd-0006pU-9F; Sat, 05 Sep 2026 16:00: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 1x2wYb-0006mh-9A for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:09 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2wYZ-00057j-Fh for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:09 -0400 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 685HcXRd2988254 for ; Sat, 5 Sep 2026 20:00:06 GMT Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ggba3j4sm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 05 Sep 2026 20:00:06 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38e475f83a2so4386621a91.1 for ; Sat, 05 Sep 2026 13:00:06 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3342af0bc08sm14316431eec.17.2026.09.05.13.00.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Sep 2026 13:00:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= VRaZktLH6FSYAnvGOw4//fv/Pl+ly6gy7uH+narcn0w=; b=lbflV3VxjM7NpP4c hnSwENuXKWCm682uZp1QJYx07Pp7S0RF/6SJXUyd7S6hsND7wOGuRFE2uC54mrU1 i2neArUekDhu2mxs5XN0ysrq5fiorwC4r5MfpSdxid1RFBp5SNlpXdEnJ/iPLMqT cXrxjukfjJ7DfuXBgPr1WWV/JQQcetK7/NB6erzY33L0UxBPhj2uAx+OjzuaLFwb FyTvqiMKasaugneX8jbJLUkZdMpxYGM0fonkbJY39YNdAimPsSU4vsZxS2ZaUdnr veG0z5chKB0FXuh7e73dYoHyeUDVTMLKgzMDPRCzHXJoalS3RBJzLFJ2R1s29gke 5NhhYw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788638405; x=1789243205; darn=nongnu.org; h=content-transfer-encoding:content-type: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=VRaZktLH6FSYAnvGOw4//fv/Pl+ly6gy7uH+narcn0w=; b=eqjui18SJyFqNPtP8cb6uAN17RF/Ijvg+FGki86Ln3EUDapokSnA6g/Sn9wIph37fP R8RnFJ6ywW02z9MTE5JXTf7aVLGQrhJ12xHRWlK3HQtClvRL9+cSBjVix88s2DB5Mok6 2gJpCslHCHmSFetaYQc5Vh8SyVL9x2zdLKLcfgZCCSI8ciOM0KYB21XR6VMhEmxV2bG6 U34i/SsQsVGGvkLlp7qGLFDWDjvDvCo21tSerT6SriPUSg5QxMN1traIep/pxRxZ5wyp ncrCJ2K/7Zv6NtjVHN5amshxucAv+wW3EudfMAkIE2G5sfvqK6378LzxG4D9o8el2gcp Acqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788638405; x=1789243205; h=content-transfer-encoding:content-type: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=VRaZktLH6FSYAnvGOw4//fv/Pl+ly6gy7uH+narcn0w=; b=OV2DDY4QzgAmjOzbUywtvlwzvh553VLvirTRwOI3avfdBgnPrcYwHLr/oU0DtmHYOU O3k/2/L7TweceRPLI98B1UZcfnPSEnJrs7NOfF9k7BwwWgT3VIIdn6R9XBuPVGHZvEIf eKcWaeiEvHmTBiy0S+NfLiuBpEbU00RlLMFN21bn3z4NLsbIIO/azdHY8Wc5ZzSkLfa5 3lvtFI2eA9tBm1Vif1HucCqgtaQ6Udrelnp9id6xbXVC3jYXcl2HTb0JT/T5OLjzzlR3 2M58YE/LCtAkIca2nI04vWsMDRPX2ywsuwj+H+3wTomRNnKAa2ZJOuXYD72hDAnQdD3t KdGQ== X-Gm-Message-State: AFuF++k6wkSIIArv7kIZuNmKIkB5K/AEBSGB/2ExVhyiH2HOfi7p4s9z NJ/AesmiE4Pj/VC7JZhzapASPVYS/EZPKYlAP3M7BEh6BOyBvSFxwKy+IHcfhsiFvTesAHqaYcx zactJv312jpfVjR/jZuNVVcJer5HIEDsqPEqzkqnfqflqrFF7StjPD8SmUkburJnG3w== X-Gm-Gg: AYBFou3JaUI560SrbNw2P9+yRPAd/KDvPYhGa9L4/WjkrSVBr/WvndRCuDzuzOU51et rX30IUPqiom1JJlUOGSNCWVP/oKS8i/1DbVmnEcnoo703EZgIBEEJjD8M/ogZz+J5xPWtUZJrF0 9zXhv0G0HyduxGecEyd3a0VSrtM9+NYvWzX1GU0WJYxriwSFZmfQYpYHHranpJ6EslC691FIMi9 PS34NQ2d2cu4Ojhrwm8FCWAz4kfmuGYmTblrgXdq1ntUdcz+BxE2H13POtOkn47C1en71zQPgGH 1kN7jVAdHdRX2l+kcAbZZwbBBC7Du5eUXhqz4omw3IP6nWB3XsZ4cntaO5b6oXwYWUeJt2jp4EI esghVr76wr+bY6Vo3nljj7obRQSbBE7aV+9qK2ml2QZc7cKXF X-Received: by 2002:a05:6a20:7288:b0:3bf:5b7a:fc8b with SMTP id adf61e73a8af0-3da397c5713mr20059626637.0.1788638405263; Sat, 05 Sep 2026 13:00:05 -0700 (PDT) X-Received: by 2002:a05:6a20:7288:b0:3bf:5b7a:fc8b with SMTP id adf61e73a8af0-3da397c5713mr20059583637.0.1788638404860; Sat, 05 Sep 2026 13:00:04 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Brian Cain , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v4 5/6] tests/tcg/hexagon: check the two HVX predicate build paths agree Date: Sat, 5 Sep 2026 12:59:54 -0700 Message-Id: <20260905195955.2001304-6-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> References: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA1MDIyMiBTYWx0ZWRfXyrmyC5yBThWu w1VX+eckIMa6AURXrVlkQMxiNVff6ynPTAPmEL1sdntkoo1EqIXsdAaeaOMepg31SEH4UXA8RWn UDSHJK2XT8FYnlRrNYrZ9M86BygbrrfrPaLbl3S2x1zUphJW0lKHDWgV4yVFC75pWlssVuFlr84 4xYAQAwc8rLA2zIVzPVrxo5sqcqAVcbcSTan5enJsp9Nx8MH5ppgDH13g4gUz9TTFI2QGF/9EB8 OEPluM8iVSI7L9+jQrTSJ7q49lD7vy2z9H1kWuAw1ISi+ZmceweFe73bVtpfE/nqFARXk0tWIkt IQIX+1Z8ddR9aVT77BVAtIh48sDFHiveP35Ymh6Klhv0At6a9qfCApHPfO8Ku8PaAzCqVDVC0/s Fu7XSV6aRBvLzArQ+vH2HN76oynKiE1TmAKhtw/1eFAw9WDnXetgn+JJNWg6/j5XoHiUwJvAupP EZccE4HFTLnmMrpBI9g== X-Proofpoint-ORIG-GUID: L2vCqq2c8iAsJ6TQ8GAMoiMXwPO1C9Kn X-Proofpoint-GUID: L2vCqq2c8iAsJ6TQ8GAMoiMXwPO1C9Kn X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA1MDIyMiBTYWx0ZWRfXy5dw02HE6Exx 6IAt2nVVfo7myObcbkaDMaufGe5t16c34sY8WgKA8LaS0XoT+ThOcJ3DZ1qusJvufxSIai/JiRe 7Kha4A2YxGt/axv4n9nYAMLt3kSKHwE= X-Authority-Analysis: v=2.4 cv=Tf2mcxQh c=1 sm=1 tr=0 ts=6a9c74c6 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=jjHI2IJ3bfbFesgfRcwA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-05_06,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 phishscore=0 clxscore=1015 spamscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609050222 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=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1788638468690158500 A Q reg can be built by a vector compare or by vand(Vu, Rt), and those reach the predicate register through independent code paths. Check that both select the same byte lanes, so a byte-order mistake in either one is caught. The input alternates every eight lanes: a flatter pattern stays unchanged when predicate bytes are permuted and hides the bug. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- tests/tcg/hexagon/hvx_misc.c | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/tests/tcg/hexagon/hvx_misc.c b/tests/tcg/hexagon/hvx_misc.c index 32a3661a86f..225666137c9 100644 --- a/tests/tcg/hexagon/hvx_misc.c +++ b/tests/tcg/hexagon/hvx_misc.c @@ -181,6 +181,50 @@ static void test_store_unaligned(void) check_output_w(__LINE__, 2); } =20 +/* + * A Q register can be built either by a vector compare or by vand(Vu, Rt). + * Those are two independent code paths onto the same predicate-register + * layout, so cross-check that they select exactly the same byte lanes. + * A byte-order mistake in either one shows up here as a mismatch. + * + * The input pattern has to vary across 8-lane blocks, otherwise a predica= te + * whose bytes are permuted still selects the same lanes and the mismatch = is + * invisible. + */ +static void test_qreg_alias(void) +{ + HVX_Vector *pcmp =3D (HVX_Vector *)&output[0]; + HVX_Vector *pand =3D (HVX_Vector *)&output[1]; + HVX_Vector input; + HVX_Vector ones; + HVX_VectorPred qcmp; + HVX_VectorPred qand; + + for (int i =3D 0; i < BUFSIZE; i++) { + /* + * Build 0/1 per byte, alternating every 8 lanes, so that "!=3D 0"= and + * "low bit set" describe the same lanes. Then form one predicate + * with a compare and the other with vand(Vu, Rt), store 0xff thro= ugh + * each, and require the two result vectors to be identical. + */ + for (int j =3D 0; j < MAX_VEC_SIZE_BYTES; j++) { + expect[0].ub[j] =3D ((j >> 3) + i) & 1; + } + memcpy(&input, &expect[0], sizeof(MMVector)); + memset(output, 0, 2 * sizeof(MMVector)); + + ones =3D Q6_V_vsplat_R(0xffffffff); + qcmp =3D Q6_Q_vcmp_gt_VubVub(input, Q6_V_vzero()); + qand =3D Q6_Q_vand_VR(input, 0x01010101); + Q6_vmem_QRIV(qcmp, pcmp, ones); + Q6_vmem_QRIV(qand, pand, ones); + + for (int j =3D 0; j < MAX_VEC_SIZE_BYTES; j++) { + check(__LINE__, i, j, output[0].ub[j], output[1].ub[j]); + } + } +} + static void test_masked_store(bool invert) { void *p0 =3D buffer0; @@ -579,6 +623,7 @@ int main() test_store_unaligned(); test_masked_store(false); test_masked_store(true); + test_qreg_alias(); test_new_value_store(); test_max_temps(); =20 --=20 2.34.1 From nobody Sat Sep 26 20:01:32 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788638462; cv=none; d=zohomail.com; s=zohoarc; b=Ym0DVdcB0T54YcaTL6FYOj+pAKXUyqiffN3wqcCejtfL5raDOaotveBg9MjB4X9NfCFTBXQWjNBdi+UcJ9+ZzDWCH/5hkrP5VTNORLXAFGiBLNri8xAxZMLr70NIcUg0LNa13VpRuiEAsctPvgAoaMZq0HT1TE1EVZm6VeGkFzo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788638462; 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=EXS43zD9gCbpq4SeqnfSGoBoHQbWQgoeJWynhRFotTM=; b=f1xdhbcTsoQQgUHQkbAOvgKy5dzh60H7Ol0OUfWX7bAyk6dfGa4+uZiD7igvMKprBjeOwcSjUNDubTAEpmqfOSqpbk5IYZXfh7yivBBsgNn5aIUCXCigvQzZBg4uxBFYLg/d7epjzaPaFvidytlB9CBzMWryyX1HVGgNI/O7Ib4= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788638462782644.2903240659926; Sat, 5 Sep 2026 13:01:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2wYf-0006tE-9p; Sat, 05 Sep 2026 16:00: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 1x2wYd-0006pJ-0s for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:11 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2wYb-000588-5L for qemu-devel@nongnu.org; Sat, 05 Sep 2026 16:00:10 -0400 Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 685Hbkcq2895068 for ; Sat, 5 Sep 2026 20:00:08 GMT Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ggadhj5vv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 05 Sep 2026 20:00:07 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2db3734d06dso8180235ad.0 for ; Sat, 05 Sep 2026 13:00:07 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3342af0bc08sm14316431eec.17.2026.09.05.13.00.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 05 Sep 2026 13:00:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= EXS43zD9gCbpq4SeqnfSGoBoHQbWQgoeJWynhRFotTM=; b=Mj7+KfzSC4C6qEjl HoPMf/3238EClqwGsn9laRe/3bFbIgGFs7og4a8dIOIJQ4ZXnfQcer8BtTCnqiO4 5JsoZ5OkmU9WMSwMitJBRSQ0v99ehCX7xQ1sLe1VNELBGKXheG0AD/PnO65mr7YR WTcxKL2TWbCRvF301pua1GrusRzM9d6DmEgEab22DlYWRX4c7+bKOiccWedGxrqV Ept4CsyoBTgzY6arn50McRq46iyojMAO3t+m7Z/rpx72bFePF8evCWKHqPxalp2P hDs12l0HdatIPtiyg6RXwl3otirt9UUaLpmhBQI8bBtcshOmCnTj3BLayqA3ye7b cQnEMw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788638407; x=1789243207; darn=nongnu.org; h=content-transfer-encoding:content-type: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=EXS43zD9gCbpq4SeqnfSGoBoHQbWQgoeJWynhRFotTM=; b=Bp6Xjnqnamh1TZBj9r/3/O2UGt5nRt31rX1sIDFFFdhruAThn9MIqWpA/VlpBU2Ubi +MvCxm5Iw0gSXxgzY0liAQzpAYwXCCeiTMya4c/SMkr2k6XROwYEonH+Is/Es/owQpmY jcGXjJHgAdPNx14jNmppPtU45Yg8roandZ7K71QhCsKnPfad3/NVK0VKj4x8wvYLxiMo IHNfjV93fnPXnemgrtsp1XuYQxOTT0wB9YnwZSoZNTygXf2h4SJ56xWnQfod5fd8ru4t K5+DJTfPe7jCmoentIsjXbz/MYt1e6Tu4+9rP3BDv6gRvYPrIP6WnRpyJ7gd8ZKbSvyu XJDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788638407; x=1789243207; h=content-transfer-encoding:content-type: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=EXS43zD9gCbpq4SeqnfSGoBoHQbWQgoeJWynhRFotTM=; b=GNPmVN1EeFb+uSxfOo7bIGH9SXwzbt1f+Pjutmt70tje2CHhoTa8kz548L+ZYtHdBc pd9Sn6CtXjEvLzM3cOFCHVSAeJECQlZ+UAFyIzQ5ndBAIlyt+mPpgmhJWVD3q1xy+XQo IuE5kULVV/8/kHvKz2yq6IywZpEm9nLZ2wbawF9cXCpjYdPusSVEKd4LIkD9BXGM2MVu mZ7Q1kAq1RMNAtZekcnQWj/3iU7gj8SlXyvJrsvWOBrg6JdypdvxeabfxBzfx5VhhMfh dwt964QVzUbZkkr6eOl+uCKSg83xhMQOzFRL8YBIUnkhyp0OahxazM6gP1rWKiZfEOyz 9svA== X-Gm-Message-State: AFuF++l2uQA1qkBokxGekWZ6Ci9Q2g8AOljUVg+j2/M/K4j1lcECbBH9 gThflsG2VAvNCN+7LRSLLlPMJLDIFdNnkj0UY89ib/lRRFxSsbz6PXMrp3WGtb3N9dWUh0q5+bf MNYNaIK9tplYQb8vRZ26rc2mD4D3/xeJatxa5Jno8GemSqQtuC015R/UgQEWk5S9s+g== X-Gm-Gg: AYBFou2Mp63eHt7oHcza3Tha/pTAwHB7wrDXz4MZVlAGCpwbM1OeAoLYTHxhseL1hEv oafnfDaApVO/9SXHTdCgxC3FwRkJT5Vi7C/u+PoCwuidObjKoEh5pQO/kIhYgarxYgBOZQBMwVS yMzkZw2ocjbge1qTvD5ryoMlk49FpPd5WtsufSDLZmoiey4MwB7y0lNRTW3eNwuujglTcQMz8eW NDHVM/LWZ7dPCvI3lu3tKV56CFDnCZZX0EloBCiyfEtcZnmenMDmCkmNJAvsIBDLug4W3So6O+M ESttQHpZsKC8fW6z1uQp6xzkVqwzs9koCSOrOhsqHCzn11C8XoKpYWmwhe2R89cqwAK9VRM7LDV t6rDu8wr7YrUbxvQM0+hg0HyMQbsWLJ+ubkS+yF4rSdEM9Qni X-Received: by 2002:a17:902:fd87:b0:2c9:c991:3bf0 with SMTP id d9443c01a7336-2db12667effmr207111975ad.8.1788638406404; Sat, 05 Sep 2026 13:00:06 -0700 (PDT) X-Received: by 2002:a17:902:fd87:b0:2c9:c991:3bf0 with SMTP id d9443c01a7336-2db12667effmr207111445ad.8.1788638405937; Sat, 05 Sep 2026 13:00:05 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Brian Cain , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PATCH v4 6/6] target/hexagon: rename LEN to OFFS_REG_END in VTCM macros Date: Sat, 5 Sep 2026 12:59:55 -0700 Message-Id: <20260905195955.2001304-7-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> References: <20260905195955.2001304-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: l9xKJlMgWQuagcpK8yEe9VsklhMtpoKt X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA1MDIyMiBTYWx0ZWRfXzx/F4Yvu6mYC g7lw43gJJqxZ52hYRttE+1ccKjOcI/yilQFpOXvoiTiED0pLYzz0EPVIjyjx25Y3DXJgYT5s03B 92ONqE2iO/Xjx/C7eAh0GsCwIE3c1P0LzLMhT79a6rKRYTjDmJRB15NS4TGUfHz218SPLxWcyQM YXI/+DBE682ggRefUwKjHqfY6VGP9jUK3rsagyRGS0U8Wh7ngbT8gdPaRk5Zx6gmxlh7mbsbmhB 9qP3pIVLQ1LeoPlagnbcw/IMq7zuW6ylVAPeQWNEEf9waJPLSaPgMcRo+EHpouSFPK64j6ZnQgX e48Nh7/7INX/oIilV0epUpFkSYZZOkhYcBrYFV9uSv1i2Dd0qNGcjFdwDipANzKMx5KXDNu1sWX vl0yMmZ1o0GLJquJ6jfLuSwHY9D1t4ddotQAOcdcfvrym8Imr4Y2EnWGGP3WmiMVJdONj1qZaKu iIyRCqNpAQcgbbxKj7Q== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA1MDIyMiBTYWx0ZWRfX67BJdyrEGpiu UAGs4aUqBS88tyEWxBGwuOqTJcFgOBS2z+TXRKzKWDR7p7+sYRa1wKkvFpvREZMLY9W15eKZEBV kKDQag63ecn0DxRapHMH4yG6Xy3UO1o= X-Authority-Analysis: v=2.4 cv=OceoyBTY c=1 sm=1 tr=0 ts=6a9c74c7 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=AU_UZifWUxR5frbm-nEA:9 a=QEXdDO2ut3YA:10 a=O8hF6Hzn-FEA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-GUID: l9xKJlMgWQuagcpK8yEe9VsklhMtpoKt X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-05_06,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 phishscore=0 malwarescore=0 impostorscore=0 adultscore=0 spamscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609050222 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=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UPPERCASE_50_75=0.008 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 @qualcomm.com) X-ZM-MESSAGEID: 1788638465876154100 LEN suggested a region size, but the parameter is actually the region's last valid byte offset. Rename it to OFFS_REG_END to make the semantics clearer. Link: https://lore.kernel.org/qemu-devel/63513430-7bd1-486c-b693-49d1076562= ed@oss.qualcomm.com/ Signed-off-by: Brian Cain --- target/hexagon/mmvec/macros.h | 76 +++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 34 deletions(-) diff --git a/target/hexagon/mmvec/macros.h b/target/hexagon/mmvec/macros.h index 858afd995d9..bd12aec36c7 100644 --- a/target/hexagon/mmvec/macros.h +++ b/target/hexagon/mmvec/macros.h @@ -126,11 +126,12 @@ env->vtcm_log.op =3D true; \ env->vtcm_log.op_size =3D SIZE; \ } while (0) -#define fVLOG_VTCM_WORD_INCREMENT(EA, OFFSET, INC, IDX, ALIGNMENT, LEN) \ +#define fVLOG_VTCM_WORD_INCREMENT(EA, OFFSET, INC, IDX, ALIGNMENT, \ + OFFS_REG_END) \ do { \ int log_byte =3D 0; \ target_ulong va =3D EA; \ - int in_region =3D (OFFSET) <=3D (LEN); \ + int in_region =3D (OFFSET) <=3D (OFFS_REG_END); \ for (int i0 =3D 0; i0 < 4; i0++) { \ log_byte =3D in_region; \ LOG_VTCM_BYTE(va + i0, log_byte, \ @@ -138,11 +139,12 @@ 4 * IDX + i0); \ } \ } while (0) -#define fVLOG_VTCM_HALFWORD_INCREMENT(EA, OFFSET, INC, IDX, ALIGNMENT, LEN= ) \ +#define fVLOG_VTCM_HALFWORD_INCREMENT(EA, OFFSET, INC, IDX, ALIGNMENT, \ + OFFS_REG_END) \ do { \ int log_byte =3D 0; \ target_ulong va =3D EA; \ - int in_region =3D (OFFSET) <=3D (LEN); \ + int in_region =3D (OFFSET) <=3D (OFFS_REG_END); \ for (int i0 =3D 0; i0 < 2; i0++) { \ log_byte =3D in_region; \ LOG_VTCM_BYTE(va + i0, log_byte, \ @@ -152,11 +154,11 @@ } while (0) =20 #define fVLOG_VTCM_HALFWORD_INCREMENT_DV(EA, OFFSET, INC, IDX, IDX2, IDX_H= , \ - ALIGNMENT, LEN) \ + ALIGNMENT, OFFS_REG_END) \ do { \ int log_byte =3D 0; \ target_ulong va =3D EA; \ - int in_region =3D (OFFSET) <=3D (LEN); \ + int in_region =3D (OFFSET) <=3D (OFFS_REG_END); \ for (int i0 =3D 0; i0 < 2; i0++) { \ log_byte =3D in_region; \ LOG_VTCM_BYTE(va + i0, log_byte, \ @@ -166,13 +168,14 @@ } while (0) =20 /* NOTE - Will this always be tmp_VRegs[0]; */ -#define GATHER_FUNCTION(EA, OFFSET, IDX, LEN, ELEMENT_SIZE, BANK_IDX, QVAL= ) \ +#define GATHER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, ELEMENT_SIZE, \ + BANK_IDX, QVAL) \ do { \ int i0; \ target_ulong va =3D EA; \ uintptr_t ra =3D GETPC(); \ int log_byte =3D 0; \ - int in_region =3D (OFFSET) <=3D (LEN); \ + int in_region =3D (OFFSET) <=3D (OFFS_REG_END); \ for (i0 =3D 0; i0 < ELEMENT_SIZE; i0++) { \ uint8_t B =3D 0; \ \ @@ -185,31 +188,34 @@ LOG_VTCM_BYTE(va + i0, log_byte, B, ELEMENT_SIZE * IDX + i0); \ } \ } while (0) -#define fVLOG_VTCM_GATHER_WORD(EA, OFFSET, IDX, LEN) \ +#define fVLOG_VTCM_GATHER_WORD(EA, OFFSET, IDX, OFFS_REG_END) \ do { \ - GATHER_FUNCTION(EA, OFFSET, IDX, LEN, 4, IDX, 1); \ + GATHER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 4, IDX, 1); \ } while (0) -#define fVLOG_VTCM_GATHER_HALFWORD(EA, OFFSET, IDX, LEN) \ +#define fVLOG_VTCM_GATHER_HALFWORD(EA, OFFSET, IDX, OFFS_REG_END) \ do { \ - GATHER_FUNCTION(EA, OFFSET, IDX, LEN, 2, IDX, 1); \ + GATHER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 2, IDX, 1); \ } while (0) -#define fVLOG_VTCM_GATHER_HALFWORD_DV(EA, OFFSET, IDX, IDX2, IDX_H, LEN) \ +#define fVLOG_VTCM_GATHER_HALFWORD_DV(EA, OFFSET, IDX, IDX2, IDX_H, \ + OFFS_REG_END) \ do { \ - GATHER_FUNCTION(EA, OFFSET, IDX, LEN, 2, (2 * IDX2 + IDX_H), 1); \ + GATHER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 2, \ + (2 * IDX2 + IDX_H), 1); \ } while (0) -#define fVLOG_VTCM_GATHER_WORDQ(EA, OFFSET, IDX, Q, LEN) \ +#define fVLOG_VTCM_GATHER_WORDQ(EA, OFFSET, IDX, Q, OFFS_REG_END) \ do { \ - GATHER_FUNCTION(EA, OFFSET, IDX, LEN, 4, IDX, \ + GATHER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 4, IDX, \ fGETQBIT(QsV, 4 * IDX + i0)); \ } while (0) -#define fVLOG_VTCM_GATHER_HALFWORDQ(EA, OFFSET, IDX, Q, LEN) \ +#define fVLOG_VTCM_GATHER_HALFWORDQ(EA, OFFSET, IDX, Q, OFFS_REG_END) \ do { \ - GATHER_FUNCTION(EA, OFFSET, IDX, LEN, 2, IDX, \ + GATHER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 2, IDX, \ fGETQBIT(QsV, 2 * IDX + i0)); \ } while (0) -#define fVLOG_VTCM_GATHER_HALFWORDQ_DV(EA, OFFSET, IDX, IDX2, IDX_H, Q, LE= N) \ +#define fVLOG_VTCM_GATHER_HALFWORDQ_DV(EA, OFFSET, IDX, IDX2, IDX_H, Q, \ + OFFS_REG_END) \ do { \ - GATHER_FUNCTION(EA, OFFSET, IDX, LEN, 2, (2 * IDX2 + IDX_H), \ + GATHER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 2, (2 * IDX2 + IDX_= H), \ fGETQBIT(QsV, 2 * IDX + i0)); \ } while (0) #define SCATTER_OP_WRITE_TO_MEM(TYPE) \ @@ -249,12 +255,13 @@ } \ } \ } while (0) -#define SCATTER_FUNCTION(EA, OFFSET, IDX, LEN, ELEM_SIZE, BANK_IDX, QVAL, = IN) \ +#define SCATTER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, ELEM_SIZE, \ + BANK_IDX, QVAL, IN) \ do { \ int i0; \ target_ulong va =3D EA; \ int log_byte =3D 0; \ - int in_region =3D (OFFSET) <=3D (LEN); \ + int in_region =3D (OFFSET) <=3D (OFFS_REG_END); \ for (i0 =3D 0; i0 < ELEM_SIZE; i0++) { \ log_byte =3D in_region && QVAL; \ LOG_VTCM_BYTE(va + i0, log_byte, \ @@ -263,32 +270,33 @@ ELEM_SIZE * IDX + i0); \ } \ } while (0) -#define fVLOG_VTCM_HALFWORD(EA, OFFSET, IN, IDX, LEN) \ +#define fVLOG_VTCM_HALFWORD(EA, OFFSET, IN, IDX, OFFS_REG_END) \ do { \ - SCATTER_FUNCTION(EA, OFFSET, IDX, LEN, 2, IDX, 1, IN); \ + SCATTER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 2, IDX, 1, IN); \ } while (0) -#define fVLOG_VTCM_WORD(EA, OFFSET, IN, IDX, LEN) \ +#define fVLOG_VTCM_WORD(EA, OFFSET, IN, IDX, OFFS_REG_END) \ do { \ - SCATTER_FUNCTION(EA, OFFSET, IDX, LEN, 4, IDX, 1, IN); \ + SCATTER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 4, IDX, 1, IN); \ } while (0) -#define fVLOG_VTCM_HALFWORDQ(EA, OFFSET, IN, IDX, Q, LEN) \ +#define fVLOG_VTCM_HALFWORDQ(EA, OFFSET, IN, IDX, Q, OFFS_REG_END) \ do { \ - SCATTER_FUNCTION(EA, OFFSET, IDX, LEN, 2, IDX, \ + SCATTER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 2, IDX, \ fGETQBIT(QsV, 2 * IDX + i0), IN); \ } while (0) -#define fVLOG_VTCM_WORDQ(EA, OFFSET, IN, IDX, Q, LEN) \ +#define fVLOG_VTCM_WORDQ(EA, OFFSET, IN, IDX, Q, OFFS_REG_END) \ do { \ - SCATTER_FUNCTION(EA, OFFSET, IDX, LEN, 4, IDX, \ + SCATTER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 4, IDX, \ fGETQBIT(QsV, 4 * IDX + i0), IN); \ } while (0) -#define fVLOG_VTCM_HALFWORD_DV(EA, OFFSET, IN, IDX, IDX2, IDX_H, LEN) \ +#define fVLOG_VTCM_HALFWORD_DV(EA, OFFSET, IN, IDX, IDX2, IDX_H, OFFS_REG_= END) \ do { \ - SCATTER_FUNCTION(EA, OFFSET, IDX, LEN, 2, \ + SCATTER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 2, \ (2 * IDX2 + IDX_H), 1, IN); \ } while (0) -#define fVLOG_VTCM_HALFWORDQ_DV(EA, OFFSET, IN, IDX, Q, IDX2, IDX_H, LEN) \ +#define fVLOG_VTCM_HALFWORDQ_DV(EA, OFFSET, IN, IDX, Q, IDX2, IDX_H, \ + OFFS_REG_END) \ do { \ - SCATTER_FUNCTION(EA, OFFSET, IDX, LEN, 2, (2 * IDX2 + IDX_H), \ + SCATTER_FUNCTION(EA, OFFSET, IDX, OFFS_REG_END, 2, (2 * IDX2 + IDX= _H), \ fGETQBIT(QsV, 2 * IDX + i0), IN); \ } while (0) #define fSTORERELEASE(EA, TYPE) \ --=20 2.34.1