From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by sourceware.org (Postfix) with ESMTPS id 54F593857354 for ; Wed, 20 Apr 2022 12:59:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 54F593857354 Received: by mail-ed1-x52c.google.com with SMTP id z12so2197096edl.2 for ; Wed, 20 Apr 2022 05:59:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=O+nQmYnzY0KyG91S+nIw1eTSX/eJegoSoWGFtaHrrIQ=; b=PCrBHM9u1h2GMVXWf8rnrkYNDeCDzTGGxqLT8qYXxhNEDnBUVBBUK8kSBhPNJTjWQr lG4G63LrprMqoKpBfF5PfcVzP44Qp19lm80q7Efixj1ZS2amI+etSMiSvBDlk4HWYuP7 NwoyxN3RsaJU8jxExTl3rAdEFWXLFYV14laTr3y8+2p/uSi3juRgvT1m4SnymTNlAT8E 0isKli++cKppwSwJelsEJ9r0JQDX/c718neOThJ0+xX7fs0gm0v7sN/GAV26rqF9bc94 p6wuPxwB7NYQ6bnU20tsu9gkRCyt06Hbs2kC5o3yaoRrhAaoLXD/p/Tf9B/suibDxK5l UlWg== X-Gm-Message-State: AOAM532VN8sMtFQRfSclY5z1VvAEGIUo2qiz9njORs7QB1Z24gxv6axb J+TSbyKc7FRR6WerHKv8Zt4FUL72Em6uIxeXv64= X-Google-Smtp-Source: ABdhPJyrv5+60LQc7u34wr8WEY/k5SKkgFETQ/bNC5rPPLdOWit0JryGk15n3fjtLNN96lZaj36dMuaykOd4P+Kkv74= X-Received: by 2002:aa7:d047:0:b0:41d:57cf:d588 with SMTP id n7-20020aa7d047000000b0041d57cfd588mr22857245edo.172.1650459564896; Wed, 20 Apr 2022 05:59:24 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Kito Cheng Date: Wed, 20 Apr 2022 20:59:13 +0800 Message-ID: Subject: Re: [PATCH] RISCV: Add T-Head Cache Instructions To: C-SKY , Jojo R Cc: Nelson Chu , Palmer Dabbelt , "Patrick O'Neill" , Binutils , Lifang Xia , Christoph Muellner Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-8.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Apr 2022 12:59:29 -0000 Hi Li-Fang, Jojo: That might be burden of you guys, but I think that would be greate if you guys are inteasted to follow the rule which describe in https://github.com/riscv-non-isa/riscv-toolchain-conventions/pull/17, that will require you to adding th.[1] as prefix of all T-head instructions, I believe that could be prevent we got collision on standard instructions, and also could let developer can aware that's instruction of vendor extension. SiFive and Ventana agreed with that convention and also got some positive feedback from the LLVM community, so I think that would be great having more vendors agree and follow this rule. [1] https://github.com/riscv-non-isa/riscv-toolchain-conventions/pull/19 Thanks. On Wed, Apr 20, 2022 at 7:05 PM C-SKY wrote: > > Thanks > > The branch 'users/riscv/bintuils-integration-branch' have upgrade in > July, 2021, > I have't had time to update the thead extensions to this branch. > > If you need to integate the cache instruction into binutils, Here is the > previous patch: > https://sourceware.org/pipermail/binutils/2021-September/117867.html > > The cache instruction are belong to 'xtheadc' extensions. > The standard ISA string is very fragmented, we prefer to that 'xtheadc' > contains all of instruction in XuanTie C9xx CPU. > > Lifang > > > On 2022/4/20 =E4=B8=8B=E5=8D=882:26, Nelson Chu wrote: > > On Wed, Apr 20, 2022 at 9:49 AM Palmer Dabbelt wro= te: > >> + Lifang > >> > >> On Tue, 19 Apr 2022 18:37:00 PDT (-0700), Nelson Chu wrote: > >>> Hi Patrick, > >>> > >>> I believe these are parts of the t-head extensions, and we should hav= e > >>> fully supported them in the users/riscv/binutils-integration-branch > >>> branch. Just that I still don't have time to move the vendor > >>> frameworks and stuff from there back to master. I am not sure if > >>> supporting the vendor extensions in master is urgent or not. But if > >>> the t-head cache stuff are, then I personally hope the patch should a= t > >>> least add Lifang Xia as the (main) author, and get his/their approval > >>> since these are vendor extensions, which ideally should be mainly > >>> maintained by each vendor. BTW, moving the existing whole t-head > >>> extension back to master rather than parts of them should be better t= o > >>> me. > >> Thanks, I hadn't seen the larger patch. If they're in good enough sha= pe > >> we can merge the whole thing that seems like the way to go, but > >> specifically the cache instructinos are blocking the Linux D1 support > >> which is why I asked Patrick to look at these -- this specific set is > >> really small, so I figured it could be done quickly. > >> > >> I can just go deal with that branch if you don't have time? At least > >> get the T-Head stuff cleaned up and rebased, so we can get that going = -- > >> just glancing at it doesn't look like there's anything super scary in > >> that one alone, though I think it's got some dependencies so I might b= e > >> missing something. > > Thanks, if you can help that would be great :) I would suggest we > > ignore the vendor frameworks in the integration for now, and just move > > the t-head and float16 back to mainline directly. The vendor > > frameworks could be added back to mainline in the future patches, > > since I still want to improve parts of them, including preparing the > > vendor relocations. > > > > Thanks > > Nelson > > > >>> Thanks > >>> Nelson > >>> > >>> On Wed, Apr 20, 2022 at 7:52 AM Patrick O'Neill wrote: > >>>> Add the cache instructions as described in Appendix B-1 of the XaunT= ie > >>>> Cseries Instruction Manual. > >>>> https://github.com/rjiejie/XuanTie-doc/blob/master/XuanTieCseriesins= tructionmanual.pdf > >>>> > >>>> This extension can be enabled by including "_xtheadcache" in the -ma= rch > >>>> string. > >>>> > >>>> Signed-off-by: Patrick O'Neill > >>>> --- > >>>> bfd/elfxx-riscv.c | 11 +++- > >>>> gas/testsuite/gas/riscv/xtheadcache-ext.d | 31 +++++++++++ > >>>> gas/testsuite/gas/riscv/xtheadcache-ext.s | 22 ++++++++ > >>>> include/opcode/riscv-opc.h | 64 +++++++++++++++++++= ++++ > >>>> include/opcode/riscv.h | 1 + > >>>> opcodes/riscv-opc.c | 23 ++++++++ > >>>> 6 files changed, 150 insertions(+), 2 deletions(-) > >>>> create mode 100644 gas/testsuite/gas/riscv/xtheadcache-ext.d > >>>> create mode 100644 gas/testsuite/gas/riscv/xtheadcache-ext.s > >>>> > >>>> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c > >>>> index 9f52bb545a..d10611cb60 100644 > >>>> --- a/bfd/elfxx-riscv.c > >>>> +++ b/bfd/elfxx-riscv.c > >>>> @@ -1225,6 +1225,12 @@ static struct riscv_supported_ext riscv_suppo= rted_std_z_ext[] =3D > >>>> {NULL, 0, 0, 0, 0} > >>>> }; > >>>> > >>>> +static struct riscv_supported_ext riscv_supported_std_x_ext[] =3D > >>>> +{ > >>>> + {"xtheadcache", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, > >>>> + {NULL, 0, 0, 0, 0} > >>>> +}; > >>>> + > >>>> static struct riscv_supported_ext riscv_supported_std_s_ext[] =3D > >>>> { > >>>> {"svinval", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, > >>>> @@ -1513,8 +1519,7 @@ riscv_get_default_ext_version (enum riscv_spec= _class *default_isa_spec, > >>>> case RV_ISA_CLASS_Z: table =3D riscv_supported_std_z_ext; brea= k; > >>>> case RV_ISA_CLASS_S: table =3D riscv_supported_std_s_ext; brea= k; > >>>> case RV_ISA_CLASS_H: table =3D riscv_supported_std_h_ext; brea= k; > >>>> - case RV_ISA_CLASS_X: > >>>> - break; > >>>> + case RV_ISA_CLASS_X: table =3D riscv_supported_std_x_ext; break= ; > >>>> default: > >>>> table =3D riscv_supported_std_ext; > >>>> } > >>>> @@ -2408,6 +2413,8 @@ riscv_multi_subset_supports (riscv_parse_subse= t_t *rps, > >>>> || riscv_subset_supports (rps, "zve32f")); > >>>> case INSN_CLASS_SVINVAL: > >>>> return riscv_subset_supports (rps, "svinval"); > >>>> + case INSN_CLASS_XTHEADCACHE: > >>>> + return riscv_subset_supports (rps, "xtheadcache"); > >>>> default: > >>>> rps->error_handler > >>>> (_("internal: unreachable INSN_CLASS_*")); > >>>> diff --git a/gas/testsuite/gas/riscv/xtheadcache-ext.d b/gas/testsui= te/gas/riscv/xtheadcache-ext.d > >>>> new file mode 100644 > >>>> index 0000000000..c0f47f65e5 > >>>> --- /dev/null > >>>> +++ b/gas/testsuite/gas/riscv/xtheadcache-ext.d > >>>> @@ -0,0 +1,31 @@ > >>>> +#as: -march=3Drv64i_xtheadcache > >>>> +#source: xtheadcache-ext.s > >>>> +#objdump: -d > >>>> + > >>>> +.*:[ ]+file format .* > >>>> + > >>>> + > >>>> +Disassembly of section .text: > >>>> + > >>>> +0+000 : > >>>> +[ ]+0:[ ]+0010000b[ ]+dcache.call > >>>> +[ ]+4:[ ]+0030000b[ ]+dcache.ciall > >>>> +[ ]+8:[ ]+02b5000b[ ]+dcache.cipa[ ]+a0 > >>>> +[ ]+c:[ ]+0235000b[ ]+dcache.cisw[ ]+a0 > >>>> +[ ]+10:[ ]+0275000b[ ]+dcache.civa[ ]+a0 > >>>> +[ ]+14:[ ]+0295000b[ ]+dcache.cpa[ ]+a0 > >>>> +[ ]+18:[ ]+0285000b[ ]+dcache.cpal1[ ]+a0 > >>>> +[ ]+1c:[ ]+0255000b[ ]+dcache.cva[ ]+a0 > >>>> +[ ]+20:[ ]+0245000b[ ]+dcache.cval1[ ]+a0 > >>>> +[ ]+24:[ ]+02a5000b[ ]+dcache.ipa[ ]+a0 > >>>> +[ ]+28:[ ]+0225000b[ ]+dcache.isw[ ]+a0 > >>>> +[ ]+2c:[ ]+0265000b[ ]+dcache.iva[ ]+a0 > >>>> +[ ]+30:[ ]+0020000b[ ]+dcache.iall > >>>> +[ ]+34:[ ]+0100000b[ ]+icache.iall > >>>> +[ ]+38:[ ]+0110000b[ ]+icache.ialls > >>>> +[ ]+3c:[ ]+0385000b[ ]+icache.ipa[ ]+a0 > >>>> +[ ]+40:[ ]+0305000b[ ]+icache.iva[ ]+a0 > >>>> +[ ]+44:[ ]+0150000b[ ]+l2cache.call > >>>> +[ ]+48:[ ]+0170000b[ ]+l2cache.ciall > >>>> +[ ]+4c:[ ]+0160000b[ ]+l2cache.iall > >>>> +[ ]+50:[ ]+0215000b[ ]+dcache.csw[ ]+a0 > >>>> diff --git a/gas/testsuite/gas/riscv/xtheadcache-ext.s b/gas/testsui= te/gas/riscv/xtheadcache-ext.s > >>>> new file mode 100644 > >>>> index 0000000000..7302d0461a > >>>> --- /dev/null > >>>> +++ b/gas/testsuite/gas/riscv/xtheadcache-ext.s > >>>> @@ -0,0 +1,22 @@ > >>>> +target: > >>>> + dcache.call > >>>> + dcache.ciall > >>>> + dcache.cipa a0 > >>>> + dcache.cisw a0 > >>>> + dcache.civa a0 > >>>> + dcache.cpa a0 > >>>> + dcache.cpal1 a0 > >>>> + dcache.cva a0 > >>>> + dcache.cval1 a0 > >>>> + dcache.ipa a0 > >>>> + dcache.isw a0 > >>>> + dcache.iva a0 > >>>> + dcache.iall > >>>> + icache.iall > >>>> + icache.ialls > >>>> + icache.ipa a0 > >>>> + icache.iva a0 > >>>> + l2cache.call > >>>> + l2cache.ciall > >>>> + l2cache.iall > >>>> + dcache.csw a0 > >>>> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h > >>>> index 0b8cc6c7dd..255203a3ff 100644 > >>>> --- a/include/opcode/riscv-opc.h > >>>> +++ b/include/opcode/riscv-opc.h > >>>> @@ -2029,6 +2029,49 @@ > >>>> #define MASK_HSV_W 0xfe007fff > >>>> #define MATCH_HSV_D 0x6e004073 > >>>> #define MASK_HSV_D 0xfe007fff > >>>> +/* T-Head Cache Instructions. */ > >>>> +#define MATCH_DCACHE_CALL 0x0010000B > >>>> +#define MASK_DCACHE_CALL 0xffffffff > >>>> +#define MATCH_DCACHE_CIALL 0x0030000B > >>>> +#define MASK_DCACHE_CIALL 0xffffffff > >>>> +#define MATCH_DCACHE_CIPA 0x02b0000b > >>>> +#define MASK_DCACHE_CIPA 0xfff07fff > >>>> +#define MATCH_DCACHE_CISW 0x0230000b > >>>> +#define MASK_DCACHE_CISW 0xfff07fff > >>>> +#define MATCH_DCACHE_CIVA 0x0270000b > >>>> +#define MASK_DCACHE_CIVA 0xfff07fff > >>>> +#define MATCH_DCACHE_CPA 0x0290000b > >>>> +#define MASK_DCACHE_CPA 0xfff07fff > >>>> +#define MATCH_DCACHE_CPAL1 0x0280000b > >>>> +#define MASK_DCACHE_CPAL1 0xfff07fff > >>>> +#define MATCH_DCACHE_CVA 0x0250000b > >>>> +#define MASK_DCACHE_CVA 0xfff07fff > >>>> +#define MATCH_DCACHE_CVAL1 0x0240000b > >>>> +#define MASK_DCACHE_CVAL1 0xfff07fff > >>>> +#define MATCH_DCACHE_IPA 0x02a0000b > >>>> +#define MASK_DCACHE_IPA 0xfff07fff > >>>> +#define MATCH_DCACHE_ISW 0x0220000b > >>>> +#define MASK_DCACHE_ISW 0xfff07fff > >>>> +#define MATCH_DCACHE_IVA 0x0260000b > >>>> +#define MASK_DCACHE_IVA 0xfff07fff > >>>> +#define MATCH_DCACHE_IALL 0x0020000b > >>>> +#define MASK_DCACHE_IALL 0xffffffff > >>>> +#define MATCH_ICACHE_IALL 0x0100000b > >>>> +#define MASK_ICACHE_IALL 0xffffffff > >>>> +#define MATCH_ICACHE_IALLS 0x0110000b > >>>> +#define MASK_ICACHE_IALLS 0xffffffff > >>>> +#define MATCH_ICACHE_IPA 0x0380000b > >>>> +#define MASK_ICACHE_IPA 0xfff07fff > >>>> +#define MATCH_ICACHE_IVA 0x0300000b > >>>> +#define MASK_ICACHE_IVA 0xfff07fff > >>>> +#define MATCH_L2CACHE_CALL 0x0150000b > >>>> +#define MASK_L2CACHE_CALL 0xffffffff > >>>> +#define MATCH_L2CACHE_CIALL 0x0170000b > >>>> +#define MASK_L2CACHE_CIALL 0xffffffff > >>>> +#define MATCH_L2CACHE_IALL 0x0160000b > >>>> +#define MASK_L2CACHE_IALL 0xffffffff > >>>> +#define MATCH_DCACHE_CSW 0x0210000b > >>>> +#define MASK_DCACHE_CSW 0xfff07fff > >>>> /* Privileged CSR addresses. */ > >>>> #define CSR_USTATUS 0x0 > >>>> #define CSR_UIE 0x4 > >>>> @@ -2628,6 +2671,27 @@ DECLARE_INSN(hsv_b, MATCH_HSV_B, MASK_HSV_B) > >>>> DECLARE_INSN(hsv_h, MATCH_HSV_H, MASK_HSV_H) > >>>> DECLARE_INSN(hsv_w, MATCH_HSV_W, MASK_HSV_W) > >>>> DECLARE_INSN(hsv_d, MATCH_HSV_D, MASK_HSV_D) > >>>> +DECLARE_INSN(dcache_call, MATCH_DCACHE_CALL, MASK_DCACHE_CALL) > >>>> +DECLARE_INSN(dcache_ciall, MATCH_DCACHE_CIALL, MASK_DCACHE_CIALL) > >>>> +DECLARE_INSN(dcache_cipa, MATCH_DCACHE_CIPA, MASK_DCACHE_CIPA) > >>>> +DECLARE_INSN(dcache_cisw, MATCH_DCACHE_CISW, MASK_DCACHE_CISW) > >>>> +DECLARE_INSN(dcache_civa, MATCH_DCACHE_CIVA, MASK_DCACHE_CIVA) > >>>> +DECLARE_INSN(dcache_cpa, MATCH_DCACHE_CPA, MASK_DCACHE_CPA) > >>>> +DECLARE_INSN(dcache_cpal1, MATCH_DCACHE_CPAL1, MASK_DCACHE_CPAL1) > >>>> +DECLARE_INSN(dcache_cva, MATCH_DCACHE_CVA, MASK_DCACHE_CVA) > >>>> +DECLARE_INSN(dcache_cval1, MATCH_DCACHE_CVAL1, MASK_DCACHE_CVAL1) > >>>> +DECLARE_INSN(dcache_ipa, MATCH_DCACHE_IPA, MASK_DCACHE_IPA) > >>>> +DECLARE_INSN(dcache_isw, MATCH_DCACHE_ISW, MASK_DCACHE_ISW) > >>>> +DECLARE_INSN(dcache_iva, MATCH_DCACHE_IVA, MASK_DCACHE_IVA) > >>>> +DECLARE_INSN(dcache_iall, MATCH_DCACHE_IALL, MASK_DCACHE_IALL) > >>>> +DECLARE_INSN(icache_iall, MATCH_ICACHE_IALL, MASK_ICACHE_IALL) > >>>> +DECLARE_INSN(icache_ialls, MATCH_ICACHE_IALLS, MASK_ICACHE_IALLS) > >>>> +DECLARE_INSN(icache_ipa, MATCH_ICACHE_IPA, MASK_ICACHE_IPA) > >>>> +DECLARE_INSN(icache_iva, MATCH_ICACHE_IVA, MASK_ICACHE_IVA) > >>>> +DECLARE_INSN(l2cache_call, MATCH_L2CACHE_CALL, MATCH_L2CACHE_CALL) > >>>> +DECLARE_INSN(l2cache_ciall, MATCH_L2CACHE_CIALL, MATCH_L2CACHE_CIAL= L) > >>>> +DECLARE_INSN(l2cache_iall, MATCH_L2CACHE_IALL, MATCH_L2CACHE_IALL) > >>>> +DECLARE_INSN(dcache_csw, MATCH_DCACHE_CSW, MATCH_DCACHE_CSW) > >>>> #endif /* DECLARE_INSN */ > >>>> #ifdef DECLARE_CSR > >>>> /* Privileged CSRs. */ > >>>> diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h > >>>> index 048ab0a5d6..e150919633 100644 > >>>> --- a/include/opcode/riscv.h > >>>> +++ b/include/opcode/riscv.h > >>>> @@ -388,6 +388,7 @@ enum riscv_insn_class > >>>> INSN_CLASS_V, > >>>> INSN_CLASS_ZVEF, > >>>> INSN_CLASS_SVINVAL, > >>>> + INSN_CLASS_XTHEADCACHE, > >>>> }; > >>>> > >>>> /* This structure holds information for a particular instruction. = */ > >>>> diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c > >>>> index 2da0f7cf0a..b6c1c89f42 100644 > >>>> --- a/opcodes/riscv-opc.c > >>>> +++ b/opcodes/riscv-opc.c > >>>> @@ -1753,6 +1753,29 @@ const struct riscv_opcode riscv_opcodes[] =3D > >>>> {"hsv.w", 0, INSN_CLASS_I, "t,0(s)", MATCH_HSV_W, MASK_HSV_W= , match_opcode, INSN_DREF|INSN_4_BYTE }, > >>>> {"hsv.d", 64, INSN_CLASS_I, "t,0(s)", MATCH_HSV_D, MASK_HSV_D= , match_opcode, INSN_DREF|INSN_8_BYTE }, > >>>> > >>>> +/* T-Head cache instructions */ > >>>> +{"dcache.call", 0, INSN_CLASS_XTHEADCACHE, "", MATCH_DCACHE_CALL= , MASK_DCACHE_CALL, match_opcode, 0 }, > >>>> +{"dcache.ciall", 0, INSN_CLASS_XTHEADCACHE, "", MATCH_DCACHE_CIAL= L, MASK_DCACHE_CIALL, match_opcode, 0 }, > >>>> +{"dcache.cipa", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_DCACHE_CIPA= , MASK_DCACHE_CIPA, match_opcode, 0 }, > >>>> +{"dcache.cisw", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_DCACHE_CISW= , MASK_DCACHE_CISW, match_opcode, 0 }, > >>>> +{"dcache.civa", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_DCACHE_CIVA= , MASK_DCACHE_CIVA, match_opcode, 0 }, > >>>> +{"dcache.cpa", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_DCACHE_CPA,= MASK_DCACHE_CPA, match_opcode, 0 }, > >>>> +{"dcache.cpal1", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_DCACHE_CPAL= 1, MASK_DCACHE_CPAL1, match_opcode, 0 }, > >>>> +{"dcache.cva", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_DCACHE_CVA,= MASK_DCACHE_CVA, match_opcode, 0 }, > >>>> +{"dcache.cval1", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_DCACHE_CVAL= 1, MASK_DCACHE_CVAL1, match_opcode, 0 }, > >>>> +{"dcache.ipa", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_DCACHE_IPA,= MASK_DCACHE_IPA, match_opcode, 0 }, > >>>> +{"dcache.isw", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_DCACHE_ISW,= MASK_DCACHE_ISW, match_opcode, 0 }, > >>>> +{"dcache.iva", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_DCACHE_IVA,= MASK_DCACHE_IVA, match_opcode, 0 }, > >>>> +{"dcache.iall", 0, INSN_CLASS_XTHEADCACHE, "", MATCH_DCACHE_IALL= , MASK_DCACHE_IALL, match_opcode, 0 }, > >>>> +{"icache.iall", 0, INSN_CLASS_XTHEADCACHE, "", MATCH_ICACHE_IALL= , MASK_ICACHE_IALL, match_opcode, 0 }, > >>>> +{"icache.ialls", 0, INSN_CLASS_XTHEADCACHE, "", MATCH_ICACHE_IALL= S, MASK_ICACHE_IALLS, match_opcode, 0 }, > >>>> +{"icache.ipa", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_ICACHE_IPA,= MASK_ICACHE_IPA, match_opcode, 0 }, > >>>> +{"icache.iva", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_ICACHE_IVA,= MASK_ICACHE_IVA, match_opcode, 0 }, > >>>> +{"l2cache.call", 0, INSN_CLASS_XTHEADCACHE, "", MATCH_L2CACHE_CAL= L, MASK_L2CACHE_CALL, match_opcode, 0 }, > >>>> +{"l2cache.ciall", 0, INSN_CLASS_XTHEADCACHE, "", MATCH_L2CACHE_CIA= LL, MASK_L2CACHE_CIALL, match_opcode, 0 }, > >>>> +{"l2cache.iall", 0, INSN_CLASS_XTHEADCACHE, "", MATCH_L2CACHE_IAL= L, MASK_L2CACHE_IALL, match_opcode, 0 }, > >>>> +{"dcache.csw", 0, INSN_CLASS_XTHEADCACHE, "s", MATCH_DCACHE_CSW,= MASK_DCACHE_CSW, match_opcode, 0 }, > >>>> + > >>>> /* Terminate the list. */ > >>>> {0, 0, INSN_CLASS_NONE, 0, 0, 0, 0, 0} > >>>> }; > >>>> -- > >>>> 2.25.1 > >>>>