1; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -O1 < %s | FileCheck -check-prefix=OPT %s
2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck -check-prefix=LLC %s
3
4; OPT: declare void @foo4() local_unnamed_addr #0
5; OPT: define void @foo3() local_unnamed_addr #1
6; OPT: define void @foo2() local_unnamed_addr #1
7; OPT: define void @foo1() local_unnamed_addr #1
8; OPT: define amdgpu_kernel void @kernel1() local_unnamed_addr #2
9; OPT: define amdgpu_kernel void @kernel2() local_unnamed_addr #2
10; OPT: attributes #0 = { {{.*}} "target-features"="+wavefrontsize64" }
11; OPT: attributes #1 = { {{.*}} "target-features"="{{.*}},-wavefrontsize16,+wavefrontsize32,-wavefrontsize64
12; OPT: attributes #2 = { {{.*}} "target-features"="+wavefrontsize32
13; OPT: attributes #3 = { nounwind }
14
15; LLC: foo3:
16; LLC: sample asm
17; LLC: foo2:
18; LLC: sample asm
19; LLC: foo1:
20; LLC: foo4@gotpcrel32@lo+4
21; LLC: foo4@gotpcrel32@hi+12
22; LLC: foo3@gotpcrel32@lo+4
23; LLC: foo3@gotpcrel32@hi+12
24; LLC: foo2@gotpcrel32@lo+4
25; LLC: foo2@gotpcrel32@hi+12
26; LLC: foo1@gotpcrel32@lo+4
27; LLC: foo1@gotpcrel32@hi+12
28; LLC: kernel1:
29; LLC: foo1@gotpcrel32@lo+4
30; LLC: foo1@gotpcrel32@hi+12
31; LLC: kernel2:
32; LLC: foo2@gotpcrel32@lo+4
33; LLC: foo2@gotpcrel32@hi+12
34
35declare void @foo4() #1
36
37define void @foo3() #1 {
38entry:
39  call void asm sideeffect "; sample asm", ""()
40  ret void
41}
42
43define void @foo2() #1 {
44entry:
45  call void asm sideeffect "; sample asm", ""()
46  ret void
47}
48
49define void @foo1() #1 {
50entry:
51  tail call void @foo4()
52  tail call void @foo3()
53  tail call void @foo2()
54  tail call void @foo2()
55  tail call void @foo1()
56  ret void
57}
58
59define amdgpu_kernel void @kernel1() #0 {
60entry:
61  tail call void @foo1()
62  ret void
63}
64
65define amdgpu_kernel void @kernel2() #0 {
66entry:
67  tail call void @foo2()
68  ret void
69}
70
71attributes #0 = { nounwind "target-features"="+wavefrontsize32" }
72attributes #1 = { noinline nounwind "target-features"="+wavefrontsize64" }
73