104 lines · plain
1; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn-amd-amdhsa -mcpu=kaveri < %s | FileCheck -check-prefixes=GCN,CI %s2; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9 %s3 4; GCN-LABEL: {{^}}atomic_store_monotonic_i8:5; GCN: s_waitcnt6; GFX9-NOT: s_mov_b32 m07; CI-NEXT: s_mov_b32 m08; GCN-NEXT: ds_write_b8 v0, v1{{$}}9; GCN-NEXT: s_waitcnt lgkmcnt(0)10; GCN-NEXT: s_setpc_b6411define void @atomic_store_monotonic_i8(ptr addrspace(3) %ptr, i8 %val) {12 store atomic i8 %val, ptr addrspace(3) %ptr monotonic, align 113 ret void14}15 16; GCN-LABEL: {{^}}atomic_store_monotonic_offset_i8:17; GCN: s_waitcnt18; GFX9-NOT: s_mov_b32 m019; CI-NEXT: s_mov_b32 m020; GCN-NEXT: ds_write_b8 v0, v1 offset:16{{$}}21; GCN-NEXT: s_waitcnt lgkmcnt(0)22; GCN-NEXT: s_setpc_b6423define void @atomic_store_monotonic_offset_i8(ptr addrspace(3) %ptr, i8 %val) {24 %gep = getelementptr inbounds i8, ptr addrspace(3) %ptr, i8 1625 store atomic i8 %val, ptr addrspace(3) %gep monotonic, align 126 ret void27}28 29; GCN-LABEL: {{^}}atomic_store_monotonic_i16:30; GCN: s_waitcnt31; GFX9-NOT: s_mov_b32 m032; CI-NEXT: s_mov_b32 m033; GCN-NEXT: ds_write_b16 v0, v1{{$}}34; GCN-NEXT: s_waitcnt lgkmcnt(0)35; GCN-NEXT: s_setpc_b6436define void @atomic_store_monotonic_i16(ptr addrspace(3) %ptr, i16 %val) {37 store atomic i16 %val, ptr addrspace(3) %ptr monotonic, align 238 ret void39}40 41; GCN-LABEL: {{^}}atomic_store_monotonic_offset_i16:42; GCN: s_waitcnt43; GFX9-NOT: s_mov_b32 m044; CI-NEXT: s_mov_b32 m045; GCN-NEXT: ds_write_b16 v0, v1 offset:32{{$}}46; GCN-NEXT: s_waitcnt lgkmcnt(0)47; GCN-NEXT: s_setpc_b6448define void @atomic_store_monotonic_offset_i16(ptr addrspace(3) %ptr, i16 %val) {49 %gep = getelementptr inbounds i16, ptr addrspace(3) %ptr, i16 1650 store atomic i16 %val, ptr addrspace(3) %gep monotonic, align 251 ret void52}53 54; GCN-LABEL: {{^}}atomic_store_monotonic_i32:55; GCN: s_waitcnt56; GFX9-NOT: s_mov_b32 m057; CI-NEXT: s_mov_b32 m058; GCN-NEXT: ds_write_b32 v0, v1{{$}}59; GCN-NEXT: s_waitcnt lgkmcnt(0)60; GCN-NEXT: s_setpc_b6461define void @atomic_store_monotonic_i32(ptr addrspace(3) %ptr, i32 %val) {62 store atomic i32 %val, ptr addrspace(3) %ptr monotonic, align 463 ret void64}65 66; GCN-LABEL: {{^}}atomic_store_monotonic_offset_i32:67; GCN: s_waitcnt68; GFX9-NOT: s_mov_b32 m069; CI-NEXT: s_mov_b32 m070; GCN-NEXT: ds_write_b32 v0, v1 offset:64{{$}}71; GCN-NEXT: s_waitcnt lgkmcnt(0)72; GCN-NEXT: s_setpc_b6473define void @atomic_store_monotonic_offset_i32(ptr addrspace(3) %ptr, i32 %val) {74 %gep = getelementptr inbounds i32, ptr addrspace(3) %ptr, i32 1675 store atomic i32 %val, ptr addrspace(3) %gep monotonic, align 476 ret void77}78 79; GCN-LABEL: {{^}}atomic_store_monotonic_i64:80; GCN: s_waitcnt81; GFX9-NOT: s_mov_b32 m082; CI-NEXT: s_mov_b32 m083; GCN-NEXT: ds_write_b64 v0, v[1:2]{{$}}84; GCN-NEXT: s_waitcnt lgkmcnt(0)85; GCN-NEXT: s_setpc_b6486define void @atomic_store_monotonic_i64(ptr addrspace(3) %ptr, i64 %val) {87 store atomic i64 %val, ptr addrspace(3) %ptr monotonic, align 888 ret void89}90 91; GCN-LABEL: {{^}}atomic_store_monotonic_offset_i64:92; GCN: s_waitcnt93; GFX9-NOT: s_mov_b32 m094; CI-NEXT: s_mov_b32 m095; GCN-NEXT: ds_write_b64 v0, v[1:2] offset:128{{$}}96; GCN-NEXT: s_waitcnt lgkmcnt(0)97; GCN-NEXT: s_setpc_b6498define void @atomic_store_monotonic_offset_i64(ptr addrspace(3) %ptr, i64 %val) {99 %gep = getelementptr inbounds i64, ptr addrspace(3) %ptr, i64 16100 store atomic i64 %val, ptr addrspace(3) %gep monotonic, align 8101 ret void102}103 104