brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · 51e87b0 Raw
122 lines · plain
1; RUN: llc -mtriple=ppc64le -relocation-model=static < %s | FileCheck %s2 3@default = global i32 554define dso_local ptr @get_default_global() {5; CHECK-LABEL: get_default_global:6; CHECK:         addis 3, 2, .LC{{.*}}@toc@ha7; CHECK-NEXT:    ld 3, .LC{{.*}}@toc@l(3)8; CHECK-NEXT:    blr9  ret ptr @default10}11 12@local_global = dso_local global i32 5513define dso_local ptr @get_local_global() {14; CHECK-LABEL: get_local_global:15; CHECK:         addis 3, 2, local_global@toc@ha16; CHECK-NEXT:    addi 3, 3, local_global@toc@l17; CHECK-NEXT:    blr18  ret ptr @local_global19}20 21@preemptable_global = dso_preemptable global i32 4222define dso_local ptr @get_preemptable_global() {23; CHECK-LABEL: get_preemptable_global:24; CHECK:         addis 3, 2, .LC{{.*}}@toc@ha25; CHECK-NEXT:    ld 3, .LC{{.*}}@toc@l(3)26; CHECK-NEXT:    blr27  ret ptr @preemptable_global28}29 30 31@external_default_global = external global i3232define dso_local ptr @get_external_default_global() {33; CHECK-LABEL: get_external_default_global:34; CHECK:         addis 3, 2, .LC{{.*}}@toc@ha35; CHECK-NEXT:    ld 3, .LC{{.*}}@toc@l(3)36; CHECK-NEXT:    blr37  ret ptr @external_default_global38}39 40@external_local_global = external dso_local global i3241define dso_local ptr @get_external_local_global() {42; CHECK-LABEL: get_external_local_global:43; CHECK:         addis 3, 2, external_local_global@toc@ha44; CHECK-NEXT:    addi 3, 3, external_local_global@toc@l45; CHECK-NEXT:    blr46  ret ptr @external_local_global47}48 49@external_preemptable_global = external dso_preemptable global i3250define dso_local ptr @get_external_preemptable_global() {51; CHECK-LABEL: get_external_preemptable_global:52; CHECK:         addis 3, 2, .LC{{.*}}@toc@ha53; CHECK-NEXT:    ld 3, .LC{{.*}}@toc@l(3)54; CHECK-NEXT:    blr55  ret ptr @external_preemptable_global56}57 58 59; functions60define signext i32 @default_function(i32 %i) {61  ret i32 %i62}63define dso_local signext i32 @default_function_caller(i32 %i) {64; CHECK-LABEL: default_function_caller:65; CHECK:         bl default_function66; CHECK-NEXT:    nop67  %call = notail call signext i32 @default_function(i32 signext %i)68  ret i32 %call69}70 71define dso_local signext i32 @local_function(i32 %i) {72  ret i32 %i73}74define dso_local signext i32 @local_function_caller(i32 %i) {75; CHECK-LABEL: local_function_caller:76; CHECK:         bl local_function77; CHECK-NOT:     nop78; CHECK:         blr79  %call = notail call signext i32 @local_function(i32 signext %i)80  ret i32 %call81}82 83define dso_preemptable signext i32 @preemptable_function(i32 %i) {84  ret i32 %i85}86define dso_local signext i32 @preemptable_function_caller(i32 %i) {87; CHECK-LABEL: preemptable_function_caller:88; CHECK:         bl preemptable_function89; CHECK-NEXT:    nop90  %call = notail call signext i32 @preemptable_function(i32 signext %i)91  ret i32 %call92}93 94 95declare i32 @external_default_function(i32 %i)96define dso_local i32 @external_default_function_caller(i32 %i) {97; CHECK-LABEL: external_default_function_caller:98; CHECK:         bl external_default_function99; CHECK-NEXT:    nop100; CHECK:         blr101  %call = notail call signext i32 @external_default_function(i32 signext %i)102  ret i32 %call103}104 105declare dso_local i32 @external_local_function(i32 %i)106define dso_local i32 @external_local_function_caller(i32 %i) {107; CHECK-LABEL: external_local_function_caller:108; CHECK:         bl external_local_function109; CHECK-NEXT:    nop110  %call = notail call signext i32 @external_local_function(i32 signext %i)111  ret i32 %call112}113 114declare dso_preemptable i32 @external_preemptable_function(i32 %i)115define dso_local i32 @external_preemptable_function_caller(i32 %i) {116; CHECK-LABEL: external_preemptable_function_caller:117; CHECK:         bl external_preemptable_function118; CHECK-NEXT:    nop119  %call = notail call signext i32 @external_preemptable_function(i32 signext %i)120  ret i32 %call121}122