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