aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/PowerPC/huge-frame-call.ll
blob: 1208bdc4cd9291d885e82f722de667963e6f70bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-linux-gnu < %s \
; RUN:   2>&1 | FileCheck --check-prefix=CHECK-LE %s
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff -mcpu=ppc < %s \
; RUN:   2>&1 | FileCheck --check-prefix=CHECK-BE %s

%0 = type <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, [8 x i8] }>
@global.1 = internal global %0 <{ i32 129, i32 2, i32 118, i32 0, i32 5, i32 0, i32 0, i32 0, i32 120, i32 0, ptr @global.2, [8 x i8] c"\00\00\00\00\00\00\00\03" }>, align 4
@global.2 = internal constant [3 x i8] c"x.c"
@alias = dso_local alias i32 (), ptr @main

define dso_local signext i32 @main() nounwind {
; CHECK-LE-LABEL: main:
; CHECK-LE:       # %bb.0: # %bb
; CHECK-LE-NEXT:    mflr 0
; CHECK-LE-NEXT:    std 0, 16(1)
; CHECK-LE-NEXT:    lis 0, -1
; CHECK-LE-NEXT:    ori 0, 0, 65535
; CHECK-LE-NEXT:    sldi 0, 0, 32
; CHECK-LE-NEXT:    oris 0, 0, 32767
; CHECK-LE-NEXT:    ori 0, 0, 65120
; CHECK-LE-NEXT:    stdux 1, 1, 0
; CHECK-LE-NEXT:    lis 3, 0
; CHECK-LE-NEXT:    sldi 3, 3, 32
; CHECK-LE-NEXT:    oris 3, 3, 32768
; CHECK-LE-NEXT:    ori 3, 3, 400
; CHECK-LE-NEXT:    stdx 30, 1, 3 # 8-byte Folded Spill
; CHECK-LE-NEXT:    bl pluto
; CHECK-LE-NEXT:    nop
; CHECK-LE-NEXT:    addis 3, 2, global.1@toc@ha
; CHECK-LE-NEXT:    li 4, 257
; CHECK-LE-NEXT:    li 7, 0
; CHECK-LE-NEXT:    li 8, 0
; CHECK-LE-NEXT:    li 9, 0
; CHECK-LE-NEXT:    addi 5, 3, global.1@toc@l
; CHECK-LE-NEXT:    li 3, 0
; CHECK-LE-NEXT:    ori 6, 3, 32768
; CHECK-LE-NEXT:    li 3, 6
; CHECK-LE-NEXT:    bl snork
; CHECK-LE-NEXT:    nop
; CHECK-LE-NEXT:    mr 30, 3
; CHECK-LE-NEXT:    li 3, 344
; CHECK-LE-NEXT:    addi 4, 1, 48
; CHECK-LE-NEXT:    li 5, 8
; CHECK-LE-NEXT:    li 6, 8
; CHECK-LE-NEXT:    oris 3, 3, 32768
; CHECK-LE-NEXT:    add 4, 4, 3
; CHECK-LE-NEXT:    mr 3, 30
; CHECK-LE-NEXT:    bl zot
; CHECK-LE-NEXT:    nop
; CHECK-LE-NEXT:    mr 3, 30
; CHECK-LE-NEXT:    bl wibble
; CHECK-LE-NEXT:    nop
; CHECK-LE-NEXT:    li 3, 0
; CHECK-LE-NEXT:    bl snork.3
; CHECK-LE-NEXT:    nop
;
; CHECK-BE-LABEL: main:
; CHECK-BE:       # %bb.0: # %bb
; CHECK-BE-NEXT:    mflr 0
; CHECK-BE-NEXT:    std 0, 16(1)
; CHECK-BE-NEXT:    lis 0, -1
; CHECK-BE-NEXT:    ori 0, 0, 65535
; CHECK-BE-NEXT:    sldi 0, 0, 32
; CHECK-BE-NEXT:    oris 0, 0, 32767
; CHECK-BE-NEXT:    ori 0, 0, 65056
; CHECK-BE-NEXT:    stdux 1, 1, 0
; CHECK-BE-NEXT:    lis 3, 0
; CHECK-BE-NEXT:    sldi 3, 3, 32
; CHECK-BE-NEXT:    oris 3, 3, 32768
; CHECK-BE-NEXT:    ori 3, 3, 472
; CHECK-BE-NEXT:    stdx 31, 1, 3 # 8-byte Folded Spill
; CHECK-BE-NEXT:    bl .pluto[PR]
; CHECK-BE-NEXT:    nop
; CHECK-BE-NEXT:    ld 5, L..C0(2) # @global.1
; CHECK-BE-NEXT:    li 3, 0
; CHECK-BE-NEXT:    ori 6, 3, 32768
; CHECK-BE-NEXT:    li 3, 6
; CHECK-BE-NEXT:    li 4, 257
; CHECK-BE-NEXT:    li 7, 0
; CHECK-BE-NEXT:    li 8, 0
; CHECK-BE-NEXT:    li 9, 0
; CHECK-BE-NEXT:    bl .snork[PR]
; CHECK-BE-NEXT:    nop
; CHECK-BE-NEXT:    mr 31, 3
; CHECK-BE-NEXT:    li 3, 344
; CHECK-BE-NEXT:    oris 3, 3, 32768
; CHECK-BE-NEXT:    addi 4, 1, 120
; CHECK-BE-NEXT:    add 4, 4, 3
; CHECK-BE-NEXT:    mr 3, 31
; CHECK-BE-NEXT:    li 5, 8
; CHECK-BE-NEXT:    li 6, 8
; CHECK-BE-NEXT:    bl .zot[PR]
; CHECK-BE-NEXT:    nop
; CHECK-BE-NEXT:    mr 3, 31
; CHECK-BE-NEXT:    bl .wibble[PR]
; CHECK-BE-NEXT:    nop
; CHECK-BE-NEXT:    li 3, 0
; CHECK-BE-NEXT:    bl .snork.3[PR]
; CHECK-BE-NEXT:    nop
bb:
  %tmp = alloca [2147484000 x i8], align 8
  tail call void @pluto()
  %tmp6 = tail call i64 @snork(i64 6, i32 257, ptr nonnull @global.1, i64 32768, ptr null, i64 0, ptr null)
  %tmp7 = getelementptr inbounds [2147484000 x i8], ptr %tmp, i64 0, i64 2147483992
  %tmp9 = call i64 @zot(i64 %tmp6, ptr nonnull %tmp7, i64 8, i64 8)
  %tmp10 = call i64 @wibble(i64 %tmp6)
  call void @snork.3(i64 0)
  unreachable
}

declare void @pluto()

declare signext i64 @snork(i64, i32, ptr, i64, ptr, i64, ptr)

declare signext i64 @zot(i64, ptr, i64, i64)

declare signext i64 @wibble(i64)

declare void @snork.3(i64)