87 lines · plain
1; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck %s2 3; CHECK-LABEL: {{^}}qux4; CHECK: .set qux.num_vgpr, 135; CHECK: .set qux.num_agpr, 06; CHECK: .set qux.numbered_sgpr, 327; CHECK: .set qux.private_seg_size, 08; CHECK: .set qux.uses_vcc, 09; CHECK: .set qux.uses_flat_scratch, 010; CHECK: .set qux.has_dyn_sized_stack, 011; CHECK: .set qux.has_recursion, 012; CHECK: .set qux.has_indirect_call, 013define void @qux() {14entry:15 call void asm sideeffect "", "~{v12}"()16 ret void17}18 19; CHECK-LABEL: {{^}}baz20; CHECK: .set baz.num_vgpr, max(49, qux.num_vgpr)21; CHECK: .set baz.num_agpr, max(0, qux.num_agpr)22; CHECK: .set baz.numbered_sgpr, max(34, qux.numbered_sgpr)23; CHECK: .set baz.private_seg_size, 16+max(qux.private_seg_size)24; CHECK: .set baz.uses_vcc, or(0, qux.uses_vcc)25; CHECK: .set baz.uses_flat_scratch, or(0, qux.uses_flat_scratch)26; CHECK: .set baz.has_dyn_sized_stack, or(0, qux.has_dyn_sized_stack)27; CHECK: .set baz.has_recursion, or(1, qux.has_recursion)28; CHECK: .set baz.has_indirect_call, or(0, qux.has_indirect_call)29define void @baz() {30entry:31 call void @qux()32 call void asm sideeffect "", "~{v48}"()33 ret void34}35 36; CHECK-LABEL: {{^}}bar37; CHECK: .set bar.num_vgpr, max(65, baz.num_vgpr, qux.num_vgpr)38; CHECK: .set bar.num_agpr, max(0, baz.num_agpr, qux.num_agpr)39; CHECK: .set bar.numbered_sgpr, max(34, baz.numbered_sgpr, qux.numbered_sgpr)40; CHECK: .set bar.private_seg_size, 16+max(baz.private_seg_size, qux.private_seg_size)41; CHECK: .set bar.uses_vcc, or(0, baz.uses_vcc, qux.uses_vcc)42; CHECK: .set bar.uses_flat_scratch, or(0, baz.uses_flat_scratch, qux.uses_flat_scratch)43; CHECK: .set bar.has_dyn_sized_stack, or(0, baz.has_dyn_sized_stack, qux.has_dyn_sized_stack)44; CHECK: .set bar.has_recursion, or(1, baz.has_recursion, qux.has_recursion)45; CHECK: .set bar.has_indirect_call, or(0, baz.has_indirect_call, qux.has_indirect_call)46define void @bar() {47entry:48 call void @baz()49 call void @qux()50 call void @baz()51 call void asm sideeffect "", "~{v64}"()52 ret void53}54 55; CHECK-LABEL: {{^}}foo56; CHECK: .set foo.num_vgpr, max(38, bar.num_vgpr)57; CHECK: .set foo.num_agpr, max(0, bar.num_agpr)58; CHECK: .set foo.numbered_sgpr, max(34, bar.numbered_sgpr)59; CHECK: .set foo.private_seg_size, 16+max(bar.private_seg_size)60; CHECK: .set foo.uses_vcc, or(0, bar.uses_vcc)61; CHECK: .set foo.uses_flat_scratch, or(0, bar.uses_flat_scratch)62; CHECK: .set foo.has_dyn_sized_stack, or(0, bar.has_dyn_sized_stack)63; CHECK: .set foo.has_recursion, or(1, bar.has_recursion)64; CHECK: .set foo.has_indirect_call, or(0, bar.has_indirect_call)65define void @foo() {66entry:67 call void @bar()68 call void asm sideeffect "", "~{v37}"()69 ret void70}71 72; CHECK-LABEL: {{^}}usefoo73; CHECK: .set usefoo.num_vgpr, max(32, foo.num_vgpr)74; CHECK: .set usefoo.num_agpr, max(0, foo.num_agpr)75; CHECK: .set usefoo.numbered_sgpr, max(33, foo.numbered_sgpr)76; CHECK: .set usefoo.private_seg_size, 0+max(foo.private_seg_size)77; CHECK: .set usefoo.uses_vcc, or(0, foo.uses_vcc)78; CHECK: .set usefoo.uses_flat_scratch, or(1, foo.uses_flat_scratch)79; CHECK: .set usefoo.has_dyn_sized_stack, or(0, foo.has_dyn_sized_stack)80; CHECK: .set usefoo.has_recursion, or(1, foo.has_recursion)81; CHECK: .set usefoo.has_indirect_call, or(0, foo.has_indirect_call)82define amdgpu_kernel void @usefoo() {83 call void @foo()84 ret void85}86 87