[llvm-branch-commits] [llvm] [CodeGen] Add MachineBlockHashInfoAnalysis for the new pass manager (PR #192911)
Vitaly Buka via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Apr 20 12:52:12 PDT 2026
https://github.com/vitalybuka updated https://github.com/llvm/llvm-project/pull/192911
>From 8e22e55a4330c8ab459604eca6aa13b770681ac7 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at google.com>
Date: Mon, 20 Apr 2026 01:14:58 -0700
Subject: [PATCH 1/4] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20ch?=
=?UTF-8?q?anges=20to=20main=20this=20commit=20is=20based=20on?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.7
[skip ci]
---
llvm/lib/CodeGen/MachineBlockHashInfo.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/CodeGen/MachineBlockHashInfo.cpp b/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
index 3aa3823731396..eeddaf6d48de4 100644
--- a/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
+++ b/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
@@ -11,6 +11,8 @@
//===----------------------------------------------------------------------===//
#include "llvm/CodeGen/MachineBlockHashInfo.h"
+#include "llvm/ADT/Hashing.h"
+#include "llvm/CodeGen/MachineStableHash.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/InitializePasses.h"
#include "llvm/Target/TargetMachine.h"
@@ -25,8 +27,8 @@ static uint64_t hashBlock(const MachineBasicBlock &MBB, bool HashOperands) {
Hash = hashing::detail::hash_16_bytes(Hash, MI.getOpcode());
if (HashOperands) {
for (unsigned i = 0; i < MI.getNumOperands(); i++) {
- Hash =
- hashing::detail::hash_16_bytes(Hash, hash_value(MI.getOperand(i)));
+ Hash = hashing::detail::hash_16_bytes(
+ Hash, stableHashValue(MI.getOperand(i)));
}
}
}
>From 4da84015363419bb8a6eeb61d1fafa492bb707f2 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at google.com>
Date: Mon, 20 Apr 2026 01:18:29 -0700
Subject: [PATCH 2/4] new line
Created using spr 1.3.7
---
llvm/lib/CodeGen/MachineBlockHashInfo.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/llvm/lib/CodeGen/MachineBlockHashInfo.cpp b/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
index 5b0569cbdba26..93b731fcf2748 100644
--- a/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
+++ b/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
@@ -159,4 +159,4 @@ MachineFunctionPass *llvm::createMachineBlockHashInfoPass() {
MachineFunctionPass *
llvm::createMachineBlockHashInfoPrinterPass(raw_ostream &OS) {
return new MachineBlockHashInfoPrinter(OS);
-}
\ No newline at end of file
+}
>From 354d62c00ac6a00c75c383a742ff16d3005fc410 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at google.com>
Date: Mon, 20 Apr 2026 12:41:54 -0700
Subject: [PATCH 3/4] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20ch?=
=?UTF-8?q?anges=20introduced=20through=20rebase?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.7
[skip ci]
---
.../llvm/CodeGen/MachineBlockHashInfo.h | 15 +++++++++++++--
llvm/lib/CodeGen/MachineBlockHashInfo.cpp | 19 ++++++++++++++++---
2 files changed, 29 insertions(+), 5 deletions(-)
diff --git a/llvm/include/llvm/CodeGen/MachineBlockHashInfo.h b/llvm/include/llvm/CodeGen/MachineBlockHashInfo.h
index 6f26819d566ae..b6df22b135bfe 100644
--- a/llvm/include/llvm/CodeGen/MachineBlockHashInfo.h
+++ b/llvm/include/llvm/CodeGen/MachineBlockHashInfo.h
@@ -13,6 +13,7 @@
#ifndef LLVM_CODEGEN_MACHINEBLOCKHASHINFO_H
#define LLVM_CODEGEN_MACHINEBLOCKHASHINFO_H
+#include "llvm/ADT/DenseMap.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
namespace llvm {
@@ -95,9 +96,19 @@ struct BlendedBlockHash {
uint16_t NeighborHash{0};
};
-class MachineBlockHashInfo : public MachineFunctionPass {
+/// Result object for MachineBlockHashInfo.
+class MachineBlockHashInfoResult {
DenseMap<const MachineBasicBlock *, uint64_t> MBBHashInfo;
+public:
+ MachineBlockHashInfoResult();
+ explicit MachineBlockHashInfoResult(const MachineFunction &MBB);
+ uint64_t getMBBHash(const MachineBasicBlock &MBB) const;
+};
+
+class MachineBlockHashInfo : public MachineFunctionPass {
+ MachineBlockHashInfoResult Result;
+
public:
static char ID;
MachineBlockHashInfo();
@@ -108,7 +119,7 @@ class MachineBlockHashInfo : public MachineFunctionPass {
bool runOnMachineFunction(MachineFunction &F) override;
- uint64_t getMBBHash(const MachineBasicBlock &MBB);
+ uint64_t getMBBHash(const MachineBasicBlock &MBB) const;
};
} // end namespace llvm
diff --git a/llvm/lib/CodeGen/MachineBlockHashInfo.cpp b/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
index eeddaf6d48de4..9810c72709cbf 100644
--- a/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
+++ b/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
@@ -16,6 +16,7 @@
#include "llvm/CodeGen/Passes.h"
#include "llvm/InitializePasses.h"
#include "llvm/Target/TargetMachine.h"
+#include <utility>
using namespace llvm;
@@ -63,7 +64,10 @@ struct CollectHashInfo {
uint64_t NeighborHash;
};
-bool MachineBlockHashInfo::runOnMachineFunction(MachineFunction &F) {
+MachineBlockHashInfoResult::MachineBlockHashInfoResult() = default;
+
+MachineBlockHashInfoResult::MachineBlockHashInfoResult(
+ const MachineFunction &F) {
DenseMap<const MachineBasicBlock *, CollectHashInfo> HashInfos;
uint16_t Offset = 0;
// Initialize hash components
@@ -103,12 +107,21 @@ bool MachineBlockHashInfo::runOnMachineFunction(MachineFunction &F) {
fold_64_to_16(HashInfo.NeighborHash));
MBBHashInfo[&MBB] = BlendedHash.combine();
}
+}
+uint64_t
+MachineBlockHashInfoResult::getMBBHash(const MachineBasicBlock &MBB) const {
+ auto it = MBBHashInfo.find(&MBB);
+ return it == MBBHashInfo.end() ? 0 : it->second;
+}
+
+bool MachineBlockHashInfo::runOnMachineFunction(MachineFunction &F) {
+ Result = MachineBlockHashInfoResult{F};
return false;
}
-uint64_t MachineBlockHashInfo::getMBBHash(const MachineBasicBlock &MBB) {
- return MBBHashInfo[&MBB];
+uint64_t MachineBlockHashInfo::getMBBHash(const MachineBasicBlock &MBB) const {
+ return Result.getMBBHash(MBB);
}
MachineFunctionPass *llvm::createMachineBlockHashInfoPass() {
>From 711cf048123c60a14b471e58708029a0d8663036 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at google.com>
Date: Mon, 20 Apr 2026 12:51:31 -0700
Subject: [PATCH 4/4] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20ch?=
=?UTF-8?q?anges=20introduced=20through=20rebase?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.7
[skip ci]
---
llvm/lib/CodeGen/MachineBlockHashInfo.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/llvm/lib/CodeGen/MachineBlockHashInfo.cpp b/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
index 9810c72709cbf..cf89b4097a73c 100644
--- a/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
+++ b/llvm/lib/CodeGen/MachineBlockHashInfo.cpp
@@ -16,7 +16,6 @@
#include "llvm/CodeGen/Passes.h"
#include "llvm/InitializePasses.h"
#include "llvm/Target/TargetMachine.h"
-#include <utility>
using namespace llvm;
More information about the llvm-branch-commits
mailing list