brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 47b2e01 Raw
52 lines · plain
1; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=fiji < %s | FileCheck %s2 3declare void @func(ptr addrspace(1) %out)4 5declare protected void @protected_func(ptr addrspace(1) %out)6 7declare hidden void @hidden_func(ptr addrspace(1) %out)8 9; CHECK-LABEL: call_func:10; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]11; CHECK: s_add_u32 s[[GOT_ADDR_LO:[0-9]+]], s[[PC_LO]], func@gotpcrel32@lo+412; CHECK: s_addc_u32 s[[GOT_ADDR_HI:[0-9]+]], s[[PC_HI]], func@gotpcrel32@hi+1213; CHECK: s_load_dwordx2 s[[[ADDR_LO:[0-9]+]]:[[ADDR_HI:[0-9]+]]], s[[[GOT_ADDR_LO]]:[[GOT_ADDR_HI]]], 0x014; CHECK: s_swappc_b64 s[{{[0-9]+:[0-9]+}}], s[[[ADDR_LO]]:[[ADDR_HI]]]15define amdgpu_kernel void @call_func(ptr addrspace(1) %out) {16  call void @func(ptr addrspace(1) %out)17  ret void18}19 20; CHECK-LABEL: call_protected_func:21; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]22; CHECK: s_add_u32 s[[ADDR_LO:[0-9]+]], s[[PC_LO]], protected_func@rel32@lo+423; CHECK: s_addc_u32 s[[ADDR_HI:[0-9]+]], s[[PC_HI]], protected_func@rel32@hi+1224; CHECK: s_swappc_b64 s[{{[0-9]+:[0-9]+}}], s[[[ADDR_LO]]:[[ADDR_HI]]]25define amdgpu_kernel void @call_protected_func(ptr addrspace(1) %out) {26  call void @protected_func(ptr addrspace(1) %out)27  ret void28}29 30; CHECK-LABEL: call_hidden_func:31; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]32; CHECK: s_add_u32 s[[ADDR_LO:[0-9]+]], s[[PC_LO]], hidden_func@rel32@lo+433; CHECK: s_addc_u32 s[[ADDR_HI:[0-9]+]], s[[PC_HI]], hidden_func@rel32@hi+1234; CHECK: s_swappc_b64 s[{{[0-9]+:[0-9]+}}], s[[[ADDR_LO]]:[[ADDR_HI]]]35define amdgpu_kernel void @call_hidden_func(ptr addrspace(1) %out) {36  call void @hidden_func(ptr addrspace(1) %out)37  ret void38}39 40declare i64 @funci()41 42; CHECK-LABEL: tail_call_func:43; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]44; CHECK: s_add_u32 s[[GOT_ADDR_LO:[0-9]+]], s[[PC_LO]], funci@gotpcrel32@lo+445; CHECK: s_addc_u32 s[[GOT_ADDR_HI:[0-9]+]], s[[PC_HI]], funci@gotpcrel32@hi+1246; CHECK: s_load_dwordx2 s[[[ADDR_LO:[0-9]+]]:[[ADDR_HI:[0-9]+]]], s[[[GOT_ADDR_LO]]:[[GOT_ADDR_HI]]], 0x047; CHECK: s_setpc_b64 s[[[ADDR_LO]]:[[ADDR_HI]]]48define i64 @tail_call_func() {49  %ret = tail call i64 @funci()50  ret i64 %ret51}52