xref: /llvm-project/llvm/test/CodeGen/PowerPC/aix-overflow-toc.py (revision b1acb7a315e903ee340a33dbc9b2b61b0450bb67)
1# UNSUPPORTED: expensive_checks, debug
2
3# RUN: %python %s > %t.ll
4# RUN: llc -mtriple powerpc-ibm-aix-xcoff -code-model=small -data-sections=false -mcpu=pwr4 -mattr=-altivec -O0 < %t.ll | \
5# RUN:   FileCheck --check-prefix=ASM32 %s
6
7# RUN: llc -mtriple powerpc64-ibm-aix-xcoff -code-model=small -data-sections=false -mcpu=pwr4 -mattr=-altivec -O0 < %t.ll | \
8# RUN:   FileCheck --check-prefix=ASM64 %s
9
10# RUN: llc -mtriple powerpc-ibm-aix-xcoff -code-model=small -data-sections=false -mcpu=pwr4 -mattr=-altivec -O0 \
11# RUN:     -filetype=obj -o %t.o < %t.ll
12# RUN: llvm-objdump --no-print-imm-hex -D -r --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefix=DIS32 %s
13
14## FIXME: currently only fileHeader and sectionHeaders are supported in XCOFF64.
15
16numentries = 12290
17for x in range(0, numentries):
18    print("@a%d = global i32 0, align 4" % (x))
19
20print("define void @foo() {")
21print("entry:")
22for x in range(0, numentries):
23    print("store i32 1, i32* @a%d, align 4" % (x))
24print("ret void")
25print("}")
26
27# 32-bit assembly check
28# ASM32:  lwz 4, L..C0(2) # @a0
29# ASM32:  lwz 4, L..C1(2) # @a1
30
31# ASM32:  lwz 4, L..C8191(2) # @a8191
32# ASM32:  lwz 4, L..C8192-65536(2) # @a8192
33# ASM32:  lwz 4, L..C8193-65536(2) # @a8193
34
35# ASM32:  lwz 4, L..C12288-65536(2) # @a12288
36# ASM32:  lwz 4, L..C12289-65536(2) # @a12289
37
38# 64-bit assembly check
39# ASM64:  ld 4, L..C0(2) # @a0
40# ASM64:  ld 4, L..C1(2) # @a1
41
42# ASM64:  ld 4, L..C4095(2) # @a4095
43# ASM64:  ld 4, L..C4096-65536(2) # @a4096
44# ASM64:  ld 4, L..C4097-65536(2) # @a4097
45
46# ASM64:  ld 4, L..C12287-65536(2) # @a12287
47# ASM64:  ld 4, L..C12288-131072(2) # @a12288
48# ASM64:  ld 4, L..C12289-131072(2) # @a12289
49
50# DIS32:   0: 80 82 00 00   lwz 4, 0(2)
51# DIS32:  00000002:  R_TOC  (idx: [[#NFA+24591]]) a0[TC]
52# DIS32:   c: 80 82 00 04   lwz 4, 4(2)
53# DIS32:  0000000e:  R_TOC  (idx: [[#NFA+24593]]) a1[TC]
54
55# DIS32:    fffc: 80 82 7f fc   lwz 4, 32764(2)
56# DIS32:      0000fffe:  R_TOC  (idx: [[#NFA+40973]]) a8191[TC]
57# DIS32:   10004: 80 82 80 00   lwz 4, -32768(2)
58# DIS32:      00010006:  R_TOC  (idx: [[#NFA+40975]]) a8192[TC]
59# DIS32:   1000c: 80 82 80 04   lwz 4, -32764(2)
60# DIS32:      0001000e:  R_TOC  (idx: [[#NFA+40977]]) a8193[TC]
61
62# DIS32:   18004: 80 82 c0 00   lwz 4, -16384(2)
63# DIS32:      00018006:  R_TOC  (idx: [[#NFA+49167]]) a12288[TC]
64# DIS32:   1800c: 80 82 c0 04   lwz 4, -16380(2)
65# DIS32:      0001800e:  R_TOC  (idx: [[#NFA+49169]]) a12289[TC]
66