@@ -5,188 +5,8 @@ target datalayout = "A5"
55
66; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
77
8- define amdgpu_kernel void @test_dynamic_stackalloc_kernel_uniform ( i32 %n ) {
8+ define amdgpu_kernel void @test_dynamic_stackalloc ( ptr addrspace ( 1 ) %out , i32 %n ) {
99 %alloca = alloca i32 , i32 %n , addrspace (5 )
10- store volatile i32 123 , ptr addrspace (5 ) %alloca
11- ret void
12- }
13-
14- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
15-
16- define amdgpu_kernel void @test_dynamic_stackalloc_kernel_uniform_over_aligned (i32 %n ) {
17- %alloca = alloca i32 , i32 %n , align 128 , addrspace (5 )
18- store volatile i32 10 , ptr addrspace (5 ) %alloca
19- ret void
20- }
21-
22- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
23-
24- define amdgpu_kernel void @test_dynamic_stackalloc_kernel_uniform_under_aligned (i32 %n ) {
25- %alloca = alloca i32 , i32 %n , align 2 , addrspace (5 )
26- store volatile i32 22 , ptr addrspace (5 ) %alloca
27- ret void
28- }
29-
30- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
31-
32- define amdgpu_kernel void @test_dynamic_stackalloc_kernel_divergent () {
33- %idx = call i32 @llvm.amdgcn.workitem.id.x ()
34- %alloca = alloca float , i32 %idx , addrspace (5 )
35- store volatile i32 123 , ptr addrspace (5 ) %alloca
36- ret void
37- }
38-
39- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
40-
41- define amdgpu_kernel void @test_dynamic_stackalloc_kernel_divergent_over_aligned () {
42- %idx = call i32 @llvm.amdgcn.workitem.id.x ()
43- %alloca = alloca i32 , i32 %idx , align 128 , addrspace (5 )
44- store volatile i32 444 , ptr addrspace (5 ) %alloca
45- ret void
46- }
47-
48- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
49-
50- define amdgpu_kernel void @test_dynamic_stackalloc_kernel_divergent_under_aligned () {
51- %idx = call i32 @llvm.amdgcn.workitem.id.x ()
52- %alloca = alloca i128 , i32 %idx , align 2 , addrspace (5 )
53- store volatile i32 666 , ptr addrspace (5 ) %alloca
54- ret void
55- }
56-
57- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
58- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
59- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
60-
61- define amdgpu_kernel void @test_dynamic_stackalloc_kernel_multiple_allocas (i32 %n , i32 %m ) {
62- entry:
63- %cond = icmp eq i32 %n , 0
64- %alloca1 = alloca i32 , i32 8 , addrspace (5 )
65- %alloca2 = alloca i17 , i32 %n , addrspace (5 )
66- br i1 %cond , label %bb.0 , label %bb.1
67- bb.0 :
68- %idx = call i32 @llvm.amdgcn.workitem.id.x ()
69- %alloca3 = alloca i32 , i32 %m , align 64 , addrspace (5 )
70- %alloca4 = alloca i32 , i32 %idx , align 4 , addrspace (5 )
71- store volatile i32 3 , ptr addrspace (5 ) %alloca3
72- store volatile i32 4 , ptr addrspace (5 ) %alloca4
73- br label %bb.1
74- bb.1 :
75- store volatile i32 1 , ptr addrspace (5 ) %alloca1
76- store volatile i32 2 , ptr addrspace (5 ) %alloca2
77- ret void
78- }
79-
80- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
81- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
82-
83- define amdgpu_kernel void @test_dynamic_stackalloc_kernel_control_flow (i32 %n , i32 %m ) {
84- entry:
85- %cond = icmp eq i32 %n , 0
86- br i1 %cond , label %bb.0 , label %bb.1
87- bb.0 :
88- %alloca2 = alloca i32 , i32 %m , align 64 , addrspace (5 )
89- store volatile i32 2 , ptr addrspace (5 ) %alloca2
90- br label %bb.2
91- bb.1 :
92- %idx = call i32 @llvm.amdgcn.workitem.id.x ()
93- %alloca1 = alloca i32 , i32 %idx , align 4 , addrspace (5 )
94- store volatile i32 1 , ptr addrspace (5 ) %alloca1
95- br label %bb.2
96- bb.2 :
97- ret void
98- }
99-
100- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
101-
102- define void @test_dynamic_stackalloc_device_uniform (i32 %n ) {
103- %alloca = alloca i32 , i32 %n , addrspace (5 )
104- store volatile i32 123 , ptr addrspace (5 ) %alloca
105- ret void
106- }
107-
108- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
109-
110- define void @test_dynamic_stackalloc_device_uniform_over_aligned (i32 %n ) {
111- %alloca = alloca i32 , i32 %n , align 128 , addrspace (5 )
112- store volatile i32 10 , ptr addrspace (5 ) %alloca
113- ret void
114- }
115-
116- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
117-
118- define void @test_dynamic_stackalloc_device_uniform_under_aligned (i32 %n ) {
119- %alloca = alloca i32 , i32 %n , align 2 , addrspace (5 )
120- store volatile i32 22 , ptr addrspace (5 ) %alloca
121- ret void
122- }
123-
124- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
125-
126- define void @test_dynamic_stackalloc_device_divergent () {
127- %idx = call i32 @llvm.amdgcn.workitem.id.x ()
128- %alloca = alloca i32 , i32 %idx , addrspace (5 )
129- store volatile i32 123 , ptr addrspace (5 ) %alloca
130- ret void
131- }
132-
133- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
134-
135- define void @test_dynamic_stackalloc_device_divergent_over_aligned () {
136- %idx = call i32 @llvm.amdgcn.workitem.id.x ()
137- %alloca = alloca i32 , i32 %idx , align 128 , addrspace (5 )
138- store volatile i32 444 , ptr addrspace (5 ) %alloca
139- ret void
140- }
141-
142- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
143-
144- define void @test_dynamic_stackalloc_device_divergent_under_aligned () {
145- %idx = call i32 @llvm.amdgcn.workitem.id.x ()
146- %alloca = alloca i32 , i32 %idx , align 2 , addrspace (5 )
147- store volatile i32 666 , ptr addrspace (5 ) %alloca
148- ret void
149- }
150-
151- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
152- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
153- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
154-
155- define void @test_dynamic_stackalloc_device_multiple_allocas (i32 %n , i32 %m ) {
156- entry:
157- %cond = icmp eq i32 %n , 0
158- %alloca1 = alloca i32 , i32 8 , addrspace (5 )
159- %alloca2 = alloca i32 , i32 %n , addrspace (5 )
160- br i1 %cond , label %bb.0 , label %bb.1
161- bb.0 :
162- %idx = call i32 @llvm.amdgcn.workitem.id.x ()
163- %alloca3 = alloca i32 , i32 %m , align 64 , addrspace (5 )
164- %alloca4 = alloca i32 , i32 %idx , align 4 , addrspace (5 )
165- store volatile i32 3 , ptr addrspace (5 ) %alloca3
166- store volatile i32 4 , ptr addrspace (5 ) %alloca4
167- br label %bb.1
168- bb.1 :
169- store volatile i32 1 , ptr addrspace (5 ) %alloca1
170- store volatile i32 2 , ptr addrspace (5 ) %alloca2
171- ret void
172- }
173-
174- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
175- ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca
176-
177- define void @test_dynamic_stackalloc_device_control_flow (i32 %n , i32 %m ) {
178- entry:
179- %cond = icmp eq i32 %n , 0
180- br i1 %cond , label %bb.0 , label %bb.1
181- bb.0 :
182- %idx = call i32 @llvm.amdgcn.workitem.id.x ()
183- %alloca1 = alloca i32 , i32 %idx , align 4 , addrspace (5 )
184- store volatile i32 1 , ptr addrspace (5 ) %alloca1
185- br label %bb.2
186- bb.1 :
187- %alloca2 = alloca i32 , i32 %m , align 64 , addrspace (5 )
188- store volatile i32 2 , ptr addrspace (5 ) %alloca2
189- br label %bb.2
190- bb.2 :
10+ store volatile i32 0 , ptr addrspace (5 ) %alloca
19111 ret void
19212}
0 commit comments