Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions llvm/docs/AMDGPUUsage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2529,6 +2529,9 @@ As part of the AMDGPU MC layer, AMDGPU provides the following target-specific
``max(arg, ...)`` 1 or more Variadic signed operation that returns the maximum
value of all its arguments.

``min(arg, ...)`` 1 or more Variadic signed operation that returns the minimum
value of all its arguments

``or(arg, ...)`` 1 or more Variadic signed operation that returns the bitwise-or
result of all its arguments.

Expand Down
17 changes: 14 additions & 3 deletions llvm/lib/Target/AMDGPU/AMDGPUMCResourceInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/Target/TargetMachine.h"
#include "GCNSubtarget.h"

#define DEBUG_TYPE "amdgpu-mc-resource-usage"

Expand Down Expand Up @@ -302,6 +303,8 @@ void MCResourceInfo::gatherResourceInfo(
}
});

const GCNSubtarget &ST = MF.getSubtarget<GCNSubtarget>();
auto [MaxAllowedVGPRs, MaxAllowedAGPRs] = ST.getMaxNumVectorRegs(MF.getFunction());
auto SetMaxReg = [&](MCSymbol *MaxSym, int32_t numRegs,
ResourceInfoKind RIK) {
if (!FRI.HasIndirectCall) {
Expand All @@ -310,11 +313,19 @@ void MCResourceInfo::gatherResourceInfo(
} else {
const MCExpr *SymRef = MCSymbolRefExpr::create(MaxSym, OutContext);
MCSymbol *LocalNumSym = getSymbol(FnSym->getName(), RIK, OutContext);
const MCExpr *MaxWithLocal = AMDGPUMCExpr::createMax(
const MCExpr *RegExpr = AMDGPUMCExpr::createMax(
{MCConstantExpr::create(numRegs, OutContext), SymRef}, OutContext);
LocalNumSym->setVariableValue(MaxWithLocal);
if(RIK == RIK_NumVGPR) {
RegExpr = AMDGPUMCExpr::createMin(
{MCConstantExpr::create(MaxAllowedVGPRs, OutContext),RegExpr},OutContext);
}
else if (RIK == RIK_NumAGPR) {
RegExpr = AMDGPUMCExpr::createMin(
{MCConstantExpr::create(MaxAllowedAGPRs, OutContext),RegExpr},OutContext);
}
LocalNumSym->setVariableValue(RegExpr);
LLVM_DEBUG(dbgs() << "MCResUse: " << LocalNumSym->getName()
<< ": Indirect callee within, using module maximum\n");
<< ": Indirect callee within, using minimum of module maximum and function maximum\n");
}
};

Expand Down
4 changes: 3 additions & 1 deletion llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9344,7 +9344,8 @@ void AMDGPUAsmParser::onBeginOfFile() {
/// Parse AMDGPU specific expressions.
///
/// expr ::= or(expr, ...) |
/// max(expr, ...)
/// max(expr, ...) |
/// min(expr, ...)
///
bool AMDGPUAsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc) {
using AGVK = AMDGPUMCExpr::VariantKind;
Expand All @@ -9353,6 +9354,7 @@ bool AMDGPUAsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc) {
StringRef TokenId = getTokenStr();
AGVK VK = StringSwitch<AGVK>(TokenId)
.Case("max", AGVK::AGVK_Max)
.Case("min", AGVK::AGVK_Min)
.Case("or", AGVK::AGVK_Or)
.Case("extrasgprs", AGVK::AGVK_ExtraSGPRs)
.Case("totalnumvgprs", AGVK::AGVK_TotalNumVGPRs)
Expand Down
15 changes: 15 additions & 0 deletions llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ void AMDGPUMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const {
case AGVK_Max:
OS << "max(";
break;
case AGVK_Min:
OS << "min(";
break;
case AGVK_ExtraSGPRs:
OS << "extrasgprs(";
break;
Expand Down Expand Up @@ -103,6 +106,8 @@ static int64_t op(AMDGPUMCExpr::VariantKind Kind, int64_t Arg1, int64_t Arg2) {
return std::max(Arg1, Arg2);
case AMDGPUMCExpr::AGVK_Or:
return Arg1 | Arg2;
case AMDGPUMCExpr::AGVK_Min:
return std::min(Arg1, Arg2);
}
}

Expand Down Expand Up @@ -499,6 +504,16 @@ static void targetOpKnownBitsMapHelper(const MCExpr *Expr, KnownBitsMap &KBM,
KBM[Expr] = std::move(KB);
return;
}
case AMDGPUMCExpr::VariantKind::AGVK_Min: {
knownBitsMapHelper(AGVK->getSubExpr(0), KBM, Depth + 1);
KnownBits KB = KBM[AGVK->getSubExpr(0)];
for (const MCExpr *Arg : AGVK->getArgs()) {
knownBitsMapHelper(Arg, KBM, Depth + 1);
KB = KnownBits::umin(KB, KBM[Arg]);
}
KBM[Expr] = std::move(KB);
return;
}
case AMDGPUMCExpr::VariantKind::AGVK_ExtraSGPRs:
case AMDGPUMCExpr::VariantKind::AGVK_TotalNumVGPRs:
case AMDGPUMCExpr::VariantKind::AGVK_AlignTo:
Expand Down
8 changes: 7 additions & 1 deletion llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ enum class LitModifier { None, Lit, Lit64 };
/// operations are:
/// - (bitwise) or
/// - max
/// - min
///
/// \note If the 'or'/'max' operations are provided only a single argument, the
/// \note If the 'or'/'max'/'min' operations are provided only a single argument, the
/// operation will act as a no-op and simply resolve as the provided argument.
///
class AMDGPUMCExpr : public MCTargetExpr {
Expand All @@ -41,6 +42,7 @@ class AMDGPUMCExpr : public MCTargetExpr {
AGVK_InstPrefSize,
AGVK_Lit,
AGVK_Lit64,
AGVK_Min,
};

// Relocation specifiers.
Expand Down Expand Up @@ -85,6 +87,10 @@ class AMDGPUMCExpr : public MCTargetExpr {
MCContext &Ctx) {
return create(VariantKind::AGVK_Max, Args, Ctx);
}
static const AMDGPUMCExpr *createMin(ArrayRef<const MCExpr *> Args,
MCContext &Ctx) {
return create(VariantKind::AGVK_Min, Args, Ctx);
}

static const AMDGPUMCExpr *createExtraSGPRs(const MCExpr *VCCUsed,
const MCExpr *FlatScrUsed,
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/AMDGPU/agpr-register-count.ll
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,8 @@ declare void @undef_func()
; GCN-LABEL: {{^}}kernel_call_undef_func:
; GCN: .amdhsa_next_free_vgpr max(totalnumvgprs(.Lkernel_call_undef_func.num_agpr, .Lkernel_call_undef_func.num_vgpr), 1, 0)
; GFX90A: .amdhsa_accum_offset (((((alignto(max(1, .Lkernel_call_undef_func.num_vgpr), 4)/4)-1)&~65536)&63)+1)*4
; GCN: .set .Lkernel_call_undef_func.num_vgpr, max(32, amdgpu.max_num_vgpr)
; GCN: .set .Lkernel_call_undef_func.num_agpr, max(0, amdgpu.max_num_agpr)
; GCN: .set .Lkernel_call_undef_func.num_vgpr, min(128, max(32, amdgpu.max_num_vgpr))
; GCN: .set .Lkernel_call_undef_func.num_agpr, min(128, max(0, amdgpu.max_num_agpr))
; GCN: NumVgprs: .Lkernel_call_undef_func.num_vgpr
; GCN: NumAgprs: .Lkernel_call_undef_func.num_agpr
; GCN: TotalNumVgprs: totalnumvgprs(.Lkernel_call_undef_func.num_agpr, .Lkernel_call_undef_func.num_vgpr)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ bb:
declare void @undef_func()

; CHECK: .type kernel_call_undef_func
; CHECK: .set .Lkernel_call_undef_func.num_agpr, max(0, amdgpu.max_num_agpr)
; CHECK: .set .Lkernel_call_undef_func.num_agpr, min(128, max(0, amdgpu.max_num_agpr))
; CHECK: NumAgprs: .Lkernel_call_undef_func.num_agpr
; CHECK: .set amdgpu.max_num_agpr, 32
define amdgpu_kernel void @kernel_call_undef_func() #0 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -547,17 +547,17 @@ define amdgpu_kernel void @f256() #256 {
attributes #256 = { nounwind "amdgpu-flat-work-group-size"="256,256" }

; GCN-LABEL: {{^}}f512:
; GFX9: .set .Lf512.num_vgpr, max(128, amdgpu.max_num_vgpr)
; GFX90A: .set .Lf512.num_vgpr, max(128, amdgpu.max_num_vgpr)
; GFX90A: .set .Lf512.num_agpr, max(128, amdgpu.max_num_agpr)
; GFX10WGP-WAVE32: .set .Lf512.num_vgpr, max(256, amdgpu.max_num_vgpr)
; GFX10WGP-WAVE64: .set .Lf512.num_vgpr, max(256, amdgpu.max_num_vgpr)
; GFX10CU-WAVE32: .set .Lf512.num_vgpr, max(128, amdgpu.max_num_vgpr)
; GFX10CU-WAVE64: .set .Lf512.num_vgpr, max(128, amdgpu.max_num_vgpr)
; GFX11WGP-WAVE32: .set .Lf512.num_vgpr, max(256, amdgpu.max_num_vgpr)
; GFX11WGP-WAVE64: .set .Lf512.num_vgpr, max(256, amdgpu.max_num_vgpr)
; GFX11CU-WAVE32: .set .Lf512.num_vgpr, max(192, amdgpu.max_num_vgpr)
; GFX11CU-WAVE64: .set .Lf512.num_vgpr, max(192, amdgpu.max_num_vgpr)
; GFX9: .set .Lf512.num_vgpr, min(128, max(128, amdgpu.max_num_vgpr))
; GFX90A: .set .Lf512.num_vgpr, min(128, max(128, amdgpu.max_num_vgpr))
; GFX90A: .set .Lf512.num_agpr, min(128, max(128, amdgpu.max_num_agpr))
; GFX10WGP-WAVE32: .set .Lf512.num_vgpr, min(256, max(256, amdgpu.max_num_vgpr))
; GFX10WGP-WAVE64: .set .Lf512.num_vgpr, min(256, max(256, amdgpu.max_num_vgpr))
; GFX10CU-WAVE32: .set .Lf512.num_vgpr, min(128, max(128, amdgpu.max_num_vgpr))
; GFX10CU-WAVE64: .set .Lf512.num_vgpr, min(128, max(128, amdgpu.max_num_vgpr))
; GFX11WGP-WAVE32: .set .Lf512.num_vgpr, min(256, max(256, amdgpu.max_num_vgpr))
; GFX11WGP-WAVE64: .set .Lf512.num_vgpr, min(256, max(256, amdgpu.max_num_vgpr))
; GFX11CU-WAVE32: .set .Lf512.num_vgpr, min(192, max(192, amdgpu.max_num_vgpr))
; GFX11CU-WAVE64: .set .Lf512.num_vgpr, min(192, max(192, amdgpu.max_num_vgpr))
; GCN: NumVgprs: .Lf512.num_vgpr
; GFX90A: NumAgprs: .Lf512.num_agpr
; GFX90A: TotalNumVgprs: totalnumvgprs(.Lf512.num_agpr, .Lf512.num_vgpr)
Expand All @@ -569,17 +569,17 @@ define amdgpu_kernel void @f512() #512 {
attributes #512 = { nounwind "amdgpu-flat-work-group-size"="512,512" }

; GCN-LABEL: {{^}}f1024:
; GFX9: .set .Lf1024.num_vgpr, max(64, amdgpu.max_num_vgpr)
; GFX90A: .set .Lf1024.num_vgpr, max(64, amdgpu.max_num_vgpr)
; GFX90A: .set .Lf1024.num_agpr, max(64, amdgpu.max_num_agpr)
; GFX10WGP-WAVE32: .set .Lf1024.num_vgpr, max(128, amdgpu.max_num_vgpr)
; GFX10WGP-WAVE64: .set .Lf1024.num_vgpr, max(128, amdgpu.max_num_vgpr)
; GFX10CU-WAVE32: .set .Lf1024.num_vgpr, max(64, amdgpu.max_num_vgpr)
; GFX10CU-WAVE64: .set .Lf1024.num_vgpr, max(64, amdgpu.max_num_vgpr)
; GFX11WGP-WAVE32: .set .Lf1024.num_vgpr, max(192, amdgpu.max_num_vgpr)
; GFX11WGP-WAVE64: .set .Lf1024.num_vgpr, max(192, amdgpu.max_num_vgpr)
; GFX11CU-WAVE32: .set .Lf1024.num_vgpr, max(96, amdgpu.max_num_vgpr)
; GFX11CU-WAVE64: .set .Lf1024.num_vgpr, max(96, amdgpu.max_num_vgpr)
; GFX9: .set .Lf1024.num_vgpr, min(64, max(64, amdgpu.max_num_vgpr))
; GFX90A: .set .Lf1024.num_vgpr, min(64, max(64, amdgpu.max_num_vgpr))
; GFX90A: .set .Lf1024.num_agpr, min(64, max(64, amdgpu.max_num_agpr))
; GFX10WGP-WAVE32: .set .Lf1024.num_vgpr, min(128, max(128, amdgpu.max_num_vgpr))
; GFX10WGP-WAVE64: .set .Lf1024.num_vgpr, min(128, max(128, amdgpu.max_num_vgpr))
; GFX10CU-WAVE32: .set .Lf1024.num_vgpr, min(64, max(64, amdgpu.max_num_vgpr))
; GFX10CU-WAVE64: .set .Lf1024.num_vgpr, min(64, max(64, amdgpu.max_num_vgpr))
; GFX11WGP-WAVE32: .set .Lf1024.num_vgpr, min(192, max(192, amdgpu.max_num_vgpr))
; GFX11WGP-WAVE64: .set .Lf1024.num_vgpr, min(192, max(192, amdgpu.max_num_vgpr))
; GFX11CU-WAVE32: .set .Lf1024.num_vgpr, min(96, max(96, amdgpu.max_num_vgpr))
; GFX11CU-WAVE64: .set .Lf1024.num_vgpr, min(96, max(96, amdgpu.max_num_vgpr))
; GCN: NumVgprs: .Lf1024.num_vgpr
; GFX90A: NumAgprs: .Lf1024.num_agpr
; GFX90A: TotalNumVgprs: totalnumvgprs(.Lf1024.num_agpr, .Lf1024.num_vgpr)
Expand Down
6 changes: 3 additions & 3 deletions llvm/test/CodeGen/AMDGPU/call-graph-register-usage.ll
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ define amdgpu_kernel void @usage_direct_recursion(i32 %n) #0 {
; Make sure there's no assert when a sgpr96 is used.
; GCN-LABEL: {{^}}count_use_sgpr96_external_call
; GCN: ; sgpr96 s[{{[0-9]+}}:{{[0-9]+}}]
; GCN: .set .Lcount_use_sgpr96_external_call.num_vgpr, max(0, amdgpu.max_num_vgpr)
; GCN: .set .Lcount_use_sgpr96_external_call.num_vgpr, min(64, max(0, amdgpu.max_num_vgpr))
; GCN: .set .Lcount_use_sgpr96_external_call.numbered_sgpr, max(33, amdgpu.max_num_sgpr)
; CI: TotalNumSgprs: .Lcount_use_sgpr96_external_call.numbered_sgpr+4
; VI-BUG: TotalNumSgprs: 96
Expand All @@ -254,7 +254,7 @@ entry:
; Make sure there's no assert when a sgpr160 is used.
; GCN-LABEL: {{^}}count_use_sgpr160_external_call
; GCN: ; sgpr160 s[{{[0-9]+}}:{{[0-9]+}}]
; GCN: .set .Lcount_use_sgpr160_external_call.num_vgpr, max(0, amdgpu.max_num_vgpr)
; GCN: .set .Lcount_use_sgpr160_external_call.num_vgpr, min(64, max(0, amdgpu.max_num_vgpr))
; GCN: .set .Lcount_use_sgpr160_external_call.numbered_sgpr, max(33, amdgpu.max_num_sgpr)
; CI: TotalNumSgprs: .Lcount_use_sgpr160_external_call.numbered_sgpr+4
; VI-BUG: TotalNumSgprs: 96
Expand All @@ -269,7 +269,7 @@ entry:
; Make sure there's no assert when a vgpr160 is used.
; GCN-LABEL: {{^}}count_use_vgpr160_external_call
; GCN: ; vgpr160 v[{{[0-9]+}}:{{[0-9]+}}]
; GCN: .set .Lcount_use_vgpr160_external_call.num_vgpr, max(5, amdgpu.max_num_vgpr)
; GCN: .set .Lcount_use_vgpr160_external_call.num_vgpr, min(64, max(5, amdgpu.max_num_vgpr))
; GCN: .set .Lcount_use_vgpr160_external_call.numbered_sgpr, max(33, amdgpu.max_num_sgpr)
; CI: TotalNumSgprs: .Lcount_use_vgpr160_external_call.numbered_sgpr+4
; VI-BUG: TotalNumSgprs: 96
Expand Down
28 changes: 14 additions & 14 deletions llvm/test/CodeGen/AMDGPU/function-resource-usage.ll
Original file line number Diff line number Diff line change
Expand Up @@ -356,8 +356,8 @@ define amdgpu_kernel void @multi_call_use_use_stack() #0 {
declare void @external() #0

; GCN-LABEL: {{^}}multi_call_with_external:
; GCN: .set .Lmulti_call_with_external.num_vgpr, max(41, amdgpu.max_num_vgpr)
; GCN: .set .Lmulti_call_with_external.num_agpr, max(0, amdgpu.max_num_agpr)
; GCN: .set .Lmulti_call_with_external.num_vgpr, min(64, max(41, amdgpu.max_num_vgpr))
; GCN: .set .Lmulti_call_with_external.num_agpr, min(0, max(0, amdgpu.max_num_agpr))
; GCN: .set .Lmulti_call_with_external.numbered_sgpr, max(52, amdgpu.max_num_sgpr)
; GCN: .set .Lmulti_call_with_external.private_seg_size, 0+max(.Luse_stack0.private_seg_size, .Luse_stack1.private_seg_size)
; GCN: .set .Lmulti_call_with_external.uses_vcc, 1
Expand All @@ -376,8 +376,8 @@ define amdgpu_kernel void @multi_call_with_external() #0 {
}

; GCN-LABEL: {{^}}multi_call_with_external_and_duplicates:
; GCN: .set .Lmulti_call_with_external_and_duplicates.num_vgpr, max(41, amdgpu.max_num_vgpr)
; GCN: .set .Lmulti_call_with_external_and_duplicates.num_agpr, max(0, amdgpu.max_num_agpr)
; GCN: .set .Lmulti_call_with_external_and_duplicates.num_vgpr, min(64, max(41, amdgpu.max_num_vgpr))
; GCN: .set .Lmulti_call_with_external_and_duplicates.num_agpr, min(0, max(0, amdgpu.max_num_agpr))
; GCN: .set .Lmulti_call_with_external_and_duplicates.numbered_sgpr, max(54, amdgpu.max_num_sgpr)
; GCN: .set .Lmulti_call_with_external_and_duplicates.private_seg_size, 0+max(.Luse_stack0.private_seg_size, .Luse_stack1.private_seg_size)
; GCN: .set .Lmulti_call_with_external_and_duplicates.uses_vcc, 1
Expand All @@ -399,8 +399,8 @@ define amdgpu_kernel void @multi_call_with_external_and_duplicates() #0 {
}

; GCN-LABEL: {{^}}usage_external:
; GCN: .set .Lusage_external.num_vgpr, max(32, amdgpu.max_num_vgpr)
; GCN: .set .Lusage_external.num_agpr, max(0, amdgpu.max_num_agpr)
; GCN: .set .Lusage_external.num_vgpr, min(64, max(32, amdgpu.max_num_vgpr))
; GCN: .set .Lusage_external.num_agpr, min(0, max(0, amdgpu.max_num_agpr))
; GCN: .set .Lusage_external.numbered_sgpr, max(33, amdgpu.max_num_sgpr)
; GCN: .set .Lusage_external.private_seg_size, 0
; GCN: .set .Lusage_external.uses_vcc, 1
Expand All @@ -419,8 +419,8 @@ define amdgpu_kernel void @usage_external() #0 {
declare void @external_recurse() #2

; GCN-LABEL: {{^}}usage_external_recurse:
; GCN: .set .Lusage_external_recurse.num_vgpr, max(32, amdgpu.max_num_vgpr)
; GCN: .set .Lusage_external_recurse.num_agpr, max(0, amdgpu.max_num_agpr)
; GCN: .set .Lusage_external_recurse.num_vgpr, min(64, max(32, amdgpu.max_num_vgpr))
; GCN: .set .Lusage_external_recurse.num_agpr, min(0, max(0, amdgpu.max_num_agpr))
; GCN: .set .Lusage_external_recurse.numbered_sgpr, max(33, amdgpu.max_num_sgpr)
; GCN: .set .Lusage_external_recurse.private_seg_size, 0
; GCN: .set .Lusage_external_recurse.uses_vcc, 1
Expand Down Expand Up @@ -614,8 +614,8 @@ define amdgpu_kernel void @multi_call_with_multi_stage_recurse(i32 %n) #0 {

; Make sure there's no assert when a sgpr96 is used.
; GCN-LABEL: {{^}}count_use_sgpr96_external_call
; GCN: .set .Lcount_use_sgpr96_external_call.num_vgpr, max(32, amdgpu.max_num_vgpr)
; GCN: .set .Lcount_use_sgpr96_external_call.num_agpr, max(0, amdgpu.max_num_agpr)
; GCN: .set .Lcount_use_sgpr96_external_call.num_vgpr, min(64, max(32, amdgpu.max_num_vgpr))
; GCN: .set .Lcount_use_sgpr96_external_call.num_agpr, min(0, max(0, amdgpu.max_num_agpr))
; GCN: .set .Lcount_use_sgpr96_external_call.numbered_sgpr, max(33, amdgpu.max_num_sgpr)
; GCN: .set .Lcount_use_sgpr96_external_call.private_seg_size, 0
; GCN: .set .Lcount_use_sgpr96_external_call.uses_vcc, 1
Expand All @@ -635,8 +635,8 @@ entry:

; Make sure there's no assert when a sgpr160 is used.
; GCN-LABEL: {{^}}count_use_sgpr160_external_call
; GCN: .set .Lcount_use_sgpr160_external_call.num_vgpr, max(32, amdgpu.max_num_vgpr)
; GCN: .set .Lcount_use_sgpr160_external_call.num_agpr, max(0, amdgpu.max_num_agpr)
; GCN: .set .Lcount_use_sgpr160_external_call.num_vgpr, min(64, max(32, amdgpu.max_num_vgpr))
; GCN: .set .Lcount_use_sgpr160_external_call.num_agpr, min(0, max(0, amdgpu.max_num_agpr))
; GCN: .set .Lcount_use_sgpr160_external_call.numbered_sgpr, max(33, amdgpu.max_num_sgpr)
; GCN: .set .Lcount_use_sgpr160_external_call.private_seg_size, 0
; GCN: .set .Lcount_use_sgpr160_external_call.uses_vcc, 1
Expand All @@ -656,8 +656,8 @@ entry:

; Make sure there's no assert when a vgpr160 is used.
; GCN-LABEL: {{^}}count_use_vgpr160_external_call
; GCN: .set .Lcount_use_vgpr160_external_call.num_vgpr, max(32, amdgpu.max_num_vgpr)
; GCN: .set .Lcount_use_vgpr160_external_call.num_agpr, max(0, amdgpu.max_num_agpr)
; GCN: .set .Lcount_use_vgpr160_external_call.num_vgpr, min(64, max(32, amdgpu.max_num_vgpr))
; GCN: .set .Lcount_use_vgpr160_external_call.num_agpr, min(0, max(0, amdgpu.max_num_agpr))
; GCN: .set .Lcount_use_vgpr160_external_call.numbered_sgpr, max(33, amdgpu.max_num_sgpr)
; GCN: .set .Lcount_use_vgpr160_external_call.private_seg_size, 0
; GCN: .set .Lcount_use_vgpr160_external_call.uses_vcc, 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
; use-after-free if the assignment operator invokes a DenseMap growth.

; CHECK-LABEL: I_Quit:
; CHECK: .set .LI_Quit.num_vgpr, max(41, amdgpu.max_num_vgpr)
; CHECK: .set .LI_Quit.num_agpr, max(0, amdgpu.max_num_agpr)
; CHECK: .set .LI_Quit.num_vgpr, min(128, max(41, amdgpu.max_num_vgpr))
; CHECK: .set .LI_Quit.num_agpr, min(0, max(0, amdgpu.max_num_agpr))
; CHECK: .set .LI_Quit.numbered_sgpr, max(56, amdgpu.max_num_sgpr)
; CHECK: .set .LI_Quit.private_seg_size, 16
; CHECK: .set .LI_Quit.uses_vcc, 1
Expand Down Expand Up @@ -78,8 +78,8 @@ define void @P_SetThingPosition() {
}

; CHECK-LABEL: P_SetupPsprites:
; CHECK: .set .LP_SetupPsprites.num_vgpr, max(41, amdgpu.max_num_vgpr)
; CHECK: .set .LP_SetupPsprites.num_agpr, max(0, amdgpu.max_num_agpr)
; CHECK: .set .LP_SetupPsprites.num_vgpr, min(128, max(41, amdgpu.max_num_vgpr))
; CHECK: .set .LP_SetupPsprites.num_agpr, min(0, max(0, amdgpu.max_num_agpr))
; CHECK: .set .LP_SetupPsprites.numbered_sgpr, max(56, amdgpu.max_num_sgpr)
; CHECK: .set .LP_SetupPsprites.private_seg_size, 16
; CHECK: .set .LP_SetupPsprites.uses_vcc, 1
Expand Down Expand Up @@ -126,8 +126,8 @@ define void @P_SpawnPlayer() {
}

; CHECK-LABEL: I_Error:
; CHECK: .set .LI_Error.num_vgpr, max(41, amdgpu.max_num_vgpr)
; CHECK: .set .LI_Error.num_agpr, max(0, amdgpu.max_num_agpr)
; CHECK: .set .LI_Error.num_vgpr, min(128, max(41, amdgpu.max_num_vgpr))
; CHECK: .set .LI_Error.num_agpr, min(0, max(0, amdgpu.max_num_agpr))
; CHECK: .set .LI_Error.numbered_sgpr, max(56, amdgpu.max_num_sgpr)
; CHECK: .set .LI_Error.private_seg_size, 16
; CHECK: .set .LI_Error.uses_vcc, 1
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/AMDGPU/object-linking-local-resources.ll
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ define amdgpu_kernel void @my_kernel(ptr %fptr) {
; COM: callee" path. Register/stack-size symbols include the module-level
; COM: sinks; boolean flags are all forced to 1; HasIndirectCall is set too
; COM: (IsIndirect covers calls to declarations).
; DEFAULT: .set .Lcalls_extern.num_vgpr, max({{[0-9]+}}, amdgpu.max_num_vgpr)
; DEFAULT: .set .Lcalls_extern.num_agpr, max({{[0-9]+}}, amdgpu.max_num_agpr)
; DEFAULT: .set .Lcalls_extern.num_vgpr, min(64, max({{[0-9]+}}, amdgpu.max_num_vgpr))
; DEFAULT: .set .Lcalls_extern.num_agpr, min(0, max({{[0-9]+}}, amdgpu.max_num_agpr))
; DEFAULT: .set .Lcalls_extern.numbered_sgpr, max({{[0-9]+}}, amdgpu.max_num_sgpr)
; DEFAULT: .set .Lcalls_extern.num_named_barrier, max({{[0-9]+}}, amdgpu.max_num_named_barrier)
; DEFAULT: .set .Lcalls_extern.uses_vcc, 1
Expand Down
Loading
Loading