From 1b9e3cdf3c70ed7bc296abe0294ea7aa5ac8f839 Mon Sep 17 00:00:00 2001 From: Jay Foad Date: Fri, 26 Jun 2020 11:29:10 +0100 Subject: [PATCH] [AMDGPU] Use std::pair to return two values. NFC. --- llvm/lib/Target/AMDGPU/GCNRegBankReassign.cpp | 35 +++++++++++++++------------ 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/GCNRegBankReassign.cpp b/llvm/lib/Target/AMDGPU/GCNRegBankReassign.cpp index e4017be41e7..98d971630ca 100644 --- a/llvm/lib/Target/AMDGPU/GCNRegBankReassign.cpp +++ b/llvm/lib/Target/AMDGPU/GCNRegBankReassign.cpp @@ -170,11 +170,13 @@ private: // If Bank is not -1 assume Reg:SubReg to belong to that Bank. uint32_t getRegBankMask(unsigned Reg, unsigned SubReg, int Bank); - // Return number of stalls in the instructions. - // UsedBanks has bits set for the banks used by all operands. - // If Reg and Bank provided substitute the Reg with the Bank. - unsigned analyzeInst(const MachineInstr& MI, unsigned& UsedBanks, - unsigned Reg = AMDGPU::NoRegister, int Bank = -1); + // Analyze one instruction returning the number of stalls and a mask of the + // banks used by all operands. + // If Reg and Bank are provided, assume all uses of Reg will be replaced with + // a register chosen from Bank. + std::pair analyzeInst(const MachineInstr &MI, + unsigned Reg = AMDGPU::NoRegister, + int Bank = -1); // Return true if register is regular VGPR or SGPR or their tuples. // Returns false for special registers like m0, vcc etc. @@ -356,15 +358,14 @@ uint32_t GCNRegBankReassign::getRegBankMask(unsigned Reg, unsigned SubReg, return Mask << SGPR_BANK_OFFSET; } -unsigned GCNRegBankReassign::analyzeInst(const MachineInstr& MI, - unsigned& UsedBanks, - unsigned Reg, - int Bank) { +std::pair +GCNRegBankReassign::analyzeInst(const MachineInstr &MI, unsigned Reg, + int Bank) { unsigned StallCycles = 0; - UsedBanks = 0; + unsigned UsedBanks = 0; if (MI.isDebugValue()) - return 0; + return std::make_pair(StallCycles, UsedBanks); RegsUsed.reset(); OperandMasks.clear(); @@ -404,7 +405,7 @@ unsigned GCNRegBankReassign::analyzeInst(const MachineInstr& MI, OperandMasks.push_back(OperandMask(Op.getReg(), Op.getSubReg(), Mask)); } - return StallCycles; + return std::make_pair(StallCycles, UsedBanks); } unsigned GCNRegBankReassign::getOperandGatherWeight(const MachineInstr& MI, @@ -588,7 +589,6 @@ unsigned GCNRegBankReassign::computeStallCycles(unsigned SrcReg, unsigned Reg, int Bank, bool Collect) { unsigned TotalStallCycles = 0; - unsigned UsedBanks = 0; SmallSet Visited; for (auto &MI : MRI->use_nodbg_instructions(SrcReg)) { @@ -596,7 +596,9 @@ unsigned GCNRegBankReassign::computeStallCycles(unsigned SrcReg, continue; if (!Visited.insert(&MI).second) continue; - unsigned StallCycles = analyzeInst(MI, UsedBanks, Reg, Bank); + unsigned StallCycles; + unsigned UsedBanks; + std::tie(StallCycles, UsedBanks) = analyzeInst(MI, Reg, Bank); TotalStallCycles += StallCycles; if (Collect) collectCandidates(MI, UsedBanks, StallCycles); @@ -717,8 +719,9 @@ unsigned GCNRegBankReassign::collectCandidates(MachineFunction &MF, if (MI.isBundle()) continue; // we analyze the instructions inside the bundle individually - unsigned UsedBanks = 0; - unsigned StallCycles = analyzeInst(MI, UsedBanks); + unsigned StallCycles; + unsigned UsedBanks; + std::tie(StallCycles, UsedBanks) = analyzeInst(MI); if (Collect) collectCandidates(MI, UsedBanks, StallCycles); -- 2.11.0