{"id":2227603,"url":"http://patchwork.ozlabs.org/api/patches/2227603/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260424023606.2556830-6-brian.cain@oss.qualcomm.com/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260424023606.2556830-6-brian.cain@oss.qualcomm.com>","list_archive_url":null,"date":"2026-04-24T02:36:02","name":"[PULL,5/9] Hexagon (target/hexagon) Check each opcode against current CPU definition","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"96ae4a8d0b2d90a7ed0eead47ee187f4a79bdd8b","submitter":{"id":89839,"url":"http://patchwork.ozlabs.org/api/people/89839/?format=json","name":"Brian Cain","email":"brian.cain@oss.qualcomm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260424023606.2556830-6-brian.cain@oss.qualcomm.com/mbox/","series":[{"id":501280,"url":"http://patchwork.ozlabs.org/api/series/501280/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=501280","date":"2026-04-24T02:36:05","name":"[PULL,1/9] Hexagon (target/hexagon) Properly handle Hexagon CPU version","version":1,"mbox":"http://patchwork.ozlabs.org/series/501280/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2227603/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2227603/checks/","tags":{},"related":[],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=QH+fRniX;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=M8FVsxGL;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g1xv64TNhz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 12:37:22 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wG6P4-0006ke-41; Thu, 23 Apr 2026 22:36:26 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <brian.cain@oss.qualcomm.com>)\n id 1wG6P2-0006k4-R7\n for qemu-devel@nongnu.org; Thu, 23 Apr 2026 22:36:24 -0400","from mx0a-0031df01.pphosted.com ([205.220.168.131])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <brian.cain@oss.qualcomm.com>)\n id 1wG6P1-0008KH-4P\n for qemu-devel@nongnu.org; Thu, 23 Apr 2026 22:36:24 -0400","from pps.filterd (m0279863.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63O0WoY2154579\n for <qemu-devel@nongnu.org>; Fri, 24 Apr 2026 02:36:22 GMT","from mail-dy1-f199.google.com (mail-dy1-f199.google.com\n [74.125.82.199])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dqpf629gm-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <qemu-devel@nongnu.org>; Fri, 24 Apr 2026 02:36:21 +0000 (GMT)","by mail-dy1-f199.google.com with SMTP id\n 5a478bee46e88-2da19227bc1so14690698eec.1\n for <qemu-devel@nongnu.org>; Thu, 23 Apr 2026 19:36:21 -0700 (PDT)","from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com.\n [129.46.96.20]) by smtp.gmail.com with ESMTPSA id\n 5a478bee46e88-2e539fa6134sm31240868eec.3.2026.04.23.19.36.19\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 23 Apr 2026 19:36:20 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n cc:content-transfer-encoding:content-type:date:from:in-reply-to\n :message-id:mime-version:references:subject:to; s=qcppdkim1; bh=\n z2MDxjjQJbooXhtfrG3OMxDS++cZUaWGHcLuK2xhE5Q=; b=QH+fRniXg46bixt+\n rhukIQVwSHSIGyJqNL/B4KHjRUJgChCIoTf/sS7euzI9z1H6cc+jJ+XfUgy+GiEF\n MlgZezFkkNdFbYqEKPuApMeSN8JUilzIIGN26dzHXvVgT6Zy4Na4IrbRoxn+m+9x\n 6srWjZThkIGTc/Up0CkmclY80E4j5+NTc+Fk7ATzLU1azNWs6MVxYGwfYdeMdNyp\n U0oslhh9egPO2P7aOPYsZ+mstcHIMkR1EhJqF0myTumiz/czacSkxheGu8ATbkDm\n L2QWLQTdz5apLODUWyps0SXfkcIZDPmH8F11gMFFEKseQyY7b1xx6oG35gTGb0gg\n 7wMzPQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1776998181; x=1777602981; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=z2MDxjjQJbooXhtfrG3OMxDS++cZUaWGHcLuK2xhE5Q=;\n b=M8FVsxGLYj3mfpffkBzA/uAMSgNp+uOTqGHXcTUohmwb3ZN7cGiAvp1chXnUzi8VXa\n pslFtJY/yCWi0xcYEqi1W7cdOGUBbYHnLkgXFMhggHiQdxZ7b4fAvq6bjYFmNq66xODh\n PxPK6MWHw9hDQc1ShS8sJsRFr7a8ueX/mO+BRbGUB8qDdHBhkyhAxHoKEL0GK6FsxmcK\n vdkWOSd+DHk+tnCooP4buwyVCpyewpTm/+q8VLnPwMaywttbgqVDiUG3T0eXi2nlwdwo\n lmBUgBrmHQBQqvzEuScdQ+7sMljPkBzQ898twILiIc5dArBlCAlUNyiy/wX2zRY1HTjU\n TF9Q=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776998181; x=1777602981;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=z2MDxjjQJbooXhtfrG3OMxDS++cZUaWGHcLuK2xhE5Q=;\n b=d6yFF9E0I22WkMGCu19xYSgV6LKkpHevxmtr2JZOlqobEpEwC1pwzsvjRaWR0JeaaX\n R+TPVP6C8tHq7GCDBvKCYd+VyLtNY9igOXybWUB2iwRumiga3TVD/n7wNAJ5J2UAnP+c\n fS28hI0I9YsuXC169dBBsEVbNzSmuAOptVmNPV3VvzfP9PmMvaiLMP+qgFeq9uValpxD\n 4lZiNlqfvibUIPVVpVYf+yVaZsgIhJCnEOnjjE6+Xo4oCECfOWzAXXR1JpUHFDuegJEZ\n rStGyydAOH7cbWKnGbXmmYS70csoSlnp5UDYt1MRpAkTeiKpBi+Phcf62ufIcGU6cDmo\n uTmw==","X-Gm-Message-State":"AOJu0YzTVr7Bf1noTT6wjfz7wOMX975SaglSgfbeSJicev/ewVFBKDjY\n G+WxSoY1kk9u+SJUHM2It80ITT+jqXDanMLMQulz7gZKDKOHZP11aH2f6XewvdwAzvAtoi+b44k\n 442IFs1mVp7Z+9eiH1ZbnCALI6BqhR7uOtrYQfdYN7Ot1vzFnsZp5b5caCasepmX+QA==","X-Gm-Gg":"AeBDievJNS8U9j8xlw9Y84bmEIrIsUE9VxYzghbfutK3azQxQP4BL9xPNLsuC3QKkeV\n s/TqkPvKK7bXLon3Kq2d18bqMlVftA2ESDTLBZmf91UXTREQ6CQ/vX2qPlnHm47eEADvs08dFLc\n q5TWVFoqT1mHChGaY0MYGGBYO75LX09Zj8194Qlu/ZTilMnKBtKts/0B+K8DnR1dzP2liDuJ4nR\n 3JEoKM1HAZS9MbT9GqvbAMCgKDFwQJbC49nS5LeTf7+LK0P2TokvntliJi83yKvF64yDmADIi2G\n 1N+s1FL7bqWu7KRbNzA47roXgNBg89r/5L0m6rfDV57DMJT+zFzXPdblxm3kPMPKEthH+vv2zfX\n I+RfYNTSKSlby1AKqCixKdyXYSi93YjgfSS+r3uykzgP62n5H2ZcTBBsPCxBrfUbTgBZhQjCtA2\n fAjtlj","X-Received":["by 2002:a05:7301:1693:b0:2d2:129a:1682 with SMTP id\n 5a478bee46e88-2e4786460f9mr16344712eec.16.1776998180966;\n Thu, 23 Apr 2026 19:36:20 -0700 (PDT)","by 2002:a05:7301:1693:b0:2d2:129a:1682 with SMTP id\n 5a478bee46e88-2e4786460f9mr16344693eec.16.1776998180499;\n Thu, 23 Apr 2026 19:36:20 -0700 (PDT)"],"From":"Brian Cain <brian.cain@oss.qualcomm.com>","To":"qemu-devel@nongnu.org, stefanha@redhat.com","Cc":"brian.cain@oss.qualcomm.com, Taylor Simpson <ltaylorsimpson@gmail.com>,\n Matheus Tavares Bernardino <matheus.bernardino@oss.qualcomm.com>,\n Anton Johansson <anjo@rev.ng>,\n Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>","Subject":"[PULL 5/9] Hexagon (target/hexagon) Check each opcode against current\n CPU definition","Date":"Thu, 23 Apr 2026 19:36:02 -0700","Message-Id":"<20260424023606.2556830-6-brian.cain@oss.qualcomm.com>","X-Mailer":"git-send-email 2.34.1","In-Reply-To":"<20260424023606.2556830-1-brian.cain@oss.qualcomm.com>","References":"<20260424023606.2556830-1-brian.cain@oss.qualcomm.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","X-Authority-Analysis":"v=2.4 cv=Iocutr/g c=1 sm=1 tr=0 ts=69ead725 cx=c_pps\n a=cFYjgdjTJScbgFmBucgdfQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17\n a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22\n a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=UzSeF1EqHBairItpb9sA:9 a=QEXdDO2ut3YA:10\n a=scEy_gLbYbu1JhEsrz4S:22","X-Proofpoint-ORIG-GUID":"QY1quVrNGqubEhfXQ-8A9U0dQbUoJhbB","X-Proofpoint-GUID":"QY1quVrNGqubEhfXQ-8A9U0dQbUoJhbB","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDI0MDAyMCBTYWx0ZWRfX8u2qlo6L6o1M\n frvRBA2uHrcRT5CMg0y0xXFnszwgxRkZK/DhuON/J/7IfM6XOCd9kVXw0B1x//mrM9er9EIfl0e\n 9vPHlhBm4H1eSc3Ohe8voWB6vuhKshnO4GcON4oEkjAwGVgWTBpqi0rEb2k/cJzg53h4bytYIIc\n YvmSW2erV5zJuqIyuxqWhN4K46ZkDPSM3m1LUJlV+zR4yN84VG5k3eYibzZJM1ZxJql5gddUv+8\n pVp/h7DPeEZcxwcGeb23TriceWCtsbdG2V+qWKfT4T7dnBG/2RlL+Ab/UFCgd94VEjLkfQugfbq\n 8BuYBwSnH6uzPA9eNslX+xXVL/pgghbpWDB8yBuFZQrrLT3F4EH30U0T/3BE/RctI6mWJo/B4D9\n vhUOY/kfxTYXjqyjsEMaD25D0nap0AGP0hunmRaadIVM9dQn3TGWLp7msOvjYw7Y8x3zUNulZUo\n jB+jZ///gXxqIJA3SBQ==","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-23_03,2026-04-21_02,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n adultscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0\n suspectscore=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015\n impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000\n definitions=main-2604240020","Received-SPF":"pass client-ip=205.220.168.131;\n 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,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001,\n 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 <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"},"content":"From: Taylor Simpson <ltaylorsimpson@gmail.com>\n\nDuring decoding, check that the opcode is supported in the current\nHexagon CPU definition\n\nCo-authored-by: Matheus Tavares Bernardino <matheus.bernardino@oss.qualcomm.com>\nCo-authored-by: Brian Cain <brian.cain@oss.qualcomm.com>\nSigned-off-by: Taylor Simpson <ltaylorsimpson@gmail.com>\nReviewed-by: Anton Johansson <anjo@rev.ng>\nSigned-off-by: Brian Cain <brian.cain@oss.qualcomm.com>\n---\n target/hexagon/decode.h |  2 ++\n target/hexagon/decode.c | 27 +++++++++++++++++++++++++++\n 2 files changed, 29 insertions(+)","diff":"diff --git a/target/hexagon/decode.h b/target/hexagon/decode.h\nindex 3f3012b978d..d4b049961ed 100644\n--- a/target/hexagon/decode.h\n+++ b/target/hexagon/decode.h\n@@ -30,4 +30,6 @@ void decode_send_insn_to(Packet *packet, int start, int newloc);\n int decode_packet(DisasContext *ctx, int max_words, const uint32_t *words,\n                   Packet *pkt, bool disas_only);\n \n+bool opcode_supported(uint16_t opcode, const HexagonCPUDef *hex_def);\n+\n #endif\ndiff --git a/target/hexagon/decode.c b/target/hexagon/decode.c\nindex dbc9c630e82..b8a1cd5b12b 100644\n--- a/target/hexagon/decode.c\n+++ b/target/hexagon/decode.c\n@@ -647,6 +647,22 @@ decode_set_slot_number(Packet *pkt)\n     return has_valid_slot_assignment(pkt);\n }\n \n+bool opcode_supported(uint16_t opcode, const HexagonCPUDef *hex_def)\n+{\n+    HexagonVersion hex_version = hex_def->hex_version;\n+#include \"tag_rev_info.c.inc\"\n+\n+    struct tag_rev_info info = tag_rev_info[opcode];\n+    if (hex_version == HEX_VER_ANY) {\n+        return true;\n+    }\n+    if ((info.introduced != HEX_VER_NONE && hex_version < info.introduced) ||\n+        (info.removed != HEX_VER_NONE && hex_version >= info.removed)) {\n+        return false;\n+    }\n+    return true;\n+}\n+\n /*\n  * Check for GPR write conflicts in the packet.\n  * A conflict exists when a register is written by more than one instruction\n@@ -746,6 +762,17 @@ int decode_packet(DisasContext *ctx, int max_words, const uint32_t *words,\n         /* Ran out of words! */\n         return 0;\n     }\n+\n+    /*\n+     * Check that all the opcodes are supported in this Hexagon definition\n+     * If not, return decode error\n+     */\n+    for (i = 0; i < num_insns; i++) {\n+        if (!opcode_supported(pkt->insn[i].opcode, ctx->hex_def)) {\n+            return 0;\n+        }\n+    }\n+\n     pkt->encod_pkt_size_in_bytes = words_read * 4;\n     pkt->pkt_has_hvx = false;\n     for (i = 0; i < num_insns; i++) {\n","prefixes":["PULL","5/9"]}