96 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -global-isel=1 -mtriple=amdgcn--amdpal -mcpu=gfx1200 -mattr=+block-vgpr-csr < %s | FileCheck -check-prefixes=CHECK,GISEL %s3; RUN: llc -global-isel=0 -mtriple=amdgcn--amdpal -mcpu=gfx1200 -mattr=+block-vgpr-csr < %s | FileCheck -check-prefixes=CHECK,DAGISEL %s4 5define i32 @non_entry_func(i32 %x) {6; CHECK-LABEL: non_entry_func:7; CHECK: ; %bb.0:8; CHECK-NEXT: s_wait_loadcnt_dscnt 0x09; CHECK-NEXT: s_wait_expcnt 0x010; CHECK-NEXT: s_wait_samplecnt 0x011; CHECK-NEXT: s_wait_bvhcnt 0x012; CHECK-NEXT: s_wait_kmcnt 0x013; CHECK-NEXT: s_xor_saveexec_b32 s0, -114; CHECK-NEXT: scratch_store_b32 off, v2, s32 offset:100 ; 4-byte Folded Spill15; CHECK-NEXT: s_wait_alu depctr_sa_sdst(0)16; CHECK-NEXT: s_mov_b32 exec_lo, s017; CHECK-NEXT: v_writelane_b32 v2, s48, 018; CHECK-NEXT: s_mov_b32 m0, 0x11000319; CHECK-NEXT: v_mov_b32_e32 v1, v020; CHECK-NEXT: ; transferring at most v40 v41 v56 v60 ; 128-byte Folded Spill21; CHECK-NEXT: scratch_store_block off, v[40:71], s32 offset:422; CHECK-NEXT: s_mov_b32 m0, 123; CHECK-NEXT: v_writelane_b32 v2, s49, 124; CHECK-NEXT: ; transferring at most v120 ; 128-byte Folded Spill25; CHECK-NEXT: scratch_store_block off, v[120:151], s3226; CHECK-NEXT: ;;#ASMSTART27; CHECK-NEXT: s_nop28; CHECK-NEXT: ;;#ASMEND29; CHECK-NEXT: ; transferring at most v120 ; 128-byte Folded Reload30; CHECK-NEXT: scratch_load_block v[120:151], off, s3231; CHECK-NEXT: s_mov_b32 m0, 0x11000332; CHECK-NEXT: scratch_store_b32 off, v1, s32 offset:8833; CHECK-NEXT: ; transferring at most v40 v41 v56 v60 ; 128-byte Folded Reload34; CHECK-NEXT: scratch_load_block v[40:71], off, s32 offset:435; CHECK-NEXT: v_mov_b32_e32 v0, v136; CHECK-NEXT: v_readlane_b32 s49, v2, 137; CHECK-NEXT: v_readlane_b32 s48, v2, 038; CHECK-NEXT: s_xor_saveexec_b32 s0, -139; CHECK-NEXT: scratch_load_b32 v2, off, s32 offset:100 ; 4-byte Folded Reload40; CHECK-NEXT: s_wait_alu depctr_sa_sdst(0)41; CHECK-NEXT: s_mov_b32 exec_lo, s042; CHECK-NEXT: s_wait_loadcnt 0x043; CHECK-NEXT: s_setpc_b64 s[30:31]44 %local = alloca i32, i32 3, addrspace(5)45 store i32 %x, ptr addrspace(5) %local46 call void asm "s_nop", "~{v0},~{v8},~{v40},~{v41},~{v49},~{v52},~{v56},~{v60},~{v120},~{s0},~{s48},~{s49}"()47 ret i32 %x48}49 50define amdgpu_kernel void @entry_func(i32 %x) {51; GISEL-LABEL: entry_func:52; GISEL: ; %bb.0:53; GISEL-NEXT: s_mov_b64 s[10:11], s[6:7]54; GISEL-NEXT: s_load_b32 s6, s[4:5], 0x055; GISEL-NEXT: v_mov_b32_e32 v31, v056; GISEL-NEXT: s_mov_b64 s[12:13], s[0:1]57; GISEL-NEXT: ;;#ASMSTART58; GISEL-NEXT: s_nop59; GISEL-NEXT: ;;#ASMEND60; GISEL-NEXT: s_add_co_u32 s8, s4, 461; GISEL-NEXT: s_mov_b32 s0, non_entry_func@abs32@lo62; GISEL-NEXT: s_mov_b32 s1, non_entry_func@abs32@hi63; GISEL-NEXT: s_add_co_ci_u32 s9, s5, 064; GISEL-NEXT: s_mov_b64 s[4:5], s[12:13]65; GISEL-NEXT: s_mov_b32 s32, 066; GISEL-NEXT: s_wait_kmcnt 0x067; GISEL-NEXT: v_mov_b32_e32 v0, s668; GISEL-NEXT: s_mov_b64 s[6:7], s[2:3]69; GISEL-NEXT: s_wait_alu depctr_sa_sdst(0)70; GISEL-NEXT: s_swappc_b64 s[30:31], s[0:1]71; GISEL-NEXT: s_endpgm72;73; DAGISEL-LABEL: entry_func:74; DAGISEL: ; %bb.0:75; DAGISEL-NEXT: s_load_b32 s12, s[4:5], 0x076; DAGISEL-NEXT: s_mov_b64 s[10:11], s[6:7]77; DAGISEL-NEXT: v_mov_b32_e32 v31, v078; DAGISEL-NEXT: s_mov_b64 s[6:7], s[0:1]79; DAGISEL-NEXT: ;;#ASMSTART80; DAGISEL-NEXT: s_nop81; DAGISEL-NEXT: ;;#ASMEND82; DAGISEL-NEXT: s_add_nc_u64 s[8:9], s[4:5], 483; DAGISEL-NEXT: s_mov_b32 s1, non_entry_func@abs32@hi84; DAGISEL-NEXT: s_mov_b32 s0, non_entry_func@abs32@lo85; DAGISEL-NEXT: s_mov_b64 s[4:5], s[6:7]86; DAGISEL-NEXT: s_mov_b64 s[6:7], s[2:3]87; DAGISEL-NEXT: s_mov_b32 s32, 088; DAGISEL-NEXT: s_wait_kmcnt 0x089; DAGISEL-NEXT: v_mov_b32_e32 v0, s1290; DAGISEL-NEXT: s_swappc_b64 s[30:31], s[0:1]91; DAGISEL-NEXT: s_endpgm92 call void asm "s_nop", "~{v0},~{v8},~{v40},~{v41},~{v49},~{v52},~{v56},~{v60},~{v120},~{s0},~{s48}"()93 %res = call i32 @non_entry_func(i32 %x)94 ret void95}96