brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.3 KiB · c938b94 Raw
171 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 32; RUN: llc  -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \3; RUN:      -mtriple powerpc64-ibm-aix-xcoff -mattr=+aix-small-local-exec-tls < %s \4; RUN:      | FileCheck %s --check-prefix=SMALL-LOCAL-EXEC-SMALLCM645; RUN: llc  -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \6; RUN:      -mtriple powerpc64-ibm-aix-xcoff --code-model=large \7; RUN:      -mattr=+aix-small-local-exec-tls < %s | FileCheck %s \8; RUN:      --check-prefix=SMALL-LOCAL-EXEC-LARGECM649 10@ThreadLocalVarInit = thread_local(localexec) global i8 1, align 111@VarInit = local_unnamed_addr global i8 87, align 112@IThreadLocalVarInit = internal thread_local(localexec) global i8 1, align 113declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #114@c = thread_local(localexec) global [87 x i8] zeroinitializer, align 115 16define nonnull ptr @AddrTest1() local_unnamed_addr #0 {17; SMALL-LOCAL-EXEC-SMALLCM64-LABEL: AddrTest1:18; SMALL-LOCAL-EXEC-SMALLCM64:       # %bb.0: # %entry19; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    la r3, c[TL]@le+1(r13)20; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    blr21;22; SMALL-LOCAL-EXEC-LARGECM64-LABEL: AddrTest1:23; SMALL-LOCAL-EXEC-LARGECM64:       # %bb.0: # %entry24; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    la r3, c[TL]@le+1(r13)25; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    blr26entry:27  %0 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @c)28  %arrayidx = getelementptr inbounds [87 x i8], ptr %0, i64 0, i64 129  ret ptr %arrayidx30}31 32define void @storeITLInit(i8 noundef zeroext %x) {33; SMALL-LOCAL-EXEC-SMALLCM64-LABEL: storeITLInit:34; SMALL-LOCAL-EXEC-SMALLCM64:       # %bb.0: # %entry35; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    stb r3, IThreadLocalVarInit[TL]@le(r13)36; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    blr37;38; SMALL-LOCAL-EXEC-LARGECM64-LABEL: storeITLInit:39; SMALL-LOCAL-EXEC-LARGECM64:       # %bb.0: # %entry40; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    stb r3, IThreadLocalVarInit[TL]@le(r13)41; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    blr42entry:43  %0 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @IThreadLocalVarInit)44  store i8 %x, ptr %0, align 145  ret void46}47 48define void @storeTLInit(i8 noundef zeroext %x) {49; SMALL-LOCAL-EXEC-SMALLCM64-LABEL: storeTLInit:50; SMALL-LOCAL-EXEC-SMALLCM64:       # %bb.0: # %entry51; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    stb r3, ThreadLocalVarInit[TL]@le(r13)52; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    blr53;54; SMALL-LOCAL-EXEC-LARGECM64-LABEL: storeTLInit:55; SMALL-LOCAL-EXEC-LARGECM64:       # %bb.0: # %entry56; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    stb r3, ThreadLocalVarInit[TL]@le(r13)57; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    blr58entry:59  %0 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @ThreadLocalVarInit)60  store i8 %x, ptr %0, align 161  ret void62}63 64define zeroext i8 @loadITLInit() {65; SMALL-LOCAL-EXEC-SMALLCM64-LABEL: loadITLInit:66; SMALL-LOCAL-EXEC-SMALLCM64:       # %bb.0: # %entry67; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    lbz r3, IThreadLocalVarInit[TL]@le(r13)68; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    blr69;70; SMALL-LOCAL-EXEC-LARGECM64-LABEL: loadITLInit:71; SMALL-LOCAL-EXEC-LARGECM64:       # %bb.0: # %entry72; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    lbz r3, IThreadLocalVarInit[TL]@le(r13)73; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    blr74entry:75  %0 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @IThreadLocalVarInit)76  %1 = load i8, ptr %0, align 177  ret i8 %178}79 80define zeroext i8 @loadITLInit2() {81; SMALL-LOCAL-EXEC-SMALLCM64-LABEL: loadITLInit2:82; SMALL-LOCAL-EXEC-SMALLCM64:       # %bb.0: # %entry83; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    ld r4, L..C0(r2) # @VarInit84; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    lbz r3, IThreadLocalVarInit[TL]@le(r13)85; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    lbz r4, 0(r4)86; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    add r3, r4, r387; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    clrldi r3, r3, 5688; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    blr89;90; SMALL-LOCAL-EXEC-LARGECM64-LABEL: loadITLInit2:91; SMALL-LOCAL-EXEC-LARGECM64:       # %bb.0: # %entry92; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    addis r4, L..C0@u(r2)93; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    lbz r3, IThreadLocalVarInit[TL]@le(r13)94; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    ld r4, L..C0@l(r4)95; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    lbz r4, 0(r4)96; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    add r3, r4, r397; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    clrldi r3, r3, 5698; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    blr99entry:100  %0 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @IThreadLocalVarInit)101  %1 = load i8, ptr %0, align 1102  %2 = load i8, ptr @VarInit, align 1103  %add = add i8 %2, %1104  ret i8 %add105}106 107define zeroext i8 @loadTLInit() {108; SMALL-LOCAL-EXEC-SMALLCM64-LABEL: loadTLInit:109; SMALL-LOCAL-EXEC-SMALLCM64:       # %bb.0: # %entry110; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    lbz r3, ThreadLocalVarInit[TL]@le(r13)111; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    blr112;113; SMALL-LOCAL-EXEC-LARGECM64-LABEL: loadTLInit:114; SMALL-LOCAL-EXEC-LARGECM64:       # %bb.0: # %entry115; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    lbz r3, ThreadLocalVarInit[TL]@le(r13)116; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    blr117entry:118  %0 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @ThreadLocalVarInit)119  %1 = load i8, ptr %0, align 1120  ret i8 %1121}122 123define zeroext i8 @loadTLInit2() {124; SMALL-LOCAL-EXEC-SMALLCM64-LABEL: loadTLInit2:125; SMALL-LOCAL-EXEC-SMALLCM64:       # %bb.0: # %entry126; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    ld r4, L..C0(r2) # @VarInit127; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    lbz r3, ThreadLocalVarInit[TL]@le(r13)128; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    lbz r4, 0(r4)129; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    add r3, r4, r3130; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    clrldi r3, r3, 56131; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    blr132;133; SMALL-LOCAL-EXEC-LARGECM64-LABEL: loadTLInit2:134; SMALL-LOCAL-EXEC-LARGECM64:       # %bb.0: # %entry135; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    addis r4, L..C0@u(r2)136; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    lbz r3, ThreadLocalVarInit[TL]@le(r13)137; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    ld r4, L..C0@l(r4)138; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    lbz r4, 0(r4)139; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    add r3, r4, r3140; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    clrldi r3, r3, 56141; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    blr142entry:143  %0 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @ThreadLocalVarInit)144  %1 = load i8, ptr %0, align 1145  %2 = load i8, ptr @VarInit, align 1146  %add = add i8 %2, %1147  ret i8 %add148}149 150define void @loadStore1(i8 noundef zeroext %x) {151; SMALL-LOCAL-EXEC-SMALLCM64-LABEL: loadStore1:152; SMALL-LOCAL-EXEC-SMALLCM64:       # %bb.0: # %entry153; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    lbz r3, IThreadLocalVarInit[TL]@le(r13)154; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    addi r3, r3, 9155; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    stb r3, IThreadLocalVarInit[TL]@le(r13)156; SMALL-LOCAL-EXEC-SMALLCM64-NEXT:    blr157;158; SMALL-LOCAL-EXEC-LARGECM64-LABEL: loadStore1:159; SMALL-LOCAL-EXEC-LARGECM64:       # %bb.0: # %entry160; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    lbz r3, IThreadLocalVarInit[TL]@le(r13)161; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    addi r3, r3, 9162; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    stb r3, IThreadLocalVarInit[TL]@le(r13)163; SMALL-LOCAL-EXEC-LARGECM64-NEXT:    blr164entry:165  %0 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @IThreadLocalVarInit)166  %1 = load i8, ptr %0, align 1167  %add = add i8 %1, 9168  store i8 %add, ptr %0, align 1169  ret void170}171