]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
RISC-V: Add C API feature bits for existing extensions
authorChristoph Müllner <christoph.muellner@vrull.eu>
Sun, 17 May 2026 20:07:41 +0000 (22:07 +0200)
committerChristoph Müllner <christoph.muellner@vrull.eu>
Thu, 21 May 2026 10:54:08 +0000 (12:54 +0200)
The RISC-V C API already allocates feature bits for b, e, h,
zilsd, zclsd, zcmp, zifencei, and zmmul.  GCC already has
these extensions in riscv-ext.def, but the FMV bitmask table and
the libgcc copy of the bit definitions did not include them.

This patch only adds metadata.  It does not add ISA extension
support.

gcc/ChangeLog:

* common/config/riscv/riscv-ext-bitmask.def: Add b, e, h,
zilsd, zclsd, zcmp, zifencei, and zmmul.

libgcc/ChangeLog:

* config/riscv/feature_bits.c (B_GROUPID, B_BITMASK,
E_GROUPID, E_BITMASK, H_GROUPID, H_BITMASK,
ZILSD_GROUPID, ZILSD_BITMASK, ZCLSD_GROUPID,
ZCLSD_BITMASK, ZCMP_GROUPID, ZCMP_BITMASK,
ZIFENCEI_GROUPID, ZIFENCEI_BITMASK, ZMMUL_GROUPID,
ZMMUL_BITMASK): Define.

Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
gcc/common/config/riscv/riscv-ext-bitmask.def
libgcc/config/riscv/feature_bits.c

index 74bac07a7ab07785ea1f011a4444c4541e7ede0f..4c8cd3bc466a09b3f9f3fc432cff618be2f7878a 100644 (file)
@@ -27,12 +27,16 @@ along with GCC; see the file COPYING3.  If not see
    minimal feature bits.  */
 
 RISCV_EXT_BITMASK ("i",                        0,  8)
+RISCV_EXT_BITMASK ("e",                        0,  4)
 RISCV_EXT_BITMASK ("m",                        0, 12)
+RISCV_EXT_BITMASK ("zmmul",            1, 12)
 RISCV_EXT_BITMASK ("a",                        0,  0)
 RISCV_EXT_BITMASK ("f",                        0,  5)
 RISCV_EXT_BITMASK ("d",                        0,  3)
 RISCV_EXT_BITMASK ("c",                        0,  2)
+RISCV_EXT_BITMASK ("h",                        0,  7)
 RISCV_EXT_BITMASK ("v",                        0, 21)
+RISCV_EXT_BITMASK ("b",                        0,  1)
 RISCV_EXT_BITMASK ("zba",              0, 27)
 RISCV_EXT_BITMASK ("zbb",              0, 28)
 RISCV_EXT_BITMASK ("zbs",              0, 33)
@@ -79,5 +83,9 @@ 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 ("zilsd",            1,  8)
+RISCV_EXT_BITMASK ("zclsd",            1,  9)
+RISCV_EXT_BITMASK ("zcmp",             1, 10)
+RISCV_EXT_BITMASK ("zifencei",         1, 11)
 
 #undef RISCV_EXT_BITMASK
index dd297b1be5c07cc0577a490b33399b6e1827df00..1f1c11e4c4bb266c7ce7dd79f3c8b51f94258c93 100644 (file)
@@ -38,12 +38,18 @@ struct {
 
 #define A_GROUPID 0
 #define A_BITMASK (1ULL << 0)
+#define B_GROUPID 0
+#define B_BITMASK (1ULL << 1)
 #define C_GROUPID 0
 #define C_BITMASK (1ULL << 2)
 #define D_GROUPID 0
 #define D_BITMASK (1ULL << 3)
+#define E_GROUPID 0
+#define E_BITMASK (1ULL << 4)
 #define F_GROUPID 0
 #define F_BITMASK (1ULL << 5)
+#define H_GROUPID 0
+#define H_BITMASK (1ULL << 7)
 #define I_GROUPID 0
 #define I_BITMASK (1ULL << 8)
 #define M_GROUPID 0
@@ -142,6 +148,16 @@ struct {
 #define ZCMOP_BITMASK (1ULL << 6)
 #define ZAWRS_GROUPID 1
 #define ZAWRS_BITMASK (1ULL << 7)
+#define ZILSD_GROUPID 1
+#define ZILSD_BITMASK (1ULL << 8)
+#define ZCLSD_GROUPID 1
+#define ZCLSD_BITMASK (1ULL << 9)
+#define ZCMP_GROUPID 1
+#define ZCMP_BITMASK (1ULL << 10)
+#define ZIFENCEI_GROUPID 1
+#define ZIFENCEI_BITMASK (1ULL << 11)
+#define ZMMUL_GROUPID 1
+#define ZMMUL_BITMASK (1ULL << 12)
 
 #define SET_EXT(EXT) features[EXT##_GROUPID] |= EXT##_BITMASK