Skip to content

Commit eb66bf0

Browse files
committed
[AMDGPU] Print SCRATCH_EN field after the kernel
Differential Revision: https://reviews.llvm.org/D93353
1 parent f66cf13 commit eb66bf0

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,9 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
538538
OutStreamer->emitRawComment(
539539
" WaveLimiterHint : " + Twine(MFI->needsWaveLimiter()), false);
540540

541+
OutStreamer->emitRawComment(
542+
" COMPUTE_PGM_RSRC2:SCRATCH_EN: " +
543+
Twine(G_00B84C_SCRATCH_EN(CurrentProgramInfo.ComputePGMRSrc2)), false);
541544
OutStreamer->emitRawComment(
542545
" COMPUTE_PGM_RSRC2:USER_SGPR: " +
543546
Twine(G_00B84C_USER_SGPR(CurrentProgramInfo.ComputePGMRSrc2)), false);

llvm/test/CodeGen/AMDGPU/GlobalISel/flat-scratch-init.ll

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@
33
; Make sure flat_scratch_init is set
44

55
; GCN-LABEL: {{^}}stack_object_addrspacecast_in_kernel_no_calls:
6-
; GCN: .amdhsa_user_sgpr_flat_scratch_init 1
6+
; GCN: s_add_u32 flat_scratch_lo, s4, s7
7+
; GCN: s_addc_u32 flat_scratch_hi, s5, 0
8+
; GCN: flat_store_dword
9+
; GCN: .amdhsa_user_sgpr_flat_scratch_init 1
10+
; GCN: .amdhsa_system_sgpr_private_segment_wavefront_offset
11+
; GCN-NOT: .amdhsa_reserve_flat_scratch
12+
; GCN: COMPUTE_PGM_RSRC2:SCRATCH_EN: 1
13+
; GCN: COMPUTE_PGM_RSRC2:USER_SGPR: 6
714
define amdgpu_kernel void @stack_object_addrspacecast_in_kernel_no_calls() {
815
%alloca = alloca i32, addrspace(5)
916
%cast = addrspacecast i32 addrspace(5)* %alloca to i32*
@@ -13,15 +20,29 @@ define amdgpu_kernel void @stack_object_addrspacecast_in_kernel_no_calls() {
1320

1421
; TODO: Could optimize out in this case
1522
; GCN-LABEL: {{^}}stack_object_in_kernel_no_calls:
16-
; GCN: .amdhsa_user_sgpr_flat_scratch_init 1
23+
; GCN: s_add_u32 flat_scratch_lo, s4, s7
24+
; GCN: s_addc_u32 flat_scratch_hi, s5, 0
25+
; GCN: buffer_store_dword
26+
; GCN: .amdhsa_user_sgpr_private_segment_buffer 1
27+
; GCN: .amdhsa_user_sgpr_flat_scratch_init 1
28+
; GCN: .amdhsa_system_sgpr_private_segment_wavefront_offset 1
29+
; GCN-NOT: .amdhsa_reserve_flat_scratch
30+
; GCN: COMPUTE_PGM_RSRC2:SCRATCH_EN: 1
31+
; GCN: COMPUTE_PGM_RSRC2:USER_SGPR: 6
1732
define amdgpu_kernel void @stack_object_in_kernel_no_calls() {
1833
%alloca = alloca i32, addrspace(5)
1934
store volatile i32 0, i32 addrspace(5)* %alloca
2035
ret void
2136
}
2237

2338
; GCN-LABEL: {{^}}kernel_no_calls_no_stack:
24-
; GCN: .amdhsa_user_sgpr_flat_scratch_init 0
39+
; GCN-NOT: flat_scratch
40+
; GCN: .amdhsa_user_sgpr_private_segment_buffer 1
41+
; GCN: .amdhsa_user_sgpr_flat_scratch_init 0
42+
; GCN: .amdhsa_system_sgpr_private_segment_wavefront_offset 0
43+
; GCN: .amdhsa_reserve_flat_scratch 0
44+
; GCN: COMPUTE_PGM_RSRC2:SCRATCH_EN: 0
45+
; GCN: COMPUTE_PGM_RSRC2:USER_SGPR: 4
2546
define amdgpu_kernel void @kernel_no_calls_no_stack() {
2647
ret void
2748
}

0 commit comments

Comments
 (0)