summaryrefslogtreecommitdiff
path: root/llvm/utils/TableGen/Basic/RISCVTargetDefEmitter.cpp
diff options
context:
space:
mode:
authorPengcheng Wang <wangpengcheng.pp@bytedance.com>2025-04-14 19:18:38 +0800
committerGitHub <noreply@github.com>2025-04-14 19:18:38 +0800
commit90c01f4bad3132fcff4a73fb39efb64fe4c524b6 (patch)
tree21dfc299f7b910c59d99bd5a14f7849327fc8644 /llvm/utils/TableGen/Basic/RISCVTargetDefEmitter.cpp
parente4a672bc17a2a7dc39e51c9f5e656d705312a12b (diff)
[RISCV] Add missing bitmask for some extensions (#135599)
According to: https://github.com/riscv-non-isa/riscv-c-api-doc/blob/main/src/c-api.adoc#extension-bitmask-definitions And we sort the bitmask by group id and then bit position.
Diffstat (limited to 'llvm/utils/TableGen/Basic/RISCVTargetDefEmitter.cpp')
-rw-r--r--llvm/utils/TableGen/Basic/RISCVTargetDefEmitter.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/utils/TableGen/Basic/RISCVTargetDefEmitter.cpp b/llvm/utils/TableGen/Basic/RISCVTargetDefEmitter.cpp
index 8e4acf96c3da..df14c77233ca 100644
--- a/llvm/utils/TableGen/Basic/RISCVTargetDefEmitter.cpp
+++ b/llvm/utils/TableGen/Basic/RISCVTargetDefEmitter.cpp
@@ -224,7 +224,12 @@ static void emitRISCVExtensionBitmask(const RecordKeeper &RK, raw_ostream &OS) {
std::vector<const Record *> Extensions =
RK.getAllDerivedDefinitionsIfDefined("RISCVExtensionBitmask");
llvm::sort(Extensions, [](const Record *Rec1, const Record *Rec2) {
- return getExtensionName(Rec1) < getExtensionName(Rec2);
+ unsigned GroupID1 = Rec1->getValueAsInt("GroupID");
+ unsigned GroupID2 = Rec2->getValueAsInt("GroupID");
+ if (GroupID1 != GroupID2)
+ return GroupID1 < GroupID2;
+
+ return Rec1->getValueAsInt("BitPos") < Rec2->getValueAsInt("BitPos");
});
#ifndef NDEBUG