386 lines · plain
1; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple=powerpc64-ibm-aix-xcoff \2; RUN: -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t.o < %s3; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck -D#NFA=2 --check-prefix=REL64 %s4; RUN: llvm-readobj --syms %t.o | FileCheck -D#NFA=2 --check-prefix=SYM64 %s5; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefix=DIS64 %s6 7; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple=powerpc64-ibm-aix-xcoff -code-model=small \8; RUN: -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t.o < %s9; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck -D#NFA=2 --check-prefix=REL64 %s10; RUN: llvm-readobj --syms %t.o | FileCheck -D#NFA=2 --check-prefix=SYM64 %s11; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefix=DIS64 %s12 13; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple=powerpc-ibm-aix-xcoff \14; RUN: -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t.o < %s15; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck -D#NFA=2 --check-prefix=REL32 %s16; RUN: llvm-readobj --syms %t.o | FileCheck -D#NFA=2 --check-prefix=SYM32 %s17; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefix=DIS32 %s18 19; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple=powerpc-ibm-aix-xcoff -code-model=small \20; RUN: -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t.o < %s21; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck -D#NFA=2 --check-prefix=REL32 %s22; RUN: llvm-readobj --syms %t.o | FileCheck -D#NFA=2 --check-prefix=SYM32 %s23; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefix=DIS32 %s24 25@global_int_nonzero = thread_local(initialexec) global i32 1, align 426@intern_int_zero = internal thread_local(initialexec) global i32 0, align 427 28define void @store_intern_int_zero(i32 noundef signext %i) {29entry:30 %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_zero)31 store i32 %i, ptr %addr, align 432 ret void33}34 35define signext i32 @load_global_int_nonzero() {36entry:37 %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_int_nonzero)38 %val = load i32, ptr %addr, align 439 ret i32 %val40}41 42define signext i32 @load_intern_int_zero() {43entry:44 %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_zero)45 %val = load i32, ptr %addr, align 446 ret i32 %val47}48 49declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)50 51; REL64: File:52; REL64-NEXT: Format: aix5coff64-rs600053; REL64-NEXT: Arch: powerpc6454; REL64-NEXT: AddressSize: 64bit55; REL64-NEXT: Relocations [56; REL64: Virtual Address: 0x257; REL64-NEXT: Symbol: intern_int_zero ([[#NFA+17]])58; REL64-NEXT: IsSigned: No59; REL64-NEXT: FixupBitValue: 060; REL64-NEXT: Length: 1661; REL64-NEXT: Type: R_TOC (0x3)62; REL64-NEXT: }63; REL64: Virtual Address: 0x1264; REL64-NEXT: Symbol: global_int_nonzero ([[#NFA+19]])65; REL64-NEXT: IsSigned: No66; REL64-NEXT: FixupBitValue: 067; REL64-NEXT: Length: 1668; REL64-NEXT: Type: R_TOC (0x3)69; REL64-NEXT: }70; REL64: Virtual Address: 0x2271; REL64-NEXT: Symbol: intern_int_zero ([[#NFA+17]])72; REL64-NEXT: IsSigned: No73; REL64-NEXT: FixupBitValue: 074; REL64-NEXT: Length: 1675; REL64-NEXT: Type: R_TOC (0x3)76; REL64-NEXT: }77; REL64: Virtual Address: 0x7878; REL64-NEXT: Symbol: intern_int_zero ([[#NFA+25]])79; REL64-NEXT: IsSigned: No80; REL64-NEXT: FixupBitValue: 081; REL64-NEXT: Length: 6482; REL64-NEXT: Type: R_TLS_IE (0x21)83; REL64-NEXT: }84; REL64: Virtual Address: 0x8085; REL64-NEXT: Symbol: global_int_nonzero ([[#NFA+23]])86; REL64-NEXT: IsSigned: No87; REL64-NEXT: FixupBitValue: 088; REL64-NEXT: Length: 6489; REL64-NEXT: Type: R_TLS_IE (0x21)90; REL64-NEXT: }91 92; SYM64: File:93; SYM64-NEXT: Format: aix5coff64-rs600094; SYM64-NEXT: Arch: powerpc6495; SYM64-NEXT: AddressSize: 64bit96; SYM64-NEXT: Symbols [97; SYM64: Name: intern_int_zero98; SYM64-NEXT: Value (RelocatableAddress): 0x7899; SYM64-NEXT: Section: .data100; SYM64-NEXT: Type: 0x0101; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B)102; SYM64-NEXT: NumberOfAuxEntries: 1103; SYM64-NEXT: CSECT Auxiliary Entry {104; SYM64-NEXT: Index: [[#INDX:]]105; SYM64-NEXT: SectionLen: 8106; SYM64-NEXT: ParameterHashIndex: 0x0107; SYM64-NEXT: TypeChkSectNum: 0x0108; SYM64-NEXT: SymbolAlignmentLog2: 3109; SYM64-NEXT: SymbolType: XTY_SD (0x1)110; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3)111; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)112; SYM64-NEXT: }113; SYM64-NEXT: }114; SYM64: Index: [[#INDX+1]]115; SYM64-NEXT: Name: global_int_nonzero116; SYM64-NEXT: Value (RelocatableAddress): 0x80117; SYM64-NEXT: Section: .data118; SYM64-NEXT: Type: 0x0119; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B)120; SYM64-NEXT: NumberOfAuxEntries: 1121; SYM64-NEXT: CSECT Auxiliary Entry {122; SYM64-NEXT: Index: [[#INDX+2]]123; SYM64-NEXT: SectionLen: 8124; SYM64-NEXT: ParameterHashIndex: 0x0125; SYM64-NEXT: TypeChkSectNum: 0x0126; SYM64-NEXT: SymbolAlignmentLog2: 3127; SYM64-NEXT: SymbolType: XTY_SD (0x1)128; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3)129; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)130; SYM64-NEXT: }131; SYM64-NEXT: }132; SYM64: Index: [[#INDX+5]]133; SYM64-NEXT: Name: global_int_nonzero134; SYM64-NEXT: Value (RelocatableAddress): 0x0135; SYM64-NEXT: Section: .tdata136; SYM64-NEXT: Type: 0x0137; SYM64-NEXT: StorageClass: C_EXT (0x2)138; SYM64-NEXT: NumberOfAuxEntries: 1139; SYM64-NEXT: CSECT Auxiliary Entry {140; SYM64-NEXT: Index: [[#INDX+6]]141; SYM64-NEXT: ContainingCsectSymbolIndex: [[#INDX+3]]142; SYM64-NEXT: ParameterHashIndex: 0x0143; SYM64-NEXT: TypeChkSectNum: 0x0144; SYM64-NEXT: SymbolAlignmentLog2: 0145; SYM64-NEXT: SymbolType: XTY_LD (0x2)146; SYM64-NEXT: StorageMappingClass: XMC_TL (0x14)147; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)148; SYM64-NEXT: }149; SYM64-NEXT: }150; SYM64: Index: [[#INDX+7]]151; SYM64-NEXT: Name: intern_int_zero152; SYM64-NEXT: Value (RelocatableAddress): 0x4153; SYM64-NEXT: Section: .tbss154; SYM64-NEXT: Type: 0x0155; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B)156; SYM64-NEXT: NumberOfAuxEntries: 1157; SYM64-NEXT: CSECT Auxiliary Entry {158; SYM64-NEXT: Index: [[#INDX+8]]159; SYM64-NEXT: SectionLen: 4160; SYM64-NEXT: ParameterHashIndex: 0x0161; SYM64-NEXT: TypeChkSectNum: 0x0162; SYM64-NEXT: SymbolAlignmentLog2: 2163; SYM64-NEXT: SymbolType: XTY_CM (0x3)164; SYM64-NEXT: StorageMappingClass: XMC_UL (0x15)165; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)166; SYM64-NEXT: }167; SYM64-NEXT: }168 169; DIS64: {{.*}}: file format aix5coff64-rs6000170; DIS64: Disassembly of section .text:171; DIS64: (idx: [[#NFA+3]]) .store_intern_int_zero:172; DIS64-NEXT: ld 4, 0(2)173; DIS64-NEXT: (idx: [[#NFA+17]]) intern_int_zero[TC]174; DIS64-NEXT: stwx 3, 13, 4175; DIS64-NEXT: blr176; DIS64: (idx: [[#NFA+5]]) .load_global_int_nonzero:177; DIS64-NEXT: ld 3, 8(2)178; DIS64-NEXT: (idx: [[#NFA+19]]) global_int_nonzero[TC]179; DIS64-NEXT: lwax 3, 13, 3180; DIS64-NEXT: blr181; DIS64: (idx: [[#NFA+7]]) .load_intern_int_zero:182; DIS64-NEXT: ld 3, 0(2)183; DIS64-NEXT: (idx: [[#NFA+17]]) intern_int_zero[TC]184; DIS64-NEXT: lwax 3, 13, 3185; DIS64-NEXT: blr186 187; DIS64: Disassembly of section .data:188; DIS64: (idx: [[#NFA+9]]) store_intern_int_zero[DS]:189; DIS64: R_POS (idx: [[#NFA+3]]) .store_intern_int_zero190; DIS64: R_POS (idx: [[#NFA+15]]) TOC[TC0]191; DIS64: (idx: [[#NFA+11]]) load_global_int_nonzero[DS]:192; DIS64: R_POS (idx: [[#NFA+5]]) .load_global_int_nonzero193; DIS64: R_POS (idx: [[#NFA+15]]) TOC[TC0]194; DIS64: (idx: [[#NFA+13]]) load_intern_int_zero[DS]:195; DIS64: R_POS (idx: [[#NFA+7]]) .load_intern_int_zero196; DIS64: R_POS (idx: [[#NFA+15]]) TOC[TC0]197; DIS64: (idx: [[#NFA+17]]) intern_int_zero[TC]:198; DIS64: R_TLS_IE (idx: [[#NFA+25]]) intern_int_zero[UL]199; DIS64: (idx: [[#NFA+19]]) global_int_nonzero[TC]:200; DIS64: R_TLS_IE (idx: [[#NFA+23]]) global_int_nonzero201 202; DIS64: Disassembly of section .tdata:203; DIS64: (idx: [[#NFA+23]]) global_int_nonzero:204 205; DIS64: Disassembly of section .tbss:206; DIS64: (idx: [[#NFA+25]]) intern_int_zero[UL]:207 208; REL32: File:209; REL32-NEXT: Format: aixcoff-rs6000210; REL32-NEXT: Arch: powerpc211; REL32-NEXT: AddressSize: 32bit212; REL32-NEXT: Relocations [213; REL32: Virtual Address: 0xA214; REL32-NEXT: Symbol: intern_int_zero ([[#NFA+19]])215; REL32-NEXT: IsSigned: No216; REL32-NEXT: FixupBitValue: 0217; REL32-NEXT: Length: 16218; REL32-NEXT: Type: R_TOC (0x3)219; REL32-NEXT: }220; REL32: Virtual Address: 0x10221; REL32-NEXT: Symbol: .__get_tpointer ([[#NFA+1]])222; REL32-NEXT: IsSigned: No223; REL32-NEXT: FixupBitValue: 0224; REL32-NEXT: Length: 26225; REL32-NEXT: Type: R_RBA (0x18)226; REL32-NEXT: }227; REL32: Virtual Address: 0x3A228; REL32-NEXT: Symbol: global_int_nonzero ([[#NFA+21]])229; REL32-NEXT: IsSigned: No230; REL32-NEXT: FixupBitValue: 0231; REL32-NEXT: Length: 16232; REL32-NEXT: Type: R_TOC (0x3)233; REL32-NEXT: }234; REL32: Virtual Address: 0x40235; REL32-NEXT: Symbol: .__get_tpointer ([[#NFA+1]])236; REL32-NEXT: IsSigned: No237; REL32-NEXT: FixupBitValue: 0238; REL32-NEXT: Length: 26239; REL32-NEXT: Type: R_RBA (0x18)240; REL32-NEXT: }241; REL32: Virtual Address: 0x6A242; REL32-NEXT: Symbol: intern_int_zero ([[#NFA+19]])243; REL32-NEXT: IsSigned: No244; REL32-NEXT: FixupBitValue: 0245; REL32-NEXT: Length: 16246; REL32-NEXT: Type: R_TOC (0x3)247; REL32-NEXT: }248; REL32: Virtual Address: 0x70249; REL32-NEXT: Symbol: .__get_tpointer ([[#NFA+1]])250; REL32-NEXT: IsSigned: No251; REL32-NEXT: FixupBitValue: 0252; REL32-NEXT: Length: 26253; REL32-NEXT: Type: R_RBA (0x18)254; REL32-NEXT: }255; REL32: Virtual Address: 0xAC256; REL32-NEXT: Symbol: intern_int_zero ([[#NFA+27]])257; REL32-NEXT: IsSigned: No258; REL32-NEXT: FixupBitValue: 0259; REL32-NEXT: Length: 32260; REL32-NEXT: Type: R_TLS_IE (0x21)261; REL32-NEXT: }262; REL32: Virtual Address: 0xB0263; REL32-NEXT: Symbol: global_int_nonzero ([[#NFA+25]])264; REL32-NEXT: IsSigned: No265; REL32-NEXT: FixupBitValue: 0266; REL32-NEXT: Length: 32267; REL32-NEXT: Type: R_TLS_IE (0x21)268; REL32-NEXT: }269 270; SYM32: File:271; SYM32-NEXT: Format: aixcoff-rs6000272; SYM32-NEXT: Arch: powerpc273; SYM32-NEXT: AddressSize: 32bit274; SYM32-NEXT: Symbols [275; SYM32: Name: intern_int_zero276; SYM32-NEXT: Value (RelocatableAddress): 0xAC277; SYM32-NEXT: Section: .data278; SYM32-NEXT: Type: 0x0279; SYM32-NEXT: StorageClass: C_HIDEXT (0x6B)280; SYM32-NEXT: NumberOfAuxEntries: 1281; SYM32-NEXT: CSECT Auxiliary Entry {282; SYM32-NEXT: Index: [[#INDX:]]283; SYM32-NEXT: SectionLen: 4284; SYM32-NEXT: ParameterHashIndex: 0x0285; SYM32-NEXT: TypeChkSectNum: 0x0286; SYM32-NEXT: SymbolAlignmentLog2: 2287; SYM32-NEXT: SymbolType: XTY_SD (0x1)288; SYM32-NEXT: StorageMappingClass: XMC_TC (0x3)289; SYM32-NEXT: StabInfoIndex: 0x0290; SYM32-NEXT: StabSectNum: 0x0291; SYM32-NEXT: }292; SYM32-NEXT: }293; SYM32: Index: [[#INDX+1]]294; SYM32-NEXT: Name: global_int_nonzero295; SYM32-NEXT: Value (RelocatableAddress): 0xB0296; SYM32-NEXT: Section: .data297; SYM32-NEXT: Type: 0x0298; SYM32-NEXT: StorageClass: C_HIDEXT (0x6B)299; SYM32-NEXT: NumberOfAuxEntries: 1300; SYM32-NEXT: CSECT Auxiliary Entry {301; SYM32-NEXT: Index: [[#INDX+2]]302; SYM32-NEXT: SectionLen: 4303; SYM32-NEXT: ParameterHashIndex: 0x0304; SYM32-NEXT: TypeChkSectNum: 0x0305; SYM32-NEXT: SymbolAlignmentLog2: 2306; SYM32-NEXT: SymbolType: XTY_SD (0x1)307; SYM32-NEXT: StorageMappingClass: XMC_TC (0x3)308; SYM32-NEXT: StabInfoIndex: 0x0309; SYM32-NEXT: StabSectNum: 0x0310; SYM32-NEXT: }311; SYM32-NEXT: }312; SYM32: Index: [[#INDX+5]]313; SYM32-NEXT: Name: global_int_nonzero314; SYM32-NEXT: Value (RelocatableAddress): 0x0315; SYM32-NEXT: Section: .tdata316; SYM32-NEXT: Type: 0x0317; SYM32-NEXT: StorageClass: C_EXT (0x2)318; SYM32-NEXT: NumberOfAuxEntries: 1319; SYM32-NEXT: CSECT Auxiliary Entry {320; SYM32-NEXT: Index: [[#INDX+6]]321; SYM32-NEXT: ContainingCsectSymbolIndex: [[#INDX+3]]322; SYM32-NEXT: ParameterHashIndex: 0x0323; SYM32-NEXT: TypeChkSectNum: 0x0324; SYM32-NEXT: SymbolAlignmentLog2: 0325; SYM32-NEXT: SymbolType: XTY_LD (0x2)326; SYM32-NEXT: StorageMappingClass: XMC_TL (0x14)327; SYM32-NEXT: StabInfoIndex: 0x0328; SYM32-NEXT: StabSectNum: 0x0329; SYM32-NEXT: }330; SYM32-NEXT: }331; SYM32: Index: [[#INDX+7]]332; SYM32-NEXT: Name: intern_int_zero333; SYM32-NEXT: Value (RelocatableAddress): 0x4334; SYM32-NEXT: Section: .tbss335; SYM32-NEXT: Type: 0x0336; SYM32-NEXT: StorageClass: C_HIDEXT (0x6B)337; SYM32-NEXT: NumberOfAuxEntries: 1338; SYM32-NEXT: CSECT Auxiliary Entry {339; SYM32-NEXT: Index: [[#INDX+8]]340; SYM32-NEXT: SectionLen: 4341; SYM32-NEXT: ParameterHashIndex: 0x0342; SYM32-NEXT: TypeChkSectNum: 0x0343; SYM32-NEXT: SymbolAlignmentLog2: 2344; SYM32-NEXT: SymbolType: XTY_CM (0x3)345; SYM32-NEXT: StorageMappingClass: XMC_UL (0x15)346; SYM32-NEXT: StabInfoIndex: 0x0347; SYM32-NEXT: StabSectNum: 0x0348; SYM32-NEXT: }349; SYM32-NEXT: }350 351; DIS32: file format aixcoff-rs6000352; DIS32: Disassembly of section .text:353; DIS32: (idx: [[#NFA+5]]) .store_intern_int_zero:354; DIS32: R_TOC (idx: [[#NFA+19]]) intern_int_zero[TC]355; DIS32: R_RBA (idx: [[#NFA+1]]) .__get_tpointer[PR]356; DIS32: blr357; DIS32: (idx: [[#NFA+7]]) .load_global_int_nonzero:358; DIS32: R_TOC (idx: [[#NFA+21]]) global_int_nonzero[TC]359; DIS32: R_RBA (idx: [[#NFA+1]]) .__get_tpointer[PR]360; DIS32: blr361; DIS32: (idx: [[#NFA+9]]) .load_intern_int_zero:362; DIS32: R_TOC (idx: [[#NFA+19]]) intern_int_zero[TC]363; DIS32: R_RBA (idx: [[#NFA+1]]) .__get_tpointer[PR]364; DIS32: blr365 366; DIS32: Disassembly of section .data:367; DIS32: (idx: [[#NFA+11]]) store_intern_int_zero[DS]:368; DIS32: R_POS (idx: [[#NFA+5]]) .store_intern_int_zero369; DIS32: R_POS (idx: [[#NFA+17]]) TOC[TC0]370; DIS32: (idx: [[#NFA+13]]) load_global_int_nonzero[DS]:371; DIS32: R_POS (idx: [[#NFA+7]]) .load_global_int_nonzero372; DIS32: R_POS (idx: [[#NFA+17]]) TOC[TC0]373; DIS32: (idx: [[#NFA+15]]) load_intern_int_zero[DS]:374; DIS32: R_POS (idx: [[#NFA+9]]) .load_intern_int_zero375; DIS32: R_POS (idx: [[#NFA+17]]) TOC[TC0]376; DIS32: (idx: [[#NFA+19]]) intern_int_zero[TC]:377; DIS32: R_TLS_IE (idx: [[#NFA+27]]) intern_int_zero[UL]378; DIS32: (idx: [[#NFA+21]]) global_int_nonzero[TC]:379; DIS32: R_TLS_IE (idx: [[#NFA+25]]) global_int_nonzero380 381; DIS32: Disassembly of section .tdata:382; DIS32: (idx: [[#NFA+25]]) global_int_nonzero:383 384; DIS32: Disassembly of section .tbss:385; DIS32: (idx: [[#NFA+27]]) intern_int_zero[UL]:386