xref: /llvm-project/llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit-globalisel.ll (revision 41ed16c3b3362e51b7063eaef6461ab704c1ec7a)
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
3
4;; tests of addrspacecast
5
6define void @without_global_to_flat_addrspacecast(ptr addrspace(1) %ptr) {
7  store volatile i32 0, ptr addrspace(1) %ptr
8  ret void
9}
10
11define 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
14}
15
16define 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
20}
21
22define 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
26}
27
28define void @without_region_to_flat_addrspacecast(ptr addrspace(2) %ptr) {
29  store volatile i32 0, ptr addrspace(2) %ptr
30  ret void
31}
32
33define 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
36}
37
38define 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
42}
43
44define 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
48}
49
50define void @without_group_to_flat_addrspacecast(ptr addrspace(3) %ptr) {
51  store volatile i32 0, ptr addrspace(3) %ptr
52  ret void
53}
54
55define 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
58}
59
60define 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
64}
65
66define 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
70}
71
72define void @without_constant_to_flat_addrspacecast(ptr addrspace(4) %ptr) {
73  store volatile i32 0, ptr addrspace(4) %ptr
74  ret void
75}
76
77define 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
80}
81
82define 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
86}
87
88define 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
92}
93
94define void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {
95  store volatile i32 0, ptr addrspace(5) %ptr
96  ret void
97}
98
99define 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
102}
103
104define 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
108}
109
110define 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
114}
115
116define 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
119}
120
121define 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
124}
125
126define 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
129}
130
131define 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
134}
135
136define 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
140}
141
142define 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
146}
147
148define 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
151}
152
153define 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
156}
157
158define 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
161}
162
163define 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
166}
167
168define 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
171}
172
173define 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
176}
177
178define 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
183}
184
185define 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
190}
191
192define 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
197}
198
199define 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
204}
205
206;; tests of indirect call, intrinsics
207
208@gv.fptr0 = external hidden unnamed_addr addrspace(4) constant ptr, align 4
209
210define void @with_indirect_call() {
211  %fptr = load ptr, ptr addrspace(4) @gv.fptr0
212  call void %fptr()
213  ret void
214}
215
216define amdgpu_kernel void @with_indirect_call_cc_kernel() {
217  %fptr = load ptr, ptr addrspace(4) @gv.fptr0
218  call void %fptr()
219  ret void
220}
221
222define void @call_with_indirect_call() {
223  call void @with_indirect_call()
224  ret void
225}
226
227define amdgpu_kernel void @call_with_indirect_call_cc_kernel() {
228  call void @with_indirect_call()
229  ret void
230}
231
232declare i32 @llvm.amdgcn.workgroup.id.x()
233
234define 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
238}
239
240define 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
244}
245
246define void @call_use_intrinsic_workitem_id_x() {
247  call void @use_intrinsic_workitem_id_x()
248  ret void
249}
250
251define amdgpu_kernel void @call_use_intrinsic_workitem_id_x_cc_kernel() {
252  call void @use_intrinsic_workitem_id_x()
253  ret void
254}
255
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' }
263;
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' }
269;
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' }
277;
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' }
284;
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' }
292;
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' }
298;
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' }
306;
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' }
312;
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' }
320;
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' }
326;
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' }
334;
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' }
340;
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' }
348;
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' }
354;
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' }
362;
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' }
368;
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' }
376;
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' }
382;
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' }
390;
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' }
396;
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' }
404;
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' }
410;
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' }
418;
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' }
424;
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' }
432;
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' }
438;
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' }
446;
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' }
452;
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' }
460;
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' }
466;
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' }
474;
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' }
480;
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' }
488;
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' }
494;
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' }
502;
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' }
508;
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' }
516;
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' }
526;
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' }
534;
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' }
544
545;
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' }
553;
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' }
558;
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' }
566;
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' }
571