Skip to content

Commit 2b5ad12

Browse files
committed
temp
1 parent 85311bd commit 2b5ad12

File tree

8 files changed

+30
-43
lines changed

8 files changed

+30
-43
lines changed

llvm/lib/Target/AMDGPU/AMDGPUCallLowering.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -520,14 +520,13 @@ bool AMDGPUCallLowering::lowerFormalArgumentsKernel(
520520

521521
// TODO: Align down to dword alignment and extract bits for extending loads.
522522
for (auto &Arg : F.args()) {
523-
// Hidden arguments that are in the kernel signature must be preloded to
524-
// user SGPRs, or loaded via the implicit_arg ptr. Print a diagnostic
525-
// error if a hidden argument is in the argument list and is not
526-
// preloaded.
523+
// Hidden arguments that are in the kernel signature must be preloaded to
524+
// user SGPRs, or loaded via the implicit_arg ptr. Print a diagnostic error
525+
// if a hidden argument is in the argument list and is not preloaded.
527526
if (Arg.hasAttribute("amdgpu-hidden-argument")) {
528527
DiagnosticInfoUnsupported NonPreloadHiddenArg(
529528
*Arg.getParent(),
530-
"Hidden argument in kernel signature was not preloaded");
529+
"hidden argument in kernel signature was not preloaded");
531530
F.getContext().diagnose(NonPreloadHiddenArg);
532531
}
533532

llvm/lib/Target/AMDGPU/AMDGPULowerKernelArguments.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ class PreloadKernelArgInfo {
145145
// arguments.
146146
void setInitialFreeUserSGPRsCount() {
147147
GCNUserSGPRUsageInfo UserSGPRInfo(F, ST);
148-
NumFreeUserSGPRs = UserSGPRInfo.getNumFreeKernargPreloadSGPRs();
148+
NumFreeUserSGPRs = UserSGPRInfo.getNumFreeUserSGPRs();
149149
}
150150

151151
bool tryAllocPreloadSGPRs(unsigned AllocSize, uint64_t ArgOffset,
@@ -486,8 +486,8 @@ static bool lowerKernelArguments(Function &F, const TargetMachine &TM) {
486486
uint64_t ImplicitArgsBaseOffset =
487487
alignTo(ExplicitArgOffset, ST.getAlignmentForImplicitArgPtr()) +
488488
BaseOffset;
489-
PreloadInfo.tryAllocImplicitArgPreloadSGPRs(ImplicitArgsBaseOffset, ExplicitArgOffset,
490-
Builder);
489+
PreloadInfo.tryAllocImplicitArgPreloadSGPRs(ImplicitArgsBaseOffset,
490+
ExplicitArgOffset, Builder);
491491
}
492492

493493
return true;

llvm/lib/Target/AMDGPU/GCNSubtarget.cpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -748,10 +748,6 @@ GCNUserSGPRUsageInfo::GCNUserSGPRUsageInfo(const Function &F,
748748
FlatScratchInit = true;
749749
}
750750

751-
if (!AMDGPU::isGraphics(CC) && !IsKernel &&
752-
!F.hasFnAttribute("amdgpu-no-lds-kernel-id"))
753-
LDSKernelId = true;
754-
755751
if (hasImplicitBufferPtr())
756752
NumUsedUserSGPRs += getNumUserSGPRForField(ImplicitBufferPtrID);
757753

@@ -775,9 +771,6 @@ GCNUserSGPRUsageInfo::GCNUserSGPRUsageInfo(const Function &F,
775771

776772
if (hasPrivateSegmentSize())
777773
NumUsedUserSGPRs += getNumUserSGPRForField(PrivateSegmentSizeID);
778-
779-
if (hasLDSKernelId())
780-
NumSyntheticSGPRs += getNumUserSGPRForField(LDSKernelIdID);
781774
}
782775

783776
void GCNUserSGPRUsageInfo::allocKernargPreloadSGPRs(unsigned NumSGPRs) {
@@ -786,6 +779,6 @@ void GCNUserSGPRUsageInfo::allocKernargPreloadSGPRs(unsigned NumSGPRs) {
786779
NumUsedUserSGPRs += NumSGPRs;
787780
}
788781

789-
unsigned GCNUserSGPRUsageInfo::getNumFreeKernargPreloadSGPRs() {
790-
return AMDGPU::getMaxNumUserSGPRs(ST) - (NumUsedUserSGPRs + NumSyntheticSGPRs);
782+
unsigned GCNUserSGPRUsageInfo::getNumFreeUserSGPRs() {
783+
return AMDGPU::getMaxNumUserSGPRs(ST) - NumUsedUserSGPRs;
791784
}

llvm/lib/Target/AMDGPU/GCNSubtarget.h

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1678,13 +1678,11 @@ class GCNUserSGPRUsageInfo {
16781678

16791679
bool hasPrivateSegmentSize() const { return PrivateSegmentSize; }
16801680

1681-
bool hasLDSKernelId() const { return LDSKernelId; }
1682-
16831681
unsigned getNumKernargPreloadSGPRs() const { return NumKernargPreloadSGPRs; }
16841682

16851683
unsigned getNumUsedUserSGPRs() const { return NumUsedUserSGPRs; }
16861684

1687-
unsigned getNumFreeKernargPreloadSGPRs();
1685+
unsigned getNumFreeUserSGPRs();
16881686

16891687
void allocKernargPreloadSGPRs(unsigned NumSGPRs);
16901688

@@ -1696,12 +1694,11 @@ class GCNUserSGPRUsageInfo {
16961694
KernargSegmentPtrID = 4,
16971695
DispatchIdID = 5,
16981696
FlatScratchInitID = 6,
1699-
PrivateSegmentSizeID = 7,
1700-
LDSKernelIdID = 8
1697+
PrivateSegmentSizeID = 7
17011698
};
17021699

17031700
// Returns the size in number of SGPRs for preload user SGPR field.
1704-
static constexpr unsigned getNumUserSGPRForField(UserSGPRID ID) {
1701+
static unsigned getNumUserSGPRForField(UserSGPRID ID) {
17051702
switch (ID) {
17061703
case ImplicitBufferPtrID:
17071704
return 2;
@@ -1719,8 +1716,6 @@ class GCNUserSGPRUsageInfo {
17191716
return 2;
17201717
case PrivateSegmentSizeID:
17211718
return 1;
1722-
case LDSKernelIdID:
1723-
return 1;
17241719
}
17251720
llvm_unreachable("Unknown UserSGPRID.");
17261721
}
@@ -1749,13 +1744,9 @@ class GCNUserSGPRUsageInfo {
17491744

17501745
bool PrivateSegmentSize = false;
17511746

1752-
bool LDSKernelId = false;
1753-
17541747
unsigned NumKernargPreloadSGPRs = 0;
17551748

17561749
unsigned NumUsedUserSGPRs = 0;
1757-
1758-
unsigned NumSyntheticSGPRs = 0;
17591750
};
17601751

17611752
} // end namespace llvm

llvm/lib/Target/AMDGPU/SIISelLowering.cpp

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2422,7 +2422,7 @@ void SITargetLowering::allocateSpecialInputSGPRs(
24222422
if (Info.hasWorkGroupIDZ())
24232423
allocateSGPR32Input(CCInfo, ArgInfo.WorkGroupIDZ);
24242424

2425-
if (UserSGPRInfo.hasLDSKernelId())
2425+
if (Info.hasLDSKernelId())
24262426
allocateSGPR32Input(CCInfo, ArgInfo.LDSKernelId);
24272427
}
24282428

@@ -2545,8 +2545,7 @@ void SITargetLowering::allocatePreloadKernArgSGPRs(
25452545
unsigned Padding = ArgOffset - LastExplicitArgOffset;
25462546
unsigned PaddingSGPRs = alignTo(Padding, 4) / 4;
25472547
// Check for free user SGPRs for preloading.
2548-
if (PaddingSGPRs + NumAllocSGPRs >
2549-
SGPRInfo.getNumFreeKernargPreloadSGPRs()) {
2548+
if (PaddingSGPRs + NumAllocSGPRs > SGPRInfo.getNumFreeUserSGPRs()) {
25502549
InPreloadSequence = false;
25512550
break;
25522551
}
@@ -2574,8 +2573,7 @@ void SITargetLowering::allocateLDSKernelId(CCState &CCInfo, MachineFunction &MF,
25742573
const SIRegisterInfo &TRI,
25752574
SIMachineFunctionInfo &Info) const {
25762575
// Always allocate this last since it is a synthetic preload.
2577-
const GCNUserSGPRUsageInfo &UserSGPRInfo = Info.getUserSGPRInfo();
2578-
if (UserSGPRInfo.hasLDSKernelId()) {
2576+
if (Info.hasLDSKernelId()) {
25792577
Register Reg = Info.addLDSKernelId();
25802578
MF.addLiveIn(Reg, &AMDGPU::SGPR_32RegClass);
25812579
CCInfo.AllocateReg(Reg);
@@ -2825,7 +2823,7 @@ SDValue SITargetLowering::LowerFormalArguments(
28252823
const GCNUserSGPRUsageInfo &UserSGPRInfo = Info->getUserSGPRInfo();
28262824
assert(!UserSGPRInfo.hasDispatchPtr() &&
28272825
!UserSGPRInfo.hasKernargSegmentPtr() && !Info->hasWorkGroupInfo() &&
2828-
!UserSGPRInfo.hasLDSKernelId() && !Info->hasWorkItemIDX() &&
2826+
!Info->hasLDSKernelId() && !Info->hasWorkItemIDX() &&
28292827
!Info->hasWorkItemIDY() && !Info->hasWorkItemIDZ());
28302828
(void)UserSGPRInfo;
28312829
if (!Subtarget->enableFlatScratch())
@@ -3025,16 +3023,16 @@ SDValue SITargetLowering::LowerFormalArguments(
30253023
NewArg = DAG.getMergeValues({NewArg, Chain}, DL);
30263024
}
30273025
} else {
3028-
// Hidden arguments that are in the kernel signature must be preloded to
3029-
// user SGPRs, or loaded via the implicit_arg ptr. Print a diagnostic
3026+
// Hidden arguments that are in the kernel signature must be preloaded
3027+
// to user SGPRs, or loaded via the implicit_arg ptr. Print a diagnostic
30303028
// error if a hidden argument is in the argument list and is not
30313029
// preloaded.
30323030
if (Arg.isOrigArg()) {
30333031
Argument *OrigArg = Fn.getArg(Arg.getOrigArgIndex());
30343032
if (OrigArg->hasAttribute("amdgpu-hidden-argument")) {
30353033
DiagnosticInfoUnsupported NonPreloadHiddenArg(
30363034
*OrigArg->getParent(),
3037-
"Hidden argument in kernel signature was not preloaded",
3035+
"hidden argument in kernel signature was not preloaded",
30383036
DL.getDebugLoc());
30393037
DAG.getContext()->diagnose(NonPreloadHiddenArg);
30403038
}

llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ SIMachineFunctionInfo::SIMachineFunctionInfo(const Function &F,
3838
const GCNSubtarget *STI)
3939
: AMDGPUMachineFunction(F, *STI), Mode(F, *STI), GWSResourcePSV(getTM(STI)),
4040
UserSGPRInfo(F, *STI), WorkGroupIDX(false), WorkGroupIDY(false),
41-
WorkGroupIDZ(false), WorkGroupInfo(false),
41+
WorkGroupIDZ(false), WorkGroupInfo(false), LDSKernelId(false),
4242
PrivateSegmentWaveByteOffset(false), WorkItemIDX(false),
4343
WorkItemIDY(false), WorkItemIDZ(false), ImplicitArgPtr(false),
4444
GITPtrHigh(0xffffffff), HighBitsOf32BitAddress(0) {
@@ -131,6 +131,9 @@ SIMachineFunctionInfo::SIMachineFunctionInfo(const Function &F,
131131
if (!F.hasFnAttribute("amdgpu-no-workitem-id-z") &&
132132
ST.getMaxWorkitemID(F, 2) != 0)
133133
WorkItemIDZ = true;
134+
135+
if (!IsKernel && !F.hasFnAttribute("amdgpu-no-lds-kernel-id"))
136+
LDSKernelId = true;
134137
}
135138

136139
if (isEntryFunction()) {

llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,7 @@ class SIMachineFunctionInfo final : public AMDGPUMachineFunction,
461461
bool WorkGroupIDY : 1;
462462
bool WorkGroupIDZ : 1;
463463
bool WorkGroupInfo : 1;
464+
bool LDSKernelId : 1;
464465
bool PrivateSegmentWaveByteOffset : 1;
465466

466467
bool WorkItemIDX : 1; // Always initialized.
@@ -821,6 +822,8 @@ class SIMachineFunctionInfo final : public AMDGPUMachineFunction,
821822
return ArgInfo.WorkGroupInfo.getRegister();
822823
}
823824

825+
bool hasLDSKernelId() const { return LDSKernelId; }
826+
824827
// Add special VGPR inputs
825828
void setWorkItemIDX(ArgDescriptor Arg) {
826829
ArgInfo.WorkItemIDX = Arg;

llvm/test/CodeGen/AMDGPU/invalid-hidden-kernarg-in-kernel-signature.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
; RUN: not llc -global-isel=1 -mtriple=amdgcn--amdhsa -mcpu=gfx940 -start-after=amdgpu-lower-kernel-arguments < %s 2>&1 | FileCheck -check-prefix=ERROR %s
2-
; RUN: not llc -global-isel=0 -mtriple=amdgcn--amdhsa -mcpu=gfx940 -start-after=amdgpu-lower-kernel-arguments < %s 2>&1 | FileCheck -check-prefix=ERROR %s
1+
; RUN: not llc -global-isel=1 -mtriple=amdgcn--amdhsa -mcpu=gfx940 < %s 2>&1 | FileCheck -check-prefix=ERROR %s
2+
; RUN: not llc -global-isel=0 -mtriple=amdgcn--amdhsa -mcpu=gfx940 < %s 2>&1 | FileCheck -check-prefix=ERROR %s
33

44
define amdgpu_kernel void @no_free_sgprs_block_count_x_no_preload_diag(ptr addrspace(1) inreg %out, i512 inreg, i32 inreg "amdgpu-hidden-argument" %_hidden_block_count_x) #0 {
5-
; ERROR: error: <unknown>:0:0: in function no_free_sgprs_block_count_x_no_preload_diag void (ptr addrspace(1), i512, i32): Hidden argument in kernel signature was not preloaded
5+
; ERROR: error: <unknown>:0:0: in function no_free_sgprs_block_count_x_no_preload_diag void (ptr addrspace(1), i512, i32): hidden argument in kernel signature was not preloaded
66
store i32 %_hidden_block_count_x, ptr addrspace(1) %out
77
ret void
88
}
99

1010
define amdgpu_kernel void @preloadremainder_z_no_preload_diag(ptr addrspace(1) inreg %out, i256 inreg, i32 inreg "amdgpu-hidden-argument" %_hidden_block_count_x, i32 inreg "amdgpu-hidden-argument" %_hidden_block_count_y, i32 inreg "amdgpu-hidden-argument" %_hidden_block_count_z, i16 inreg "amdgpu-hidden-argument" %_hidden_group_size_x, i16 inreg "amdgpu-hidden-argument" %_hidden_group_size_y, i16 inreg "amdgpu-hidden-argument" %_hidden_group_size_z, i16 inreg "amdgpu-hidden-argument" %_hidden_remainder_x, i16 inreg "amdgpu-hidden-argument" %_hidden_remainder_y, i16 inreg "amdgpu-hidden-argument" %_hidden_remainder_z) #0 {
11-
; ERROR: error: <unknown>:0:0: in function preloadremainder_z_no_preload_diag void (ptr addrspace(1), i256, i32, i32, i32, i16, i16, i16, i16, i16, i16): Hidden argument in kernel signature was not preloaded
11+
; ERROR: error: <unknown>:0:0: in function preloadremainder_z_no_preload_diag void (ptr addrspace(1), i256, i32, i32, i32, i16, i16, i16, i16, i16, i16): hidden argument in kernel signature was not preloaded
1212
%conv = zext i16 %_hidden_remainder_z to i32
1313
store i32 %conv, ptr addrspace(1) %out
1414
ret void

0 commit comments

Comments
 (0)