pushed

On Mon, May 12, 2025 at 10:18 PM Kito Cheng <kito.ch...@sifive.com> wrote:
>
> I guess this patch set is not interesting to most people, so I will commit 
> that once CI green :P
>
> On Mon, May 12, 2025 at 10:17 PM Kito Cheng <kito.ch...@sifive.com> wrote:
>>
>> Adding a new ISA extension to RISC-V GCC requires modifying several places:
>> 1. riscv_ext_version_table for the extension version.
>> 2. riscv.opt for the target option and variable.
>> 3. riscv_ext_flag_table to bind the extension to its target option.
>> 4. riscv_combine_info if this extension is just a macro extension.
>> 5. riscv_implied_info if this extension implies other extensions.
>> 6. invoke.texi for documentation (this one is often forgotten - even by 
>> me...).
>> 7. riscv-ext-bitmask.def if this extension has been allocated a bitmask in
>>    `__riscv_feature_bits`.
>>
>> And now, we've integrated all the information into riscv-ext.def and generate
>> (almost) everything from that!
>>
>> Some of the fields, like URL, are not used yet. They are planned to be 
>> updated
>> later and used for improving the documentation.
>>
>> Changes since v1:
>> - Rebase for including new extensions
>> - Fix MASK_VECTOR handling
>>
>> gcc/ChangeLog:
>>
>>         * config/riscv/riscv-ext.def: New file; define extension metadata 
>> table.
>>         * config/riscv/riscv-ext-corev.def: New.
>>         * config/riscv/riscv-ext-sifive.def: New.
>>         * config/riscv/riscv-ext-thead.def: New.
>>         * config/riscv/riscv-ext-ventana.def: New.
>> ---
>>  gcc/config/riscv/riscv-ext-corev.def   |   87 ++
>>  gcc/config/riscv/riscv-ext-sifive.def  |   87 ++
>>  gcc/config/riscv/riscv-ext-thead.def   |  191 +++
>>  gcc/config/riscv/riscv-ext-ventana.def |   35 +
>>  gcc/config/riscv/riscv-ext.def         | 1824 ++++++++++++++++++++++++
>>  5 files changed, 2224 insertions(+)
>>  create mode 100644 gcc/config/riscv/riscv-ext-corev.def
>>  create mode 100644 gcc/config/riscv/riscv-ext-sifive.def
>>  create mode 100644 gcc/config/riscv/riscv-ext-thead.def
>>  create mode 100644 gcc/config/riscv/riscv-ext-ventana.def
>>  create mode 100644 gcc/config/riscv/riscv-ext.def
>>
>> diff --git a/gcc/config/riscv/riscv-ext-corev.def 
>> b/gcc/config/riscv/riscv-ext-corev.def
>> new file mode 100644
>> index 000000000000..eb97399403cd
>> --- /dev/null
>> +++ b/gcc/config/riscv/riscv-ext-corev.def
>> @@ -0,0 +1,87 @@
>> +/* CORE-V extension definition file for RISC-V.
>> +   Copyright (C) 2025 Free Software Foundation, Inc.
>> +
>> +This file is part of GCC.
>> +
>> +GCC is free software; you can redistribute it and/or modify
>> +it under the terms of the GNU General Public License as published by
>> +the Free Software Foundation; either version 3, or (at your option)
>> +any later version.
>> +
>> +GCC is distributed in the hope that it will be useful,
>> +but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> +GNU General Public License for more details.
>> +
>> +You should have received a copy of the GNU General Public License
>> +along with GCC; see the file COPYING3.  If not see
>> +<http://www.gnu.org/licenses/>.
>> +
>> +Please run `make riscv-regen` in build folder to make sure updated anything.
>> +
>> +Format of DEFINE_RISCV_EXT, please refer to riscv-ext.def.  */
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xcvalu,
>> +  /* UPPERCAE_NAME */ XCVALU,
>> +  /* FULL_NAME */ "Core-V miscellaneous ALU extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xcv,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xcvbi,
>> +  /* UPPERCAE_NAME */ XCVBI,
>> +  /* FULL_NAME */ "xcvbi extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xcv,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xcvelw,
>> +  /* UPPERCAE_NAME */ XCVELW,
>> +  /* FULL_NAME */ "Core-V event load word extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xcv,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xcvmac,
>> +  /* UPPERCAE_NAME */ XCVMAC,
>> +  /* FULL_NAME */ "Core-V multiply-accumulate extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xcv,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xcvsimd,
>> +  /* UPPERCAE_NAME */ XCVSIMD,
>> +  /* FULL_NAME */ "xcvsimd extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xcv,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> diff --git a/gcc/config/riscv/riscv-ext-sifive.def 
>> b/gcc/config/riscv/riscv-ext-sifive.def
>> new file mode 100644
>> index 000000000000..c8d79da479ca
>> --- /dev/null
>> +++ b/gcc/config/riscv/riscv-ext-sifive.def
>> @@ -0,0 +1,87 @@
>> +/* SiFive extension definition file for RISC-V.
>> +   Copyright (C) 2025 Free Software Foundation, Inc.
>> +
>> +This file is part of GCC.
>> +
>> +GCC is free software; you can redistribute it and/or modify
>> +it under the terms of the GNU General Public License as published by
>> +the Free Software Foundation; either version 3, or (at your option)
>> +any later version.
>> +
>> +GCC is distributed in the hope that it will be useful,
>> +but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> +GNU General Public License for more details.
>> +
>> +You should have received a copy of the GNU General Public License
>> +along with GCC; see the file COPYING3.  If not see
>> +<http://www.gnu.org/licenses/>.
>> +
>> +Please run `make riscv-regen` in build folder to make sure updated anything.
>> +
>> +Format of DEFINE_RISCV_EXT, please refer to riscv-ext.def.  */
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xsfcease,
>> +  /* UPPERCAE_NAME */ XSFCEASE,
>> +  /* FULL_NAME */ "xsfcease extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xsf,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xsfvcp,
>> +  /* UPPERCAE_NAME */ XSFVCP,
>> +  /* FULL_NAME */ "xsfvcp extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve32x"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xsf,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xsfvfnrclipxfqf,
>> +  /* UPPERCAE_NAME */ XSFVFNRCLIPXFQF,
>> +  /* FULL_NAME */ "xsfvfnrclipxfqf extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xsf,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xsfvqmaccdod,
>> +  /* UPPERCAE_NAME */ XSFVQMACCDOD,
>> +  /* FULL_NAME */ "xsfvqmaccdod extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xsf,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xsfvqmaccqoq,
>> +  /* UPPERCAE_NAME */ XSFVQMACCQOQ,
>> +  /* FULL_NAME */ "xsfvqmaccqoq extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xsf,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> diff --git a/gcc/config/riscv/riscv-ext-thead.def 
>> b/gcc/config/riscv/riscv-ext-thead.def
>> new file mode 100644
>> index 000000000000..327d2ae0d395
>> --- /dev/null
>> +++ b/gcc/config/riscv/riscv-ext-thead.def
>> @@ -0,0 +1,191 @@
>> +/* T-head extension definition file for RISC-V.
>> +   Copyright (C) 2025 Free Software Foundation, Inc.
>> +
>> +This file is part of GCC.
>> +
>> +GCC is free software; you can redistribute it and/or modify
>> +it under the terms of the GNU General Public License as published by
>> +the Free Software Foundation; either version 3, or (at your option)
>> +any later version.
>> +
>> +GCC is distributed in the hope that it will be useful,
>> +but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> +GNU General Public License for more details.
>> +
>> +You should have received a copy of the GNU General Public License
>> +along with GCC; see the file COPYING3.  If not see
>> +<http://www.gnu.org/licenses/>.
>> +
>> +Please run `make riscv-regen` in build folder to make sure updated anything.
>> +
>> +Format of DEFINE_RISCV_EXT, please refer to riscv-ext.def.  */
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadba,
>> +  /* UPPERCAE_NAME */ XTHEADBA,
>> +  /* FULL_NAME */ "T-head address calculation extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadbb,
>> +  /* UPPERCAE_NAME */ XTHEADBB,
>> +  /* FULL_NAME */ "T-head basic bit-manipulation extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadbs,
>> +  /* UPPERCAE_NAME */ XTHEADBS,
>> +  /* FULL_NAME */ "T-head single-bit instructions extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadcmo,
>> +  /* UPPERCAE_NAME */ XTHEADCMO,
>> +  /* FULL_NAME */ "T-head cache management operations extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadcondmov,
>> +  /* UPPERCAE_NAME */ XTHEADCONDMOV,
>> +  /* FULL_NAME */ "T-head conditional move extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadfmemidx,
>> +  /* UPPERCAE_NAME */ XTHEADFMEMIDX,
>> +  /* FULL_NAME */ "T-head indexed memory operations for floating-point 
>> registers extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadfmv,
>> +  /* UPPERCAE_NAME */ XTHEADFMV,
>> +  /* FULL_NAME */ "T-head double floating-point high-bit data transmission 
>> extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadint,
>> +  /* UPPERCAE_NAME */ XTHEADINT,
>> +  /* FULL_NAME */ "T-head acceleration interruption extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadmac,
>> +  /* UPPERCAE_NAME */ XTHEADMAC,
>> +  /* FULL_NAME */ "T-head multiply-accumulate extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadmemidx,
>> +  /* UPPERCAE_NAME */ XTHEADMEMIDX,
>> +  /* FULL_NAME */ "T-head indexed memory operation extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadmempair,
>> +  /* UPPERCAE_NAME */ XTHEADMEMPAIR,
>> +  /* FULL_NAME */ "T-head two-GPR memory operation extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadsync,
>> +  /* UPPERCAE_NAME */ XTHEADSYNC,
>> +  /* FULL_NAME */ "T-head multi-core synchronization extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xtheadvector,
>> +  /* UPPERCAE_NAME */ XTHEADVECTOR,
>> +  /* FULL_NAME */ "xtheadvector extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xthead,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> diff --git a/gcc/config/riscv/riscv-ext-ventana.def 
>> b/gcc/config/riscv/riscv-ext-ventana.def
>> new file mode 100644
>> index 000000000000..deed47f112a5
>> --- /dev/null
>> +++ b/gcc/config/riscv/riscv-ext-ventana.def
>> @@ -0,0 +1,35 @@
>> +/* Ventana extension definition file for RISC-V.
>> +   Copyright (C) 2025 Free Software Foundation, Inc.
>> +
>> +This file is part of GCC.
>> +
>> +GCC is free software; you can redistribute it and/or modify
>> +it under the terms of the GNU General Public License as published by
>> +the Free Software Foundation; either version 3, or (at your option)
>> +any later version.
>> +
>> +GCC is distributed in the hope that it will be useful,
>> +but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> +GNU General Public License for more details.
>> +
>> +You should have received a copy of the GNU General Public License
>> +along with GCC; see the file COPYING3.  If not see
>> +<http://www.gnu.org/licenses/>.
>> +
>> +Please run `make riscv-regen` in build folder to make sure updated anything.
>> +
>> +Format of DEFINE_RISCV_EXT, please refer to riscv-ext.def.  */
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ xventanacondops,
>> +  /* UPPERCAE_NAME */ XVENTANACONDOPS,
>> +  /* FULL_NAME */ "Ventana integer conditional operations extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ xventana,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> diff --git a/gcc/config/riscv/riscv-ext.def b/gcc/config/riscv/riscv-ext.def
>> new file mode 100644
>> index 000000000000..34742d912f83
>> --- /dev/null
>> +++ b/gcc/config/riscv/riscv-ext.def
>> @@ -0,0 +1,1824 @@
>> +/* RISC-V extension definition file for RISC-V.
>> +   Copyright (C) 2025 Free Software Foundation, Inc.
>> +
>> +This file is part of GCC.
>> +
>> +GCC is free software; you can redistribute it and/or modify
>> +it under the terms of the GNU General Public License as published by
>> +the Free Software Foundation; either version 3, or (at your option)
>> +any later version.
>> +
>> +GCC is distributed in the hope that it will be useful,
>> +but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> +GNU General Public License for more details.
>> +
>> +You should have received a copy of the GNU General Public License
>> +along with GCC; see the file COPYING3.  If not see
>> +<http://www.gnu.org/licenses/>.
>> +
>> +Please run `make riscv-regen` in build folder to make sure updated anything.
>> +
>> +Format of DEFINE_RISCV_EXT:
>> +  NAME:
>> +    The name of the extension, e.g. "i".
>> +  UPPERCASE_NAME:
>> +    The name of the extension in uppercase, e.g. "ZBA", this used
>> +    for generate TARGET_<ext-name> marco and MASK_<ext-name> macro.
>> +    For those extension only named with single letter, it should also come 
>> with
>> +    'RV', e.g. 'v' should use 'RVV' here.
>> +    Some of old extension like 'i' and 'm' are not follow the rule.
>> +  FULL_NAME:
>> +    The full name of the extension, e.g. "Base integer extension".
>> +  DESC:
>> +    A short description of the extension, this will used during generating
>> +    documentation, GNU Texinfo format can be used this field.
>> +  URL:
>> +    A URL for the extension.
>> +  DEP_EXTS:
>> +    A list of dependent extensions, this is a list of strings or
>> +    a list of tuples.  The first element of the tuple is the name
>> +    of the extension and the second element is a function that
>> +    takes a subset_list and returns true if the extension should be added as
>> +    a dependent extension, `c` and `zca` are examples of this.
>> +  SUPPORTED_VERSIONS:
>> +    A list of tuples, each tuple contains the major version number, minor
>> +    version number and the class of the specification.  The version number 
>> is a
>> +    list of integers, e.g. {2, 0} for version 2.0.  The class is
>> +    a string, e.g. "ISA_SPEC_CLASS_20191213", the class of the
>> +    specification is not required for any new extension.
>> +  FLAG_GROUP:
>> +    The group of the extension, this is used to group extensions
>> +    together.  The group is a string, e.g. "base", "zi", "zm", "za", "zf",
>> +    "zc", "zb", "zk" and "zi".
>> +    This should be auto generated in theory in some day...
>> +  BITMASK_GROUP_ID:
>> +    The group id of the extension for the __riscv_feature_bits.
>> +    this field should sync with riscv-c-api-doc, and keep 
>> BITMASK_NOT_YET_ALLOCATED
>> +    if not got allocated.
>> +    
>> https://github.com/riscv-non-isa/riscv-c-api-doc/blob/main/src/c-api.adoc#extension-bitmask-definitions
>> +  BITMASK_BIT_POSITION:
>> +    The bit position of the extension for the __riscv_feature_bits.
>> +    this field should sync with riscv-c-api-doc, and keep 
>> BITMASK_NOT_YET_ALLOCATED
>> +    if not got allocated.
>> +    
>> https://github.com/riscv-non-isa/riscv-c-api-doc/blob/main/src/c-api.adoc#extension-bitmask-definitions
>> +  EXTRA_EXTENSION_FLAGS:
>> +    Extra flags for the extension, this is a bitmask of the
>> +    extra flags.  The extra flags are:
>> +    - EXT_FLAG_MACRO: Set this flag if this extension is just a macro of 
>> set of
>> +       extensions, and not define any new instrcutions, new CSRs or new
>> +       behaviors, the example is `b` extension is just a macro of `zba`, 
>> `zbb`
>> +       and `zbs`.
>> +*/
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ e,
>> +  /* UPPERCAE_NAME */ RVE,
>> +  /* FULL_NAME */ "Reduced base integer extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 0}}),
>> +  /* FLAG_GROUP */ base,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ i,
>> +  /* UPPERCAE_NAME */ RVI,
>> +  /* FULL_NAME */ "Base integer extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 1, ISA_SPEC_CLASS_20191213},
>> +                            {2, 1, ISA_SPEC_CLASS_20190608},
>> +                            {2, 0, ISA_SPEC_CLASS_2P2}}),
>> +  /* FLAG_GROUP */ base,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 8,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ m,
>> +  /* UPPERCAE_NAME */ MUL,
>> +  /* FULL_NAME */ "Integer multiplication and division extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zmmul"}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 0}}),
>> +  /* FLAG_GROUP */ base,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 12,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ a,
>> +  /* UPPERCAE_NAME */ ATOMIC,
>> +  /* FULL_NAME */ "Atomic extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zaamo", "zalrsc"}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 1, ISA_SPEC_CLASS_20191213},
>> +                            {2, 0, ISA_SPEC_CLASS_20190608},
>> +                            {2, 0, ISA_SPEC_CLASS_2P2}}),
>> +  /* FLAG_GROUP */ base,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 0,
>> +  /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ f,
>> +  /* UPPERCAE_NAME */ HARD_FLOAT,
>> +  /* FULL_NAME */ "Single-precision floating-point extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 2, ISA_SPEC_CLASS_20191213},
>> +                            {2, 2, ISA_SPEC_CLASS_20190608},
>> +                            {2, 0, ISA_SPEC_CLASS_2P2}}),
>> +  /* FLAG_GROUP */ base,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 5,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ d,
>> +  /* UPPERCAE_NAME */ DOUBLE_FLOAT,
>> +  /* FULL_NAME */ "Double-precision floating-point extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"f", "zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 2, ISA_SPEC_CLASS_20191213},
>> +                            {2, 2, ISA_SPEC_CLASS_20190608},
>> +                            {2, 0, ISA_SPEC_CLASS_2P2}}),
>> +  /* FLAG_GROUP */ base,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 3,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ c,
>> +  /* UPPERCAE_NAME */ RVC,
>> +  /* FULL_NAME */ "Compressed extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zca",
>> +                  {"zcf",
>> +                   [] (const riscv_subset_list *subset_list) -> bool
>> +                     {
>> +                       return subset_list->xlen () == 32
>> +                              && subset_list->lookup ("f");
>> +                     }},
>> +                  {"zcd",
>> +                   [] (const riscv_subset_list *subset_list) -> bool
>> +                     {
>> +                       return subset_list->lookup ("d");
>> +                     }}}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 0}}),
>> +  /* FLAG_GROUP */ base,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 2,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ b,
>> +  /* UPPERCAE_NAME */ RVB,
>> +  /* FULL_NAME */ "b extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zba", "zbb", "zbs"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ base,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ v,
>> +  /* UPPERCAE_NAME */ RVV,
>> +  /* FULL_NAME */ "Vector extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl128b", "zve64d"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ base,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 21,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ h,
>> +  /* UPPERCAE_NAME */ RVH,
>> +  /* FULL_NAME */ "Hypervisor extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ base,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zic64b,
>> +  /* UPPERCAE_NAME */ ZIC64B,
>> +  /* FULL_NAME */ "Cache block size isf 64 bytes",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zicbom,
>> +  /* UPPERCAE_NAME */ ZICBOM,
>> +  /* FULL_NAME */ "Cache-block management extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zicbop,
>> +  /* UPPERCAE_NAME */ ZICBOP,
>> +  /* FULL_NAME */ "Cache-block prefetch extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zicboz,
>> +  /* UPPERCAE_NAME */ ZICBOZ,
>> +  /* FULL_NAME */ "Cache-block zero extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 37,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ ziccamoa,
>> +  /* UPPERCAE_NAME */ ZICCAMOA,
>> +  /* FULL_NAME */ "Main memory supports all atomics in A",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ ziccif,
>> +  /* UPPERCAE_NAME */ ZICCIF,
>> +  /* FULL_NAME */ "Main memory supports instruction fetch with atomicity 
>> requirement",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zicclsm,
>> +  /* UPPERCAE_NAME */ ZICCLSM,
>> +  /* FULL_NAME */ "Main memory supports misaligned loads/stores",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ ziccrse,
>> +  /* UPPERCAE_NAME */ ZICCRSE,
>> +  /* FULL_NAME */ "Main memory supports forward progress on LR/SC 
>> sequences",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zicfilp,
>> +  /* UPPERCAE_NAME */ ZICFILP,
>> +  /* FULL_NAME */ "zicfilp extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zicfiss,
>> +  /* UPPERCAE_NAME */ ZICFISS,
>> +  /* FULL_NAME */ "zicfiss extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr", "zimop"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zicntr,
>> +  /* UPPERCAE_NAME */ ZICNTR,
>> +  /* FULL_NAME */ "Standard extension for base counters and timers",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zicond,
>> +  /* UPPERCAE_NAME */ ZICOND,
>> +  /* FULL_NAME */ "Integer conditional operations extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 38,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zicsr,
>> +  /* UPPERCAE_NAME */ ZICSR,
>> +  /* FULL_NAME */ "Control and status register access extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zifencei,
>> +  /* UPPERCAE_NAME */ ZIFENCEI,
>> +  /* FULL_NAME */ "Instruction-fetch fence extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zihintntl,
>> +  /* UPPERCAE_NAME */ ZIHINTNTL,
>> +  /* FULL_NAME */ "Non-temporal locality hints extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 39,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zihintpause,
>> +  /* UPPERCAE_NAME */ ZIHINTPAUSE,
>> +  /* FULL_NAME */ "Pause hint extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 40,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zihpm,
>> +  /* UPPERCAE_NAME */ ZIHPM,
>> +  /* FULL_NAME */ "Standard extension for hardware performance counters",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{2, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zimop,
>> +  /* UPPERCAE_NAME */ ZIMOP,
>> +  /* FULL_NAME */ "zimop extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ 1,
>> +  /* BITMASK_BIT_POSITION*/ 1,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zilsd,
>> +  /* UPPERCAE_NAME */ ZILSD,
>> +  /* FULL_NAME */ "Load/Store pair instructions extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zi,
>> +  /* BITMASK_GROUP_ID */ 1,
>> +  /* BITMASK_BIT_POSITION*/ 1,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zmmul,
>> +  /* UPPERCAE_NAME */ ZMMUL,
>> +  /* FULL_NAME */ "Integer multiplication extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zm,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ za128rs,
>> +  /* UPPERCAE_NAME */ ZA128RS,
>> +  /* FULL_NAME */ "Reservation set size of 128 bytes",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ za,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ za64rs,
>> +  /* UPPERCAE_NAME */ ZA64RS,
>> +  /* FULL_NAME */ "Reservation set size of 64 bytes",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ za,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zaamo,
>> +  /* UPPERCAE_NAME */ ZAAMO,
>> +  /* FULL_NAME */ "zaamo extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ za,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zabha,
>> +  /* UPPERCAE_NAME */ ZABHA,
>> +  /* FULL_NAME */ "zabha extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zaamo"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ za,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zacas,
>> +  /* UPPERCAE_NAME */ ZACAS,
>> +  /* FULL_NAME */ "zacas extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zaamo"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ za,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 26,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zalrsc,
>> +  /* UPPERCAE_NAME */ ZALRSC,
>> +  /* FULL_NAME */ "zalrsc extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ za,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zawrs,
>> +  /* UPPERCAE_NAME */ ZAWRS,
>> +  /* FULL_NAME */ "Wait-on-reservation-set extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zalrsc"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ za,
>> +  /* BITMASK_GROUP_ID */ 1,
>> +  /* BITMASK_BIT_POSITION*/ 7,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zama16b,
>> +  /* UPPERCAE_NAME */ ZAMA16B,
>> +  /* FULL_NAME */ "Zama16b extension",
>> +  /* DESC */ "Misaligned loads, stores, and AMOs to main memory regions 
>> that do"
>> +            " not cross a naturally aligned 16-byte boundary are atomic.",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ za,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zfa,
>> +  /* UPPERCAE_NAME */ ZFA,
>> +  /* FULL_NAME */ "Additional floating-point extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"f"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zf,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 34,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zfbfmin,
>> +  /* UPPERCAE_NAME */ ZFBFMIN,
>> +  /* FULL_NAME */ "zfbfmin extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zfhmin"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zf,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zfh,
>> +  /* UPPERCAE_NAME */ ZFH,
>> +  /* FULL_NAME */ "Half-precision floating-point extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zfhmin"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zf,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 35,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zfhmin,
>> +  /* UPPERCAE_NAME */ ZFHMIN,
>> +  /* FULL_NAME */ "Minimal half-precision floating-point extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"f"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zf,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 36,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zfinx,
>> +  /* UPPERCAE_NAME */ ZFINX,
>> +  /* FULL_NAME */ "Single-precision floating-point in integer registers 
>> extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zinx,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zdinx,
>> +  /* UPPERCAE_NAME */ ZDINX,
>> +  /* FULL_NAME */ "Double-precision floating-point in integer registers 
>> extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zfinx", "zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zinx,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zca,
>> +  /* UPPERCAE_NAME */ ZCA,
>> +  /* FULL_NAME */ "Integer compressed instruction extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({{"c",
>> +[] (const riscv_subset_list *subset_list) -> bool
>> +{
>> +  /* For RV32 Zca implies C for one of these combinations of
>> +     extensions: Zca, F_Zca_Zcf and FD_Zca_Zcf_Zcd.  */
>> +  if (subset_list->xlen () == 32)
>> +    {
>> +      if (subset_list->lookup ("d"))
>> +       return subset_list->lookup ("zcf") && subset_list->lookup ("zcd");
>> +
>> +      if (subset_list->lookup ("f"))
>> +       return subset_list->lookup ("zcf");
>> +
>> +      return true;
>> +    }
>> +
>> +  /* For RV64 Zca implies C for one of these combinations of
>> +     extensions: Zca and FD_Zca_Zcd (Zcf is not available
>> +     for RV64).  */
>> +  if (subset_list->xlen () == 64)
>> +    {
>> +      if (subset_list->lookup ("d"))
>> +       return subset_list->lookup ("zcd");
>> +
>> +      return true;
>> +    }
>> +
>> +  /* Do nothing for future RV128 specification. Behaviour
>> +     for this case is not yet well defined.  */
>> +  return false;
>> +
>> +}}}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zc,
>> +  /* BITMASK_GROUP_ID */ 1,
>> +  /* BITMASK_BIT_POSITION*/ 2,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zcb,
>> +  /* UPPERCAE_NAME */ ZCB,
>> +  /* FULL_NAME */ "Simple compressed instruction extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zca"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zc,
>> +  /* BITMASK_GROUP_ID */ 1,
>> +  /* BITMASK_BIT_POSITION*/ 3,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zcd,
>> +  /* UPPERCAE_NAME */ ZCD,
>> +  /* FULL_NAME */ "Compressed double-precision floating point loads and 
>> stores extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zca"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zc,
>> +  /* BITMASK_GROUP_ID */ 1,
>> +  /* BITMASK_BIT_POSITION*/ 4,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zce,
>> +  /* UPPERCAE_NAME */ ZCE,
>> +  /* FULL_NAME */ "Compressed instruction extensions for embedded 
>> processors",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zca", "zcb", "zcmp", "zcmt",
>> +                 {"zcf",
>> +                  [] (const riscv_subset_list *subset_list) -> bool
>> +                    {
>> +                      return subset_list->xlen () == 32
>> +                             && subset_list->lookup ("f");
>> +                    }}}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zc,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zcf,
>> +  /* UPPERCAE_NAME */ ZCF,
>> +  /* FULL_NAME */ "Compressed single-precision floating point loads and 
>> stores extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zca"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zc,
>> +  /* BITMASK_GROUP_ID */ 1,
>> +  /* BITMASK_BIT_POSITION*/ 5,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zcmop,
>> +  /* UPPERCAE_NAME */ ZCMOP,
>> +  /* FULL_NAME */ "zcmop extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zca"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zc,
>> +  /* BITMASK_GROUP_ID */ 1,
>> +  /* BITMASK_BIT_POSITION*/ 6,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zcmp,
>> +  /* UPPERCAE_NAME */ ZCMP,
>> +  /* FULL_NAME */ "Compressed push pop extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zca"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zc,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zcmt,
>> +  /* UPPERCAE_NAME */ ZCMT,
>> +  /* FULL_NAME */ "Table jump instruction extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zca", "zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zc,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zclsd,
>> +  /* UPPERCAE_NAME */ ZCLSD,
>> +  /* FULL_NAME */ "Compressed load/store pair instructions extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zca", "zilsd"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zc,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zba,
>> +  /* UPPERCAE_NAME */ ZBA,
>> +  /* FULL_NAME */ "Address calculation extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zb,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 27,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zbb,
>> +  /* UPPERCAE_NAME */ ZBB,
>> +  /* FULL_NAME */ "Basic bit manipulation extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zb,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 28,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zbc,
>> +  /* UPPERCAE_NAME */ ZBC,
>> +  /* FULL_NAME */ "Carry-less multiplication extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zb,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 29,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zbkb,
>> +  /* UPPERCAE_NAME */ ZBKB,
>> +  /* FULL_NAME */ "Cryptography bit-manipulation extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zb,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 30,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zbkc,
>> +  /* UPPERCAE_NAME */ ZBKC,
>> +  /* FULL_NAME */ "Cryptography carry-less multiply extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zb,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 31,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zbkx,
>> +  /* UPPERCAE_NAME */ ZBKX,
>> +  /* FULL_NAME */ "Cryptography crossbar permutation extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zb,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 32,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zbs,
>> +  /* UPPERCAE_NAME */ ZBS,
>> +  /* FULL_NAME */ "Single-bit operation extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zb,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 33,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zk,
>> +  /* UPPERCAE_NAME */ ZK,
>> +  /* FULL_NAME */ "Standard scalar cryptography extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zkn", "zkr", "zkt"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zk,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zkn,
>> +  /* UPPERCAE_NAME */ ZKN,
>> +  /* FULL_NAME */ "NIST algorithm suite extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zbkb", "zbkc", "zbkx", "zkne", "zknd", "zknh"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zk,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zknd,
>> +  /* UPPERCAE_NAME */ ZKND,
>> +  /* FULL_NAME */ "AES Decryption extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 41,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zkne,
>> +  /* UPPERCAE_NAME */ ZKNE,
>> +  /* FULL_NAME */ "AES Encryption extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 42,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zknh,
>> +  /* UPPERCAE_NAME */ ZKNH,
>> +  /* FULL_NAME */ "Hash function extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 43,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zkr,
>> +  /* UPPERCAE_NAME */ ZKR,
>> +  /* FULL_NAME */ "Entropy source extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zk,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zks,
>> +  /* UPPERCAE_NAME */ ZKS,
>> +  /* FULL_NAME */ "ShangMi algorithm suite extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zbkb", "zbkc", "zbkx", "zksed", "zksh"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zk,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zksed,
>> +  /* UPPERCAE_NAME */ ZKSED,
>> +  /* FULL_NAME */ "SM4 block cipher extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 44,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zksh,
>> +  /* UPPERCAE_NAME */ ZKSH,
>> +  /* FULL_NAME */ "SM3 hash function extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 45,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zkt,
>> +  /* UPPERCAE_NAME */ ZKT,
>> +  /* FULL_NAME */ "Data independent execution latency extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 46,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ ztso,
>> +  /* UPPERCAE_NAME */ ZTSO,
>> +  /* FULL_NAME */ "Total store ordering extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zt,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 47,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvbb,
>> +  /* UPPERCAE_NAME */ ZVBB,
>> +  /* FULL_NAME */ "Vector basic bit-manipulation extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvkb"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvb,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 48,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvbc,
>> +  /* UPPERCAE_NAME */ ZVBC,
>> +  /* FULL_NAME */ "Vector carryless multiplication extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve64x"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvb,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 49,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zve32f,
>> +  /* UPPERCAE_NAME */ ZVE32F,
>> +  /* FULL_NAME */ "Vector extensions for embedded processors",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"f", "zve32x", "zvl32b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zve,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 61,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zve32x,
>> +  /* UPPERCAE_NAME */ ZVE32X,
>> +  /* FULL_NAME */ "Vector extensions for embedded processors",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr", "zvl32b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zve,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 60,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zve64d,
>> +  /* UPPERCAE_NAME */ ZVE64D,
>> +  /* FULL_NAME */ "Vector extensions for embedded processors",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"d", "zve64f", "zvl64b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zve,
>> +  /* BITMASK_GROUP_ID */ 1,
>> +  /* BITMASK_BIT_POSITION*/ 0,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zve64f,
>> +  /* UPPERCAE_NAME */ ZVE64F,
>> +  /* FULL_NAME */ "Vector extensions for embedded processors",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"f", "zve32f", "zve64x", "zvl64b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zve,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 63,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zve64x,
>> +  /* UPPERCAE_NAME */ ZVE64X,
>> +  /* FULL_NAME */ "Vector extensions for embedded processors",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve32x", "zvl64b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zve,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 62,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvfbfmin,
>> +  /* UPPERCAE_NAME */ ZVFBFMIN,
>> +  /* FULL_NAME */ "Vector BF16 converts extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve32f"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvf,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvfbfwma,
>> +  /* UPPERCAE_NAME */ ZVFBFWMA,
>> +  /* FULL_NAME */ "zvfbfwma extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvfbfmin", "zfbfmin"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvf,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvfh,
>> +  /* UPPERCAE_NAME */ ZVFH,
>> +  /* FULL_NAME */ "Vector half-precision floating-point extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve32f", "zfhmin"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvf,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 50,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvfhmin,
>> +  /* UPPERCAE_NAME */ ZVFHMIN,
>> +  /* FULL_NAME */ "Vector minimal half-precision floating-point extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve32f"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvf,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 51,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvkb,
>> +  /* UPPERCAE_NAME */ ZVKB,
>> +  /* FULL_NAME */ "Vector cryptography bit-manipulation extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve32x"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 52,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvkg,
>> +  /* UPPERCAE_NAME */ ZVKG,
>> +  /* FULL_NAME */ "Vector GCM/GMAC extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve32x"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 53,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvkn,
>> +  /* UPPERCAE_NAME */ ZVKN,
>> +  /* FULL_NAME */ "Vector NIST Algorithm Suite extension",
>> +  /* DESC */ "@samp{zvkn} will expand to",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvkned", "zvknhb", "zvkb", "zvkt"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvknc,
>> +  /* UPPERCAE_NAME */ ZVKNC,
>> +  /* FULL_NAME */ "Vector NIST Algorithm Suite with carryless multiply 
>> extension, @samp{zvknc}",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvkn", "zvbc"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvkned,
>> +  /* UPPERCAE_NAME */ ZVKNED,
>> +  /* FULL_NAME */ "Vector AES block cipher extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve32x"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 54,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvkng,
>> +  /* UPPERCAE_NAME */ ZVKNG,
>> +  /* FULL_NAME */ "Vector NIST Algorithm Suite with GCM extension, 
>> @samp{zvkng} will expand",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvkn", "zvkg"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvknha,
>> +  /* UPPERCAE_NAME */ ZVKNHA,
>> +  /* FULL_NAME */ "Vector SHA-2 secure hash extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve32x"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 55,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvknhb,
>> +  /* UPPERCAE_NAME */ ZVKNHB,
>> +  /* FULL_NAME */ "Vector SHA-2 secure hash extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve64x"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 56,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvks,
>> +  /* UPPERCAE_NAME */ ZVKS,
>> +  /* FULL_NAME */ "Vector ShangMi algorithm suite extension, @samp{zvks} 
>> will expand",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvksed", "zvksh", "zvkb", "zvkt"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvksc,
>> +  /* UPPERCAE_NAME */ ZVKSC,
>> +  /* FULL_NAME */ "Vector ShangMi algorithm suite with carryless 
>> multiplication extension,",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvks", "zvbc"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvksed,
>> +  /* UPPERCAE_NAME */ ZVKSED,
>> +  /* FULL_NAME */ "Vector SM4 Block Cipher extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve32x"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 57,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvksg,
>> +  /* UPPERCAE_NAME */ ZVKSG,
>> +  /* FULL_NAME */ "Vector ShangMi algorithm suite with GCM extension, 
>> @samp{zvksg} will expand",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvks", "zvkg"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ EXT_FLAG_MACRO)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvksh,
>> +  /* UPPERCAE_NAME */ ZVKSH,
>> +  /* FULL_NAME */ "Vector SM3 Secure Hash extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zve32x"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 58,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvkt,
>> +  /* UPPERCAE_NAME */ ZVKT,
>> +  /* FULL_NAME */ "Vector data independent execution latency extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvk,
>> +  /* BITMASK_GROUP_ID */ 0,
>> +  /* BITMASK_BIT_POSITION*/ 59,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl1024b,
>> +  /* UPPERCAE_NAME */ ZVL1024B,
>> +  /* FULL_NAME */ "Minimum vector length standard extensions",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl512b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl128b,
>> +  /* UPPERCAE_NAME */ ZVL128B,
>> +  /* FULL_NAME */ "Minimum vector length standard extensions",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl64b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl16384b,
>> +  /* UPPERCAE_NAME */ ZVL16384B,
>> +  /* FULL_NAME */ "zvl16384b extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl8192b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl2048b,
>> +  /* UPPERCAE_NAME */ ZVL2048B,
>> +  /* FULL_NAME */ "Minimum vector length standard extensions",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl1024b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl256b,
>> +  /* UPPERCAE_NAME */ ZVL256B,
>> +  /* FULL_NAME */ "Minimum vector length standard extensions",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl128b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl32768b,
>> +  /* UPPERCAE_NAME */ ZVL32768B,
>> +  /* FULL_NAME */ "zvl32768b extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl16384b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl32b,
>> +  /* UPPERCAE_NAME */ ZVL32B,
>> +  /* FULL_NAME */ "Minimum vector length standard extensions",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl4096b,
>> +  /* UPPERCAE_NAME */ ZVL4096B,
>> +  /* FULL_NAME */ "Minimum vector length standard extensions",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl2048b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl512b,
>> +  /* UPPERCAE_NAME */ ZVL512B,
>> +  /* FULL_NAME */ "Minimum vector length standard extensions",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl256b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl64b,
>> +  /* UPPERCAE_NAME */ ZVL64B,
>> +  /* FULL_NAME */ "Minimum vector length standard extensions",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl32b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl65536b,
>> +  /* UPPERCAE_NAME */ ZVL65536B,
>> +  /* FULL_NAME */ "zvl65536b extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl32768b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zvl8192b,
>> +  /* UPPERCAE_NAME */ ZVL8192B,
>> +  /* FULL_NAME */ "zvl8192b extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zvl4096b"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zvl,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zhinx,
>> +  /* UPPERCAE_NAME */ ZHINX,
>> +  /* FULL_NAME */ "Half-precision floating-point in integer registers 
>> extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zhinxmin"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zinx,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ zhinxmin,
>> +  /* UPPERCAE_NAME */ ZHINXMIN,
>> +  /* FULL_NAME */ "Minimal half-precision floating-point in integer 
>> registers extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zfinx"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ zinx,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ sdtrig,
>> +  /* UPPERCAE_NAME */ SDTRIG,
>> +  /* FULL_NAME */ "sdtrig extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sd,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ smaia,
>> +  /* UPPERCAE_NAME */ SMAIA,
>> +  /* FULL_NAME */ "Advanced interrupt architecture extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"ssaia"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sm,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ smepmp,
>> +  /* UPPERCAE_NAME */ SMEPMP,
>> +  /* FULL_NAME */ "PMP Enhancements for memory access and execution 
>> prevention on Machine mode",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sm,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ smmpm,
>> +  /* UPPERCAE_NAME */ SMMPM,
>> +  /* FULL_NAME */ "smmpm extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sm,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ smnpm,
>> +  /* UPPERCAE_NAME */ SMNPM,
>> +  /* FULL_NAME */ "smnpm extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sm,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ smstateen,
>> +  /* UPPERCAE_NAME */ SMSTATEEN,
>> +  /* FULL_NAME */ "State enable extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"ssstateen"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sm,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ ssaia,
>> +  /* UPPERCAE_NAME */ SSAIA,
>> +  /* FULL_NAME */ "Advanced interrupt architecture extension for 
>> supervisor-mode",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ ss,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ sscofpmf,
>> +  /* UPPERCAE_NAME */ SSCOFPMF,
>> +  /* FULL_NAME */ "Count overflow & filtering extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ ss,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ ssnpm,
>> +  /* UPPERCAE_NAME */ SSNPM,
>> +  /* FULL_NAME */ "ssnpm extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ ss,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ sspm,
>> +  /* UPPERCAE_NAME */ SSPM,
>> +  /* FULL_NAME */ "sspm extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ ss,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ ssstateen,
>> +  /* UPPERCAE_NAME */ SSSTATEEN,
>> +  /* FULL_NAME */ "State-enable extension for supervisor-mode",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ ss,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ sstc,
>> +  /* UPPERCAE_NAME */ SSTC,
>> +  /* FULL_NAME */ "Supervisor-mode timer interrupts extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({"zicsr"}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ ss,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ ssstrict,
>> +  /* UPPERCAE_NAME */ SSSTRICT,
>> +  /* FULL_NAME */ "ssstrict extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ ss,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ supm,
>> +  /* UPPERCAE_NAME */ SUPM,
>> +  /* FULL_NAME */ "supm extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ su,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ svinval,
>> +  /* UPPERCAE_NAME */ SVINVAL,
>> +  /* FULL_NAME */ "Fine-grained address-translation cache invalidation 
>> extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sv,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ svnapot,
>> +  /* UPPERCAE_NAME */ SVNAPOT,
>> +  /* FULL_NAME */ "NAPOT translation contiguity extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sv,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ svpbmt,
>> +  /* UPPERCAE_NAME */ SVPBMT,
>> +  /* FULL_NAME */ "Page-based memory types extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sv,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ svvptc,
>> +  /* UPPERCAE_NAME */ SVVPTC,
>> +  /* FULL_NAME */ "svvptc extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sv,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ svadu,
>> +  /* UPPERCAE_NAME */ SVADU,
>> +  /* FULL_NAME */ "Hardware Updating of A/D Bits extension",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sv,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +DEFINE_RISCV_EXT(
>> +  /* NAME */ svade,
>> +  /* UPPERCAE_NAME */ SVADE,
>> +  /* FULL_NAME */ "Cause exception when hardware updating of A/D bits is 
>> disabled",
>> +  /* DESC */ "",
>> +  /* URL */ ,
>> +  /* DEP_EXTS */ ({}),
>> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),
>> +  /* FLAG_GROUP */ sv,
>> +  /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
>> +  /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
>> +  /* EXTRA_EXTENSION_FLAGS */ 0)
>> +
>> +#include "riscv-ext-corev.def"
>> +#include "riscv-ext-sifive.def"
>> +#include "riscv-ext-thead.def"
>> +#include "riscv-ext-ventana.def"
>> --
>> 2.34.1
>>

Reply via email to