@@ -212,11 +212,9 @@ class SIWholeQuadMode : public MachineFunctionPass {
212
212
MachineBasicBlock::iterator Before, Register SavedOrig,
213
213
char NonStrictState, char CurrentStrictState);
214
214
215
- MachineBasicBlock *splitBlock (MachineBasicBlock *BB, MachineInstr *TermMI);
216
-
217
- MachineInstr *lowerKillI1 (MachineBasicBlock &MBB, MachineInstr &MI,
218
- bool IsWQM);
219
- MachineInstr *lowerKillF32 (MachineBasicBlock &MBB, MachineInstr &MI);
215
+ void splitBlock (MachineInstr *TermMI);
216
+ MachineInstr *lowerKillI1 (MachineInstr &MI, bool IsWQM);
217
+ MachineInstr *lowerKillF32 (MachineInstr &MI);
220
218
221
219
void lowerBlock (MachineBasicBlock &MBB, BlockInfo &BI);
222
220
void processBlock (MachineBasicBlock &MBB, BlockInfo &BI, bool IsEntry);
@@ -746,8 +744,8 @@ SIWholeQuadMode::saveSCC(MachineBasicBlock &MBB,
746
744
return Restore;
747
745
}
748
746
749
- MachineBasicBlock * SIWholeQuadMode::splitBlock (MachineBasicBlock *BB,
750
- MachineInstr * TermMI) {
747
+ void SIWholeQuadMode::splitBlock (MachineInstr *TermMI) {
748
+ MachineBasicBlock *BB = TermMI-> getParent ();
751
749
LLVM_DEBUG (dbgs () << " Split block " << printMBBReference (*BB) << " @ "
752
750
<< *TermMI << " \n " );
753
751
@@ -796,12 +794,9 @@ MachineBasicBlock *SIWholeQuadMode::splitBlock(MachineBasicBlock *BB,
796
794
.addMBB (SplitBB);
797
795
LIS->InsertMachineInstrInMaps (*MI);
798
796
}
799
-
800
- return SplitBB;
801
797
}
802
798
803
- MachineInstr *SIWholeQuadMode::lowerKillF32 (MachineBasicBlock &MBB,
804
- MachineInstr &MI) {
799
+ MachineInstr *SIWholeQuadMode::lowerKillF32 (MachineInstr &MI) {
805
800
assert (LiveMaskReg.isVirtual ());
806
801
807
802
const DebugLoc &DL = MI.getDebugLoc ();
@@ -869,6 +864,8 @@ MachineInstr *SIWholeQuadMode::lowerKillF32(MachineBasicBlock &MBB,
869
864
llvm_unreachable (" invalid ISD:SET cond code" );
870
865
}
871
866
867
+ MachineBasicBlock &MBB = *MI.getParent ();
868
+
872
869
// Pick opcode based on comparison type.
873
870
MachineInstr *VcmpMI;
874
871
const MachineOperand &Op0 = MI.getOperand (0 );
@@ -919,10 +916,11 @@ MachineInstr *SIWholeQuadMode::lowerKillF32(MachineBasicBlock &MBB,
919
916
return NewTerm;
920
917
}
921
918
922
- MachineInstr *SIWholeQuadMode::lowerKillI1 (MachineBasicBlock &MBB,
923
- MachineInstr &MI, bool IsWQM) {
919
+ MachineInstr *SIWholeQuadMode::lowerKillI1 (MachineInstr &MI, bool IsWQM) {
924
920
assert (LiveMaskReg.isVirtual ());
925
921
922
+ MachineBasicBlock &MBB = *MI.getParent ();
923
+
926
924
const DebugLoc &DL = MI.getDebugLoc ();
927
925
MachineInstr *MaskUpdateMI = nullptr ;
928
926
@@ -1055,10 +1053,10 @@ void SIWholeQuadMode::lowerBlock(MachineBasicBlock &MBB, BlockInfo &BI) {
1055
1053
switch (MI.getOpcode ()) {
1056
1054
case AMDGPU::SI_DEMOTE_I1:
1057
1055
case AMDGPU::SI_KILL_I1_TERMINATOR:
1058
- SplitPoint = lowerKillI1 (MBB, MI, State == StateWQM);
1056
+ SplitPoint = lowerKillI1 (MI, State == StateWQM);
1059
1057
break ;
1060
1058
case AMDGPU::SI_KILL_F32_COND_IMM_TERMINATOR:
1061
- SplitPoint = lowerKillF32 (MBB, MI);
1059
+ SplitPoint = lowerKillF32 (MI);
1062
1060
break ;
1063
1061
case AMDGPU::ENTER_STRICT_WWM:
1064
1062
ActiveLanesReg = MI.getOperand (0 ).getReg ();
@@ -1084,12 +1082,8 @@ void SIWholeQuadMode::lowerBlock(MachineBasicBlock &MBB, BlockInfo &BI) {
1084
1082
}
1085
1083
1086
1084
// Perform splitting after instruction scan to simplify iteration.
1087
- if (!SplitPoints.empty ()) {
1088
- MachineBasicBlock *BB = &MBB;
1089
- for (MachineInstr *MI : SplitPoints) {
1090
- BB = splitBlock (BB, MI);
1091
- }
1092
- }
1085
+ for (MachineInstr *MI : SplitPoints)
1086
+ splitBlock (MI);
1093
1087
}
1094
1088
1095
1089
// Return an iterator in the (inclusive) range [First, Last] at which
@@ -1546,19 +1540,18 @@ bool SIWholeQuadMode::lowerCopyInstrs() {
1546
1540
1547
1541
bool SIWholeQuadMode::lowerKillInstrs (bool IsWQM) {
1548
1542
for (MachineInstr *MI : KillInstrs) {
1549
- MachineBasicBlock *MBB = MI->getParent ();
1550
1543
MachineInstr *SplitPoint = nullptr ;
1551
1544
switch (MI->getOpcode ()) {
1552
1545
case AMDGPU::SI_DEMOTE_I1:
1553
1546
case AMDGPU::SI_KILL_I1_TERMINATOR:
1554
- SplitPoint = lowerKillI1 (*MBB, * MI, IsWQM);
1547
+ SplitPoint = lowerKillI1 (*MI, IsWQM);
1555
1548
break ;
1556
1549
case AMDGPU::SI_KILL_F32_COND_IMM_TERMINATOR:
1557
- SplitPoint = lowerKillF32 (*MBB, * MI);
1550
+ SplitPoint = lowerKillF32 (*MI);
1558
1551
break ;
1559
1552
}
1560
1553
if (SplitPoint)
1561
- splitBlock (MBB, SplitPoint);
1554
+ splitBlock (SplitPoint);
1562
1555
}
1563
1556
return !KillInstrs.empty ();
1564
1557
}
0 commit comments