1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3 2; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \ 3; RUN: -mattr=+aix-small-local-dynamic-tls -mtriple powerpc64-ibm-aix-xcoff < %s \ 4; RUN: | FileCheck %s --check-prefix=SMALL-LOCAL-DYNAMIC-SMALLCM64 5; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \ 6; RUN: -mattr=+aix-small-local-dynamic-tls -mtriple powerpc64-ibm-aix-xcoff --code-model=large \ 7; RUN: < %s | FileCheck %s \ 8; RUN: --check-prefix=SMALL-LOCAL-DYNAMIC-LARGECM64 9 10; Test disassembly of object. 11; RUN: llc -verify-machineinstrs -mcpu=pwr7 \ 12; RUN: -mtriple powerpc64-ibm-aix-xcoff -xcoff-traceback-table=false \ 13; RUN: --code-model=large -filetype=obj -o %t.o < %s 14; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefix=DIS %s 15 16@ElementIntTLSv1 = thread_local(localdynamic) global [8187 x i32] zeroinitializer, align 4 ; Within 32K 17@ElementIntTLS2 = thread_local(localdynamic) global [4000 x i32] zeroinitializer, align 4 18@ElementIntTLS3 = thread_local(localdynamic) global [4000 x i32] zeroinitializer, align 4 19@ElementIntTLS4 = thread_local(localdynamic) global [4000 x i32] zeroinitializer, align 4 20@ElementIntTLS5 = thread_local(localdynamic) global [4000 x i32] zeroinitializer, align 4 21@ElementIntTLSv2 = thread_local(localdynamic) global [9000 x i32] zeroinitializer, align 4 ; Beyond 32K 22 23@ElementLongTLS6 = external thread_local(localdynamic) global [60 x i64], align 8 24@ElementLongTLS2 = thread_local(localdynamic) global [3000 x i64] zeroinitializer, align 8 ; Within 32K 25@MyTLSGDVar = thread_local global [800 x i64] zeroinitializer, align 8 26@ElementLongTLS3 = thread_local(localdynamic) global [3000 x i64] zeroinitializer, align 8 27@ElementLongTLS4 = thread_local(localdynamic) global [3000 x i64] zeroinitializer, align 8 28@ElementLongTLS5 = thread_local(localdynamic) global [3000 x i64] zeroinitializer, align 8 29@ElementLongTLS = thread_local(localdynamic) local_unnamed_addr global [7800 x i64] zeroinitializer, align 8 ; Beyond 32K 30 31declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #1 32 33; All accesses use a "faster" local-dynamic sequence directly off the module handle. 34; Exercise PPCXCOFFObjectWriter::getRelocTypeAndSignSize/fixup_ppc_half16. 35define signext i32 @test1() { 36; SMALL-LOCAL-DYNAMIC-SMALLCM64-LABEL: test1: 37; SMALL-LOCAL-DYNAMIC-SMALLCM64: # %bb.0: # %entry 38; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: mflr r0 39; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stdu r1, -48(r1) 40; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r3, L..C0(r2) # target-flags(ppc-tlsldm) @"_$TLSML" 41; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r0, 64(r1) 42; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: bla .__tls_get_mod[PR] 43; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 1 44; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r5, 4 45; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r4, ElementIntTLSv1[TL]@ld(r3) 46; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 2 47; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, ElementIntTLSv1[TL]@ld+24(r3) 48; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, (ElementIntTLS4[TL]@ld+328)-65536(r3) 49; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r4, (ElementIntTLS2[TL]@ld+320)-65536(r3) 50; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 3 51; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r4, (ElementIntTLS3[TL]@ld+324)-65536(r3) 52; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 88 53; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r4, (ElementIntTLS5[TL]@ld+332)-65536(r3) 54; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 102 55; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: addi r1, r1, 48 56; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r0, 16(r1) 57; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: mtlr r0 58; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: blr 59; 60; SMALL-LOCAL-DYNAMIC-LARGECM64-LABEL: test1: 61; SMALL-LOCAL-DYNAMIC-LARGECM64: # %bb.0: # %entry 62; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: mflr r0 63; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stdu r1, -48(r1) 64; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addis r3, L..C0@u(r2) 65; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r0, 64(r1) 66; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r3, L..C0@l(r3) 67; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: bla .__tls_get_mod[PR] 68; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 1 69; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r5, 4 70; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r4, ElementIntTLSv1[TL]@ld(r3) 71; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 2 72; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, ElementIntTLSv1[TL]@ld+24(r3) 73; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, (ElementIntTLS4[TL]@ld+328)-65536(r3) 74; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r4, (ElementIntTLS2[TL]@ld+320)-65536(r3) 75; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 3 76; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r4, (ElementIntTLS3[TL]@ld+324)-65536(r3) 77; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 88 78; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r4, (ElementIntTLS5[TL]@ld+332)-65536(r3) 79; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 102 80; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addi r1, r1, 48 81; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r0, 16(r1) 82; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: mtlr r0 83; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: blr 84entry: 85 %tls1 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @ElementIntTLSv1) 86 store i32 1, ptr %tls1, align 4 87 %arrayidx1 = getelementptr inbounds [8187 x i32], ptr %tls1, i64 0, i64 6 88 store i32 4, ptr %arrayidx1, align 4 89 %tls2 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @ElementIntTLS2) 90 %arrayidx2 = getelementptr inbounds [4000 x i32], ptr %tls2, i64 0, i64 80 91 store i32 2, ptr %arrayidx2, align 4 92 %tls3 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @ElementIntTLS3) 93 %arrayidx3 = getelementptr inbounds [4000 x i32], ptr %tls3, i64 0, i64 81 94 store i32 3, ptr %arrayidx3, align 4 95 %tls4 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @ElementIntTLS4) 96 %arrayidx4 = getelementptr inbounds [4000 x i32], ptr %tls4, i64 0, i64 82 97 store i32 4, ptr %arrayidx4, align 4 98 %tls5 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @ElementIntTLS5) 99 %arrayidx5 = getelementptr inbounds [4000 x i32], ptr %tls5, i64 0, i64 83 100 store i32 88, ptr %arrayidx5, align 4 101 %load1 = load i32, ptr %tls1, align 4 102 %load2 = load i32, ptr %arrayidx1, align 4 103 %load3 = load i32, ptr %arrayidx2, align 4 104 %load4 = load i32, ptr %arrayidx3, align 4 105 %load5 = load i32, ptr %arrayidx4, align 4 106 %add = add i32 %load1, 88 107 %add6 = add i32 %add, %load2 108 %add8 = add i32 %add6, %load3 109 %add10 = add i32 %add8, %load4 110 %add12 = add i32 %add10, %load5 111 ret i32 %add12 112} 113 114; All accesses use a "faster" local-dynamic sequence directly off the module handle. 115; Exercise PPCXCOFFObjectWriter::getRelocTypeAndSignSize/fixup_ppc_half16ds. 116define i64 @test2() { 117; SMALL-LOCAL-DYNAMIC-SMALLCM64-LABEL: test2: 118; SMALL-LOCAL-DYNAMIC-SMALLCM64: # %bb.0: # %entry 119; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: mflr r0 120; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stdu r1, -48(r1) 121; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r3, L..C0(r2) # target-flags(ppc-tlsldm) @"_$TLSML" 122; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r0, 64(r1) 123; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: bla .__tls_get_mod[PR] 124; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: mr r6, r3 125; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 212 126; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 203 127; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r4, (ElementLongTLS2[TL]@ld+1200)-131072(r6) 128; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r4, L..C1(r2) # target-flags(ppc-tlsgd) @MyTLSGDVar 129; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r3, ElementLongTLS6[UL]@ld+424(r6) 130; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r3, L..C2(r2) # target-flags(ppc-tlsgdm) @MyTLSGDVar 131; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: bla .__tls_get_addr[PR] 132; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 44 133; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r4, 440(r3) 134; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 6 135; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 100 136; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r3, (ElementLongTLS3[TL]@ld+2000)-196608(r6) 137; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 882 138; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r4, (ElementLongTLS4[TL]@ld+6800)-196608(r6) 139; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r3, (ElementLongTLS5[TL]@ld+8400)-196608(r6) 140; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 1191 141; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: addi r1, r1, 48 142; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r0, 16(r1) 143; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: mtlr r0 144; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: blr 145; 146; SMALL-LOCAL-DYNAMIC-LARGECM64-LABEL: test2: 147; SMALL-LOCAL-DYNAMIC-LARGECM64: # %bb.0: # %entry 148; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: mflr r0 149; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stdu r1, -48(r1) 150; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addis r3, L..C0@u(r2) 151; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r0, 64(r1) 152; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r3, L..C0@l(r3) 153; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: bla .__tls_get_mod[PR] 154; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addis r4, L..C1@u(r2) 155; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: mr r6, r3 156; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 212 157; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r4, L..C1@l(r4) 158; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r3, ElementLongTLS6[UL]@ld+424(r6) 159; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 203 160; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r3, (ElementLongTLS2[TL]@ld+1200)-131072(r6) 161; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addis r3, L..C2@u(r2) 162; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r3, L..C2@l(r3) 163; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: bla .__tls_get_addr[PR] 164; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 44 165; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r4, 440(r3) 166; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 6 167; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 100 168; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r3, (ElementLongTLS3[TL]@ld+2000)-196608(r6) 169; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 882 170; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r4, (ElementLongTLS4[TL]@ld+6800)-196608(r6) 171; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r3, (ElementLongTLS5[TL]@ld+8400)-196608(r6) 172; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 1191 173; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addi r1, r1, 48 174; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r0, 16(r1) 175; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: mtlr r0 176; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: blr 177entry: 178 %tls1 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @ElementLongTLS6) 179 %arrayidx = getelementptr inbounds [60 x i64], ptr %tls1, i64 0, i64 53 180 store i64 212, ptr %arrayidx, align 8 181 %tls2 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @ElementLongTLS2) 182 %arrayidx1 = getelementptr inbounds [3000 x i64], ptr %tls2, i64 0, i64 150 183 store i64 203, ptr %arrayidx1, align 8 184 %tls3 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @MyTLSGDVar) 185 %arrayidx2 = getelementptr inbounds [800 x i64], ptr %tls3, i64 0, i64 55 186 store i64 44, ptr %arrayidx2, align 8 187 %tls4 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @ElementLongTLS3) 188 %arrayidx3 = getelementptr inbounds [3000 x i64], ptr %tls4, i64 0, i64 250 189 store i64 6, ptr %arrayidx3, align 8 190 %tls5 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @ElementLongTLS4) 191 %arrayidx4 = getelementptr inbounds [3000 x i64], ptr %tls5, i64 0, i64 850 192 store i64 100, ptr %arrayidx4, align 8 193 %tls6 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @ElementLongTLS5) 194 %arrayidx5 = getelementptr inbounds [3000 x i64], ptr %tls6, i64 0, i64 1050 195 store i64 882, ptr %arrayidx5, align 8 196 %load1 = load i64, ptr %arrayidx1, align 8 197 %load2 = load i64, ptr %arrayidx3, align 8 198 %load3 = load i64, ptr %arrayidx4, align 8 199 %add = add i64 %load1, 882 200 %add9 = add i64 %add, %load2 201 %add11 = add i64 %add9, %load3 202 ret i64 %add11 203} 204 205; Example of one access using the regular local-dynamic access from the TOC. 206define signext i32 @test3() { 207; SMALL-LOCAL-DYNAMIC-SMALLCM64-LABEL: test3: 208; SMALL-LOCAL-DYNAMIC-SMALLCM64: # %bb.0: # %entry 209; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: mflr r0 210; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stdu r1, -48(r1) 211; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r3, L..C0(r2) # target-flags(ppc-tlsldm) @"_$TLSML" 212; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: std r0, 64(r1) 213; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r6, 3 214; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: bla .__tls_get_mod[PR] 215; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r5, 2 216; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r4, 1 217; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r6, (ElementIntTLS3[TL]@ld+324)-65536(r3) 218; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r6, L..C3(r2) # target-flags(ppc-tlsld) @ElementIntTLSv2 219; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, (ElementIntTLS2[TL]@ld+320)-65536(r3) 220; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r5, 88 221; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, (ElementIntTLS5[TL]@ld+332)-65536(r3) 222; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r5, 4 223; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, (ElementIntTLS4[TL]@ld+328)-65536(r3) 224; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stwux r4, r3, r6 225; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: stw r5, 24(r3) 226; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: li r3, 102 227; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: addi r1, r1, 48 228; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: ld r0, 16(r1) 229; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: mtlr r0 230; SMALL-LOCAL-DYNAMIC-SMALLCM64-NEXT: blr 231; 232; SMALL-LOCAL-DYNAMIC-LARGECM64-LABEL: test3: 233; SMALL-LOCAL-DYNAMIC-LARGECM64: # %bb.0: # %entry 234; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: mflr r0 235; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stdu r1, -48(r1) 236; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addis r3, L..C0@u(r2) 237; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: std r0, 64(r1) 238; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addis r6, L..C3@u(r2) 239; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r3, L..C0@l(r3) 240; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r6, L..C3@l(r6) 241; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: bla .__tls_get_mod[PR] 242; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r5, 2 243; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r4, 1 244; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, (ElementIntTLS2[TL]@ld+320)-65536(r3) 245; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r5, 3 246; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, (ElementIntTLS3[TL]@ld+324)-65536(r3) 247; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r5, 88 248; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, (ElementIntTLS5[TL]@ld+332)-65536(r3) 249; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r5, 4 250; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, (ElementIntTLS4[TL]@ld+328)-65536(r3) 251; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stwux r4, r3, r6 252; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: stw r5, 24(r3) 253; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: li r3, 102 254; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: addi r1, r1, 48 255; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: ld r0, 16(r1) 256; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: mtlr r0 257; SMALL-LOCAL-DYNAMIC-LARGECM64-NEXT: blr 258entry: 259 %tls1 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @ElementIntTLSv2) 260 store i32 1, ptr %tls1, align 4 261 %arrayidx1 = getelementptr inbounds [9000 x i32], ptr %tls1, i64 0, i64 6 262 store i32 4, ptr %arrayidx1, align 4 263 %tls2 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @ElementIntTLS2) 264 %arrayidx2 = getelementptr inbounds [4000 x i32], ptr %tls2, i64 0, i64 80 265 store i32 2, ptr %arrayidx2, align 4 266 %tls3 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @ElementIntTLS3) 267 %arrayidx3 = getelementptr inbounds [4000 x i32], ptr %tls3, i64 0, i64 81 268 store i32 3, ptr %arrayidx3, align 4 269 %tls4 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @ElementIntTLS4) 270 %arrayidx4 = getelementptr inbounds [4000 x i32], ptr %tls4, i64 0, i64 82 271 store i32 4, ptr %arrayidx4, align 4 272 %tls5 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @ElementIntTLS5) 273 %arrayidx5 = getelementptr inbounds [4000 x i32], ptr %tls5, i64 0, i64 83 274 store i32 88, ptr %arrayidx5, align 4 275 %load1 = load i32, ptr %tls1, align 4 276 %load2 = load i32, ptr %arrayidx1, align 4 277 %load3 = load i32, ptr %arrayidx2, align 4 278 %load4 = load i32, ptr %arrayidx3, align 4 279 %load5 = load i32, ptr %arrayidx4, align 4 280 %add = add i32 %load1, 88 281 %add9 = add i32 %add, %load2 282 %add11 = add i32 %add9, %load3 283 %add13 = add i32 %add11, %load4 284 %add15 = add i32 %add13, %load5 285 ret i32 %add15 286} 287 288; DIS: file format aix5coff64-rs6000 289; DIS: Disassembly of section .text: 290; DIS: 0000000000000000 (idx: [[#NFA+9]]) .test1: 291; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} mflr 0 292; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stdu 1, -48(1) 293; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 3, 2, 0 294; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+23]]) _$TLSML[TC] 295; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 6, 2, 0 296; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+25]]) ElementIntTLSv1[TE] 297; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} std 0, 64(1) 298; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 7, 2, 0 299; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+27]]) ElementIntTLS3[TE] 300; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 3, 0(3) 301; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+23]]) _$TLSML[TC] 302; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 8, 2, 0 303; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+29]]) ElementIntTLS4[TE] 304; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 9, 2, 0 305; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+31]]) ElementIntTLS5[TE] 306; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 7, 16(7) 307; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+27]]) ElementIntTLS3[TE] 308; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 8, 24(8) 309; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+29]]) ElementIntTLS4[TE] 310; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 9, 32(9) 311; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+31]]) ElementIntTLS5[TE] 312; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} bla 0x0 313; DIS-NEXT: {{0*}}[[#ADDR]]: R_RBA (idx: [[#NFA+1]]) .__tls_get_mod[PR] 314; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 5, 8(6) 315; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+25]]) ElementIntTLSv1[TE] 316; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 6, 2, 0 317; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+33]]) ElementIntTLS2[TE] 318; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 1 319; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 6, 40(6) 320; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+33]]) ElementIntTLS2[TE] 321; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 7, 3, 7 322; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 8, 3, 8 323; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 9, 3, 9 324; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 6, 3, 6 325; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stwux 4, 3, 5 326; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 2 327; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stw 4, 320(6) 328; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 3 329; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stw 4, 324(7) 330; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 4 331; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stw 4, 24(3) 332; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 3, 88 333; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stw 4, 328(8) 334; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stw 3, 332(9) 335; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 3, 102 336; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addi 1, 1, 48 337; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 0, 16(1) 338; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} mtlr 0 339; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} blr 340 341; DIS: 0000000000000090 (idx: [[#NFA+11]]) .test2: 342; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} mflr 0 343; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stdu 1, -48(1) 344; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 3, 2, 0 345; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+23]]) _$TLSML[TC] 346; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} std 0, 64(1) 347; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 7, 2, 0 348; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+35]]) ElementLongTLS6[TE] 349; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 3, 0(3) 350; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+23]]) _$TLSML[TC] 351; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} bla 0x0 352; DIS-NEXT: {{0*}}[[#ADDR]]: R_RBA (idx: [[#NFA+1]]) .__tls_get_mod[PR] 353; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 212 354; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} mr 6, 3 355; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 3, 48(7) 356; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+35]]) ElementLongTLS6[TE] 357; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 3, 6, 3 358; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} std 4, 424(3) 359; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 3, 2, 0 360; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+37]]) ElementLongTLS2[TE] 361; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 203 362; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 3, 56(3) 363; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+37]]) ElementLongTLS2[TE] 364; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 3, 6, 3 365; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} std 4, 1200(3) 366; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 3, 2, 0 367; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+39]]) .MyTLSGDVar[TE] 368; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 4, 2, 0 369; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+41]]) MyTLSGDVar[TE] 370; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 3, 64(3) 371; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+39]]) .MyTLSGDVar[TE] 372; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 4, 72(4) 373; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+41]]) MyTLSGDVar[TE] 374; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} bla 0x0 375; DIS-NEXT: {{0*}}[[#ADDR]]: R_RBA (idx: [[#NFA+3]]) .__tls_get_addr[PR] 376; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 44 377; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} std 4, 440(3) 378; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 3, 2, 0 379; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+43]]) ElementLongTLS3[TE] 380; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 6 381; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 3, 80(3) 382; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+43]]) ElementLongTLS3[TE] 383; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 3, 6, 3 384; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} std 4, 2000(3) 385; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 3, 2, 0 386; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+45]]) ElementLongTLS4[TE] 387; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 100 388; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 3, 88(3) 389; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+45]]) ElementLongTLS4[TE] 390; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 3, 6, 3 391; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} std 4, 6800(3) 392; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 3, 2, 0 393; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+47]]) ElementLongTLS5[TE] 394; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 882 395; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 3, 96(3) 396; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+47]]) ElementLongTLS5[TE] 397; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 3, 6, 3 398; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} std 4, 8400(3) 399; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 3, 1191 400; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addi 1, 1, 48 401; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 0, 16(1) 402; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} mtlr 0 403; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} blr 404 405; DIS: 0000000000000140 (idx: [[#NFA+13]]) .test3: 406; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} mflr 0 407; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stdu 1, -48(1) 408; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 3, 2, 0 409; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+23]]) _$TLSML[TC] 410; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 6, 2, 0 411; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+49]]) ElementIntTLSv2[TE] 412; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} std 0, 64(1) 413; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 7, 2, 0 414; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+27]]) ElementIntTLS3[TE] 415; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 3, 0(3) 416; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+23]]) _$TLSML[TC] 417; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 8, 2, 0 418; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+29]]) ElementIntTLS4[TE] 419; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 9, 2, 0 420; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+31]]) ElementIntTLS5[TE] 421; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 7, 16(7) 422; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+27]]) ElementIntTLS3[TE] 423; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 8, 24(8) 424; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+29]]) ElementIntTLS4[TE] 425; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 9, 32(9) 426; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+31]]) ElementIntTLS5[TE] 427; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} bla 0x0 428; DIS-NEXT: {{0*}}[[#ADDR]]: R_RBA (idx: [[#NFA+1]]) .__tls_get_mod[PR] 429; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 5, 104(6) 430; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+49]]) ElementIntTLSv2[TE] 431; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addis 6, 2, 0 432; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCU (idx: [[#NFA+33]]) ElementIntTLS2[TE] 433; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 1 434; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 6, 40(6) 435; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOCL (idx: [[#NFA+33]]) ElementIntTLS2[TE] 436; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 7, 3, 7 437; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 8, 3, 8 438; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 9, 3, 9 439; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} add 6, 3, 6 440; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stwux 4, 3, 5 441; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 2 442; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stw 4, 320(6) 443; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 3 444; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stw 4, 324(7) 445; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 4, 4 446; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stw 4, 24(3) 447; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 3, 88 448; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stw 4, 328(8) 449; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} stw 3, 332(9) 450; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} li 3, 102 451; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} addi 1, 1, 48 452; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} ld 0, 16(1) 453; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} mtlr 0 454; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} blr 455 456; DIS: Disassembly of section .data: 457 458; DIS: 00000000000001d0 (idx: 17) test1[DS]: 459; DIS-NEXT: 1d0: 00 00 00 00 460; DIS-NEXT: 00000000000001d0: R_POS (idx: [[#NFA+9]]) .test1 461; DIS-NEXT: 1d4: 00 00 00 00 462; DIS-NEXT: 1d8: 00 00 00 00 463; DIS-NEXT: 00000000000001d8: R_POS (idx: [[#NFA+21]]) TOC[TC0] 464; DIS-NEXT: 1dc: 00 00 02 18 465 466; DIS: 00000000000001e8 (idx: 19) test2[DS]: 467; DIS-NEXT: 1e8: 00 00 00 00 468; DIS-NEXT: 00000000000001e8: R_POS (idx: [[#NFA+11]]) .test2 469; DIS-NEXT: 1ec: 00 00 00 90 470; DIS-NEXT: 1f0: 00 00 00 00 471; DIS-NEXT: 00000000000001f0: R_POS (idx: [[#NFA+21]]) TOC[TC0] 472; DIS-NEXT: 1f4: 00 00 02 18 473 474; DIS: 0000000000000200 (idx: 21) test3[DS]: 475; DIS-NEXT: 200: 00 00 00 00 476; DIS-NEXT: 0000000000000200: R_POS (idx: [[#NFA+13]]) .test3 477; DIS-NEXT: 204: 00 00 01 40 478; DIS-NEXT: 208: 00 00 00 00 479; DIS-NEXT: 0000000000000208: R_POS (idx: [[#NFA+21]]) TOC[TC0] 480; DIS-NEXT: 20c: 00 00 02 18 481 482; DIS: 0000000000000218 (idx: 25) _$TLSML[TC]: 483; DIS-NEXT: 218: 00 00 00 00 484; DIS-NEXT: 0000000000000218: R_TLSML (idx: [[#NFA+23]]) _$TLSML[TC] 485; DIS-NEXT: 21c: 00 00 00 00 486 487; DIS: 0000000000000220 (idx: 27) ElementIntTLSv1[TE]: 488; DIS-NEXT: 220: 00 00 00 00 489; DIS-NEXT: 0000000000000220: R_TLS_LD (idx: [[#NFA+51]]) ElementIntTLSv1[TL] 490; DIS-NEXT: 224: 00 00 00 00 491 492; DIS: 0000000000000228 (idx: 29) ElementIntTLS3[TE]: 493; DIS-NEXT: 228: 00 00 00 00 494; DIS-NEXT: 0000000000000228: R_TLS_LD (idx: [[#NFA+55]]) ElementIntTLS3[TL] 495; DIS-NEXT: 22c: 00 00 be 6c 496 497; DIS: 0000000000000230 (idx: 31) ElementIntTLS4[TE]: 498; DIS-NEXT: 230: 00 00 00 00 499; DIS-NEXT: 0000000000000230: R_TLS_LD (idx: [[#NFA+57]]) ElementIntTLS4[TL] 500; DIS-NEXT: 234: 00 00 fc ec 501 502; DIS: 0000000000000238 (idx: 33) ElementIntTLS5[TE]: 503; DIS-NEXT: 238: 00 00 00 00 504; DIS-NEXT: 0000000000000238: R_TLS_LD (idx: [[#NFA+59]]) ElementIntTLS5[TL] 505; DIS-NEXT: 23c: 00 01 3b 6c 506 507; DIS: 0000000000000240 (idx: 35) ElementIntTLS2[TE]: 508; DIS-NEXT: 240: 00 00 00 00 509; DIS-NEXT: 0000000000000240: R_TLS_LD (idx: [[#NFA+53]]) ElementIntTLS2[TL] 510; DIS-NEXT: 244: 00 00 7f ec 511 512; DIS: 0000000000000248 (idx: 37) ElementLongTLS6[TE]: 513; DIS-NEXT: 248: 00 00 00 00 514; DIS-NEXT: 0000000000000248: R_TLS_LD (idx: [[#NFA+5]]) ElementLongTLS6[UL] 515; DIS-NEXT: 24c: 00 00 00 00 516 517; DIS: 0000000000000250 (idx: 39) ElementLongTLS2[TE]: 518; DIS-NEXT: 250: 00 00 00 00 519; DIS-NEXT: 0000000000000250: R_TLS_LD (idx: [[#NFA+63]]) ElementLongTLS2[TL] 520; DIS-NEXT: 254: 00 02 06 90 521 522; DIS: 0000000000000258 (idx: 41) .MyTLSGDVar[TE]: 523; DIS-NEXT: 258: 00 00 00 00 524; DIS-NEXT: 0000000000000258: R_TLSM (idx: [[#NFA+65]]) MyTLSGDVar[TL] 525; DIS-NEXT: 25c: 00 00 00 00 526 527; DIS: 0000000000000260 (idx: 43) MyTLSGDVar[TE]: 528; DIS-NEXT: 260: 00 00 00 00 529; DIS-NEXT: 0000000000000260: R_TLS (idx: [[#NFA+65]]) MyTLSGDVar[TL] 530; DIS-NEXT: 264: 00 02 64 50 531 532; DIS: 0000000000000268 (idx: 45) ElementLongTLS3[TE]: 533; DIS-NEXT: 268: 00 00 00 00 534; DIS-NEXT: 0000000000000268: R_TLS_LD (idx: [[#NFA+67]]) ElementLongTLS3[TL] 535; DIS-NEXT: 26c: 00 02 7d 50 536 537; DIS: 0000000000000270 (idx: 47) ElementLongTLS4[TE]: 538; DIS-NEXT: 270: 00 00 00 00 539; DIS-NEXT: 0000000000000270: R_TLS_LD (idx: [[#NFA+69]]) ElementLongTLS4[TL] 540; DIS-NEXT: 274: 00 02 db 10 541 542; DIS: 0000000000000278 (idx: 49) ElementLongTLS5[TE]: 543; DIS-NEXT: 278: 00 00 00 00 544; DIS-NEXT: 0000000000000278: R_TLS_LD (idx: [[#NFA+71]]) ElementLongTLS5[TL] 545; DIS-NEXT: 27c: 00 03 38 d0 546 547; DIS: 0000000000000280 (idx: 51) ElementIntTLSv2[TE]: 548; DIS-NEXT: 280: 00 00 00 00 549; DIS-NEXT: 0000000000000280: R_TLS_LD (idx: [[#NFA+61]]) ElementIntTLSv2[TL] 550; DIS-NEXT: 284: 00 01 79 ec 551 552; DIS: Disassembly of section .tdata: 553; DIS: 0000000000000000 (idx: [[#NFA+51]]) ElementIntTLSv1[TL]: 554; DIS: 0000000000007fec (idx: [[#NFA+53]]) ElementIntTLS2[TL]: 555; DIS: 000000000000be6c (idx: [[#NFA+55]]) ElementIntTLS3[TL]: 556; DIS: 000000000000fcec (idx: [[#NFA+57]]) ElementIntTLS4[TL]: 557; DIS: 0000000000013b6c (idx: [[#NFA+59]]) ElementIntTLS5[TL]: 558; DIS: 00000000000179ec (idx: [[#NFA+61]]) ElementIntTLSv2[TL]: 559; DIS: 0000000000020690 (idx: [[#NFA+63]]) ElementLongTLS2[TL]: 560; DIS: 0000000000026450 (idx: [[#NFA+65]]) MyTLSGDVar[TL]: 561; DIS: 0000000000027d50 (idx: [[#NFA+67]]) ElementLongTLS3[TL]: 562; DIS: 000000000002db10 (idx: [[#NFA+69]]) ElementLongTLS4[TL]: 563; DIS: 00000000000338d0 (idx: [[#NFA+71]]) ElementLongTLS5[TL]: 564; DIS: 0000000000039690 (idx: [[#NFA+73]]) ElementLongTLS[TL]: 565