blob: a3e986d367e138d8ac109ea9d1b806e84256de27 [file] [log] [blame]
Matt Arsenault9430b912016-05-18 16:10:11 +00001; RUN: not llc -march=amdgcn -verify-machineinstrs < %s 2>&1 | FileCheck %s
2; RUN: not llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s 2>&1 | FileCheck %s
3; RUN: not llc -march=r600 -mcpu=cypress < %s 2>&1 | FileCheck %s
Matt Arsenault16353872014-04-22 16:42:00 +00004
Oliver Stannard7e7d9832016-02-02 13:52:43 +00005; CHECK: in function test_call_external{{.*}}: unsupported call to function external_function
Matt Arsenault9430b912016-05-18 16:10:11 +00006; CHECK: in function test_call{{.*}}: unsupported call to function defined_function
7; CHECK: in function test_tail_call{{.*}}: unsupported call to function defined_function
Matt Arsenault16353872014-04-22 16:42:00 +00008
9
10declare i32 @external_function(i32) nounwind
11
Matt Arsenaultdeaef8e2015-04-22 17:10:44 +000012define void @test_call_external(i32 addrspace(1)* %out, i32 addrspace(1)* %in) {
13 %b_ptr = getelementptr i32, i32 addrspace(1)* %in, i32 1
14 %a = load i32, i32 addrspace(1)* %in
15 %b = load i32, i32 addrspace(1)* %b_ptr
16 %c = call i32 @external_function(i32 %b) nounwind
17 %result = add i32 %a, %c
18 store i32 %result, i32 addrspace(1)* %out
19 ret void
20}
21
Matt Arsenault16353872014-04-22 16:42:00 +000022define i32 @defined_function(i32 %x) nounwind noinline {
23 %y = add i32 %x, 8
24 ret i32 %y
25}
26
27define void @test_call(i32 addrspace(1)* %out, i32 addrspace(1)* %in) {
David Blaikie79e6c742015-02-27 19:29:02 +000028 %b_ptr = getelementptr i32, i32 addrspace(1)* %in, i32 1
David Blaikiea79ac142015-02-27 21:17:42 +000029 %a = load i32, i32 addrspace(1)* %in
30 %b = load i32, i32 addrspace(1)* %b_ptr
Matt Arsenault16353872014-04-22 16:42:00 +000031 %c = call i32 @defined_function(i32 %b) nounwind
32 %result = add i32 %a, %c
33 store i32 %result, i32 addrspace(1)* %out
34 ret void
35}
Matt Arsenault9430b912016-05-18 16:10:11 +000036
37define void @test_tail_call(i32 addrspace(1)* %out, i32 addrspace(1)* %in) {
38 %b_ptr = getelementptr i32, i32 addrspace(1)* %in, i32 1
39 %a = load i32, i32 addrspace(1)* %in
40 %b = load i32, i32 addrspace(1)* %b_ptr
41 %c = tail call i32 @defined_function(i32 %b) nounwind
42 %result = add i32 %a, %c
43 store i32 %result, i32 addrspace(1)* %out
44 ret void
45}