brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · ccaf0ac Raw
96 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn -mcpu=fiji -mattr=-flat-for-global < %s | FileCheck -enable-var-scope -check-prefixes=GCN,FIJI %s3; RUN: llc -mtriple=amdgcn -mcpu=hawaii < %s | FileCheck -enable-var-scope -check-prefixes=GCN,HAWAII %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -mattr=-flat-for-global < %s | FileCheck -enable-var-scope -check-prefixes=GCN,GFX9 %s5 6; Test calls when called by other callable functions rather than7; kernels.8 9declare void @external_void_func_i32(i32) #010 11; Spill CSR VGPR used for SGPR spilling12define void @test_func_call_external_void_func_i32_imm() #0 {13; GCN-LABEL: test_func_call_external_void_func_i32_imm:14; GCN:       ; %bb.0:15; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16; GCN-NEXT:    s_mov_b32 s16, s3317; GCN-NEXT:    s_mov_b32 s33, s3218; GCN-NEXT:    s_or_saveexec_b64 s[18:19], -119; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill20; GCN-NEXT:    s_mov_b64 exec, s[18:19]21; GCN-NEXT:    s_addk_i32 s32, 0x40022; GCN-NEXT:    v_writelane_b32 v40, s16, 223; GCN-NEXT:    s_getpc_b64 s[16:17]24; GCN-NEXT:    s_add_u32 s16, s16, external_void_func_i32@gotpcrel32@lo+425; GCN-NEXT:    s_addc_u32 s17, s17, external_void_func_i32@gotpcrel32@hi+1226; GCN-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x027; GCN-NEXT:    v_writelane_b32 v40, s30, 028; GCN-NEXT:    v_mov_b32_e32 v0, 4229; GCN-NEXT:    v_writelane_b32 v40, s31, 130; GCN-NEXT:    s_waitcnt lgkmcnt(0)31; GCN-NEXT:    s_swappc_b64 s[30:31], s[16:17]32; GCN-NEXT:    v_readlane_b32 s31, v40, 133; GCN-NEXT:    v_readlane_b32 s30, v40, 034; GCN-NEXT:    s_mov_b32 s32, s3335; GCN-NEXT:    v_readlane_b32 s4, v40, 236; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -137; GCN-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload38; GCN-NEXT:    s_mov_b64 exec, s[6:7]39; GCN-NEXT:    s_mov_b32 s33, s440; GCN-NEXT:    s_waitcnt vmcnt(0)41; GCN-NEXT:    s_setpc_b64 s[30:31]42  call void @external_void_func_i32(i32 42)43  ret void44}45 46define void @test_func_call_external_void_func_i32_imm_stack_use() #0 {47; GCN-LABEL: test_func_call_external_void_func_i32_imm_stack_use:48; GCN:       ; %bb.0:49; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)50; GCN-NEXT:    s_mov_b32 s16, s3351; GCN-NEXT:    s_mov_b32 s33, s3252; GCN-NEXT:    s_or_saveexec_b64 s[18:19], -153; GCN-NEXT:    buffer_store_dword v40, off, s[0:3], s33 offset:64 ; 4-byte Folded Spill54; GCN-NEXT:    s_mov_b64 exec, s[18:19]55; GCN-NEXT:    s_addk_i32 s32, 0x140056; GCN-NEXT:    v_writelane_b32 v40, s16, 257; GCN-NEXT:    s_getpc_b64 s[16:17]58; GCN-NEXT:    s_add_u32 s16, s16, external_void_func_i32@gotpcrel32@lo+459; GCN-NEXT:    s_addc_u32 s17, s17, external_void_func_i32@gotpcrel32@hi+1260; GCN-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x061; GCN-NEXT:    v_mov_b32_e32 v0, 062; GCN-NEXT:    v_writelane_b32 v40, s30, 063; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], s3364; GCN-NEXT:    s_waitcnt vmcnt(0)65; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], s33 offset:6466; GCN-NEXT:    s_waitcnt vmcnt(0)67; GCN-NEXT:    v_mov_b32_e32 v0, 4268; GCN-NEXT:    v_writelane_b32 v40, s31, 169; GCN-NEXT:    s_waitcnt lgkmcnt(0)70; GCN-NEXT:    s_swappc_b64 s[30:31], s[16:17]71; GCN-NEXT:    v_readlane_b32 s31, v40, 172; GCN-NEXT:    v_readlane_b32 s30, v40, 073; GCN-NEXT:    s_mov_b32 s32, s3374; GCN-NEXT:    v_readlane_b32 s4, v40, 275; GCN-NEXT:    s_or_saveexec_b64 s[6:7], -176; GCN-NEXT:    buffer_load_dword v40, off, s[0:3], s33 offset:64 ; 4-byte Folded Reload77; GCN-NEXT:    s_mov_b64 exec, s[6:7]78; GCN-NEXT:    s_mov_b32 s33, s479; GCN-NEXT:    s_waitcnt vmcnt(0)80; GCN-NEXT:    s_setpc_b64 s[30:31]81  %alloca = alloca [16 x i32], align 4, addrspace(5)82  %gep15 = getelementptr inbounds [16 x i32], ptr addrspace(5) %alloca, i32 0, i32 1683  store volatile i32 0, ptr addrspace(5) %alloca84  store volatile i32 0, ptr addrspace(5) %gep1585  call void @external_void_func_i32(i32 42)86  ret void87}88 89attributes #0 = { nounwind }90attributes #1 = { nounwind readnone }91attributes #2 = { nounwind noinline }92;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:93; FIJI: {{.*}}94; GFX9: {{.*}}95; HAWAII: {{.*}}96