brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 8816c59 Raw
80 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefix=GCN %s3 4define i32 @atomic_nand_i32_lds(ptr addrspace(3) %ptr) nounwind {5; GCN-LABEL: atomic_nand_i32_lds:6; GCN:       ; %bb.0:7; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8; GCN-NEXT:    ds_read_b32 v1, v09; GCN-NEXT:    s_mov_b64 s[4:5], 010; GCN-NEXT:  .LBB0_1: ; %atomicrmw.start11; GCN-NEXT:    ; =>This Inner Loop Header: Depth=112; GCN-NEXT:    s_waitcnt lgkmcnt(0)13; GCN-NEXT:    v_mov_b32_e32 v2, v114; GCN-NEXT:    v_bfi_b32 v1, v2, -5, -115; GCN-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v116; GCN-NEXT:    s_waitcnt lgkmcnt(0)17; GCN-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v218; GCN-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]19; GCN-NEXT:    s_andn2_b64 exec, exec, s[4:5]20; GCN-NEXT:    s_cbranch_execnz .LBB0_121; GCN-NEXT:  ; %bb.2: ; %atomicrmw.end22; GCN-NEXT:    s_or_b64 exec, exec, s[4:5]23; GCN-NEXT:    v_mov_b32_e32 v0, v124; GCN-NEXT:    s_setpc_b64 s[30:31]25  %result = atomicrmw nand ptr addrspace(3) %ptr, i32 4 seq_cst26  ret i32 %result27}28 29define i32 @atomic_nand_i32_global(ptr addrspace(1) %ptr) nounwind {30; GCN-LABEL: atomic_nand_i32_global:31; GCN:       ; %bb.0:32; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GCN-NEXT:    global_load_dword v2, v[0:1], off34; GCN-NEXT:    s_mov_b64 s[4:5], 035; GCN-NEXT:  .LBB1_1: ; %atomicrmw.start36; GCN-NEXT:    ; =>This Inner Loop Header: Depth=137; GCN-NEXT:    s_waitcnt vmcnt(0)38; GCN-NEXT:    v_mov_b32_e32 v3, v239; GCN-NEXT:    v_bfi_b32 v2, v3, -5, -140; GCN-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc41; GCN-NEXT:    s_waitcnt vmcnt(0)42; GCN-NEXT:    buffer_wbinvl1_vol43; GCN-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v344; GCN-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]45; GCN-NEXT:    s_andn2_b64 exec, exec, s[4:5]46; GCN-NEXT:    s_cbranch_execnz .LBB1_147; GCN-NEXT:  ; %bb.2: ; %atomicrmw.end48; GCN-NEXT:    s_or_b64 exec, exec, s[4:5]49; GCN-NEXT:    v_mov_b32_e32 v0, v250; GCN-NEXT:    s_setpc_b64 s[30:31]51  %result = atomicrmw nand ptr addrspace(1) %ptr, i32 4 seq_cst52  ret i32 %result53}54 55define i32 @atomic_nand_i32_flat(ptr %ptr) nounwind {56; GCN-LABEL: atomic_nand_i32_flat:57; GCN:       ; %bb.0:58; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)59; GCN-NEXT:    flat_load_dword v2, v[0:1]60; GCN-NEXT:    s_mov_b64 s[4:5], 061; GCN-NEXT:  .LBB2_1: ; %atomicrmw.start62; GCN-NEXT:    ; =>This Inner Loop Header: Depth=163; GCN-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)64; GCN-NEXT:    v_mov_b32_e32 v3, v265; GCN-NEXT:    v_bfi_b32 v2, v3, -5, -166; GCN-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc67; GCN-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)68; GCN-NEXT:    buffer_wbinvl1_vol69; GCN-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v370; GCN-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]71; GCN-NEXT:    s_andn2_b64 exec, exec, s[4:5]72; GCN-NEXT:    s_cbranch_execnz .LBB2_173; GCN-NEXT:  ; %bb.2: ; %atomicrmw.end74; GCN-NEXT:    s_or_b64 exec, exec, s[4:5]75; GCN-NEXT:    v_mov_b32_e32 v0, v276; GCN-NEXT:    s_setpc_b64 s[30:31]77  %result = atomicrmw nand ptr %ptr, i32 4 seq_cst78  ret i32 %result79}80