Home | History | Annotate | Download | only in AMDGPU
      1 ; RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=GCN -check-prefix=SI-NOHSA -check-prefix=GCN-NOHSA %s
      2 ; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=VI  -check-prefix=VI-NOHSA -check-prefix=GCN -check-prefix=GCN-NOHSA %s
      3 
      4 ; GCN-LABEL: {{^}}read_workdim:
      5 ; SI-NOHSA: s_load_dword [[VAL:s[0-9]+]], s[0:1], 0xb
      6 ; VI-NOHSA: s_load_dword [[VAL:s[0-9]+]], s[0:1], 0x2c
      7 ; GCN-NOHSA: v_mov_b32_e32 [[VVAL:v[0-9]+]], [[VAL]]
      8 ; GCN-NOHSA: buffer_store_dword [[VVAL]]
      9 define void @read_workdim(i32 addrspace(1)* %out) {
     10 entry:
     11   %0 = call i32 @llvm.amdgcn.read.workdim() #0
     12   store i32 %0, i32 addrspace(1)* %out
     13   ret void
     14 }
     15 
     16 ; GCN-LABEL: {{^}}read_workdim_known_bits:
     17 ; SI: s_load_dword [[VAL:s[0-9]+]], s[0:1], 0xb
     18 ; VI: s_load_dword [[VAL:s[0-9]+]], s[0:1], 0x2c
     19 ; GCN-NOT: 0xff
     20 ; GCN: v_mov_b32_e32 [[VVAL:v[0-9]+]], [[VAL]]
     21 ; GCN: buffer_store_dword [[VVAL]]
     22 define void @read_workdim_known_bits(i32 addrspace(1)* %out) {
     23 entry:
     24   %dim = call i32 @llvm.amdgcn.read.workdim() #0
     25   %shl = shl i32 %dim, 24
     26   %shr = lshr i32 %shl, 24
     27   store i32 %shr, i32 addrspace(1)* %out
     28   ret void
     29 }
     30 
     31 ; GCN-LABEL: {{^}}legacy_read_workdim:
     32 ; SI-NOHSA: s_load_dword [[VAL:s[0-9]+]], s[0:1], 0xb
     33 ; VI-NOHSA: s_load_dword [[VAL:s[0-9]+]], s[0:1], 0x2c
     34 ; GCN-NOHSA: v_mov_b32_e32 [[VVAL:v[0-9]+]], [[VAL]]
     35 ; GCN-NOHSA: buffer_store_dword [[VVAL]]
     36 define void @legacy_read_workdim(i32 addrspace(1)* %out) {
     37 entry:
     38   %dim = call i32 @llvm.AMDGPU.read.workdim() #0
     39   store i32 %dim, i32 addrspace(1)* %out
     40   ret void
     41 }
     42 
     43 declare i32 @llvm.amdgcn.read.workdim() #0
     44 declare i32 @llvm.AMDGPU.read.workdim() #0
     45 
     46 attributes #0 = { nounwind readnone }
     47