brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · c1dbf91 Raw
155 lines · plain
1; RUN: llc -global-isel -new-reg-bank-select -global-isel-abort=0 -mtriple=amdgcn-amd-amdhsa -mcpu=kaveri < %s | FileCheck -check-prefixes=GCN,CI %s2; RUN: llc -global-isel -new-reg-bank-select -global-isel-abort=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9 %s3 4; GCN-LABEL: {{^}}atomic_load_monotonic_i8:5; GCN: s_waitcnt6; GFX9-NOT: s_mov_b32 m07; CI-NEXT: s_mov_b32 m08; GCN-NEXT: ds_read_u8 v0, v0{{$}}9; GCN-NEXT: s_waitcnt lgkmcnt(0)10; GCN-NEXT: s_setpc_b6411define i8 @atomic_load_monotonic_i8(ptr addrspace(3) %ptr) {12  %load = load atomic i8, ptr addrspace(3) %ptr monotonic, align 113  ret i8 %load14}15 16; GCN-LABEL: {{^}}atomic_load_monotonic_i8_offset:17; GCN: s_waitcnt18; GFX9-NOT: s_mov_b32 m019; CI-NEXT: s_mov_b32 m020; GCN-NEXT: ds_read_u8 v0, v0 offset:16{{$}}21; GCN-NEXT: s_waitcnt lgkmcnt(0)22; GCN-NEXT: s_setpc_b6423define i8 @atomic_load_monotonic_i8_offset(ptr addrspace(3) %ptr) {24  %gep = getelementptr inbounds i8, ptr addrspace(3) %ptr, i8 1625  %load = load atomic i8, ptr addrspace(3) %gep monotonic, align 126  ret i8 %load27}28 29; GCN-LABEL: {{^}}atomic_load_monotonic_i16:30; GCN: s_waitcnt31; GFX9-NOT: s_mov_b32 m032; CI-NEXT: s_mov_b32 m033; GCN-NEXT: ds_read_u16 v0, v0{{$}}34; GCN-NEXT: s_waitcnt lgkmcnt(0)35; GCN-NEXT: s_setpc_b6436define i16 @atomic_load_monotonic_i16(ptr addrspace(3) %ptr) {37  %load = load atomic i16, ptr addrspace(3) %ptr monotonic, align 238  ret i16 %load39}40 41; GCN-LABEL: {{^}}atomic_load_monotonic_i16_offset:42; GCN: s_waitcnt43; GFX9-NOT: s_mov_b32 m044; CI-NEXT: s_mov_b32 m045; GCN-NEXT: ds_read_u16 v0, v0 offset:32{{$}}46; GCN-NEXT: s_waitcnt lgkmcnt(0)47; GCN-NEXT: s_setpc_b6448define i16 @atomic_load_monotonic_i16_offset(ptr addrspace(3) %ptr) {49  %gep = getelementptr inbounds i16, ptr addrspace(3) %ptr, i16 1650  %load = load atomic i16, ptr addrspace(3) %gep monotonic, align 251  ret i16 %load52}53 54; GCN-LABEL: {{^}}atomic_load_monotonic_i32:55; GCN: s_waitcnt56; GFX9-NOT: s_mov_b32 m057; CI-NEXT: s_mov_b32 m058; GCN-NEXT: ds_read_b32 v0, v0{{$}}59; GCN-NEXT: s_waitcnt lgkmcnt(0)60; GCN-NEXT: s_setpc_b6461define i32 @atomic_load_monotonic_i32(ptr addrspace(3) %ptr) {62  %load = load atomic i32, ptr addrspace(3) %ptr monotonic, align 463  ret i32 %load64}65 66; GCN-LABEL: {{^}}atomic_load_monotonic_i32_offset:67; GCN: s_waitcnt68; GFX9-NOT: s_mov_b32 m069; CI-NEXT: s_mov_b32 m070; GCN-NEXT: ds_read_b32 v0, v0 offset:64{{$}}71; GCN-NEXT: s_waitcnt lgkmcnt(0)72; GCN-NEXT: s_setpc_b6473define i32 @atomic_load_monotonic_i32_offset(ptr addrspace(3) %ptr) {74  %gep = getelementptr inbounds i32, ptr addrspace(3) %ptr, i32 1675  %load = load atomic i32, ptr addrspace(3) %gep monotonic, align 476  ret i32 %load77}78 79; GCN-LABEL: {{^}}atomic_load_monotonic_i64:80; GCN: s_waitcnt81; GFX9-NOT: s_mov_b32 m082; CI-NEXT: s_mov_b32 m083; GCN-NEXT: ds_read_b64 v[0:1], v0{{$}}84; GCN-NEXT: s_waitcnt lgkmcnt(0)85; GCN-NEXT: s_setpc_b6486define i64 @atomic_load_monotonic_i64(ptr addrspace(3) %ptr) {87  %load = load atomic i64, ptr addrspace(3) %ptr monotonic, align 888  ret i64 %load89}90 91; GCN-LABEL: {{^}}atomic_load_monotonic_i64_offset:92; GCN: s_waitcnt93; GFX9-NOT: s_mov_b32 m094; CI-NEXT: s_mov_b32 m095; GCN-NEXT: ds_read_b64 v[0:1], v0 offset:128{{$}}96; GCN-NEXT: s_waitcnt lgkmcnt(0)97; GCN-NEXT: s_setpc_b6498define i64 @atomic_load_monotonic_i64_offset(ptr addrspace(3) %ptr) {99  %gep = getelementptr inbounds i64, ptr addrspace(3) %ptr, i32 16100  %load = load atomic i64, ptr addrspace(3) %gep monotonic, align 8101  ret i64 %load102}103 104; GCN-LABEL: {{^}}atomic_load_monotonic_f32_offset:105; GCN: s_waitcnt106; GFX9-NOT: s_mov_b32 m0107; CI-NEXT: s_mov_b32 m0108; GCN-NEXT: ds_read_b32 v0, v0 offset:64{{$}}109; GCN-NEXT: s_waitcnt lgkmcnt(0)110; GCN-NEXT: s_setpc_b64111define float @atomic_load_monotonic_f32_offset(ptr addrspace(3) %ptr) {112  %gep = getelementptr inbounds float, ptr addrspace(3) %ptr, i32 16113  %load = load atomic float, ptr addrspace(3) %gep monotonic, align 4114  ret float %load115}116 117; GCN-LABEL: {{^}}atomic_load_monotonic_f64_offset:118; GCN: s_waitcnt119; GFX9-NOT: s_mov_b32 m0120; CI-NEXT: s_mov_b32 m0121; GCN-NEXT: ds_read_b64 v[0:1], v0 offset:128{{$}}122; GCN-NEXT: s_waitcnt lgkmcnt(0)123; GCN-NEXT: s_setpc_b64124define double @atomic_load_monotonic_f64_offset(ptr addrspace(3) %ptr) {125  %gep = getelementptr inbounds double, ptr addrspace(3) %ptr, i32 16126  %load = load atomic double, ptr addrspace(3) %gep monotonic, align 8127  ret double %load128}129 130; GCN-LABEL: {{^}}atomic_load_monotonic_p0i8_offset:131; GCN: s_waitcnt132; GFX9-NOT: s_mov_b32 m0133; CI-NEXT: s_mov_b32 m0134; GCN-NEXT: ds_read_b64 v[0:1], v0 offset:128{{$}}135; GCN-NEXT: s_waitcnt lgkmcnt(0)136; GCN-NEXT: s_setpc_b64137define ptr @atomic_load_monotonic_p0i8_offset(ptr addrspace(3) %ptr) {138  %gep = getelementptr inbounds ptr, ptr addrspace(3) %ptr, i32 16139  %load = load atomic ptr, ptr addrspace(3) %gep monotonic, align 8140  ret ptr %load141}142 143; GCN-LABEL: {{^}}atomic_load_monotonic_p3i8_offset:144; GCN: s_waitcnt145; GFX9-NOT: s_mov_b32 m0146; CI-NEXT: s_mov_b32 m0147; GCN-NEXT: ds_read_b32 v0, v0 offset:64{{$}}148; GCN-NEXT: s_waitcnt lgkmcnt(0)149; GCN-NEXT: s_setpc_b64150define ptr addrspace(3) @atomic_load_monotonic_p3i8_offset(ptr addrspace(3) %ptr) {151  %gep = getelementptr inbounds ptr addrspace(3), ptr addrspace(3) %ptr, i32 16152  %load = load atomic ptr addrspace(3), ptr addrspace(3) %gep monotonic, align 4153  ret ptr addrspace(3) %load154}155