[llvm] 5d5aba7 - [X86][NFC] Refine X86 Domain Reassignment for compiling time
Xiang1 Zhang via llvm-commits
llvm-commits at lists.llvm.org
Mon May 30 19:11:31 PDT 2022
Author: Xiang1 Zhang
Date: 2022-05-31T10:10:40+08:00
New Revision: 5d5aba78dbbee75508f01bcaa69aedb2ab79065a
URL: https://github.com/llvm/llvm-project/commit/5d5aba78dbbee75508f01bcaa69aedb2ab79065a
DIFF: https://github.com/llvm/llvm-project/commit/5d5aba78dbbee75508f01bcaa69aedb2ab79065a.diff
LOG: [X86][NFC] Refine X86 Domain Reassignment for compiling time
Differential Revision: https://reviews.llvm.org/D126622
Added:
Modified:
llvm/lib/Target/X86/X86DomainReassignment.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86DomainReassignment.cpp b/llvm/lib/Target/X86/X86DomainReassignment.cpp
index 70a7f8edf6e3d..9d4338deca352 100644
--- a/llvm/lib/Target/X86/X86DomainReassignment.cpp
+++ b/llvm/lib/Target/X86/X86DomainReassignment.cpp
@@ -15,6 +15,7 @@
#include "X86.h"
#include "X86InstrInfo.h"
#include "X86Subtarget.h"
+#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseMapInfo.h"
#include "llvm/ADT/STLExtras.h"
@@ -374,7 +375,7 @@ class X86DomainReassignment : public MachineFunctionPass {
const X86InstrInfo *TII = nullptr;
/// All edges that are included in some closure
- DenseSet<unsigned> EnclosedEdges;
+ BitVector EnclosedEdges{8, false};
/// All instructions that are included in some closure.
DenseMap<MachineInstr *, unsigned> EnclosedInstrs;
@@ -429,10 +430,10 @@ char X86DomainReassignment::ID = 0;
void X86DomainReassignment::visitRegister(Closure &C, Register Reg,
RegDomain &Domain,
SmallVectorImpl<unsigned> &Worklist) {
- if (EnclosedEdges.count(Reg))
+ if (!Reg.isVirtual())
return;
- if (!Reg.isVirtual())
+ if (EnclosedEdges.test(Register::virtReg2Index(Reg)))
return;
if (!MRI->hasOneDef(Reg))
@@ -550,7 +551,7 @@ void X86DomainReassignment::buildClosure(Closure &C, Register Reg) {
// Register already in this closure.
if (!C.insertEdge(CurReg))
continue;
- EnclosedEdges.insert(Reg);
+ EnclosedEdges.set(Register::virtReg2Index(Reg));
MachineInstr *DefMI = MRI->getVRegDef(CurReg);
encloseInstr(C, DefMI);
@@ -742,6 +743,7 @@ bool X86DomainReassignment::runOnMachineFunction(MachineFunction &MF) {
bool Changed = false;
EnclosedEdges.clear();
+ EnclosedEdges.resize(MRI->getNumVirtRegs());
EnclosedInstrs.clear();
std::vector<Closure> Closures;
@@ -756,7 +758,7 @@ bool X86DomainReassignment::runOnMachineFunction(MachineFunction &MF) {
continue;
// Register already in closure.
- if (EnclosedEdges.count(Reg))
+ if (EnclosedEdges.test(Idx))
continue;
// Calculate closure starting with Reg.
More information about the llvm-commits
mailing list