[llvm] 6fbbcb4 - [TableGen] Fix ordering of register classes. (#67245)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 24 02:41:17 PDT 2023
Author: Ivan Kosarev
Date: 2023-09-24T10:41:12+01:00
New Revision: 6fbbcb4ee724e23edd0fcd5b51877aff19dabd77
URL: https://github.com/llvm/llvm-project/commit/6fbbcb4ee724e23edd0fcd5b51877aff19dabd77
DIFF: https://github.com/llvm/llvm-project/commit/6fbbcb4ee724e23edd0fcd5b51877aff19dabd77.diff
LOG: [TableGen] Fix ordering of register classes. (#67245)
This commit:
TableGen: Try to fix expensive checks failures
d2a9b87fee84766b28bd39b46c913da00e1450f4
fixed one of the sort() calls, but there's another.
Caught on expensive-checks buildbots that started to fail sporadically
after submitting
[AMDGPU] Add True16 register classes.
469b3bfad20550968ac428738eb1f8bb8ce3e96d
Added:
Modified:
llvm/utils/TableGen/CodeGenRegisters.cpp
Removed:
################################################################################
diff --git a/llvm/utils/TableGen/CodeGenRegisters.cpp b/llvm/utils/TableGen/CodeGenRegisters.cpp
index b8dde6e946a422f..bbe0bc9eafebbbe 100644
--- a/llvm/utils/TableGen/CodeGenRegisters.cpp
+++ b/llvm/utils/TableGen/CodeGenRegisters.cpp
@@ -1036,8 +1036,8 @@ void CodeGenRegisterClass::computeSubClasses(CodeGenRegBank &RegBank) {
std::optional<std::pair<CodeGenRegisterClass *, CodeGenRegisterClass *>>
CodeGenRegisterClass::getMatchingSubClassWithSubRegs(
CodeGenRegBank &RegBank, const CodeGenSubRegIndex *SubIdx) const {
- auto SizeOrder = [this](const CodeGenRegisterClass *A,
- const CodeGenRegisterClass *B) {
+ auto WeakSizeOrder = [this](const CodeGenRegisterClass *A,
+ const CodeGenRegisterClass *B) {
// If there are multiple, identical register classes, prefer the original
// register class.
if (A == B)
@@ -1059,7 +1059,7 @@ CodeGenRegisterClass::getMatchingSubClassWithSubRegs(
for (auto &RC : RegClasses)
if (SuperRegRCsBV[RC.EnumValue])
SuperRegRCs.emplace_back(&RC);
- llvm::stable_sort(SuperRegRCs, SizeOrder);
+ llvm::stable_sort(SuperRegRCs, WeakSizeOrder);
assert(SuperRegRCs.front() == BiggestSuperRegRC &&
"Biggest class wasn't first");
@@ -1072,11 +1072,11 @@ CodeGenRegisterClass::getMatchingSubClassWithSubRegs(
if (SuperRegClassesBV.any())
SuperRegClasses.push_back(std::make_pair(&RC, SuperRegClassesBV));
}
- llvm::sort(SuperRegClasses,
- [&](const std::pair<CodeGenRegisterClass *, BitVector> &A,
- const std::pair<CodeGenRegisterClass *, BitVector> &B) {
- return SizeOrder(A.first, B.first);
- });
+ llvm::stable_sort(SuperRegClasses,
+ [&](const std::pair<CodeGenRegisterClass *, BitVector> &A,
+ const std::pair<CodeGenRegisterClass *, BitVector> &B) {
+ return WeakSizeOrder(A.first, B.first);
+ });
// Find the biggest subclass and subreg class such that R:subidx is in the
// subreg class for all R in subclass.
More information about the llvm-commits
mailing list