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
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
31 ; P8LE-NEXT: addi r1, r1, 80
32 ; P8LE-NEXT: ld r0, 16(r1)
36 ; P9LE-LABEL: caller_9:
37 ; P9LE: # %bb.0: # %entry
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
51 ; P9LE-NEXT: addi r1, r1, 80
52 ; P9LE-NEXT: ld r0, 16(r1)
56 ; P10LE-LABEL: caller_9:
57 ; P10LE: # %bb.0: # %entry
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)
75 ; P8BE-LABEL: caller_9:
76 ; P8BE: # %bb.0: # %entry
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
90 ; P8BE-NEXT: addi r1, r1, 144
91 ; P8BE-NEXT: ld r0, 16(r1)
95 ; P9BE-LABEL: caller_9:
96 ; P9BE: # %bb.0: # %entry
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
109 ; P9BE-NEXT: li r3, 0
110 ; P9BE-NEXT: addi r1, r1, 144
111 ; P9BE-NEXT: ld r0, 16(r1)
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
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
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)
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
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
189 ; P8LE-NEXT: li r3, 0
190 ; P8LE-NEXT: addi r1, r1, 80
191 ; P8LE-NEXT: ld r0, 16(r1)
195 ; P9LE-LABEL: caller_9_callee_9:
196 ; P9LE: # %bb.0: # %entry
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
209 ; P9LE-NEXT: li r3, 0
210 ; P9LE-NEXT: addi r1, r1, 80
211 ; P9LE-NEXT: ld r0, 16(r1)
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
234 ; P8BE-LABEL: caller_9_callee_9:
235 ; P8BE: # %bb.0: # %entry
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
248 ; P8BE-NEXT: li r3, 0
249 ; P8BE-NEXT: addi r1, r1, 144
250 ; P8BE-NEXT: ld r0, 16(r1)
254 ; P9BE-LABEL: caller_9_callee_9:
255 ; P9BE: # %bb.0: # %entry
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
268 ; P9BE-NEXT: li r3, 0
269 ; P9BE-NEXT: addi r1, r1, 144
270 ; P9BE-NEXT: ld r0, 16(r1)
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
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
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)
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
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
348 ; P8LE-NEXT: li r3, 0
349 ; P8LE-NEXT: addi r1, r1, 80
350 ; P8LE-NEXT: ld r0, 16(r1)
354 ; P9LE-LABEL: caller_10:
355 ; P9LE: # %bb.0: # %entry
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
368 ; P9LE-NEXT: li r3, 0
369 ; P9LE-NEXT: addi r1, r1, 80
370 ; P9LE-NEXT: ld r0, 16(r1)
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
393 ; P8BE-LABEL: caller_10:
394 ; P8BE: # %bb.0: # %entry
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
407 ; P8BE-NEXT: li r3, 0
408 ; P8BE-NEXT: addi r1, r1, 144
409 ; P8BE-NEXT: ld r0, 16(r1)
413 ; P9BE-LABEL: caller_10:
414 ; P9BE: # %bb.0: # %entry
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
427 ; P9BE-NEXT: li r3, 0
428 ; P9BE-NEXT: addi r1, r1, 144
429 ; P9BE-NEXT: ld r0, 16(r1)
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
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
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)
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
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
511 ; P8LE-NEXT: li r3, 0
512 ; P8LE-NEXT: addi r1, r1, 80
513 ; P8LE-NEXT: ld r0, 16(r1)
517 ; P9LE-LABEL: caller_12:
518 ; P9LE: # %bb.0: # %entry
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
531 ; P9LE-NEXT: li r3, 0
532 ; P9LE-NEXT: addi r1, r1, 80
533 ; P9LE-NEXT: ld r0, 16(r1)
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
556 ; P8BE-LABEL: caller_12:
557 ; P8BE: # %bb.0: # %entry
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
570 ; P8BE-NEXT: li r3, 0
571 ; P8BE-NEXT: addi r1, r1, 144
572 ; P8BE-NEXT: ld r0, 16(r1)
576 ; P9BE-LABEL: caller_12:
577 ; P9BE: # %bb.0: # %entry
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
590 ; P9BE-NEXT: li r3, 0
591 ; P9BE-NEXT: addi r1, r1, 144
592 ; P9BE-NEXT: ld r0, 16(r1)
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
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
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)
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
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
684 ; P8LE-NEXT: li r3, 0
685 ; P8LE-NEXT: addi r1, r1, 80
686 ; P8LE-NEXT: ld r0, 16(r1)
690 ; P9LE-LABEL: caller_14:
691 ; P9LE: # %bb.0: # %entry
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
706 ; P9LE-NEXT: li r3, 0
707 ; P9LE-NEXT: addi r1, r1, 80
708 ; P9LE-NEXT: ld r0, 16(r1)
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
733 ; P8BE-LABEL: caller_14:
734 ; P8BE: # %bb.0: # %entry
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
749 ; P8BE-NEXT: li r3, 0
750 ; P8BE-NEXT: addi r1, r1, 144
751 ; P8BE-NEXT: ld r0, 16(r1)
755 ; P9BE-LABEL: caller_14:
756 ; P9BE: # %bb.0: # %entry
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
771 ; P9BE-NEXT: li r3, 0
772 ; P9BE-NEXT: addi r1, r1, 144
773 ; P9BE-NEXT: ld r0, 16(r1)
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
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
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)
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
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
864 ; P8LE-NEXT: li r3, 0
865 ; P8LE-NEXT: addi r1, r1, 80
866 ; P8LE-NEXT: ld r0, 16(r1)
870 ; P9LE-LABEL: caller_16:
871 ; P9LE: # %bb.0: # %entry
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
883 ; P9LE-NEXT: li r3, 0
884 ; P9LE-NEXT: addi r1, r1, 80
885 ; P9LE-NEXT: ld r0, 16(r1)
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
907 ; P8BE-LABEL: caller_16:
908 ; P8BE: # %bb.0: # %entry
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
921 ; P8BE-NEXT: li r3, 0
922 ; P8BE-NEXT: addi r1, r1, 144
923 ; P8BE-NEXT: ld r0, 16(r1)
927 ; P9BE-LABEL: caller_16:
928 ; P9BE: # %bb.0: # %entry
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
941 ; P9BE-NEXT: li r3, 0
942 ; P9BE-NEXT: addi r1, r1, 144
943 ; P9BE-NEXT: ld r0, 16(r1)
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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)
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 }