From nobody Sat Sep 26 20:01:33 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=1788874549; cv=none; d=zohomail.com; s=zohoarc; b=WzE8u7QT9JDFil5m9c2liZzSZ9JJc0o4TetyWXdak+kawxvyJ3jJk73c9cWEom7hgquaffrHYn5WLtjC1hi9Nfu3HU01BO4uhQr07h2WwJtY15wPiEbVEsimG6SJ7M3tBMQHAxiGqWeCasKyXXyV4a7CJq4vutGcqqhKIqStpP4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788874549; 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=i+BQYS4xacAVfjkq5bOrVH3c3+v4rw4NRLcpKfLn4bU=; b=b3FopMMppw9X2B5aOyfSGOstNzEv0lqRGIOIrLG4fnQsb/0mOHDW50+jL4T/c6SPNcqbbO8yZSQ6k+9eOlXndIdhom8BHNdCGYuMcSN6ZKR7wYooYrxXzY1UQnEBFfCqnLcQN7FJpdR+YV4SVosF6rSLRYoRxbYtOkgKdrq5kMM= 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 1788874549986455.1487191586234; Tue, 8 Sep 2026 06:35:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x3vzD-0004aY-1k; Tue, 08 Sep 2026 09:35:43 -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 1x3vzA-0004X8-PX for qemu-devel@nongnu.org; Tue, 08 Sep 2026 09:35:40 -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 1x3vyo-0006DI-UF for qemu-devel@nongnu.org; Tue, 08 Sep 2026 09:35:40 -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 688CkgvW4162845 for ; Tue, 8 Sep 2026 13:35:16 GMT Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gjb0pa5ps-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 08 Sep 2026 13:35:16 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-39af92138f9so7032643a91.0 for ; Tue, 08 Sep 2026 06:35:16 -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-334fbd5e6f6sm29029079eec.23.2026.09.08.06.35.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 06:35:14 -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= i+BQYS4xacAVfjkq5bOrVH3c3+v4rw4NRLcpKfLn4bU=; b=S4CXCEh5UMpQa8eE gPzZP5V31iTLUKgZ4R/L08IB7bdXGzc6OI4JUYJ8qFMyTTca8R/YuqjUmrqR/K/x orlYczKmf1FtnFEwYRrI5CMDSUaNrxVkggkT1Jm/hwhpuM+lwX9bFEbBn8oNuyA9 0pqOj5XOfPYgjma2qzX/KwM7RxxAGUQMjk3Qu8WFeRXJesUMaZsPUrNODwdBXy4v ys+7DLkeLKrFJnl3eNsR+CWbnsNp61m/yYPtoddd7JkJchY2Ca4Hv56qDR8SgOrV oUyK3gMgQH2EBthi8Lf5c0y6q/JGIs5Msx18yUvBYMqVGl4KtlqeI5tKHC1Rq8gK vRF4GQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788874516; x=1789479316; 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=i+BQYS4xacAVfjkq5bOrVH3c3+v4rw4NRLcpKfLn4bU=; b=CrxC3y48tPPETB0GwEW62fdRGJA1pD3fhVijxgQBrWjjtO2HQjZoplZtm0z3OGX4Ve 4C9uFrRosPNwfdeISGwV4d+M2i1HEwKgu3MurTmEmGIylqDmzNDMDI3kcRMfQVf1wt+h TKZGzAIcK4FdpNcaO66AX3nx+04SZNyXKuKTnlAl6NHf0ebC2tSUowcRpN0LiCGf9iCq hSMionAeet/DBqdy8SyAe0bQnkJm0CAeK1UL3JRjENYAeMNKVfSmoAiD5yDNCd2PfO2/ w3KHnpxl9jgcSK6zNodqCrq7mBgM+658Hj7UP6wbiRXf8aZd/eFD7M+bONWGJuY2quzV FuOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788874516; x=1789479316; 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=i+BQYS4xacAVfjkq5bOrVH3c3+v4rw4NRLcpKfLn4bU=; b=qUlJxewwggRgUqghWc8ze6vJAT82M6gtkOMJmPhFQ0wg7Cn7kHIxwEWaR9/Jh6+jjV 4ddFxaEbe7yyN2+ySRB8v4JRG/Bg98jtq8GJCM0V2WJOvFtquVnTf5qdAgRudbaYx0Pq dFjLhmohk2cUrCbjGMnIEeVrUyBEoPK3ccLhT/peRj5YOuT7WoC4zQiA1A9lxX6AcBAG 4Ppd0xN9FjX3mqGEytvoInEuLw27d37XwxxHRy0eauk2aDWsb0nmjaBAdFZFNhPLeL4X dfqv8aITFV8e9qLZxGKVQY4thJbbgJiSwLEgg1bMS6shQVb+E5fw6x7FxK5y3BK2zex+ UV/A== X-Gm-Message-State: AFuF++kwLsBpkd4qwmPR+vSMIFU2dVuk1RG4JwjfrOSpoLtYk/c4vg0R w+rhKh4zh2wjrcNs9s96+vUSxkmxwktbCgsFt67/X2BJEA/PIS2rksocW2aN30LiUWAP6Zcp9w6 srsAQV7FnggWjq56iAFOHSNNWx2VSNqV5wzocDRT/Sowrtn0fIW5UD7JHUwACltJ0XA== X-Gm-Gg: AYBFou2b30SnAJaZdfAp5eZvq0MncnqoiVU3V8EpydeEUnRdKI9OrznubVye+Hf7nVD 3uirx0NIBI/QsLTp6jbr7EJHUQHz5pMx50BsansTPFB5yI75/e2sGenmM5Nqig5VPzfafe0R8fx Ey7DhLfrGRWM9/1hmVGEeIYj5i0eGpb6EZEwTkxi50Wo7QU4ikOmiNd1Rh1xqP6IN4rmXcd+o5F W8zYc4SJ4U0IZT0ox2QAf+DrlYXYKDudUSpUUwTLUlAe+CRoqKPXyy71KftQ8HSZCrqZtXTcNQe jtkdZ+nK44y0wGJn0R/Pz3zycNZReMyBlllYg3kYjmhW9020mxqiYoL/PfaEocqHcEq3Q/+eIRQ H04Sxeo02CV2wQjUcsjIwUBb3VxCcQp+qbwTCO+py1b4hs58F X-Received: by 2002:a17:90b:1e41:b0:398:9beb:a2b9 with SMTP id 98e67ed59e1d1-39b087f4d0emr37651426a91.27.1788874515998; Tue, 08 Sep 2026 06:35:15 -0700 (PDT) X-Received: by 2002:a17:90b:1e41:b0:398:9beb:a2b9 with SMTP id 98e67ed59e1d1-39b087f4d0emr37651379a91.27.1788874515485; Tue, 08 Sep 2026 06:35:15 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Brian Cain , Laurent Vivier , Helge Deller , Pierrick Bouvier , marco.liebel@oss.qualcomm.com Subject: [PATCH 1/5] target/hexagon: add the v75, v79 and v81 CPU models Date: Tue, 8 Sep 2026 06:35:07 -0700 Message-Id: <20260908133512.2353957-2-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260908133512.2353957-1-brian.cain@oss.qualcomm.com> References: <20260908133512.2353957-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: CVW4qRiGO-DuQvdHg7_z2ZUPZkGaXlZe X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE0NSBTYWx0ZWRfX7hUY6xHyJSJd QIJLBbvKH0kPPrrAhhv9RjJED4zXtgGzpSsy5MLckIjdJs7pYghJ10QvlLSfJNnlwTT6loFf614 8rgZGf4Zhh2E0vLq2JF/q/nouoWFx70= X-Authority-Analysis: v=2.4 cv=HL3z0Itv c=1 sm=1 tr=0 ts=6aa00f14 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==: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=sGg2OeOXg0vhTN0KIsEA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-GUID: CVW4qRiGO-DuQvdHg7_z2ZUPZkGaXlZe X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE0NSBTYWx0ZWRfXz5mfAy6Iv0oW JaqjymE+cmAc6lMwz9bCDw1jtSkMICDd4tRk9sy5YC66PSpvSmx3KrPxAOXXrJ0CI7mik64niez 5Lxse4M/pNxOUt8jceIZmvoqEeVEJfJi9DtyTQDKr2/2sGfQLdBCpjHmcUq3ObfP19hnweRAeLv YrGQtyssS+LrB3zYj10lqwp/oh+/TZ3XeuVPaZ4JBwbYiqacdheaVHZwK13TodlX0IPIPUJ672f 63453Deo2nEkokgu9OnKvBv4F4YQCz4mz2gfQORrhs8TdHXzlk4IY0yddI1hHdv2IDwHveAEybg YNLOL3IDg7jt8kwdaf5rGGgUzZ7/G9F+BrYkVVafvHh8yxNmiW1xBmDpEU76Tmf9Xdh/Yr1QQkv L/Rfi5UWZVHCOQpOZrqWjr0aGqrZZsjxsvmtZ9J+hh5/w6A0FemAQyK4ajHsTFIAW+C5lq+1XO7 KnBacR6nB3khe+Bj3FA== 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-08_02,2026-09-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 suspectscore=0 impostorscore=0 spamscore=0 phishscore=0 malwarescore=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-2609080145 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: 1788874551928158500 v73 is currently the newest core this target implements. Add the v75, v79, v81 CPUs. New instructions to follow in subsequent commits. Signed-off-by: Brian Cain Reviewed-by: Marco Liebel --- target/hexagon/cpu-qom.h | 6 ++++++ linux-user/hexagon/elfload.c | 6 ++++++ target/hexagon/cpu.c | 3 +++ 3 files changed, 15 insertions(+) diff --git a/target/hexagon/cpu-qom.h b/target/hexagon/cpu-qom.h index 6e1bb040704..2bfa4d5d0fc 100644 --- a/target/hexagon/cpu-qom.h +++ b/target/hexagon/cpu-qom.h @@ -25,6 +25,9 @@ typedef enum { HEX_VER_V69 =3D 0x69, HEX_VER_V71 =3D 0x71, HEX_VER_V73 =3D 0x73, + HEX_VER_V75 =3D 0x75, + HEX_VER_V79 =3D 0x79, + HEX_VER_V81 =3D 0x81, HEX_VER_ANY =3D 0xff, } HexagonVersion; =20 @@ -49,6 +52,9 @@ typedef struct { #define TYPE_HEXAGON_CPU_V69 HEXAGON_CPU_TYPE_NAME("v69") #define TYPE_HEXAGON_CPU_V71 HEXAGON_CPU_TYPE_NAME("v71") #define TYPE_HEXAGON_CPU_V73 HEXAGON_CPU_TYPE_NAME("v73") +#define TYPE_HEXAGON_CPU_V75 HEXAGON_CPU_TYPE_NAME("v75") +#define TYPE_HEXAGON_CPU_V79 HEXAGON_CPU_TYPE_NAME("v79") +#define TYPE_HEXAGON_CPU_V81 HEXAGON_CPU_TYPE_NAME("v81") =20 OBJECT_DECLARE_CPU_TYPE(HexagonCPU, HexagonCPUClass, HEXAGON_CPU) =20 diff --git a/linux-user/hexagon/elfload.c b/linux-user/hexagon/elfload.c index 39b02018145..2fd45f7e38a 100644 --- a/linux-user/hexagon/elfload.c +++ b/linux-user/hexagon/elfload.c @@ -37,6 +37,12 @@ const char *get_elf_cpu_model(uint32_t eflags) return "v71"; case 0x73: return "v73"; + case 0x75: + return "v75"; + case 0x79: + return "v79"; + case 0x81: + return "v81"; } =20 err =3D snprintf(buf, sizeof(buf), "unknown (0x%x)", eflags); diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 4a7b76e3bcc..fb0e3caa481 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -874,6 +874,9 @@ static const TypeInfo hexagon_cpu_type_infos[] =3D { DEFINE_CPU(TYPE_HEXAGON_CPU_V69, HEX_VER_V69), DEFINE_CPU(TYPE_HEXAGON_CPU_V71, HEX_VER_V71), DEFINE_CPU(TYPE_HEXAGON_CPU_V73, HEX_VER_V73), + DEFINE_CPU(TYPE_HEXAGON_CPU_V75, HEX_VER_V75), + DEFINE_CPU(TYPE_HEXAGON_CPU_V79, HEX_VER_V79), + DEFINE_CPU(TYPE_HEXAGON_CPU_V81, HEX_VER_V81), }; =20 DEFINE_TYPES(hexagon_cpu_type_infos) --=20 2.34.1 From nobody Sat Sep 26 20:01:33 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=1788874554; cv=none; d=zohomail.com; s=zohoarc; b=KfUr12OPv+YhBBZtFSWHK3UDpx8i7oIpYpZa/y3/RuuaNJJqy/kr/cY4G62llR0kz2aZD7OHV2Tgos+670JIaFqeoBU24hyNo3cHLVcyg1yjQY6ZZFBmoWcfz9spGagPCQ8X1q+N3a+3dyd4064Tp5M6y6ufE5wYw/r95DphSoE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788874554; 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=h/3kdVRW9U0MaI4U5a4Wnb8rysC4oI02ASU5moYQj0U=; b=IcRgXRe0qdgt4XtYnrVgPuIqX11eYHE0BzWBGKC5Fke+EIB4ffQN89Ijx++CLpZgJg1slxvk+veheuaH697yRqTn0Rg/A44sM+9uYRmQhh3cLu0Yqu1TMRcDNHUuI7xVhGdQF/5Zz7j/+ASKJ9BgY0nxB0BghHt8Q1IRmZ8Tcw4= 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 1788874554163466.92789108716124; Tue, 8 Sep 2026 06:35:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x3vzG-0004fE-Ec; Tue, 08 Sep 2026 09:35:46 -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 1x3vzE-0004cY-B0 for qemu-devel@nongnu.org; Tue, 08 Sep 2026 09:35:44 -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 1x3vyr-0006Et-St for qemu-devel@nongnu.org; Tue, 08 Sep 2026 09:35:43 -0400 Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688CksrZ3013087 for ; Tue, 8 Sep 2026 13:35:20 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 4gj1rwkp3h-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 08 Sep 2026 13:35:20 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38e54b6556aso1506454a91.2 for ; Tue, 08 Sep 2026 06:35:20 -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-334fbd5e6f6sm29029079eec.23.2026.09.08.06.35.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 06:35:16 -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= h/3kdVRW9U0MaI4U5a4Wnb8rysC4oI02ASU5moYQj0U=; b=mmV7ei6x92us09zz UvBYVBW2mNNxviQyoMBdlBDYhSRz8Qx+fLas31vz4Nk+Wt/FbOlinAX/l+W3zbn/ itOH2fLot6fsCH5wDH6VGzjhN7+TLohL+ym+jdpNmNTUXi6NgKO1pII+YSpcW3aM IupssmpI62Bk9EFveJ98RF687GDW7pJa8hdnkSsyIt+FqAVE9IzngnaPWqIZMTdr ZGUN0F9vW4u9bCdpQljrQvDvtTjOIhDeY+8VAytkQHnvOCrQmzbQcuEChh2EjZ7d dyqTtyXDGU05/Uf/m9ejQeygcPmFwsQF9fzUyrP0GuenEhJUzhpcjxgi3RXXbXkY vtPjwg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788874519; x=1789479319; 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=h/3kdVRW9U0MaI4U5a4Wnb8rysC4oI02ASU5moYQj0U=; b=Z7FvsTMwh/qtlvlAGtWYzzPD2DxXBwvqQQYLabf7Bh17DcgSN/u3qzkKix1wLhzaGe T7u2DqJuxl8zC88tOsq59vKuPTlNPxU8HvSvuPjCC8n24dyi0gayOia56oBpbqPhEkW2 jxKRI4m2irR82ko1p7+KKeoE/cVpYi5rszgZ1gtGPW+6tn+Gx1vK3TWsNi2mJ883rZ+a PH637M8WcQK+D8O9+aJYdaNH+cyf3+Sl1KqfYS5KOoWGRFPheK1Bg8YnBBgREzKQfGO/ SRgayWmVuauOjIul9VFn/tsodBtxyM4iNrWYopu1cGisDCqaSfTIsQjYjudnBMyUWZD0 4K6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788874519; x=1789479319; 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=h/3kdVRW9U0MaI4U5a4Wnb8rysC4oI02ASU5moYQj0U=; b=YC51Uwwc8N1jJ55h/WW5+DKsAnZ/4X4wWzem1tnLggBdvnoc3FhYxTcWz9retA0IjF MZZsrI5+QsxIfn0mCsOAVv//yrThRzf81BwvcxlfrmGtyV95qFR2kKFg622lmqEDdfIG 6aeQUg7TyJvZXCkp6F10yIGmBNhCQ4vjVftZ9Qh9wpNNRo96dx5B64YUR/UUhhRDv5Ui GZ4MxeonkDjKut8EQFwT4eA/9PNONTspW9+4UMfEr1UO40bqkk+jLjTyzB9SHdj1aTUo iC6V5dlzBPXPGw8MZADTdY5CKDGzrD/tQmaVuE3FIoBUm8tnyvxI1zu8X736Jufq0RmW sMUA== X-Gm-Message-State: AFuF++kJDrEkjsvr9PeiGc6SQIRiYSlBqvznUf3OEyWanGX5v3R+JKD8 4IebfnDqTNxKoUt3CvA8QjJZFkpQ5eHH6gb0orvOptKriIBpwWriKg8rw5VyjUQR4uN7c4K41Ml JPuJI3LCFX5sqgQscLudIWd+w9WMqJiUb2fBpAeW3iFg6TYb8oiat5T4jnFsFMT3qOw== X-Gm-Gg: AYBFou1dJBsMB8VvK2Hy3RjxNBGl+JdWB41xuSF3XxR5CwbMO584OS4xRjQHmW6fvjO Gc3VKr4ZU/W4ujTD5EGCZ13HEPHwz4FM4+X3gCE6QRDDrfXJtQ2MklxFkpmkktD6HG753mn/MEt iWcj0veI2KuRvTZcTJpLTi1wHhr59ZBaTcNT5TDkYwOG2EebttqEl0nJiBJ8mtbqz3JEVf8A2wR NBncm3CLYy9gtYnZk/9/zwUwBGUbuijgEn8G57Rg+wYOIyHPuCxRdE2t6vn/BttEjEYTN1ByYkT avATIb/NibBzBKYR4D2RsQJgPOHOxC6pykkwfAt8iyeExXbOyyKD5auEeYiwMFH0fGqe3ki9YlJ 1vk78ky3XDN7F/AzWSkRY3p9vwxppNDg8Aubroslnh+7o54Uv X-Received: by 2002:a17:90b:258d:b0:396:4c63:7193 with SMTP id 98e67ed59e1d1-39b261323e0mr47106976a91.11.1788874519217; Tue, 08 Sep 2026 06:35:19 -0700 (PDT) X-Received: by 2002:a17:90b:258d:b0:396:4c63:7193 with SMTP id 98e67ed59e1d1-39b261323e0mr47106899a91.11.1788874518717; Tue, 08 Sep 2026 06:35:18 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Brian Cain , Laurent Vivier , Helge Deller , Pierrick Bouvier , marco.liebel@oss.qualcomm.com Subject: [PATCH 2/5] target/hexagon: add the v73 J2_unpause scalar instruction Date: Tue, 8 Sep 2026 06:35:08 -0700 Message-Id: <20260908133512.2353957-3-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260908133512.2353957-1-brian.cain@oss.qualcomm.com> References: <20260908133512.2353957-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=Ga8nWwXL c=1 sm=1 tr=0 ts=6aa00f18 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=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=fnvyaJKH3I3DEN-d1BkA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE0NSBTYWx0ZWRfX17A27VJI9sCi WgjE+8NUS5TjfoBbT0ROvicsKMkaE+OrevHPuh+TnUZ13AxmCKrkrX+s4Cu5lGj85kFvAaFtzmC /qRNA6zJZCCswY/YP7v0Qq8rAgn7a05J6hT/69Q+N1XNdVus+QDQ1KJ9xKHqSg/bsP+V5jLGH1x m6fNwry4go78uWw3EE78s0EY1yxE11zcDPEqniXsuceMWD819ZnM/aL1OBjxzfuIAjSlBcWF36s yLVPvyDfyYeEmwM6zTcqjmE5rM44mImtND2NiRjl3+4lNlkmsAggUjBNi3qY0jH8CmlaTm2vWRv D7607lM5qX8BxiU/oL8mKNcloKkiVcvdR9M16xtrpMO1VsEnfI7c1lAAmPesKgdTt6Pp8XkW3Pl NoiFskgKV5tfX2MTJSf/WYMAQSKWepunOGFKhDDvuqdNnq/z3KzJ0qOulb9VlfSWFoUCUvLVYqa 3FX4k3Un+BCYZCOdwaw== X-Proofpoint-ORIG-GUID: gbazMaGknXJiez0LqLN1IlYnd5NE-RXx X-Proofpoint-GUID: gbazMaGknXJiez0LqLN1IlYnd5NE-RXx X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE0NSBTYWx0ZWRfX4zh9q/3MG+nk 7M8Bi42Ie2C+Stpay4QRTf+/EKTOUpbNTeOMvVVvKBQW7LN8bpi8ySp4I3g9XZWZJRTgPsR+yTJ /qhPKdGKka32WqNoUtbYK4iNDp0wVck= 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-08_02,2026-09-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 suspectscore=0 clxscore=1015 impostorscore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609080145 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: 1788874555933158500 v73 already added J2_callrh and J2_jumprh but unintentionally omitted `unpause`. Its effect is to cause other threads' pause instructions to cease pausing, but we treat `pause` as a nop or a yield in RR, so unpause can safely be a nop. While here, spell the other two v73 entries' version as HEX_VER_V73 instead of the literal 0x73, matching every other entry in the table. Signed-off-by: Brian Cain Reviewed-by: Marco Liebel --- tests/tcg/hexagon/check_rev_gating.c | 12 +++++++++--- tests/tcg/hexagon/v73_scalar.c | 7 +++++++ target/hexagon/tag_rev_info.c.inc | 5 +++-- target/hexagon/imported/encode_pp.def | 1 + target/hexagon/imported/system.idef | 3 +++ 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/tests/tcg/hexagon/check_rev_gating.c b/tests/tcg/hexagon/check= _rev_gating.c index 26b66f54552..d5295bf24ab 100644 --- a/tests/tcg/hexagon/check_rev_gating.c +++ b/tests/tcg/hexagon/check_rev_gating.c @@ -3,9 +3,12 @@ * are rejected with SIGILL. * * Compiled with -mv66 so that e_flags selects CPU v66. The test embeds - * a v68 instruction (L2_loadw_aq: "r0 =3D memw_aq(r0)") via .word - * encoding. The revision-gated decoder must reject it, and linux-user - * must deliver SIGILL. + * instructions from v68 through v73 via .word encoding: the assembler + * enforces the selected CPU's own minimum version, so none of these -- + * including ones it otherwise knows how to assemble at their own + * target, such as callrh or unpause -- can be written as themselves in + * a file built for v66. The revision-gated decoder must reject every + * one of them, and linux-user must deliver SIGILL. * * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. * SPDX-License-Identifier: GPL-2.0-or-later @@ -102,6 +105,8 @@ TRY_FUNC(v73_callrh, ".word 0x50c5c000 /* callrh r5 */\n") TRY_FUNC(v73_jumprh, ".word 0x52c0c000 /* jumprh r0 */\n") +TRY_FUNC(v73_unpause, + ".word 0x57e0d000 /* unpause */\n") =20 int main(void) { @@ -133,6 +138,7 @@ int main(void) =20 assert(try_v73_callrh() =3D=3D SIGILL); assert(try_v73_jumprh() =3D=3D SIGILL); + assert(try_v73_unpause() =3D=3D SIGILL); =20 assert(signals_handled =3D=3D expected_signals); =20 diff --git a/tests/tcg/hexagon/v73_scalar.c b/tests/tcg/hexagon/v73_scalar.c index fee67fc5311..2b5f3aa2149 100644 --- a/tests/tcg/hexagon/v73_scalar.c +++ b/tests/tcg/hexagon/v73_scalar.c @@ -86,10 +86,17 @@ static void test_jumprh(void) check32(res, 1); } =20 +static void test_unpause(void) +{ + /* Nothing is paused, so this just needs to execute without faulting. = */ + asm volatile("unpause\n\t"); +} + int main() { test_callrh(); test_jumprh(); + test_unpause(); =20 puts(err ? "FAIL" : "PASS"); return err ? 1 : 0; diff --git a/target/hexagon/tag_rev_info.c.inc b/target/hexagon/tag_rev_inf= o.c.inc index a91b91a23e6..44513f46809 100644 --- a/target/hexagon/tag_rev_info.c.inc +++ b/target/hexagon/tag_rev_info.c.inc @@ -571,8 +571,9 @@ static const struct tag_rev_info tag_rev_info[XX_LAST_O= PCODE] =3D { [F2_dfmpyhh] =3D { .introduced =3D HEX_VER_V67, .removed =3D HEX_VER_N= ONE }, [F2_dfmpylh] =3D { .introduced =3D HEX_VER_V67, .removed =3D HEX_VER_N= ONE }, [F2_dfmpyll] =3D { .introduced =3D HEX_VER_V67, .removed =3D HEX_VER_N= ONE }, - [J2_callrh] =3D { .introduced =3D 0x73, .removed =3D HEX_VER_NONE }, - [J2_jumprh] =3D { .introduced =3D 0x73, .removed =3D HEX_VER_NONE }, + [J2_callrh] =3D { .introduced =3D HEX_VER_V73, .removed =3D HEX_VER_NO= NE }, + [J2_jumprh] =3D { .introduced =3D HEX_VER_V73, .removed =3D HEX_VER_NO= NE }, + [J2_unpause] =3D { .introduced =3D HEX_VER_V73, .removed =3D HEX_VER_N= ONE }, [L2_loadw_aq] =3D { .introduced =3D HEX_VER_V68, .removed =3D HEX_VER_= NONE }, [L4_loadd_aq] =3D { .introduced =3D HEX_VER_V68, .removed =3D HEX_VER_= NONE }, [Y6_dmcfgrd] =3D { .introduced =3D HEX_VER_V68, .removed =3D HEX_VER_N= ONE }, diff --git a/target/hexagon/imported/encode_pp.def b/target/hexagon/importe= d/encode_pp.def index d9e8ea2aebd..1fce318b2bb 100644 --- a/target/hexagon/imported/encode_pp.def +++ b/target/hexagon/imported/encode_pp.def @@ -585,6 +585,7 @@ DEF_FIELDROW_DESC32(ICLASS_J" 0100 -------- PP------ --= ------","[#4] (#u8) ") DEF_ENC32(J2_trap0, ICLASS_J" 0100 00------ PP-iiiii ---iii--") DEF_ENC32(J2_trap1, ICLASS_J" 0100 10-xxxxx PP-iiiii ---iii--") DEF_ENC32(J2_pause, ICLASS_J" 0100 01----ii PP-iiiii ---iii--") +DEF_ENC32(J2_unpause,"01010111111-----PP01----000-----") =20 DEF_FIELDROW_DESC32(ICLASS_J" 0101 -------- PP------ --------","[#5] Rd=3D= (Rs) ") DEF_ENC32(Y2_icdatar, ICLASS_J" 0101 101sssss PP------ ---ddddd") diff --git a/target/hexagon/imported/system.idef b/target/hexagon/imported/= system.idef index 02aee8ce8ee..b44e87565c3 100644 --- a/target/hexagon/imported/system.idef +++ b/target/hexagon/imported/system.idef @@ -51,6 +51,9 @@ Q6INSN(J2_trap1,"trap1(Rx32,#u8)",ATTRIBS(A_COF,A_NOTE_NO= PACKET,A_RESTRICT_NOPAC Q6INSN(J2_pause,"pause(#u8)",ATTRIBS(A_COF,A_NOTE_NOPACKET,A_RESTRICT_NOPA= CKET), "Enter low-power state for #u8 cycles",{fPAUSE(uiV);}) =20 +Q6INSN(J2_unpause,"unpause",ATTRIBS(A_COF,A_NOTE_NOPACKET,A_RESTRICT_NOPAC= KET), +"Resume paused threads",{fUNPAUSE();}) + Q6INSN(J2_rte, "rte", ATTRIBS(A_PRIV,A_NOTE_PRIV,A_NO_TIMING_LOG), "Return from Exception", { --=20 2.34.1 From nobody Sat Sep 26 20:01:33 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=1788874579; cv=none; d=zohomail.com; s=zohoarc; b=QHyUGM20WxSOVIz9LWuCRy+ZduvI8zH7klpbRGpvrfxXXNmvZZVwgGvoZ16UZKpEDVHEtF6jwDGu53a3pBiXuKnmNe1veFtBgYwtgVxrKL+TmFcSEIjZfmkCB2Gx2MzIo25KF+mubPunq2mjyIuTc+dLKAdsjsxyuTxQjLjWqa0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788874579; 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=NcAXGODgjd7DRuutYsJZEy5k4aR9wNp+EwfvI80iUi0=; b=ZPbXXdeBET6rV3AH3Dz33c7B0qd0KMPy1Fa3LVfh9UjOyEPqgmWtHGCYOaR3slCzQbWq0l8epO46rTSyNECx2aJWSnH3H0xfYToPNlG8dkKFU3cbLp26qaVmP4ov5al1jdZrwlcynWyxlh4njub/6Ip9mZDiismqtHKRlFGZng4= 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 178887457955153.41145658792516; Tue, 8 Sep 2026 06:36:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x3vzK-0004jn-Sc; Tue, 08 Sep 2026 09:35:50 -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 1x3vzJ-0004iu-A1 for qemu-devel@nongnu.org; Tue, 08 Sep 2026 09:35:49 -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 1x3vyu-0006Fz-7C for qemu-devel@nongnu.org; Tue, 08 Sep 2026 09:35:48 -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 688CkiIA3033400 for ; Tue, 8 Sep 2026 13:35:22 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 4gjhkj0evb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 08 Sep 2026 13:35:22 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3965ba1ba3eso5638667a91.2 for ; Tue, 08 Sep 2026 06:35:22 -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-334fbd5e6f6sm29029079eec.23.2026.09.08.06.35.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 06:35:19 -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= NcAXGODgjd7DRuutYsJZEy5k4aR9wNp+EwfvI80iUi0=; b=BSWJhi4I+ru5ybt0 ZLRYUD43lGoi0W5kc/E954qUfeJE+UiIQVJttde2Ua5wcaFOy8bQ5gfAQc6Tvdp4 P1CLvtvLb17SxvYihTwpwrrXGGnPyO8Z04eMDPy+SFhlA+fKJDgqbZR8HGcMQ6iK 3ChTLfXPQ1hiXSId03yfV7AbC3WjMTIQaITkxoG5U6jKr9T28YRtsfsVfu/6GQpS d+/A7Re+dbaXIphnn1eUVp32NaZzK/jGEjQiMVNHLF8E4bc8DfzLNdpUy8RKyaYn PTSFmetessWNkzsv6an2S4vk1Tp1/rSappcBntC48uiXjyfz+hA9+3rAiYdyueyY CQSthA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788874522; x=1789479322; 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=NcAXGODgjd7DRuutYsJZEy5k4aR9wNp+EwfvI80iUi0=; b=CV7jJGOPBIEAQeq58hmRAbxJtbGHNewwqwLmU4Q+56UuQcnq3P/Z5jZ5jjPh4bGhfj dEqFpuErxaWayPJFKQhyYrN0ZkYrqFVDj4ECX5D7AeAwrhdrYl46UHE9girSpY25LB1P kNiAEIQoLdyx8T+hyfk1U9uMh4qKHu+rFKW5B3DAYXgayByloTNxMlMNZY3L3TbnuYQk 2d8DiWxipf6sdDbgl7Bjm2iwWlf1ZwkoYx55At1wJktOHBf8tKJel+CTh0rHJjDm6GVk q4EpmPFZqGgSrtx+x5hkOkUR3TzyHpRFKe3pmJSoFkZRsJKM20zS+IL3MLGn0Ca5AvYP J/8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788874522; x=1789479322; 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=NcAXGODgjd7DRuutYsJZEy5k4aR9wNp+EwfvI80iUi0=; b=r/E3xWGFVyJfuZdVAHnIJ52pj17uOaYzHeYfZmO/2X2bON3GCPGv5tjJsGfKe42wnZ tfRV3Fns1rZe9d4LuCVBpTu+m3KohEuK0TLdPdhBQIWZ9VV2ddXl19pt7WYL/YSmk5NS PLfB2Zhk0rk3vkSZAMWtaHB6dxRACtk6P1bDAjt2dTXIK6YNub/n/4v2ru6QAuMqufj5 LysBh1f5cUH6Vh+GDhYrDZeSwwJ74o1RWRk4fF57X7CgimdJlGSvRLEyuY+q/pcHrvef LG/MN9+nCKrqiUt0R8zSLbSKGABaICXVjR5hf76nIef42WyZvvwEAwnPnWNLGn7VG+Ah 2XYQ== X-Gm-Message-State: AFuF++ngNcL/b0sY9fGVX9NQ32fl5y7KU9ZuPWlGlDjaCSXCDozvRwdu ZA58GnoouebHKcwI/yjzbYXZB1ietx51U2oIDu+dpYRyEKRDQNLL8lom3Ocn2WdeGMwixZhxDEP juxcp9tcjtrFyNj4h1GWEYbZzpl+1ScITb33teBD4TxlaIaNhqRjkCyEPSxwGGoUkAg== X-Gm-Gg: AYBFou32L0YHIG9PeOMdE8EN7UBVLo+46Gvmk+vqL+oGG74OUP3/HnXwkUzoNtu2bNP 0/2TvTAIQQnELtCd2+okb8hdnsDIy5sfsr49d1XT23RYHjSqTbhFR1xW176iGqsxJeqBn8z773l N+IouH0VLWhJRP+cLMaJkiM7YCt4A8mQ8VD/lla6J2u+cHhrG/e5uKhr4xPHX4OrF+0jC3SCFmq jEC0mTRFur850mpLnX4MXZMSbFGafv9SwcCvwU0UiERjXXieXsgcydX+MPP171OUdWmugEM5Or5 EhzSdeYZyibNp8VIBpTNYhyKg6y8GnKs9y0fBvEKtCrJcsYRDJcohqkVJPAO7ltYQx1B7hgh9hf rpkOW8/DVrI5mQGQ3ueJ0pZbxm4NI31edOfBZIuWwC/BlhPcR X-Received: by 2002:a17:90b:56cf:b0:398:dcf6:d40e with SMTP id 98e67ed59e1d1-39b262aa580mr45559887a91.17.1788874521370; Tue, 08 Sep 2026 06:35:21 -0700 (PDT) X-Received: by 2002:a17:90b:56cf:b0:398:dcf6:d40e with SMTP id 98e67ed59e1d1-39b262aa580mr45559777a91.17.1788874520680; Tue, 08 Sep 2026 06:35:20 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Brian Cain , Laurent Vivier , Helge Deller , Pierrick Bouvier , marco.liebel@oss.qualcomm.com Subject: [PATCH 3/5] target/hexagon: add the v79 instructions Date: Tue, 8 Sep 2026 06:35:09 -0700 Message-Id: <20260908133512.2353957-4-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260908133512.2353957-1-brian.cain@oss.qualcomm.com> References: <20260908133512.2353957-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: AW1haW4tMjYwOTA4MDE0NSBTYWx0ZWRfX7Od70qNMOPqV J5kz4uT50OT3Q8PT7h3Q7xFYCflUsSG5Zq6CauPf5JoZ1TXH7aLdVjFoKD4W7fxsJFryoygwvTv a7ApC53fb2TF+TndMnSzN5I8T849kfY= X-Proofpoint-GUID: -H-bR9DCeClpg03ugyXSLOWR0_QeaQrh X-Authority-Analysis: v=2.4 cv=VYjH+lp9 c=1 sm=1 tr=0 ts=6aa00f1a 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=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=PE_0aRXXFqvOHVJAk-UA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-ORIG-GUID: -H-bR9DCeClpg03ugyXSLOWR0_QeaQrh X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE0NSBTYWx0ZWRfX01VMTcETokGl w881ewZBxzIb/2hwmSUGRdKYMRFY+4ratMRHZJ8zPLARhIFUR2FUZixPakutXGbBkDrMW5Zqh/E 7faik8QqCJhDIlXjoV+EK0Dm+A+vWcTZx+Xh88WEvqqc4A7qcJL5tBh+qhZ8RowzH61mcwlEa4t xHkMhrK7kXZaMHvISAtD2s59uaPSxrxD33SbZruUwPRXrOQ28opRaPSyn5ylde4jBJQ7XaAMk46 lwNcihKJ+DXFIssKbVUegzWAqZh9OgkxwFR2mxR+lteBpOYJ3ATFHFEXL3rQgwMBSWRbQ0/ZReC bshlwanK7pbMDQsXUrQ3ZQ0x/y/6Fqi7AAR8rNfufvNB8A6XU4JPXA7Jqp23Dogi6uzfBbPQ5Wf KYW+Z985KEWPRu9CER8/7OfCMDMxv3BGdrEXzdTaXFNP/arU7dBiHLB/Ep89bAhvW67CyuQ213x tfcWNpY/seOe4CkVnBg== 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-08_02,2026-09-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 priorityscore=1501 suspectscore=0 spamscore=0 impostorscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609080145 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: 1788874582309158500 v79 adds a ":nt" non-temporal cache-locality hint to the post-increment store family and to dcfetch/dczeroa. None of the ":nt" mnemonics are accepted by the assembler yet, so the new test embeds them via .word. Signed-off-by: Brian Cain Reviewed-by: Marco Liebel --- target/hexagon/attribs_def.h.inc | 2 + tests/tcg/hexagon/check_rev_gating.c | 32 +++++- tests/tcg/hexagon/v79_scalar.c | 157 ++++++++++++++++++++++++++ target/hexagon/tag_rev_info.c.inc | 23 ++++ target/hexagon/imported/encode_pp.def | 19 ++++ target/hexagon/imported/ldst.idef | 21 ++++ target/hexagon/imported/system.idef | 2 + tests/tcg/hexagon/meson.build | 1 + 8 files changed, 251 insertions(+), 6 deletions(-) create mode 100644 tests/tcg/hexagon/v79_scalar.c diff --git a/target/hexagon/attribs_def.h.inc b/target/hexagon/attribs_def.= h.inc index d12f6ac4b1a..8b4eb27d682 100644 --- a/target/hexagon/attribs_def.h.inc +++ b/target/hexagon/attribs_def.h.inc @@ -21,6 +21,8 @@ DEF_ATTRIB(AA_DUMMY, "Dummy Zeroth Attribute", "", "") /* Misc */ DEF_ATTRIB(EXTENSION, "Extension instruction", "", "") =20 +DEF_ATTRIB(NA_NT, "Non-Allocating Non-Temporal instruction", "", "") + DEF_ATTRIB(PRIV, "Not available in user or guest mode", "", "") DEF_ATTRIB(GUEST, "Not available in user mode", "", "") =20 diff --git a/tests/tcg/hexagon/check_rev_gating.c b/tests/tcg/hexagon/check= _rev_gating.c index d5295bf24ab..3f48ab9cd35 100644 --- a/tests/tcg/hexagon/check_rev_gating.c +++ b/tests/tcg/hexagon/check_rev_gating.c @@ -3,12 +3,15 @@ * are rejected with SIGILL. * * Compiled with -mv66 so that e_flags selects CPU v66. The test embeds - * instructions from v68 through v73 via .word encoding: the assembler - * enforces the selected CPU's own minimum version, so none of these -- - * including ones it otherwise knows how to assemble at their own - * target, such as callrh or unpause -- can be written as themselves in - * a file built for v66. The revision-gated decoder must reject every - * one of them, and linux-user must deliver SIGILL. + * instructions from v68 up through v79 via .word encoding: the + * assembler enforces the selected CPU's own minimum version, so none + * of these -- including ones it otherwise knows how to assemble at + * their own target, such as callrh or unpause -- can be written as + * themselves in a file built for v66. The v79 non-temporal hints + * (":nt") aren't known to the assembler at any target yet, so those + * would need .word regardless. The revision-gated decoder must reject + * representative instructions from each family, and linux-user must + * deliver SIGILL. * * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. * SPDX-License-Identifier: GPL-2.0-or-later @@ -108,6 +111,17 @@ TRY_FUNC(v73_jumprh, TRY_FUNC(v73_unpause, ".word 0x57e0d000 /* unpause */\n") =20 +TRY_FUNC(v79_storeri_pi_nt, + ".word 0xaa82c308 /* memw(r2++#4):nt =3D r3 */\n") +TRY_FUNC(v79_pstorerit_pi_nt, + ".word 0xaa82e308 /* if (p0) memw(r2++#4):nt =3D r3 */\n") +TRY_FUNC(v79_pstorerif_pi_nt, + ".word 0xaa82e30c /* if (!p0) memw(r2++#4):nt =3D r3 */\n") +TRY_FUNC(v79_dczeroa_nt, + ".word 0xa0c2e000 /* dczeroa(r2):nt */\n") +TRY_FUNC(v79_dcfetchbo_nt, + ".word 0x9402e000 /* dcfetch(r2+#0):nt */\n") + int main(void) { struct sigaction act; @@ -140,6 +154,12 @@ int main(void) assert(try_v73_jumprh() =3D=3D SIGILL); assert(try_v73_unpause() =3D=3D SIGILL); =20 + assert(try_v79_storeri_pi_nt() =3D=3D SIGILL); + assert(try_v79_pstorerit_pi_nt() =3D=3D SIGILL); + assert(try_v79_pstorerif_pi_nt() =3D=3D SIGILL); + assert(try_v79_dczeroa_nt() =3D=3D SIGILL); + assert(try_v79_dcfetchbo_nt() =3D=3D SIGILL); + assert(signals_handled =3D=3D expected_signals); =20 puts("PASS"); diff --git a/tests/tcg/hexagon/v79_scalar.c b/tests/tcg/hexagon/v79_scalar.c new file mode 100644 index 00000000000..81eb277b739 --- /dev/null +++ b/tests/tcg/hexagon/v79_scalar.c @@ -0,0 +1,157 @@ +/* + * Test the scalar core instructions that are new in v79. + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include +#include +#include + +int err; + +static void __check32(int line, uint32_t result, uint32_t expect) +{ + if (result !=3D expect) { + printf("ERROR at line %d: 0x%08x !=3D 0x%08x\n", line, result, exp= ect); + err++; + } +} + +#define check32(RES, EXP) __check32(__LINE__, RES, EXP) + +static uint32_t sbuf[4]; +static uint32_t newp; + +/* S2_storeri_pi_nt: memw(Rx32++#4):nt =3D Rt32 */ +static void test_storeri_pi_nt(void) +{ + uint32_t *p =3D sbuf; + + memset(sbuf, 0xff, sizeof(sbuf)); + asm volatile( + "r2 =3D %1\n\t" + "r3 =3D #0x12345678\n\t" + ".word 0xaa82c308\n\t" /* memw(r2++#4):nt =3D r3 */ + "r5 =3D ##newp\n\t" + "memw(r5 + #0) =3D r2\n\t" + : "+m"(newp) + : "r"(p) + : "r2", "r3", "r5", "memory"); + check32(sbuf[0], 0x12345678); + check32(newp, (uint32_t)(uintptr_t)(sbuf + 1)); +} + +static uint8_t bbuf[4]; + +/* S2_storerb_pi_nt: memb(Rx32++#1):nt =3D Rt32 */ +static void test_storerb_pi_nt(void) +{ + uint32_t *p =3D (uint32_t *)bbuf; + + memset(bbuf, 0xff, sizeof(bbuf)); + asm volatile( + "r2 =3D %1\n\t" + "r3 =3D #0x42\n\t" + ".word 0xaa02c308\n\t" /* memb(r2++#1):nt =3D r3 */ + "r5 =3D ##newp\n\t" + "memw(r5 + #0) =3D r2\n\t" + : "+m"(newp) + : "r"(p) + : "r2", "r3", "r5", "memory"); + check32(bbuf[0], 0x42); + check32(newp, (uint32_t)(uintptr_t)(bbuf + 1)); +} + +/* S2_pstorerit_pi_nt: if (Pv4) memw(Rx32++#4):nt =3D Rt32, predicate true= */ +static void test_pstorerit_pi_nt(void) +{ + uint32_t *p =3D sbuf; + + memset(sbuf, 0xff, sizeof(sbuf)); + asm volatile( + "p0 =3D cmp.eq(r0, r0)\n\t" /* P0 =3D true */ + "r2 =3D %1\n\t" + "r3 =3D #0x11223344\n\t" + ".word 0xaa82e308\n\t" /* if (p0) memw(r2++#4):nt =3D r3 */ + "r5 =3D ##newp\n\t" + "memw(r5 + #0) =3D r2\n\t" + : "+m"(newp) + : "r"(p) + : "r0", "r2", "r3", "r5", "p0", "memory"); + check32(sbuf[0], 0x11223344); + check32(newp, (uint32_t)(uintptr_t)(sbuf + 1)); +} + +/* S2_pstorerif_pi_nt: if (!Pv4) memw(Rx32++#4):nt =3D Rt32, predicate fal= se */ +static void test_pstorerif_pi_nt(void) +{ + uint32_t *p =3D sbuf; + + memset(sbuf, 0xff, sizeof(sbuf)); + asm volatile( + "r0 =3D #1\n\t" + "r1 =3D #2\n\t" + "p0 =3D cmp.eq(r0, r1)\n\t" /* P0 =3D false */ + "r2 =3D %1\n\t" + "r3 =3D #0x99887766\n\t" + ".word 0xaa82e30c\n\t" /* if (!p0) memw(r2++#4):nt =3D r3 */ + "r5 =3D ##newp\n\t" + "memw(r5 + #0) =3D r2\n\t" + : "+m"(newp) + : "r"(p) + : "r0", "r1", "r2", "r3", "r5", "p0", "memory"); + check32(sbuf[0], 0x99887766); + check32(newp, (uint32_t)(uintptr_t)(sbuf + 1)); +} + +/* Y2_dczeroa_nt: dczeroa(Rs32):nt -- zeroes a 32-byte cacheline */ +static uint8_t cz[64] __attribute__((aligned(32))); + +static void test_dczeroa_nt(void) +{ + memset(cz, 0xaa, sizeof(cz)); + asm volatile( + "r2 =3D %1\n\t" + ".word 0xa0c2e000\n\t" /* dczeroa(r2):nt */ + : "+m"(cz) + : "r"(cz) + : "r2", "memory"); + for (int i =3D 0; i < 32; i++) { + check32(cz[i], 0); + } + for (int i =3D 32; i < 64; i++) { + check32(cz[i], 0xaa); + } +} + +/* Y2_dcfetchbo_nt: dcfetch(Rs32+#0):nt -- a hint, must not fault or store= */ +static uint8_t df[32] __attribute__((aligned(8))); + +static void test_dcfetchbo_nt(void) +{ + memset(df, 0x55, sizeof(df)); + asm volatile( + "r2 =3D %1\n\t" + ".word 0x9402e000\n\t" /* dcfetch(r2+#0):nt */ + : "+m"(df) + : "r"(df) + : "r2", "memory"); + for (int i =3D 0; i < 32; i++) { + check32(df[i], 0x55); + } +} + +int main() +{ + test_storeri_pi_nt(); + test_storerb_pi_nt(); + test_pstorerit_pi_nt(); + test_pstorerif_pi_nt(); + test_dczeroa_nt(); + test_dcfetchbo_nt(); + + puts(err ? "FAIL" : "PASS"); + return err ? 1 : 0; +} diff --git a/target/hexagon/tag_rev_info.c.inc b/target/hexagon/tag_rev_inf= o.c.inc index 44513f46809..48bdc52bfdb 100644 --- a/target/hexagon/tag_rev_info.c.inc +++ b/target/hexagon/tag_rev_info.c.inc @@ -619,6 +619,29 @@ static const struct tag_rev_info tag_rev_info[XX_LAST_= OPCODE] =3D { [V6_vassign_tmp] =3D { .introduced =3D HEX_VER_V69, .removed =3D HEX_V= ER_NONE }, [V6_vcombine_tmp] =3D { .introduced =3D HEX_VER_V69, .removed =3D HEX_= VER_NONE }, [V6_vmpyuhvs] =3D { .introduced =3D HEX_VER_V69, .removed =3D HEX_VER_= NONE }, + + [S2_pstorerbf_pi_nt] =3D { .introduced =3D HEX_VER_V79, + .removed =3D HEX_VER_NONE }, + [S2_pstorerbt_pi_nt] =3D { .introduced =3D HEX_VER_V79, + .removed =3D HEX_VER_NONE }, + [S2_pstorerdf_pi_nt] =3D { .introduced =3D HEX_VER_V79, + .removed =3D HEX_VER_NONE }, + [S2_pstorerdt_pi_nt] =3D { .introduced =3D HEX_VER_V79, + .removed =3D HEX_VER_NONE }, + [S2_pstorerhf_pi_nt] =3D { .introduced =3D HEX_VER_V79, + .removed =3D HEX_VER_NONE }, + [S2_pstorerht_pi_nt] =3D { .introduced =3D HEX_VER_V79, + .removed =3D HEX_VER_NONE }, + [S2_pstorerif_pi_nt] =3D { .introduced =3D HEX_VER_V79, + .removed =3D HEX_VER_NONE }, + [S2_pstorerit_pi_nt] =3D { .introduced =3D HEX_VER_V79, + .removed =3D HEX_VER_NONE }, + [S2_storerb_pi_nt] =3D { .introduced =3D HEX_VER_V79, .removed =3D HEX= _VER_NONE }, + [S2_storerd_pi_nt] =3D { .introduced =3D HEX_VER_V79, .removed =3D HEX= _VER_NONE }, + [S2_storerh_pi_nt] =3D { .introduced =3D HEX_VER_V79, .removed =3D HEX= _VER_NONE }, + [S2_storeri_pi_nt] =3D { .introduced =3D HEX_VER_V79, .removed =3D HEX= _VER_NONE }, + [Y2_dcfetchbo_nt] =3D { .introduced =3D HEX_VER_V79, .removed =3D HEX_= VER_NONE }, + [Y2_dczeroa_nt] =3D { .introduced =3D HEX_VER_V79, .removed =3D HEX_VE= R_NONE }, }; =20 #endif /* HEXAGON_TAG_ARCH_TABLE_H */ diff --git a/target/hexagon/imported/encode_pp.def b/target/hexagon/importe= d/encode_pp.def index 1fce318b2bb..fca8f8aeb1a 100644 --- a/target/hexagon/imported/encode_pp.def +++ b/target/hexagon/imported/encode_pp.def @@ -407,6 +407,7 @@ DEF_ENC32(R6_release_st_vi, ICLASS_ST" 000 01 11sssss= PP0ttttt --1011dd") =20 DEF_EXT_SPACE(EXTRACTW, ICLASS_LD" 001 0 000 iiiii PP0iiiii 001iiiii") DEF_ENC32(Y2_dcfetchbo, ICLASS_LD" 010 0 000 sssss PP0--iii iiiiiiii") +DEF_ENC32(Y2_dcfetchbo_nt,"10010100000sssssPP10-iiiiiiiiiii") =20 =20 =20 @@ -473,6 +474,13 @@ STD_ST_ENC(rbnew, "1 101","00ttt") STD_ST_ENC(rhnew, "1 101","01ttt") STD_ST_ENC(rinew, "1 101","10ttt") =20 +/* Non-temporal post-increment stores: the OPC nibble's high bit, always + * 1 above, is repurposed as the "nt" hint for this addressing mode only. = */ +DEF_ENC32(S2_storerb_pi_nt,"10101010000xxxxxPP0ttttt0iiii-0-") +DEF_ENC32(S2_storerh_pi_nt,"10101010010xxxxxPP0ttttt0iiii-0-") +DEF_ENC32(S2_storeri_pi_nt,"10101010100xxxxxPP0ttttt0iiii-0-") +DEF_ENC32(S2_storerd_pi_nt,"10101010110xxxxxPP0ttttt0iiii-00") + STD_PST_ENC(rb, "1 000","ttttt") STD_PST_ENC(rh, "1 010","ttttt") STD_PST_ENC(rf, "1 011","ttttt") @@ -482,6 +490,16 @@ STD_PST_ENC(rbnew, "1 101","00ttt") STD_PST_ENC(rhnew, "1 101","01ttt") STD_PST_ENC(rinew, "1 101","10ttt") =20 +/* Predicated forms of the non-temporal post-increment stores above. */ +DEF_ENC32(S2_pstorerbt_pi_nt,"10101010000xxxxxPP1ttttt0iiii0vv") +DEF_ENC32(S2_pstorerbf_pi_nt,"10101010000xxxxxPP1ttttt0iiii1vv") +DEF_ENC32(S2_pstorerht_pi_nt,"10101010010xxxxxPP1ttttt0iiii0vv") +DEF_ENC32(S2_pstorerhf_pi_nt,"10101010010xxxxxPP1ttttt0iiii1vv") +DEF_ENC32(S2_pstorerit_pi_nt,"10101010100xxxxxPP1ttttt0iiii0vv") +DEF_ENC32(S2_pstorerif_pi_nt,"10101010100xxxxxPP1ttttt0iiii1vv") +DEF_ENC32(S2_pstorerdt_pi_nt,"10101010110xxxxxPP1ttttt0iiii0vv") +DEF_ENC32(S2_pstorerdf_pi_nt,"10101010110xxxxxPP1ttttt0iiii1vv") + =20 =20 /* User */ @@ -492,6 +510,7 @@ STD_PST_ENC(rinew, "1 101","10ttt") DEF_ENC32(S2_allocframe, ICLASS_ST" 000 01 00xxxxx PP000iii iiiiiiii") DEF_ENC32(Y5_l2locka, ICLASS_ST" 000 01 11sssss PP1----- ------dd") DEF_ENC32(Y2_dczeroa, ICLASS_ST" 000 01 10sssss PP0----- --------") +DEF_ENC32(Y2_dczeroa_nt,"10100000110sssssPP1-------------") =20 =20 DEF_ENC32(Y2_barrier, ICLASS_ST" 100 00 00----- PP------ 000-----") diff --git a/target/hexagon/imported/ldst.idef b/target/hexagon/imported/ld= st.idef index 4e1e5d5326d..7106a0c572c 100644 --- a/target/hexagon/imported/ldst.idef +++ b/target/hexagon/imported/ldst.idef @@ -118,6 +118,16 @@ STD_ST_AMODES(storerh, "Rt32", "memh","Store Half inte= ger",ATTRIBS(A_REGWRSIZE_2 STD_ST_AMODES(storerf, "Rt.H32", "memh","Store Upper Half integer",ATTRIBS= (A_REGWRSIZE_2B,A_MEMSIZE_2B,A_STORE),"1",fSTORE(1,2,EA,fGETHALF(1,RtV)),1) STD_ST_AMODES(storeri, "Rt32", "memw","Store Word",ATTRIBS(A_REGWRSIZE_4B,= A_MEMSIZE_4B,A_STORE),"2",fSTORE(1,4,EA,RtV),2) STD_ST_AMODES(storerd, "Rtt32","memd","Store Double integer",ATTRIBS(A_REG= WRSIZE_8B,A_MEMSIZE_8B,A_STORE),"3",fSTORE(1,8,EA,RttV),3) + +/* + * Non-temporal post-increment stores: same store, with a cache-locality + * hint that a normal-priority cache line is unlikely to be reused soon. + */ +Q6INSN(S2_storerb_pi_nt,"memb(Rx32++#s4:0):nt=3DRt32",ATTRIBS(A_ARCHV2,A_M= EMSIZE_1B,A_STORE,A_NA_NT),"Store Byte",{fEA_REG(RxV); fPM_I(RxV,siV); fSTO= RE(1,1,EA,fGETBYTE(0,RtV)); }) +Q6INSN(S2_storerh_pi_nt,"memh(Rx32++#s4:1):nt=3DRt32",ATTRIBS(A_REGWRSIZE_= 2B,A_ARCHV2,A_MEMSIZE_2B,A_STORE,A_NA_NT),"Store Half integer",{fEA_REG(RxV= ); fPM_I(RxV,siV); fSTORE(1,2,EA,fGETHALF(0,RtV)); }) +Q6INSN(S2_storeri_pi_nt,"memw(Rx32++#s4:2):nt=3DRt32",ATTRIBS(A_REGWRSIZE_= 4B,A_ARCHV2,A_MEMSIZE_4B,A_STORE,A_NA_NT),"Store Word",{fEA_REG(RxV); fPM_I= (RxV,siV); fSTORE(1,4,EA,RtV); }) +Q6INSN(S2_storerd_pi_nt,"memd(Rx32++#s4:3):nt=3DRtt32",ATTRIBS(A_REGWRSIZE= _8B,A_ARCHV2,A_MEMSIZE_8B,A_STORE,A_NA_NT),"Store Double integer",{fEA_REG(= RxV); fPM_I(RxV,siV); fSTORE(1,8,EA,RttV); }) + STD_ST_AMODES(storerinew, "Nt8.new", "memw","Store Word",ATTRIBS(A_REGWRSI= ZE_4B,A_NOTE_NEWVAL_SLOT0,A_NVSTORE,A_NOTE_NVSLOT0,A_MEMSIZE_4B,A_STORE,A_R= ESTRICT_NOSLOT1_STORE),"2",fSTORE(1,4,EA,fNEWREG_ST(NtN)),2) STD_ST_AMODES(storerbnew, "Nt8.new", "memb","Store Byte",ATTRIBS(A_NOTE_NE= WVAL_SLOT0,A_NVSTORE,A_NOTE_NVSLOT0,A_MEMSIZE_1B,A_STORE,A_RESTRICT_NOSLOT1= _STORE),"0",fSTORE(1,1,EA,fGETBYTE(0,fNEWREG_ST(NtN))),0) STD_ST_AMODES(storerhnew, "Nt8.new", "memh","Store Half integer",ATTRIBS(A= _REGWRSIZE_2B,A_NOTE_NEWVAL_SLOT0,A_NVSTORE,A_NOTE_NVSLOT0,A_MEMSIZE_2B,A_S= TORE,A_RESTRICT_NOSLOT1_STORE),"1",fSTORE(1,2,EA,fGETHALF(0,fNEWREG_ST(NtN)= )),1) @@ -277,6 +287,17 @@ STD_PST_AMODES(storerh,"Rt32","memh","Store Half integ= er",ATTRIBS(A_REGWRSIZE_2B STD_PST_AMODES(storerf,"Rt.H32","memh","Store Upper Half integer",ATTRIBS(= A_REGWRSIZE_2B,A_ARCHV2,A_MEMSIZE_2B,A_STORE),"1",1,fSTORE(1,2,EA,fGETHALF(= 1,RtV))) STD_PST_AMODES(storeri,"Rt32","memw","Store Word",ATTRIBS(A_REGWRSIZE_4B,A= _ARCHV2,A_MEMSIZE_4B,A_STORE),"2",2,fSTORE(1,4,EA,RtV)) STD_PST_AMODES(storerd,"Rtt32","memd","Store Double integer",ATTRIBS(A_REG= WRSIZE_8B,A_ARCHV2,A_MEMSIZE_8B,A_STORE),"3",3,fSTORE(1,8,EA,RttV)) + +/* Predicated forms of the non-temporal post-increment stores above. */ +Q6INSN(S2_pstorerbt_pi_nt,"if (Pv4) memb(Rx32++#s4:0):nt=3DRt32",ATTRIBS(A= _ARCHV2,A_MEMSIZE_1B,A_STORE,A_NA_NT),"Store Byte",{fEA_REG(RxV); if (fLSBO= LD(PvV)){ fPM_I(RxV,siV); fSTORE(1,1,EA,fGETBYTE(0,RtV));} else {STORE_CANC= EL(EA);}}) +Q6INSN(S2_pstorerbf_pi_nt,"if (!Pv4) memb(Rx32++#s4:0):nt=3DRt32",ATTRIBS(= A_ARCHV2,A_MEMSIZE_1B,A_STORE,A_NA_NT),"Store Byte",{fEA_REG(RxV); if (fLSB= OLDNOT(PvV)){ fPM_I(RxV,siV); fSTORE(1,1,EA,fGETBYTE(0,RtV));} else {STORE_= CANCEL(EA);}}) +Q6INSN(S2_pstorerht_pi_nt,"if (Pv4) memh(Rx32++#s4:1):nt=3DRt32",ATTRIBS(A= _REGWRSIZE_2B,A_ARCHV2,A_MEMSIZE_2B,A_STORE,A_NA_NT),"Store Half integer",{= fEA_REG(RxV); if (fLSBOLD(PvV)){ fPM_I(RxV,siV); fSTORE(1,2,EA,fGETHALF(0,R= tV));} else {STORE_CANCEL(EA);}}) +Q6INSN(S2_pstorerhf_pi_nt,"if (!Pv4) memh(Rx32++#s4:1):nt=3DRt32",ATTRIBS(= A_REGWRSIZE_2B,A_ARCHV2,A_MEMSIZE_2B,A_STORE,A_NA_NT),"Store Half integer",= {fEA_REG(RxV); if (fLSBOLDNOT(PvV)){ fPM_I(RxV,siV); fSTORE(1,2,EA,fGETHALF= (0,RtV));} else {STORE_CANCEL(EA);}}) +Q6INSN(S2_pstorerit_pi_nt,"if (Pv4) memw(Rx32++#s4:2):nt=3DRt32",ATTRIBS(A= _REGWRSIZE_4B,A_ARCHV2,A_MEMSIZE_4B,A_STORE,A_NA_NT),"Store Word",{fEA_REG(= RxV); if (fLSBOLD(PvV)){ fPM_I(RxV,siV); fSTORE(1,4,EA,RtV);} else {STORE_C= ANCEL(EA);}}) +Q6INSN(S2_pstorerif_pi_nt,"if (!Pv4) memw(Rx32++#s4:2):nt=3DRt32",ATTRIBS(= A_REGWRSIZE_4B,A_ARCHV2,A_MEMSIZE_4B,A_STORE,A_NA_NT),"Store Word",{fEA_REG= (RxV); if (fLSBOLDNOT(PvV)){ fPM_I(RxV,siV); fSTORE(1,4,EA,RtV);} else {STO= RE_CANCEL(EA);}}) +Q6INSN(S2_pstorerdt_pi_nt,"if (Pv4) memd(Rx32++#s4:3):nt=3DRtt32",ATTRIBS(= A_REGWRSIZE_8B,A_ARCHV2,A_MEMSIZE_8B,A_STORE,A_NA_NT),"Store Double integer= ",{fEA_REG(RxV); if (fLSBOLD(PvV)){ fPM_I(RxV,siV); fSTORE(1,8,EA,RttV);} e= lse {STORE_CANCEL(EA);}}) +Q6INSN(S2_pstorerdf_pi_nt,"if (!Pv4) memd(Rx32++#s4:3):nt=3DRtt32",ATTRIBS= (A_REGWRSIZE_8B,A_ARCHV2,A_MEMSIZE_8B,A_STORE,A_NA_NT),"Store Double intege= r",{fEA_REG(RxV); if (fLSBOLDNOT(PvV)){ fPM_I(RxV,siV); fSTORE(1,8,EA,RttV)= ;} else {STORE_CANCEL(EA);}}) + STD_PST_AMODES(storerinew,"Nt8.new","memw","Store Word",ATTRIBS(A_REGWRSIZ= E_4B,A_ARCHV2,A_NOTE_NEWVAL_SLOT0,A_NVSTORE,A_NOTE_NVSLOT0,A_MEMSIZE_4B,A_S= TORE,A_RESTRICT_NOSLOT1_STORE),"2",2,fSTORE(1,4,EA,fNEWREG_ST(NtN))) STD_PST_AMODES(storerbnew,"Nt8.new","memb","Store Byte",ATTRIBS(A_ARCHV2,A= _NOTE_NEWVAL_SLOT0,A_NVSTORE,A_NOTE_NVSLOT0,A_MEMSIZE_1B,A_STORE,A_RESTRICT= _NOSLOT1_STORE),"0",0,fSTORE(1,1,EA,fGETBYTE(0,fNEWREG_ST(NtN)))) STD_PST_AMODES(storerhnew,"Nt8.new","memh","Store Half integer",ATTRIBS(A_= REGWRSIZE_2B,A_ARCHV2,A_NOTE_NEWVAL_SLOT0,A_NVSTORE,A_NOTE_NVSLOT0,A_MEMSIZ= E_2B,A_STORE,A_RESTRICT_NOSLOT1_STORE),"1",1,fSTORE(1,2,EA,fGETHALF(0,fNEWR= EG_ST(NtN)))) diff --git a/target/hexagon/imported/system.idef b/target/hexagon/imported/= system.idef index b44e87565c3..6187ada5abb 100644 --- a/target/hexagon/imported/system.idef +++ b/target/hexagon/imported/system.idef @@ -238,10 +238,12 @@ Q6INSN(Y6_dmresume,"dmresume(Rs32)",ATTRIBS(A_NOTE_NO= PACKET,A_RESTRICT_NOPACKET, =20 =20 Q6INSN(Y2_dcfetchbo,"dcfetch(Rs32+#u11:3)",ATTRIBS(A_RESTRICT_PREFERSLOT0,= A_DCFETCH,A_RESTRICT_NOSLOT1_STORE),"Data Cache Prefetch",{fEA_RI(RsV,uiV);= fDCFETCH(EA);}) +Q6INSN(Y2_dcfetchbo_nt,"dcfetch(Rs32+#u11:3):nt",ATTRIBS(A_NA_NT,A_RESTRIC= T_PREFERSLOT0,A_DCFETCH,A_RESTRICT_NOSLOT1_STORE),"Data Cache Prefetch",{fE= A_RI(RsV,uiV); fDCFETCH(EA);}) Q6INSN(Y2_dckill,"dckill",ATTRIBS(A_PRIV,A_NOTE_PRIV,A_NOTE_NOPACKET,A_RES= TRICT_SLOT0ONLY,A_RESTRICT_NOPACKET,A_CACHEOP,A_DCFLUSHOP),"Data Cache Inva= lidate",{fDCKILL();}) =20 =20 Q6INSN(Y2_dczeroa,"dczeroa(Rs32)",ATTRIBS(A_STORE,A_RESTRICT_SLOT1_AOK,A_N= OTE_SLOT1_AOK,A_RESTRICT_SLOT0ONLY,A_CACHEOP,A_COPBYADDRESS,A_DCZEROA),"Zer= o an aligned 32-byte cacheline",{fEA_REG(RsV); fDCZEROA(EA);}) +Q6INSN(Y2_dczeroa_nt,"dczeroa(Rs32):nt",ATTRIBS(A_STORE,A_RESTRICT_SLOT1_A= OK,A_NOTE_SLOT1_AOK,A_RESTRICT_SLOT0ONLY,A_CACHEOP,A_COPBYADDRESS,A_DCZEROA= ,A_NA_NT),"Zero an aligned 32-byte cacheline",{fEA_REG(RsV); fDCZEROA(EA);}) Q6INSN(Y2_dccleana,"dccleana(Rs32)",ATTRIBS(A_RESTRICT_SLOT1_AOK,A_NOTE_SL= OT1_AOK,A_RESTRICT_SLOT0ONLY,A_CACHEOP,A_COPBYADDRESS,A_DCFLUSHOP),"Data Ca= che Clean Address",{fEA_REG(RsV); fDCCLEANA(EA);}) Q6INSN(Y2_dccleanidx,"dccleanidx(Rs32)",ATTRIBS(A_PRIV,A_NOTE_PRIV,A_RESTR= ICT_PACKET_AXOK,A_NOTE_AXOK,A_RESTRICT_SLOT0ONLY,A_CACHEOP,A_COPBYIDX,A_DCF= LUSHOP),"Data Cache Clean Index",{fDCCLEANIDX(RsV);}) Q6INSN(Y2_dccleaninva,"dccleaninva(Rs32)",ATTRIBS(A_RESTRICT_SLOT1_AOK,A_N= OTE_SLOT1_AOK,A_RESTRICT_SLOT0ONLY,A_CACHEOP,A_COPBYADDRESS,A_DCFLUSHOP),"D= ata Cache Clean and Invalidate Address",{fEA_REG(RsV); fDCCLEANINVA(EA);}) diff --git a/tests/tcg/hexagon/meson.build b/tests/tcg/hexagon/meson.build index 4a2826c4276..6e36a9a1220 100644 --- a/tests/tcg/hexagon/meson.build +++ b/tests/tcg/hexagon/meson.build @@ -101,6 +101,7 @@ tests +=3D { 'v68_hvx.c': {'cflags': [cflags, '-mhvx', '-Wno-unused-function', '-mv68= ']}, 'v69_hvx.c': {'cflags': [cflags, '-mhvx', '-Wno-unused-function', '-mv69= ']}, 'v73_scalar.c': {'cflags': [cflags, '-Wno-unused-function', '-mv73']}, + 'v79_scalar.c': {'cflags': [cflags, '-Wno-unused-function', '-mv79']}, 'valid-slots.c': {'cflags': cflags}, 'vector_add_int.c': {'cflags': [cflags, '-mhvx', '-fvectorize']}, } --=20 2.34.1 From nobody Sat Sep 26 20:01:33 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=1788874565; cv=none; d=zohomail.com; s=zohoarc; b=darAiSLo+7u9gPqdYgT2zQUp3+UtlgPmNf0AZUZYiRLXZCGIgoLcm6hUDVtAE/Cfu+oxH+FJgkVTp5MDS0rb5sBHYU5nScFNvgdK704t9SUFJRsEdcqgRPpJ2jgvAJq4vz4wD0dUurhqOPJgMr6ZZP9K1jMHT2OYkfbzS0QP+0U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788874565; 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=wXn2aDfpqQZbmVw2AYnPiH3g2Ka7TkFx+BaIm80wyoY=; b=PuWDLel28FA9XCRVo4nQ//P1hAFPBZn0Wqd1fr8gw1+VyZzhGvalWrtBOczWPhlI2NUASAUXwEO9veojtXoHXJ/bXfJDSJN57JFZ82RIDcizNcTbvIqXEEYfbK5EqTUS1oXBBkWBkXUFoUb1E4qAU+M+V1uB7qSYgo/BuBEVA+Q= 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 1788874565254245.65670103375146; Tue, 8 Sep 2026 06:36:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x3vzM-0004kf-Oy; Tue, 08 Sep 2026 09:35:52 -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 1x3vzK-0004jp-Mp for qemu-devel@nongnu.org; Tue, 08 Sep 2026 09:35:50 -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 1x3vyw-0006GP-TN for qemu-devel@nongnu.org; Tue, 08 Sep 2026 09:35:50 -0400 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688Ckwbs3844402 for ; Tue, 8 Sep 2026 13:35:24 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 4gjg8xrsx7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 08 Sep 2026 13:35:23 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2d001671a54so82386325ad.2 for ; Tue, 08 Sep 2026 06:35:23 -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-334fbd5e6f6sm29029079eec.23.2026.09.08.06.35.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 06:35:21 -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= wXn2aDfpqQZbmVw2AYnPiH3g2Ka7TkFx+BaIm80wyoY=; b=KvLwu9oChBmRn23X I37tNrFzbwMHPyogKmhI8bgPdxxF69hOG/ajjCtVsGsivg0/QJZobFhDz4vb6y4G 2DJiYOhVbzRDlNAR48ibxA78m29UUUA/P4WhmS9tXkdf+EbDuBSN1g75x+knxjF9 fHb+zYD05P4rMJeL6h7gmSvrqqCcDMDGH2iN+JvookpVFw082rg3dAYgIvTAxOwg 90QUGtfHPODe0GvMIk3cSe1xSBcMNLtJs2N2Sf4LHgiXd9G1bY/YOyZmMf1P3/51 5dMu2eUih35zdtBoPMPsxb2Y/LhMGRutDGlz0W9qj+4oTTSjiBcdRQgE7ZhZucRL xHjacg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788874523; x=1789479323; 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=wXn2aDfpqQZbmVw2AYnPiH3g2Ka7TkFx+BaIm80wyoY=; b=E0kuHIUUUt7HivtHSHEN6uIgtHYaJt7TB4jPIkQzjaWXzvdpuxA/mCikZPFOEPSFud BIMeacpJzL7h8tLrchq58tfGrDO0fgSd9xbAg+OnLoj3fuP41ddgW2WXAJReI6BntUyx 46RexdhNTtkHMiSblZfuorXHgVIDB3W0kNzdkPbI5YfFqV/o62otjZ8bLLbUwC3oo4Fd xxQ1S6jXZW9O6dKf0JT8i3PBmTJuRdzXVUYzQgdbE1EoY9afM7X/08fUUTUFxuVT8bOU qJB40JhG6+n/stxbuHZOw5LyQlofGX3rc+O+KELhn32mc0zZoLGABbxoWUyTJqhiD+Ga SutA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788874523; x=1789479323; 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=wXn2aDfpqQZbmVw2AYnPiH3g2Ka7TkFx+BaIm80wyoY=; b=asmiCkG9TMIIciF/u48THGjdgl+RfBcl+SLJowQAuhID9fx+9gNE+683T5NbcDgs8F u+gygXR8DMfWteB6qqZiKwHqeK0+BA5o/EESkANnzcpvyTemx9uqp6dyS+DyHyEihuFE BJjL7dL12qQ3VZrFvlguy9Y1iuSGXYlYCxoP4QOZ93tyUvjQaLMfg65XeapCrXdQmGHp 8z9TJKE6kZk0M7S541vPccw8GTZ0BLI0ZU6DKZ5yGBvZkYS74uORxpnZW/c6ou/sCUtq 1c7BMmgiKfDhTh5gtC/bQ+BJzlMloXOSUflTXi8y+W7Nf7RxCCMAa4vFCbDMgfSTpN5H A9ow== X-Gm-Message-State: AFuF++kWP8HG8Su/8vB+gVWktNKGYEhA0pcgMCimGanku+puAie91pjE VX9awnpJiXweSUhqGHmTOgDJvq9cMvngVSTI8ySNqea+mah9SSeQ0ECrvU8HZ14ucLaARWwD3/a HHM4xvPKiZcbMW7TdSCpUyVouJCQA9Fy/Fov+W4g/xLE6aAehcfBwWuXPLxWN/SqqJQ== X-Gm-Gg: AYBFou1RH5ChRs1OYJCAFmVHSmuaOOne+zM02h/Pfc6UVLAF9wr/SwYpdFTGvNC4sNn vEWac8Wl9hBlMxzjC49hkKU4tRmPQnld/8cUEIOOW96tDVbRzl3LJkcSI1XahWlqwWYgnKtc1DW nblV5RIrm35GyXnOpayb+ys1NUwAxi28JpIB3Ci/ZpOg1AySRVjg0cczjFfpePQ4QOZLCa41I81 2vREXepVeDR6+y9Tmdg+sAdWoBqvTBSk9sjBTDm9XAcvV8GDAt5yTiAtkDGQGD0N7/WDwQ0yGNK nYc+j+JHDsWEMwt/O1l1YU6pWvQcqDwOKyiOMc/6lJ96zKgctUQ4YhNndnm5389XZhXA8qq8bAa vVnG8bpG7b2vCCgc1gQ2FJDDacT2i90r4qjI9/lJ+uulyMIps X-Received: by 2002:a17:90b:3c42:b0:38e:fea2:df53 with SMTP id 98e67ed59e1d1-39b260d2977mr43727324a91.4.1788874523177; Tue, 08 Sep 2026 06:35:23 -0700 (PDT) X-Received: by 2002:a17:90b:3c42:b0:38e:fea2:df53 with SMTP id 98e67ed59e1d1-39b260d2977mr43727257a91.4.1788874522679; Tue, 08 Sep 2026 06:35:22 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Brian Cain , Laurent Vivier , Helge Deller , Pierrick Bouvier , marco.liebel@oss.qualcomm.com Subject: [PATCH 4/5] target/hexagon: add Y2_tlbpp as unimplemented Date: Tue, 8 Sep 2026 06:35:10 -0700 Message-Id: <20260908133512.2353957-5-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260908133512.2353957-1-brian.cain@oss.qualcomm.com> References: <20260908133512.2353957-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=J7GaKgnS c=1 sm=1 tr=0 ts=6aa00f1b 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=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=lfClExg8J67ehGbBbBgA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-ORIG-GUID: l65oQ2I8eXaYg7Y6hQzvevICGBoj67Dg X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE0NSBTYWx0ZWRfXxk7LzhCtgrs4 8Ne6G5MAVQQp3tRhvIVkynQMXcBLr69U45nW3c2mA7NbpkUkag01C3eSfFxEcvTtRa5DuOKrPWE KeDfhHpgaS3SmnyZq1Lf/B1gliYJCkjb8RFHIooLhNmO6+zuKqjDOffF0c6LSveOe0jVdG4jXfp oySf6GsXpoeyjorphiN/GATIp3m37uInU0IQjMUsvrPRbsI4PMPAkQMsDlvfj18rr9obUglhuSW LDg599kfWY3CexvJsYnACEH0Tp9j+pFSew/qiTei+MxpFR+j/e13IADGCkoxQ5d1QaAk3d5xRIE K5Ka+OC300PEpKtOtiarESQmPTSED45nK8pi5hm7KShr3EHt310ZcpAumbq6gBfLJvmnsPFLj39 nPpJQyQj+gkkR11UpYm7dd9WxpLn7vE4NmXVZ+BYp+g2la+7ktg6YJQc7o3wKUZoWj8zSpXpknU ljQ85qSZYEe4EQPZQjQ== X-Proofpoint-GUID: l65oQ2I8eXaYg7Y6hQzvevICGBoj67Dg X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE0NSBTYWx0ZWRfXzfgdzOxMSl76 +IK5xAO8jiT4/4+pVYfEmKEUTdhvjpHbB6dj5tk0Ui7RzYkU8mJpdJh8FDevIhp5a9WguIGhuYO JtbLRETKqJbgw8CDNI26aIwsIqItjAQ= 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-08_02,2026-09-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 suspectscore=0 clxscore=1015 spamscore=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609080145 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: 1788874568179158500 Y2_tlbpp is mostly associated with the not-yet-implemented DMA engine. Let's decode it as unimpl for now. Signed-off-by: Brian Cain Reviewed-by: Marco Liebel --- target/hexagon/sys_macros.h | 3 +++ target/hexagon/attribs_def.h.inc | 1 + target/hexagon/tag_rev_info.c.inc | 2 ++ target/hexagon/imported/encode_pp.def | 1 + target/hexagon/imported/system.idef | 2 ++ 5 files changed, 9 insertions(+) diff --git a/target/hexagon/sys_macros.h b/target/hexagon/sys_macros.h index a49c72715dc..2e13ba00c8a 100644 --- a/target/hexagon/sys_macros.h +++ b/target/hexagon/sys_macros.h @@ -177,6 +177,9 @@ fTLB_NONPOW2WRAP(fTLB_IDXMASK(INDEX))) #define fTLBP(TLBHI) \ hex_tlb_lookup(env, ((TLBHI) >> 12), ((TLBHI) << 12)) +#define fTLBPP(TLBHI) ({ \ + qemu_log_mask(LOG_UNIMP, "tlbpp is not implemented\n"); \ + 0; }) #define iic_flush_cache(p) =20 #define fIN_DEBUG_MODE(TNUM) ({ \ diff --git a/target/hexagon/attribs_def.h.inc b/target/hexagon/attribs_def.= h.inc index 8b4eb27d682..5a98ea33139 100644 --- a/target/hexagon/attribs_def.h.inc +++ b/target/hexagon/attribs_def.h.inc @@ -25,6 +25,7 @@ DEF_ATTRIB(NA_NT, "Non-Allocating Non-Temporal instructio= n", "", "") =20 DEF_ATTRIB(PRIV, "Not available in user or guest mode", "", "") DEF_ATTRIB(GUEST, "Not available in user mode", "", "") +DEF_ATTRIB(TLBPP_INSN, "Extended (64-bit VA) TLB probe instruction", "", "= ") =20 DEF_ATTRIB(FPOP, "Floating Point Operation", "", "") =20 diff --git a/target/hexagon/tag_rev_info.c.inc b/target/hexagon/tag_rev_inf= o.c.inc index 48bdc52bfdb..68be8cbafb2 100644 --- a/target/hexagon/tag_rev_info.c.inc +++ b/target/hexagon/tag_rev_info.c.inc @@ -642,6 +642,8 @@ static const struct tag_rev_info tag_rev_info[XX_LAST_O= PCODE] =3D { [S2_storeri_pi_nt] =3D { .introduced =3D HEX_VER_V79, .removed =3D HEX= _VER_NONE }, [Y2_dcfetchbo_nt] =3D { .introduced =3D HEX_VER_V79, .removed =3D HEX_= VER_NONE }, [Y2_dczeroa_nt] =3D { .introduced =3D HEX_VER_V79, .removed =3D HEX_VE= R_NONE }, + + [Y2_tlbpp] =3D { .introduced =3D HEX_VER_V81, .removed =3D HEX_VER_NON= E }, }; =20 #endif /* HEXAGON_TAG_ARCH_TABLE_H */ diff --git a/target/hexagon/imported/encode_pp.def b/target/hexagon/importe= d/encode_pp.def index fca8f8aeb1a..4b307b97b30 100644 --- a/target/hexagon/imported/encode_pp.def +++ b/target/hexagon/imported/encode_pp.def @@ -890,6 +890,7 @@ DEF_ENC32(Y2_tlbunlock,ICLASS_CR" 1100 001----- PP-----= - 010-----") DEF_ENC32(Y2_k0lock, ICLASS_CR" 1100 001----- PP------ 011-----") DEF_ENC32(Y2_k0unlock, ICLASS_CR" 1100 001----- PP------ 100-----") DEF_ENC32(Y2_tlbp, ICLASS_CR" 1100 100sssss PP------ ---ddddd") +DEF_ENC32(Y2_tlbpp,"01101100011sssssPP---------ddddd") DEF_ENC32(Y5_tlboc, ICLASS_CR" 1100 111sssss PP------ ---ddddd") DEF_ENC32(Y5_tlbasidi, ICLASS_CR" 1100 101sssss PP------ --------") DEF_ENC32(Y2_tlbr, ICLASS_CR" 1100 010sssss PP------ ---ddddd") diff --git a/target/hexagon/imported/system.idef b/target/hexagon/imported/= system.idef index 6187ada5abb..a58da8f8269 100644 --- a/target/hexagon/imported/system.idef +++ b/target/hexagon/imported/system.idef @@ -118,6 +118,8 @@ Q6INSN(Y2_tlbr,"Rdd32=3Dtlbr(Rs32)", ATTRIBS(A_PRIV,A_N= OTE_PRIV,A_NOTE_NOPACKET,A_ =20 Q6INSN(Y2_tlbp,"Rd32=3Dtlbp(Rs32)", ATTRIBS(A_PRIV,A_NOTE_PRIV,A_NOTE_NOPA= CKET,A_RESTRICT_NOPACKET), "Probe TLB", {RdV=3DfTLBP(RsV);}) =20 +Q6INSN(Y2_tlbpp,"Rd32=3Dtlbp(Rss32)", ATTRIBS(A_PRIV,A_NOTE_PRIV,A_NOTE_NO= PACKET,A_RESTRICT_NOPACKET,A_TLBPP_INSN), "Probe TLB64", {RdV=3DfTLBPP(RssV= );}) + Q6INSN(Y5_tlbasidi,"tlbinvasid(Rs32)",ATTRIBS(A_PRIV,A_NOTE_PRIV,A_NOTE_NO= PACKET,A_RESTRICT_NOPACKET), "Invalidate ASID", { fHIDE(int i;) --=20 2.34.1 From nobody Sat Sep 26 20:01:33 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=1788874600; cv=none; d=zohomail.com; s=zohoarc; b=U53UaeyghetUqv7TK4eos011n/+mSiOPfknhFDQZaKQpZ9objuXX8ERkpD6IbSN54zlkBwA/p0flKXvC0vPjPYKVZv5bn+OwnnJbhtvV6fvVAujj54wtEeTzYe96z6YgXws/D+RLV393UC7Ip5UIkyaqK4uvIsl7y8oset0DbOY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788874600; 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=+KY3lWlM2zlAXHDubyk1nS3Xjyc7UWNUZupuFOC5YOY=; b=hW5KwdWAJpKUzXyXlFiLgl5PbT6hT6KvWbwsgeFlUzWzCrAiPaJnuorkoaaR3baRpSyuyRbFyYs3DWqFhIoL1SfKNkuR5tDoitxqQd1UYm0oFHD0GqLvXaLFvp9PHDHhRMyVyX5L5GCYlX3kNf8X46XQhwKL6bZEFOwGijVZ/3U= 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 178887460007024.503812119197164; Tue, 8 Sep 2026 06:36:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x3vzO-0004n3-99; Tue, 08 Sep 2026 09:35:54 -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 1x3vzL-0004kN-ME for qemu-devel@nongnu.org; Tue, 08 Sep 2026 09:35:51 -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 1x3vz2-0006Hd-K7 for qemu-devel@nongnu.org; Tue, 08 Sep 2026 09:35:51 -0400 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 688CkfEv1807599 for ; Tue, 8 Sep 2026 13:35:29 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 4gjcrp9qu1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 08 Sep 2026 13:35:28 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38e8e864ef0so7851762a91.0 for ; Tue, 08 Sep 2026 06:35:28 -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-334fbd5e6f6sm29029079eec.23.2026.09.08.06.35.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 06:35:23 -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= +KY3lWlM2zlAXHDubyk1nS3Xjyc7UWNUZupuFOC5YOY=; b=egjFhrdIkUzFwdT2 YIk/yNdI3Kv77RwgEpDuySsV8kfN9UtEFGbczH1lIg0VLZo39z5aPkVxoenowSFF yfIiNGQUPm3LGAKTg2I0mYnKpqE1mqURVAmtRKTMYX7YKe5ubnvjbcdLCmkxXHUM 4262XGdovDm8j83ICOP7dHKn9RxA19bU4bagl0isC+u9pe/YmlhVuADDmj1dgxGK oeCSXQiKVYzfvPFFPr8+jBaj32Kt/J7FfG683qKIpCP6uL9LnLzcxzx5WTon+fzb PieS4xqo4AbY60vRuNi+4ZTcmtHX/up1JachgsAVN+T5roi8iBZgfqE4C8zFfUKL dih05w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788874527; x=1789479327; 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=+KY3lWlM2zlAXHDubyk1nS3Xjyc7UWNUZupuFOC5YOY=; b=eksEFO+RLUBd0cLSSTtAcebBouW2DOgfOZytoFio0WyQNlf23P0Yz3Ms3/Ic0q9HtZ 6EyxCQI8+JHcL4u0HWJPrdCpD1fFeyVVNDSQJJkg2UT3nmfqPgE23XYfz+EW11PGKIMv j5f2b+5HrjdzVzo/ttMmC/qPgotLLu7TZdTbLbRCfaJ77srczX0QheE5BWbtJBeGCX7W dMBokkBWyT2jaXIR5zM4CRPBUhAJecQkajqf7IGO5W0Q1DDJPsqGV59h3UV+KZStu/3G CKlWdghs3sm2sJyIcjaw7/pGT/OJ7HH/AM8h8wO2g8CMfjRDGZbD5dELxW1KiuKQ7L5u HBow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788874527; x=1789479327; 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=+KY3lWlM2zlAXHDubyk1nS3Xjyc7UWNUZupuFOC5YOY=; b=BoIXjD7KdAAnLwOb0U9a8k6RXnqHgT8RUw+MlGFJo/UEnqzzLzCnygDBMc2hdkI9/x vJX/NlbuIty3tf9nayzX6Iob3zS/ypvk/0WlWOsIHXPGUq5ae78D1IDUuYLmG0dtTZEm dUpXQ0sTuAWp0Mz8vlr0p88C0zSzTXoHn2NYMt60o8z/oQCJh3gzQ8SWhdsS8XzWhQmE CCG14Uzov25q9goRS3bGv9gZSAa+PzY3er/wIj5Jh28Z40QWjCuFczpwEg9SGKkF5gK/ j7kVVccvpm5LsgEbZR6oAcYFLiu0WuftMXkcKvcndNlt/kDZaiRKROXNcFf+QQ3mApBC GeWA== X-Gm-Message-State: AFuF++kEX/OfKEjfZbtNnz3BPicg+Kt8/ZYmcICbvx9GJM3Jh8MXFWA4 VZz/o63JiI7HBp0nTF8u49gKi11KIQDxuSYr/eTiJSpe2z1sSFLf4MAFmIIEsaZU2DR3N9q+PHM F/rvXbJsWu4OYKTdsWLSzAjcNzIDHhAPsEhnciKS+IHA/qHI5T6URRFN0csMN6o6OBg== X-Gm-Gg: AYBFou0a+YBWh7tLe805wiZQB2zjSgKwcOxQBZRv1n6AIpC+6LGhoHcfxtZgFGCOdp3 9h1icvbpUOE+yA+67/K+oV4oq1sxEzqoZNZsjwYfAZsNY8UdfClbrwnWQyjF+8uvIIXZmtbb2mg SHiEoV5XC2xM0XZiXxFEQ8PMnhFK0P4rCgzgQI1gmzHGdl8cGIE9Xq8vMTJvWs4D+LvwhDLkaIe ytxedbnD4HM2gelviDB/wI9g9GRrhlPE35icM5bOhY2T3HeCBVv/ntq32NMoFdk3QzY1wzIszkR bV3CpfB5Va3yinDldznN6lUB0d0aFl1JaDiQe3YAaDSMs9E/U2JoZl5CACER5egJICPHsrkf6HJ nUagLPEjtmIcOpa3MW2rNn72jmJ6G0SAZ1vcC8GS3K3xsOLmJ X-Received: by 2002:a17:90b:3b88:b0:398:dcfe:968e with SMTP id 98e67ed59e1d1-39b261da746mr42122938a91.20.1788874527045; Tue, 08 Sep 2026 06:35:27 -0700 (PDT) X-Received: by 2002:a17:90b:3b88:b0:398:dcfe:968e with SMTP id 98e67ed59e1d1-39b261da746mr42122787a91.20.1788874526377; Tue, 08 Sep 2026 06:35:26 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Brian Cain , Laurent Vivier , Helge Deller , Pierrick Bouvier , marco.liebel@oss.qualcomm.com Subject: [PATCH 5/5] hw/hexagon: add the V81DGB_1 and V81QA_1 machines Date: Tue, 8 Sep 2026 06:35:11 -0700 Message-Id: <20260908133512.2353957-6-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260908133512.2353957-1-brian.cain@oss.qualcomm.com> References: <20260908133512.2353957-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=UfRhjqSN c=1 sm=1 tr=0 ts=6aa00f20 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=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=j0v4eB861mgIxmVUtugA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-ORIG-GUID: L56xs5xeT61Q0lKrWYI28HEz-N8BpolL X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA4MDE0NSBTYWx0ZWRfX2sfoBl0F44XM t6GgL1Gze8axgEzX78+OpkUota0V8SocJsqKfgZGcdslhyfHOy9D1V80DfSPZZ+EcTcrNInf0zW VFwKDAfR6p059eU2g4iAolfBf9UGn0uWJZD7RG33rR/PLpEk6EW7CqLb49h9X1izmKifi4j/C8X E/8hS/VfftykhNgyBgFW7CWQfVjCLXe+uTbgUdOgdunM4/f3Uys++ThxF3Qn9frxWo047ZLs9Wf 66ShWA5e398iXpRNqR7Mc3vhTPME6SvbpZ/6blNFnd+CBD/oOQmoxdp276brSDBFLUuVJdEepR2 bmCnJpRogdlRh89FehkYa5PVoID9kaL6icJtos5ycHPc5aGh3naxJYYKzmDMTw7AfnOG3oAYLjs eUdXpwh2NaFFo68YLqJ68eWXRj6EkNliq3lfnW6663i+MS48S8doHobwNh0V7Xo8lRP+dUNWI7J CosvO5Urqe/72cbENIg== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA4MDE0NSBTYWx0ZWRfX0kbYk29tTUCr Zz34zvBdSTVhE17D35Q0yqCKgcsbVN8EY+PvN9P8KdWkpj7Tl8sf8N2pV/ztp3BTgdunK4YwgQL u6un7+mT9hHe0bSUquf7tT2OtXXWxl8= X-Proofpoint-GUID: L56xs5xeT61Q0lKrWYI28HEz-N8BpolL 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-08_02,2026-09-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 adultscore=0 clxscore=1015 phishscore=0 suspectscore=0 spamscore=0 bulkscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609080145 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: 1788874602187158500 Add these new machines that correspond to the hexagon-sim machine types. Signed-off-by: Brian Cain --- include/hw/hexagon/hexagon.h | 11 ++++ target/hexagon/cpu.h | 2 +- hw/hexagon/machine_cfg_v81dgb_1.h.inc | 73 +++++++++++++++++++++++++++ hw/hexagon/machine_cfg_v81qa_1.h.inc | 73 +++++++++++++++++++++++++++ hw/hexagon/hexagon_dsp.c | 46 +++++++++++++++++ 5 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 hw/hexagon/machine_cfg_v81dgb_1.h.inc create mode 100644 hw/hexagon/machine_cfg_v81qa_1.h.inc diff --git a/include/hw/hexagon/hexagon.h b/include/hw/hexagon/hexagon.h index 3d7b3cb12dc..62398eeb359 100644 --- a/include/hw/hexagon/hexagon.h +++ b/include/hw/hexagon/hexagon.h @@ -27,6 +27,8 @@ typedef enum { v71_rev =3D 0x8c71, v73_rev =3D 0x8c73, v73m_rev =3D 0xcc73, + v81_rev =3D 0x8781, + v81dgb_1_rev =3D 0xcc81, } Rev_t; #define HEXAGON_LATEST_REV v73 #define HEXAGON_LATEST_REV_UPPER V73 @@ -129,6 +131,15 @@ union hexagon_config_table { uint32_t corecfg_present; uint32_t coproc2_fp16_acc_exp; uint32_t AXIM2_secondary_base; + uint32_t AXIM_data_width; + /* Number of L1 data cache ways */ + uint32_t l1d_ways; + /* Number of L1 instruction cache ways */ + uint32_t l1i_ways; + /* Number of L2 cache ways */ + uint32_t l2way_num; + /* Number of DMA JTLB entries */ + uint32_t dma_jtlb_entries; }; uint32_t raw[HEXAGON_CFGSPACE_ENTRIES]; }; diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index 8a4a81dc26c..719979d6c31 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -50,7 +50,7 @@ typedef struct HexagonGlobalRegState HexagonGlobalRegStat= e; #define PRED_WRITES_MAX 5 /* 4 insns + endloop */ #define VSTORES_MAX 2 #define MAX_TLB_ENTRIES 1024 -#define THREADS_MAX 8 +#define THREADS_MAX 16 =20 #define CPU_RESOLVING_TYPE TYPE_HEXAGON_CPU #ifndef CONFIG_USER_ONLY diff --git a/hw/hexagon/machine_cfg_v81dgb_1.h.inc b/hw/hexagon/machine_cfg= _v81dgb_1.h.inc new file mode 100644 index 00000000000..c7d9e7e1927 --- /dev/null +++ b/hw/hexagon/machine_cfg_v81dgb_1.h.inc @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +static const struct hexagon_machine_config v81dgb_1 =3D { + .cfgbase =3D 0xd8380000, + .l2tcm_size =3D 0x00000000, + .l2vic_base =3D 0xfc910000, + .l2vic_size =3D 0x00001000, + .csr_base =3D 0xfc900000, + .qtmr_region =3D 0xfc921000, + .cfgtable =3D { + .l2tcm_base =3D 0x0000d800, + .reserved0 =3D 0x00000000, + .subsystem_base =3D 0x0000fc90, + .etm_base =3D 0x0000d839, + .l2cfg_base =3D 0x0000d83a, + .reserved1 =3D 0x0000d83b, + .l1s0_base =3D 0x0000d840, + .axi2_lowaddr =3D 0x00000000, + .streamer_base =3D 0x00000000, + .reserved2 =3D 0x00000000, + .fastl2vic_base =3D 0x0000d83e, + .jtlb_size_entries =3D 0x000000c0, + .coproc_present =3D 0x00000005, + .ext_contexts =3D 0x00000004, + .vtcm_base =3D 0x0000d840, + .vtcm_size_kb =3D 0x00000800, + .l2tag_size =3D 0x00000800, + .l2ecomem_size =3D 0x00000800, + .thread_enable_mask =3D 0x00000fff, + .eccreg_base =3D 0x00000000, + .l2line_size =3D 0x00000080, + .tiny_core =3D 0x00000000, + .l2itcm_size =3D 0x00000000, + .l2itcm_base =3D 0x0000d800, + .reserved3 =3D 0x00000000, + .dtm_present =3D 0x00000000, + .dma_version =3D 0x00000000, + .hvx_vec_log_length =3D 0x00000007, + .core_id =3D 0x00000000, + .core_count =3D 0x00000000, + .coproc2_reg0 =3D 0x00000001, + .coproc2_reg1 =3D 0x00000000, + .v2x_mode =3D 0x00000000, + .coproc2_reg2 =3D 0x00000000, + .coproc2_reg3 =3D 0x00000000, + .coproc2_reg4 =3D 0x00000000, + .coproc2_reg5 =3D 0x00000000, + .coproc2_reg6 =3D 0x00000000, + .coproc2_reg7 =3D 0x00000000, + .acd_preset =3D 0x00000000, + .mnd_preset =3D 0x00000000, + .l1d_size_kb =3D 0x00000040, + .l1i_size_kb =3D 0x00000040, + .l1d_write_policy =3D 0x00000002, + .vtcm_bank_width =3D 0x00000080, + .reserved4 =3D 0x00000000, + .reserved5 =3D 0x00000000, + .reserved6 =3D 0x00000000, + .coproc2_cvt_mpy_size =3D 0x00000000, + .consistency_domain =3D 0x000000e0, + .capacity_domain =3D 0x00000080, + .axi3_lowaddr =3D 0x00004000, + .coproc2_int8_subcolumns =3D 0x00000000, + .corecfg_present =3D 0x0000000d, + .coproc2_fp16_acc_exp =3D 0x00000000, + .AXIM2_secondary_base =3D 0x00000000, + .AXIM_data_width =3D 0x00000000, + .l1d_ways =3D 0x00000008, + .l1i_ways =3D 0x00000004, + .l2way_num =3D 0x00000008, + .dma_jtlb_entries =3D 0x00000040, + }, +}; diff --git a/hw/hexagon/machine_cfg_v81qa_1.h.inc b/hw/hexagon/machine_cfg_= v81qa_1.h.inc new file mode 100644 index 00000000000..8fb9bcb174c --- /dev/null +++ b/hw/hexagon/machine_cfg_v81qa_1.h.inc @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +static const struct hexagon_machine_config v81qa_1 =3D { + .cfgbase =3D 0xd8380000, + .l2tcm_size =3D 0x00000000, + .l2vic_base =3D 0xfc910000, + .l2vic_size =3D 0x00001000, + .csr_base =3D 0xfc900000, + .qtmr_region =3D 0xfc921000, + .cfgtable =3D { + .l2tcm_base =3D 0x0000d800, + .reserved0 =3D 0x00000000, + .subsystem_base =3D 0x00002000, + .etm_base =3D 0x0000d819, + .l2cfg_base =3D 0x0000d81a, + .reserved1 =3D 0x0000d81b, + .l1s0_base =3D 0x0000d900, + .axi2_lowaddr =3D 0x00000000, + .streamer_base =3D 0x00000000, + .reserved2 =3D 0x00000000, + .fastl2vic_base =3D 0x0000d81e, + .jtlb_size_entries =3D 0x00000080, + .coproc_present =3D 0x0000000d, + .ext_contexts =3D 0x00000008, + .vtcm_base =3D 0x0000d900, + .vtcm_size_kb =3D 0x00004000, + .l2tag_size =3D 0x00000400, + .l2ecomem_size =3D 0x00000400, + .thread_enable_mask =3D 0x00000fff, + .eccreg_base =3D 0x0000d81f, + .l2line_size =3D 0x00000080, + .tiny_core =3D 0x00000000, + .l2itcm_size =3D 0x00000000, + .l2itcm_base =3D 0x0000d800, + .reserved3 =3D 0x00000000, + .dtm_present =3D 0x00000000, + .dma_version =3D 0x00000008, + .hvx_vec_log_length =3D 0x00000007, + .core_id =3D 0x00000000, + .core_count =3D 0x00000000, + .coproc2_reg0 =3D 0x00000010, + .coproc2_reg1 =3D 0x00000008, + .v2x_mode =3D 0x00000001, + .coproc2_reg2 =3D 0x00000000, + .coproc2_reg3 =3D 0x00000000, + .coproc2_reg4 =3D 0x00000000, + .coproc2_reg5 =3D 0x00000000, + .coproc2_reg6 =3D 0x00000000, + .coproc2_reg7 =3D 0x00000000, + .acd_preset =3D 0x00000001, + .mnd_preset =3D 0x00000001, + .l1d_size_kb =3D 0x00000040, + .l1i_size_kb =3D 0x00000040, + .l1d_write_policy =3D 0x00000002, + .vtcm_bank_width =3D 0x00000080, + .reserved4 =3D 0x00000001, + .reserved5 =3D 0x00000000, + .reserved6 =3D 0x00000000, + .coproc2_cvt_mpy_size =3D 0x00000000, + .consistency_domain =3D 0x000000e0, + .capacity_domain =3D 0x00000080, + .axi3_lowaddr =3D 0x00004000, + .coproc2_int8_subcolumns =3D 0x00000000, + .corecfg_present =3D 0x0000000d, + .coproc2_fp16_acc_exp =3D 0x00000001, + .AXIM2_secondary_base =3D 0x00000000, + .AXIM_data_width =3D 0x00000100, + .l1d_ways =3D 0x00000008, + .l1i_ways =3D 0x00000004, + .l2way_num =3D 0x00000008, + .dma_jtlb_entries =3D 0x00000040, + }, +}; diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c index ff110234b09..be17a32ee12 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -30,6 +30,8 @@ =20 #include "machine_cfg_v66g_1024.h.inc" #include "machine_cfg_v68n_1024.h.inc" +#include "machine_cfg_v81dgb_1.h.inc" +#include "machine_cfg_v81qa_1.h.inc" =20 #define TYPE_HEXAGON_DSP_MACHINE "hexagon-dsp-machine" OBJECT_DECLARE_SIMPLE_TYPE(HexagonDspMachineState, HEXAGON_DSP_MACHINE) @@ -199,6 +201,40 @@ static void v68n_1024_init(ObjectClass *oc, const void= *data) mc->default_cpus =3D 6; } =20 +static void v81dgb_1_config_init(MachineState *machine) +{ + hexagon_common_init(machine, v81dgb_1_rev, &v81dgb_1); +} + +static void v81dgb_1_init(ObjectClass *oc, const void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + + mc->desc =3D "Hexagon V81DGB_1"; + mc->init =3D v81dgb_1_config_init; + init_mc(mc); + mc->default_cpu_type =3D TYPE_HEXAGON_CPU_V81; + mc->max_cpus =3D 12; + mc->default_cpus =3D 12; +} + +static void v81qa_1_config_init(MachineState *machine) +{ + hexagon_common_init(machine, v81_rev, &v81qa_1); +} + +static void v81qa_1_init(ObjectClass *oc, const void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + + mc->desc =3D "Hexagon V81QA_1"; + mc->init =3D v81qa_1_config_init; + init_mc(mc); + mc->default_cpu_type =3D TYPE_HEXAGON_CPU_V81; + mc->max_cpus =3D 12; + mc->default_cpus =3D 12; +} + static const TypeInfo hexagon_machine_types[] =3D { { .name =3D TYPE_HEXAGON_COMMON_MACHINE, @@ -222,6 +258,16 @@ static const TypeInfo hexagon_machine_types[] =3D { .parent =3D TYPE_HEXAGON_DSP_MACHINE, .class_init =3D v68n_1024_init, }, + { + .name =3D MACHINE_TYPE_NAME("V81DGB_1"), + .parent =3D TYPE_HEXAGON_DSP_MACHINE, + .class_init =3D v81dgb_1_init, + }, + { + .name =3D MACHINE_TYPE_NAME("V81QA_1"), + .parent =3D TYPE_HEXAGON_DSP_MACHINE, + .class_init =3D v81qa_1_init, + }, }; =20 DEFINE_TYPES(hexagon_machine_types) --=20 2.34.1