[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / attributor-flatscratchinit-globalisel.ll
blob682a57571d11e8dc478aeddb16e637c077f6dee8
1 ; Test the generation of the attribute amdgpu-no-flat-scratch-init
2 ; RUN: opt -S -O2 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 %s | llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -global-isel -stop-after=irtranslator | FileCheck -check-prefixes=GFX10 %s
4 ;; tests of addrspacecast
6 define void @without_global_to_flat_addrspacecast(ptr addrspace(1) %ptr) {
7   store volatile i32 0, ptr addrspace(1) %ptr
8   ret void
11 define amdgpu_kernel void @without_global_to_flat_addrspacecast_cc_kernel(ptr addrspace(1) %ptr) {
12   store volatile i32 0, ptr addrspace(1) %ptr
13   ret void
16 define void @with_global_to_flat_addrspacecast(ptr addrspace(1) %ptr) {
17   %stof = addrspacecast ptr addrspace(1) %ptr to ptr
18   store volatile i32 0, ptr %stof
19   ret void
22 define amdgpu_kernel void @with_global_to_flat_addrspacecast_cc_kernel(ptr addrspace(1) %ptr) {
23   %stof = addrspacecast ptr addrspace(1) %ptr to ptr
24   store volatile i32 0, ptr %stof
25   ret void
28 define void @without_region_to_flat_addrspacecast(ptr addrspace(2) %ptr) {
29   store volatile i32 0, ptr addrspace(2) %ptr
30   ret void
33 define amdgpu_kernel void @without_region_to_flat_addrspacecast_cc_kernel(ptr addrspace(2) %ptr) {
34   store volatile i32 0, ptr addrspace(2) %ptr
35   ret void
38 define void @with_region_to_flat_addrspacecast(ptr addrspace(2) %ptr) {
39   %stof = addrspacecast ptr addrspace(2) %ptr to ptr
40   store volatile i32 0, ptr %stof
41   ret void
44 define amdgpu_kernel void @with_region_to_flat_addrspacecast_cc_kernel(ptr addrspace(2) %ptr) {
45   %stof = addrspacecast ptr addrspace(2) %ptr to ptr
46   store volatile i32 0, ptr %stof
47   ret void
50 define void @without_group_to_flat_addrspacecast(ptr addrspace(3) %ptr) {
51   store volatile i32 0, ptr addrspace(3) %ptr
52   ret void
55 define amdgpu_kernel void @without_group_to_flat_addrspacecast_cc_kernel(ptr addrspace(3) %ptr) {
56   store volatile i32 0, ptr addrspace(3) %ptr
57   ret void
60 define void @with_group_to_flat_addrspacecast(ptr addrspace(3) %ptr) {
61   %stof = addrspacecast ptr addrspace(3) %ptr to ptr
62   store volatile i32 0, ptr %stof
63   ret void
66 define amdgpu_kernel void @with_group_to_flat_addrspacecast_cc_kernel(ptr addrspace(3) %ptr) {
67   %stof = addrspacecast ptr addrspace(3) %ptr to ptr
68   store volatile i32 0, ptr %stof
69   ret void
72 define void @without_constant_to_flat_addrspacecast(ptr addrspace(4) %ptr) {
73   store volatile i32 0, ptr addrspace(4) %ptr
74   ret void
77 define amdgpu_kernel void @without_constant_to_flat_addrspacecast_cc_kernel(ptr addrspace(4) %ptr) {
78   store volatile i32 0, ptr addrspace(4) %ptr
79   ret void
82 define void @with_constant_to_flat_addrspacecast(ptr addrspace(4) %ptr) {
83   %stof = addrspacecast ptr addrspace(4) %ptr to ptr
84   store volatile i32 0, ptr %stof
85   ret void
88 define amdgpu_kernel void @with_constant_to_flat_addrspacecast_cc_kernel(ptr addrspace(4) %ptr) {
89   %stof = addrspacecast ptr addrspace(4) %ptr to ptr
90   store volatile i32 0, ptr %stof
91   ret void
94 define void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {
95   store volatile i32 0, ptr addrspace(5) %ptr
96   ret void
99 define amdgpu_kernel void @without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) {
100   store volatile i32 0, ptr addrspace(5) %ptr
101   ret void
104 define void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {
105   %stof = addrspacecast ptr addrspace(5) %ptr to ptr
106   store volatile i32 0, ptr %stof
107   ret void
110 define amdgpu_kernel void @with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) {
111   %stof = addrspacecast ptr addrspace(5) %ptr to ptr
112   store volatile i32 0, ptr %stof
113   ret void
116 define void @call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {
117   call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
118   ret void
121 define amdgpu_kernel void @call_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) {
122   call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
123   ret void
126 define void @call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {
127   call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
128   ret void
131 define amdgpu_kernel void @call_with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) {
132   call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
133   ret void
136 define void @call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {
137   call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
138   call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
139   ret void
142 define amdgpu_kernel void @call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) {
143   call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
144   call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
145   ret void
148 define void @call_call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {
149   call void @call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
150   ret void
153 define amdgpu_kernel void @call_call_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) {
154   call void @call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
155   ret void
158 define void @call_call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {
159   call void @call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
160   ret void
163 define amdgpu_kernel void @call_call_with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) {
164   call void @call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
165   ret void
168 define void @call_call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {
169   call void @call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
170   ret void
173 define amdgpu_kernel void @call_call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) {
174   call void @call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
175   ret void
178 define void @with_cast_call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {
179   %stof = addrspacecast ptr addrspace(5) %ptr to ptr
180   store volatile i32 0, ptr %stof
181   call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
182   ret void
185 define amdgpu_kernel void @with_cast_call_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) {
186   %stof = addrspacecast ptr addrspace(5) %ptr to ptr
187   store volatile i32 0, ptr %stof
188   call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
189   ret void
192 define void @with_cast_call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {
193   %stof = addrspacecast ptr addrspace(5) %ptr to ptr
194   store volatile i32 0, ptr %stof
195   call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
196   ret void
199 define amdgpu_kernel void @with_cast_call_with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) {
200   %stof = addrspacecast ptr addrspace(5) %ptr to ptr
201   store volatile i32 0, ptr %stof
202   call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)
203   ret void
206 ;; tests of indirect call, intrinsics
208 @gv.fptr0 = external hidden unnamed_addr addrspace(4) constant ptr, align 4
210 define void @with_indirect_call() {
211   %fptr = load ptr, ptr addrspace(4) @gv.fptr0
212   call void %fptr()
213   ret void
216 define amdgpu_kernel void @with_indirect_call_cc_kernel() {
217   %fptr = load ptr, ptr addrspace(4) @gv.fptr0
218   call void %fptr()
219   ret void
222 define void @call_with_indirect_call() {
223   call void @with_indirect_call()
224   ret void
227 define amdgpu_kernel void @call_with_indirect_call_cc_kernel() {
228   call void @with_indirect_call()
229   ret void
232 declare i32 @llvm.amdgcn.workgroup.id.x()
234 define void @use_intrinsic_workitem_id_x() {
235   %val = call i32 @llvm.amdgcn.workitem.id.x()
236   store volatile i32 %val, ptr addrspace(1) null
237   ret void
240 define amdgpu_kernel void @use_intrinsic_workitem_id_x_cc_kernel() {
241   %val = call i32 @llvm.amdgcn.workitem.id.x()
242   store volatile i32 %val, ptr addrspace(1) null
243   ret void
246 define void @call_use_intrinsic_workitem_id_x() {
247   call void @use_intrinsic_workitem_id_x()
248   ret void
251 define amdgpu_kernel void @call_use_intrinsic_workitem_id_x_cc_kernel() {
252   call void @use_intrinsic_workitem_id_x()
253   ret void
256 ; GFX10: name:            without_global_to_flat_addrspacecast
257 ; GFX10:       argumentInfo:
258 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
259 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
260 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
261 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
262 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
264 ; GFX10: name:            without_global_to_flat_addrspacecast_cc_kernel
265 ; GFX10:       argumentInfo:
266 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
267 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
268 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
270 ; GFX10: name:            with_global_to_flat_addrspacecast
271 ; GFX10:       argumentInfo:
272 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
273 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
274 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
275 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
276 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
278 ; GFX10: name:            with_global_to_flat_addrspacecast_cc_kernel
279 ; GFX10:       argumentInfo:
280 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
281 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
282 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
283 ; GFX10-NEXT:    privateSegmentWaveByteOffset: { reg: '$sgpr7' }
285 ; GFX10: name:            without_region_to_flat_addrspacecast
286 ; GFX10:       argumentInfo:
287 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
288 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
289 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
290 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
291 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
293 ; GFX10: name:            without_region_to_flat_addrspacecast_cc_kernel
294 ; GFX10:       argumentInfo:
295 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
296 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
297 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
299 ; GFX10: name:            with_region_to_flat_addrspacecast
300 ; GFX10:       argumentInfo:
301 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
302 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
303 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
304 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
305 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
307 ; GFX10: name:            with_region_to_flat_addrspacecast_cc_kernel
308 ; GFX10:       argumentInfo:
309 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
310 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
311 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
313 ; GFX10: name:            without_group_to_flat_addrspacecast
314 ; GFX10:       argumentInfo:
315 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
316 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
317 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
318 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
319 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
321 ; GFX10: name:            without_group_to_flat_addrspacecast_cc_kernel
322 ; GFX10:       argumentInfo:
323 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
324 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
325 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
327 ; GFX10: name:            with_group_to_flat_addrspacecast
328 ; GFX10:       argumentInfo:
329 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
330 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
331 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
332 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
333 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
335 ; GFX10: name:            with_group_to_flat_addrspacecast_cc_kernel
336 ; GFX10:       argumentInfo:
337 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
338 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
339 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
341 ; GFX10: name:            without_constant_to_flat_addrspacecast
342 ; GFX10:       argumentInfo:
343 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
344 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
345 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
346 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
347 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
349 ; GFX10: name:            without_constant_to_flat_addrspacecast_cc_kernel
350 ; GFX10:       argumentInfo:
351 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
352 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
353 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
355 ; GFX10: name:            with_constant_to_flat_addrspacecast
356 ; GFX10:       argumentInfo:
357 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
358 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
359 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
360 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
361 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
363 ; GFX10: name:            with_constant_to_flat_addrspacecast_cc_kernel
364 ; GFX10:       argumentInfo:
365 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
366 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
367 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
369 ; GFX10: name:            without_private_to_flat_addrspacecast
370 ; GFX10:       argumentInfo:
371 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
372 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
373 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
374 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
375 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
377 ; GFX10: name:            without_private_to_flat_addrspacecast_cc_kernel
378 ; GFX10:       argumentInfo:
379 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
380 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
381 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
383 ; GFX10: name:            with_private_to_flat_addrspacecast
384 ; GFX10:       argumentInfo:
385 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
386 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
387 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
388 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
389 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
391 ; GFX10: name:            with_private_to_flat_addrspacecast_cc_kernel
392 ; GFX10:       argumentInfo:
393 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
394 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
395 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
397 ; GFX10: name:            call_without_private_to_flat_addrspacecast
398 ; GFX10:       argumentInfo:
399 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
400 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
401 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
402 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
403 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
405 ; GFX10: name:            call_without_private_to_flat_addrspacecast_cc_kernel
406 ; GFX10:       argumentInfo:
407 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
408 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
409 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
411 ; GFX10: name:            call_with_private_to_flat_addrspacecast
412 ; GFX10:       argumentInfo:
413 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
414 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
415 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
416 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
417 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
419 ; GFX10: name:            call_with_private_to_flat_addrspacecast_cc_kernel
420 ; GFX10:       argumentInfo:
421 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
422 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
423 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
425 ; GFX10: name:            call_both_with_and_without_private_to_flat_addrspacecast
426 ; GFX10:       argumentInfo:
427 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
428 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
429 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
430 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
431 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
433 ; GFX10: name:            call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel
434 ; GFX10:       argumentInfo:
435 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
436 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
437 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
439 ; GFX10: name:            call_call_without_private_to_flat_addrspacecast
440 ; GFX10:       argumentInfo:
441 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
442 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
443 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
444 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
445 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
447 ; GFX10: name:            call_call_without_private_to_flat_addrspacecast_cc_kernel
448 ; GFX10:       argumentInfo:
449 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
450 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
451 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
453 ; GFX10: name:            call_call_with_private_to_flat_addrspacecast
454 ; GFX10:       argumentInfo:
455 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
456 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
457 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
458 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
459 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
461 ; GFX10: name:            call_call_with_private_to_flat_addrspacecast_cc_kernel
462 ; GFX10:       argumentInfo:
463 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
464 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
465 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
467 ; GFX10: name:            call_call_both_with_and_without_private_to_flat_addrspacecast
468 ; GFX10:       argumentInfo:
469 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
470 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
471 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
472 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
473 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
475 ; GFX10: name:            call_call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel
476 ; GFX10:       argumentInfo:
477 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
478 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
479 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
481 ; GFX10: name:            with_cast_call_without_private_to_flat_addrspacecast
482 ; GFX10:       argumentInfo:
483 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
484 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
485 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
486 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
487 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
489 ; GFX10: name:            with_cast_call_without_private_to_flat_addrspacecast_cc_kernel
490 ; GFX10:       argumentInfo:
491 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
492 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
493 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
495 ; GFX10: name:            with_cast_call_with_private_to_flat_addrspacecast
496 ; GFX10:       argumentInfo:
497 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
498 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
499 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
500 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
501 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
503 ; GFX10: name:            with_cast_call_with_private_to_flat_addrspacecast_cc_kernel
504 ; GFX10:       argumentInfo:
505 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
506 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
507 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr6' }
509 ; GFX10: name:            with_indirect_call
510 ; GFX10:       argumentInfo:
511 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
512 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
513 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
514 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
515 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
517 ; GFX10: name:            with_indirect_call_cc_kernel
518 ; GFX10:       argumentInfo:
519 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
520 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
521 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
522 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr8_sgpr9' }
523 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
524 ; GFX10-NEXT:    flatScratchInit: { reg: '$sgpr12_sgpr13' }
525 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr14' }
527 ; GFX10: name:            call_with_indirect_call
528 ; GFX10:       argumentInfo:
529 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
530 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
531 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
532 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
533 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
535 ; GFX10: name:            call_with_indirect_call_cc_kernel
536 ; GFX10:       argumentInfo:
537 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
538 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
539 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
540 ; GFX10-NEXT:    kernargSegmentPtr: { reg: '$sgpr8_sgpr9' }
541 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
542 ; GFX10-NEXT:    flatScratchInit: { reg: '$sgpr12_sgpr13' }
543 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr14' }
546 ; GFX10: name:            use_intrinsic_workitem_id_x
547 ; GFX10:       argumentInfo:
548 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
549 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
550 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
551 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
552 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
554 ; GFX10: name:            use_intrinsic_workitem_id_x_cc_kernel
555 ; GFX10:       argumentInfo:
556 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
557 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr4' }
559 ; GFX10: name:            call_use_intrinsic_workitem_id_x
560 ; GFX10:       argumentInfo:
561 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
562 ; GFX10-NEXT:    dispatchPtr:     { reg: '$sgpr4_sgpr5' }
563 ; GFX10-NEXT:    queuePtr:        { reg: '$sgpr6_sgpr7' }
564 ; GFX10-NEXT:    dispatchID:      { reg: '$sgpr10_sgpr11' }
565 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr12' }
567 ; GFX10: name:            call_use_intrinsic_workitem_id_x_cc_kernel
568 ; GFX10:       argumentInfo:
569 ; GFX10-NEXT:    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
570 ; GFX10-NEXT:    workGroupIDX:    { reg: '$sgpr4' }