xref: /llvm-project/llvm/test/CodeGen/AMDGPU/kernel_code_t_recurse.ll (revision a699ccbf0c2d4bc5c912e096a8834cf4e04ce98b)
1*a699ccbfSJanek van Oirschot; RUN: llc -mtriple=amdgcn-mesa-mesa3d < %s | FileCheck %s
2*a699ccbfSJanek van Oirschot
3*a699ccbfSJanek van Oirschot; CHECK-LABEL: non_kernel_recursion:
4*a699ccbfSJanek van Oirschotdefine void @non_kernel_recursion(i32 %val) #2 {
5*a699ccbfSJanek van Oirschot  %cmp = icmp eq i32 %val, 0
6*a699ccbfSJanek van Oirschot  br i1 %cmp, label %ret, label %call
7*a699ccbfSJanek van Oirschot
8*a699ccbfSJanek van Oirschotcall:
9*a699ccbfSJanek van Oirschot  %val.sub1 = sub i32 %val, 1
10*a699ccbfSJanek van Oirschot  call void @non_kernel_recursion(i32 %val.sub1)
11*a699ccbfSJanek van Oirschot  br label %ret
12*a699ccbfSJanek van Oirschot
13*a699ccbfSJanek van Oirschotret:
14*a699ccbfSJanek van Oirschot  ret void
15*a699ccbfSJanek van Oirschot}
16*a699ccbfSJanek van Oirschot
17*a699ccbfSJanek van Oirschot; CHECK-LABEL: kernel_caller_recursion:
18*a699ccbfSJanek van Oirschot; CHECK: .amd_kernel_code_t
19*a699ccbfSJanek van Oirschot; CHECK: is_dynamic_callstack = 1
20*a699ccbfSJanek van Oirschot; CHECK: .end_amd_kernel_code_t
21*a699ccbfSJanek van Oirschotdefine amdgpu_kernel void @kernel_caller_recursion(i32 %n) #0 {
22*a699ccbfSJanek van Oirschot  call void @non_kernel_recursion(i32 %n)
23*a699ccbfSJanek van Oirschot  ret void
24*a699ccbfSJanek van Oirschot}
25