350 lines · plain
1; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \2; RUN: -xcoff-traceback-table=false --code-model=large -filetype=obj -o %t.o < %s3; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck -D#NFA=2 --check-prefix=RELOC %s4; RUN: llvm-readobj --syms %t.o | FileCheck -D#NFA=2 --check-prefix=SYM %s5; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefix=DIS %s6 7@ThreadLocalVarInit = thread_local(localdynamic) global i64 1, align 88@IThreadLocalVarUninit = internal thread_local(localdynamic) global i64 0, align 89@IThreadLocalVarUninit2 = internal thread_local(localdynamic) global i64 0, align 810declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)11 12define void @storeITLUninit(i64 noundef %x) {13entry:14 %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @IThreadLocalVarUninit)15 store i64 %x, ptr %0, align 816 ret void17}18 19define i64 @loadTLInit() {20entry:21 %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @ThreadLocalVarInit)22 %1 = load i64, ptr %0, align 823 ret i64 %124}25 26define signext i64 @loadTLUninit() {27entry:28 %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @IThreadLocalVarUninit)29 store i64 1, ptr %0, align 830 %1 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @IThreadLocalVarUninit2)31 %2 = load i64, ptr %1, align 832 %add = add nsw i64 %2, 133 ret i64 %add34}35 36; RELOC: File: {{.*}}aix-tls-ld-xcoff-reloc-large.ll.tmp.o37; RELOC-NEXT: Format: aix5coff64-rs600038; RELOC-NEXT: Arch: powerpc6439; RELOC-NEXT: AddressSize: 64bit40; RELOC-NEXT: Relocations [41; RELOC: Virtual Address: 0xE42; RELOC-NEXT: Symbol: _$TLSML ([[#NFA+19]])43; RELOC-NEXT: IsSigned: No44; RELOC-NEXT: FixupBitValue: 045; RELOC-NEXT: Length: 1646; RELOC-NEXT: Type: R_TOCU (0x30)47; RELOC-NEXT: }48; RELOC: Virtual Address: 0x1249; RELOC-NEXT: Symbol: IThreadLocalVarUninit ([[#NFA+21]])50; RELOC-NEXT: IsSigned: No51; RELOC-NEXT: FixupBitValue: 052; RELOC-NEXT: Length: 1653; RELOC-NEXT: Type: R_TOCU (0x30)54; RELOC-NEXT: }55; RELOC: Virtual Address: 0x1A56; RELOC-NEXT: Symbol: _$TLSML ([[#NFA+19]])57; RELOC-NEXT: IsSigned: No58; RELOC-NEXT: FixupBitValue: 059; RELOC-NEXT: Length: 1660; RELOC-NEXT: Type: R_TOCL (0x31)61; RELOC-NEXT: }62; RELOC: Virtual Address: 0x1C63; RELOC-NEXT: Symbol: .__tls_get_mod ([[#NFA+1]])64; RELOC-NEXT: IsSigned: No65; RELOC-NEXT: FixupBitValue: 066; RELOC-NEXT: Length: 2667; RELOC-NEXT: Type: R_RBA (0x18)68; RELOC-NEXT: }69; RELOC: Virtual Address: 0x2270; RELOC-NEXT: Symbol: IThreadLocalVarUninit ([[#NFA+21]])71; RELOC-NEXT: IsSigned: No72; RELOC-NEXT: FixupBitValue: 073; RELOC-NEXT: Length: 1674; RELOC-NEXT: Type: R_TOCL (0x31)75; RELOC-NEXT: }76; RELOC: Virtual Address: 0x4A77; RELOC-NEXT: Symbol: _$TLSML ([[#NFA+19]])78; RELOC-NEXT: IsSigned: No79; RELOC-NEXT: FixupBitValue: 080; RELOC-NEXT: Length: 1681; RELOC-NEXT: Type: R_TOCU (0x30)82; RELOC-NEXT: }83; RELOC: Virtual Address: 0x4E84; RELOC-NEXT: Symbol: ThreadLocalVarInit ([[#NFA+23]])85; RELOC-NEXT: IsSigned: No86; RELOC-NEXT: FixupBitValue: 087; RELOC-NEXT: Length: 1688; RELOC-NEXT: Type: R_TOCU (0x30)89; RELOC-NEXT: }90; RELOC: Virtual Address: 0x5691; RELOC-NEXT: Symbol: _$TLSML ([[#NFA+19]])92; RELOC-NEXT: IsSigned: No93; RELOC-NEXT: FixupBitValue: 094; RELOC-NEXT: Length: 1695; RELOC-NEXT: Type: R_TOCL (0x31)96; RELOC-NEXT: }97; RELOC: Virtual Address: 0x5898; RELOC-NEXT: Symbol: .__tls_get_mod ([[#NFA+1]])99; RELOC-NEXT: IsSigned: No100; RELOC-NEXT: FixupBitValue: 0101; RELOC-NEXT: Length: 26102; RELOC-NEXT: Type: R_RBA (0x18)103; RELOC-NEXT: }104; RELOC: Virtual Address: 0x5E105; RELOC-NEXT: Symbol: ThreadLocalVarInit ([[#NFA+23]])106; RELOC-NEXT: IsSigned: No107; RELOC-NEXT: FixupBitValue: 0108; RELOC-NEXT: Length: 16109; RELOC-NEXT: Type: R_TOCL (0x31)110; RELOC-NEXT: }111; RELOC: Virtual Address: 0x8A112; RELOC-NEXT: Symbol: _$TLSML ([[#NFA+19]])113; RELOC-NEXT: IsSigned: No114; RELOC-NEXT: FixupBitValue: 0115; RELOC-NEXT: Length: 16116; RELOC-NEXT: Type: R_TOCU (0x30)117; RELOC-NEXT: }118; RELOC: Virtual Address: 0x8E119; RELOC-NEXT: Symbol: IThreadLocalVarUninit ([[#NFA+21]])120; RELOC-NEXT: IsSigned: No121; RELOC-NEXT: FixupBitValue: 0122; RELOC-NEXT: Length: 16123; RELOC-NEXT: Type: R_TOCU (0x30)124; RELOC-NEXT: }125; RELOC: Virtual Address: 0x96126; RELOC-NEXT: Symbol: _$TLSML ([[#NFA+19]])127; RELOC-NEXT: IsSigned: No128; RELOC-NEXT: FixupBitValue: 0129; RELOC-NEXT: Length: 16130; RELOC-NEXT: Type: R_TOCL (0x31)131; RELOC-NEXT: }132; RELOC: Virtual Address: 0x98133; RELOC-NEXT: Symbol: .__tls_get_mod (3)134; RELOC-NEXT: IsSigned: No135; RELOC-NEXT: FixupBitValue: 0136; RELOC-NEXT: Length: 26137; RELOC-NEXT: Type: R_RBA (0x18)138; RELOC-NEXT: }139; RELOC: Virtual Address: 0x9E140; RELOC-NEXT: Symbol: IThreadLocalVarUninit ([[#NFA+21]])141; RELOC-NEXT: IsSigned: No142; RELOC-NEXT: FixupBitValue: 0143; RELOC-NEXT: Length: 16144; RELOC-NEXT: Type: R_TOCL (0x31)145; RELOC-NEXT: }146; RELOC: Virtual Address: 0xAA147; RELOC-NEXT: Symbol: IThreadLocalVarUninit2 ([[#NFA+25]])148; RELOC-NEXT: IsSigned: No149; RELOC-NEXT: FixupBitValue: 0150; RELOC-NEXT: Length: 16151; RELOC-NEXT: Type: R_TOCU (0x30)152; RELOC-NEXT: }153; RELOC: Virtual Address: 0xAE154; RELOC-NEXT: Symbol: IThreadLocalVarUninit2 ([[#NFA+25]])155; RELOC-NEXT: IsSigned: No156; RELOC-NEXT: FixupBitValue: 0157; RELOC-NEXT: Length: 16158; RELOC-NEXT: Type: R_TOCL (0x31)159; RELOC-NEXT: }160; RELOC: Virtual Address: 0x110161; RELOC-NEXT: Symbol: _$TLSML ([[#NFA+19]])162; RELOC-NEXT: IsSigned: No163; RELOC-NEXT: FixupBitValue: 0164; RELOC-NEXT: Length: 64165; RELOC-NEXT: Type: R_TLSML (0x25)166; RELOC-NEXT: }167; RELOC: Virtual Address: 0x118168; RELOC-NEXT: Symbol: IThreadLocalVarUninit ([[#NFA+29]])169; RELOC-NEXT: IsSigned: No170; RELOC-NEXT: FixupBitValue: 0171; RELOC-NEXT: Length: 64172; RELOC-NEXT: Type: R_TLS_LD (0x22)173; RELOC-NEXT: }174; RELOC: Virtual Address: 0x120175; RELOC-NEXT: Symbol: ThreadLocalVarInit ([[#NFA+27]])176; RELOC-NEXT: IsSigned: No177; RELOC-NEXT: FixupBitValue: 0178; RELOC-NEXT: Length: 64179; RELOC-NEXT: Type: R_TLS_LD (0x22)180; RELOC-NEXT: }181; RELOC: Virtual Address: 0x128182; RELOC-NEXT: Symbol: IThreadLocalVarUninit2 ([[#NFA+31]])183; RELOC-NEXT: IsSigned: No184; RELOC-NEXT: FixupBitValue: 0185; RELOC-NEXT: Length: 64186; RELOC-NEXT: Type: R_TLS_LD (0x22)187; RELOC-NEXT: }188 189; SYM: File: {{.*}}aix-tls-ld-xcoff-reloc-large.ll.tmp.o190; SYM-NEXT: Format: aix5coff64-rs6000191; SYM-NEXT: Arch: powerpc64192; SYM-NEXT: AddressSize: 64bit193; SYM-NEXT: Symbols [194; SYM: Index: [[#NFA+19]]195; SYM-NEXT: Name: _$TLSML196; SYM-NEXT: Value (RelocatableAddress): 0x110197; SYM-NEXT: Section: .data198; SYM-NEXT: Type: 0x0199; SYM-NEXT: StorageClass: C_HIDEXT (0x6B)200; SYM-NEXT: NumberOfAuxEntries: 1201; SYM-NEXT: CSECT Auxiliary Entry {202; SYM-NEXT: Index: [[#NFA+20]]203; SYM-NEXT: SectionLen: 8204; SYM-NEXT: ParameterHashIndex: 0x0205; SYM-NEXT: TypeChkSectNum: 0x0206; SYM-NEXT: SymbolAlignmentLog2: 3207; SYM-NEXT: SymbolType: XTY_SD (0x1)208; SYM-NEXT: StorageMappingClass: XMC_TC (0x3)209; SYM-NEXT: Auxiliary Type: AUX_CSECT (0xFB)210; SYM-NEXT: }211; SYM-NEXT: }212; SYM: Index: [[#NFA+21]]213; SYM-NEXT: Name: IThreadLocalVarUninit214; SYM-NEXT: Value (RelocatableAddress): 0x118215; SYM-NEXT: Section: .data216; SYM-NEXT: Type: 0x0217; SYM-NEXT: StorageClass: C_HIDEXT (0x6B)218; SYM-NEXT: NumberOfAuxEntries: 1219; SYM-NEXT: CSECT Auxiliary Entry {220; SYM-NEXT: Index: [[#NFA+22]]221; SYM-NEXT: SectionLen: 8222; SYM-NEXT: ParameterHashIndex: 0x0223; SYM-NEXT: TypeChkSectNum: 0x0224; SYM-NEXT: SymbolAlignmentLog2: 3225; SYM-NEXT: SymbolType: XTY_SD (0x1)226; SYM-NEXT: StorageMappingClass: XMC_TE (0x16)227; SYM-NEXT: Auxiliary Type: AUX_CSECT (0xFB)228; SYM-NEXT: }229; SYM-NEXT: }230; SYM: Index: [[#NFA+23]]231; SYM-NEXT: Name: ThreadLocalVarInit232; SYM-NEXT: Value (RelocatableAddress): 0x120233; SYM-NEXT: Section: .data234; SYM-NEXT: Type: 0x0235; SYM-NEXT: StorageClass: C_HIDEXT (0x6B)236; SYM-NEXT: NumberOfAuxEntries: 1237; SYM-NEXT: CSECT Auxiliary Entry {238; SYM-NEXT: Index: [[#NFA+24]]239; SYM-NEXT: SectionLen: 8240; SYM-NEXT: ParameterHashIndex: 0x0241; SYM-NEXT: TypeChkSectNum: 0x0242; SYM-NEXT: SymbolAlignmentLog2: 3243; SYM-NEXT: SymbolType: XTY_SD (0x1)244; SYM-NEXT: StorageMappingClass: XMC_TE (0x16)245; SYM-NEXT: Auxiliary Type: AUX_CSECT (0xFB)246; SYM-NEXT: }247; SYM-NEXT: }248; SYM: Index: [[#NFA+25]]249; SYM-NEXT: Name: IThreadLocalVarUninit2250; SYM-NEXT: Value (RelocatableAddress): 0x128251; SYM-NEXT: Section: .data252; SYM-NEXT: Type: 0x0253; SYM-NEXT: StorageClass: C_HIDEXT (0x6B)254; SYM-NEXT: NumberOfAuxEntries: 1255; SYM-NEXT: CSECT Auxiliary Entry {256; SYM-NEXT: Index: [[#NFA+26]]257; SYM-NEXT: SectionLen: 8258; SYM-NEXT: ParameterHashIndex: 0x0259; SYM-NEXT: TypeChkSectNum: 0x0260; SYM-NEXT: SymbolAlignmentLog2: 3261; SYM-NEXT: SymbolType: XTY_SD (0x1)262; SYM-NEXT: StorageMappingClass: XMC_TE (0x16)263; SYM-NEXT: Auxiliary Type: AUX_CSECT (0xFB)264; SYM-NEXT: }265; SYM-NEXT: }266; SYM: Index: [[#NFA+27]]267; SYM-NEXT: Name: ThreadLocalVarInit268; SYM-NEXT: Value (RelocatableAddress): 0x0269; SYM-NEXT: Section: .tdata270; SYM-NEXT: Type: 0x0271; SYM-NEXT: StorageClass: C_EXT (0x2)272; SYM-NEXT: NumberOfAuxEntries: 1273; SYM-NEXT: CSECT Auxiliary Entry {274; SYM-NEXT: Index: [[#NFA+28]]275; SYM-NEXT: SectionLen: 8276; SYM-NEXT: ParameterHashIndex: 0x0277; SYM-NEXT: TypeChkSectNum: 0x0278; SYM-NEXT: SymbolAlignmentLog2: 3279; SYM-NEXT: SymbolType: XTY_SD (0x1)280; SYM-NEXT: StorageMappingClass: XMC_TL (0x14)281; SYM-NEXT: Auxiliary Type: AUX_CSECT (0xFB)282; SYM-NEXT: }283; SYM-NEXT: }284; SYM: Index: [[#NFA+29]]285; SYM-NEXT: Name: IThreadLocalVarUninit286; SYM-NEXT: Value (RelocatableAddress): 0x8287; SYM-NEXT: Section: .tbss288; SYM-NEXT: Type: 0x0289; SYM-NEXT: StorageClass: C_HIDEXT (0x6B)290; SYM-NEXT: NumberOfAuxEntries: 1291; SYM-NEXT: CSECT Auxiliary Entry {292; SYM-NEXT: Index: [[#NFA+30]]293; SYM-NEXT: SectionLen: 8294; SYM-NEXT: ParameterHashIndex: 0x0295; SYM-NEXT: TypeChkSectNum: 0x0296; SYM-NEXT: SymbolAlignmentLog2: 3297; SYM-NEXT: SymbolType: XTY_CM (0x3)298; SYM-NEXT: StorageMappingClass: XMC_UL (0x15)299; SYM-NEXT: Auxiliary Type: AUX_CSECT (0xFB)300; SYM-NEXT: }301; SYM-NEXT: }302; SYM: Index: [[#NFA+31]]303; SYM-NEXT: Name: IThreadLocalVarUninit2304; SYM-NEXT: Value (RelocatableAddress): 0x10305; SYM-NEXT: Section: .tbss306; SYM-NEXT: Type: 0x0307; SYM-NEXT: StorageClass: C_HIDEXT (0x6B)308; SYM-NEXT: NumberOfAuxEntries: 1309; SYM-NEXT: CSECT Auxiliary Entry {310; SYM-NEXT: Index: [[#NFA+32]]311; SYM-NEXT: SectionLen: 8312; SYM-NEXT: ParameterHashIndex: 0x0313; SYM-NEXT: TypeChkSectNum: 0x0314; SYM-NEXT: SymbolAlignmentLog2: 3315; SYM-NEXT: SymbolType: XTY_CM (0x3)316; SYM-NEXT: StorageMappingClass: XMC_UL (0x15)317; SYM-NEXT: Auxiliary Type: AUX_CSECT (0xFB)318; SYM-NEXT: }319; SYM-NEXT: }320 321; DIS: {{.*}}aix-tls-ld-xcoff-reloc-large.ll.tmp.o: file format aix5coff64-rs6000322; DIS: Disassembly of section .data:323; DIS: 0000000000000110 (idx: [[#NFA+19]]) _$TLSML[TC]:324; DIS-NEXT: 110: 00 00 00 00325; DIS-NEXT: 0000000000000110: R_TLSML (idx: [[#NFA+19]]) _$TLSML[TC]326; DIS-NEXT: 114: 00 00 00 00327; DIS: 0000000000000118 (idx: [[#NFA+21]]) IThreadLocalVarUninit[TE]:328; DIS-NEXT: 118: 00 00 00 00329; DIS-NEXT: 0000000000000118: R_TLS_LD (idx: [[#NFA+29]]) IThreadLocalVarUninit[UL]330; DIS-NEXT: 11c: 00 00 00 08331; DIS: 0000000000000120 (idx: [[#NFA+23]]) ThreadLocalVarInit[TE]:332; DIS-NEXT: 120: 00 00 00 00333; DIS-NEXT: 0000000000000120: R_TLS_LD (idx: [[#NFA+27]]) ThreadLocalVarInit[TL]334; DIS-NEXT: 124: 00 00 00 00335; DIS: 0000000000000128 (idx: [[#NFA+25]]) IThreadLocalVarUninit2[TE]:336; DIS-NEXT: 128: 00 00 00 00337; DIS-NEXT: 0000000000000128: R_TLS_LD (idx: [[#NFA+31]]) IThreadLocalVarUninit2[UL]338; DIS-NEXT: 12c: 00 00 00 10339 340; DIS: Disassembly of section .tdata:341; DIS: 0000000000000000 (idx: [[#NFA+27]]) ThreadLocalVarInit[TL]:342; DIS-NEXT: 0: 00 00 00 00343; DIS-NEXT: 4: 00 00 00 01344 345; DIS: Disassembly of section .tbss:346; DIS: 0000000000000008 (idx: [[#NFA+29]]) IThreadLocalVarUninit[UL]:347; DIS-NEXT: ...348; DIS: 0000000000000010 (idx: [[#NFA+31]]) IThreadLocalVarUninit2[UL]:349; DIS-NEXT: ...350