[PATCH] D136169: [AMDGPU] Avoid SCC clobbering before S_CSELECT_B32
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 18 10:11:38 PDT 2022
arsenm added inline comments.
================
Comment at: llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp:843-846
+ auto Add = BuildMI(*MBB, Ins, DL, TII->get(AMDGPU::S_ADD_I32), BaseReg)
.addReg(OffsetReg, RegState::Kill)
.addReg(FIReg);
+ Add->getOperand(3).setIsDead(); // Mark SCC as dead.
----------------
This isn't harmful, but I also doubt helps you. This is only used by LocalStackSlotAllocation and runs before dead flags should automatically be computed
================
Comment at: llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp:2235
+ while (I != MBB->end()) {
+ if (*I != MI && I->getOpcode() == AMDGPU::S_CSELECT_B32) {
+ NeedSaveSCC = true;
----------------
Shouldn't special case s_cselect*
================
Comment at: llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp:2247
+ SCCCopy = RS->scavengeRegister(getBoolRC(), MI, 0, !UseSGPR);
+ if (SCCCopy != AMDGPU::NoRegister)
+ BuildMI(*MBB, MI, DL,
----------------
foad wrote:
> Don't need the ` != AMDGPU::NoRegister` because Register converts to bool.
>
> Need braces around the multi-line BuildMI call.
So this just remains broken if the scavenge failed?
================
Comment at: llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp:2378
.addImm(Offset);
+ Add->getOperand(3).setIsDead(); // Mark SCC as dead.
if (!IsSALU)
----------------
These dead setting changes should be done separately
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D136169/new/
https://reviews.llvm.org/D136169
More information about the llvm-commits
mailing list