xref: /llvm-project/llvm/test/CodeGen/AMDGPU/annotate-existing-abi-attributes.ll (revision 7dbd6cd2946ec3a9b4ad2dfd7ead177baac15bd7)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-globals
2; RUN: opt -mtriple=amdgcn-unknown-amdhsa -S -passes=amdgpu-attributor %s | FileCheck %s
3
4; Check handling for pre-existing attributes on function declarations
5
6declare void @marked_no_workitem_id_x() "amdgpu-no-workitem-id-x"
7declare void @marked_no_workitem_id_y() "amdgpu-no-workitem-id-y"
8declare void @marked_no_workitem_id_z() "amdgpu-no-workitem-id-z"
9
10declare void @marked_no_workgroup_id_x() "amdgpu-no-workgroup-id-x"
11declare void @marked_no_workgroup_id_y() "amdgpu-no-workgroup-id-y"
12declare void @marked_no_workgroup_id_z() "amdgpu-no-workgroup-id-z"
13
14declare void @marked_no_dispatch_ptr() "amdgpu-no-dispatch-ptr"
15declare void @marked_no_queue_ptr() "amdgpu-no-queue-ptr"
16declare void @marked_no_implicitarg_ptr() "amdgpu-no-implicitarg-ptr"
17declare void @marked_no_dispatch_id() "amdgpu-no-dispatch-id"
18
19
20define void @call_no_workitem_id_x() {
21; CHECK-LABEL: define {{[^@]+}}@call_no_workitem_id_x
22; CHECK-SAME: () #[[ATTR0:[0-9]+]] {
23; CHECK-NEXT:    call void @marked_no_workitem_id_x()
24; CHECK-NEXT:    ret void
25;
26  call void @marked_no_workitem_id_x()
27  ret void
28}
29
30define void @call_no_workitem_id_y() {
31; CHECK-LABEL: define {{[^@]+}}@call_no_workitem_id_y
32; CHECK-SAME: () #[[ATTR1:[0-9]+]] {
33; CHECK-NEXT:    call void @marked_no_workitem_id_y()
34; CHECK-NEXT:    ret void
35;
36  call void @marked_no_workitem_id_y()
37  ret void
38}
39
40define void @call_no_workitem_id_z() {
41; CHECK-LABEL: define {{[^@]+}}@call_no_workitem_id_z
42; CHECK-SAME: () #[[ATTR2:[0-9]+]] {
43; CHECK-NEXT:    call void @marked_no_workitem_id_z()
44; CHECK-NEXT:    ret void
45;
46  call void @marked_no_workitem_id_z()
47  ret void
48}
49
50define void @call_no_workgroup_id_x() {
51; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_x
52; CHECK-SAME: () #[[ATTR3:[0-9]+]] {
53; CHECK-NEXT:    call void @marked_no_workgroup_id_x()
54; CHECK-NEXT:    ret void
55;
56  call void @marked_no_workgroup_id_x()
57  ret void
58}
59
60define void @call_no_workgroup_id_y() {
61; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_y
62; CHECK-SAME: () #[[ATTR4:[0-9]+]] {
63; CHECK-NEXT:    call void @marked_no_workgroup_id_y()
64; CHECK-NEXT:    ret void
65;
66  call void @marked_no_workgroup_id_y()
67  ret void
68}
69
70define void @call_no_workgroup_id_z() {
71; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_z
72; CHECK-SAME: () #[[ATTR5:[0-9]+]] {
73; CHECK-NEXT:    call void @marked_no_workgroup_id_z()
74; CHECK-NEXT:    ret void
75;
76  call void @marked_no_workgroup_id_z()
77  ret void
78}
79
80define void @call_no_dispatch_ptr() {
81; CHECK-LABEL: define {{[^@]+}}@call_no_dispatch_ptr
82; CHECK-SAME: () #[[ATTR6:[0-9]+]] {
83; CHECK-NEXT:    call void @marked_no_dispatch_ptr()
84; CHECK-NEXT:    ret void
85;
86  call void @marked_no_dispatch_ptr()
87  ret void
88}
89
90define void @call_no_queue_ptr() {
91; CHECK-LABEL: define {{[^@]+}}@call_no_queue_ptr
92; CHECK-SAME: () #[[ATTR7:[0-9]+]] {
93; CHECK-NEXT:    call void @marked_no_queue_ptr()
94; CHECK-NEXT:    ret void
95;
96  call void @marked_no_queue_ptr()
97  ret void
98}
99
100define void @call_no_implicitarg_ptr() {
101; CHECK-LABEL: define {{[^@]+}}@call_no_implicitarg_ptr
102; CHECK-SAME: () #[[ATTR8:[0-9]+]] {
103; CHECK-NEXT:    call void @marked_no_implicitarg_ptr()
104; CHECK-NEXT:    ret void
105;
106  call void @marked_no_implicitarg_ptr()
107  ret void
108}
109
110define void @call_no_dispatch_id() {
111; CHECK-LABEL: define {{[^@]+}}@call_no_dispatch_id
112; CHECK-SAME: () #[[ATTR9:[0-9]+]] {
113; CHECK-NEXT:    call void @marked_no_dispatch_id()
114; CHECK-NEXT:    ret void
115;
116  call void @marked_no_dispatch_id()
117  ret void
118}
119;.
120; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
121; CHECK: attributes #[[ATTR1]] = { "amdgpu-no-workitem-id-y" "uniform-work-group-size"="false" }
122; CHECK: attributes #[[ATTR2]] = { "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
123; CHECK: attributes #[[ATTR3]] = { "amdgpu-no-workgroup-id-x" "uniform-work-group-size"="false" }
124; CHECK: attributes #[[ATTR4]] = { "amdgpu-no-workgroup-id-y" "uniform-work-group-size"="false" }
125; CHECK: attributes #[[ATTR5]] = { "amdgpu-no-workgroup-id-z" "uniform-work-group-size"="false" }
126; CHECK: attributes #[[ATTR6]] = { "amdgpu-no-dispatch-ptr" "uniform-work-group-size"="false" }
127; CHECK: attributes #[[ATTR7]] = { "amdgpu-no-queue-ptr" "uniform-work-group-size"="false" }
128; CHECK: attributes #[[ATTR8]] = { "amdgpu-no-implicitarg-ptr" "uniform-work-group-size"="false" }
129; CHECK: attributes #[[ATTR9]] = { "amdgpu-no-dispatch-id" "uniform-work-group-size"="false" }
130;.
131