1 ; RUN: opt -mtriple=amdgcn-- -passes='cgscc(inline)' -S -amdgpu-inline-max-bb=2 %s | FileCheck %s --check-prefix=NOINL
2 ; RUN: opt -mtriple=amdgcn-- -passes='cgscc(inline)' -S -amdgpu-inline-max-bb=3 %s | FileCheck %s --check-prefix=INL
3 ; RUN: opt -mtriple=amdgcn-- -passes=inline -S -amdgpu-inline-max-bb=2 %s | FileCheck %s --check-prefix=NOINL
4 ; RUN: opt -mtriple=amdgcn-- -passes=inline -S -amdgpu-inline-max-bb=3 %s | FileCheck %s --check-prefix=INL
6 define i32 @callee(i32 %x) {
8 %cc = icmp eq i32 %x, 1
9 br i1 %cc, label %ret_res, label %mulx
12 %mul1 = mul i32 %x, %x
13 %mul2 = mul i32 %mul1, %x
14 %mul3 = mul i32 %mul1, %mul2
15 %mul4 = mul i32 %mul3, %mul2
16 %mul5 = mul i32 %mul4, %mul3
20 %r = phi i32 [ %mul5, %mulx ], [ %x, %entry ]
25 ; NOINL-LABEL: @caller
31 define amdgpu_kernel void @caller(i32 %x) {
32 %res = call i32 @callee(i32 %x)
33 store volatile i32 %res, ptr addrspace(1) undef
39 define i32 @callee_hint(i32 %x) #0 {
41 %cc = icmp eq i32 %x, 1
42 br i1 %cc, label %ret_res, label %mulx
45 %mul1 = mul i32 %x, %x
46 %mul2 = mul i32 %mul1, %x
47 %mul3 = mul i32 %mul1, %mul2
48 %mul4 = mul i32 %mul3, %mul2
49 %mul5 = mul i32 %mul4, %mul3
53 %r = phi i32 [ %mul5, %mulx ], [ %x, %entry ]
57 ; INL-LABEL: @caller_hint
58 ; NOINL-LABEL: @caller_hint
64 define amdgpu_kernel void @caller_hint(i32 %x) {
65 %res = call i32 @callee_hint(i32 %x)
66 store volatile i32 %res, ptr addrspace(1) undef
70 attributes #0 = { inlinehint }