Skip to content

Commit 8294459

Browse files
authored
[AMDGPU] Change scope of resource usage info symbols (#114810)
Change scope of resource usage info MC symbols to align with the function linkage type
1 parent 733be4e commit 8294459

8 files changed

+97
-74
lines changed

llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,7 @@ void AMDGPUAsmPrinter::validateMCResourceInfo(Function &F) {
363363
using RIK = MCResourceInfo::ResourceInfoKind;
364364
const GCNSubtarget &STM = TM.getSubtarget<GCNSubtarget>(F);
365365
MCSymbol *FnSym = TM.getSymbol(&F);
366+
bool IsLocal = F.hasLocalLinkage();
366367

367368
auto TryGetMCExprValue = [](const MCExpr *Value, uint64_t &Res) -> bool {
368369
int64_t Val;
@@ -375,8 +376,8 @@ void AMDGPUAsmPrinter::validateMCResourceInfo(Function &F) {
375376

376377
const uint64_t MaxScratchPerWorkitem =
377378
STM.getMaxWaveScratchSize() / STM.getWavefrontSize();
378-
MCSymbol *ScratchSizeSymbol =
379-
RI.getSymbol(FnSym->getName(), RIK::RIK_PrivateSegSize, OutContext);
379+
MCSymbol *ScratchSizeSymbol = RI.getSymbol(
380+
FnSym->getName(), RIK::RIK_PrivateSegSize, OutContext, IsLocal);
380381
uint64_t ScratchSize;
381382
if (ScratchSizeSymbol->isVariable() &&
382383
TryGetMCExprValue(ScratchSizeSymbol->getVariableValue(), ScratchSize) &&
@@ -389,7 +390,7 @@ void AMDGPUAsmPrinter::validateMCResourceInfo(Function &F) {
389390
// Validate addressable scalar registers (i.e., prior to added implicit
390391
// SGPRs).
391392
MCSymbol *NumSGPRSymbol =
392-
RI.getSymbol(FnSym->getName(), RIK::RIK_NumSGPR, OutContext);
393+
RI.getSymbol(FnSym->getName(), RIK::RIK_NumSGPR, OutContext, IsLocal);
393394
if (STM.getGeneration() >= AMDGPUSubtarget::VOLCANIC_ISLANDS &&
394395
!STM.hasSGPRInitBug()) {
395396
unsigned MaxAddressableNumSGPRs = STM.getAddressableNumSGPRs();
@@ -406,9 +407,9 @@ void AMDGPUAsmPrinter::validateMCResourceInfo(Function &F) {
406407
}
407408

408409
MCSymbol *VCCUsedSymbol =
409-
RI.getSymbol(FnSym->getName(), RIK::RIK_UsesVCC, OutContext);
410-
MCSymbol *FlatUsedSymbol =
411-
RI.getSymbol(FnSym->getName(), RIK::RIK_UsesFlatScratch, OutContext);
410+
RI.getSymbol(FnSym->getName(), RIK::RIK_UsesVCC, OutContext, IsLocal);
411+
MCSymbol *FlatUsedSymbol = RI.getSymbol(
412+
FnSym->getName(), RIK::RIK_UsesFlatScratch, OutContext, IsLocal);
412413
uint64_t VCCUsed, FlatUsed, NumSgpr;
413414

414415
if (NumSGPRSymbol->isVariable() && VCCUsedSymbol->isVariable() &&
@@ -435,9 +436,9 @@ void AMDGPUAsmPrinter::validateMCResourceInfo(Function &F) {
435436
}
436437

437438
MCSymbol *NumVgprSymbol =
438-
RI.getSymbol(FnSym->getName(), RIK::RIK_NumVGPR, OutContext);
439+
RI.getSymbol(FnSym->getName(), RIK::RIK_NumVGPR, OutContext, IsLocal);
439440
MCSymbol *NumAgprSymbol =
440-
RI.getSymbol(FnSym->getName(), RIK::RIK_NumAGPR, OutContext);
441+
RI.getSymbol(FnSym->getName(), RIK::RIK_NumAGPR, OutContext, IsLocal);
441442
uint64_t NumVgpr, NumAgpr;
442443

443444
MachineModuleInfo &MMI =
@@ -655,6 +656,7 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
655656

656657
const GCNSubtarget &STM = MF.getSubtarget<GCNSubtarget>();
657658
MCContext &Context = getObjFileLowering().getContext();
659+
bool IsLocal = MF.getFunction().hasLocalLinkage();
658660
// FIXME: This should be an explicit check for Mesa.
659661
if (!STM.isAmdHsaOS() && !STM.isAmdPalOS()) {
660662
MCSectionELF *ConfigSection =
@@ -700,20 +702,24 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
700702
{
701703
using RIK = MCResourceInfo::ResourceInfoKind;
702704
getTargetStreamer()->EmitMCResourceInfo(
703-
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_NumVGPR, OutContext),
704-
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_NumAGPR, OutContext),
705-
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_NumSGPR, OutContext),
705+
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_NumVGPR, OutContext,
706+
IsLocal),
707+
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_NumAGPR, OutContext,
708+
IsLocal),
709+
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_NumSGPR, OutContext,
710+
IsLocal),
706711
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_PrivateSegSize,
707-
OutContext),
708-
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_UsesVCC, OutContext),
712+
OutContext, IsLocal),
713+
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_UsesVCC, OutContext,
714+
IsLocal),
709715
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_UsesFlatScratch,
710-
OutContext),
716+
OutContext, IsLocal),
711717
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_HasDynSizedStack,
712-
OutContext),
713-
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_HasRecursion,
714-
OutContext),
718+
OutContext, IsLocal),
719+
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_HasRecursion, OutContext,
720+
IsLocal),
715721
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_HasIndirectCall,
716-
OutContext));
722+
OutContext, IsLocal));
717723
}
718724

719725
if (isVerbose()) {
@@ -726,19 +732,21 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
726732
OutStreamer->emitRawComment(" Function info:", false);
727733

728734
emitCommonFunctionComments(
729-
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_NumVGPR, OutContext)
735+
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_NumVGPR, OutContext,
736+
IsLocal)
730737
->getVariableValue(),
731-
STM.hasMAIInsts() ? RI.getSymbol(CurrentFnSym->getName(),
732-
RIK::RIK_NumAGPR, OutContext)
733-
->getVariableValue()
734-
: nullptr,
738+
STM.hasMAIInsts()
739+
? RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_NumAGPR,
740+
OutContext, IsLocal)
741+
->getVariableValue()
742+
: nullptr,
735743
RI.createTotalNumVGPRs(MF, Ctx),
736744
RI.createTotalNumSGPRs(
737745
MF,
738746
MF.getSubtarget<GCNSubtarget>().getTargetID().isXnackOnOrAny(),
739747
Ctx),
740748
RI.getSymbol(CurrentFnSym->getName(), RIK::RIK_PrivateSegSize,
741-
OutContext)
749+
OutContext, IsLocal)
742750
->getVariableValue(),
743751
getFunctionCodeSize(MF), MFI);
744752
return false;
@@ -927,6 +935,7 @@ static const MCExpr *computeAccumOffset(const MCExpr *NumVGPR, MCContext &Ctx) {
927935
void AMDGPUAsmPrinter::getSIProgramInfo(SIProgramInfo &ProgInfo,
928936
const MachineFunction &MF) {
929937
const GCNSubtarget &STM = MF.getSubtarget<GCNSubtarget>();
938+
bool IsLocal = MF.getFunction().hasLocalLinkage();
930939
MCContext &Ctx = MF.getContext();
931940

932941
auto CreateExpr = [&Ctx](int64_t Value) {
@@ -944,7 +953,8 @@ void AMDGPUAsmPrinter::getSIProgramInfo(SIProgramInfo &ProgInfo,
944953

945954
auto GetSymRefExpr =
946955
[&](MCResourceInfo::ResourceInfoKind RIK) -> const MCExpr * {
947-
MCSymbol *Sym = RI.getSymbol(CurrentFnSym->getName(), RIK, OutContext);
956+
MCSymbol *Sym =
957+
RI.getSymbol(CurrentFnSym->getName(), RIK, OutContext, IsLocal);
948958
return MCSymbolRefExpr::create(Sym, Ctx);
949959
};
950960

llvm/lib/Target/AMDGPU/AMDGPUMCResourceInfo.cpp

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,20 @@
1515
#include "AMDGPUMCResourceInfo.h"
1616
#include "Utils/AMDGPUBaseInfo.h"
1717
#include "llvm/ADT/StringRef.h"
18+
#include "llvm/MC/MCAsmInfo.h"
1819
#include "llvm/MC/MCContext.h"
1920
#include "llvm/MC/MCSymbol.h"
2021
#include "llvm/Target/TargetMachine.h"
2122

2223
using namespace llvm;
2324

2425
MCSymbol *MCResourceInfo::getSymbol(StringRef FuncName, ResourceInfoKind RIK,
25-
MCContext &OutContext) {
26-
auto GOCS = [FuncName, &OutContext](StringRef Suffix) {
27-
return OutContext.getOrCreateSymbol(FuncName + Twine(Suffix));
26+
MCContext &OutContext, bool IsLocal) {
27+
auto GOCS = [FuncName, &OutContext, IsLocal](StringRef Suffix) {
28+
StringRef Prefix =
29+
IsLocal ? OutContext.getAsmInfo()->getPrivateGlobalPrefix() : "";
30+
return OutContext.getOrCreateSymbol(Twine(Prefix) + FuncName +
31+
Twine(Suffix));
2832
};
2933
switch (RIK) {
3034
case RIK_NumVGPR:
@@ -51,8 +55,8 @@ MCSymbol *MCResourceInfo::getSymbol(StringRef FuncName, ResourceInfoKind RIK,
5155

5256
const MCExpr *MCResourceInfo::getSymRefExpr(StringRef FuncName,
5357
ResourceInfoKind RIK,
54-
MCContext &Ctx) {
55-
return MCSymbolRefExpr::create(getSymbol(FuncName, RIK, Ctx), Ctx);
58+
MCContext &Ctx, bool IsLocal) {
59+
return MCSymbolRefExpr::create(getSymbol(FuncName, RIK, Ctx, IsLocal), Ctx);
5660
}
5761

5862
void MCResourceInfo::assignMaxRegs(MCContext &OutContext) {
@@ -96,11 +100,12 @@ void MCResourceInfo::assignResourceInfoExpr(
96100
const MachineFunction &MF, const SmallVectorImpl<const Function *> &Callees,
97101
MCContext &OutContext) {
98102
const TargetMachine &TM = MF.getTarget();
103+
bool IsLocal = MF.getFunction().hasLocalLinkage();
99104
MCSymbol *FnSym = TM.getSymbol(&MF.getFunction());
100105
const MCConstantExpr *LocalConstExpr =
101106
MCConstantExpr::create(LocalValue, OutContext);
102107
const MCExpr *SymVal = LocalConstExpr;
103-
MCSymbol *Sym = getSymbol(FnSym->getName(), RIK, OutContext);
108+
MCSymbol *Sym = getSymbol(FnSym->getName(), RIK, OutContext, IsLocal);
104109
if (!Callees.empty()) {
105110
SmallVector<const MCExpr *, 8> ArgExprs;
106111
SmallPtrSet<const Function *, 8> Seen;
@@ -110,9 +115,10 @@ void MCResourceInfo::assignResourceInfoExpr(
110115
if (!Seen.insert(Callee).second)
111116
continue;
112117

118+
bool IsCalleeLocal = Callee->hasLocalLinkage();
113119
MCSymbol *CalleeFnSym = TM.getSymbol(&Callee->getFunction());
114120
MCSymbol *CalleeValSym =
115-
getSymbol(CalleeFnSym->getName(), RIK, OutContext);
121+
getSymbol(CalleeFnSym->getName(), RIK, OutContext, IsCalleeLocal);
116122

117123
// Avoid constructing recursive definitions by detecting whether `Sym` is
118124
// found transitively within any of its `CalleeValSym`.
@@ -155,6 +161,7 @@ void MCResourceInfo::gatherResourceInfo(
155161
MCSymbol *MaxVGPRSym = getMaxVGPRSymbol(OutContext);
156162
MCSymbol *MaxAGPRSym = getMaxAGPRSymbol(OutContext);
157163
MCSymbol *MaxSGPRSym = getMaxSGPRSymbol(OutContext);
164+
bool IsLocal = MF.getFunction().hasLocalLinkage();
158165

159166
if (!AMDGPU::isEntryFunctionCC(MF.getFunction().getCallingConv())) {
160167
addMaxVGPRCandidate(FRI.NumVGPR);
@@ -172,7 +179,8 @@ void MCResourceInfo::gatherResourceInfo(
172179
FRI.Callees, OutContext);
173180
} else {
174181
const MCExpr *SymRef = MCSymbolRefExpr::create(MaxSym, OutContext);
175-
MCSymbol *LocalNumSym = getSymbol(FnSym->getName(), RIK, OutContext);
182+
MCSymbol *LocalNumSym =
183+
getSymbol(FnSym->getName(), RIK, OutContext, IsLocal);
176184
const MCExpr *MaxWithLocal = AMDGPUMCExpr::createMax(
177185
{MCConstantExpr::create(numRegs, OutContext), SymRef}, OutContext);
178186
LocalNumSym->setVariableValue(MaxWithLocal);
@@ -187,7 +195,8 @@ void MCResourceInfo::gatherResourceInfo(
187195
// The expression for private segment size should be: FRI.PrivateSegmentSize
188196
// + max(FRI.Callees, FRI.CalleeSegmentSize)
189197
SmallVector<const MCExpr *, 8> ArgExprs;
190-
MCSymbol *Sym = getSymbol(FnSym->getName(), RIK_PrivateSegSize, OutContext);
198+
MCSymbol *Sym =
199+
getSymbol(FnSym->getName(), RIK_PrivateSegSize, OutContext, IsLocal);
191200
if (FRI.CalleeSegmentSize)
192201
ArgExprs.push_back(
193202
MCConstantExpr::create(FRI.CalleeSegmentSize, OutContext));
@@ -198,9 +207,11 @@ void MCResourceInfo::gatherResourceInfo(
198207
if (!Seen.insert(Callee).second)
199208
continue;
200209
if (!Callee->isDeclaration()) {
210+
bool IsCalleeLocal = Callee->hasLocalLinkage();
201211
MCSymbol *CalleeFnSym = TM.getSymbol(&Callee->getFunction());
202212
MCSymbol *CalleeValSym =
203-
getSymbol(CalleeFnSym->getName(), RIK_PrivateSegSize, OutContext);
213+
getSymbol(CalleeFnSym->getName(), RIK_PrivateSegSize, OutContext,
214+
IsCalleeLocal);
204215

205216
// Avoid constructing recursive definitions by detecting whether `Sym`
206217
// is found transitively within any of its `CalleeValSym`.
@@ -223,7 +234,7 @@ void MCResourceInfo::gatherResourceInfo(
223234
}
224235

225236
auto SetToLocal = [&](int64_t LocalValue, ResourceInfoKind RIK) {
226-
MCSymbol *Sym = getSymbol(FnSym->getName(), RIK, OutContext);
237+
MCSymbol *Sym = getSymbol(FnSym->getName(), RIK, OutContext, IsLocal);
227238
Sym->setVariableValue(MCConstantExpr::create(LocalValue, OutContext));
228239
};
229240

@@ -255,21 +266,23 @@ const MCExpr *MCResourceInfo::createTotalNumVGPRs(const MachineFunction &MF,
255266
MCContext &Ctx) {
256267
const TargetMachine &TM = MF.getTarget();
257268
MCSymbol *FnSym = TM.getSymbol(&MF.getFunction());
269+
bool IsLocal = MF.getFunction().hasLocalLinkage();
258270
return AMDGPUMCExpr::createTotalNumVGPR(
259-
getSymRefExpr(FnSym->getName(), RIK_NumAGPR, Ctx),
260-
getSymRefExpr(FnSym->getName(), RIK_NumVGPR, Ctx), Ctx);
271+
getSymRefExpr(FnSym->getName(), RIK_NumAGPR, Ctx, IsLocal),
272+
getSymRefExpr(FnSym->getName(), RIK_NumVGPR, Ctx, IsLocal), Ctx);
261273
}
262274

263275
const MCExpr *MCResourceInfo::createTotalNumSGPRs(const MachineFunction &MF,
264276
bool hasXnack,
265277
MCContext &Ctx) {
266278
const TargetMachine &TM = MF.getTarget();
267279
MCSymbol *FnSym = TM.getSymbol(&MF.getFunction());
280+
bool IsLocal = MF.getFunction().hasLocalLinkage();
268281
return MCBinaryExpr::createAdd(
269-
getSymRefExpr(FnSym->getName(), RIK_NumSGPR, Ctx),
282+
getSymRefExpr(FnSym->getName(), RIK_NumSGPR, Ctx, IsLocal),
270283
AMDGPUMCExpr::createExtraSGPRs(
271-
getSymRefExpr(FnSym->getName(), RIK_UsesVCC, Ctx),
272-
getSymRefExpr(FnSym->getName(), RIK_UsesFlatScratch, Ctx), hasXnack,
273-
Ctx),
284+
getSymRefExpr(FnSym->getName(), RIK_UsesVCC, Ctx, IsLocal),
285+
getSymRefExpr(FnSym->getName(), RIK_UsesFlatScratch, Ctx, IsLocal),
286+
hasXnack, Ctx),
274287
Ctx);
275288
}

llvm/lib/Target/AMDGPU/AMDGPUMCResourceInfo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ class MCResourceInfo {
7171
}
7272

7373
MCSymbol *getSymbol(StringRef FuncName, ResourceInfoKind RIK,
74-
MCContext &OutContext);
74+
MCContext &OutContext, bool IsLocal);
7575
const MCExpr *getSymRefExpr(StringRef FuncName, ResourceInfoKind RIK,
76-
MCContext &Ctx);
76+
MCContext &Ctx, bool IsLocal);
7777

7878
void reset();
7979

llvm/test/CodeGen/AMDGPU/call-alias-register-usage-agpr.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
; ALL-NEXT: .amdhsa_next_free_sgpr (max(kernel.numbered_sgpr+(extrasgprs(kernel.uses_vcc, kernel.uses_flat_scratch, 1)), 1, 0))-(extrasgprs(kernel.uses_vcc, kernel.uses_flat_scratch, 1))
1313
; GFX90A-NEXT: .amdhsa_accum_offset ((((((alignto(max(1, kernel.num_vgpr), 4))/4)-1)&(~65536))&63)+1)*4
1414

15-
; ALL: .set kernel.num_vgpr, max(41, aliasee_default.num_vgpr)
16-
; ALL-NEXT: .set kernel.num_agpr, max(0, aliasee_default.num_agpr)
17-
; ALL-NEXT: .set kernel.numbered_sgpr, max(33, aliasee_default.numbered_sgpr)
15+
; ALL: .set kernel.num_vgpr, max(41, .Laliasee_default.num_vgpr)
16+
; ALL-NEXT: .set kernel.num_agpr, max(0, .Laliasee_default.num_agpr)
17+
; ALL-NEXT: .set kernel.numbered_sgpr, max(33, .Laliasee_default.numbered_sgpr)
1818
define amdgpu_kernel void @kernel() #0 {
1919
bb:
2020
call void @alias() #2
@@ -26,9 +26,9 @@ bb:
2626
call void asm sideeffect "; clobber a26 ", "~{a26}"()
2727
ret void
2828
}
29-
; ALL: .set aliasee_default.num_vgpr, 0
30-
; ALL-NEXT: .set aliasee_default.num_agpr, 27
31-
; ALL-NEXT: .set aliasee_default.numbered_sgpr, 32
29+
; ALL: .set .Laliasee_default.num_vgpr, 0
30+
; ALL-NEXT: .set .Laliasee_default.num_agpr, 27
31+
; ALL-NEXT: .set .Laliasee_default.numbered_sgpr, 32
3232

3333
attributes #0 = { noinline norecurse nounwind optnone }
3434
attributes #1 = { noinline norecurse nounwind readnone willreturn }

llvm/test/CodeGen/AMDGPU/call-alias-register-usage0.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,18 @@
77
@alias0 = hidden alias void (), ptr @aliasee_default_vgpr64_sgpr102
88

99
; CHECK-LABEL: {{^}}kernel0:
10-
; CHECK: .set kernel0.num_vgpr, max(41, aliasee_default_vgpr64_sgpr102.num_vgpr)
11-
; CHECK-NEXT: .set kernel0.num_agpr, max(0, aliasee_default_vgpr64_sgpr102.num_agpr)
12-
; CHECK-NEXT: .set kernel0.numbered_sgpr, max(33, aliasee_default_vgpr64_sgpr102.numbered_sgpr)
10+
; CHECK: .set kernel0.num_vgpr, max(41, .Laliasee_default_vgpr64_sgpr102.num_vgpr)
11+
; CHECK-NEXT: .set kernel0.num_agpr, max(0, .Laliasee_default_vgpr64_sgpr102.num_agpr)
12+
; CHECK-NEXT: .set kernel0.numbered_sgpr, max(33, .Laliasee_default_vgpr64_sgpr102.numbered_sgpr)
1313
define amdgpu_kernel void @kernel0() #0 {
1414
bb:
1515
call void @alias0() #2
1616
ret void
1717
}
1818

19-
; CHECK: .set aliasee_default_vgpr64_sgpr102.num_vgpr, 53
20-
; CHECK-NEXT: .set aliasee_default_vgpr64_sgpr102.num_agpr, 0
21-
; CHECK-NEXT: .set aliasee_default_vgpr64_sgpr102.numbered_sgpr, 32
19+
; CHECK: .set .Laliasee_default_vgpr64_sgpr102.num_vgpr, 53
20+
; CHECK-NEXT: .set .Laliasee_default_vgpr64_sgpr102.num_agpr, 0
21+
; CHECK-NEXT: .set .Laliasee_default_vgpr64_sgpr102.numbered_sgpr, 32
2222
define internal void @aliasee_default_vgpr64_sgpr102() #1 {
2323
bb:
2424
call void asm sideeffect "; clobber v52 ", "~{v52}"()

llvm/test/CodeGen/AMDGPU/call-alias-register-usage1.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,19 @@
1212
; CHECK: .amdhsa_next_free_vgpr max(totalnumvgprs(kernel1.num_agpr, kernel1.num_vgpr), 1, 0)
1313
; CHECK-NEXT: .amdhsa_next_free_sgpr (max(kernel1.numbered_sgpr+(extrasgprs(kernel1.uses_vcc, kernel1.uses_flat_scratch, 1)), 1, 0))-(extrasgprs(kernel1.uses_vcc, kernel1.uses_flat_scratch, 1))
1414

15-
; CHECK: .set kernel1.num_vgpr, max(42, aliasee_vgpr32_sgpr76.num_vgpr)
16-
; CHECK-NEXT: .set kernel1.num_agpr, max(0, aliasee_vgpr32_sgpr76.num_agpr)
17-
; CHECK-NEXT: .set kernel1.numbered_sgpr, max(33, aliasee_vgpr32_sgpr76.numbered_sgpr)
15+
; CHECK: .set kernel1.num_vgpr, max(42, .Laliasee_vgpr32_sgpr76.num_vgpr)
16+
; CHECK-NEXT: .set kernel1.num_agpr, max(0, .Laliasee_vgpr32_sgpr76.num_agpr)
17+
; CHECK-NEXT: .set kernel1.numbered_sgpr, max(33, .Laliasee_vgpr32_sgpr76.numbered_sgpr)
1818
define amdgpu_kernel void @kernel1() #0 {
1919
bb:
2020
call void asm sideeffect "; clobber v40 ", "~{v40}"()
2121
call void @alias1() #2
2222
ret void
2323
}
2424

25-
; CHECK: .set aliasee_vgpr32_sgpr76.num_vgpr, 27
26-
; CHECK-NEXT: .set aliasee_vgpr32_sgpr76.num_agpr, 0
27-
; CHECK-NEXT: .set aliasee_vgpr32_sgpr76.numbered_sgpr, 32
25+
; CHECK: .set .Laliasee_vgpr32_sgpr76.num_vgpr, 27
26+
; CHECK-NEXT: .set .Laliasee_vgpr32_sgpr76.num_agpr, 0
27+
; CHECK-NEXT: .set .Laliasee_vgpr32_sgpr76.numbered_sgpr, 32
2828
define internal void @aliasee_vgpr32_sgpr76() #1 {
2929
bb:
3030
call void asm sideeffect "; clobber v26 ", "~{v26}"()

llvm/test/CodeGen/AMDGPU/call-alias-register-usage2.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@
1010
; CHECK: .amdhsa_next_free_vgpr max(totalnumvgprs(kernel2.num_agpr, kernel2.num_vgpr), 1, 0)
1111
; CHECK-NEXT: .amdhsa_next_free_sgpr (max(kernel2.numbered_sgpr+(extrasgprs(kernel2.uses_vcc, kernel2.uses_flat_scratch, 1)), 1, 0))-(extrasgprs(kernel2.uses_vcc, kernel2.uses_flat_scratch, 1))
1212

13-
; CHECK: .set kernel2.num_vgpr, max(41, aliasee_vgpr64_sgpr102.num_vgpr)
14-
; CHECK-NEXT: .set kernel2.num_agpr, max(0, aliasee_vgpr64_sgpr102.num_agpr)
15-
; CHECK-NEXT: .set kernel2.numbered_sgpr, max(33, aliasee_vgpr64_sgpr102.numbered_sgpr)
13+
; CHECK: .set kernel2.num_vgpr, max(41, .Laliasee_vgpr64_sgpr102.num_vgpr)
14+
; CHECK-NEXT: .set kernel2.num_agpr, max(0, .Laliasee_vgpr64_sgpr102.num_agpr)
15+
; CHECK-NEXT: .set kernel2.numbered_sgpr, max(33, .Laliasee_vgpr64_sgpr102.numbered_sgpr)
1616
define amdgpu_kernel void @kernel2() #0 {
1717
bb:
1818
call void @alias2() #2
1919
ret void
2020
}
2121

22-
; CHECK: .set aliasee_vgpr64_sgpr102.num_vgpr, 53
23-
; CHECK-NEXT: .set aliasee_vgpr64_sgpr102.num_agpr, 0
24-
; CHECK-NEXT: .set aliasee_vgpr64_sgpr102.numbered_sgpr, 32
22+
; CHECK: .set .Laliasee_vgpr64_sgpr102.num_vgpr, 53
23+
; CHECK-NEXT: .set .Laliasee_vgpr64_sgpr102.num_agpr, 0
24+
; CHECK-NEXT: .set .Laliasee_vgpr64_sgpr102.numbered_sgpr, 32
2525
define internal void @aliasee_vgpr64_sgpr102() #1 {
2626
bb:
2727
call void asm sideeffect "; clobber v52 ", "~{v52}"()

0 commit comments

Comments
 (0)