1; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=gfx90a -verify-machineinstrs < %s | FileCheck -check-prefixes=CHECK,GFX90A %s 2; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=gfx908 -verify-machineinstrs < %s | FileCheck -check-prefixes=CHECK,GFX908 %s 3; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=gfx801 -verify-machineinstrs < %s | FileCheck -check-prefixes=CHECK,GFX801 %s 4 5; COM: Adapted from agpr-register-count.ll 6; COM: GFX900 and below should not have .agpr_count present in the metadata 7 8; CHECK: --- 9; CHECK: amdhsa.kernels: 10 11; GFX90A: - .agpr_count: 32 12; GFX908: - .agpr_count: 32 13; GFX801-NOT: - .agpr_count: 14; CHECK: .name: kernel_32_agprs 15; GFX90A: .vgpr_count: 44 16; GFX908: .vgpr_count: 32 17; GFX801: .vgpr_count: 9 18define amdgpu_kernel void @kernel_32_agprs() #0 { 19bb: 20 call void asm sideeffect "", "~{v8}" () 21 call void asm sideeffect "", "~{a31}" () 22 ret void 23} 24 25; GFX90A: - .agpr_count: 0 26; GFX908: - .agpr_count: 0 27; GFX801-NOT: - .agpr_count: 28; CHECK: .name: kernel_0_agprs 29; GFX90A: .vgpr_count: 1 30; GFX908: .vgpr_count: 1 31; GFX801: .vgpr_count: 1 32define amdgpu_kernel void @kernel_0_agprs() #0 { 33bb: 34 call void asm sideeffect "", "~{v0}" () 35 ret void 36} 37 38; GFX90A: - .agpr_count: 16 39; GFX908: - .agpr_count: 16 40; GFX801-NOT: - .agpr_count: 41; CHECK: .name: kernel_40_vgprs 42; GFX90A: .vgpr_count: 56 43; GFX908: .vgpr_count: 40 44; GFX801: .vgpr_count: 40 45define amdgpu_kernel void @kernel_40_vgprs() #0 { 46bb: 47 call void asm sideeffect "", "~{v39}" () 48 call void asm sideeffect "", "~{a15}" () 49 ret void 50} 51 52; GFX90A: - .agpr_count: 256 53; GFX908: - .agpr_count: 256 54; GFX801-NOT: - .agpr_count: 55; CHECK: .name: kernel_max_gprs 56; GFX90A: .vgpr_count: 512 57; GFX908: .vgpr_count: 256 58; GFX801: .vgpr_count: 256 59define amdgpu_kernel void @kernel_max_gprs() #0 { 60bb: 61 call void asm sideeffect "", "~{v255}" () 62 call void asm sideeffect "", "~{a255}" () 63 ret void 64} 65 66define void @func_32_agprs() #0 { 67bb: 68 call void asm sideeffect "", "~{v8}" () 69 call void asm sideeffect "", "~{a31}" () 70 ret void 71} 72 73; GFX90A: - .agpr_count: 32 74; GFX908: - .agpr_count: 32 75; GFX801-NOT: - .agpr_count: 76; CHECK: .name: kernel_call_func_32_agprs 77; GFX90A: .vgpr_count: 44 78; GFX908: .vgpr_count: 32 79; GFX801: .vgpr_count: 9 80define amdgpu_kernel void @kernel_call_func_32_agprs() #0 { 81bb: 82 call void @func_32_agprs() #0 83 ret void 84} 85 86declare void @undef_func() 87 88; GFX90A: - .agpr_count: 32 89; GFX908: - .agpr_count: 32 90; GFX801-NOT: - .agpr_count: 91; CHECK: .name: kernel_call_undef_func 92; GFX90A: .vgpr_count: 64 93; GFX908: .vgpr_count: 32 94; GFX801: .vgpr_count: 32 95define amdgpu_kernel void @kernel_call_undef_func() #0 { 96bb: 97 call void @undef_func() 98 ret void 99} 100 101attributes #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" } 102