https://gcc.gnu.org/g:af293cdaf88d34890542efc84d50c7453f9d8e4d
commit r17-640-gaf293cdaf88d34890542efc84d50c7453f9d8e4d Author: Christoph Müllner <[email protected]> Date: Sun May 17 22:15:35 2026 +0200 RISC-V: Add C API feature bits from riscv-c-api-doc PR #185 Add RISC-V C API feature bit metadata for these extensions from riscv-c-api-doc PR #185: supm, zicntr, zihpm, zfbfmin, zvfbfmin, zvfbfwma, zicbom, zaamo, zalrsc, zabha, zalasr, zicbop, and zicfilp. This patch only adds metadata. It does not add ISA extension support or new runtime probing. gcc/ChangeLog: * common/config/riscv/riscv-ext-bitmask.def: Add supm, zicntr, zihpm, zfbfmin, zvfbfmin, zvfbfwma, zicbom, zaamo, zalrsc, zabha, zalasr, zicbop, and zicfilp. * config/riscv/riscv-ext.def: Add C API bit positions for supm, zicntr, zihpm, zfbfmin, zvfbfmin, zvfbfwma, zicbom, zaamo, zalrsc, zabha, zalasr, zicbop, and zicfilp. libgcc/ChangeLog: * config/riscv/feature_bits.c (SUPM_GROUPID, SUPM_BITMASK, ZICNTR_GROUPID, ZICNTR_BITMASK, ZIHPM_GROUPID, ZIHPM_BITMASK, ZFBFMIN_GROUPID, ZFBFMIN_BITMASK, ZVFBFMIN_GROUPID, ZVFBFMIN_BITMASK, ZVFBFWMA_GROUPID, ZVFBFWMA_BITMASK, ZICBOM_GROUPID, ZICBOM_BITMASK, ZAAMO_GROUPID, ZAAMO_BITMASK, ZALRSC_GROUPID, ZALRSC_BITMASK, ZABHA_GROUPID, ZABHA_BITMASK, ZALASR_GROUPID, ZALASR_BITMASK, ZICBOP_GROUPID, ZICBOP_BITMASK, ZICFILP_GROUPID, ZICFILP_BITMASK): Define. Signed-off-by: Christoph Müllner <[email protected]> Diff: --- gcc/common/config/riscv/riscv-ext-bitmask.def | 13 +++++++ gcc/config/riscv/riscv-ext.def | 52 +++++++++++++-------------- libgcc/config/riscv/feature_bits.c | 26 ++++++++++++++ 3 files changed, 65 insertions(+), 26 deletions(-) diff --git a/gcc/common/config/riscv/riscv-ext-bitmask.def b/gcc/common/config/riscv/riscv-ext-bitmask.def index 4c8cd3bc466a..315ae8fde08a 100644 --- a/gcc/common/config/riscv/riscv-ext-bitmask.def +++ b/gcc/common/config/riscv/riscv-ext-bitmask.def @@ -83,8 +83,21 @@ RISCV_EXT_BITMASK ("zcd", 1, 4) RISCV_EXT_BITMASK ("zcf", 1, 5) RISCV_EXT_BITMASK ("zcmop", 1, 6) RISCV_EXT_BITMASK ("zawrs", 1, 7) +RISCV_EXT_BITMASK ("supm", 1, 14) +RISCV_EXT_BITMASK ("zicntr", 1, 15) +RISCV_EXT_BITMASK ("zihpm", 1, 16) +RISCV_EXT_BITMASK ("zfbfmin", 1, 17) +RISCV_EXT_BITMASK ("zvfbfmin", 1, 18) +RISCV_EXT_BITMASK ("zvfbfwma", 1, 19) +RISCV_EXT_BITMASK ("zicbom", 1, 20) +RISCV_EXT_BITMASK ("zaamo", 1, 21) +RISCV_EXT_BITMASK ("zalrsc", 1, 22) +RISCV_EXT_BITMASK ("zabha", 1, 23) +RISCV_EXT_BITMASK ("zalasr", 1, 24) +RISCV_EXT_BITMASK ("zicbop", 1, 25) RISCV_EXT_BITMASK ("zilsd", 1, 8) RISCV_EXT_BITMASK ("zclsd", 1, 9) +RISCV_EXT_BITMASK ("zicfilp", 1, 26) RISCV_EXT_BITMASK ("zcmp", 1, 10) RISCV_EXT_BITMASK ("zifencei", 1, 11) diff --git a/gcc/config/riscv/riscv-ext.def b/gcc/config/riscv/riscv-ext.def index 1993e8991483..bfa27e725153 100644 --- a/gcc/config/riscv/riscv-ext.def +++ b/gcc/config/riscv/riscv-ext.def @@ -229,8 +229,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({}), /* SUPPORTED_VERSIONS */ ({{1, 0}}), /* FLAG_GROUP */ zi, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 20, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -242,8 +242,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({}), /* SUPPORTED_VERSIONS */ ({{1, 0}}), /* FLAG_GROUP */ zi, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 25, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -333,8 +333,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({"zicsr"}), /* SUPPORTED_VERSIONS */ ({{1, 0}}), /* FLAG_GROUP */ zi, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 26, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -359,8 +359,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({}), /* SUPPORTED_VERSIONS */ ({{2, 0}}), /* FLAG_GROUP */ zi, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 15, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -385,8 +385,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({}), /* SUPPORTED_VERSIONS */ ({{2, 0}}), /* FLAG_GROUP */ zi, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 16, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -489,8 +489,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({}), /* SUPPORTED_VERSIONS */ ({{1, 0}}), /* FLAG_GROUP */ za, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 21, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -528,8 +528,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({"zaamo"}), /* SUPPORTED_VERSIONS */ ({{1, 0}}), /* FLAG_GROUP */ za, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 23, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -554,8 +554,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({}), /* SUPPORTED_VERSIONS */ ({{1, 0}}), /* FLAG_GROUP */ za, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 24, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -567,8 +567,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({}), /* SUPPORTED_VERSIONS */ ({{1, 0}}), /* FLAG_GROUP */ za, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 22, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -621,8 +621,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({"zfhmin"}), /* SUPPORTED_VERSIONS */ ({{1, 0}}), /* FLAG_GROUP */ zf, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 17, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -1165,8 +1165,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({"zve32f"}), /* SUPPORTED_VERSIONS */ ({{1, 0}}), /* FLAG_GROUP */ zvf, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 18, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -1178,8 +1178,8 @@ DEFINE_RISCV_EXT( /* 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, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 19, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( @@ -1999,8 +1999,8 @@ DEFINE_RISCV_EXT( /* DEP_EXTS */ ({}), /* SUPPORTED_VERSIONS */ ({{1, 0}}), /* FLAG_GROUP */ su, - /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED, - /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED, + /* BITMASK_GROUP_ID */ 1, + /* BITMASK_BIT_POSITION*/ 14, /* EXTRA_EXTENSION_FLAGS */ 0) DEFINE_RISCV_EXT( diff --git a/libgcc/config/riscv/feature_bits.c b/libgcc/config/riscv/feature_bits.c index 1f1c11e4c4bb..2ac9b567acb6 100644 --- a/libgcc/config/riscv/feature_bits.c +++ b/libgcc/config/riscv/feature_bits.c @@ -158,6 +158,32 @@ struct { #define ZIFENCEI_BITMASK (1ULL << 11) #define ZMMUL_GROUPID 1 #define ZMMUL_BITMASK (1ULL << 12) +#define SUPM_GROUPID 1 +#define SUPM_BITMASK (1ULL << 14) +#define ZICNTR_GROUPID 1 +#define ZICNTR_BITMASK (1ULL << 15) +#define ZIHPM_GROUPID 1 +#define ZIHPM_BITMASK (1ULL << 16) +#define ZFBFMIN_GROUPID 1 +#define ZFBFMIN_BITMASK (1ULL << 17) +#define ZVFBFMIN_GROUPID 1 +#define ZVFBFMIN_BITMASK (1ULL << 18) +#define ZVFBFWMA_GROUPID 1 +#define ZVFBFWMA_BITMASK (1ULL << 19) +#define ZICBOM_GROUPID 1 +#define ZICBOM_BITMASK (1ULL << 20) +#define ZAAMO_GROUPID 1 +#define ZAAMO_BITMASK (1ULL << 21) +#define ZALRSC_GROUPID 1 +#define ZALRSC_BITMASK (1ULL << 22) +#define ZABHA_GROUPID 1 +#define ZABHA_BITMASK (1ULL << 23) +#define ZALASR_GROUPID 1 +#define ZALASR_BITMASK (1ULL << 24) +#define ZICBOP_GROUPID 1 +#define ZICBOP_BITMASK (1ULL << 25) +#define ZICFILP_GROUPID 1 +#define ZICFILP_BITMASK (1ULL << 26) #define SET_EXT(EXT) features[EXT##_GROUPID] |= EXT##_BITMASK
