xref: /llvm-project/llvm/test/CodeGen/NVPTX/alias.ll (revision b279f6b098d3849f7f1c1f539b108307d5f8ae2d)
1; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_30 -mattr=+ptx64 | FileCheck %s
2; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 -mcpu=sm_30 -mattr=+ptx64 | %ptxas-verify %}
3
4define i32 @a() { ret i32 0 }
5@b = internal alias i32 (), ptr @a
6@c = internal alias i32 (), ptr @a
7@d = internal alias i32 (), ptr @c
8
9define void @foo(i32 %0, ptr %1) { ret void }
10@bar = alias i32 (), ptr @foo
11
12define void @noreturn() #0 {
13  ret void
14}
15@noreturn_alias = alias i32 (), ptr @noreturn
16
17define i32 @z() {
18  %val = call i32 @b()
19  ret i32 %val
20}
21
22
23attributes #0 = { noreturn }
24
25;      CHECK: .visible .func  (.param .b32 func_retval0) b
26; CHECK-NEXT: ()
27; CHECK-NEXT: ;
28
29;      CHECK: .visible .func  (.param .b32 func_retval0) c
30; CHECK-NEXT: ()
31; CHECK-NEXT: ;
32
33;      CHECK: .visible .func  (.param .b32 func_retval0) d
34; CHECK-NEXT: ()
35; CHECK-NEXT: ;
36
37;      CHECK: .visible .func bar
38; CHECK-NEXT: (
39; CHECK-NEXT:         .param .b32 foo_param_0,
40; CHECK-NEXT:         .param .b64 foo_param_1
41; CHECK-NEXT: )
42; CHECK-NEXT: ;
43
44;      CHECK: .visible .func noreturn_alias
45; CHECK-NEXT: ()
46; CHECK-NEXT: .noreturn;
47
48; CHECK: .visible .func  (.param .b32 func_retval0) a()
49
50;      CHECK: .visible .func foo(
51; CHECK-NEXT:         .param .b32 foo_param_0,
52; CHECK-NEXT:         .param .b64 foo_param_1
53; CHECK-NEXT: )
54
55;      CHECK: .visible .func noreturn()
56; CHECK-NEXT: .noreturn
57
58;      CHECK: .visible .func  (.param .b32 func_retval0) z()
59;      CHECK:      call.uni (retval0),
60; CHECK-NEXT:      b,
61
62
63; CHECK: .alias b, a;
64; CHECK: .alias c, a;
65; CHECK: .alias d, a;
66; CHECK: .alias bar, foo;
67; CHECK: .alias noreturn_alias, noreturn;
68