brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · d5cd7c9 Raw
100 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -mtriple=amdgcn-- -mem-intrinsic-expand-size=3 %s -o - | FileCheck -check-prefix=LOOP %s3; RUN: llc -global-isel -mtriple=amdgcn-- -mem-intrinsic-expand-size=5 %s -o - | FileCheck -check-prefix=UNROLL %s4 5declare void @llvm.memmove.p1.p1.i32(ptr addrspace(1), ptr addrspace(1), i32, i1)6 7define amdgpu_cs void @memmove_p1i8(ptr addrspace(1) %dst, ptr addrspace(1) %src) {8; LOOP-LABEL: memmove_p1i8:9; LOOP:       ; %bb.0:10; LOOP-NEXT:    v_cmp_ge_u64_e32 vcc, v[2:3], v[0:1]11; LOOP-NEXT:    s_and_saveexec_b64 s[0:1], vcc12; LOOP-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]13; LOOP-NEXT:    s_cbranch_execnz .LBB0_314; LOOP-NEXT:  ; %bb.1: ; %Flow15; LOOP-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]16; LOOP-NEXT:    s_cbranch_execnz .LBB0_417; LOOP-NEXT:  .LBB0_2: ; %memmove_done18; LOOP-NEXT:    s_endpgm19; LOOP-NEXT:  .LBB0_3:20; LOOP-NEXT:    s_mov_b32 s6, 021; LOOP-NEXT:    s_mov_b32 s7, 0xf00022; LOOP-NEXT:    s_mov_b64 s[4:5], 023; LOOP-NEXT:    buffer_load_ubyte v4, v[2:3], s[4:7], 0 addr64 offset:124; LOOP-NEXT:    buffer_load_ubyte v5, v[2:3], s[4:7], 0 addr64 offset:325; LOOP-NEXT:    buffer_load_ubyte v6, v[2:3], s[4:7], 0 addr64 offset:226; LOOP-NEXT:    buffer_load_ubyte v2, v[2:3], s[4:7], 0 addr6427; LOOP-NEXT:    s_waitcnt vmcnt(3)28; LOOP-NEXT:    v_lshlrev_b32_e32 v3, 8, v429; LOOP-NEXT:    s_waitcnt vmcnt(2)30; LOOP-NEXT:    v_lshlrev_b32_e32 v4, 24, v531; LOOP-NEXT:    s_waitcnt vmcnt(1)32; LOOP-NEXT:    v_lshlrev_b32_e32 v5, 16, v633; LOOP-NEXT:    s_waitcnt vmcnt(0)34; LOOP-NEXT:    v_or_b32_e32 v2, v3, v235; LOOP-NEXT:    v_or_b32_e32 v3, v4, v536; LOOP-NEXT:    v_or_b32_e32 v2, v3, v237; LOOP-NEXT:    v_lshrrev_b32_e32 v3, 16, v238; LOOP-NEXT:    v_bfe_u32 v4, v2, 8, 839; LOOP-NEXT:    buffer_store_byte v2, v[0:1], s[4:7], 0 addr6440; LOOP-NEXT:    s_waitcnt expcnt(0)41; LOOP-NEXT:    v_lshrrev_b32_e32 v2, 24, v242; LOOP-NEXT:    buffer_store_byte v4, v[0:1], s[4:7], 0 addr64 offset:143; LOOP-NEXT:    buffer_store_byte v3, v[0:1], s[4:7], 0 addr64 offset:244; LOOP-NEXT:    buffer_store_byte v2, v[0:1], s[4:7], 0 addr64 offset:345; LOOP-NEXT:    ; implicit-def: $vgpr2_vgpr346; LOOP-NEXT:    ; implicit-def: $vgpr0_vgpr147; LOOP-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]48; LOOP-NEXT:    s_cbranch_execz .LBB0_249; LOOP-NEXT:  .LBB0_4: ; %memmove_bwd_residual50; LOOP-NEXT:    s_mov_b32 s2, 051; LOOP-NEXT:    s_mov_b32 s3, 0xf00052; LOOP-NEXT:    s_mov_b64 s[0:1], 053; LOOP-NEXT:    s_waitcnt expcnt(2)54; LOOP-NEXT:    buffer_load_ubyte v4, v[2:3], s[0:3], 0 addr64 offset:155; LOOP-NEXT:    buffer_load_ubyte v5, v[2:3], s[0:3], 0 addr64 offset:356; LOOP-NEXT:    buffer_load_ubyte v6, v[2:3], s[0:3], 0 addr64 offset:257; LOOP-NEXT:    s_waitcnt expcnt(0)58; LOOP-NEXT:    buffer_load_ubyte v2, v[2:3], s[0:3], 0 addr6459; LOOP-NEXT:    s_waitcnt vmcnt(3)60; LOOP-NEXT:    v_lshlrev_b32_e32 v3, 8, v461; LOOP-NEXT:    s_waitcnt vmcnt(2)62; LOOP-NEXT:    v_lshlrev_b32_e32 v4, 24, v563; LOOP-NEXT:    s_waitcnt vmcnt(1)64; LOOP-NEXT:    v_lshlrev_b32_e32 v5, 16, v665; LOOP-NEXT:    s_waitcnt vmcnt(0)66; LOOP-NEXT:    v_or_b32_e32 v2, v3, v267; LOOP-NEXT:    v_or_b32_e32 v3, v4, v568; LOOP-NEXT:    v_or_b32_e32 v2, v3, v269; LOOP-NEXT:    v_lshrrev_b32_e32 v3, 16, v270; LOOP-NEXT:    v_bfe_u32 v4, v2, 8, 871; LOOP-NEXT:    buffer_store_byte v2, v[0:1], s[0:3], 0 addr6472; LOOP-NEXT:    s_waitcnt expcnt(0)73; LOOP-NEXT:    v_lshrrev_b32_e32 v2, 24, v274; LOOP-NEXT:    buffer_store_byte v4, v[0:1], s[0:3], 0 addr64 offset:175; LOOP-NEXT:    buffer_store_byte v3, v[0:1], s[0:3], 0 addr64 offset:276; LOOP-NEXT:    buffer_store_byte v2, v[0:1], s[0:3], 0 addr64 offset:377; LOOP-NEXT:    s_endpgm78;79; UNROLL-LABEL: memmove_p1i8:80; UNROLL:       ; %bb.0:81; UNROLL-NEXT:    s_mov_b32 s2, 082; UNROLL-NEXT:    s_mov_b32 s3, 0xf00083; UNROLL-NEXT:    s_mov_b64 s[0:1], 084; UNROLL-NEXT:    buffer_load_ubyte v4, v[2:3], s[0:3], 0 addr6485; UNROLL-NEXT:    buffer_load_ubyte v5, v[2:3], s[0:3], 0 addr64 offset:186; UNROLL-NEXT:    buffer_load_ubyte v6, v[2:3], s[0:3], 0 addr64 offset:287; UNROLL-NEXT:    buffer_load_ubyte v2, v[2:3], s[0:3], 0 addr64 offset:388; UNROLL-NEXT:    s_waitcnt vmcnt(3)89; UNROLL-NEXT:    buffer_store_byte v4, v[0:1], s[0:3], 0 addr6490; UNROLL-NEXT:    s_waitcnt vmcnt(3)91; UNROLL-NEXT:    buffer_store_byte v5, v[0:1], s[0:3], 0 addr64 offset:192; UNROLL-NEXT:    s_waitcnt vmcnt(3)93; UNROLL-NEXT:    buffer_store_byte v6, v[0:1], s[0:3], 0 addr64 offset:294; UNROLL-NEXT:    s_waitcnt vmcnt(3)95; UNROLL-NEXT:    buffer_store_byte v2, v[0:1], s[0:3], 0 addr64 offset:396; UNROLL-NEXT:    s_endpgm97  call void @llvm.memmove.p1.p1.i32(ptr addrspace(1) %dst, ptr addrspace(1) %src, i32 4, i1 false)98  ret void99}100