brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.6 KiB · fa8fdba Raw
208 lines · plain
1; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,WORKAROUND,WORKAROUND-TRUE16-SDAG %s2; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,WORKAROUND,WORKAROUND-FAKE16 %s3; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,WORKAROUND %s4; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,WORKAROUND,WORKAROUND-FAKE16 %s5 6; Does not apply to wave647; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 -mattr=+wavefrontsize64 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,NOWORKAROUND %s8; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 -mattr=+wavefrontsize64 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,NOWORKAROUND %s9; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 -mattr=+wavefrontsize64 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,NOWORKAROUND %s10; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 -mattr=+wavefrontsize64 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,NOWORKAROUND %s11 12; Does not apply to gfx110113; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1101 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,NOWORKAROUND %s14; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1101 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,NOWORKAROUND %s15 16; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1102 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,WORKAROUND %s17; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1102 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,WORKAROUND %s18 19; Does not apply to gfx110320; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1103 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,NOWORKAROUND %s21; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1103 -amdgpu-enable-vopd=0 < %s | FileCheck -check-prefixes=GCN,NOWORKAROUND %s22 23; There aren't any stack objects, but we still enable the24; private_segment_wavefront_offset to get to 16, and the workgroup ID25; is in s14.26 27; private_segment_buffer + workgroup_id_x = 5, + 11 padding28 29; GCN-LABEL: {{^}}minimal_kernel_inputs:30; WORKAROUND: v_mov_b32_e32 [[V:v[0-9]+]], s1531; NOWORKAROUND: v_mov_b32_e32 [[V:v[0-9]+]], s032; GCN-NEXT: global_store_b32 v{{\[[0-9]+:[0-9]+\]}}, [[V]], off33 34; GCN: .amdhsa_kernel minimal_kernel_inputs35; WORKAROUND: .amdhsa_user_sgpr_count 1536; NOWORKAROUND: .amdhsa_user_sgpr_count 037; GCN-NEXT: .amdhsa_user_sgpr_dispatch_ptr 038; GCN-NEXT: .amdhsa_user_sgpr_queue_ptr 039; GCN-NEXT: .amdhsa_user_sgpr_kernarg_segment_ptr 040; GCN-NEXT: .amdhsa_user_sgpr_dispatch_id 041; GCN-NEXT: .amdhsa_user_sgpr_private_segment_size 042; GCN-NEXT: .amdhsa_wavefront_size3243; GCN-NEXT: .amdhsa_uses_dynamic_stack 044; GCN-NEXT: .amdhsa_enable_private_segment 045; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_x 146; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_y 047; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_z 048; GCN-NEXT: .amdhsa_system_sgpr_workgroup_info 049; GCN-NEXT: .amdhsa_system_vgpr_workitem_id 050; WORKAROUND: ; COMPUTE_PGM_RSRC2:USER_SGPR: 1551; NOWORKAROUND: ; COMPUTE_PGM_RSRC2:USER_SGPR: 052define amdgpu_kernel void @minimal_kernel_inputs() #0 {53  %id = call i32 @llvm.amdgcn.workgroup.id.x()54  store volatile i32 %id, ptr addrspace(1) poison55  ret void56}57 58; GCN-LABEL: {{^}}minimal_kernel_inputs_with_stack:59; WORKAROUND: v_mov_b32_e32 [[V:v[0-9]+]], s1560; NOWORKAROUND: v_mov_b32_e32 [[V:v[0-9]+]], s061; GCN: global_store_b32 v{{\[[0-9]+:[0-9]+\]}}, [[V]], off62 63; GCN: .amdhsa_kernel minimal_kernel_inputs64; WORKAROUND: .amdhsa_user_sgpr_count 1565; NOWORKAROUND: .amdhsa_user_sgpr_count 066; GCN-NEXT: .amdhsa_user_sgpr_dispatch_ptr 067; GCN-NEXT: .amdhsa_user_sgpr_queue_ptr 068; GCN-NEXT: .amdhsa_user_sgpr_kernarg_segment_ptr 069; GCN-NEXT: .amdhsa_user_sgpr_dispatch_id 070; GCN-NEXT: .amdhsa_user_sgpr_private_segment_size 071; GCN-NEXT: .amdhsa_wavefront_size3272; GCN-NEXT: .amdhsa_uses_dynamic_stack 073; GCN-NEXT: .amdhsa_enable_private_segment 174; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_x 175; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_y 076; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_z 077; GCN-NEXT: .amdhsa_system_sgpr_workgroup_info 078; GCN-NEXT: .amdhsa_system_vgpr_workitem_id 079; WORKAROUND: ; COMPUTE_PGM_RSRC2:USER_SGPR: 1580; NOWORKAROUND: ; COMPUTE_PGM_RSRC2:USER_SGPR: 081define amdgpu_kernel void @minimal_kernel_inputs_with_stack() #0 {82  %alloca = alloca i32, addrspace(5)83  %id = call i32 @llvm.amdgcn.workgroup.id.x()84  store volatile i32 %id, ptr addrspace(1) poison85  store volatile i32 0, ptr addrspace(5) %alloca86  ret void87}88 89; GCN-LABEL: {{^}}queue_ptr:90; WORKAROUND-TRUE16-SDAG: global_load_d16_u891; WORKAROUND-FAKE16: global_load_u8 v{{[0-9]+}},92 93; WORKAROUND: v_mov_b32_e32 [[V:v[0-9]+]], s1594; NOWORKAROUND: v_mov_b32_e32 [[V:v[0-9]+]], s495; GCN-NEXT: global_store_b32 v{{\[[0-9]+:[0-9]+\]}}, [[V]], off96 97; GCN: .amdhsa_kernel queue_ptr98; WORKAROUND: .amdhsa_user_sgpr_count 1599; NOWORKAROUND: .amdhsa_user_sgpr_count 4100; GCN-NEXT: .amdhsa_user_sgpr_dispatch_ptr 0101; GCN-NEXT: .amdhsa_user_sgpr_queue_ptr 1102; GCN-NEXT: .amdhsa_user_sgpr_kernarg_segment_ptr 1103; GCN-NEXT: .amdhsa_user_sgpr_dispatch_id 0104; GCN-NEXT: .amdhsa_user_sgpr_private_segment_size 0105; GCN-NEXT: .amdhsa_wavefront_size32106; GCN-NEXT: .amdhsa_uses_dynamic_stack 0107; GCN-NEXT: .amdhsa_enable_private_segment 0108; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_x 1109; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_y 0110; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_z 0111; GCN-NEXT: .amdhsa_system_sgpr_workgroup_info 0112; GCN-NEXT: .amdhsa_system_vgpr_workitem_id 0113; WORKAROUND: ; COMPUTE_PGM_RSRC2:USER_SGPR: 15114; NOWORKAROUND: ; COMPUTE_PGM_RSRC2:USER_SGPR: 4115define amdgpu_kernel void @queue_ptr() #1 {116  %queue.ptr = call noalias ptr addrspace(4) @llvm.amdgcn.queue.ptr() #0117  %load = load volatile i8, ptr addrspace(4) %queue.ptr118  %id = call i32 @llvm.amdgcn.workgroup.id.x()119  store volatile i32 %id, ptr addrspace(1) poison120  ret void121}122 123; GCN-LABEL: {{^}}all_inputs:124; WORKAROUND: v_mov_b32_e32 [[V_X:v[0-9]+]], s13125; WORKAROUND: v_mov_b32_e32 [[V_Y:v[0-9]+]], s14126; WORKAROUND: v_mov_b32_e32 [[V_Z:v[0-9]+]], s15127 128; NOWORKAROUND: v_mov_b32_e32 [[V_X:v[0-9]+]], s8129; NOWORKAROUND: v_mov_b32_e32 [[V_Y:v[0-9]+]], s9130; NOWORKAROUND: v_mov_b32_e32 [[V_Z:v[0-9]+]], s10131 132; WORKAROUND-TRUE16-SDAG: global_load_d16_u8 v{{[0-9]+}}, v{{[0-9]+}}, s[0:1]133; WORKAROUND-TRUE16-SDAG: global_load_d16_u8 v{{[0-9]+}},134; WORKAROUND-TRUE16-SDAG: global_load_d16_u8 v{{[0-9]+}}, v{{[0-9]+}}, s[4:5]135 136; WORKAROUND-FAKE16: global_load_u8 v{{[0-9]+}}, v{{[0-9]+}}, s[0:1]137; WORKAROUND-FAKE16: global_load_u8 v{{[0-9]+}},138; WORKAROUND-FAKE16: global_load_u8 v{{[0-9]+}}, v{{[0-9]+}}, s[4:5]139 140; GCN-DAG: v_mov_b32_e32 v[[DISPATCH_LO:[0-9]+]], s6141; GCN-DAG: v_mov_b32_e32 v[[DISPATCH_HI:[0-9]+]], s7142 143; GCN: global_store_b32 v{{\[[0-9]+:[0-9]+\]}}, [[V_X]], off144; GCN: global_store_b32 v{{\[[0-9]+:[0-9]+\]}}, [[V_Y]], off145; GCN: global_store_b32 v{{\[[0-9]+:[0-9]+\]}}, [[V_Z]], off146; GCN: global_store_b64 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[DISPATCH_LO]]:[[DISPATCH_HI]]{{\]}}, off147 148; GCN: .amdhsa_kernel all_inputs149; WORKAROUND: .amdhsa_user_sgpr_count 13150; NOWORKAROUND: .amdhsa_user_sgpr_count 8151; GCN-NEXT: .amdhsa_user_sgpr_dispatch_ptr 1152; GCN-NEXT: .amdhsa_user_sgpr_queue_ptr 1153; GCN-NEXT: .amdhsa_user_sgpr_kernarg_segment_ptr 1154; GCN-NEXT: .amdhsa_user_sgpr_dispatch_id 1155; GCN-NEXT: .amdhsa_user_sgpr_private_segment_size 0156; GCN-NEXT: .amdhsa_wavefront_size32157; GCN-NEXT: .amdhsa_uses_dynamic_stack 0158; GCN-NEXT: .amdhsa_enable_private_segment 1159; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_x 1160; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_y 1161; GCN-NEXT: .amdhsa_system_sgpr_workgroup_id_z 1162; GCN-NEXT: .amdhsa_system_sgpr_workgroup_info 0163; GCN-NEXT: .amdhsa_system_vgpr_workitem_id 0164; WORKAROUND: ; COMPUTE_PGM_RSRC2:USER_SGPR: 13165; NOWORKAROUND: ; COMPUTE_PGM_RSRC2:USER_SGPR: 8166define amdgpu_kernel void @all_inputs() #2 {167  %alloca = alloca i32, addrspace(5)168  store volatile i32 0, ptr addrspace(5) %alloca169 170  %dispatch.ptr = call noalias ptr addrspace(4) @llvm.amdgcn.dispatch.ptr()171  %load.dispatch = load volatile i8, ptr addrspace(4) %dispatch.ptr172 173  %queue.ptr = call noalias ptr addrspace(4) @llvm.amdgcn.queue.ptr()174  %load.queue = load volatile i8, ptr addrspace(4) %queue.ptr175 176  %implicitarg.ptr = call noalias ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()177  %load.implicitarg = load volatile i8, ptr addrspace(4) %implicitarg.ptr178 179  %id.x = call i32 @llvm.amdgcn.workgroup.id.x()180  store volatile i32 %id.x, ptr addrspace(1) poison181 182  %id.y = call i32 @llvm.amdgcn.workgroup.id.y()183  store volatile i32 %id.y, ptr addrspace(1) poison184 185  %id.z = call i32 @llvm.amdgcn.workgroup.id.z()186  store volatile i32 %id.z, ptr addrspace(1) poison187 188  %dispatch.id = call i64 @llvm.amdgcn.dispatch.id()189  store volatile i64 %dispatch.id, ptr addrspace(1) poison190 191  ret void192}193 194declare i32 @llvm.amdgcn.workgroup.id.x() #3195declare i32 @llvm.amdgcn.workgroup.id.y() #3196declare i32 @llvm.amdgcn.workgroup.id.z() #3197declare align 4 ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() #3198declare align 4 ptr addrspace(4) @llvm.amdgcn.dispatch.ptr() #3199declare align 4 ptr addrspace(4) @llvm.amdgcn.queue.ptr() #3200declare align 4 ptr addrspace(4) @llvm.amdgcn.kernarg.segment.ptr() #3201declare i64 @llvm.amdgcn.dispatch.id() #3202 203attributes #0 = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-cluster-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-cluster-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-cluster-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" }204attributes #1 = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-cluster-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-cluster-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-cluster-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" }205attributes #2 = { "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-cluster-id-x" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" }206attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }207 208