| ; Test the generation of the attribute amdgpu-no-flat-scratch-init | |
| ; RUN: opt -S -O2 -mtriple=amdgpu10.10-amd-amdhsa %s | llc -global-isel -stop-after=ir-translator | FileCheck -check-prefixes=GFX10 %s | |
| ;; tests of addrspacecast | |
| define void @without_global_to_flat_addrspacecast(ptr addrspace(1) %ptr) { | |
| store volatile i32 0, ptr addrspace(1) %ptr | |
| ret void | |
| } | |
| define amdgpu_kernel void @without_global_to_flat_addrspacecast_cc_kernel(ptr addrspace(1) %ptr) { | |
| store volatile i32 0, ptr addrspace(1) %ptr | |
| ret void | |
| } | |
| define void @with_global_to_flat_addrspacecast(ptr addrspace(1) %ptr) { | |
| %stof = addrspacecast ptr addrspace(1) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| ret void | |
| } | |
| define amdgpu_kernel void @with_global_to_flat_addrspacecast_cc_kernel(ptr addrspace(1) %ptr) { | |
| %stof = addrspacecast ptr addrspace(1) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| ret void | |
| } | |
| define void @without_region_to_flat_addrspacecast(ptr addrspace(2) %ptr) { | |
| store volatile i32 0, ptr addrspace(2) %ptr | |
| ret void | |
| } | |
| define amdgpu_kernel void @without_region_to_flat_addrspacecast_cc_kernel(ptr addrspace(2) %ptr) { | |
| store volatile i32 0, ptr addrspace(2) %ptr | |
| ret void | |
| } | |
| define void @with_region_to_flat_addrspacecast(ptr addrspace(2) %ptr) { | |
| %stof = addrspacecast ptr addrspace(2) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| ret void | |
| } | |
| define amdgpu_kernel void @with_region_to_flat_addrspacecast_cc_kernel(ptr addrspace(2) %ptr) { | |
| %stof = addrspacecast ptr addrspace(2) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| ret void | |
| } | |
| define void @without_group_to_flat_addrspacecast(ptr addrspace(3) %ptr) { | |
| store volatile i32 0, ptr addrspace(3) %ptr | |
| ret void | |
| } | |
| define amdgpu_kernel void @without_group_to_flat_addrspacecast_cc_kernel(ptr addrspace(3) %ptr) { | |
| store volatile i32 0, ptr addrspace(3) %ptr | |
| ret void | |
| } | |
| define void @with_group_to_flat_addrspacecast(ptr addrspace(3) %ptr) { | |
| %stof = addrspacecast ptr addrspace(3) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| ret void | |
| } | |
| define amdgpu_kernel void @with_group_to_flat_addrspacecast_cc_kernel(ptr addrspace(3) %ptr) { | |
| %stof = addrspacecast ptr addrspace(3) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| ret void | |
| } | |
| define void @without_constant_to_flat_addrspacecast(ptr addrspace(4) %ptr) { | |
| store volatile i32 0, ptr addrspace(4) %ptr | |
| ret void | |
| } | |
| define amdgpu_kernel void @without_constant_to_flat_addrspacecast_cc_kernel(ptr addrspace(4) %ptr) { | |
| store volatile i32 0, ptr addrspace(4) %ptr | |
| ret void | |
| } | |
| define void @with_constant_to_flat_addrspacecast(ptr addrspace(4) %ptr) { | |
| %stof = addrspacecast ptr addrspace(4) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| ret void | |
| } | |
| define amdgpu_kernel void @with_constant_to_flat_addrspacecast_cc_kernel(ptr addrspace(4) %ptr) { | |
| %stof = addrspacecast ptr addrspace(4) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| ret void | |
| } | |
| define void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { | |
| store volatile i32 0, ptr addrspace(5) %ptr | |
| ret void | |
| } | |
| define amdgpu_kernel void @without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { | |
| store volatile i32 0, ptr addrspace(5) %ptr | |
| ret void | |
| } | |
| define void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { | |
| %stof = addrspacecast ptr addrspace(5) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| ret void | |
| } | |
| define amdgpu_kernel void @with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { | |
| %stof = addrspacecast ptr addrspace(5) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| ret void | |
| } | |
| define void @call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { | |
| call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define amdgpu_kernel void @call_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { | |
| call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define void @call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { | |
| call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define amdgpu_kernel void @call_with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { | |
| call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define void @call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { | |
| call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define amdgpu_kernel void @call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { | |
| call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define void @call_call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { | |
| call void @call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define amdgpu_kernel void @call_call_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { | |
| call void @call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define void @call_call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { | |
| call void @call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define amdgpu_kernel void @call_call_with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { | |
| call void @call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define void @call_call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { | |
| call void @call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define amdgpu_kernel void @call_call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { | |
| call void @call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define void @with_cast_call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { | |
| %stof = addrspacecast ptr addrspace(5) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define amdgpu_kernel void @with_cast_call_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { | |
| %stof = addrspacecast ptr addrspace(5) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define void @with_cast_call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { | |
| %stof = addrspacecast ptr addrspace(5) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| define amdgpu_kernel void @with_cast_call_with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { | |
| %stof = addrspacecast ptr addrspace(5) %ptr to ptr | |
| store volatile i32 0, ptr %stof | |
| call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) | |
| ret void | |
| } | |
| ;; tests of indirect call, intrinsics | |
| @gv.fptr0 = external hidden unnamed_addr addrspace(4) constant ptr, align 4 | |
| define void @with_indirect_call() { | |
| %fptr = load ptr, ptr addrspace(4) @gv.fptr0 | |
| call void %fptr() | |
| ret void | |
| } | |
| define amdgpu_kernel void @with_indirect_call_cc_kernel() { | |
| %fptr = load ptr, ptr addrspace(4) @gv.fptr0 | |
| call void %fptr() | |
| ret void | |
| } | |
| define void @call_with_indirect_call() { | |
| call void @with_indirect_call() | |
| ret void | |
| } | |
| define amdgpu_kernel void @call_with_indirect_call_cc_kernel() { | |
| call void @with_indirect_call() | |
| ret void | |
| } | |
| declare i32 @llvm.amdgcn.workgroup.id.x() | |
| define void @use_intrinsic_workitem_id_x() { | |
| %val = call i32 @llvm.amdgcn.workitem.id.x() | |
| store volatile i32 %val, ptr addrspace(1) null | |
| ret void | |
| } | |
| define amdgpu_kernel void @use_intrinsic_workitem_id_x_cc_kernel() { | |
| %val = call i32 @llvm.amdgcn.workitem.id.x() | |
| store volatile i32 %val, ptr addrspace(1) null | |
| ret void | |
| } | |
| define void @call_use_intrinsic_workitem_id_x() { | |
| call void @use_intrinsic_workitem_id_x() | |
| ret void | |
| } | |
| define amdgpu_kernel void @call_use_intrinsic_workitem_id_x_cc_kernel() { | |
| call void @use_intrinsic_workitem_id_x() | |
| ret void | |
| } | |
| ; GFX10: name: without_global_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: without_global_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } | |
| ; | |
| ; GFX10: name: with_global_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: with_global_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } | |
| ; GFX10-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr7' } | |
| ; | |
| ; GFX10: name: without_region_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: without_region_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } | |
| ; | |
| ; GFX10: name: with_region_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: with_region_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } | |
| ; | |
| ; GFX10: name: without_group_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: without_group_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } | |
| ; | |
| ; GFX10: name: with_group_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: with_group_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } | |
| ; | |
| ; GFX10: name: without_constant_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: without_constant_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } | |
| ; | |
| ; GFX10: name: with_constant_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: with_constant_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } | |
| ; | |
| ; GFX10: name: without_private_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: without_private_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } | |
| ; | |
| ; GFX10: name: with_private_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: with_private_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: flatScratchInit: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr8' } | |
| ; | |
| ; GFX10: name: call_without_private_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: call_without_private_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } | |
| ; | |
| ; GFX10: name: call_with_private_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: call_with_private_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: flatScratchInit: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr8' } | |
| ; | |
| ; GFX10: name: call_both_with_and_without_private_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: flatScratchInit: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr8' } | |
| ; | |
| ; GFX10: name: call_call_without_private_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: call_call_without_private_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } | |
| ; | |
| ; GFX10: name: call_call_with_private_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: call_call_with_private_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: flatScratchInit: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr8' } | |
| ; | |
| ; GFX10: name: call_call_both_with_and_without_private_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: call_call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: flatScratchInit: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr8' } | |
| ; | |
| ; GFX10: name: with_cast_call_without_private_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: with_cast_call_without_private_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: flatScratchInit: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr8' } | |
| ; | |
| ; GFX10: name: with_cast_call_with_private_to_flat_addrspacecast | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: with_cast_call_with_private_to_flat_addrspacecast_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: flatScratchInit: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr8' } | |
| ; | |
| ; GFX10: name: with_indirect_call | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: with_indirect_call_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr8_sgpr9' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: flatScratchInit: { reg: '$sgpr12_sgpr13' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr14' } | |
| ; | |
| ; GFX10: name: call_with_indirect_call | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: call_with_indirect_call_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr8_sgpr9' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: flatScratchInit: { reg: '$sgpr12_sgpr13' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr14' } | |
| ; | |
| ; GFX10: name: use_intrinsic_workitem_id_x | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: use_intrinsic_workitem_id_x_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr4' } | |
| ; | |
| ; GFX10: name: call_use_intrinsic_workitem_id_x | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } | |
| ; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } | |
| ; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } | |
| ; | |
| ; GFX10: name: call_use_intrinsic_workitem_id_x_cc_kernel | |
| ; GFX10: argumentInfo: | |
| ; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } | |
| ; GFX10-NEXT: workGroupIDX: { reg: '$sgpr4' } |