Skip to content
Merged
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
6 changes: 3 additions & 3 deletions llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -534,9 +534,9 @@ bool AMDGPUAsmPrinter::doFinalization(Module &M) {
MCSectionELF *MaxGPRSection =
OutContext.getELFSection(".AMDGPU.gpr_maximums", ELF::SHT_PROGBITS, 0);
OutStreamer->switchSection(MaxGPRSection);
getTargetStreamer()->EmitMCResourceMaximums(RI.getMaxVGPRSymbol(OutContext),
RI.getMaxAGPRSymbol(OutContext),
RI.getMaxSGPRSymbol(OutContext));
getTargetStreamer()->EmitMCResourceMaximums(
RI.getMaxVGPRSymbol(OutContext), RI.getMaxAGPRSymbol(OutContext),
RI.getMaxSGPRSymbol(OutContext), RI.getMaxNamedBarrierSymbol(OutContext));
OutStreamer->popSection();

for (Function &F : M.functions())
Expand Down
7 changes: 4 additions & 3 deletions llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -302,9 +302,9 @@ void AMDGPUTargetAsmStreamer::EmitMCResourceInfo(
#undef PRINT_RES_INFO
}

void AMDGPUTargetAsmStreamer::EmitMCResourceMaximums(const MCSymbol *MaxVGPR,
const MCSymbol *MaxAGPR,
const MCSymbol *MaxSGPR) {
void AMDGPUTargetAsmStreamer::EmitMCResourceMaximums(
const MCSymbol *MaxVGPR, const MCSymbol *MaxAGPR, const MCSymbol *MaxSGPR,
const MCSymbol *MaxNamedBarrier) {
#define PRINT_RES_INFO(ARG) \
OS << "\t.set "; \
ARG->print(OS, getContext().getAsmInfo()); \
Expand All @@ -315,6 +315,7 @@ void AMDGPUTargetAsmStreamer::EmitMCResourceMaximums(const MCSymbol *MaxVGPR,
PRINT_RES_INFO(MaxVGPR);
PRINT_RES_INFO(MaxAGPR);
PRINT_RES_INFO(MaxSGPR);
PRINT_RES_INFO(MaxNamedBarrier);
#undef PRINT_RES_INFO
}

Expand Down
6 changes: 4 additions & 2 deletions llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ class AMDGPUTargetStreamer : public MCTargetStreamer {

virtual void EmitMCResourceMaximums(const MCSymbol *MaxVGPR,
const MCSymbol *MaxAGPR,
const MCSymbol *MaxSGPR) {};
const MCSymbol *MaxSGPR,
const MCSymbol *MaxNamedBarrier) {};

/// \returns True on success, false on failure.
virtual bool EmitISAVersion() { return true; }
Expand Down Expand Up @@ -149,7 +150,8 @@ class AMDGPUTargetAsmStreamer final : public AMDGPUTargetStreamer {
const MCSymbol *HasRecursion, const MCSymbol *HasIndirectCall) override;

void EmitMCResourceMaximums(const MCSymbol *MaxVGPR, const MCSymbol *MaxAGPR,
const MCSymbol *MaxSGPR) override;
const MCSymbol *MaxSGPR,
const MCSymbol *MaxNamedBarrier) override;

/// \returns True on success, false on failure.
bool EmitISAVersion() override;
Expand Down
11 changes: 11 additions & 0 deletions llvm/test/CodeGen/AMDGPU/function-resource-usage.ll
Original file line number Diff line number Diff line change
Expand Up @@ -674,10 +674,21 @@ entry:
ret void
}

; Test that amdgcn.device.init correctly references amdgpu.max_num_named_barrier
; GCN-LABEL: {{^}}amdgcn.device.init:
; GCN: .set amdgcn.device.init.num_named_barrier, max(0, amdgpu.max_num_named_barrier)

@llvm.global_ctors = appending addrspace(1) global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 1, ptr @ctor_func, ptr null }]

define internal void @ctor_func() {
ret void
}

; Added at the of the .s are the module level maximums
; GCN: .set amdgpu.max_num_vgpr, 50
; GCN: .set amdgpu.max_num_agpr, 0
; GCN: .set amdgpu.max_num_sgpr, 80
; GCN: .set amdgpu.max_num_named_barrier, 0

attributes #0 = { nounwind noinline norecurse }
attributes #1 = { nounwind noinline norecurse }
Expand Down