llvm/llvm/test/CodeGen/PowerPC/aix-overflow-toc-data.py

# UNSUPPORTED: expensive_checks, debug

# RUN: %python %s > %t.ll
# RUN: llc -mtriple powerpc-ibm-aix-xcoff -code-model=small -mcpu=pwr7 -mattr=-altivec -O0 < %t.ll | \
# RUN:   FileCheck --check-prefix=ASM32 %s

# RUN: llc -mtriple powerpc64-ibm-aix-xcoff -code-model=small -mcpu=pwr7 -mattr=-altivec -O0 < %t.ll | \
# RUN:   FileCheck --check-prefix=ASM64 %s

# RUN: llc -mtriple powerpc-ibm-aix-xcoff -code-model=small -mcpu=pwr7 -mattr=-altivec -O0 \
# RUN:     -filetype=obj -o %t.o < %t.ll
# RUN: llvm-objdump --no-print-imm-hex -D -r --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefix=DIS32 %s

# RUN: llc -mtriple powerpc64-ibm-aix-xcoff -code-model=small -mcpu=pwr7 -mattr=-altivec -O0 \
# RUN:     -filetype=obj -o %t.o < %t.ll
# RUN: llvm-objdump --no-print-imm-hex -D -r --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefix=DIS64 %s

numentries = 8195
for x in range(0, numentries):
    print("@a%d = global i32 0, align 4 #0" % (x))

print("define void @foo() {")
print("entry:")
for x in range(0, numentries):
    print("store i32 1, i32* @a%d, align 4" % (x))
print("ret void")
print("}")

print('attributes #0 = { "toc-data" }')

# 32-bit assembly check
# ASM32:  la 4, a0[TD](2)
# ASM32:  la 4, a1[TD](2)

# ASM32:  la 4, a8191[TD](2)
# ASM32:  la 4, a8192[TD](2)
# ASM32:  la 4, a8193[TD](2)

# 64-bit assembly check
# ASM64:  la 4, a0[TD](2)
# ASM64:  la 4, a1[TD](2)

# ASM64:  la 4, a8191[TD](2)
# ASM64:  la 4, a8192[TD](2)
# ASM64:  la 4, a8193[TD](2)

# DIS32:    fffc: 38 82 7f fc   addi 4, 2, 32764
# DIS32:      0000fffe:  R_TOC  (idx: [[#NFA+16391]]) a8191[TD]
# DIS32:   10004: 38 82 80 00   addi 4, 2, -32768
# DIS32:      00010006:  R_TOC  (idx: [[#NFA+16393]]) a8192[TD]
# DIS32:   1000c: 38 82 80 04   addi 4, 2, -32764
# DIS32:      0001000e:  R_TOC  (idx: [[#NFA+16395]]) a8193[TD]

# DIS64:    fffc: 38 82 7f fc   addi 4, 2, 32764
# DIS64:      0000fffe:  R_TOC  (idx: [[#NFA+16391]]) a8191[TD]
# DIS64:   10004: 38 82 80 00   addi 4, 2, -32768
# DIS64:      00010006:  R_TOC  (idx: [[#NFA+16393]]) a8192[TD]
# DIS64:   1000c: 38 82 80 04   addi 4, 2, -32764
# DIS64:      0001000e:  R_TOC  (idx: [[#NFA+16395]]) a8193[TD]