Skip to content

Commit c71564e

Browse files
committed
[llvm][CodeGen] Modifications made based on review comments 4
1 parent f602aa6 commit c71564e

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

llvm/lib/CodeGen/ModuloSchedule.cpp

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -351,17 +351,11 @@ void ModuloScheduleExpander::generateEpilog(
351351
/// basic block with ToReg.
352352
static void replaceRegUsesAfterLoop(Register FromReg, Register ToReg,
353353
MachineBasicBlock *MBB,
354-
MachineRegisterInfo &MRI,
355-
LiveIntervals &LIS,
356-
SmallVector<Register> &NoIntervalRegs) {
354+
MachineRegisterInfo &MRI) {
357355
for (MachineOperand &O :
358356
llvm::make_early_inc_range(MRI.use_operands(FromReg)))
359357
if (O.getParent()->getParent() != MBB)
360358
O.setReg(ToReg);
361-
// The interval will be calculated after the kernel expansion in
362-
// calculateIntervals().
363-
if (!LIS.hasInterval(ToReg))
364-
NoIntervalRegs.push_back(ToReg);
365359
}
366360

367361
/// Return true if the register has a use that occurs outside the
@@ -552,9 +546,10 @@ void ModuloScheduleExpander::generateExistingPhis(
552546
if (VRMap[LastStageNum - np - 1].count(LoopVal))
553547
PhiOp2 = VRMap[LastStageNum - np - 1][LoopVal];
554548

555-
if (IsLast && np == NumPhis - 1)
556-
replaceRegUsesAfterLoop(Def, NewReg, BB, MRI, LIS,
557-
NoIntervalRegs);
549+
if (IsLast && np == NumPhis - 1) {
550+
replaceRegUsesAfterLoop(Def, NewReg, BB, MRI);
551+
NoIntervalRegs.push_back(NewReg);
552+
}
558553
continue;
559554
}
560555
}
@@ -594,8 +589,10 @@ void ModuloScheduleExpander::generateExistingPhis(
594589
// Check if we need to rename any uses that occurs after the loop. The
595590
// register to replace depends on whether the Phi is scheduled in the
596591
// epilog.
597-
if (IsLast && np == NumPhis - 1)
598-
replaceRegUsesAfterLoop(Def, NewReg, BB, MRI, LIS, NoIntervalRegs);
592+
if (IsLast && np == NumPhis - 1) {
593+
replaceRegUsesAfterLoop(Def, NewReg, BB, MRI);
594+
NoIntervalRegs.push_back(NewReg);
595+
}
599596

600597
// In the kernel, a dependent Phi uses the value from this Phi.
601598
if (InKernel)
@@ -614,8 +611,10 @@ void ModuloScheduleExpander::generateExistingPhis(
614611
// scheduling.
615612
if (NumStages == 0 && IsLast) {
616613
auto It = VRMap[CurStageNum].find(LoopVal);
617-
if (It != VRMap[CurStageNum].end())
618-
replaceRegUsesAfterLoop(Def, It->second, BB, MRI, LIS, NoIntervalRegs);
614+
if (It != VRMap[CurStageNum].end()) {
615+
replaceRegUsesAfterLoop(Def, It->second, BB, MRI);
616+
NoIntervalRegs.push_back(It->second);
617+
}
619618
}
620619
}
621620
}
@@ -735,8 +734,10 @@ void ModuloScheduleExpander::generatePhis(
735734
rewriteScheduledInstr(NewBB, InstrMap, CurStageNum, np, &*BBI, Def,
736735
NewReg);
737736
}
738-
if (IsLast && np == NumPhis - 1)
739-
replaceRegUsesAfterLoop(Def, NewReg, BB, MRI, LIS, NoIntervalRegs);
737+
if (IsLast && np == NumPhis - 1) {
738+
replaceRegUsesAfterLoop(Def, NewReg, BB, MRI);
739+
NoIntervalRegs.push_back(NewReg);
740+
}
740741
}
741742
}
742743
}
@@ -1076,8 +1077,10 @@ void ModuloScheduleExpander::updateInstruction(MachineInstr *NewMI,
10761077
Register NewReg = MRI.createVirtualRegister(RC);
10771078
MO.setReg(NewReg);
10781079
VRMap[CurStageNum][reg] = NewReg;
1079-
if (LastDef)
1080-
replaceRegUsesAfterLoop(reg, NewReg, BB, MRI, LIS, NoIntervalRegs);
1080+
if (LastDef) {
1081+
replaceRegUsesAfterLoop(reg, NewReg, BB, MRI);
1082+
NoIntervalRegs.push_back(NewReg);
1083+
}
10811084
} else if (MO.isUse()) {
10821085
MachineInstr *Def = MRI.getVRegDef(reg);
10831086
// Compute the stage that contains the last definition for instruction.

0 commit comments

Comments
 (0)