[{"id":3680574,"web_url":"http://patchwork.ozlabs.org/comment/3680574/","msgid":"<336c0c4b-af67-4cb8-91f3-704348124f55@oss.qualcomm.com>","list_archive_url":null,"date":"2026-04-22T11:52:15","subject":"Re: [PATCH 01/14] target/riscv: rvp: Add option defines and\n dependency check for packed simd extension","submitter":{"id":92288,"url":"http://patchwork.ozlabs.org/api/people/92288/","name":"Daniel Henrique Barboza","email":"daniel.barboza@oss.qualcomm.com"},"content":"On 4/17/2026 7:46 AM, Molly Chen wrote:\n> Co-Authored by: Yin Zhang <zhangyin2018@iscas.ac.cn>\n> Co-Authored by: Dajun Huang <djhuang_1@std.uestc.edu.cn>\n> Co-Authored by: Zhiyuan Yang <zhiyuan.plct@isrc.iscas.ac.cn>\n> \n> Signed-off-by: Molly Chen <xiaoou@iscas.ac.cn>\n> ---\n>   target/riscv/cpu.c         |  5 +++--\n>   target/riscv/cpu.h         |  1 +\n>   target/riscv/tcg/tcg-cpu.c | 16 ++++++++++++++++\n>   3 files changed, 20 insertions(+), 2 deletions(-)\n> \n> diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c\n> index 72c6f4f0f1..c630faa892 100644\n> --- a/target/riscv/cpu.c\n> +++ b/target/riscv/cpu.c\n> @@ -41,7 +41,7 @@\n>   /* RISC-V CPU definitions */\n>   static const char riscv_single_letter_exts[] = \"IEMAFDQCBPVH\";\n>   const uint32_t misa_bits[] = {RVI, RVE, RVM, RVA, RVF, RVD, RVV,\n> -                              RVC, RVS, RVU, RVH, RVG, RVB, 0};\n> +                              RVC, RVS, RVU, RVH, RVG, RVB, RVP, 0};\n>   \n>   /*\n>    * From vector_helper.c\n> @@ -1172,7 +1172,8 @@ static const MISAExtInfo misa_ext_info_arr[] = {\n>       MISA_EXT_INFO(RVH, \"h\", \"Hypervisor\"),\n>       MISA_EXT_INFO(RVV, \"v\", \"Vector operations\"),\n>       MISA_EXT_INFO(RVG, \"g\", \"General purpose (IMAFD_Zicsr_Zifencei)\"),\n> -    MISA_EXT_INFO(RVB, \"b\", \"Bit manipulation (Zba_Zbb_Zbs)\")\n> +    MISA_EXT_INFO(RVB, \"b\", \"Bit manipulation (Zba_Zbb_Zbs)\"),\n> +    MISA_EXT_INFO(RVP, \"x-p\", \"Packed-SIMD instructions\")\n>   };\n>   \n>   static void riscv_cpu_validate_misa_mxl(RISCVCPUClass *mcc)\n> diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h\n> index 4c0676ed53..e08f57d282 100644\n> --- a/target/riscv/cpu.h\n> +++ b/target/riscv/cpu.h\n> @@ -69,6 +69,7 @@ typedef struct CPUArchState CPURISCVState;\n>   #define RVH RV('H')\n>   #define RVG RV('G')\n>   #define RVB RV('B')\n> +#define RVP RV('P')\n>   \n>   extern const uint32_t misa_bits[];\n>   const char *riscv_get_misa_ext_name(uint32_t bit);\n> diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c\n> index f3f7808895..4545ae721c 100644\n> --- a/target/riscv/tcg/tcg-cpu.c\n> +++ b/target/riscv/tcg/tcg-cpu.c\n> @@ -601,6 +601,11 @@ static void riscv_cpu_validate_b(RISCVCPU *cpu)\n>       }\n>   }\n>   \n> +static void riscv_cpu_validate_p(RISCVCPU *cpu)\n> +{\n> +    /* Enable sub-extensions here. Do nothing for now. */\n> +}\n\nTo enable sub-extensions/dependencies we have implicit/implied rules\n(e.g. RVA_IMPLIED in target/riscv/cpu.c).  I believe we should also use\nthis logic here when the time comes.\n\nUsually we use 'validate' functions to assert if the preconditions are met, so\nbasically what you ended up doing down there:\n\n\n > +    if (riscv_has_ext(env, RVP) &&\n > +        !(cpu->cfg.ext_zba && cpu->cfg.ext_zbb && cpu->cfg.ext_zbkb)) {\n > +        error_setg(errp, \"P extension requires zba, zbb and zbkb extensions\");\n > +        return;\n > +    }\n > +\n\n\nI believe this piece of code should be put in riscv_cpu_validate_p().\n\n\nThe rest LGTM.  Thanks,\nDaniel\n\n> +\n>   /*\n>    * Check consistency between chosen extensions while setting\n>    * cpu->cfg accordingly.\n> @@ -619,6 +624,10 @@ void riscv_cpu_validate_set_extensions(RISCVCPU *cpu, Error **errp)\n>           riscv_cpu_validate_b(cpu);\n>       }\n>   \n> +    if (riscv_has_ext(env, RVP)) {\n> +        riscv_cpu_validate_p(cpu);\n> +    }\n> +\n>       if (riscv_has_ext(env, RVI) && riscv_has_ext(env, RVE)) {\n>           error_setg(errp,\n>                      \"I and E extensions are incompatible\");\n> @@ -683,6 +692,12 @@ void riscv_cpu_validate_set_extensions(RISCVCPU *cpu, Error **errp)\n>           return;\n>       }\n>   \n> +    if (riscv_has_ext(env, RVP) &&\n> +        !(cpu->cfg.ext_zba && cpu->cfg.ext_zbb && cpu->cfg.ext_zbkb)) {\n> +        error_setg(errp, \"P extension requires zba, zbb and zbkb extensions\");\n> +        return;\n> +    }\n> +\n>       riscv_cpu_validate_v(env, &cpu->cfg, &local_err);\n>       if (local_err != NULL) {\n>           error_propagate(errp, local_err);\n> @@ -1413,6 +1428,7 @@ static const RISCVCPUMisaExtConfig misa_ext_cfgs[] = {\n>       MISA_CFG(RVV, false),\n>       MISA_CFG(RVG, false),\n>       MISA_CFG(RVB, false),\n> +    MISA_CFG(RVP, false),\n>   };\n>   \n>   /*","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=S0950d8I;\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=Ot85HlsB;\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 4g0yKf49y9z1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 21:53:25 +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 1wFW84-00085Q-GM; Wed, 22 Apr 2026 07:52:28 -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 <daniel.barboza@oss.qualcomm.com>)\n id 1wFW83-00084E-22\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 07:52:27 -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 <daniel.barboza@oss.qualcomm.com>)\n id 1wFW80-0005gx-VR\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 07:52:26 -0400","from pps.filterd (m0279865.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63MAPVVf3083117\n for <qemu-devel@nongnu.org>; Wed, 22 Apr 2026 11:52:21 GMT","from mail-qt1-f199.google.com (mail-qt1-f199.google.com\n [209.85.160.199])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dpenmkb74-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <qemu-devel@nongnu.org>; Wed, 22 Apr 2026 11:52:21 +0000 (GMT)","by mail-qt1-f199.google.com with SMTP id\n d75a77b69052e-50fb3403e99so57635731cf.2\n for <qemu-devel@nongnu.org>; Wed, 22 Apr 2026 04:52:20 -0700 (PDT)","from [192.168.68.106] ([191.202.238.222])\n by smtp.gmail.com with ESMTPSA id\n d75a77b69052e-50e61c191basm81751681cf.16.2026.04.22.04.52.17\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Wed, 22 Apr 2026 04:52:18 -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 UDnkEPs5ef2lkkOX2LfjaiKUh/950FCFZiphMEfvF3E=; b=S0950d8IHZOOfdT5\n 8IYSz3uoyv/AJEKwB4fMAddDiU0G70kT60k1o0qlNwX39ns+PhJPbL/inf+/LtgX\n JTNipCVm+vSWEMCc3p/u/RXToKx1HCgDqPpAzjhNOWeWqc0InUyAYhDZjfjn1s3G\n lc71bX693KA96esj3cDwPFa64K0V8VJg6aV38wH4DEZBgPZpzkXbWVTvmy3DUXmK\n Op+eRUamoXusZFdKuZXqRprsZqK8AOBg2MFIm7P5deXmO9Ir0Y7R54WYyrpePRmG\n ZPP06wnPJ8p5h2EvoRn3HF8IXZUOkxsgESssi7BcFi/WgJktWD5gDKfnjSWdpain\n 22PfBw==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1776858740; x=1777463540; darn=nongnu.org;\n h=content-transfer-encoding:in-reply-to:content-language:from\n :references:cc:to:subject:user-agent:mime-version:date:message-id\n :from:to:cc:subject:date:message-id:reply-to;\n bh=UDnkEPs5ef2lkkOX2LfjaiKUh/950FCFZiphMEfvF3E=;\n b=Ot85HlsBdNInFG4ydlc01xPSF8gik/r3A7PrDyOZ20FKgttu8zgy70athpgRlVTusF\n KW+VYISKEEuwff6wdBgFg0boLDhL8LPNELJ9KKJXu7K5OQQCUsoHqFBIxD/c9cTirZyM\n tGNpFljWx3srmomqIwKdUMWew4DYwrONPvo6ZSnjoWxsDoudhsqgXEvuNJZhEy8Bm+6y\n H+7rulfoJ5YAMoL6JXTap1x7hzRIHMW5GcssbyEota5G+tk1wlsumdNpPznu5f87RNln\n LHu8W6pYYJVp4V5RPv+oCjyjaMyWGlDnLOuCUj8ycssNWsrfyZs2XhpEfcjCRHcC3BVI\n +l1A=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776858740; x=1777463540;\n h=content-transfer-encoding:in-reply-to:content-language:from\n :references:cc:to:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=UDnkEPs5ef2lkkOX2LfjaiKUh/950FCFZiphMEfvF3E=;\n b=YYxQbMmoyHZRLl7H6elJlPttJ4M9Q5BewaWafd1wDLY69nJPDgtvdv/M/5iW3y4AuH\n gU/7pAisepV2VwMHcX29FlnKeP0Qc/I9dvVCKkj3lKrtG7K3vmTsvPWB6llqFHz/GtEQ\n px3AIiPMkQMYp6Rfesvvj3nhJgUilEfafoekJmo9Y898Pevm9rDJv1cP7uvaILjzXcTb\n vSnYAoSlXIvuuZ8hmruBmCdDRBgYZ4TtWbcx0bK+LxBDFvOn1AcO8wI4zUhmdqg0dDWQ\n Q2QbxSPvOdWKRDqgC1V8ucRH8S00jQrr2SR1ogWKmYFmhuTi7cgD95OS7/sZlJDNd25o\n 5+6Q==","X-Forwarded-Encrypted":"i=1;\n AFNElJ8X11slbO9lyN4da+zB9hikI+IZGnDbbj9+29Bt7N7w+QKgDhWnKEXB8G4/B69zdwdZz8i2v9asw2sb@nongnu.org","X-Gm-Message-State":"AOJu0YwaxfC6+p1VkX7oS3vZfo+4tCSLEPr/q1ZE8cMwFR54okLEmne1\n +PhqUidY6ok+YbKgY4tm0sSwTlQD/HYLStlwYybMCUZgjrtY269+LdY5tAbXc5J9+B/peg5wPcO\n zCFk3IHQDKyhRxVHoAAlOK8QX1EOadmawhdZdnWLJrf/G5Tp+zlYdmfsPcA==","X-Gm-Gg":"AeBDiesuU5ze2xgwZ+8Y7EAdrEH/BObvTziZ4wznX94jBLE1QIOqZ6p5Cv/MFkUxqE/\n C7w3kZxjV7THIuq+XRWummYlLsMtEvDmPHTe1ZUshEFviQ+cNiEzeCYNwTNZtniRcYwnhIh8WjL\n RPtb9xScTDp7d9P6qwOWe3efgQzjuqWVoQAB/MPjYP96689bG7srjnjvriv/HDxIxBMwsAUt6Z0\n eABohqCSozNJ5xft4I1nS/I3x+SroapctDX8h9ksPi816CyN3Cik5bzvii/ZR8Fs9kxYwotMbWE\n pxgqn+MfMzNcSDA+aSJPXPkUCNpuilwQeKJIJcvOPJrTGSJUdDYdbDXlNPyOQKCB4SNPba+wowr\n 2tTKK7991O118LH0T0xEbezoXq7IDaWiB7JPwnqoPa4dmstUvBq4O0w2jDPIcdSJwSicDSA==","X-Received":["by 2002:a05:622a:4d47:b0:50b:a9d3:2e20 with SMTP id\n d75a77b69052e-50e36c65b22mr338492651cf.49.1776858739935;\n Wed, 22 Apr 2026 04:52:19 -0700 (PDT)","by 2002:a05:622a:4d47:b0:50b:a9d3:2e20 with SMTP id\n d75a77b69052e-50e36c65b22mr338492141cf.49.1776858739421;\n Wed, 22 Apr 2026 04:52:19 -0700 (PDT)"],"Message-ID":"<336c0c4b-af67-4cb8-91f3-704348124f55@oss.qualcomm.com>","Date":"Wed, 22 Apr 2026 08:52:15 -0300","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 01/14] target/riscv: rvp: Add option defines and\n dependency check for packed simd extension","To":"Molly Chen <xiaoou@iscas.ac.cn>, palmer@dabbelt.com,\n alistair.francis@wdc.com, liwei1518@gmail.com,\n zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com","Cc":"qemu-riscv@nongnu.org, qemu-devel@nongnu.org","References":"<20260417104652.17857-1-xiaoou@iscas.ac.cn>\n <20260417104652.17857-2-xiaoou@iscas.ac.cn>","From":"Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>","Content-Language":"en-US","In-Reply-To":"<20260417104652.17857-2-xiaoou@iscas.ac.cn>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-Proofpoint-GUID":"mJqxElH_YfhA2e0YBAgdty0xKDchprsd","X-Proofpoint-ORIG-GUID":"mJqxElH_YfhA2e0YBAgdty0xKDchprsd","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDIyMDExNCBTYWx0ZWRfX64OMJjjbNEnA\n dgwqxa420gN9Trnk+z22Ja6hnO92cluVc2rt6UckrTgnapQELCSqaCy4RblJoowd3TExtlouxSq\n 5grn4Zp9ehaN2TLyrC+i2y+f9ApxNjjGl8WKAFTFj7sElPK9XKmeNJ8ufZER10skAZLNAx1rMby\n j8XMyVaK426E4/Nv3r14T3pCOL4VrNswS3gCrqKbY0u+/mDmmpdzaTvAR/57tau55tK7Fp1eUNj\n nBR2Wq1RqmgPtnTD5t60AfAhNzqvSNZs52a3TtQxWiw/EmfZOIhadhxmG50yhDahABmeCwrkA97\n 11SNWIMXUSGrHTOuY+s9uPOju5x8BCR0euRgNzDdeWkQS0V82OGSGMVFuAL7xYNT8Qu7d8RxK3X\n oJ93BkVyYaq9TL36Nf7tWE6fzao9kNhWf2AsQWqqZ2p6ND844U4mWZku8GHmf0Nh6s0Ety0M/kU\n RE7ASGJQCOrKQRGY54Q==","X-Authority-Analysis":"v=2.4 cv=Xd65Co55 c=1 sm=1 tr=0 ts=69e8b675 cx=c_pps\n a=WeENfcodrlLV9YRTxbY/uA==:117 a=etEqFfc6qwXwpI8uT8rzbw==:17\n a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22\n a=AjF4YrJ7RAsneCX4kmAA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22","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-22_01,2026-04-21_02,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n spamscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0\n priorityscore=1501 phishscore=0 bulkscore=0 malwarescore=0 clxscore=1015\n adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000\n definitions=main-2604220114","Received-SPF":"pass client-ip=205.220.168.131;\n envelope-from=daniel.barboza@oss.qualcomm.com;\n 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"}}]