diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2025-12-06 19:56:45 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2025-12-06 20:08:43 +0000 |
| commit | 3f709e42e3be0f28a88ca3e77663a02b52c914f4 (patch) | |
| tree | 948796bf3bf7e164373caf6c31f9f128ca85fd8c /llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp | |
| parent | 32a711e1c447004eb1fd015925f305ed1d8426de (diff) | |
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp b/llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp index 904321a344db..b0d6fd95cd27 100644 --- a/llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp +++ b/llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp @@ -228,11 +228,11 @@ private: CombineInfo *checkAndPrepareMerge(CombineInfo &CI, CombineInfo &Paired); void copyToDestRegs(CombineInfo &CI, CombineInfo &Paired, - MachineBasicBlock::iterator InsertBefore, int OpName, - Register DestReg) const; + MachineBasicBlock::iterator InsertBefore, + AMDGPU::OpName OpName, Register DestReg) const; Register copyFromSrcRegs(CombineInfo &CI, CombineInfo &Paired, MachineBasicBlock::iterator InsertBefore, - int OpName) const; + AMDGPU::OpName OpName) const; unsigned read2Opcode(unsigned EltSize) const; unsigned read2ST64Opcode(unsigned EltSize) const; @@ -323,8 +323,7 @@ public: } MachineFunctionProperties getRequiredProperties() const override { - return MachineFunctionProperties() - .set(MachineFunctionProperties::Property::IsSSA); + return MachineFunctionProperties().setIsSSA(); } }; @@ -699,7 +698,7 @@ static AddressRegs getRegs(unsigned Opc, const SIInstrInfo &TII) { if (TII.isImage(Opc)) { int VAddr0Idx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::vaddr0); if (VAddr0Idx >= 0) { - int RsrcName = + AMDGPU::OpName RsrcName = TII.isMIMG(Opc) ? AMDGPU::OpName::srsrc : AMDGPU::OpName::rsrc; int RsrcIdx = AMDGPU::getNamedOperandIdx(Opc, RsrcName); Result.NumVAddrs = RsrcIdx - VAddr0Idx; @@ -968,11 +967,11 @@ bool SILoadStoreOptimizer::dmasksCanBeCombined(const CombineInfo &CI, return false; // Check other optional immediate operands for equality. - unsigned OperandsToMatch[] = {AMDGPU::OpName::cpol, AMDGPU::OpName::d16, - AMDGPU::OpName::unorm, AMDGPU::OpName::da, - AMDGPU::OpName::r128, AMDGPU::OpName::a16}; + AMDGPU::OpName OperandsToMatch[] = { + AMDGPU::OpName::cpol, AMDGPU::OpName::d16, AMDGPU::OpName::unorm, + AMDGPU::OpName::da, AMDGPU::OpName::r128, AMDGPU::OpName::a16}; - for (auto op : OperandsToMatch) { + for (AMDGPU::OpName op : OperandsToMatch) { int Idx = AMDGPU::getNamedOperandIdx(CI.I->getOpcode(), op); if (AMDGPU::getNamedOperandIdx(Paired.I->getOpcode(), op) != Idx) return false; @@ -1256,7 +1255,7 @@ SILoadStoreOptimizer::checkAndPrepareMerge(CombineInfo &CI, // Paired. void SILoadStoreOptimizer::copyToDestRegs( CombineInfo &CI, CombineInfo &Paired, - MachineBasicBlock::iterator InsertBefore, int OpName, + MachineBasicBlock::iterator InsertBefore, AMDGPU::OpName OpName, Register DestReg) const { MachineBasicBlock *MBB = CI.I->getParent(); DebugLoc DL = CI.I->getDebugLoc(); @@ -1287,7 +1286,7 @@ void SILoadStoreOptimizer::copyToDestRegs( Register SILoadStoreOptimizer::copyFromSrcRegs(CombineInfo &CI, CombineInfo &Paired, MachineBasicBlock::iterator InsertBefore, - int OpName) const { + AMDGPU::OpName OpName) const { MachineBasicBlock *MBB = CI.I->getParent(); DebugLoc DL = CI.I->getDebugLoc(); @@ -2174,12 +2173,13 @@ bool SILoadStoreOptimizer::promoteConstantOffsetToImm( // Step1: Find the base-registers and a 64bit constant offset. MachineOperand &Base = *TII->getNamedOperand(MI, AMDGPU::OpName::vaddr); + auto [It, Inserted] = Visited.try_emplace(&MI); MemAddress MAddr; - if (!Visited.contains(&MI)) { + if (Inserted) { processBaseWithConstOffset(Base, MAddr); - Visited[&MI] = MAddr; + It->second = MAddr; } else - MAddr = Visited[&MI]; + MAddr = It->second; if (MAddr.Offset == 0) { LLVM_DEBUG(dbgs() << " Failed to extract constant-offset or there are no" @@ -2239,11 +2239,12 @@ bool SILoadStoreOptimizer::promoteConstantOffsetToImm( const MachineOperand &BaseNext = *TII->getNamedOperand(MINext, AMDGPU::OpName::vaddr); MemAddress MAddrNext; - if (!Visited.contains(&MINext)) { + auto [It, Inserted] = Visited.try_emplace(&MINext); + if (Inserted) { processBaseWithConstOffset(BaseNext, MAddrNext); - Visited[&MINext] = MAddrNext; + It->second = MAddrNext; } else - MAddrNext = Visited[&MINext]; + MAddrNext = It->second; if (MAddrNext.Base.LoReg != MAddr.Base.LoReg || MAddrNext.Base.HiReg != MAddr.Base.HiReg || |
