Skip to content

Commit f7f7abc

Browse files
authored
[NFC][AMDGPU] Add a missing test case about cluster dims (#159179)
1 parent d05b7f1 commit f7f7abc

File tree

1 file changed

+182
-0
lines changed

1 file changed

+182
-0
lines changed
Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes --check-globals all --version 5
2+
; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -passes=amdgpu-attributor %s -o - | FileCheck %s
3+
4+
declare void @unknown()
5+
6+
; fixed_cluster_dims_0 is only used by fixed_cluster_dims_1 that is expected to
7+
; have fixed dims.
8+
define internal void @fixed_cluster_dims_before_0() {
9+
; CHECK-LABEL: define internal void @fixed_cluster_dims_before_0(
10+
; CHECK-SAME: ) #[[ATTR1:[0-9]+]] {
11+
; CHECK-NEXT: call void @unknown()
12+
; CHECK-NEXT: ret void
13+
;
14+
call void @unknown()
15+
ret void
16+
}
17+
18+
; fixed_cluster_dims_1 is used by two kernels with the same cluster dims.
19+
define internal void @fixed_cluster_dims_1() {
20+
; CHECK-LABEL: define internal void @fixed_cluster_dims_1(
21+
; CHECK-SAME: ) #[[ATTR1]] {
22+
; CHECK-NEXT: call void @fixed_cluster_dims_before_0()
23+
; CHECK-NEXT: call void @unknown()
24+
; CHECK-NEXT: ret void
25+
;
26+
call void @fixed_cluster_dims_before_0()
27+
call void @unknown()
28+
ret void
29+
}
30+
31+
; no_cluster_dims_0 is only used by no_cluster_dims_1 that is expected to not use
32+
; cluster.
33+
define internal void @no_cluster_dims_0() {
34+
; CHECK-LABEL: define internal void @no_cluster_dims_0(
35+
; CHECK-SAME: ) #[[ATTR2:[0-9]+]] {
36+
; CHECK-NEXT: call void @unknown()
37+
; CHECK-NEXT: ret void
38+
;
39+
call void @unknown()
40+
ret void
41+
}
42+
43+
; no_cluster_dims_1 is used by two kernels that don't use cluster.
44+
define internal void @no_cluster_dims_1() {
45+
; CHECK-LABEL: define internal void @no_cluster_dims_1(
46+
; CHECK-SAME: ) #[[ATTR2]] {
47+
; CHECK-NEXT: call void @unknown()
48+
; CHECK-NEXT: call void @no_cluster_dims_0()
49+
; CHECK-NEXT: ret void
50+
;
51+
call void @unknown()
52+
call void @no_cluster_dims_0()
53+
ret void
54+
}
55+
56+
; non_fixed_cluster_dims is used by two kernels with different cluster dims, so
57+
; it will use cluster but cluster dims is unknown.
58+
define internal void @non_fixed_cluster_dims() {
59+
; CHECK-LABEL: define internal void @non_fixed_cluster_dims(
60+
; CHECK-SAME: ) #[[ATTR3:[0-9]+]] {
61+
; CHECK-NEXT: call void @unknown()
62+
; CHECK-NEXT: ret void
63+
;
64+
call void @unknown()
65+
ret void
66+
}
67+
68+
; unknown_cluster_dims is used by a kernel that uses cluster and another one that
69+
; doesn't use cluster, so it is unknown that whether cluster is used or not.
70+
define internal void @unknown_cluster_dims() {
71+
; CHECK-LABEL: define internal void @unknown_cluster_dims(
72+
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
73+
; CHECK-NEXT: call void @unknown()
74+
; CHECK-NEXT: ret void
75+
;
76+
call void @unknown()
77+
ret void
78+
}
79+
80+
; unknown_cluster_use is used by a kernel that we don't know whether cluster will
81+
; be used or not (because it doesn't have any attribute), so it is unknown that
82+
; whether cluster is used or not.
83+
define internal void @unknown_cluster_use() {
84+
; CHECK-LABEL: define internal void @unknown_cluster_use(
85+
; CHECK-SAME: ) #[[ATTR0]] {
86+
; CHECK-NEXT: call void @unknown()
87+
; CHECK-NEXT: ret void
88+
;
89+
call void @unknown()
90+
ret void
91+
}
92+
93+
; unknown_call_site has unknown call site, so it is unknown that whether cluster
94+
; is used or not.
95+
define void @unknown_call_site() {
96+
; CHECK-LABEL: define void @unknown_call_site(
97+
; CHECK-SAME: ) #[[ATTR0]] {
98+
; CHECK-NEXT: call void @unknown()
99+
; CHECK-NEXT: ret void
100+
;
101+
call void @unknown()
102+
ret void
103+
}
104+
105+
define amdgpu_kernel void @cluster_kernel_0() #0 {
106+
; CHECK-LABEL: define amdgpu_kernel void @cluster_kernel_0(
107+
; CHECK-SAME: ) #[[ATTR1]] {
108+
; CHECK-NEXT: call void @fixed_cluster_dims_1()
109+
; CHECK-NEXT: call void @non_fixed_cluster_dims()
110+
; CHECK-NEXT: call void @unknown_cluster_dims()
111+
; CHECK-NEXT: call void @unknown_call_site()
112+
; CHECK-NEXT: ret void
113+
;
114+
call void @fixed_cluster_dims_1()
115+
call void @non_fixed_cluster_dims()
116+
call void @unknown_cluster_dims()
117+
call void @unknown_call_site()
118+
ret void
119+
}
120+
121+
define amdgpu_kernel void @cluster_kernel_0_1() #0 {
122+
; CHECK-LABEL: define amdgpu_kernel void @cluster_kernel_0_1(
123+
; CHECK-SAME: ) #[[ATTR1]] {
124+
; CHECK-NEXT: call void @fixed_cluster_dims_1()
125+
; CHECK-NEXT: ret void
126+
;
127+
call void @fixed_cluster_dims_1()
128+
ret void
129+
}
130+
131+
define amdgpu_kernel void @cluster_kernel_1() #1 {
132+
; CHECK-LABEL: define amdgpu_kernel void @cluster_kernel_1(
133+
; CHECK-SAME: ) #[[ATTR4:[0-9]+]] {
134+
; CHECK-NEXT: call void @non_fixed_cluster_dims()
135+
; CHECK-NEXT: ret void
136+
;
137+
call void @non_fixed_cluster_dims()
138+
ret void
139+
}
140+
141+
define amdgpu_kernel void @no_cluster_kernel() #2 {
142+
; CHECK-LABEL: define amdgpu_kernel void @no_cluster_kernel(
143+
; CHECK-SAME: ) #[[ATTR2]] {
144+
; CHECK-NEXT: call void @no_cluster_dims_1()
145+
; CHECK-NEXT: call void @unknown_cluster_dims()
146+
; CHECK-NEXT: ret void
147+
;
148+
call void @no_cluster_dims_1()
149+
call void @unknown_cluster_dims()
150+
ret void
151+
}
152+
153+
define amdgpu_kernel void @no_cluster_kernel_1() #2 {
154+
; CHECK-LABEL: define amdgpu_kernel void @no_cluster_kernel_1(
155+
; CHECK-SAME: ) #[[ATTR2]] {
156+
; CHECK-NEXT: call void @no_cluster_dims_1()
157+
; CHECK-NEXT: ret void
158+
;
159+
call void @no_cluster_dims_1()
160+
ret void
161+
}
162+
163+
define amdgpu_kernel void @unknown_cluster_use_kernel() {
164+
; CHECK-LABEL: define amdgpu_kernel void @unknown_cluster_use_kernel(
165+
; CHECK-SAME: ) #[[ATTR0]] {
166+
; CHECK-NEXT: call void @unknown_cluster_use()
167+
; CHECK-NEXT: ret void
168+
;
169+
call void @unknown_cluster_use()
170+
ret void
171+
}
172+
173+
attributes #0 = { "amdgpu-cluster-dims"="2,2,2" }
174+
attributes #1 = { "amdgpu-cluster-dims"="1,2,1" }
175+
attributes #2 = { "amdgpu-cluster-dims"="0,0,0" }
176+
;.
177+
; CHECK: attributes #[[ATTR0]] = { "target-cpu"="gfx1250" "uniform-work-group-size"="false" }
178+
; CHECK: attributes #[[ATTR1]] = { "amdgpu-cluster-dims"="2,2,2" "target-cpu"="gfx1250" "uniform-work-group-size"="false" }
179+
; CHECK: attributes #[[ATTR2]] = { "amdgpu-cluster-dims"="0,0,0" "target-cpu"="gfx1250" "uniform-work-group-size"="false" }
180+
; CHECK: attributes #[[ATTR3]] = { "amdgpu-cluster-dims"="1024,1024,1024" "target-cpu"="gfx1250" "uniform-work-group-size"="false" }
181+
; CHECK: attributes #[[ATTR4]] = { "amdgpu-cluster-dims"="1,2,1" "target-cpu"="gfx1250" "uniform-work-group-size"="false" }
182+
;.

0 commit comments

Comments
 (0)