Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / PowerPC / ppc64-byval-larger-struct.ll
blob8c88e07140e5a93a858ba12b2a3fef5bf1b4a4bc
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \
3 ; RUN:   -mcpu=pwr8 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P8LE
4 ; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \
5 ; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P9LE
6 ; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \
7 ; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P10LE
8 ; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \
9 ; RUN:   -mcpu=pwr8 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P8BE
10 ; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \
11 ; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P9BE
12 ; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \
13 ; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P10BE
15 define signext i8 @caller_9(ptr nocapture readonly byval([9 x i8]) %data) #0 {
16 ; P8LE-LABEL: caller_9:
17 ; P8LE:       # %bb.0: # %entry
18 ; P8LE-NEXT:    mflr r0
19 ; P8LE-NEXT:    stdu r1, -80(r1)
20 ; P8LE-NEXT:    std r0, 96(r1)
21 ; P8LE-NEXT:    stb r4, 56(r1)
22 ; P8LE-NEXT:    addi r4, r1, 71
23 ; P8LE-NEXT:    lbz r5, 56(r1)
24 ; P8LE-NEXT:    std r3, 48(r1)
25 ; P8LE-NEXT:    stdx r3, 0, r4
26 ; P8LE-NEXT:    mr r3, r4
27 ; P8LE-NEXT:    stb r5, 79(r1)
28 ; P8LE-NEXT:    bl callee
29 ; P8LE-NEXT:    nop
30 ; P8LE-NEXT:    li r3, 0
31 ; P8LE-NEXT:    addi r1, r1, 80
32 ; P8LE-NEXT:    ld r0, 16(r1)
33 ; P8LE-NEXT:    mtlr r0
34 ; P8LE-NEXT:    blr
36 ; P9LE-LABEL: caller_9:
37 ; P9LE:       # %bb.0: # %entry
38 ; P9LE-NEXT:    mflr r0
39 ; P9LE-NEXT:    stdu r1, -80(r1)
40 ; P9LE-NEXT:    std r0, 96(r1)
41 ; P9LE-NEXT:    stb r4, 56(r1)
42 ; P9LE-NEXT:    addi r4, r1, 71
43 ; P9LE-NEXT:    lbz r5, 56(r1)
44 ; P9LE-NEXT:    std r3, 48(r1)
45 ; P9LE-NEXT:    stdx r3, 0, r4
46 ; P9LE-NEXT:    mr r3, r4
47 ; P9LE-NEXT:    stb r5, 79(r1)
48 ; P9LE-NEXT:    bl callee
49 ; P9LE-NEXT:    nop
50 ; P9LE-NEXT:    li r3, 0
51 ; P9LE-NEXT:    addi r1, r1, 80
52 ; P9LE-NEXT:    ld r0, 16(r1)
53 ; P9LE-NEXT:    mtlr r0
54 ; P9LE-NEXT:    blr
56 ; P10LE-LABEL: caller_9:
57 ; P10LE:       # %bb.0: # %entry
58 ; P10LE-NEXT:    mflr r0
59 ; P10LE-NEXT:    std r0, 16(r1)
60 ; P10LE-NEXT:    stdu r1, -80(r1)
61 ; P10LE-NEXT:    stb r4, 56(r1)
62 ; P10LE-NEXT:    addi r4, r1, 71
63 ; P10LE-NEXT:    std r3, 48(r1)
64 ; P10LE-NEXT:    lbz r5, 56(r1)
65 ; P10LE-NEXT:    stdx r3, 0, r4
66 ; P10LE-NEXT:    mr r3, r4
67 ; P10LE-NEXT:    stb r5, 79(r1)
68 ; P10LE-NEXT:    bl callee@notoc
69 ; P10LE-NEXT:    li r3, 0
70 ; P10LE-NEXT:    addi r1, r1, 80
71 ; P10LE-NEXT:    ld r0, 16(r1)
72 ; P10LE-NEXT:    mtlr r0
73 ; P10LE-NEXT:    blr
75 ; P8BE-LABEL: caller_9:
76 ; P8BE:       # %bb.0: # %entry
77 ; P8BE-NEXT:    mflr r0
78 ; P8BE-NEXT:    stdu r1, -144(r1)
79 ; P8BE-NEXT:    std r0, 160(r1)
80 ; P8BE-NEXT:    stb r4, 200(r1)
81 ; P8BE-NEXT:    addi r4, r1, 135
82 ; P8BE-NEXT:    lbz r5, 200(r1)
83 ; P8BE-NEXT:    std r3, 192(r1)
84 ; P8BE-NEXT:    stdx r3, 0, r4
85 ; P8BE-NEXT:    mr r3, r4
86 ; P8BE-NEXT:    stb r5, 143(r1)
87 ; P8BE-NEXT:    bl callee
88 ; P8BE-NEXT:    nop
89 ; P8BE-NEXT:    li r3, 0
90 ; P8BE-NEXT:    addi r1, r1, 144
91 ; P8BE-NEXT:    ld r0, 16(r1)
92 ; P8BE-NEXT:    mtlr r0
93 ; P8BE-NEXT:    blr
95 ; P9BE-LABEL: caller_9:
96 ; P9BE:       # %bb.0: # %entry
97 ; P9BE-NEXT:    mflr r0
98 ; P9BE-NEXT:    stdu r1, -144(r1)
99 ; P9BE-NEXT:    std r0, 160(r1)
100 ; P9BE-NEXT:    stb r4, 200(r1)
101 ; P9BE-NEXT:    addi r4, r1, 135
102 ; P9BE-NEXT:    lbz r5, 200(r1)
103 ; P9BE-NEXT:    std r3, 192(r1)
104 ; P9BE-NEXT:    stdx r3, 0, r4
105 ; P9BE-NEXT:    mr r3, r4
106 ; P9BE-NEXT:    stb r5, 143(r1)
107 ; P9BE-NEXT:    bl callee
108 ; P9BE-NEXT:    nop
109 ; P9BE-NEXT:    li r3, 0
110 ; P9BE-NEXT:    addi r1, r1, 144
111 ; P9BE-NEXT:    ld r0, 16(r1)
112 ; P9BE-NEXT:    mtlr r0
113 ; P9BE-NEXT:    blr
115 ; P10BE-LABEL: caller_9:
116 ; P10BE:       # %bb.0: # %entry
117 ; P10BE-NEXT:    mflr r0
118 ; P10BE-NEXT:    std r0, 16(r1)
119 ; P10BE-NEXT:    stdu r1, -144(r1)
120 ; P10BE-NEXT:    stb r4, 200(r1)
121 ; P10BE-NEXT:    addi r4, r1, 135
122 ; P10BE-NEXT:    std r3, 192(r1)
123 ; P10BE-NEXT:    lbz r5, 200(r1)
124 ; P10BE-NEXT:    stdx r3, 0, r4
125 ; P10BE-NEXT:    mr r3, r4
126 ; P10BE-NEXT:    stb r5, 143(r1)
127 ; P10BE-NEXT:    bl callee
128 ; P10BE-NEXT:    nop
129 ; P10BE-NEXT:    li r3, 0
130 ; P10BE-NEXT:    addi r1, r1, 144
131 ; P10BE-NEXT:    ld r0, 16(r1)
132 ; P10BE-NEXT:    mtlr r0
133 ; P10BE-NEXT:    blr
134 entry:
135   %_param_data = alloca [9 x i8], align 1
136   %.unpack0 = load i8, ptr %data, align 1
137   %.elt1 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 1
138   %.unpack1 = load i8, ptr %.elt1, align 1
139   %.elt2 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 2
140   %.unpack2 = load i8, ptr %.elt2, align 1
141   %.elt3 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 3
142   %.unpack3 = load i8, ptr %.elt3, align 1
143   %.elt4 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 4
144   %.unpack4 = load i8, ptr %.elt4, align 1
145   %.elt5 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 5
146   %.unpack5 = load i8, ptr %.elt5, align 1
147   %.elt6 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 6
148   %.unpack6 = load i8, ptr %.elt6, align 1
149   %.elt7 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 7
150   %.unpack7 = load i8, ptr %.elt7, align 1
151   %.elt8 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 8
152   %.unpack8 = load i8, ptr %.elt8, align 1
153   store i8 %.unpack0, ptr %_param_data, align 1
154   %.temp.1.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 1
155   store i8 %.unpack1, ptr %.temp.1.gep, align 1
156   %.temp.2.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 2
157   store i8 %.unpack2, ptr %.temp.2.gep, align 1
158   %.temp.3.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 3
159   store i8 %.unpack3, ptr %.temp.3.gep, align 1
160   %.temp.4.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 4
161   store i8 %.unpack4, ptr %.temp.4.gep, align 1
162   %.temp.5.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 5
163   store i8 %.unpack5, ptr %.temp.5.gep, align 1
164   %.temp.6.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 6
165   store i8 %.unpack6, ptr %.temp.6.gep, align 1
166   %.temp.7.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 7
167   store i8 %.unpack7, ptr %.temp.7.gep, align 1
168   %.temp.8.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 8
169   store i8 %.unpack8, ptr %.temp.8.gep, align 1
170   call void @callee(ptr nonnull %_param_data)
171   ret i8 0
174 define signext i8 @caller_9_callee_9(ptr nocapture readonly byval([9 x i8]) %data) #0 {
175 ; P8LE-LABEL: caller_9_callee_9:
176 ; P8LE:       # %bb.0: # %entry
177 ; P8LE-NEXT:    mflr r0
178 ; P8LE-NEXT:    stdu r1, -80(r1)
179 ; P8LE-NEXT:    std r0, 96(r1)
180 ; P8LE-NEXT:    stb r4, 56(r1)
181 ; P8LE-NEXT:    addi r5, r1, 71
182 ; P8LE-NEXT:    lbz r4, 56(r1)
183 ; P8LE-NEXT:    std r3, 48(r1)
184 ; P8LE-NEXT:    stdx r3, 0, r5
185 ; P8LE-NEXT:    stb r4, 79(r1)
186 ; P8LE-NEXT:    lbz r4, 56(r1)
187 ; P8LE-NEXT:    bl callee_9
188 ; P8LE-NEXT:    nop
189 ; P8LE-NEXT:    li r3, 0
190 ; P8LE-NEXT:    addi r1, r1, 80
191 ; P8LE-NEXT:    ld r0, 16(r1)
192 ; P8LE-NEXT:    mtlr r0
193 ; P8LE-NEXT:    blr
195 ; P9LE-LABEL: caller_9_callee_9:
196 ; P9LE:       # %bb.0: # %entry
197 ; P9LE-NEXT:    mflr r0
198 ; P9LE-NEXT:    stdu r1, -80(r1)
199 ; P9LE-NEXT:    std r0, 96(r1)
200 ; P9LE-NEXT:    stb r4, 56(r1)
201 ; P9LE-NEXT:    addi r4, r1, 71
202 ; P9LE-NEXT:    lbz r5, 56(r1)
203 ; P9LE-NEXT:    std r3, 48(r1)
204 ; P9LE-NEXT:    stdx r3, 0, r4
205 ; P9LE-NEXT:    lbz r4, 56(r1)
206 ; P9LE-NEXT:    stb r5, 79(r1)
207 ; P9LE-NEXT:    bl callee_9
208 ; P9LE-NEXT:    nop
209 ; P9LE-NEXT:    li r3, 0
210 ; P9LE-NEXT:    addi r1, r1, 80
211 ; P9LE-NEXT:    ld r0, 16(r1)
212 ; P9LE-NEXT:    mtlr r0
213 ; P9LE-NEXT:    blr
215 ; P10LE-LABEL: caller_9_callee_9:
216 ; P10LE:       # %bb.0: # %entry
217 ; P10LE-NEXT:    mflr r0
218 ; P10LE-NEXT:    std r0, 16(r1)
219 ; P10LE-NEXT:    stdu r1, -80(r1)
220 ; P10LE-NEXT:    stb r4, 56(r1)
221 ; P10LE-NEXT:    addi r4, r1, 71
222 ; P10LE-NEXT:    std r3, 48(r1)
223 ; P10LE-NEXT:    lbz r5, 56(r1)
224 ; P10LE-NEXT:    stdx r3, 0, r4
225 ; P10LE-NEXT:    lbz r4, 56(r1)
226 ; P10LE-NEXT:    stb r5, 79(r1)
227 ; P10LE-NEXT:    bl callee_9@notoc
228 ; P10LE-NEXT:    li r3, 0
229 ; P10LE-NEXT:    addi r1, r1, 80
230 ; P10LE-NEXT:    ld r0, 16(r1)
231 ; P10LE-NEXT:    mtlr r0
232 ; P10LE-NEXT:    blr
234 ; P8BE-LABEL: caller_9_callee_9:
235 ; P8BE:       # %bb.0: # %entry
236 ; P8BE-NEXT:    mflr r0
237 ; P8BE-NEXT:    stdu r1, -144(r1)
238 ; P8BE-NEXT:    std r0, 160(r1)
239 ; P8BE-NEXT:    stb r4, 200(r1)
240 ; P8BE-NEXT:    addi r5, r1, 135
241 ; P8BE-NEXT:    lbz r4, 200(r1)
242 ; P8BE-NEXT:    std r3, 192(r1)
243 ; P8BE-NEXT:    stdx r3, 0, r5
244 ; P8BE-NEXT:    stb r4, 143(r1)
245 ; P8BE-NEXT:    lbz r4, 200(r1)
246 ; P8BE-NEXT:    bl callee_9
247 ; P8BE-NEXT:    nop
248 ; P8BE-NEXT:    li r3, 0
249 ; P8BE-NEXT:    addi r1, r1, 144
250 ; P8BE-NEXT:    ld r0, 16(r1)
251 ; P8BE-NEXT:    mtlr r0
252 ; P8BE-NEXT:    blr
254 ; P9BE-LABEL: caller_9_callee_9:
255 ; P9BE:       # %bb.0: # %entry
256 ; P9BE-NEXT:    mflr r0
257 ; P9BE-NEXT:    stdu r1, -144(r1)
258 ; P9BE-NEXT:    std r0, 160(r1)
259 ; P9BE-NEXT:    stb r4, 200(r1)
260 ; P9BE-NEXT:    addi r4, r1, 135
261 ; P9BE-NEXT:    lbz r5, 200(r1)
262 ; P9BE-NEXT:    std r3, 192(r1)
263 ; P9BE-NEXT:    stdx r3, 0, r4
264 ; P9BE-NEXT:    lbz r4, 200(r1)
265 ; P9BE-NEXT:    stb r5, 143(r1)
266 ; P9BE-NEXT:    bl callee_9
267 ; P9BE-NEXT:    nop
268 ; P9BE-NEXT:    li r3, 0
269 ; P9BE-NEXT:    addi r1, r1, 144
270 ; P9BE-NEXT:    ld r0, 16(r1)
271 ; P9BE-NEXT:    mtlr r0
272 ; P9BE-NEXT:    blr
274 ; P10BE-LABEL: caller_9_callee_9:
275 ; P10BE:       # %bb.0: # %entry
276 ; P10BE-NEXT:    mflr r0
277 ; P10BE-NEXT:    std r0, 16(r1)
278 ; P10BE-NEXT:    stdu r1, -144(r1)
279 ; P10BE-NEXT:    stb r4, 200(r1)
280 ; P10BE-NEXT:    addi r4, r1, 135
281 ; P10BE-NEXT:    std r3, 192(r1)
282 ; P10BE-NEXT:    lbz r5, 200(r1)
283 ; P10BE-NEXT:    stdx r3, 0, r4
284 ; P10BE-NEXT:    lbz r4, 200(r1)
285 ; P10BE-NEXT:    stb r5, 143(r1)
286 ; P10BE-NEXT:    bl callee_9
287 ; P10BE-NEXT:    nop
288 ; P10BE-NEXT:    li r3, 0
289 ; P10BE-NEXT:    addi r1, r1, 144
290 ; P10BE-NEXT:    ld r0, 16(r1)
291 ; P10BE-NEXT:    mtlr r0
292 ; P10BE-NEXT:    blr
293 entry:
294   %_param_data = alloca [9 x i8], align 1
295   %.unpack0 = load i8, ptr %data, align 1
296   %.elt1 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 1
297   %.unpack1 = load i8, ptr %.elt1, align 1
298   %.elt2 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 2
299   %.unpack2 = load i8, ptr %.elt2, align 1
300   %.elt3 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 3
301   %.unpack3 = load i8, ptr %.elt3, align 1
302   %.elt4 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 4
303   %.unpack4 = load i8, ptr %.elt4, align 1
304   %.elt5 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 5
305   %.unpack5 = load i8, ptr %.elt5, align 1
306   %.elt6 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 6
307   %.unpack6 = load i8, ptr %.elt6, align 1
308   %.elt7 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 7
309   %.unpack7 = load i8, ptr %.elt7, align 1
310   %.elt8 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 8
311   %.unpack8 = load i8, ptr %.elt8, align 1
312   store i8 %.unpack0, ptr %_param_data, align 1
313   %.temp.1.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 1
314   store i8 %.unpack1, ptr %.temp.1.gep, align 1
315   %.temp.2.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 2
316   store i8 %.unpack2, ptr %.temp.2.gep, align 1
317   %.temp.3.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 3
318   store i8 %.unpack3, ptr %.temp.3.gep, align 1
319   %.temp.4.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 4
320   store i8 %.unpack4, ptr %.temp.4.gep, align 1
321   %.temp.5.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 5
322   store i8 %.unpack5, ptr %.temp.5.gep, align 1
323   %.temp.6.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 6
324   store i8 %.unpack6, ptr %.temp.6.gep, align 1
325   %.temp.7.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 7
326   store i8 %.unpack7, ptr %.temp.7.gep, align 1
327   %.temp.8.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 8
328   store i8 %.unpack8, ptr %.temp.8.gep, align 1
329   call void @callee_9(ptr nocapture readonly byval([9 x i8]) %data)
330   ret i8 0
333 define signext i8 @caller_10(ptr nocapture readonly byval([10 x i8]) %data) #0 {
334 ; P8LE-LABEL: caller_10:
335 ; P8LE:       # %bb.0: # %entry
336 ; P8LE-NEXT:    mflr r0
337 ; P8LE-NEXT:    stdu r1, -80(r1)
338 ; P8LE-NEXT:    std r0, 96(r1)
339 ; P8LE-NEXT:    sth r4, 56(r1)
340 ; P8LE-NEXT:    addi r4, r1, 70
341 ; P8LE-NEXT:    lhz r5, 56(r1)
342 ; P8LE-NEXT:    std r3, 48(r1)
343 ; P8LE-NEXT:    stdx r3, 0, r4
344 ; P8LE-NEXT:    mr r3, r4
345 ; P8LE-NEXT:    sth r5, 78(r1)
346 ; P8LE-NEXT:    bl callee
347 ; P8LE-NEXT:    nop
348 ; P8LE-NEXT:    li r3, 0
349 ; P8LE-NEXT:    addi r1, r1, 80
350 ; P8LE-NEXT:    ld r0, 16(r1)
351 ; P8LE-NEXT:    mtlr r0
352 ; P8LE-NEXT:    blr
354 ; P9LE-LABEL: caller_10:
355 ; P9LE:       # %bb.0: # %entry
356 ; P9LE-NEXT:    mflr r0
357 ; P9LE-NEXT:    stdu r1, -80(r1)
358 ; P9LE-NEXT:    std r0, 96(r1)
359 ; P9LE-NEXT:    sth r4, 56(r1)
360 ; P9LE-NEXT:    addi r4, r1, 70
361 ; P9LE-NEXT:    lhz r5, 56(r1)
362 ; P9LE-NEXT:    std r3, 48(r1)
363 ; P9LE-NEXT:    stdx r3, 0, r4
364 ; P9LE-NEXT:    mr r3, r4
365 ; P9LE-NEXT:    sth r5, 78(r1)
366 ; P9LE-NEXT:    bl callee
367 ; P9LE-NEXT:    nop
368 ; P9LE-NEXT:    li r3, 0
369 ; P9LE-NEXT:    addi r1, r1, 80
370 ; P9LE-NEXT:    ld r0, 16(r1)
371 ; P9LE-NEXT:    mtlr r0
372 ; P9LE-NEXT:    blr
374 ; P10LE-LABEL: caller_10:
375 ; P10LE:       # %bb.0: # %entry
376 ; P10LE-NEXT:    mflr r0
377 ; P10LE-NEXT:    std r0, 16(r1)
378 ; P10LE-NEXT:    stdu r1, -80(r1)
379 ; P10LE-NEXT:    sth r4, 56(r1)
380 ; P10LE-NEXT:    addi r4, r1, 70
381 ; P10LE-NEXT:    std r3, 48(r1)
382 ; P10LE-NEXT:    lhz r5, 56(r1)
383 ; P10LE-NEXT:    stdx r3, 0, r4
384 ; P10LE-NEXT:    mr r3, r4
385 ; P10LE-NEXT:    sth r5, 78(r1)
386 ; P10LE-NEXT:    bl callee@notoc
387 ; P10LE-NEXT:    li r3, 0
388 ; P10LE-NEXT:    addi r1, r1, 80
389 ; P10LE-NEXT:    ld r0, 16(r1)
390 ; P10LE-NEXT:    mtlr r0
391 ; P10LE-NEXT:    blr
393 ; P8BE-LABEL: caller_10:
394 ; P8BE:       # %bb.0: # %entry
395 ; P8BE-NEXT:    mflr r0
396 ; P8BE-NEXT:    stdu r1, -144(r1)
397 ; P8BE-NEXT:    std r0, 160(r1)
398 ; P8BE-NEXT:    sth r4, 200(r1)
399 ; P8BE-NEXT:    addi r4, r1, 134
400 ; P8BE-NEXT:    lhz r5, 200(r1)
401 ; P8BE-NEXT:    std r3, 192(r1)
402 ; P8BE-NEXT:    stdx r3, 0, r4
403 ; P8BE-NEXT:    mr r3, r4
404 ; P8BE-NEXT:    sth r5, 142(r1)
405 ; P8BE-NEXT:    bl callee
406 ; P8BE-NEXT:    nop
407 ; P8BE-NEXT:    li r3, 0
408 ; P8BE-NEXT:    addi r1, r1, 144
409 ; P8BE-NEXT:    ld r0, 16(r1)
410 ; P8BE-NEXT:    mtlr r0
411 ; P8BE-NEXT:    blr
413 ; P9BE-LABEL: caller_10:
414 ; P9BE:       # %bb.0: # %entry
415 ; P9BE-NEXT:    mflr r0
416 ; P9BE-NEXT:    stdu r1, -144(r1)
417 ; P9BE-NEXT:    std r0, 160(r1)
418 ; P9BE-NEXT:    sth r4, 200(r1)
419 ; P9BE-NEXT:    addi r4, r1, 134
420 ; P9BE-NEXT:    lhz r5, 200(r1)
421 ; P9BE-NEXT:    std r3, 192(r1)
422 ; P9BE-NEXT:    stdx r3, 0, r4
423 ; P9BE-NEXT:    mr r3, r4
424 ; P9BE-NEXT:    sth r5, 142(r1)
425 ; P9BE-NEXT:    bl callee
426 ; P9BE-NEXT:    nop
427 ; P9BE-NEXT:    li r3, 0
428 ; P9BE-NEXT:    addi r1, r1, 144
429 ; P9BE-NEXT:    ld r0, 16(r1)
430 ; P9BE-NEXT:    mtlr r0
431 ; P9BE-NEXT:    blr
433 ; P10BE-LABEL: caller_10:
434 ; P10BE:       # %bb.0: # %entry
435 ; P10BE-NEXT:    mflr r0
436 ; P10BE-NEXT:    std r0, 16(r1)
437 ; P10BE-NEXT:    stdu r1, -144(r1)
438 ; P10BE-NEXT:    sth r4, 200(r1)
439 ; P10BE-NEXT:    addi r4, r1, 134
440 ; P10BE-NEXT:    std r3, 192(r1)
441 ; P10BE-NEXT:    lhz r5, 200(r1)
442 ; P10BE-NEXT:    stdx r3, 0, r4
443 ; P10BE-NEXT:    mr r3, r4
444 ; P10BE-NEXT:    sth r5, 142(r1)
445 ; P10BE-NEXT:    bl callee
446 ; P10BE-NEXT:    nop
447 ; P10BE-NEXT:    li r3, 0
448 ; P10BE-NEXT:    addi r1, r1, 144
449 ; P10BE-NEXT:    ld r0, 16(r1)
450 ; P10BE-NEXT:    mtlr r0
451 ; P10BE-NEXT:    blr
452 entry:
453   %_param_data = alloca [10 x i8], align 1
454   %.unpack0 = load i8, ptr %data, align 1
455   %.elt1 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 1
456   %.unpack1 = load i8, ptr %.elt1, align 1
457   %.elt2 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 2
458   %.unpack2 = load i8, ptr %.elt2, align 1
459   %.elt3 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 3
460   %.unpack3 = load i8, ptr %.elt3, align 1
461   %.elt4 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 4
462   %.unpack4 = load i8, ptr %.elt4, align 1
463   %.elt5 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 5
464   %.unpack5 = load i8, ptr %.elt5, align 1
465   %.elt6 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 6
466   %.unpack6 = load i8, ptr %.elt6, align 1
467   %.elt7 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 7
468   %.unpack7 = load i8, ptr %.elt7, align 1
469   %.elt8 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 8
470   %.unpack8 = load i8, ptr %.elt8, align 1
471   %.elt9 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 9
472   %.unpack9 = load i8, ptr %.elt9, align 1
473   store i8 %.unpack0, ptr %_param_data, align 1
474   %.temp.1.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 1
475   store i8 %.unpack1, ptr %.temp.1.gep, align 1
476   %.temp.2.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 2
477   store i8 %.unpack2, ptr %.temp.2.gep, align 1
478   %.temp.3.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 3
479   store i8 %.unpack3, ptr %.temp.3.gep, align 1
480   %.temp.4.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 4
481   store i8 %.unpack4, ptr %.temp.4.gep, align 1
482   %.temp.5.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 5
483   store i8 %.unpack5, ptr %.temp.5.gep, align 1
484   %.temp.6.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 6
485   store i8 %.unpack6, ptr %.temp.6.gep, align 1
486   %.temp.7.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 7
487   store i8 %.unpack7, ptr %.temp.7.gep, align 1
488   %.temp.8.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 8
489   store i8 %.unpack8, ptr %.temp.8.gep, align 1
490   %.temp.9.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 9
491   store i8 %.unpack9, ptr %.temp.9.gep, align 1
492   call void @callee(ptr nonnull %_param_data)
493   ret i8 0
496 define signext i8 @caller_12(ptr nocapture readonly byval([12 x i8]) %data) #0 {
497 ; P8LE-LABEL: caller_12:
498 ; P8LE:       # %bb.0: # %entry
499 ; P8LE-NEXT:    mflr r0
500 ; P8LE-NEXT:    stdu r1, -80(r1)
501 ; P8LE-NEXT:    std r0, 96(r1)
502 ; P8LE-NEXT:    stw r4, 56(r1)
503 ; P8LE-NEXT:    addi r4, r1, 68
504 ; P8LE-NEXT:    lwz r5, 56(r1)
505 ; P8LE-NEXT:    std r3, 48(r1)
506 ; P8LE-NEXT:    std r3, 68(r1)
507 ; P8LE-NEXT:    mr r3, r4
508 ; P8LE-NEXT:    stw r5, 76(r1)
509 ; P8LE-NEXT:    bl callee
510 ; P8LE-NEXT:    nop
511 ; P8LE-NEXT:    li r3, 0
512 ; P8LE-NEXT:    addi r1, r1, 80
513 ; P8LE-NEXT:    ld r0, 16(r1)
514 ; P8LE-NEXT:    mtlr r0
515 ; P8LE-NEXT:    blr
517 ; P9LE-LABEL: caller_12:
518 ; P9LE:       # %bb.0: # %entry
519 ; P9LE-NEXT:    mflr r0
520 ; P9LE-NEXT:    stdu r1, -80(r1)
521 ; P9LE-NEXT:    std r0, 96(r1)
522 ; P9LE-NEXT:    stw r4, 56(r1)
523 ; P9LE-NEXT:    addi r4, r1, 68
524 ; P9LE-NEXT:    lwz r5, 56(r1)
525 ; P9LE-NEXT:    std r3, 48(r1)
526 ; P9LE-NEXT:    std r3, 68(r1)
527 ; P9LE-NEXT:    mr r3, r4
528 ; P9LE-NEXT:    stw r5, 76(r1)
529 ; P9LE-NEXT:    bl callee
530 ; P9LE-NEXT:    nop
531 ; P9LE-NEXT:    li r3, 0
532 ; P9LE-NEXT:    addi r1, r1, 80
533 ; P9LE-NEXT:    ld r0, 16(r1)
534 ; P9LE-NEXT:    mtlr r0
535 ; P9LE-NEXT:    blr
537 ; P10LE-LABEL: caller_12:
538 ; P10LE:       # %bb.0: # %entry
539 ; P10LE-NEXT:    mflr r0
540 ; P10LE-NEXT:    std r0, 16(r1)
541 ; P10LE-NEXT:    stdu r1, -80(r1)
542 ; P10LE-NEXT:    stw r4, 56(r1)
543 ; P10LE-NEXT:    addi r4, r1, 68
544 ; P10LE-NEXT:    std r3, 48(r1)
545 ; P10LE-NEXT:    lwz r5, 56(r1)
546 ; P10LE-NEXT:    std r3, 68(r1)
547 ; P10LE-NEXT:    mr r3, r4
548 ; P10LE-NEXT:    stw r5, 76(r1)
549 ; P10LE-NEXT:    bl callee@notoc
550 ; P10LE-NEXT:    li r3, 0
551 ; P10LE-NEXT:    addi r1, r1, 80
552 ; P10LE-NEXT:    ld r0, 16(r1)
553 ; P10LE-NEXT:    mtlr r0
554 ; P10LE-NEXT:    blr
556 ; P8BE-LABEL: caller_12:
557 ; P8BE:       # %bb.0: # %entry
558 ; P8BE-NEXT:    mflr r0
559 ; P8BE-NEXT:    stdu r1, -144(r1)
560 ; P8BE-NEXT:    std r0, 160(r1)
561 ; P8BE-NEXT:    stw r4, 200(r1)
562 ; P8BE-NEXT:    addi r4, r1, 132
563 ; P8BE-NEXT:    lwz r5, 200(r1)
564 ; P8BE-NEXT:    std r3, 192(r1)
565 ; P8BE-NEXT:    std r3, 132(r1)
566 ; P8BE-NEXT:    mr r3, r4
567 ; P8BE-NEXT:    stw r5, 140(r1)
568 ; P8BE-NEXT:    bl callee
569 ; P8BE-NEXT:    nop
570 ; P8BE-NEXT:    li r3, 0
571 ; P8BE-NEXT:    addi r1, r1, 144
572 ; P8BE-NEXT:    ld r0, 16(r1)
573 ; P8BE-NEXT:    mtlr r0
574 ; P8BE-NEXT:    blr
576 ; P9BE-LABEL: caller_12:
577 ; P9BE:       # %bb.0: # %entry
578 ; P9BE-NEXT:    mflr r0
579 ; P9BE-NEXT:    stdu r1, -144(r1)
580 ; P9BE-NEXT:    std r0, 160(r1)
581 ; P9BE-NEXT:    stw r4, 200(r1)
582 ; P9BE-NEXT:    addi r4, r1, 132
583 ; P9BE-NEXT:    lwz r5, 200(r1)
584 ; P9BE-NEXT:    std r3, 192(r1)
585 ; P9BE-NEXT:    std r3, 132(r1)
586 ; P9BE-NEXT:    mr r3, r4
587 ; P9BE-NEXT:    stw r5, 140(r1)
588 ; P9BE-NEXT:    bl callee
589 ; P9BE-NEXT:    nop
590 ; P9BE-NEXT:    li r3, 0
591 ; P9BE-NEXT:    addi r1, r1, 144
592 ; P9BE-NEXT:    ld r0, 16(r1)
593 ; P9BE-NEXT:    mtlr r0
594 ; P9BE-NEXT:    blr
596 ; P10BE-LABEL: caller_12:
597 ; P10BE:       # %bb.0: # %entry
598 ; P10BE-NEXT:    mflr r0
599 ; P10BE-NEXT:    std r0, 16(r1)
600 ; P10BE-NEXT:    stdu r1, -144(r1)
601 ; P10BE-NEXT:    stw r4, 200(r1)
602 ; P10BE-NEXT:    addi r4, r1, 132
603 ; P10BE-NEXT:    std r3, 192(r1)
604 ; P10BE-NEXT:    lwz r5, 200(r1)
605 ; P10BE-NEXT:    std r3, 132(r1)
606 ; P10BE-NEXT:    mr r3, r4
607 ; P10BE-NEXT:    stw r5, 140(r1)
608 ; P10BE-NEXT:    bl callee
609 ; P10BE-NEXT:    nop
610 ; P10BE-NEXT:    li r3, 0
611 ; P10BE-NEXT:    addi r1, r1, 144
612 ; P10BE-NEXT:    ld r0, 16(r1)
613 ; P10BE-NEXT:    mtlr r0
614 ; P10BE-NEXT:    blr
615 entry:
616   %_param_data = alloca [12 x i8], align 1
617   %.unpack0 = load i8, ptr %data, align 1
618   %.elt1 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 1
619   %.unpack1 = load i8, ptr %.elt1, align 1
620   %.elt2 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 2
621   %.unpack2 = load i8, ptr %.elt2, align 1
622   %.elt3 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 3
623   %.unpack3 = load i8, ptr %.elt3, align 1
624   %.elt4 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 4
625   %.unpack4 = load i8, ptr %.elt4, align 1
626   %.elt5 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 5
627   %.unpack5 = load i8, ptr %.elt5, align 1
628   %.elt6 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 6
629   %.unpack6 = load i8, ptr %.elt6, align 1
630   %.elt7 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 7
631   %.unpack7 = load i8, ptr %.elt7, align 1
632   %.elt8 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 8
633   %.unpack8 = load i8, ptr %.elt8, align 1
634   %.elt9 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 9
635   %.unpack9 = load i8, ptr %.elt9, align 1
636   %.elt10 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 10
637   %.unpack10 = load i8, ptr %.elt10, align 1
638   %.elt11 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 11
639   %.unpack11 = load i8, ptr %.elt11, align 1
640   store i8 %.unpack0, ptr %_param_data, align 1
641   %.temp.1.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 1
642   store i8 %.unpack1, ptr %.temp.1.gep, align 1
643   %.temp.2.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 2
644   store i8 %.unpack2, ptr %.temp.2.gep, align 1
645   %.temp.3.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 3
646   store i8 %.unpack3, ptr %.temp.3.gep, align 1
647   %.temp.4.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 4
648   store i8 %.unpack4, ptr %.temp.4.gep, align 1
649   %.temp.5.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 5
650   store i8 %.unpack5, ptr %.temp.5.gep, align 1
651   %.temp.6.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 6
652   store i8 %.unpack6, ptr %.temp.6.gep, align 1
653   %.temp.7.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 7
654   store i8 %.unpack7, ptr %.temp.7.gep, align 1
655   %.temp.8.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 8
656   store i8 %.unpack8, ptr %.temp.8.gep, align 1
657   %.temp.9.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 9
658   store i8 %.unpack9, ptr %.temp.9.gep, align 1
659   %.temp.10.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 10
660   store i8 %.unpack10, ptr %.temp.10.gep, align 1
661   %.temp.11.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 11
662   store i8 %.unpack11, ptr %.temp.11.gep, align 1
663   call void @callee(ptr nonnull %_param_data)
664   ret i8 0
667 define signext i8 @caller_14(ptr nocapture readonly byval([14 x i8]) %data) #0 {
668 ; P8LE-LABEL: caller_14:
669 ; P8LE:       # %bb.0: # %entry
670 ; P8LE-NEXT:    mflr r0
671 ; P8LE-NEXT:    stdu r1, -80(r1)
672 ; P8LE-NEXT:    std r0, 96(r1)
673 ; P8LE-NEXT:    stw r4, 56(r1)
674 ; P8LE-NEXT:    rldicl r4, r4, 32, 32
675 ; P8LE-NEXT:    lwz r5, 56(r1)
676 ; P8LE-NEXT:    std r3, 48(r1)
677 ; P8LE-NEXT:    sth r4, 60(r1)
678 ; P8LE-NEXT:    addi r4, r1, 66
679 ; P8LE-NEXT:    stdx r3, 0, r4
680 ; P8LE-NEXT:    mr r3, r4
681 ; P8LE-NEXT:    stw r5, 74(r1)
682 ; P8LE-NEXT:    bl callee
683 ; P8LE-NEXT:    nop
684 ; P8LE-NEXT:    li r3, 0
685 ; P8LE-NEXT:    addi r1, r1, 80
686 ; P8LE-NEXT:    ld r0, 16(r1)
687 ; P8LE-NEXT:    mtlr r0
688 ; P8LE-NEXT:    blr
690 ; P9LE-LABEL: caller_14:
691 ; P9LE:       # %bb.0: # %entry
692 ; P9LE-NEXT:    mflr r0
693 ; P9LE-NEXT:    stdu r1, -80(r1)
694 ; P9LE-NEXT:    std r0, 96(r1)
695 ; P9LE-NEXT:    stw r4, 56(r1)
696 ; P9LE-NEXT:    lwz r5, 56(r1)
697 ; P9LE-NEXT:    rldicl r4, r4, 32, 32
698 ; P9LE-NEXT:    std r3, 48(r1)
699 ; P9LE-NEXT:    sth r4, 60(r1)
700 ; P9LE-NEXT:    addi r4, r1, 66
701 ; P9LE-NEXT:    stdx r3, 0, r4
702 ; P9LE-NEXT:    mr r3, r4
703 ; P9LE-NEXT:    stw r5, 74(r1)
704 ; P9LE-NEXT:    bl callee
705 ; P9LE-NEXT:    nop
706 ; P9LE-NEXT:    li r3, 0
707 ; P9LE-NEXT:    addi r1, r1, 80
708 ; P9LE-NEXT:    ld r0, 16(r1)
709 ; P9LE-NEXT:    mtlr r0
710 ; P9LE-NEXT:    blr
712 ; P10LE-LABEL: caller_14:
713 ; P10LE:       # %bb.0: # %entry
714 ; P10LE-NEXT:    mflr r0
715 ; P10LE-NEXT:    std r0, 16(r1)
716 ; P10LE-NEXT:    stdu r1, -80(r1)
717 ; P10LE-NEXT:    stw r4, 56(r1)
718 ; P10LE-NEXT:    rldicl r4, r4, 32, 32
719 ; P10LE-NEXT:    std r3, 48(r1)
720 ; P10LE-NEXT:    lwz r5, 56(r1)
721 ; P10LE-NEXT:    sth r4, 60(r1)
722 ; P10LE-NEXT:    addi r4, r1, 66
723 ; P10LE-NEXT:    stdx r3, 0, r4
724 ; P10LE-NEXT:    mr r3, r4
725 ; P10LE-NEXT:    stw r5, 74(r1)
726 ; P10LE-NEXT:    bl callee@notoc
727 ; P10LE-NEXT:    li r3, 0
728 ; P10LE-NEXT:    addi r1, r1, 80
729 ; P10LE-NEXT:    ld r0, 16(r1)
730 ; P10LE-NEXT:    mtlr r0
731 ; P10LE-NEXT:    blr
733 ; P8BE-LABEL: caller_14:
734 ; P8BE:       # %bb.0: # %entry
735 ; P8BE-NEXT:    mflr r0
736 ; P8BE-NEXT:    stdu r1, -144(r1)
737 ; P8BE-NEXT:    rldicl r5, r4, 48, 16
738 ; P8BE-NEXT:    std r0, 160(r1)
739 ; P8BE-NEXT:    sth r4, 204(r1)
740 ; P8BE-NEXT:    addi r4, r1, 130
741 ; P8BE-NEXT:    std r3, 192(r1)
742 ; P8BE-NEXT:    stw r5, 200(r1)
743 ; P8BE-NEXT:    stdx r3, 0, r4
744 ; P8BE-NEXT:    mr r3, r4
745 ; P8BE-NEXT:    lwz r5, 200(r1)
746 ; P8BE-NEXT:    stw r5, 138(r1)
747 ; P8BE-NEXT:    bl callee
748 ; P8BE-NEXT:    nop
749 ; P8BE-NEXT:    li r3, 0
750 ; P8BE-NEXT:    addi r1, r1, 144
751 ; P8BE-NEXT:    ld r0, 16(r1)
752 ; P8BE-NEXT:    mtlr r0
753 ; P8BE-NEXT:    blr
755 ; P9BE-LABEL: caller_14:
756 ; P9BE:       # %bb.0: # %entry
757 ; P9BE-NEXT:    mflr r0
758 ; P9BE-NEXT:    stdu r1, -144(r1)
759 ; P9BE-NEXT:    rldicl r5, r4, 48, 16
760 ; P9BE-NEXT:    std r0, 160(r1)
761 ; P9BE-NEXT:    sth r4, 204(r1)
762 ; P9BE-NEXT:    addi r4, r1, 130
763 ; P9BE-NEXT:    std r3, 192(r1)
764 ; P9BE-NEXT:    stw r5, 200(r1)
765 ; P9BE-NEXT:    stdx r3, 0, r4
766 ; P9BE-NEXT:    mr r3, r4
767 ; P9BE-NEXT:    lwz r5, 200(r1)
768 ; P9BE-NEXT:    stw r5, 138(r1)
769 ; P9BE-NEXT:    bl callee
770 ; P9BE-NEXT:    nop
771 ; P9BE-NEXT:    li r3, 0
772 ; P9BE-NEXT:    addi r1, r1, 144
773 ; P9BE-NEXT:    ld r0, 16(r1)
774 ; P9BE-NEXT:    mtlr r0
775 ; P9BE-NEXT:    blr
777 ; P10BE-LABEL: caller_14:
778 ; P10BE:       # %bb.0: # %entry
779 ; P10BE-NEXT:    mflr r0
780 ; P10BE-NEXT:    std r0, 16(r1)
781 ; P10BE-NEXT:    stdu r1, -144(r1)
782 ; P10BE-NEXT:    rldicl r5, r4, 48, 16
783 ; P10BE-NEXT:    sth r4, 204(r1)
784 ; P10BE-NEXT:    addi r4, r1, 130
785 ; P10BE-NEXT:    std r3, 192(r1)
786 ; P10BE-NEXT:    stw r5, 200(r1)
787 ; P10BE-NEXT:    stdx r3, 0, r4
788 ; P10BE-NEXT:    mr r3, r4
789 ; P10BE-NEXT:    lwz r5, 200(r1)
790 ; P10BE-NEXT:    stw r5, 138(r1)
791 ; P10BE-NEXT:    bl callee
792 ; P10BE-NEXT:    nop
793 ; P10BE-NEXT:    li r3, 0
794 ; P10BE-NEXT:    addi r1, r1, 144
795 ; P10BE-NEXT:    ld r0, 16(r1)
796 ; P10BE-NEXT:    mtlr r0
797 ; P10BE-NEXT:    blr
798 entry:
799   %_param_data = alloca [14 x i8], align 1
800   %.unpack0 = load i8, ptr %data, align 1
801   %.elt1 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 1
802   %.unpack1 = load i8, ptr %.elt1, align 1
803   %.elt2 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 2
804   %.unpack2 = load i8, ptr %.elt2, align 1
805   %.elt3 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 3
806   %.unpack3 = load i8, ptr %.elt3, align 1
807   %.elt4 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 4
808   %.unpack4 = load i8, ptr %.elt4, align 1
809   %.elt5 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 5
810   %.unpack5 = load i8, ptr %.elt5, align 1
811   %.elt6 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 6
812   %.unpack6 = load i8, ptr %.elt6, align 1
813   %.elt7 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 7
814   %.unpack7 = load i8, ptr %.elt7, align 1
815   %.elt8 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 8
816   %.unpack8 = load i8, ptr %.elt8, align 1
817   %.elt9 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 9
818   %.unpack9 = load i8, ptr %.elt9, align 1
819   %.elt10 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 10
820   %.unpack10 = load i8, ptr %.elt10, align 1
821   %.elt11 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 11
822   %.unpack11 = load i8, ptr %.elt11, align 1
823   store i8 %.unpack0, ptr %_param_data, align 1
824   %.temp.1.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 1
825   store i8 %.unpack1, ptr %.temp.1.gep, align 1
826   %.temp.2.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 2
827   store i8 %.unpack2, ptr %.temp.2.gep, align 1
828   %.temp.3.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 3
829   store i8 %.unpack3, ptr %.temp.3.gep, align 1
830   %.temp.4.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 4
831   store i8 %.unpack4, ptr %.temp.4.gep, align 1
832   %.temp.5.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 5
833   store i8 %.unpack5, ptr %.temp.5.gep, align 1
834   %.temp.6.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 6
835   store i8 %.unpack6, ptr %.temp.6.gep, align 1
836   %.temp.7.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 7
837   store i8 %.unpack7, ptr %.temp.7.gep, align 1
838   %.temp.8.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 8
839   store i8 %.unpack8, ptr %.temp.8.gep, align 1
840   %.temp.9.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 9
841   store i8 %.unpack9, ptr %.temp.9.gep, align 1
842   %.temp.10.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 10
843   store i8 %.unpack10, ptr %.temp.10.gep, align 1
844   %.temp.11.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 11
845   store i8 %.unpack11, ptr %.temp.11.gep, align 1
846   call void @callee(ptr nonnull %_param_data)
847   ret i8 0
850 define signext i8 @caller_16(ptr nocapture readonly byval([16 x i8]) %data) #0 {
851 ; P8LE-LABEL: caller_16:
852 ; P8LE:       # %bb.0: # %entry
853 ; P8LE-NEXT:    mflr r0
854 ; P8LE-NEXT:    stdu r1, -80(r1)
855 ; P8LE-NEXT:    addi r5, r1, 64
856 ; P8LE-NEXT:    std r0, 96(r1)
857 ; P8LE-NEXT:    std r3, 48(r1)
858 ; P8LE-NEXT:    std r4, 56(r1)
859 ; P8LE-NEXT:    stw r4, 72(r1)
860 ; P8LE-NEXT:    std r3, 64(r1)
861 ; P8LE-NEXT:    mr r3, r5
862 ; P8LE-NEXT:    bl callee
863 ; P8LE-NEXT:    nop
864 ; P8LE-NEXT:    li r3, 0
865 ; P8LE-NEXT:    addi r1, r1, 80
866 ; P8LE-NEXT:    ld r0, 16(r1)
867 ; P8LE-NEXT:    mtlr r0
868 ; P8LE-NEXT:    blr
870 ; P9LE-LABEL: caller_16:
871 ; P9LE:       # %bb.0: # %entry
872 ; P9LE-NEXT:    mflr r0
873 ; P9LE-NEXT:    stdu r1, -80(r1)
874 ; P9LE-NEXT:    addi r5, r1, 64
875 ; P9LE-NEXT:    std r0, 96(r1)
876 ; P9LE-NEXT:    std r3, 48(r1)
877 ; P9LE-NEXT:    std r4, 56(r1)
878 ; P9LE-NEXT:    stw r4, 72(r1)
879 ; P9LE-NEXT:    std r3, 64(r1)
880 ; P9LE-NEXT:    mr r3, r5
881 ; P9LE-NEXT:    bl callee
882 ; P9LE-NEXT:    nop
883 ; P9LE-NEXT:    li r3, 0
884 ; P9LE-NEXT:    addi r1, r1, 80
885 ; P9LE-NEXT:    ld r0, 16(r1)
886 ; P9LE-NEXT:    mtlr r0
887 ; P9LE-NEXT:    blr
889 ; P10LE-LABEL: caller_16:
890 ; P10LE:       # %bb.0: # %entry
891 ; P10LE-NEXT:    mflr r0
892 ; P10LE-NEXT:    std r0, 16(r1)
893 ; P10LE-NEXT:    stdu r1, -80(r1)
894 ; P10LE-NEXT:    addi r5, r1, 64
895 ; P10LE-NEXT:    std r3, 48(r1)
896 ; P10LE-NEXT:    std r4, 56(r1)
897 ; P10LE-NEXT:    stw r4, 72(r1)
898 ; P10LE-NEXT:    std r3, 64(r1)
899 ; P10LE-NEXT:    mr r3, r5
900 ; P10LE-NEXT:    bl callee@notoc
901 ; P10LE-NEXT:    li r3, 0
902 ; P10LE-NEXT:    addi r1, r1, 80
903 ; P10LE-NEXT:    ld r0, 16(r1)
904 ; P10LE-NEXT:    mtlr r0
905 ; P10LE-NEXT:    blr
907 ; P8BE-LABEL: caller_16:
908 ; P8BE:       # %bb.0: # %entry
909 ; P8BE-NEXT:    mflr r0
910 ; P8BE-NEXT:    stdu r1, -144(r1)
911 ; P8BE-NEXT:    std r0, 160(r1)
912 ; P8BE-NEXT:    std r4, 200(r1)
913 ; P8BE-NEXT:    rldicl r5, r4, 32, 32
914 ; P8BE-NEXT:    addi r4, r1, 128
915 ; P8BE-NEXT:    std r3, 192(r1)
916 ; P8BE-NEXT:    std r3, 128(r1)
917 ; P8BE-NEXT:    mr r3, r4
918 ; P8BE-NEXT:    stw r5, 136(r1)
919 ; P8BE-NEXT:    bl callee
920 ; P8BE-NEXT:    nop
921 ; P8BE-NEXT:    li r3, 0
922 ; P8BE-NEXT:    addi r1, r1, 144
923 ; P8BE-NEXT:    ld r0, 16(r1)
924 ; P8BE-NEXT:    mtlr r0
925 ; P8BE-NEXT:    blr
927 ; P9BE-LABEL: caller_16:
928 ; P9BE:       # %bb.0: # %entry
929 ; P9BE-NEXT:    mflr r0
930 ; P9BE-NEXT:    stdu r1, -144(r1)
931 ; P9BE-NEXT:    std r0, 160(r1)
932 ; P9BE-NEXT:    std r4, 200(r1)
933 ; P9BE-NEXT:    rldicl r5, r4, 32, 32
934 ; P9BE-NEXT:    addi r4, r1, 128
935 ; P9BE-NEXT:    std r3, 192(r1)
936 ; P9BE-NEXT:    std r3, 128(r1)
937 ; P9BE-NEXT:    mr r3, r4
938 ; P9BE-NEXT:    stw r5, 136(r1)
939 ; P9BE-NEXT:    bl callee
940 ; P9BE-NEXT:    nop
941 ; P9BE-NEXT:    li r3, 0
942 ; P9BE-NEXT:    addi r1, r1, 144
943 ; P9BE-NEXT:    ld r0, 16(r1)
944 ; P9BE-NEXT:    mtlr r0
945 ; P9BE-NEXT:    blr
947 ; P10BE-LABEL: caller_16:
948 ; P10BE:       # %bb.0: # %entry
949 ; P10BE-NEXT:    mflr r0
950 ; P10BE-NEXT:    std r0, 16(r1)
951 ; P10BE-NEXT:    stdu r1, -144(r1)
952 ; P10BE-NEXT:    std r3, 192(r1)
953 ; P10BE-NEXT:    std r4, 200(r1)
954 ; P10BE-NEXT:    rldicl r5, r4, 32, 32
955 ; P10BE-NEXT:    addi r4, r1, 128
956 ; P10BE-NEXT:    std r3, 128(r1)
957 ; P10BE-NEXT:    mr r3, r4
958 ; P10BE-NEXT:    stw r5, 136(r1)
959 ; P10BE-NEXT:    bl callee
960 ; P10BE-NEXT:    nop
961 ; P10BE-NEXT:    li r3, 0
962 ; P10BE-NEXT:    addi r1, r1, 144
963 ; P10BE-NEXT:    ld r0, 16(r1)
964 ; P10BE-NEXT:    mtlr r0
965 ; P10BE-NEXT:    blr
966 entry:
967   %_param_data = alloca [16 x i8], align 1
968   %.unpack0 = load i8, ptr %data, align 1
969   %.elt1 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 1
970   %.unpack1 = load i8, ptr %.elt1, align 1
971   %.elt2 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 2
972   %.unpack2 = load i8, ptr %.elt2, align 1
973   %.elt3 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 3
974   %.unpack3 = load i8, ptr %.elt3, align 1
975   %.elt4 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 4
976   %.unpack4 = load i8, ptr %.elt4, align 1
977   %.elt5 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 5
978   %.unpack5 = load i8, ptr %.elt5, align 1
979   %.elt6 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 6
980   %.unpack6 = load i8, ptr %.elt6, align 1
981   %.elt7 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 7
982   %.unpack7 = load i8, ptr %.elt7, align 1
983   %.elt8 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 8
984   %.unpack8 = load i8, ptr %.elt8, align 1
985   %.elt9 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 9
986   %.unpack9 = load i8, ptr %.elt9, align 1
987   %.elt10 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 10
988   %.unpack10 = load i8, ptr %.elt10, align 1
989   %.elt11 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 11
990   %.unpack11 = load i8, ptr %.elt11, align 1
991   store i8 %.unpack0, ptr %_param_data, align 1
992   %.temp.1.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 1
993   store i8 %.unpack1, ptr %.temp.1.gep, align 1
994   %.temp.2.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 2
995   store i8 %.unpack2, ptr %.temp.2.gep, align 1
996   %.temp.3.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 3
997   store i8 %.unpack3, ptr %.temp.3.gep, align 1
998   %.temp.4.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 4
999   store i8 %.unpack4, ptr %.temp.4.gep, align 1
1000   %.temp.5.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 5
1001   store i8 %.unpack5, ptr %.temp.5.gep, align 1
1002   %.temp.6.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 6
1003   store i8 %.unpack6, ptr %.temp.6.gep, align 1
1004   %.temp.7.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 7
1005   store i8 %.unpack7, ptr %.temp.7.gep, align 1
1006   %.temp.8.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 8
1007   store i8 %.unpack8, ptr %.temp.8.gep, align 1
1008   %.temp.9.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 9
1009   store i8 %.unpack9, ptr %.temp.9.gep, align 1
1010   %.temp.10.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 10
1011   store i8 %.unpack10, ptr %.temp.10.gep, align 1
1012   %.temp.11.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 11
1013   store i8 %.unpack11, ptr %.temp.11.gep, align 1
1014   call void @callee(ptr nonnull %_param_data)
1015   ret i8 0
1018 define signext i8 @caller_18(ptr nocapture readonly byval([18 x i8]) %data) #0 {
1019 ; P8LE-LABEL: caller_18:
1020 ; P8LE:       # %bb.0: # %entry
1021 ; P8LE-NEXT:    mflr r0
1022 ; P8LE-NEXT:    stdu r1, -96(r1)
1023 ; P8LE-NEXT:    std r0, 112(r1)
1024 ; P8LE-NEXT:    sth r5, 64(r1)
1025 ; P8LE-NEXT:    addi r5, r1, 78
1026 ; P8LE-NEXT:    std r3, 48(r1)
1027 ; P8LE-NEXT:    std r4, 56(r1)
1028 ; P8LE-NEXT:    stw r4, 86(r1)
1029 ; P8LE-NEXT:    stdx r3, 0, r5
1030 ; P8LE-NEXT:    mr r3, r5
1031 ; P8LE-NEXT:    bl callee
1032 ; P8LE-NEXT:    nop
1033 ; P8LE-NEXT:    li r3, 0
1034 ; P8LE-NEXT:    addi r1, r1, 96
1035 ; P8LE-NEXT:    ld r0, 16(r1)
1036 ; P8LE-NEXT:    mtlr r0
1037 ; P8LE-NEXT:    blr
1039 ; P9LE-LABEL: caller_18:
1040 ; P9LE:       # %bb.0: # %entry
1041 ; P9LE-NEXT:    mflr r0
1042 ; P9LE-NEXT:    stdu r1, -96(r1)
1043 ; P9LE-NEXT:    std r0, 112(r1)
1044 ; P9LE-NEXT:    sth r5, 64(r1)
1045 ; P9LE-NEXT:    addi r5, r1, 78
1046 ; P9LE-NEXT:    std r3, 48(r1)
1047 ; P9LE-NEXT:    std r4, 56(r1)
1048 ; P9LE-NEXT:    stw r4, 86(r1)
1049 ; P9LE-NEXT:    stdx r3, 0, r5
1050 ; P9LE-NEXT:    mr r3, r5
1051 ; P9LE-NEXT:    bl callee
1052 ; P9LE-NEXT:    nop
1053 ; P9LE-NEXT:    li r3, 0
1054 ; P9LE-NEXT:    addi r1, r1, 96
1055 ; P9LE-NEXT:    ld r0, 16(r1)
1056 ; P9LE-NEXT:    mtlr r0
1057 ; P9LE-NEXT:    blr
1059 ; P10LE-LABEL: caller_18:
1060 ; P10LE:       # %bb.0: # %entry
1061 ; P10LE-NEXT:    mflr r0
1062 ; P10LE-NEXT:    std r0, 16(r1)
1063 ; P10LE-NEXT:    stdu r1, -96(r1)
1064 ; P10LE-NEXT:    sth r5, 64(r1)
1065 ; P10LE-NEXT:    addi r5, r1, 78
1066 ; P10LE-NEXT:    std r3, 48(r1)
1067 ; P10LE-NEXT:    std r4, 56(r1)
1068 ; P10LE-NEXT:    stw r4, 86(r1)
1069 ; P10LE-NEXT:    stdx r3, 0, r5
1070 ; P10LE-NEXT:    mr r3, r5
1071 ; P10LE-NEXT:    bl callee@notoc
1072 ; P10LE-NEXT:    li r3, 0
1073 ; P10LE-NEXT:    addi r1, r1, 96
1074 ; P10LE-NEXT:    ld r0, 16(r1)
1075 ; P10LE-NEXT:    mtlr r0
1076 ; P10LE-NEXT:    blr
1078 ; P8BE-LABEL: caller_18:
1079 ; P8BE:       # %bb.0: # %entry
1080 ; P8BE-NEXT:    mflr r0
1081 ; P8BE-NEXT:    stdu r1, -144(r1)
1082 ; P8BE-NEXT:    std r0, 160(r1)
1083 ; P8BE-NEXT:    std r4, 200(r1)
1084 ; P8BE-NEXT:    sth r5, 208(r1)
1085 ; P8BE-NEXT:    rldicl r5, r4, 32, 32
1086 ; P8BE-NEXT:    addi r4, r1, 126
1087 ; P8BE-NEXT:    std r3, 192(r1)
1088 ; P8BE-NEXT:    stdx r3, 0, r4
1089 ; P8BE-NEXT:    mr r3, r4
1090 ; P8BE-NEXT:    stw r5, 134(r1)
1091 ; P8BE-NEXT:    bl callee
1092 ; P8BE-NEXT:    nop
1093 ; P8BE-NEXT:    li r3, 0
1094 ; P8BE-NEXT:    addi r1, r1, 144
1095 ; P8BE-NEXT:    ld r0, 16(r1)
1096 ; P8BE-NEXT:    mtlr r0
1097 ; P8BE-NEXT:    blr
1099 ; P9BE-LABEL: caller_18:
1100 ; P9BE:       # %bb.0: # %entry
1101 ; P9BE-NEXT:    mflr r0
1102 ; P9BE-NEXT:    stdu r1, -144(r1)
1103 ; P9BE-NEXT:    std r0, 160(r1)
1104 ; P9BE-NEXT:    std r4, 200(r1)
1105 ; P9BE-NEXT:    sth r5, 208(r1)
1106 ; P9BE-NEXT:    rldicl r5, r4, 32, 32
1107 ; P9BE-NEXT:    addi r4, r1, 126
1108 ; P9BE-NEXT:    std r3, 192(r1)
1109 ; P9BE-NEXT:    stdx r3, 0, r4
1110 ; P9BE-NEXT:    mr r3, r4
1111 ; P9BE-NEXT:    stw r5, 134(r1)
1112 ; P9BE-NEXT:    bl callee
1113 ; P9BE-NEXT:    nop
1114 ; P9BE-NEXT:    li r3, 0
1115 ; P9BE-NEXT:    addi r1, r1, 144
1116 ; P9BE-NEXT:    ld r0, 16(r1)
1117 ; P9BE-NEXT:    mtlr r0
1118 ; P9BE-NEXT:    blr
1120 ; P10BE-LABEL: caller_18:
1121 ; P10BE:       # %bb.0: # %entry
1122 ; P10BE-NEXT:    mflr r0
1123 ; P10BE-NEXT:    std r0, 16(r1)
1124 ; P10BE-NEXT:    stdu r1, -144(r1)
1125 ; P10BE-NEXT:    std r3, 192(r1)
1126 ; P10BE-NEXT:    std r4, 200(r1)
1127 ; P10BE-NEXT:    sth r5, 208(r1)
1128 ; P10BE-NEXT:    rldicl r5, r4, 32, 32
1129 ; P10BE-NEXT:    addi r4, r1, 126
1130 ; P10BE-NEXT:    stdx r3, 0, r4
1131 ; P10BE-NEXT:    mr r3, r4
1132 ; P10BE-NEXT:    stw r5, 134(r1)
1133 ; P10BE-NEXT:    bl callee
1134 ; P10BE-NEXT:    nop
1135 ; P10BE-NEXT:    li r3, 0
1136 ; P10BE-NEXT:    addi r1, r1, 144
1137 ; P10BE-NEXT:    ld r0, 16(r1)
1138 ; P10BE-NEXT:    mtlr r0
1139 ; P10BE-NEXT:    blr
1140 entry:
1141   %_param_data = alloca [18 x i8], align 1
1142   %.unpack0 = load i8, ptr %data, align 1
1143   %.elt1 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 1
1144   %.unpack1 = load i8, ptr %.elt1, align 1
1145   %.elt2 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 2
1146   %.unpack2 = load i8, ptr %.elt2, align 1
1147   %.elt3 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 3
1148   %.unpack3 = load i8, ptr %.elt3, align 1
1149   %.elt4 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 4
1150   %.unpack4 = load i8, ptr %.elt4, align 1
1151   %.elt5 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 5
1152   %.unpack5 = load i8, ptr %.elt5, align 1
1153   %.elt6 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 6
1154   %.unpack6 = load i8, ptr %.elt6, align 1
1155   %.elt7 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 7
1156   %.unpack7 = load i8, ptr %.elt7, align 1
1157   %.elt8 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 8
1158   %.unpack8 = load i8, ptr %.elt8, align 1
1159   %.elt9 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 9
1160   %.unpack9 = load i8, ptr %.elt9, align 1
1161   %.elt10 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 10
1162   %.unpack10 = load i8, ptr %.elt10, align 1
1163   %.elt11 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 11
1164   %.unpack11 = load i8, ptr %.elt11, align 1
1165   store i8 %.unpack0, ptr %_param_data, align 1
1166   %.temp.1.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 1
1167   store i8 %.unpack1, ptr %.temp.1.gep, align 1
1168   %.temp.2.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 2
1169   store i8 %.unpack2, ptr %.temp.2.gep, align 1
1170   %.temp.3.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 3
1171   store i8 %.unpack3, ptr %.temp.3.gep, align 1
1172   %.temp.4.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 4
1173   store i8 %.unpack4, ptr %.temp.4.gep, align 1
1174   %.temp.5.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 5
1175   store i8 %.unpack5, ptr %.temp.5.gep, align 1
1176   %.temp.6.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 6
1177   store i8 %.unpack6, ptr %.temp.6.gep, align 1
1178   %.temp.7.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 7
1179   store i8 %.unpack7, ptr %.temp.7.gep, align 1
1180   %.temp.8.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 8
1181   store i8 %.unpack8, ptr %.temp.8.gep, align 1
1182   %.temp.9.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 9
1183   store i8 %.unpack9, ptr %.temp.9.gep, align 1
1184   %.temp.10.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 10
1185   store i8 %.unpack10, ptr %.temp.10.gep, align 1
1186   %.temp.11.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 11
1187   store i8 %.unpack11, ptr %.temp.11.gep, align 1
1188   call void @callee(ptr nonnull %_param_data)
1189   ret i8 0
1194 declare void @callee(ptr) local_unnamed_addr #0
1195 declare void @callee_9(ptr nocapture readonly byval([9 x i8]) %data) local_unnamed_addr #0
1197 attributes #0 = { nounwind }