From nobody Sun Jul 12 00:40:36 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=1783638500; cv=none; d=zohomail.com; s=zohoarc; b=MNh+aJGUmz+mDl1gFIk16mvsMVyniSODuId1FEC+HHyhq9VN8nwBMJkaErrbxne0FphWMAU0LidvZ5JL3YQ19tDLvHc5DZEpVwHccAxsIJai80ueRHjVRMafHzw244YdPRGjLpuTug1jJcpWBXuQr04QvHKZuLERt5cqaXvZK7U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783638500; 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=jTPIBV7iqMkmA8+g9iyjWw40FvNik0ck5XTSwWcrR6s=; b=BwfUhM7QeGHXK6ksrtiWdS9iRAmldJnb+ktEyxYSdeqOg1ERV9/7RAS6AlHX31Etgp4/OO19HXheMAhQ7sg8SRPAYouTmnfzDj9hCsvAkWYG1vXjid3kurziyRoIny5+tMHG33UVSyTCg0GJlIyNOTaNVi5iSFJrVfsU+b/0+BY= 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 1783638500850734.7993954449274; Thu, 9 Jul 2026 16:08:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whxpp-0001TS-Ll; Thu, 09 Jul 2026 19:07:13 -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 1whxpm-0001Su-Ko for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:07: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 1whxph-0002JF-9X for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:07: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 669HYDgK2476568 for ; Thu, 9 Jul 2026 23:06:49 GMT Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4faf5msgwq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 09 Jul 2026 23:06:49 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-381250979d5so428916a91.0 for ; Thu, 09 Jul 2026 16:06:49 -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-31198cb2b99sm15770348eec.26.2026.07.09.16.06.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jul 2026 16:06:47 -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= jTPIBV7iqMkmA8+g9iyjWw40FvNik0ck5XTSwWcrR6s=; b=Q13E/B6SooZtzibi 2ri4DZ1k5Px7OPYEO+M/eCeQ3LBeD929E/Ia4tKjWvp9A+TjSZr8Yp3AIuHvPExR EzR+t5pRb9uOFMLFKPCUQ2aNFSbg5oiWsjCLD/WJj5swL06I9TZAaCFhRQ94OIi/ 0L6e7cNZSEO/+MBdAXPg+bR3iM45W7+B/+cUWtcAlczv4fJej5N6kYIY7jtckvxf EoDPPD+glIVRbYspAqZpi/7pAR1C2SdQZPy6ZYqNm+RXaDAVH5v9sp7zWM3UILv7 hxnfux2s4tzPQLBjGgKhTCrg2PaPTtmjvoJKEB44Stc97KEu3WL5PzezlkRbGvXa BSlVjA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783638408; x=1784243208; 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=jTPIBV7iqMkmA8+g9iyjWw40FvNik0ck5XTSwWcrR6s=; b=F5th8JmzaAd4KWMp/7qhhjkPtEg7oGsj5PEkOFAUtO6xIEk3Qe1sNESaCSy1P+cJPn yX3xTKCUu8HAKJ0x/dBvzdCE+KRoLBrSYMYXuUhnqntPvyV6CHeq4O38IKOUQ/VqY7/6 Egt0lqAvYArM3sNn5/r35k/B88xa+4HKdIZDTX4ikPxuHlZxjQYceFtSRxNpDbVne4+p 93bHrLiNGkErYYMiK9FcPMx+VoRPgSJPXHKNPIvqEt35lBeGwTJPvfPTE0kolXTcIPOh d72RtPxIyrt6y92kW3NcRrz3mzw5Nv3+NYGcaUyN9GUMzVI6kkZPQJkY+xuGILcasQoQ Q8Ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783638408; x=1784243208; 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=jTPIBV7iqMkmA8+g9iyjWw40FvNik0ck5XTSwWcrR6s=; b=J4EbVeH0D/cnTOSl9OiJnH3Hm1zSyD1AW5LCGhGE77StnaLXN36ICfEgRNAuJ0m3s1 WrlRU5YiFHwN704SUojlTTD76rZW1+lP2ePsw7lkOahz/5TE+MTbEDKqtihlHqOHuT3w TR8Hrjg21rFVxFr6qd9w+HV6wxZk3cfXbye207p7M1jTHl6FJD74zP0eNvZXsIlPXA9a K/MYVnfonQhVGcD/bXLCdOt+fR7yxqdQzuzRFnjUMCLXbc6cClGYF2U80s0CjH6dVXID kPrLRrcRQUqIkbz7RxL4lZHtJsj9eI7CKrSq4CUDb/x8sxalH73hIztydN8hzi69IZqf zb7Q== X-Gm-Message-State: AOJu0YyRIihT5jKyzD2EFwXxSUj57HSmPpr94MS9pZ95T17TMnM3Q8YI p9rPKSpMdUJQM0LB7dFDsQs9TNUiJ7kGAy9QCg25etjjaM2CQzPu11mACK3A2OqC6JjWDve2lM9 1ui+rWxZ55iVAY3E/hT17ZfrrppE+hG774crLIp37IQ0UEGFKiiLeWr1JY6n3jau8tg== X-Gm-Gg: AfdE7clO45ZG5uCU06r2s0CTT6MgydgiBSjzXm20EMR9tyk+L9xwWIaozdan8Q67vI1 YaSKNlVIqp8JGdj+NZVgYS2ZAdnW09ECG3BPCyi08CXVb3wal0ZoEDjNHZc3OGzeOj/gYDI/II+ HlwdRKnbe2lpMkoXfoUahHJ7ptzjuFxGyKhp/TKaO8TlLbmicGEJpayga2BwHR5Qz7os5+96WjT s8oTK2drgNCiBATRJ25kSQU/J7uC0PIZoTnJaJOOqZakFjaV1yWv3RDHwUtU/vHG7YM9X9XgbAU W4m88OSeeW8IkFscziY4ohonNtDhg+CtUSzBe89mp9UT2KI7V05jMV1ZMKeJQKbErqyievfB0gb RvACC0ITp+ENJ72UyoVcgoJOk1H6e9qi0WYIruWHi9nnub/zYj9YOqGyep+s= X-Received: by 2002:a17:90b:4c:b0:37c:8628:f79e with SMTP id 98e67ed59e1d1-38940248a3dmr9393104a91.16.1783638408292; Thu, 09 Jul 2026 16:06:48 -0700 (PDT) X-Received: by 2002:a17:90b:4c:b0:37c:8628:f79e with SMTP id 98e67ed59e1d1-38940248a3dmr9393090a91.16.1783638407855; Thu, 09 Jul 2026 16:06:47 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Pierrick Bouvier , Brian Cain Subject: [PATCH 1/2] target/hexagon: initialize deferred sreg-write temps to current value Date: Thu, 9 Jul 2026 16:06:44 -0700 Message-Id: <20260709230645.3033240-2-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260709230645.3033240-1-brian.cain@oss.qualcomm.com> References: <20260709230645.3033240-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: NQ6KTwNbaRnCxIs-H4kC8Ws7sIX_dgLV X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA5MDIzMCBTYWx0ZWRfX3vtFm38KGBno nIWAwI+IezEfw7c0iU3gCKGxu/1elR/+NFACgbwpva0e4B0YAcy8LAcgk7EQJJ2AUR8FVzLhxhv cLQ6fkWErAgPjuBifK8MKIHIJaxMiIs= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA5MDIzMCBTYWx0ZWRfX2Ei/5Vq1izuU kq9jS9N7vfbhKyFCnu1s6LmXbJRua4af2crjxVCeQFZMjdVX90h+xway8a8yxvagRt8IPNNuxwn g39tHyd90zSZRbtsbUZPjNuUPy5bmZrFRHS2LBDakcnIWhosidCSVnwaQE6cHKWq2wSqJOIURv6 ndTK4bsOmAXgWkl/JGiSD5eP4uEr782kaw2hfZo8mt8C+UNDSe72i5dO83sgVFQj6JGJoNBpXQM GD6FGpCaQ+CC0IM8L2tLL8Yf+2h6hn1ji7wzUj0IHoIlXcvpH8cKE8b/ZrTKx0/rZLDB2zBBsjN 6orcxJUiYgOlDQgIllxd5qUKS5mspmIPtSu8NDEC59NegL+SiQDMYhOcTLpZlC0wpLgicPZfNYV ZjDAWIrC8P2hQ8zRE4BFWlLXwtwaYEl4Bo02GJ+XCQsH8zhyPAROX7X17lxj1lCmQTLGCesSyYr DuIPXGV29l4jlvmeiXQ== X-Proofpoint-GUID: NQ6KTwNbaRnCxIs-H4kC8Ws7sIX_dgLV X-Authority-Analysis: v=2.4 cv=N+QZ0W9B c=1 sm=1 tr=0 ts=6a502989 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=IlOZXNdbeIrMSDKviAkA:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-09_04,2026-07-09_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 priorityscore=1501 phishscore=0 adultscore=0 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607090230 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: 1783638503295158500 Unconditionally allocate and initialize the temp to the sreg's current value for every logged sreg write, rather than only allocating when need_commit is set or the register is SSR. Without this, reading a deferred sreg write within the same packet before it is committed can observe an uninitialized temp instead of the register's pre-packet value. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- target/hexagon/translate.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 77235916f4b..28a171bf623 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -615,9 +615,10 @@ static void gen_start_packet(DisasContext *ctx) } for (i =3D 0; i < ctx->sreg_log_idx; i++) { int reg_num =3D ctx->sreg_log[i]; - if (reg_num < HEX_SREG_GLB_START && - (ctx->need_commit || reg_num =3D=3D HEX_SREG_SSR)) { + if (reg_num < HEX_SREG_GLB_START) { ctx->t_sreg_new_value[reg_num] =3D tcg_temp_new(); + tcg_gen_mov_tl(ctx->t_sreg_new_value[reg_num], + hex_t_sreg[reg_num]); } } for (i =3D 0; i < NUM_GREGS; i++) { --=20 2.34.1 From nobody Sun Jul 12 00:40:36 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=1783638500; cv=none; d=zohomail.com; s=zohoarc; b=R1TV2yNoq0+ZiH9pkVAeYAowzi39vxUabY4XSiF1KWPca4IoaSbvxbdY63M7j2qivT28DEzsmGrklWnkpADLRNrFJUYEGhkwAEvs2Z1TmKAp4MzXCIKMSonLQPYrbmcNMkHeUL+eOn2Ry7vbx+3mLrvdgZiix24dEapAlehdRdE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783638500; 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=/0DeQx2M3WTDmP6z9eup8pyGpX0ES+z7C3FGyYpgFi0=; b=LKgWjGPvGM8eEPtlg9vbg6nxfNVgsIaCWuCZkbFd+7pC89mWEiHkX7uwc7o5QLXempE3xBcwgn0oG3XWWoKZgfTgSrZWIXU/kIobhwcal+WsxqpehI+osP5AXdCmdXQyO5W98Rszdw4OSt4zMYaztUN+Rc4r1px40eXAGdHrOH0= 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 1783638500673995.1660713885817; Thu, 9 Jul 2026 16:08:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whxps-0001Tq-6f; Thu, 09 Jul 2026 19:07:16 -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 1whxpl-0001St-U2 for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:07:10 -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 1whxph-0002JZ-Ho for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:07:09 -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 669HWrqP2373970 for ; Thu, 9 Jul 2026 23:06:51 GMT Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4faeg5ht5h-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 09 Jul 2026 23:06:51 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c88ad1558f4so642695a12.2 for ; Thu, 09 Jul 2026 16:06:51 -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-31198cb2b99sm15770348eec.26.2026.07.09.16.06.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jul 2026 16:06:48 -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= /0DeQx2M3WTDmP6z9eup8pyGpX0ES+z7C3FGyYpgFi0=; b=V67/W42NpV2J1eYB ZlwqA0xI08AMNim9FSWACRrLNGNWG8bsFX64YtWtOpDFi3tTZhpVQsB+/ocB6+5B 6saB88e0p4Z0/PThG9+PeVweWhLUD7Nr81KZnZmXEWPHn3XPXUgOx+ePIxBVWhRv vbBEjxpNbBChD1Iu47d6hqq+X2m5rg6Q+0L5ODN5ZfQPeLu8vNisfVfimV4uvgQN K5Q2Y6gjSXRhsDuoxQVBDlSTWGQ+jddhrNoJXWHckGIeBiOB126cRCzROh/qgO7M me8Z5WHM8w0RgUZk7DIUSldtqI6sKNrZlRM90ZG9uqaGe9bH1yBAQFC8HzyRoxeK artawA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783638411; x=1784243211; 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=/0DeQx2M3WTDmP6z9eup8pyGpX0ES+z7C3FGyYpgFi0=; b=GxV8ghEacPZYjfi5JcrKQxcst5wqQUf4vj6ayuYMZY2ORGolZ3kmmzk2J8CqEy9obr FKtZMo+0gvtfOo8u3h+djNNb1H/jXHdnybTm6SSwEp5Bb5wUeZC1ub9in3yMl3FrIDlO 6r/tew6ac9zQusCSilpPBC0t2oGJ/faWFxbi94PxnoVsStdQjqlty5TemsCZe2KNehYJ MOjgGUmuViamTQJANzdjbRuAW3ycZLpkKB5mg53cT1eATR8IRzG7miqJLbznp3kEFCtZ Us8rhfs48uyLglF074jMboUCG+lKd5V7C2iO6u7CXpD5iEkh8kQAk12zsrTnZ6+sXipL citw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783638411; x=1784243211; 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=/0DeQx2M3WTDmP6z9eup8pyGpX0ES+z7C3FGyYpgFi0=; b=N6dwNTJeJzXR2QLTyc6zaZZrgXQEoItwJW56pjONYZsv/EFIJdi2LBjKQ5zp46FevF SVs4EU5aSPlT1+kEay4r+NXAAB+r1OJ4899/DXdKwy5O+e1WY1ll42SuhV5sdDD+DnDz FGn/j5KZNp/U4g/WTA7jK0xWX6P8R3Hyr8ihxhbA/cpSwiHTDYnBqaU8zX6GJfudPhS2 dqGLKkyd5JcqrNVqcn62u4eiyLWaba3qIbhGTGcj1IQoh4JLk/Wxa2X7L9RcSSMS5KNU Y8VPVU+tE277nkdW0tD3tAInqh4tc3EgIoCYtXTqb+AF/dpkms2HbDqcE41+6hzY070z 5EPQ== X-Gm-Message-State: AOJu0YzPh2Ziicp6LTLheX/8Idmy/pyvBGqK/ADCYdwjcKns4ePpF6ns G2yX3MsPPf1nE28jDy/Zl5djZ8aW+AwKi1Bk+I43HTnZZksYpFWKZF42iD6zylwO6OSEJ+Yf3J2 9PJaDtBw/9ACi+a3wVKgw8nhneOnLgLVLoKMkgC6UuBgID/DHLnL3PT/tockfhtLd9Q== X-Gm-Gg: AfdE7cmbrFopr9uZtobEeAsb9yZb8ojqqbmFNtJmOrNhSr5AlHi+hxXDuB6cyxFio/1 warWZvPBPP5UVfs8GpLIA/R074oXstjQEvwE0vIT3K+PutRSU3CGdwyCO525HnAoKvbXVv6ArZM DIW0ZWpUdUeVzuRogCk2jmEfDsS0o+opabRx0cT0x0K8MUGKo+72IC4rfg5lf/75Wnr/ICGeRA7 cEXi9KKXXifmHCvIVhb9o6/UktXvxfspHLn+gtyBsocm4X0aqTjDLVUgCOZWN4QAwhlNL2muXJW 6hQkd8xZM5TJB8HJQ5UtcSCy80OBnWTVOf/gjqPLICUDUjxtmneu+bqEfC0dH9xUyS55yaq8r+v wVbE2urPaY3FG5wVYJNPZzAJWqoylDcz79HFPRZa5zieu5fyGmuMMrVgn/Cw= X-Received: by 2002:a05:6a21:4910:b0:3bf:b08a:cded with SMTP id adf61e73a8af0-3c0bce9caf9mr11005076637.37.1783638410896; Thu, 09 Jul 2026 16:06:50 -0700 (PDT) X-Received: by 2002:a05:6a21:4910:b0:3bf:b08a:cded with SMTP id adf61e73a8af0-3c0bce9caf9mr11005051637.37.1783638410356; Thu, 09 Jul 2026 16:06:50 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Pierrick Bouvier , Brian Cain Subject: [PATCH 2/2] target/hexagon: fix PC not advancing for non-COF TB-ending packets Date: Thu, 9 Jul 2026 16:06:45 -0700 Message-Id: <20260709230645.3033240-3-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260709230645.3033240-1-brian.cain@oss.qualcomm.com> References: <20260709230645.3033240-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=FN8rAeos c=1 sm=1 tr=0 ts=6a50298b cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=j_Ogrd1p5-rMj9Zg3YEA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA5MDIzMCBTYWx0ZWRfX2JTG86OeV4dF bsqXOdDQVyPbDbuY0FtJI3Eq1D9qaxt1oeWFpkDkmiIOkMO88JHVN0+o0gE+3qzynyPZvZyCBco kuUg85DBCC1+UdCI1DFIvjDMEdyzrBU= X-Proofpoint-ORIG-GUID: H7DDsrv1hke9OhNibbBinT7glp5clXT3 X-Proofpoint-GUID: H7DDsrv1hke9OhNibbBinT7glp5clXT3 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA5MDIzMCBTYWx0ZWRfXz8hi41SW96RI LXiUHfbvFbHMQqwZOphztDK5ybcYE6BRPW/Y6WKr4fJ8aDictCOZ+iyR+mwkiUqmIB724n0aSM4 NHGlUsFDxpqXq5M+mOGwst15tPwFwovK3i5WamNwDc7rRPHpxkr6pTrOI9D1br3HwtBo0e0L0XY q/DqME6KH0XD80yrjLPIhyS7Ng+blNhept/SGV31DFaVRCOzGAHzOpDCidDtED/TpgrZFn1B0tY oj46cgT3I4Ub3bFk1G78wiFfCdHhZoSrra+MMKtSP77IFFrVMp7Cxv32stYmO8Mf8nZhr4o0lfQ rtK0czhVd4bNoQa/iZUvDAjp8aFckoSqy5CFMn4z3Sm4COVs81D8Xj2izpaj7GfplIl6Ht9tLK2 pw5RDfz5bbxWJL8JzSrtU5IUn5N/5l/D7QP7ukvI9TPqcQRjrPHVJPJPnmNDbHk2s3Re6zdZe2Y n14XJNGSIdGCTepAQ8g== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-09_04,2026-07-09_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 phishscore=0 clxscore=1015 impostorscore=0 spamscore=0 priorityscore=1501 lowpriorityscore=0 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607090230 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: 1783638503365158500 Add hex_next_PC, a global mirroring CPUHexagonState::next_PC, and ctx->need_next_pc, so that gen_write_new_pc_addr() can write the branch target through hex_next_PC instead of hex_gpr[HEX_REG_PC] when a later unconditional write of PC is expected. gen_end_tb() then commits hex_next_PC into hex_gpr[HEX_REG_PC] at the end of the packet. Previously, non-COF instructions that still end a TB did not advance the PC, since next_PC's value was never written back into the PC register. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- target/hexagon/translate.h | 3 +++ target/hexagon/genptr.c | 14 ++++++++--- target/hexagon/translate.c | 51 ++++++++++++++++++++++++++------------ 3 files changed, 49 insertions(+), 19 deletions(-) diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h index 0a7f37d5842..2fca157553b 100644 --- a/target/hexagon/translate.h +++ b/target/hexagon/translate.h @@ -40,6 +40,7 @@ typedef struct DisasContext { int reg_log_idx; DECLARE_BITMAP(regs_written, TOTAL_PER_THREAD_REGS); DECLARE_BITMAP(predicated_regs, TOTAL_PER_THREAD_REGS); + bool pkt_ends_tb; bool implicit_usr_write; #ifndef CONFIG_USER_ONLY int greg_log[GREG_WRITES_MAX]; @@ -75,6 +76,7 @@ typedef struct DisasContext { DECLARE_BITMAP(insn_qregs_read, NUM_QREGS); bool pre_commit; bool need_commit; + bool need_next_pc; TCGCond branch_cond; target_ulong branch_dest; bool is_tight_loop; @@ -310,6 +312,7 @@ extern TCGv hex_gpr[TOTAL_PER_THREAD_REGS]; extern TCGv hex_pred[NUM_PREGS]; extern TCGv hex_slot_cancelled; extern TCGv hex_new_value_usr; +extern TCGv hex_next_PC; extern TCGv hex_store_addr[STORES_MAX]; extern TCGv_i32 hex_store_width[STORES_MAX]; extern TCGv hex_store_val32[STORES_MAX]; diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c index 1ebc7471409..dc9ba8a0060 100644 --- a/target/hexagon/genptr.c +++ b/target/hexagon/genptr.c @@ -613,14 +613,22 @@ static void gen_write_new_pc_addr(DisasContext *ctx, = TCGv addr, tcg_gen_brcondi_tl(cond, pred, 1, pred_false); } =20 + /* + * If gen_end_tb() will unconditionally overwrite PC with hex_next_PC + * (because this packet has a predicated COF that may not execute), + * write the branch target there instead of directly into the PC + * global, or the overwrite in gen_end_tb() would clobber it. + */ + TCGv pc_wr =3D ctx->need_next_pc ? hex_next_PC : hex_gpr[HEX_REG_PC]; + if (ctx->pkt.pkt_has_multi_cof) { /* If there are multiple branches in a packet, ignore the second o= ne */ - tcg_gen_movcond_tl(TCG_COND_NE, hex_gpr[HEX_REG_PC], + tcg_gen_movcond_tl(TCG_COND_NE, pc_wr, ctx->branch_taken, tcg_constant_tl(0), - hex_gpr[HEX_REG_PC], addr); + pc_wr, addr); tcg_gen_movi_tl(ctx->branch_taken, 1); } else { - tcg_gen_mov_tl(hex_gpr[HEX_REG_PC], addr); + tcg_gen_mov_tl(pc_wr, addr); } =20 if (cond !=3D TCG_COND_ALWAYS) { diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 28a171bf623..22f0ff5b891 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -54,6 +54,7 @@ static const AnalyzeInsn opcode_analyze[XX_LAST_OPCODE] = =3D { TCGv hex_gpr[TOTAL_PER_THREAD_REGS]; TCGv hex_pred[NUM_PREGS]; TCGv hex_slot_cancelled; +TCGv hex_next_PC; TCGv hex_new_value_usr; TCGv hex_store_addr[STORES_MAX]; TCGv_i32 hex_store_width[STORES_MAX]; @@ -184,10 +185,16 @@ static void gen_goto_tb(DisasContext *ctx, unsigned t= b_slot_idx, } } =20 +static bool need_next_PC(DisasContext *ctx); + static void gen_end_tb(DisasContext *ctx) { gen_exec_counters(ctx); =20 + if (ctx->need_next_pc) { + tcg_gen_mov_tl(hex_gpr[HEX_REG_PC], hex_next_PC); + } + if (ctx->branch_cond !=3D TCG_COND_NEVER) { if (ctx->branch_cond !=3D TCG_COND_ALWAYS) { TCGLabel *skip =3D gen_new_label(); @@ -391,17 +398,25 @@ static bool pkt_ends_tb(Packet *pkt) =20 static bool need_next_PC(DisasContext *ctx) { - /* Check for conditional control flow or HW loop end */ - for (int i =3D 0; i < ctx->pkt.num_insns; i++) { - uint16_t opcode =3D ctx->pkt.insn[i].opcode; - if (GET_ATTRIB(opcode, A_CONDEXEC) && GET_ATTRIB(opcode, A_COF)) { - return true; - } - if (GET_ATTRIB(opcode, A_HWLOOP0_END) || - GET_ATTRIB(opcode, A_HWLOOP1_END)) { - return true; + Packet *pkt =3D &ctx->pkt; + if (pkt->pkt_has_cof || ctx->pkt_ends_tb) { + for (int i =3D 0; i < pkt->num_insns; i++) { + uint16_t opcode =3D pkt->insn[i].opcode; + if ((GET_ATTRIB(opcode, A_CONDEXEC) && GET_ATTRIB(opcode, A_CO= F)) || + GET_ATTRIB(opcode, A_HWLOOP0_END) || + GET_ATTRIB(opcode, A_HWLOOP1_END)) { + return true; + } } } + /* + * We end the TB on some instructions that do not change the flow (for + * other reasons). In these cases, we must set pc too, as the insn won= 't + * do it themselves. + */ + if (ctx->pkt_ends_tb && !check_for_attrib(pkt, A_COF)) { + return true; + } return false; } =20 @@ -637,12 +652,14 @@ static void gen_start_packet(DisasContext *ctx) ctx->branch_taken =3D NULL; if (ctx->pkt.pkt_has_cof) { ctx->branch_taken =3D tcg_temp_new(); - if (ctx->pkt.pkt_has_multi_cof) { - tcg_gen_movi_tl(ctx->branch_taken, 0); - } - if (need_next_PC(ctx)) { - tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], next_PC); - } + } + if (ctx->pkt.pkt_has_multi_cof) { + tcg_gen_movi_tl(ctx->branch_taken, 0); + } + ctx->pkt_ends_tb =3D pkt_ends_tb(&ctx->pkt); + ctx->need_next_pc =3D need_next_PC(ctx); + if (ctx->need_next_pc) { + tcg_gen_movi_tl(hex_next_PC, next_PC); } =20 /* Preload the predicated registers into get_result_gpr(ctx, i) */ @@ -1142,7 +1159,7 @@ static void gen_commit_packet(DisasContext *ctx) ctx->pkt.vhist_insn->generate(ctx); } =20 - if (pkt_ends_tb(&ctx->pkt) || ctx->base.is_jmp =3D=3D DISAS_NORETURN) { + if (ctx->pkt_ends_tb || ctx->base.is_jmp =3D=3D DISAS_NORETURN) { gen_end_tb(ctx); } } @@ -1327,6 +1344,8 @@ void hexagon_translate_init(void) } hex_new_value_usr =3D tcg_global_mem_new(tcg_env, offsetof(CPUHexagonState, new_value_usr), "new_value_usr"); + hex_next_PC =3D tcg_global_mem_new(tcg_env, + offsetof(CPUHexagonState, next_PC), "next_PC"); =20 for (i =3D 0; i < NUM_PREGS; i++) { hex_pred[i] =3D tcg_global_mem_new(tcg_env, --=20 2.34.1