[llvm] 683c3b8 - [RISCV] Allocate Feature Bits for Zilsd/Zclsd/Zcmp (#135197)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 25 11:06:07 PDT 2025
Author: Sam Elliott
Date: 2025-04-25T11:06:04-07:00
New Revision: 683c3b8b7ea824427c177aa17db95f75d47a3d6b
URL: https://github.com/llvm/llvm-project/commit/683c3b8b7ea824427c177aa17db95f75d47a3d6b
DIFF: https://github.com/llvm/llvm-project/commit/683c3b8b7ea824427c177aa17db95f75d47a3d6b.diff
LOG: [RISCV] Allocate Feature Bits for Zilsd/Zclsd/Zcmp (#135197)
As proposed in https://github.com/riscv-non-isa/riscv-c-api-doc/pull/104
No real compiler-rt implementation, as these are not exposed by Linux.
Added:
Modified:
compiler-rt/lib/builtins/cpu_model/riscv.c
llvm/lib/Target/RISCV/RISCVFeatures.td
Removed:
################################################################################
diff --git a/compiler-rt/lib/builtins/cpu_model/riscv.c b/compiler-rt/lib/builtins/cpu_model/riscv.c
index 6879c2ad48264..4d0fda473c87e 100644
--- a/compiler-rt/lib/builtins/cpu_model/riscv.c
+++ b/compiler-rt/lib/builtins/cpu_model/riscv.c
@@ -128,6 +128,12 @@ 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)
#if defined(__linux__)
diff --git a/llvm/lib/Target/RISCV/RISCVFeatures.td b/llvm/lib/Target/RISCV/RISCVFeatures.td
index 188043b0c143c..0ed8cd5aa6de2 100644
--- a/llvm/lib/Target/RISCV/RISCVFeatures.td
+++ b/llvm/lib/Target/RISCV/RISCVFeatures.td
@@ -182,7 +182,8 @@ def NoHasStdExtZicfiss : Predicate<"!Subtarget->hasStdExtZicfiss()">;
def FeatureStdExtZilsd
: RISCVExtension<1, 0,
- "Load/Store Pair Instructions">;
+ "Load/Store Pair Instructions">,
+ RISCVExtensionBitmask<1, 8>;
def HasStdExtZilsd : Predicate<"Subtarget->hasStdExtZilsd()">,
AssemblerPredicate<(all_of FeatureStdExtZilsd),
"'Zilsd' (Load/Store pair instructions)">;
@@ -420,7 +421,8 @@ def FeatureStdExtZcf
def FeatureStdExtZclsd
: RISCVExtension<1, 0,
"Compressed Load/Store Pair Instructions",
- [FeatureStdExtZilsd, FeatureStdExtZca]>;
+ [FeatureStdExtZilsd, FeatureStdExtZca]>,
+ RISCVExtensionBitmask<1, 9>;
def HasStdExtZclsd : Predicate<"Subtarget->hasStdExtZclsd()">,
AssemblerPredicate<(all_of FeatureStdExtZclsd),
"'Zclsd' (Compressed Load/Store pair instructions)">;
@@ -428,7 +430,8 @@ def HasStdExtZclsd : Predicate<"Subtarget->hasStdExtZclsd()">,
def FeatureStdExtZcmp
: RISCVExtension<1, 0,
"sequenced instructions for code-size reduction",
- [FeatureStdExtZca]>;
+ [FeatureStdExtZca]>,
+ RISCVExtensionBitmask<1, 10>;
def HasStdExtZcmp : Predicate<"Subtarget->hasStdExtZcmp() && !Subtarget->hasStdExtC()">,
AssemblerPredicate<(all_of FeatureStdExtZcmp),
"'Zcmp' (sequenced instructions for code-size reduction)">;
More information about the llvm-commits
mailing list