brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.9 KiB · 6d55e79 Raw
164 lines · plain
1; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=fiji < %s | FileCheck %s2 3@private = private addrspace(1) global [256 x i32] zeroinitializer4@internal = internal addrspace(1) global [256 x i32] zeroinitializer5@available_externally = available_externally addrspace(1) global [256 x i32] zeroinitializer6@linkonce = linkonce addrspace(1) global [256 x i32] zeroinitializer7@weak= weak addrspace(1) global [256 x i32] zeroinitializer8@common = common addrspace(1) global [256 x i32] zeroinitializer9@extern_weak = extern_weak addrspace(1) global [256 x i32]10@linkonce_odr = linkonce_odr addrspace(1) global [256 x i32] zeroinitializer11@weak_odr = weak_odr addrspace(1) global [256 x i32] zeroinitializer12@external = external addrspace(1) global [256 x i32]13@external_w_init = addrspace(1) global [256 x i32] zeroinitializer14 15; CHECK-LABEL: private_test:16; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]17; CHECK: s_add_u32 s[[ADDR_LO:[0-9]+]], s[[PC_LO]], .Lprivate@rel32@lo+818; CHECK: s_addc_u32 s[[ADDR_HI:[0-9]+]], s[[PC_HI]], .Lprivate@rel32@hi+1619; CHECK: s_load_dword s{{[0-9]+}}, s[[[ADDR_LO]]:[[ADDR_HI]]]20define amdgpu_kernel void @private_test(ptr addrspace(1) %out) {21  %ptr = getelementptr [256 x i32], ptr addrspace(1) @private, i32 0, i32 122  %val = load i32, ptr addrspace(1) %ptr23  store i32 %val, ptr addrspace(1) %out24  ret void25}26 27; CHECK-LABEL: internal_test:28; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]29; CHECK: s_add_u32 s[[ADDR_LO:[0-9]+]], s[[PC_LO]], internal@rel32@lo+830; CHECK: s_addc_u32 s[[ADDR_HI:[0-9]+]], s[[PC_HI]], internal@rel32@hi+1631; CHECK: s_load_dword s{{[0-9]+}}, s[[[ADDR_LO]]:[[ADDR_HI]]]32define amdgpu_kernel void @internal_test(ptr addrspace(1) %out) {33  %ptr = getelementptr [256 x i32], ptr addrspace(1) @internal, i32 0, i32 134  %val = load i32, ptr addrspace(1) %ptr35  store i32 %val, ptr addrspace(1) %out36  ret void37}38 39; CHECK-LABEL: available_externally_test:40; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]41; CHECK: s_add_u32 s[[GOTADDR_LO:[0-9]+]], s[[PC_LO]], available_externally@gotpcrel32@lo+442; CHECK: s_addc_u32 s[[GOTADDR_HI:[0-9]+]], s[[PC_HI]], available_externally@gotpcrel32@hi+1243; CHECK: s_load_dwordx2 s[[[ADDR_LO:[0-9]+]]:[[ADDR_HI:[0-9]+]]], s[[[GOTADDR_LO]]:[[GOTADDR_HI]]], 0x044; CHECK: s_load_dword s{{[0-9]+}}, s[[[ADDR_LO]]:[[ADDR_HI]]], 0x445define amdgpu_kernel void @available_externally_test(ptr addrspace(1) %out) {46  %ptr = getelementptr [256 x i32], ptr addrspace(1) @available_externally, i32 0, i32 147  %val = load i32, ptr addrspace(1) %ptr48  store i32 %val, ptr addrspace(1) %out49  ret void50}51 52; CHECK-LABEL: linkonce_test:53; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]54; CHECK: s_add_u32 s[[GOTADDR_LO:[0-9]+]], s[[PC_LO]], linkonce@gotpcrel32@lo+455; CHECK: s_addc_u32 s[[GOTADDR_HI:[0-9]+]], s[[PC_HI]], linkonce@gotpcrel32@hi+1256; CHECK: s_load_dwordx2 s[[[ADDR_LO:[0-9]+]]:[[ADDR_HI:[0-9]+]]], s[[[GOTADDR_LO]]:[[GOTADDR_HI]]], 0x057; CHECK: s_load_dword s{{[0-9]+}}, s[[[ADDR_LO]]:[[ADDR_HI]]], 0x458define amdgpu_kernel void @linkonce_test(ptr addrspace(1) %out) {59  %ptr = getelementptr [256 x i32], ptr addrspace(1) @linkonce, i32 0, i32 160  %val = load i32, ptr addrspace(1) %ptr61  store i32 %val, ptr addrspace(1) %out62  ret void63}64 65; CHECK-LABEL: weak_test:66; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]67; CHECK: s_add_u32 s[[GOTADDR_LO:[0-9]+]], s[[PC_LO]], weak@gotpcrel32@lo+468; CHECK: s_addc_u32 s[[GOTADDR_HI:[0-9]+]], s[[PC_HI]], weak@gotpcrel32@hi+1269; CHECK: s_load_dwordx2 s[[[ADDR_LO:[0-9]+]]:[[ADDR_HI:[0-9]+]]], s[[[GOTADDR_LO]]:[[GOTADDR_HI]]], 0x070; CHECK: s_load_dword s{{[0-9]+}}, s[[[ADDR_LO]]:[[ADDR_HI]]], 0x471define amdgpu_kernel void @weak_test(ptr addrspace(1) %out) {72  %ptr = getelementptr [256 x i32], ptr addrspace(1) @weak, i32 0, i32 173  %val = load i32, ptr addrspace(1) %ptr74  store i32 %val, ptr addrspace(1) %out75  ret void76}77 78; CHECK-LABEL: common_test:79; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]80; CHECK: s_add_u32 s[[GOTADDR_LO:[0-9]+]], s[[PC_LO]], common@gotpcrel32@lo+481; CHECK: s_addc_u32 s[[GOTADDR_HI:[0-9]+]], s[[PC_HI]], common@gotpcrel32@hi+1282; CHECK: s_load_dwordx2 s[[[ADDR_LO:[0-9]+]]:[[ADDR_HI:[0-9]+]]], s[[[GOTADDR_LO]]:[[GOTADDR_HI]]], 0x083; CHECK: s_load_dword s{{[0-9]+}}, s[[[ADDR_LO]]:[[ADDR_HI]]], 0x484define amdgpu_kernel void @common_test(ptr addrspace(1) %out) {85  %ptr = getelementptr [256 x i32], ptr addrspace(1) @common, i32 0, i32 186  %val = load i32, ptr addrspace(1) %ptr87  store i32 %val, ptr addrspace(1) %out88  ret void89}90 91; CHECK-LABEL: extern_weak_test:92; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]93; CHECK: s_add_u32 s[[GOTADDR_LO:[0-9]+]], s[[PC_LO]], extern_weak@gotpcrel32@lo+494; CHECK: s_addc_u32 s[[GOTADDR_HI:[0-9]+]], s[[PC_HI]], extern_weak@gotpcrel32@hi+1295; CHECK: s_load_dwordx2 s[[[ADDR_LO:[0-9]+]]:[[ADDR_HI:[0-9]+]]], s[[[GOTADDR_LO]]:[[GOTADDR_HI]]], 0x096; CHECK: s_load_dword s{{[0-9]+}}, s[[[ADDR_LO]]:[[ADDR_HI]]], 0x497define amdgpu_kernel void @extern_weak_test(ptr addrspace(1) %out) {98  %ptr = getelementptr [256 x i32], ptr addrspace(1) @extern_weak, i32 0, i32 199  %val = load i32, ptr addrspace(1) %ptr100  store i32 %val, ptr addrspace(1) %out101  ret void102}103 104; CHECK-LABEL: linkonce_odr_test:105; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]106; CHECK: s_add_u32 s[[GOTADDR_LO:[0-9]+]], s[[PC_LO]], linkonce_odr@gotpcrel32@lo+4107; CHECK: s_addc_u32 s[[GOTADDR_HI:[0-9]+]], s[[PC_HI]], linkonce_odr@gotpcrel32@hi+12108; CHECK: s_load_dwordx2 s[[[ADDR_LO:[0-9]+]]:[[ADDR_HI:[0-9]+]]], s[[[GOTADDR_LO]]:[[GOTADDR_HI]]], 0x0109; CHECK: s_load_dword s{{[0-9]+}}, s[[[ADDR_LO]]:[[ADDR_HI]]], 0x4110define amdgpu_kernel void @linkonce_odr_test(ptr addrspace(1) %out) {111  %ptr = getelementptr [256 x i32], ptr addrspace(1) @linkonce_odr, i32 0, i32 1112  %val = load i32, ptr addrspace(1) %ptr113  store i32 %val, ptr addrspace(1) %out114  ret void115}116 117; CHECK-LABEL: weak_odr_test:118; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]119; CHECK: s_add_u32 s[[GOTADDR_LO:[0-9]+]], s[[PC_LO]], weak_odr@gotpcrel32@lo+4120; CHECK: s_addc_u32 s[[GOTADDR_HI:[0-9]+]], s[[PC_HI]], weak_odr@gotpcrel32@hi+12121; CHECK: s_load_dwordx2 s[[[ADDR_LO:[0-9]+]]:[[ADDR_HI:[0-9]+]]], s[[[GOTADDR_LO]]:[[GOTADDR_HI]]], 0x0122; CHECK: s_load_dword s{{[0-9]+}}, s[[[ADDR_LO]]:[[ADDR_HI]]], 0x4123define amdgpu_kernel void @weak_odr_test(ptr addrspace(1) %out) {124  %ptr = getelementptr [256 x i32], ptr addrspace(1) @weak_odr, i32 0, i32 1125  %val = load i32, ptr addrspace(1) %ptr126  store i32 %val, ptr addrspace(1) %out127  ret void128}129 130; CHECK-LABEL: external_test:131; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]132; CHECK: s_add_u32 s[[GOTADDR_LO:[0-9]+]], s[[PC_LO]], external@gotpcrel32@lo+4133; CHECK: s_addc_u32 s[[GOTADDR_HI:[0-9]+]], s[[PC_HI]], external@gotpcrel32@hi+12134; CHECK: s_load_dwordx2 s[[[ADDR_LO:[0-9]+]]:[[ADDR_HI:[0-9]+]]], s[[[GOTADDR_LO]]:[[GOTADDR_HI]]], 0x0135; CHECK: s_load_dword s{{[0-9]+}}, s[[[ADDR_LO]]:[[ADDR_HI]]], 0x4136define amdgpu_kernel void @external_test(ptr addrspace(1) %out) {137  %ptr = getelementptr [256 x i32], ptr addrspace(1) @external, i32 0, i32 1138  %val = load i32, ptr addrspace(1) %ptr139  store i32 %val, ptr addrspace(1) %out140  ret void141}142 143; CHECK-LABEL: external_w_init_test:144; CHECK: s_getpc_b64 s[[[PC_LO:[0-9]+]]:[[PC_HI:[0-9]+]]]145; CHECK: s_add_u32 s[[GOTADDR_LO:[0-9]+]], s[[PC_LO]], external_w_init@gotpcrel32@lo+4146; CHECK: s_addc_u32 s[[GOTADDR_HI:[0-9]+]], s[[PC_HI]], external_w_init@gotpcrel32@hi+12147; CHECK: s_load_dwordx2 s[[[ADDR_LO:[0-9]+]]:[[ADDR_HI:[0-9]+]]], s[[[GOTADDR_LO]]:[[GOTADDR_HI]]], 0x0148; CHECK: s_load_dword s{{[0-9]+}}, s[[[ADDR_LO]]:[[ADDR_HI]]], 0x4149define amdgpu_kernel void @external_w_init_test(ptr addrspace(1) %out) {150  %ptr = getelementptr [256 x i32], ptr addrspace(1) @external_w_init, i32 0, i32 1151  %val = load i32, ptr addrspace(1) %ptr152  store i32 %val, ptr addrspace(1) %out153  ret void154}155 156; CHECK: .local .Lprivate157; CHECK: .local internal158; CHECK: .weak linkonce159; CHECK: .weak weak160; CHECK: .weak linkonce_odr161; CHECK: .weak weak_odr162; CHECK-NOT: external{{$}}163; CHECK: .globl external_w_init164