[llvm] LiveVariables: Use Register (PR #120204)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 17 01:35:21 PST 2024
https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/120204
None
>From 88d956514c7146af01a9dc45c9eda89a857319dc Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Fri, 13 Dec 2024 15:06:10 +0900
Subject: [PATCH] LiveVariables: Use Register
---
llvm/include/llvm/CodeGen/LiveVariables.h | 8 +++---
llvm/lib/CodeGen/LiveVariables.cpp | 30 +++++++++++------------
2 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/llvm/include/llvm/CodeGen/LiveVariables.h b/llvm/include/llvm/CodeGen/LiveVariables.h
index 89d1b5edf3fa63..1a8c32b37d5521 100644
--- a/llvm/include/llvm/CodeGen/LiveVariables.h
+++ b/llvm/include/llvm/CodeGen/LiveVariables.h
@@ -156,8 +156,8 @@ class LiveVariables {
void HandlePhysRegUse(Register Reg, MachineInstr &MI);
void HandlePhysRegDef(Register Reg, MachineInstr *MI,
- SmallVectorImpl<unsigned> &Defs);
- void UpdatePhysRegDefs(MachineInstr &MI, SmallVectorImpl<unsigned> &Defs);
+ SmallVectorImpl<Register> &Defs);
+ void UpdatePhysRegDefs(MachineInstr &MI, SmallVectorImpl<Register> &Defs);
/// FindLastRefOrPartRef - Return the last reference or partial reference of
/// the specified register.
@@ -167,7 +167,7 @@ class LiveVariables {
/// register. Also returns the sub-registers that're defined by the
/// instruction.
MachineInstr *FindLastPartialDef(Register Reg,
- SmallSet<unsigned, 4> &PartDefRegs);
+ SmallSet<Register, 4> &PartDefRegs);
/// analyzePHINodes - Gather information about the PHI nodes in here. In
/// particular, we want to map the variable information of a virtual
@@ -175,7 +175,7 @@ class LiveVariables {
/// is coming from.
void analyzePHINodes(const MachineFunction& Fn);
- void runOnInstr(MachineInstr &MI, SmallVectorImpl<unsigned> &Defs,
+ void runOnInstr(MachineInstr &MI, SmallVectorImpl<Register> &Defs,
unsigned NumRegs);
void runOnBlock(MachineBasicBlock *MBB, unsigned NumRegs);
diff --git a/llvm/lib/CodeGen/LiveVariables.cpp b/llvm/lib/CodeGen/LiveVariables.cpp
index f17d60dc22dda9..55428ab7832de4 100644
--- a/llvm/lib/CodeGen/LiveVariables.cpp
+++ b/llvm/lib/CodeGen/LiveVariables.cpp
@@ -217,8 +217,8 @@ void LiveVariables::HandleVirtRegDef(Register Reg, MachineInstr &MI) {
/// Also returns the sub-registers that're defined by the instruction.
MachineInstr *
LiveVariables::FindLastPartialDef(Register Reg,
- SmallSet<unsigned, 4> &PartDefRegs) {
- unsigned LastDefReg = 0;
+ SmallSet<Register, 4> &PartDefRegs) {
+ Register LastDefReg = 0;
unsigned LastDefDist = 0;
MachineInstr *LastDef = nullptr;
for (MCPhysReg SubReg : TRI->subregs(Reg)) {
@@ -264,14 +264,14 @@ void LiveVariables::HandlePhysRegUse(Register Reg, MachineInstr &MI) {
// ...
// = EAX
// All of the sub-registers must have been defined before the use of Reg!
- SmallSet<unsigned, 4> PartDefRegs;
+ SmallSet<Register, 4> PartDefRegs;
MachineInstr *LastPartialDef = FindLastPartialDef(Reg, PartDefRegs);
// If LastPartialDef is NULL, it must be using a livein register.
if (LastPartialDef) {
LastPartialDef->addOperand(MachineOperand::CreateReg(Reg, true/*IsDef*/,
true/*IsImp*/));
PhysRegDef[Reg] = LastPartialDef;
- SmallSet<unsigned, 8> Processed;
+ SmallSet<MCPhysReg, 8> Processed;
for (MCPhysReg SubReg : TRI->subregs(Reg)) {
if (Processed.count(SubReg))
continue;
@@ -460,7 +460,7 @@ void LiveVariables::HandleRegMask(const MachineOperand &MO, unsigned NumRegs) {
}
void LiveVariables::HandlePhysRegDef(Register Reg, MachineInstr *MI,
- SmallVectorImpl<unsigned> &Defs) {
+ SmallVectorImpl<Register> &Defs) {
// What parts of the register are previously defined?
SmallSet<unsigned, 32> Live;
if (PhysRegDef[Reg] || PhysRegUse[Reg]) {
@@ -499,7 +499,7 @@ void LiveVariables::HandlePhysRegDef(Register Reg, MachineInstr *MI,
}
void LiveVariables::UpdatePhysRegDefs(MachineInstr &MI,
- SmallVectorImpl<unsigned> &Defs) {
+ SmallVectorImpl<Register> &Defs) {
while (!Defs.empty()) {
Register Reg = Defs.pop_back_val();
for (MCPhysReg SubReg : TRI->subregs_inclusive(Reg)) {
@@ -510,7 +510,7 @@ void LiveVariables::UpdatePhysRegDefs(MachineInstr &MI,
}
void LiveVariables::runOnInstr(MachineInstr &MI,
- SmallVectorImpl<unsigned> &Defs,
+ SmallVectorImpl<Register> &Defs,
unsigned NumRegs) {
assert(!MI.isDebugOrPseudoInstr());
// Process all of the operands of the instruction...
@@ -522,8 +522,8 @@ void LiveVariables::runOnInstr(MachineInstr &MI,
NumOperandsToProcess = 1;
// Clear kill and dead markers. LV will recompute them.
- SmallVector<unsigned, 4> UseRegs;
- SmallVector<unsigned, 4> DefRegs;
+ SmallVector<Register, 4> UseRegs;
+ SmallVector<Register, 4> DefRegs;
SmallVector<unsigned, 1> RegMasks;
for (unsigned i = 0; i != NumOperandsToProcess; ++i) {
MachineOperand &MO = MI.getOperand(i);
@@ -531,7 +531,7 @@ void LiveVariables::runOnInstr(MachineInstr &MI,
RegMasks.push_back(i);
continue;
}
- if (!MO.isReg() || MO.getReg() == 0)
+ if (!MO.isReg() || !MO.getReg())
continue;
Register MOReg = MO.getReg();
if (MO.isUse()) {
@@ -551,8 +551,8 @@ void LiveVariables::runOnInstr(MachineInstr &MI,
MachineBasicBlock *MBB = MI.getParent();
// Process all uses.
- for (unsigned MOReg : UseRegs) {
- if (Register::isVirtualRegister(MOReg))
+ for (Register MOReg : UseRegs) {
+ if (MOReg.isVirtual())
HandleVirtRegUse(MOReg, MBB, MI);
else if (!MRI->isReserved(MOReg))
HandlePhysRegUse(MOReg, MI);
@@ -563,8 +563,8 @@ void LiveVariables::runOnInstr(MachineInstr &MI,
HandleRegMask(MI.getOperand(Mask), NumRegs);
// Process all defs.
- for (unsigned MOReg : DefRegs) {
- if (Register::isVirtualRegister(MOReg))
+ for (Register MOReg : DefRegs) {
+ if (MOReg.isVirtual())
HandleVirtRegDef(MOReg, MI);
else if (!MRI->isReserved(MOReg))
HandlePhysRegDef(MOReg, &MI, Defs);
@@ -574,7 +574,7 @@ void LiveVariables::runOnInstr(MachineInstr &MI,
void LiveVariables::runOnBlock(MachineBasicBlock *MBB, unsigned NumRegs) {
// Mark live-in registers as live-in.
- SmallVector<unsigned, 4> Defs;
+ SmallVector<Register, 4> Defs;
for (const auto &LI : MBB->liveins()) {
assert(Register::isPhysicalRegister(LI.PhysReg) &&
"Cannot have a live-in virtual register!");
More information about the llvm-commits
mailing list