182 lines · plain
1; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=gfx908 < %s | FileCheck -check-prefixes=GCN,GFX908 %s2; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GCN,GFX90A %s3 4; GCN-LABEL: {{^}}kernel_32_agprs:5; GFX908: .amdhsa_next_free_vgpr 326; GFX90A: .amdhsa_next_free_vgpr 447; GFX90A: .amdhsa_accum_offset 128; GCN: NumVgprs: 99; GCN: NumAgprs: 3210; GFX908: TotalNumVgprs: 3211; GFX90A: TotalNumVgprs: 4412; GFX908: VGPRBlocks: 713; GFX90A: VGPRBlocks: 514; GFX908: NumVGPRsForWavesPerEU: 3215; GFX90A: NumVGPRsForWavesPerEU: 4416; GFX90A: AccumOffset: 1217; GCN: Occupancy: 818; GFX90A: COMPUTE_PGM_RSRC3_GFX90A:ACCUM_OFFSET: 219define amdgpu_kernel void @kernel_32_agprs() #0 {20bb:21 call void asm sideeffect "", "~{v8}" ()22 call void asm sideeffect "", "~{a31}" ()23 ret void24}25 26; GCN-LABEL: {{^}}kernel_0_agprs:27; GCN: .amdhsa_next_free_vgpr 128; GFX90A: .amdhsa_accum_offset 429; GCN: NumVgprs: 130; GCN: NumAgprs: 031; GCN: TotalNumVgprs: 132; GCN: VGPRBlocks: 033; GCN: NumVGPRsForWavesPerEU: 134; GFX90A: AccumOffset: 435; GFX908: Occupancy: 1036; GFX90A: Occupancy: 837; GFX90A: COMPUTE_PGM_RSRC3_GFX90A:ACCUM_OFFSET: 038define amdgpu_kernel void @kernel_0_agprs() #0 {39bb:40 call void asm sideeffect "", "~{v0}" ()41 ret void42}43 44; GCN-LABEL: {{^}}kernel_40_vgprs:45; GFX908: .amdhsa_next_free_vgpr 4046; GFX90A: .amdhsa_next_free_vgpr 5647; GFX90A: .amdhsa_accum_offset 4048; GCN: NumVgprs: 4049; GCN: NumAgprs: 1650; GFX908: TotalNumVgprs: 4051; GFX90A: TotalNumVgprs: 5652; GFX908: VGPRBlocks: 953; GFX90A: VGPRBlocks: 654; GFX908: NumVGPRsForWavesPerEU: 4055; GFX90A: NumVGPRsForWavesPerEU: 5656; GFX90A: AccumOffset: 4057; GFX908: Occupancy: 658; GFX90A: Occupancy: 859; GFX90A: COMPUTE_PGM_RSRC3_GFX90A:ACCUM_OFFSET: 960define amdgpu_kernel void @kernel_40_vgprs() #0 {61bb:62 call void asm sideeffect "", "~{v39}" ()63 call void asm sideeffect "", "~{a15}" ()64 ret void65}66 67; GCN-LABEL: {{^}}func_32_agprs:68; GCN: NumVgprs: 969; GCN: NumAgprs: 3270; GFX908: TotalNumVgprs: 3271; GFX90A: TotalNumVgprs: 4472define void @func_32_agprs() #0 {73bb:74 call void asm sideeffect "", "~{v8}" ()75 call void asm sideeffect "", "~{a31}" ()76 ret void77}78 79; GCN-LABEL: {{^}}func_32_vgprs:80; GCN: NumVgprs: 3281; GCN: NumAgprs: 982; GFX908: TotalNumVgprs: 3283; GFX90A: TotalNumVgprs: 4184define void @func_32_vgprs() #0 {85bb:86 call void asm sideeffect "", "~{v31}" ()87 call void asm sideeffect "", "~{a8}" ()88 ret void89}90 91; GCN-LABEL: {{^}}func_0_agprs:92; GCN: NumVgprs: 193; GCN: NumAgprs: 094; GCN: TotalNumVgprs: 195define amdgpu_kernel void @func_0_agprs() #0 {96bb:97 call void asm sideeffect "", "~{v0}" ()98 ret void99}100 101; GCN-LABEL: {{^}}kernel_max_gprs:102; GFX908: .amdhsa_next_free_vgpr 256103; GFX90A: .amdhsa_next_free_vgpr 512104; GFX90A: .amdhsa_accum_offset 256105; GCN: NumVgprs: 256106; GCN: NumAgprs: 256107; GFX908: TotalNumVgprs: 256108; GFX90A: TotalNumVgprs: 512109; GFX908: VGPRBlocks: 63110; GFX90A: VGPRBlocks: 63111; GFX908: NumVGPRsForWavesPerEU: 256112; GFX90A: NumVGPRsForWavesPerEU: 512113; GFX90A: AccumOffset: 256114; GCN: Occupancy: 1115; GFX90A: COMPUTE_PGM_RSRC3_GFX90A:ACCUM_OFFSET: 63116define amdgpu_kernel void @kernel_max_gprs() #0 {117bb:118 call void asm sideeffect "", "~{v255}" ()119 call void asm sideeffect "", "~{a255}" ()120 ret void121}122 123; GCN-LABEL: {{^}}kernel_call_func_32_agprs:124; GFX908: .amdhsa_next_free_vgpr 32125; GFX90A: .amdhsa_accum_offset 12126; GCN: NumVgprs: 9127; GCN: NumAgprs: 32128; GFX908: TotalNumVgprs: 32129; GFX90A: TotalNumVgprs: 44130; GFX908: VGPRBlocks: 7131; GFX90A: VGPRBlocks: 5132; GFX908: NumVGPRsForWavesPerEU: 32133; GFX90A: NumVGPRsForWavesPerEU: 44134; GFX90A: AccumOffset: 12135; GCN: Occupancy: 8136; GFX90A: COMPUTE_PGM_RSRC3_GFX90A:ACCUM_OFFSET: 2137define amdgpu_kernel void @kernel_call_func_32_agprs() #0 {138bb:139 call void @func_32_agprs() #0140 ret void141}142 143; GCN-LABEL: {{^}}func_call_func_32_agprs:144; GCN: NumVgprs: 9145; GCN: NumAgprs: 32146; GFX908: TotalNumVgprs: 32147; GFX90A: TotalNumVgprs: 44148define void @func_call_func_32_agprs() #0 {149bb:150 call void @func_32_agprs() #0151 ret void152}153 154declare void @undef_func()155 156; GCN-LABEL: {{^}}kernel_call_undef_func:157; GCN: .amdhsa_next_free_vgpr max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0)158; GFX90A: .amdhsa_accum_offset (((((alignto(max(1, kernel_call_undef_func.num_vgpr), 4)/4)-1)&~65536)&63)+1)*4159; GCN: .set kernel_call_undef_func.num_vgpr, max(32, amdgpu.max_num_vgpr)160; GCN: .set kernel_call_undef_func.num_agpr, max(0, amdgpu.max_num_agpr)161; GCN: NumVgprs: kernel_call_undef_func.num_vgpr162; GCN: NumAgprs: kernel_call_undef_func.num_agpr163; GCN: TotalNumVgprs: totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr)164; GFX908: VGPRBlocks: (alignto(max(max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0), 1), 4)/4)-1165; GFX90A: VGPRBlocks: (alignto(max(max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0), 1), 8)/8)-1166; GCN: NumVGPRsForWavesPerEU: max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0)167; GFX90A: AccumOffset: ((alignto(max(1, kernel_call_undef_func.num_vgpr), 4)/4)-1+1)*4168; GFX908: Occupancy: occupancy(10, 4, 256, 8, 10, max(kernel_call_undef_func.numbered_sgpr+extrasgprs(kernel_call_undef_func.uses_vcc, kernel_call_undef_func.uses_flat_scratch, 1), 1, 0), max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0))169; GFX90A: Occupancy: occupancy(8, 8, 512, 8, 8, max(kernel_call_undef_func.numbered_sgpr+extrasgprs(kernel_call_undef_func.uses_vcc, kernel_call_undef_func.uses_flat_scratch, 1), 1, 0), max(totalnumvgprs(kernel_call_undef_func.num_agpr, kernel_call_undef_func.num_vgpr), 1, 0))170; GFX90A: COMPUTE_PGM_RSRC3_GFX90A:ACCUM_OFFSET: (((alignto(max(1, kernel_call_undef_func.num_vgpr), 4)/4)-1)&~65536)&63171define amdgpu_kernel void @kernel_call_undef_func() #0 {172bb:173 call void @undef_func()174 ret void175}176 177; GCN: .set amdgpu.max_num_vgpr, 32178; GCN-NEXT: .set amdgpu.max_num_agpr, 32179; GCN-NEXT: .set amdgpu.max_num_sgpr, 34180 181attributes #0 = { nounwind noinline "amdgpu-flat-work-group-size"="1,512" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" }182