summaryrefslogtreecommitdiff
path: root/llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2025-12-06 19:56:45 +0000
committerDimitry Andric <dim@FreeBSD.org>2025-12-06 20:08:43 +0000
commit3f709e42e3be0f28a88ca3e77663a02b52c914f4 (patch)
tree948796bf3bf7e164373caf6c31f9f128ca85fd8c /llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
parent32a711e1c447004eb1fd015925f305ed1d8426de (diff)
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp')
-rw-r--r--llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp37
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 ||