[llvm] [LLVM][TableGen] Speed up sorting of intrinsics (PR #109230)
Rahul Joshi via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 18 21:43:59 PDT 2024
https://github.com/jurahul updated https://github.com/llvm/llvm-project/pull/109230
>From 41e95d28ef1f56f0037b81f3edd1c71fc197ba37 Mon Sep 17 00:00:00 2001
From: Rahul Joshi <rjoshi at nvidia.com>
Date: Wed, 18 Sep 2024 21:34:00 -0700
Subject: [PATCH] [LLVM][TableGen] Speed up sorting of intrinsics
Speed up sorting of intrinsics by using the TargetPrefix to only
discriminate beteween target dependent vs target independent intrinsics
where target independent ones need to be sorted before target dependent
ones. When comaring two target dependent intrinsics, the Name already
includes llvm.<TargetPrefix> as a suffix, so no need to needlessly
compare it separately.
---
llvm/utils/TableGen/Basic/CodeGenIntrinsics.cpp | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/llvm/utils/TableGen/Basic/CodeGenIntrinsics.cpp b/llvm/utils/TableGen/Basic/CodeGenIntrinsics.cpp
index 05104e938b8486..9e1a3ac17ce9a4 100644
--- a/llvm/utils/TableGen/Basic/CodeGenIntrinsics.cpp
+++ b/llvm/utils/TableGen/Basic/CodeGenIntrinsics.cpp
@@ -49,11 +49,14 @@ CodeGenIntrinsicTable::CodeGenIntrinsicTable(const RecordKeeper &RC) {
for (const Record *Def : Defs)
Intrinsics.push_back(CodeGenIntrinsic(Def, Ctx));
- llvm::sort(Intrinsics,
- [](const CodeGenIntrinsic &LHS, const CodeGenIntrinsic &RHS) {
- return std::tie(LHS.TargetPrefix, LHS.Name) <
- std::tie(RHS.TargetPrefix, RHS.Name);
- });
+ llvm::sort(Intrinsics, [](const CodeGenIntrinsic &LHS,
+ const CodeGenIntrinsic &RHS) {
+ // Order target independent intrinsics before target dependent ones.
+ bool LHSHasTarget = !LHS.TargetPrefix.empty();
+ bool RHSHasTarget = !RHS.TargetPrefix.empty();
+ return std::tie(LHSHasTarget, LHS.Name) < std::tie(RHSHasTarget, RHS.Name);
+ });
+
Targets.push_back({"", 0, 0});
for (size_t I = 0, E = Intrinsics.size(); I < E; ++I)
if (Intrinsics[I].TargetPrefix != Targets.back().Name) {
More information about the llvm-commits
mailing list