diff options
| author | Pengcheng Wang <wangpengcheng.pp@bytedance.com> | 2025-04-14 19:18:38 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-14 19:18:38 +0800 |
| commit | 90c01f4bad3132fcff4a73fb39efb64fe4c524b6 (patch) | |
| tree | 21dfc299f7b910c59d99bd5a14f7849327fc8644 /llvm/utils/TableGen/Basic/RISCVTargetDefEmitter.cpp | |
| parent | e4a672bc17a2a7dc39e51c9f5e656d705312a12b (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.cpp | 7 |
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 |
