[llvm] promoteMUBUFLoadStoreScalarOffset (PR #142328)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jun 1 21:36:44 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions cpp -- llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp b/llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
index b4667968b..1260fc254 100644
--- a/llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
+++ b/llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
@@ -428,16 +428,16 @@ static InstClassEnum getInstClass(unsigned Opc, const SIInstrInfo &TII) {
case AMDGPU::BUFFER_LOAD_DWORD_BOTHEN_exact:
case AMDGPU::BUFFER_LOAD_DWORD_IDXEN:
case AMDGPU::BUFFER_LOAD_DWORD_IDXEN_exact:
- case AMDGPU::BUFFER_LOAD_DWORD_OFFEN://
- case AMDGPU::BUFFER_LOAD_DWORD_OFFEN_exact://
+ case AMDGPU::BUFFER_LOAD_DWORD_OFFEN: //
+ case AMDGPU::BUFFER_LOAD_DWORD_OFFEN_exact: //
case AMDGPU::BUFFER_LOAD_DWORD_OFFSET:
case AMDGPU::BUFFER_LOAD_DWORD_OFFSET_exact:
case AMDGPU::BUFFER_LOAD_DWORD_VBUFFER_BOTHEN:
case AMDGPU::BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact:
case AMDGPU::BUFFER_LOAD_DWORD_VBUFFER_IDXEN:
case AMDGPU::BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact:
- case AMDGPU::BUFFER_LOAD_DWORD_VBUFFER_OFFEN://
- case AMDGPU::BUFFER_LOAD_DWORD_VBUFFER_OFFEN_exact://
+ case AMDGPU::BUFFER_LOAD_DWORD_VBUFFER_OFFEN: //
+ case AMDGPU::BUFFER_LOAD_DWORD_VBUFFER_OFFEN_exact: //
case AMDGPU::BUFFER_LOAD_DWORD_VBUFFER_OFFSET:
case AMDGPU::BUFFER_LOAD_DWORD_VBUFFER_OFFSET_exact:
return BUFFER_LOAD;
@@ -2093,25 +2093,33 @@ void SILoadStoreOptimizer::processBaseWithConstOffset(const MachineOperand &Base
if (!Base.isReg())
return;
- MachineInstr *Def = MRI->getUniqueVRegDef(Base.getReg());//REG_SEQUENCE %LO:vgpr_32, %subreg.sub0, %HI:vgpr_32, %subreg.sub1
+ MachineInstr *Def = MRI->getUniqueVRegDef(
+ Base.getReg()); // REG_SEQUENCE %LO:vgpr_32, %subreg.sub0, %HI:vgpr_32,
+ // %subreg.sub1
if (!Def || Def->getOpcode() != AMDGPU::REG_SEQUENCE
|| Def->getNumOperands() != 5)
return;
- MachineOperand BaseLo = Def->getOperand(1);//%LO:vgpr_32
- MachineOperand BaseHi = Def->getOperand(3);//%HI:vgpr_32
+ MachineOperand BaseLo = Def->getOperand(1); //%LO:vgpr_32
+ MachineOperand BaseHi = Def->getOperand(3); //%HI:vgpr_32
if (!BaseLo.isReg() || !BaseHi.isReg())
return;
- MachineInstr *BaseLoDef = MRI->getUniqueVRegDef(BaseLo.getReg());//%LO:vgpr_32, %c:sreg_64_xexec = V_ADD_CO_U32_e64 %BASE_LO:vgpr_32, %103:sgpr_32,
- MachineInstr *BaseHiDef = MRI->getUniqueVRegDef(BaseHi.getReg());//%HI:vgpr_32, = V_ADDC_U32_e64 %BASE_HI:vgpr_32, 0, killed %c:sreg_64_xexec
+ MachineInstr *BaseLoDef = MRI->getUniqueVRegDef(
+ BaseLo.getReg()); //%LO:vgpr_32, %c:sreg_64_xexec = V_ADD_CO_U32_e64
+ //%BASE_LO:vgpr_32, %103:sgpr_32,
+ MachineInstr *BaseHiDef = MRI->getUniqueVRegDef(
+ BaseHi.getReg()); //%HI:vgpr_32, = V_ADDC_U32_e64 %BASE_HI:vgpr_32, 0,
+ //killed %c:sreg_64_xexec
if (!BaseLoDef || BaseLoDef->getOpcode() != AMDGPU::V_ADD_CO_U32_e64 ||
!BaseHiDef || BaseHiDef->getOpcode() != AMDGPU::V_ADDC_U32_e64)
return;
- const auto *Src0 = TII->getNamedOperand(*BaseLoDef, AMDGPU::OpName::src0);//%BASE_LO:vgpr_32
- const auto *Src1 = TII->getNamedOperand(*BaseLoDef, AMDGPU::OpName::src1);//%103:sgpr_32
+ const auto *Src0 =
+ TII->getNamedOperand(*BaseLoDef, AMDGPU::OpName::src0); //%BASE_LO:vgpr_32
+ const auto *Src1 =
+ TII->getNamedOperand(*BaseLoDef, AMDGPU::OpName::src1); //%103:sgpr_32
auto Offset0P = extractConstOffset(*Src0);
if (Offset0P)
@@ -2121,12 +2129,13 @@ void SILoadStoreOptimizer::processBaseWithConstOffset(const MachineOperand &Base
return;
BaseLo = *Src0;
}
-//BaseLo = %103:sgpr_32
+ // BaseLo = %103:sgpr_32
if (!BaseLo.isReg())
return;
- Src0 = TII->getNamedOperand(*BaseHiDef, AMDGPU::OpName::src0);// %BASE_HI:vgpr_32
- Src1 = TII->getNamedOperand(*BaseHiDef, AMDGPU::OpName::src1);// 0
+ Src0 = TII->getNamedOperand(*BaseHiDef,
+ AMDGPU::OpName::src0); // %BASE_HI:vgpr_32
+ Src1 = TII->getNamedOperand(*BaseHiDef, AMDGPU::OpName::src1); // 0
if (Src0->isImm())
std::swap(Src0, Src1);
@@ -2134,14 +2143,14 @@ void SILoadStoreOptimizer::processBaseWithConstOffset(const MachineOperand &Base
if (!Src1->isImm() || Src0->isImm())
return;
- uint64_t Offset1 = Src1->getImm(); //0
- BaseHi = *Src0;//%BASE_HI:vgpr_32
+ uint64_t Offset1 = Src1->getImm(); // 0
+ BaseHi = *Src0; //%BASE_HI:vgpr_32
if (!BaseHi.isReg())
return;
- Addr.Base.LoReg = BaseLo.getReg();//%103:sgpr_32
- Addr.Base.HiReg = BaseHi.getReg();//%BASE_HI:vgpr_32
+ Addr.Base.LoReg = BaseLo.getReg(); //%103:sgpr_32
+ Addr.Base.HiReg = BaseHi.getReg(); //%BASE_HI:vgpr_32
Addr.Base.LoSubReg = BaseLo.getSubReg();
Addr.Base.HiSubReg = BaseHi.getSubReg();
Addr.Offset = (*Offset0P & 0x00000000ffffffff) | (Offset1 << 32);
@@ -2300,34 +2309,43 @@ bool SILoadStoreOptimizer::promoteConstantOffsetToImm(
}
bool SILoadStoreOptimizer::promoteMUBUFLoadStoreScalarOffset(
- MachineInstr &MI) const{
- if(!SIInstrInfo::isMUBUF(MI))
- return false;
+ MachineInstr &MI) const {
+ if (!SIInstrInfo::isMUBUF(MI))
+ return false;
LLVM_DEBUG(dbgs() << "tryToPromoteMUBUFLoadStoreScalarOffset:"; MI.dump());
auto vaddr = TII->getNamedOperand(MI, AMDGPU::OpName::vaddr);
- if(!vaddr) return false;
+ if (!vaddr)
+ return false;
LLVM_DEBUG(dbgs() << "\n vaddr:"; vaddr->dump());
MachineInstr *Def = MRI->getUniqueVRegDef(vaddr->getReg());
- if(!Def) return false;
+ if (!Def)
+ return false;
LLVM_DEBUG(dbgs() << "\n def:"; Def->dump());
auto opsrc0 = TII->getNamedOperand(*Def, AMDGPU::OpName::src0);
- if(!opsrc0) return false;
+ if (!opsrc0)
+ return false;
auto opsrc1 = TII->getNamedOperand(*Def, AMDGPU::OpName::src1);
- if(!opsrc1) return false;
+ if (!opsrc1)
+ return false;
LLVM_DEBUG(dbgs() << "\n opsrc0:"; opsrc0->dump());
LLVM_DEBUG(dbgs() << "\n opsrc1:"; opsrc1->dump());
- auto isopsrc0scalarreg = TII->getRegisterInfo().isSGPRClass(MRI->getRegClass(opsrc0->getReg()));
- auto isopsrc1scalarreg = TII->getRegisterInfo().isSGPRClass(MRI->getRegClass(opsrc1->getReg()));
- LLVM_DEBUG(dbgs() << "\n isopsrc0scalarreg:" << isopsrc0scalarreg << " isopsrc1scalarreg:" << isopsrc1scalarreg;);
- if(!(isopsrc0scalarreg ^ isopsrc1scalarreg)) return false;
+ auto isopsrc0scalarreg =
+ TII->getRegisterInfo().isSGPRClass(MRI->getRegClass(opsrc0->getReg()));
+ auto isopsrc1scalarreg =
+ TII->getRegisterInfo().isSGPRClass(MRI->getRegClass(opsrc1->getReg()));
+ LLVM_DEBUG(dbgs() << "\n isopsrc0scalarreg:" << isopsrc0scalarreg
+ << " isopsrc1scalarreg:" << isopsrc1scalarreg;);
+ if (!(isopsrc0scalarreg ^ isopsrc1scalarreg))
+ return false;
auto scalarOp = isopsrc0scalarreg ? opsrc0 : opsrc1;
-
- // if (!BaseLoDef || BaseLoDef->getOpcode() != AMDGPU::V_ADD_CO_U32_e64 ||
- // !BaseHiDef || BaseHiDef->getOpcode() != AMDGPU::V_ADDC_U32_e64)
- // return;
- // const auto *Src0 = TII->getNamedOperand(*BaseLoDef, AMDGPU::OpName::src0);//%BASE_LO:vgpr_32
- // const auto *Src1 = TII->getNamedOperand(*BaseLoDef, AMDGPU::OpName::src1);//%103:sgpr_32
+ // if (!BaseLoDef || BaseLoDef->getOpcode() != AMDGPU::V_ADD_CO_U32_e64 ||
+ // !BaseHiDef || BaseHiDef->getOpcode() != AMDGPU::V_ADDC_U32_e64)
+ // return;
+
+ // const auto *Src0 = TII->getNamedOperand(*BaseLoDef,
+ // AMDGPU::OpName::src0);//%BASE_LO:vgpr_32 const auto *Src1 =
+ // TII->getNamedOperand(*BaseLoDef, AMDGPU::OpName::src1);//%103:sgpr_32
return false;
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/142328
More information about the llvm-commits
mailing list