Home | History | Annotate | Download | only in AMDGPU
      1 ; RUN: llc -march=amdgcn -mtriple=amdgcn-unknown-amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefix=ALL -check-prefix=CO-V2 -check-prefix=CI-HSA  %s
      2 ; RUN: llc -march=amdgcn -mtriple=amdgcn-unknown-amdhsa -mcpu=carrizo -verify-machineinstrs < %s | FileCheck -check-prefix=ALL -check-prefix=CO-V2 -check-prefix=VI-HSA  %s
      3 ; RUN: llc -march=amdgcn -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefix=ALL -check-prefix=UNKNOWN-OS -check-prefix=SI-MESA %s
      4 ; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=ALL -check-prefix=UNKNOWN-OS -check-prefix=VI-MESA %s
      5 ; RUN: llc -mtriple=amdgcn-unknown-mesa3d -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefixes=ALL,CO-V2,SI-MESA %s
      6 ; RUN: llc -mtriple=amdgcn-unknown-mesa3d -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefixes=ALL,CO-V2,VI-MESA %s
      7 
      8 declare i32 @llvm.amdgcn.workgroup.id.x() #0
      9 declare i32 @llvm.amdgcn.workgroup.id.y() #0
     10 declare i32 @llvm.amdgcn.workgroup.id.z() #0
     11 
     12 ; ALL-LABEL {{^}}test_workgroup_id_x:
     13 
     14 ; CO-V2: .amd_kernel_code_t
     15 ; CO-V2: user_sgpr_count = 6
     16 ; CO-V2: enable_sgpr_workgroup_id_x = 1
     17 ; CO-V2: enable_sgpr_workgroup_id_y = 0
     18 ; CO-V2: enable_sgpr_workgroup_id_z = 0
     19 ; CO-V2: enable_sgpr_workgroup_info = 0
     20 ; CO-V2: enable_vgpr_workitem_id = 0
     21 ; CO-V2: enable_sgpr_grid_workgroup_count_x = 0
     22 ; CO-V2: enable_sgpr_grid_workgroup_count_y = 0
     23 ; CO-V2: enable_sgpr_grid_workgroup_count_z = 0
     24 ; CO-V2: .end_amd_kernel_code_t
     25 
     26 ; UNKNOWN-OS: v_mov_b32_e32 [[VCOPY:v[0-9]+]], s2{{$}}
     27 ; CO-V2: v_mov_b32_e32 [[VCOPY:v[0-9]+]], s6{{$}}
     28 
     29 ; ALL: {{buffer|flat}}_store_dword {{.*}}[[VCOPY]]
     30 
     31 ; CO-V2: COMPUTE_PGM_RSRC2:USER_SGPR: 6
     32 ; ALL-NOCO-V2: COMPUTE_PGM_RSRC2:USER_SGPR: 2
     33 ; ALL: COMPUTE_PGM_RSRC2:TGID_X_EN: 1
     34 ; ALL: COMPUTE_PGM_RSRC2:TGID_Y_EN: 0
     35 ; ALL: COMPUTE_PGM_RSRC2:TGID_Z_EN: 0
     36 ; ALL: COMPUTE_PGM_RSRC2:TIDIG_COMP_CNT: 0
     37 define amdgpu_kernel void @test_workgroup_id_x(i32 addrspace(1)* %out) #1 {
     38   %id = call i32 @llvm.amdgcn.workgroup.id.x()
     39   store i32 %id, i32 addrspace(1)* %out
     40   ret void
     41 }
     42 
     43 ; ALL-LABEL {{^}}test_workgroup_id_y:
     44 ; CO-V2: user_sgpr_count = 6
     45 ; CO-V2: enable_sgpr_workgroup_id_x = 1
     46 ; CO-V2: enable_sgpr_workgroup_id_y = 1
     47 ; CO-V2: enable_sgpr_workgroup_id_z = 0
     48 ; CO-V2: enable_sgpr_workgroup_info = 0
     49 ; CO-V2: enable_sgpr_grid_workgroup_count_x = 0
     50 ; CO-V2: enable_sgpr_grid_workgroup_count_y = 0
     51 ; CO-V2: enable_sgpr_grid_workgroup_count_z = 0
     52 
     53 ; UNKNOWN-OS: v_mov_b32_e32 [[VCOPY:v[0-9]+]], s3{{$}}
     54 ; HSA: v_mov_b32_e32 [[VCOPY:v[0-9]+]], s7{{$}}
     55 
     56 ; ALL: {{buffer|flat}}_store_dword {{.*}}[[VCOPY]]
     57 
     58 ; CO-V2: COMPUTE_PGM_RSRC2:USER_SGPR: 6
     59 ; ALL-NOCO-V2: COMPUTE_PGM_RSRC2:USER_SGPR: 2
     60 ; ALL: COMPUTE_PGM_RSRC2:TGID_X_EN: 1
     61 ; ALL: COMPUTE_PGM_RSRC2:TGID_Y_EN: 1
     62 ; ALL: COMPUTE_PGM_RSRC2:TGID_Z_EN: 0
     63 ; ALL: COMPUTE_PGM_RSRC2:TIDIG_COMP_CNT: 0
     64 define amdgpu_kernel void @test_workgroup_id_y(i32 addrspace(1)* %out) #1 {
     65   %id = call i32 @llvm.amdgcn.workgroup.id.y()
     66   store i32 %id, i32 addrspace(1)* %out
     67   ret void
     68 }
     69 
     70 ; ALL-LABEL {{^}}test_workgroup_id_z:
     71 ; CO-V2: user_sgpr_count = 6
     72 ; CO-V2: enable_sgpr_workgroup_id_x = 1
     73 ; CO-V2: enable_sgpr_workgroup_id_y = 0
     74 ; CO-V2: enable_sgpr_workgroup_id_z = 1
     75 ; CO-V2: enable_sgpr_workgroup_info = 0
     76 ; CO-V2: enable_vgpr_workitem_id = 0
     77 ; CO-V2: enable_sgpr_private_segment_buffer = 1
     78 ; CO-V2: enable_sgpr_dispatch_ptr = 0
     79 ; CO-V2: enable_sgpr_queue_ptr = 0
     80 ; CO-V2: enable_sgpr_kernarg_segment_ptr = 1
     81 ; CO-V2: enable_sgpr_dispatch_id = 0
     82 ; CO-V2: enable_sgpr_flat_scratch_init = 0
     83 ; CO-V2: enable_sgpr_private_segment_size = 0
     84 ; CO-V2: enable_sgpr_grid_workgroup_count_x = 0
     85 ; CO-V2: enable_sgpr_grid_workgroup_count_y = 0
     86 ; CO-V2: enable_sgpr_grid_workgroup_count_z = 0
     87 
     88 ; UNKNOWN-OS: v_mov_b32_e32 [[VCOPY:v[0-9]+]], s3{{$}}
     89 ; HSA: v_mov_b32_e32 [[VCOPY:v[0-9]+]], s7{{$}}
     90 
     91 ; ALL: {{buffer|flat}}_store_dword {{.*}}[[VCOPY]]
     92 
     93 ; CO-V2: COMPUTE_PGM_RSRC2:USER_SGPR: 6
     94 ; ALL-NOCO-V2: COMPUTE_PGM_RSRC2:USER_SGPR: 2
     95 ; ALL: COMPUTE_PGM_RSRC2:TGID_X_EN: 1
     96 ; ALL: COMPUTE_PGM_RSRC2:TGID_Y_EN: 0
     97 ; ALL: COMPUTE_PGM_RSRC2:TGID_Z_EN: 1
     98 ; ALL: COMPUTE_PGM_RSRC2:TIDIG_COMP_CNT: 0
     99 define amdgpu_kernel void @test_workgroup_id_z(i32 addrspace(1)* %out) #1 {
    100   %id = call i32 @llvm.amdgcn.workgroup.id.z()
    101   store i32 %id, i32 addrspace(1)* %out
    102   ret void
    103 }
    104 
    105 attributes #0 = { nounwind readnone }
    106 attributes #1 = { nounwind }
    107