@@ -218,8 +218,8 @@ class SIWholeQuadMode : public MachineFunctionPass {
218
218
bool IsWQM);
219
219
MachineInstr *lowerKillF32 (MachineBasicBlock &MBB, MachineInstr &MI);
220
220
221
- void lowerBlock (MachineBasicBlock &MBB);
222
- void processBlock (MachineBasicBlock &MBB, bool IsEntry);
221
+ void lowerBlock (MachineBasicBlock &MBB, BlockInfo &BI );
222
+ void processBlock (MachineBasicBlock &MBB, BlockInfo &BI, bool IsEntry);
223
223
224
224
bool lowerLiveMaskQueries ();
225
225
bool lowerCopyInstrs ();
@@ -1035,12 +1035,7 @@ MachineInstr *SIWholeQuadMode::lowerKillI1(MachineBasicBlock &MBB,
1035
1035
// Replace (or supplement) instructions accessing live mask.
1036
1036
// This can only happen once all the live mask registers have been created
1037
1037
// and the execute state (WQM/StrictWWM/Exact) of instructions is known.
1038
- void SIWholeQuadMode::lowerBlock (MachineBasicBlock &MBB) {
1039
- auto *BII = Blocks.find (&MBB);
1040
- if (BII == Blocks.end ())
1041
- return ;
1042
-
1043
- const BlockInfo &BI = BII->second ;
1038
+ void SIWholeQuadMode::lowerBlock (MachineBasicBlock &MBB, BlockInfo &BI) {
1044
1039
if (!BI.NeedsLowering )
1045
1040
return ;
1046
1041
@@ -1052,8 +1047,9 @@ void SIWholeQuadMode::lowerBlock(MachineBasicBlock &MBB) {
1052
1047
1053
1048
for (MachineInstr &MI : llvm::make_early_inc_range (
1054
1049
llvm::make_range (MBB.getFirstNonPHI (), MBB.end ()))) {
1055
- if (StateTransition.count (&MI))
1056
- State = StateTransition[&MI];
1050
+ auto MIState = StateTransition.find (&MI);
1051
+ if (MIState != StateTransition.end ())
1052
+ State = MIState->second ;
1057
1053
1058
1054
MachineInstr *SplitPoint = nullptr ;
1059
1055
switch (MI.getOpcode ()) {
@@ -1260,13 +1256,8 @@ void SIWholeQuadMode::fromStrictMode(MachineBasicBlock &MBB,
1260
1256
StateTransition[MI] = NonStrictState;
1261
1257
}
1262
1258
1263
- void SIWholeQuadMode::processBlock (MachineBasicBlock &MBB, bool IsEntry) {
1264
- auto *BII = Blocks.find (&MBB);
1265
- if (BII == Blocks.end ())
1266
- return ;
1267
-
1268
- BlockInfo &BI = BII->second ;
1269
-
1259
+ void SIWholeQuadMode::processBlock (MachineBasicBlock &MBB, BlockInfo &BI,
1260
+ bool IsEntry) {
1270
1261
// This is a non-entry block that is WQM throughout, so no need to do
1271
1262
// anything.
1272
1263
if (!IsEntry && BI.Needs == StateWQM && BI.OutNeeds != StateExact) {
@@ -1809,11 +1800,11 @@ bool SIWholeQuadMode::runOnMachineFunction(MachineFunction &MF) {
1809
1800
if (GlobalFlags & StateWQM)
1810
1801
Blocks[&Entry].InNeeds |= StateWQM;
1811
1802
// Wave mode switching requires full lowering pass.
1812
- for (auto BII : Blocks)
1813
- processBlock (*BII.first , BII.first == &Entry);
1803
+ for (auto & BII : Blocks)
1804
+ processBlock (*BII.first , BII.second , BII. first == &Entry);
1814
1805
// Lowering blocks causes block splitting so perform as a second pass.
1815
- for (auto BII : Blocks)
1816
- lowerBlock (*BII.first );
1806
+ for (auto & BII : Blocks)
1807
+ lowerBlock (*BII.first , BII. second );
1817
1808
Changed = true ;
1818
1809
}
1819
1810
0 commit comments