From nobody Wed Apr 8 02:53:12 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=1773202385; cv=none; d=zohomail.com; s=zohoarc; b=TNJEzNaa0WKLO3Gs3uQ1Vc/OK9ePElFKd2JjwU+JUfWIUVLMNqe+nPUKkCxkXr8n2kS/H29Qahto9B8pHzHNs2be5v57J+z435VsjJVFZdf/AFp0pXBVRxeq1AVfnUayWiDPVmG9K6+muiCAnT13mvGGWy++bmyGKO0KAwpqjjk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773202385; 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=dFZu/Z+47ChRFZONflI6rUJhVTzPEYlcTJK2zoxcJdY=; b=mZMpCdgm4lJ837MWvzxBo/0wUHyDWBbZ9BJp7NFM1xwwakCRjxT9opGsMQND9sPFsS1IVEuphVum+tXkccB5quFlBF+41gqrBjUaS1I1lgqNcBVjhxqlhgsO7eHIRAUQKs4Q3G1TFik5rO/8ZRkMItTlECRpzsRAGzXybECo8SE= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1773202385269815.9384227547332; Tue, 10 Mar 2026 21:13:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w0AsK-0000tC-PQ; Wed, 11 Mar 2026 00:08:48 -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 1w0AsD-0000ql-ST for qemu-devel@nongnu.org; Wed, 11 Mar 2026 00:08:42 -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 1w0AsB-000061-LR for qemu-devel@nongnu.org; Wed, 11 Mar 2026 00:08:41 -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 62AKOeMX140361 for ; Wed, 11 Mar 2026 04:08:38 GMT Received: from mail-oa1-f72.google.com (mail-oa1-f72.google.com [209.85.160.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ctg1muwgb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 04:08:38 +0000 (GMT) Received: by mail-oa1-f72.google.com with SMTP id 586e51a60fabf-40ad1c724daso61168391fac.3 for ; Tue, 10 Mar 2026 21:08:38 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-4177e5ea30asm998656fac.10.2026.03.10.21.08.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 21:08:37 -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= dFZu/Z+47ChRFZONflI6rUJhVTzPEYlcTJK2zoxcJdY=; b=d/4JIbtW09KySJ6r wRkmNrm3NumKbT4vhI3H5eAEJcPkR1sHnO/3Jl03i+Ap+uzbMJihFWUqk+53bKvQ HCnWyMqYPTzZtw529Ymokb+HICVnTH9P8PKM37xaxILxxDlhBcjwoQuTYTqeDixi U/YtOZOc+cZN7iFDNXbctrhhjl7YrXeFsXN1kC5FIFR34YQQXH8gTc0qD6APyAEi te/RsjQRUgib0ZV6ev22n6htQbpJLrVD4XSqiysaaVMC9ZpzUJl+7hnd7TzuraHH MjZenIc+j4Hw1riGIBJPlyyw0uWgfUd/oFPGhqqA2S0+AJcTSBOo6VheLtaG1Rj0 MkQ7IA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773202118; x=1773806918; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dFZu/Z+47ChRFZONflI6rUJhVTzPEYlcTJK2zoxcJdY=; b=ZMQppX6UIfmSPoCupgOAFJRZAw2mM6LOEUff8URKAs0nB5CtyQ1kskOVFSE7JUrGRH pdOnms2ySx5EOYZ4wX4rWEL+YRujPdBtaNk4wTLL4u0IA/uSRsvjLSmh01fJbzIMT6Cg 5allsBQQiVrnoXujAUt0hIsfySb2wB4tgqweyJWiypP+Cnt3EC4Kz8OZh69L80ld/6E1 +Noyb0av3CZVPGED7WAnjUUqv7+FiDxU8l0DSC4am170nosPCJ2FTiJQPyCxkMV0TQey J/FPYlPlapCZYUMy9XLNnjaIZ3ZeO0liZt/eIFm288uArDPrg6gUlPa8y/Bk6TRa8Gya gwvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773202118; x=1773806918; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dFZu/Z+47ChRFZONflI6rUJhVTzPEYlcTJK2zoxcJdY=; b=Cf7JTDCojesWCkXFL8sZ/CuOKFBwrlOMSNC+05e14lW9qH3/XYBArSnQkYFuqpyZ8M aFFiFZFVwW4T1L9zxH76kZvBA67Jf635VtbHTcoUXYrQTPoLzr0MXy/TObaMqgQITbg5 dWTX//NZ2xZQe1vjk4rK1mIywNBkLqMy42ytD27gWuVNqm0vT8YZsAvUO8Y02E6qd4Mt +LonOOlQyUjPk52F6OgMkxx+3Ws39YajO6GV5SrlSSQFson7j1o+ZrRNSl88/OcJdrTo VbJGcDGbQALd+BEv0TzYz68EZU4kyH5HLlDNTz5kbZoCUIQ4+JAMJxJ2/OZfio9T2KHM c4Zw== X-Gm-Message-State: AOJu0YxR9C3g2a3HQzrzEV6QJICS8h220xDcIXZagRUwPnxHigJi2ZUC AoGPwVSDaq9G/57q9DGX88Jvg/zHfMfk/tsLjxmthKRvw3Ea7015a1LqnLrm7wCy7aC+LJspAnt 5koeonULkF7HWPyhACjqqUZzLfiLGDac6Ibu67vRYrcA1WEnqb2/AoeJUA6MwJld7ng== X-Gm-Gg: ATEYQzzqAYrzC6S42Htn2SQAMi4GMEvDKOdkwzYLwFbk19b+WTyFb9F9myOBGj+IOUd Z23OqH+F/QFB+2IGuMjaiIwZvn7AkaJFyY99yynDqgkUtYjEaaRELkm9RQ7bm9WltvsSDVzpp1q iGgfLVPSTvojhVtsDO7pVE18nzV5kwO+Mmh3h2V+Dk6hooiu9cQ5+7tQeO0SI8YfqxrSNrYI+zw Ta6424utE67N9LLrwnmQQF8rvvKk1Fg8rCBu+WJnrsTAHB2sgiSt891aHOtoNppdoYCobqJmtLu u26BD3RMCcZ01lLH7S3cedTUA/tapsc7e6Iur8wWwWH0FxJjQ9/5Mh7vF5jF4xQd2G857slUtHY UYClWLWpoqzueZs6G5E0TqqJ32CLHth9roDuAcWjS7Hn4Qvs6rd9E+f8iqPDjBVqwxaZZoA== X-Received: by 2002:a05:6870:2317:b0:3f5:5af:c9de with SMTP id 586e51a60fabf-4177c9fbfd2mr985678fac.51.1773202117995; Tue, 10 Mar 2026 21:08:37 -0700 (PDT) X-Received: by 2002:a05:6870:2317:b0:3f5:5af:c9de with SMTP id 586e51a60fabf-4177c9fbfd2mr985665fac.51.1773202117646; Tue, 10 Mar 2026 21:08:37 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, philmd@linaro.org, ltaylorsimpson@gmail.com, matheus.bernardino@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, quic_mburton@quicinc.com, sid.manning@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng, Brian Cain Subject: [PATCH v3 23/32] target/hexagon: Add pkt_ends_tb to translation Date: Tue, 10 Mar 2026 21:07:49 -0700 Message-Id: <20260311040758.1068731-24-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260311040758.1068731-1-brian.cain@oss.qualcomm.com> References: <20260311040758.1068731-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=YOeSCBGx c=1 sm=1 tr=0 ts=69b0eac6 cx=c_pps a=Z3eh007fzM5o9awBa1HkYQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=imK-vThzYG-NRbbrpigA:9 a=QEXdDO2ut3YA:10 a=eBU8X_Hb5SQ8N-bgNfv4:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-ORIG-GUID: _D8W0gn0MYfnk5sG2wP9PiN_yyLXgewK X-Proofpoint-GUID: _D8W0gn0MYfnk5sG2wP9PiN_yyLXgewK X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDAzMiBTYWx0ZWRfX3BjdWbQCZS3j n49mI33cNtamnz7SX9Z3z5/3HiWDIqQczRdggggrj+QeFYurwUdnRIQd8ziswm4hLospEwXAVSs PsVuQ/P7qVUYQYOigkemKJAr8mJLFqKRdz4yB1CYw16PbLQYx0Ha+VH4pA3K/65KHIGdMXFw/W8 dsM9YviKfyB4SihaH+rT4J5J4EQfJDsZIwo75GZuALJk7zaf+w21HGkj5N0VVTCzrd8uyyS7kb/ OTj1qqamhJxLC7poSOe+X5vLWhkEW8IDsIxjVuAaM7P8jbwbNJmXYON2E4qGCtTX6cckgIzti72 avgsF8eg05JEHuWUESGBU+5uWpHmXO/6U4Lk0iTlBR3MbBDtSHOWiHWSZhFS3KwsHyRz2F/pInz J8av7sNfWhiu/hW10RD1Kq+jIJTpdUTJPRx6cME8QGhdORTURQZOEdqoD9vnsxCIZjEuHLEXMkf DuFWSNNOUIPmB9I4ikg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_05,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 spamscore=0 bulkscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 phishscore=0 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110032 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=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.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_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: 1773202387191154100 From: Brian Cain Signed-off-by: Brian Cain Reviewed-by: Taylor Simpson --- target/hexagon/translate.h | 1 + target/hexagon/translate.c | 102 ++++++++++++++++++++++++++++++++++++- 2 files changed, 101 insertions(+), 2 deletions(-) diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h index 82b327312ec..4e090565aac 100644 --- a/target/hexagon/translate.h +++ b/target/hexagon/translate.h @@ -85,6 +85,7 @@ typedef struct DisasContext { TCGv branch_taken; TCGv dczero_addr; bool pcycle_enabled; + bool pkt_ends_tb; uint32_t num_cycles; } DisasContext; =20 diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index e4d4dad8ffd..953b34b7891 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -272,6 +272,16 @@ static bool check_for_attrib(Packet *pkt, int attrib) return false; } =20 +static bool check_for_opcode(Packet *pkt, uint16_t opcode) +{ + for (int i =3D 0; i < pkt->num_insns; i++) { + if (pkt->insn[i].opcode =3D=3D opcode) { + return true; + } + } + return false; +} + static bool need_slot_cancelled(Packet *pkt) { /* We only need slot_cancelled for conditional store instructions */ @@ -285,6 +295,90 @@ static bool need_slot_cancelled(Packet *pkt) return false; } =20 +#ifndef CONFIG_USER_ONLY +static bool sreg_write_ends_tb(int reg_num) +{ + return reg_num =3D=3D HEX_SREG_SSR || + reg_num =3D=3D HEX_SREG_STID || + reg_num =3D=3D HEX_SREG_IMASK || + reg_num =3D=3D HEX_SREG_IPENDAD || + reg_num =3D=3D HEX_SREG_BESTWAIT || + reg_num =3D=3D HEX_SREG_SCHEDCFG; +} + +static bool has_sreg_write_ends_tb(Packet const *pkt) +{ + for (int i =3D 0; i < pkt->num_insns; i++) { + Insn const *insn =3D &pkt->insn[i]; + uint16_t opcode =3D insn->opcode; + if (opcode =3D=3D Y2_tfrsrcr) { + /* Write to a single sreg */ + int reg_num =3D insn->regno[0]; + if (sreg_write_ends_tb(reg_num)) { + return true; + } + } else if (opcode =3D=3D Y4_tfrspcp) { + /* Write to a sreg pair */ + int reg_num =3D insn->regno[0]; + if (sreg_write_ends_tb(reg_num)) { + return true; + } + if (sreg_write_ends_tb(reg_num + 1)) { + return true; + } + } + } + return false; +} +#endif + +static bool pkt_ends_tb(Packet *pkt) +{ + if (pkt->pkt_has_cof) { + return true; + } +#ifndef CONFIG_USER_ONLY + /* System mode instructions that end TLB */ + if (check_for_opcode(pkt, Y2_swi) || + check_for_opcode(pkt, Y2_cswi) || + check_for_opcode(pkt, Y2_ciad) || + check_for_opcode(pkt, Y4_siad) || + check_for_opcode(pkt, Y2_wait) || + check_for_opcode(pkt, Y2_resume) || + check_for_opcode(pkt, Y2_iassignw) || + check_for_opcode(pkt, Y2_setimask) || + check_for_opcode(pkt, Y4_nmi) || + check_for_opcode(pkt, Y2_setprio) || + check_for_opcode(pkt, Y2_start) || + check_for_opcode(pkt, Y2_stop) || + check_for_opcode(pkt, Y2_k0lock) || + check_for_opcode(pkt, Y2_k0unlock) || + check_for_opcode(pkt, Y2_tlblock) || + check_for_opcode(pkt, Y2_tlbunlock) || + check_for_opcode(pkt, Y2_break) || + check_for_opcode(pkt, Y2_isync) || + check_for_opcode(pkt, Y2_syncht) || + check_for_opcode(pkt, Y2_tlbp) || + check_for_opcode(pkt, Y2_tlbw) || + check_for_opcode(pkt, Y5_ctlbw) || + check_for_opcode(pkt, Y5_tlbasidi)) { + return true; + } + + /* + * Check for sreg writes that would end the TB + */ + if (check_for_attrib(pkt, A_IMPLICIT_WRITES_SSR)) { + return true; + } + if (has_sreg_write_ends_tb(pkt)) { + return true; + } +#endif + return false; +} + + static bool need_next_PC(DisasContext *ctx) { Packet *pkt =3D ctx->pkt; @@ -447,7 +541,10 @@ static void analyze_packet(DisasContext *ctx) static void gen_start_packet(DisasContext *ctx) { Packet *pkt =3D ctx->pkt; - target_ulong next_PC =3D ctx->base.pc_next + pkt->encod_pkt_size_in_by= tes; + uint32_t next_PC =3D (check_for_opcode(pkt, Y2_k0lock) || + check_for_opcode(pkt, Y2_tlblock)) ? + ctx->base.pc_next : + ctx->base.pc_next + pkt->encod_pkt_size_in_= bytes; int i; =20 /* Clear out the disassembly context */ @@ -493,6 +590,7 @@ static void gen_start_packet(DisasContext *ctx) tcg_gen_movi_tl(hex_slot_cancelled, 0); } ctx->branch_taken =3D NULL; + ctx->pkt_ends_tb =3D pkt_ends_tb(pkt); if (pkt->pkt_has_cof) { ctx->branch_taken =3D tcg_temp_new(); if (pkt->pkt_has_multi_cof) { @@ -958,7 +1056,7 @@ static void gen_commit_packet(DisasContext *ctx) pkt->vhist_insn->generate(ctx); } =20 - if (pkt->pkt_has_cof) { + if (ctx->pkt_ends_tb || ctx->base.is_jmp =3D=3D DISAS_NORETURN) { gen_end_tb(ctx); } } --=20 2.34.1