Skip to content

Commit e2ef926

Browse files
committed
Address comments.
1 parent ecdeba4 commit e2ef926

File tree

3 files changed

+11
-17
lines changed

3 files changed

+11
-17
lines changed

llvm/lib/Target/AMDGPU/AMDGPUArgumentUsageInfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ struct AMDGPUFunctionArgInfo {
163163
// Map the index of preloaded kernel arguments to its descriptor.
164164
SmallDenseMap<int, KernArgPreloadDescriptor> PreloadKernArgs{};
165165
// The first user SGPR allocated for kernarg preloading.
166-
Register FirstKernArgPreloadReg = AMDGPU::NoRegister;
166+
Register FirstKernArgPreloadReg;
167167

168168
std::tuple<const ArgDescriptor *, const TargetRegisterClass *, LLT>
169169
getPreloadedValue(PreloadedValue Value) const;

llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,7 @@ struct LoadConfig {
4444
unsigned Size;
4545
const TargetRegisterClass *RegClass;
4646
unsigned Opcode;
47-
Register LoadReg;
48-
49-
// Constructor for the static config array
50-
constexpr LoadConfig(unsigned S, const TargetRegisterClass *RC, unsigned Op)
51-
: Size(S), RegClass(RC), Opcode(Op), LoadReg(AMDGPU::NoRegister) {}
52-
53-
// Constructor for the return value
54-
constexpr LoadConfig(unsigned S, const TargetRegisterClass *RC, unsigned Op,
55-
Register Reg)
56-
: Size(S), RegClass(RC), Opcode(Op), LoadReg(Reg) {}
47+
Register LoadReg = Register();
5748
};
5849

5950
class AMDGPUPreloadKernArgProlog {
@@ -162,7 +153,7 @@ void AMDGPUPreloadKernArgProlog::createBackCompatBlock(
162153
PadMBB->addSuccessor(&*KernelEntryMBB);
163154
}
164155

165-
// Find the largest possible load size that fits with SGRP alignment
156+
/// Find the largest possible load size that fits with SGPR alignment
166157
static LoadConfig getLoadParameters(const TargetRegisterInfo &TRI,
167158
Register KernArgPreloadSGPR,
168159
unsigned NumKernArgPreloadSGPRs) {
@@ -175,14 +166,17 @@ static LoadConfig getLoadParameters(const TargetRegisterInfo &TRI,
175166
if (NumKernArgPreloadSGPRs >= Config.Size) {
176167
Register LoadReg = TRI.getMatchingSuperReg(KernArgPreloadSGPR,
177168
AMDGPU::sub0, Config.RegClass);
178-
if (LoadReg != AMDGPU::NoRegister)
179-
return LoadConfig(Config.Size, Config.RegClass, Config.Opcode, LoadReg);
169+
if (LoadReg) {
170+
LoadConfig C(Config);
171+
C.LoadReg = LoadReg;
172+
return C;
173+
}
180174
}
181175
}
182176

183177
// Fallback to a single register
184-
return LoadConfig(1, &AMDGPU::SReg_32RegClass, AMDGPU::S_LOAD_DWORD_IMM,
185-
KernArgPreloadSGPR);
178+
return LoadConfig{1, &AMDGPU::SReg_32RegClass, AMDGPU::S_LOAD_DWORD_IMM,
179+
KernArgPreloadSGPR};
186180
}
187181

188182
void AMDGPUPreloadKernArgProlog::addBackCompatLoads(

llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ SmallVectorImpl<MCRegister> *SIMachineFunctionInfo::addPreloadedKernArg(
262262
// If the available register tuples are aligned with the kernarg to be
263263
// preloaded use that register, otherwise we need to use a set of SGPRs and
264264
// merge them.
265-
if (ArgInfo.FirstKernArgPreloadReg == AMDGPU::NoRegister)
265+
if (!ArgInfo.FirstKernArgPreloadReg)
266266
ArgInfo.FirstKernArgPreloadReg = getNextUserSGPR();
267267
Register PreloadReg =
268268
TRI.getMatchingSuperReg(getNextUserSGPR(), AMDGPU::sub0, RC);

0 commit comments

Comments
 (0)