CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
578 lines
24 KiB
LLVM
578 lines
24 KiB
LLVM
; Test the generation of the attribute amdgpu-no-flat-scratch-init
|
|
; 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
|
|
|
|
;; 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' }
|