bolt/deps/llvm-18.1.8/llvm/test/CodeGen/PowerPC/aix-tls-ie-xcoff-reloc.ll

388 lines
14 KiB
LLVM
Raw Normal View History

2025-02-14 19:21:04 +01:00
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple=powerpc64-ibm-aix-xcoff \
; RUN: -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck --check-prefix=REL64 %s
; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYM64 %s
; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck --check-prefix=DIS64 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple=powerpc64-ibm-aix-xcoff -code-model=small \
; RUN: -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck --check-prefix=REL64 %s
; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYM64 %s
; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck --check-prefix=DIS64 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple=powerpc-ibm-aix-xcoff \
; RUN: -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck --check-prefix=REL32 %s
; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYM32 %s
; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck --check-prefix=DIS32 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple=powerpc-ibm-aix-xcoff -code-model=small \
; RUN: -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck --check-prefix=REL32 %s
; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYM32 %s
; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck --check-prefix=DIS32 %s
@global_int_nonzero = thread_local(initialexec) global i32 1, align 4
@intern_int_zero = internal thread_local(initialexec) global i32 0, align 4
define void @store_intern_int_zero(i32 noundef signext %i) {
entry:
%addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_zero)
store i32 %i, ptr %addr, align 4
ret void
}
define signext i32 @load_global_int_nonzero() {
entry:
%addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_int_nonzero)
%val = load i32, ptr %addr, align 4
ret i32 %val
}
define signext i32 @load_intern_int_zero() {
entry:
%addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_zero)
%val = load i32, ptr %addr, align 4
ret i32 %val
}
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)
; REL64: File: {{.*}}aix-tls-ie-xcoff-reloc.ll.tmp.o
; REL64-NEXT: Format: aix5coff64-rs6000
; REL64-NEXT: Arch: powerpc64
; REL64-NEXT: AddressSize: 64bit
; REL64-NEXT: Relocations [
; REL64: Virtual Address: 0x2
; REL64-NEXT: Symbol: intern_int_zero (17)
; REL64-NEXT: IsSigned: No
; REL64-NEXT: FixupBitValue: 0
; REL64-NEXT: Length: 16
; REL64-NEXT: Type: R_TOC (0x3)
; REL64-NEXT: }
; REL64: Virtual Address: 0x12
; REL64-NEXT: Symbol: global_int_nonzero (19)
; REL64-NEXT: IsSigned: No
; REL64-NEXT: FixupBitValue: 0
; REL64-NEXT: Length: 16
; REL64-NEXT: Type: R_TOC (0x3)
; REL64-NEXT: }
; REL64: Virtual Address: 0x22
; REL64-NEXT: Symbol: intern_int_zero (17)
; REL64-NEXT: IsSigned: No
; REL64-NEXT: FixupBitValue: 0
; REL64-NEXT: Length: 16
; REL64-NEXT: Type: R_TOC (0x3)
; REL64-NEXT: }
; REL64: Virtual Address: 0x78
; REL64-NEXT: Symbol: intern_int_zero (25)
; REL64-NEXT: IsSigned: No
; REL64-NEXT: FixupBitValue: 0
; REL64-NEXT: Length: 64
; REL64-NEXT: Type: R_TLS_IE (0x21)
; REL64-NEXT: }
; REL64: Virtual Address: 0x80
; REL64-NEXT: Symbol: global_int_nonzero (23)
; REL64-NEXT: IsSigned: No
; REL64-NEXT: FixupBitValue: 0
; REL64-NEXT: Length: 64
; REL64-NEXT: Type: R_TLS_IE (0x21)
; REL64-NEXT: }
; SYM64: File: {{.*}}aix-tls-ie-xcoff-reloc.ll.tmp.o
; SYM64-NEXT: Format: aix5coff64-rs6000
; SYM64-NEXT: Arch: powerpc64
; SYM64-NEXT: AddressSize: 64bit
; SYM64-NEXT: Symbols [
; SYM64: Index: 17
; SYM64-NEXT: Name: intern_int_zero
; SYM64-NEXT: Value (RelocatableAddress): 0x78
; SYM64-NEXT: Section: .data
; SYM64-NEXT: Type: 0x0
; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B)
; SYM64-NEXT: NumberOfAuxEntries: 1
; SYM64-NEXT: CSECT Auxiliary Entry {
; SYM64-NEXT: Index: 18
; SYM64-NEXT: SectionLen: 8
; SYM64-NEXT: ParameterHashIndex: 0x0
; SYM64-NEXT: TypeChkSectNum: 0x0
; SYM64-NEXT: SymbolAlignmentLog2: 3
; SYM64-NEXT: SymbolType: XTY_SD (0x1)
; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3)
; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
; SYM64-NEXT: }
; SYM64-NEXT: }
; SYM64: Index: 19
; SYM64-NEXT: Name: global_int_nonzero
; SYM64-NEXT: Value (RelocatableAddress): 0x80
; SYM64-NEXT: Section: .data
; SYM64-NEXT: Type: 0x0
; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B)
; SYM64-NEXT: NumberOfAuxEntries: 1
; SYM64-NEXT: CSECT Auxiliary Entry {
; SYM64-NEXT: Index: 20
; SYM64-NEXT: SectionLen: 8
; SYM64-NEXT: ParameterHashIndex: 0x0
; SYM64-NEXT: TypeChkSectNum: 0x0
; SYM64-NEXT: SymbolAlignmentLog2: 3
; SYM64-NEXT: SymbolType: XTY_SD (0x1)
; SYM64-NEXT: StorageMappingClass: XMC_TC (0x3)
; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
; SYM64-NEXT: }
; SYM64-NEXT: }
; SYM64: Index: 23
; SYM64-NEXT: Name: global_int_nonzero
; SYM64-NEXT: Value (RelocatableAddress): 0x0
; SYM64-NEXT: Section: .tdata
; SYM64-NEXT: Type: 0x0
; SYM64-NEXT: StorageClass: C_EXT (0x2)
; SYM64-NEXT: NumberOfAuxEntries: 1
; SYM64-NEXT: CSECT Auxiliary Entry {
; SYM64-NEXT: Index: 24
; SYM64-NEXT: ContainingCsectSymbolIndex: 21
; SYM64-NEXT: ParameterHashIndex: 0x0
; SYM64-NEXT: TypeChkSectNum: 0x0
; SYM64-NEXT: SymbolAlignmentLog2: 0
; SYM64-NEXT: SymbolType: XTY_LD (0x2)
; SYM64-NEXT: StorageMappingClass: XMC_TL (0x14)
; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
; SYM64-NEXT: }
; SYM64-NEXT: }
; SYM64: Index: 25
; SYM64-NEXT: Name: intern_int_zero
; SYM64-NEXT: Value (RelocatableAddress): 0x4
; SYM64-NEXT: Section: .tbss
; SYM64-NEXT: Type: 0x0
; SYM64-NEXT: StorageClass: C_HIDEXT (0x6B)
; SYM64-NEXT: NumberOfAuxEntries: 1
; SYM64-NEXT: CSECT Auxiliary Entry {
; SYM64-NEXT: Index: 26
; SYM64-NEXT: SectionLen: 4
; SYM64-NEXT: ParameterHashIndex: 0x0
; SYM64-NEXT: TypeChkSectNum: 0x0
; SYM64-NEXT: SymbolAlignmentLog2: 2
; SYM64-NEXT: SymbolType: XTY_CM (0x3)
; SYM64-NEXT: StorageMappingClass: XMC_UL (0x15)
; SYM64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
; SYM64-NEXT: }
; SYM64-NEXT: }
; DIS64: {{.*}}aix-tls-ie-xcoff-reloc.ll.tmp.o: file format aix5coff64-rs6000
; DIS64: Disassembly of section .text:
; DIS64: (idx: 3) .store_intern_int_zero:
; DIS64-NEXT: ld 4, 0(2)
; DIS64-NEXT: (idx: 17) intern_int_zero[TC]
; DIS64-NEXT: stwx 3, 13, 4
; DIS64-NEXT: blr
; DIS64: (idx: 5) .load_global_int_nonzero:
; DIS64-NEXT: ld 3, 8(2)
; DIS64-NEXT: (idx: 19) global_int_nonzero[TC]
; DIS64-NEXT: lwax 3, 13, 3
; DIS64-NEXT: blr
; DIS64: (idx: 7) .load_intern_int_zero:
; DIS64-NEXT: ld 3, 0(2)
; DIS64-NEXT: (idx: 17) intern_int_zero[TC]
; DIS64-NEXT: lwax 3, 13, 3
; DIS64-NEXT: blr
; DIS64: Disassembly of section .data:
; DIS64: (idx: 9) store_intern_int_zero[DS]:
; DIS64: R_POS (idx: 3) .store_intern_int_zero
; DIS64: R_POS (idx: 15) TOC[TC0]
; DIS64: (idx: 11) load_global_int_nonzero[DS]:
; DIS64: R_POS (idx: 5) .load_global_int_nonzero
; DIS64: R_POS (idx: 15) TOC[TC0]
; DIS64: (idx: 13) load_intern_int_zero[DS]:
; DIS64: R_POS (idx: 7) .load_intern_int_zero
; DIS64: R_POS (idx: 15) TOC[TC0]
; DIS64: (idx: 17) intern_int_zero[TC]:
; DIS64: R_TLS_IE (idx: 25) intern_int_zero[UL]
; DIS64: (idx: 19) global_int_nonzero[TC]:
; DIS64: R_TLS_IE (idx: 23) global_int_nonzero
; DIS64: Disassembly of section .tdata:
; DIS64: (idx: 23) global_int_nonzero:
; DIS64: Disassembly of section .tbss:
; DIS64: (idx: 25) intern_int_zero[UL]:
; REL32: File: {{.*}}aix-tls-ie-xcoff-reloc.ll.tmp.o
; REL32-NEXT: Format: aixcoff-rs6000
; REL32-NEXT: Arch: powerpc
; REL32-NEXT: AddressSize: 32bit
; REL32-NEXT: Relocations [
; REL32: Virtual Address: 0xA
; REL32-NEXT: Symbol: intern_int_zero (19)
; REL32-NEXT: IsSigned: No
; REL32-NEXT: FixupBitValue: 0
; REL32-NEXT: Length: 16
; REL32-NEXT: Type: R_TOC (0x3)
; REL32-NEXT: }
; REL32: Virtual Address: 0x10
; REL32-NEXT: Symbol: .__get_tpointer (1)
; REL32-NEXT: IsSigned: No
; REL32-NEXT: FixupBitValue: 0
; REL32-NEXT: Length: 26
; REL32-NEXT: Type: R_RBA (0x18)
; REL32-NEXT: }
; REL32: Virtual Address: 0x3A
; REL32-NEXT: Symbol: global_int_nonzero (21)
; REL32-NEXT: IsSigned: No
; REL32-NEXT: FixupBitValue: 0
; REL32-NEXT: Length: 16
; REL32-NEXT: Type: R_TOC (0x3)
; REL32-NEXT: }
; REL32: Virtual Address: 0x40
; REL32-NEXT: Symbol: .__get_tpointer (1)
; REL32-NEXT: IsSigned: No
; REL32-NEXT: FixupBitValue: 0
; REL32-NEXT: Length: 26
; REL32-NEXT: Type: R_RBA (0x18)
; REL32-NEXT: }
; REL32: Virtual Address: 0x6A
; REL32-NEXT: Symbol: intern_int_zero (19)
; REL32-NEXT: IsSigned: No
; REL32-NEXT: FixupBitValue: 0
; REL32-NEXT: Length: 16
; REL32-NEXT: Type: R_TOC (0x3)
; REL32-NEXT: }
; REL32: Virtual Address: 0x70
; REL32-NEXT: Symbol: .__get_tpointer (1)
; REL32-NEXT: IsSigned: No
; REL32-NEXT: FixupBitValue: 0
; REL32-NEXT: Length: 26
; REL32-NEXT: Type: R_RBA (0x18)
; REL32-NEXT: }
; REL32: Virtual Address: 0xAC
; REL32-NEXT: Symbol: intern_int_zero (27)
; REL32-NEXT: IsSigned: No
; REL32-NEXT: FixupBitValue: 0
; REL32-NEXT: Length: 32
; REL32-NEXT: Type: R_TLS_IE (0x21)
; REL32-NEXT: }
; REL32: Virtual Address: 0xB0
; REL32-NEXT: Symbol: global_int_nonzero (25)
; REL32-NEXT: IsSigned: No
; REL32-NEXT: FixupBitValue: 0
; REL32-NEXT: Length: 32
; REL32-NEXT: Type: R_TLS_IE (0x21)
; REL32-NEXT: }
; SYM32: File: {{.*}}aix-tls-ie-xcoff-reloc.ll.tmp.o
; SYM32-NEXT: Format: aixcoff-rs6000
; SYM32-NEXT: Arch: powerpc
; SYM32-NEXT: AddressSize: 32bit
; SYM32-NEXT: Symbols [
; SYM32: Index: 19
; SYM32-NEXT: Name: intern_int_zero
; SYM32-NEXT: Value (RelocatableAddress): 0xAC
; SYM32-NEXT: Section: .data
; SYM32-NEXT: Type: 0x0
; SYM32-NEXT: StorageClass: C_HIDEXT (0x6B)
; SYM32-NEXT: NumberOfAuxEntries: 1
; SYM32-NEXT: CSECT Auxiliary Entry {
; SYM32-NEXT: Index: 20
; SYM32-NEXT: SectionLen: 4
; SYM32-NEXT: ParameterHashIndex: 0x0
; SYM32-NEXT: TypeChkSectNum: 0x0
; SYM32-NEXT: SymbolAlignmentLog2: 2
; SYM32-NEXT: SymbolType: XTY_SD (0x1)
; SYM32-NEXT: StorageMappingClass: XMC_TC (0x3)
; SYM32-NEXT: StabInfoIndex: 0x0
; SYM32-NEXT: StabSectNum: 0x0
; SYM32-NEXT: }
; SYM32-NEXT: }
; SYM32: Index: 21
; SYM32-NEXT: Name: global_int_nonzero
; SYM32-NEXT: Value (RelocatableAddress): 0xB0
; SYM32-NEXT: Section: .data
; SYM32-NEXT: Type: 0x0
; SYM32-NEXT: StorageClass: C_HIDEXT (0x6B)
; SYM32-NEXT: NumberOfAuxEntries: 1
; SYM32-NEXT: CSECT Auxiliary Entry {
; SYM32-NEXT: Index: 22
; SYM32-NEXT: SectionLen: 4
; SYM32-NEXT: ParameterHashIndex: 0x0
; SYM32-NEXT: TypeChkSectNum: 0x0
; SYM32-NEXT: SymbolAlignmentLog2: 2
; SYM32-NEXT: SymbolType: XTY_SD (0x1)
; SYM32-NEXT: StorageMappingClass: XMC_TC (0x3)
; SYM32-NEXT: StabInfoIndex: 0x0
; SYM32-NEXT: StabSectNum: 0x0
; SYM32-NEXT: }
; SYM32-NEXT: }
; SYM32: Index: 25
; SYM32-NEXT: Name: global_int_nonzero
; SYM32-NEXT: Value (RelocatableAddress): 0x0
; SYM32-NEXT: Section: .tdata
; SYM32-NEXT: Type: 0x0
; SYM32-NEXT: StorageClass: C_EXT (0x2)
; SYM32-NEXT: NumberOfAuxEntries: 1
; SYM32-NEXT: CSECT Auxiliary Entry {
; SYM32-NEXT: Index: 26
; SYM32-NEXT: ContainingCsectSymbolIndex: 23
; SYM32-NEXT: ParameterHashIndex: 0x0
; SYM32-NEXT: TypeChkSectNum: 0x0
; SYM32-NEXT: SymbolAlignmentLog2: 0
; SYM32-NEXT: SymbolType: XTY_LD (0x2)
; SYM32-NEXT: StorageMappingClass: XMC_TL (0x14)
; SYM32-NEXT: StabInfoIndex: 0x0
; SYM32-NEXT: StabSectNum: 0x0
; SYM32-NEXT: }
; SYM32-NEXT: }
; SYM32: Index: 27
; SYM32-NEXT: Name: intern_int_zero
; SYM32-NEXT: Value (RelocatableAddress): 0x4
; SYM32-NEXT: Section: .tbss
; SYM32-NEXT: Type: 0x0
; SYM32-NEXT: StorageClass: C_HIDEXT (0x6B)
; SYM32-NEXT: NumberOfAuxEntries: 1
; SYM32-NEXT: CSECT Auxiliary Entry {
; SYM32-NEXT: Index: 28
; SYM32-NEXT: SectionLen: 4
; SYM32-NEXT: ParameterHashIndex: 0x0
; SYM32-NEXT: TypeChkSectNum: 0x0
; SYM32-NEXT: SymbolAlignmentLog2: 2
; SYM32-NEXT: SymbolType: XTY_CM (0x3)
; SYM32-NEXT: StorageMappingClass: XMC_UL (0x15)
; SYM32-NEXT: StabInfoIndex: 0x0
; SYM32-NEXT: StabSectNum: 0x0
; SYM32-NEXT: }
; SYM32-NEXT: }
; DIS32: {{.*}}aix-tls-ie-xcoff-reloc.ll.tmp.o: file format aixcoff-rs6000
; DIS32: Disassembly of section .text:
; DIS32: (idx: 5) .store_intern_int_zero:
; DIS32: R_TOC (idx: 19) intern_int_zero[TC]
; DIS32: R_RBA (idx: 1) .__get_tpointer[PR]
; DIS32: blr
; DIS32: (idx: 7) .load_global_int_nonzero:
; DIS32: R_TOC (idx: 21) global_int_nonzero[TC]
; DIS32: R_RBA (idx: 1) .__get_tpointer[PR]
; DIS32: blr
; DIS32: (idx: 9) .load_intern_int_zero:
; DIS32: R_TOC (idx: 19) intern_int_zero[TC]
; DIS32: R_RBA (idx: 1) .__get_tpointer[PR]
; DIS32: blr
; DIS32: Disassembly of section .data:
; DIS32: (idx: 11) store_intern_int_zero[DS]:
; DIS32: R_POS (idx: 5) .store_intern_int_zero
; DIS32: R_POS (idx: 17) TOC[TC0]
; DIS32: (idx: 13) load_global_int_nonzero[DS]:
; DIS32: R_POS (idx: 7) .load_global_int_nonzero
; DIS32: R_POS (idx: 17) TOC[TC0]
; DIS32: (idx: 15) load_intern_int_zero[DS]:
; DIS32: R_POS (idx: 9) .load_intern_int_zero
; DIS32: R_POS (idx: 17) TOC[TC0]
; DIS32: (idx: 19) intern_int_zero[TC]:
; DIS32: R_TLS_IE (idx: 27) intern_int_zero[UL]
; DIS32: (idx: 21) global_int_nonzero[TC]:
; DIS32: R_TLS_IE (idx: 25) global_int_nonzero
; DIS32: Disassembly of section .tdata:
; DIS32: (idx: 25) global_int_nonzero:
; DIS32: Disassembly of section .tbss:
; DIS32: (idx: 27) intern_int_zero[UL]: