1 ; RUN: opt -mtriple=amdgcn-- --amdgpu-inline -S -amdgpu-inline-max-bb=2 %s | FileCheck %s --check-prefix=NOINL
2 ; RUN: opt -mtriple=amdgcn-- --amdgpu-inline -S -amdgpu-inline-max-bb=3 %s | FileCheck %s --check-prefix=INL
4 define i32 @callee(i32 %x) {
6 %cc = icmp eq i32 %x, 1
7 br i1 %cc, label %ret_res, label %mulx
10 %mul1 = mul i32 %x, %x
11 %mul2 = mul i32 %mul1, %x
12 %mul3 = mul i32 %mul1, %mul2
13 %mul4 = mul i32 %mul3, %mul2
14 %mul5 = mul i32 %mul4, %mul3
18 %r = phi i32 [ %mul5, %mulx ], [ %x, %entry ]
23 ; NOINL-LABEL: @caller
29 define amdgpu_kernel void @caller(i32 %x) {
30 %res = call i32 @callee(i32 %x)
31 store volatile i32 %res, i32 addrspace(1)* undef
37 define i32 @callee_hint(i32 %x) #0 {
39 %cc = icmp eq i32 %x, 1
40 br i1 %cc, label %ret_res, label %mulx
43 %mul1 = mul i32 %x, %x
44 %mul2 = mul i32 %mul1, %x
45 %mul3 = mul i32 %mul1, %mul2
46 %mul4 = mul i32 %mul3, %mul2
47 %mul5 = mul i32 %mul4, %mul3
51 %r = phi i32 [ %mul5, %mulx ], [ %x, %entry ]
55 ; INL-LABEL: @caller_hint
56 ; NOINL-LABEL: @caller_hint
62 define amdgpu_kernel void @caller_hint(i32 %x) {
63 %res = call i32 @callee_hint(i32 %x)
64 store volatile i32 %res, i32 addrspace(1)* undef
68 attributes #0 = { inlinehint }