52 lines · plain
1; RUN: llc -mtriple=amdgcn -amdgpu-atomic-optimizer-strategy=None < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s2; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global -amdgpu-atomic-optimizer-strategy=None < %s | FileCheck -check-prefixes=GCN,SICIVI,FUNC %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -amdgpu-atomic-optimizer-strategy=None < %s | FileCheck -check-prefixes=GCN,GFX9,FUNC %s4; RUN: llc -mtriple=r600 -mcpu=redwood -amdgpu-atomic-optimizer-strategy=None < %s | FileCheck -check-prefixes=R600,FUNC %s5 6; FUNC-LABEL: {{^}}atomic_add_local:7; SICIVI: s_mov_b32 m08; GFX9-NOT: m09; R600: LDS_ADD *10; GCN: ds_add_u3211define amdgpu_kernel void @atomic_add_local(ptr addrspace(3) %local) {12 %unused = atomicrmw volatile add ptr addrspace(3) %local, i32 5 seq_cst13 ret void14}15 16; FUNC-LABEL: {{^}}atomic_add_local_const_offset:17; SICIVI: s_mov_b32 m018; GFX9-NOT: m019 20; R600: LDS_ADD *21; GCN: ds_add_u32 v{{[0-9]+}}, v{{[0-9]+}} offset:1622define amdgpu_kernel void @atomic_add_local_const_offset(ptr addrspace(3) %local) {23 %gep = getelementptr i32, ptr addrspace(3) %local, i32 424 %val = atomicrmw volatile add ptr addrspace(3) %gep, i32 5 seq_cst25 ret void26}27 28; FUNC-LABEL: {{^}}atomic_add_ret_local:29; SICIVI: s_mov_b32 m030; GFX9-NOT: m031 32; R600: LDS_ADD_RET *33; GCN: ds_add_rtn_u3234define amdgpu_kernel void @atomic_add_ret_local(ptr addrspace(1) %out, ptr addrspace(3) %local) {35 %val = atomicrmw volatile add ptr addrspace(3) %local, i32 5 seq_cst36 store i32 %val, ptr addrspace(1) %out37 ret void38}39 40; FUNC-LABEL: {{^}}atomic_add_ret_local_const_offset:41; SICIVI: s_mov_b32 m042; GFX9-NOT: m043 44; R600: LDS_ADD_RET *45; GCN: ds_add_rtn_u32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} offset:2046define amdgpu_kernel void @atomic_add_ret_local_const_offset(ptr addrspace(1) %out, ptr addrspace(3) %local) {47 %gep = getelementptr i32, ptr addrspace(3) %local, i32 548 %val = atomicrmw volatile add ptr addrspace(3) %gep, i32 5 seq_cst49 store i32 %val, ptr addrspace(1) %out50 ret void51}52