1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -verify-machineinstrs < %s | FileCheck %s
4 target datalayout = "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512"
5 target triple = "powerpc64le-unknown-linux-gnu"
7 %struct_S1 = type { [1 x i8] }
8 @gS1 = external global %struct_S1, align 1
10 define void @call_test_byval_mem1() #0 {
11 ; CHECK-LABEL: call_test_byval_mem1:
12 ; CHECK: # %bb.0: # %entry
14 ; CHECK-NEXT: stdu 1, -32(1)
15 ; CHECK-NEXT: std 0, 48(1)
16 ; CHECK-NEXT: .cfi_def_cfa_offset 32
17 ; CHECK-NEXT: .cfi_offset lr, 16
18 ; CHECK-NEXT: addis 3, 2, .LC0@toc@ha
19 ; CHECK-NEXT: ld 3, .LC0@toc@l(3)
20 ; CHECK-NEXT: lbz 3, 0(3)
21 ; CHECK-NEXT: bl test_byval_mem1
23 ; CHECK-NEXT: addi 1, 1, 32
24 ; CHECK-NEXT: ld 0, 16(1)
28 %call = call zeroext i8 @test_byval_mem1(ptr byval(%struct_S1) align 1 @gS1)
32 define zeroext i8 @test_byval_mem1(ptr byval(%struct_S1) align 1 %s) {
33 ; CHECK-LABEL: test_byval_mem1:
34 ; CHECK: # %bb.0: # %entry
35 ; CHECK-NEXT: stb 3, -8(1)
36 ; CHECK-NEXT: clrldi 3, 3, 56
39 %0 = load i8, ptr %s, align 1
43 define void @call_test_byval_mem1_2() #0 {
44 ; CHECK-LABEL: call_test_byval_mem1_2:
45 ; CHECK: # %bb.0: # %entry
47 ; CHECK-NEXT: stdu 1, -112(1)
48 ; CHECK-NEXT: std 0, 128(1)
49 ; CHECK-NEXT: .cfi_def_cfa_offset 112
50 ; CHECK-NEXT: .cfi_offset lr, 16
51 ; CHECK-NEXT: addis 3, 2, .LC0@toc@ha
58 ; CHECK-NEXT: li 10, 7
59 ; CHECK-NEXT: ld 3, .LC0@toc@l(3)
60 ; CHECK-NEXT: lbz 3, 0(3)
61 ; CHECK-NEXT: stb 3, 96(1)
63 ; CHECK-NEXT: bl test_byval_mem1_2
65 ; CHECK-NEXT: addi 1, 1, 112
66 ; CHECK-NEXT: ld 0, 16(1)
70 %call = call zeroext i8 @test_byval_mem1_2(i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, ptr byval(%struct_S1) align 1 @gS1)
74 define zeroext i8 @test_byval_mem1_2(i64 %v1, i64 %v2, i64 %v3, i64 %v4, i64 %v5, i64 %v6, i64 %v7, i64 %v8, ptr byval(%struct_S1) align 1 %s) {
75 ; CHECK-LABEL: test_byval_mem1_2:
76 ; CHECK: # %bb.0: # %entry
77 ; CHECK-NEXT: lbz 3, 96(1)
80 %0 = load i8, ptr %s, align 1
84 define void @call_test_byval_mem1_3() #0 {
85 ; CHECK-LABEL: call_test_byval_mem1_3:
86 ; CHECK: # %bb.0: # %entry
88 ; CHECK-NEXT: stdu 1, -32(1)
89 ; CHECK-NEXT: std 0, 48(1)
90 ; CHECK-NEXT: .cfi_def_cfa_offset 32
91 ; CHECK-NEXT: .cfi_offset lr, 16
92 ; CHECK-NEXT: addis 3, 2, .LC0@toc@ha
99 ; CHECK-NEXT: ld 3, .LC0@toc@l(3)
100 ; CHECK-NEXT: lbz 10, 0(3)
101 ; CHECK-NEXT: li 3, 0
102 ; CHECK-NEXT: bl test_byval_mem1_3
104 ; CHECK-NEXT: addi 1, 1, 32
105 ; CHECK-NEXT: ld 0, 16(1)
109 %call = call zeroext i8 @test_byval_mem1_3(i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, ptr byval(%struct_S1) align 1 @gS1)
113 define zeroext i8 @test_byval_mem1_3(i64 %v1, i64 %v2, i64 %v3, i64 %v4, i64 %v5, i64 %v6, i64 %v7, ptr byval(%struct_S1) align 1 %s) {
114 ; CHECK-LABEL: test_byval_mem1_3:
115 ; CHECK: # %bb.0: # %entry
116 ; CHECK-NEXT: clrldi 3, 10, 56
117 ; CHECK-NEXT: stb 10, -8(1)
120 %0 = load i8, ptr %s, align 1
124 define void @call_test_byval_mem1_4() #0 {
125 ; CHECK-LABEL: call_test_byval_mem1_4:
126 ; CHECK: # %bb.0: # %entry
128 ; CHECK-NEXT: stdu 1, -112(1)
129 ; CHECK-NEXT: std 0, 128(1)
130 ; CHECK-NEXT: .cfi_def_cfa_offset 112
131 ; CHECK-NEXT: .cfi_offset lr, 16
132 ; CHECK-NEXT: li 3, 7
133 ; CHECK-NEXT: li 4, 1
134 ; CHECK-NEXT: li 5, 2
135 ; CHECK-NEXT: li 7, 3
136 ; CHECK-NEXT: li 8, 4
137 ; CHECK-NEXT: li 9, 5
138 ; CHECK-NEXT: li 10, 6
139 ; CHECK-NEXT: std 3, 96(1)
140 ; CHECK-NEXT: addis 3, 2, .LC0@toc@ha
141 ; CHECK-NEXT: ld 3, .LC0@toc@l(3)
142 ; CHECK-NEXT: lbz 6, 0(3)
143 ; CHECK-NEXT: li 3, 0
144 ; CHECK-NEXT: bl test_byval_mem1_4
146 ; CHECK-NEXT: addi 1, 1, 112
147 ; CHECK-NEXT: ld 0, 16(1)
151 %call = call zeroext i8 @test_byval_mem1_4(i64 0, i64 1, i64 2, ptr byval(%struct_S1) align 1 @gS1, i64 3, i64 4, i64 5, i64 6, i64 7)
155 define zeroext i8 @test_byval_mem1_4(i64 %v1, i64 %v2, i64 %v3, ptr byval(%struct_S1) align 1 %s, i64 %v4, i64 %v5, i64 %v6, i64 %v7, i64 %v8) {
156 ; CHECK-LABEL: test_byval_mem1_4:
157 ; CHECK: # %bb.0: # %entry
158 ; CHECK-NEXT: clrldi 3, 6, 56
159 ; CHECK-NEXT: stb 6, 56(1)
162 %0 = load i8, ptr %s, align 1
166 define void @call_test_byval_mem1_5() #0 {
167 ; CHECK-LABEL: call_test_byval_mem1_5:
168 ; CHECK: # %bb.0: # %entry
170 ; CHECK-NEXT: stdu 1, -32(1)
171 ; CHECK-NEXT: std 0, 48(1)
172 ; CHECK-NEXT: .cfi_def_cfa_offset 32
173 ; CHECK-NEXT: .cfi_offset lr, 16
174 ; CHECK-NEXT: addis 3, 2, .LC0@toc@ha
175 ; CHECK-NEXT: li 4, 1
176 ; CHECK-NEXT: li 5, 2
177 ; CHECK-NEXT: li 7, 3
178 ; CHECK-NEXT: li 8, 4
179 ; CHECK-NEXT: li 9, 5
180 ; CHECK-NEXT: li 10, 6
181 ; CHECK-NEXT: ld 3, .LC0@toc@l(3)
182 ; CHECK-NEXT: lbz 6, 0(3)
183 ; CHECK-NEXT: li 3, 0
184 ; CHECK-NEXT: bl test_byval_mem1_5
186 ; CHECK-NEXT: addi 1, 1, 32
187 ; CHECK-NEXT: ld 0, 16(1)
191 %call = call zeroext i8 @test_byval_mem1_5(i64 0, i64 1, i64 2, ptr byval(%struct_S1) align 1 @gS1, i64 3, i64 4, i64 5, i64 6)
195 define zeroext i8 @test_byval_mem1_5(i64 %v1, i64 %v2, i64 %v3, ptr byval(%struct_S1) align 1 %s, i64 %v4, i64 %v5, i64 %v6, i64 %v7) {
196 ; CHECK-LABEL: test_byval_mem1_5:
197 ; CHECK: # %bb.0: # %entry
198 ; CHECK-NEXT: clrldi 3, 6, 56
199 ; CHECK-NEXT: stb 6, -8(1)
202 %0 = load i8, ptr %s, align 1
206 %struct_S2 = type { [2 x i8] }
207 @gS2 = external global %struct_S2, align 1
209 define void @call_test_byval_mem2() #0 {
210 ; CHECK-LABEL: call_test_byval_mem2:
211 ; CHECK: # %bb.0: # %entry
213 ; CHECK-NEXT: stdu 1, -32(1)
214 ; CHECK-NEXT: std 0, 48(1)
215 ; CHECK-NEXT: .cfi_def_cfa_offset 32
216 ; CHECK-NEXT: .cfi_offset lr, 16
217 ; CHECK-NEXT: addis 3, 2, .LC1@toc@ha
218 ; CHECK-NEXT: ld 3, .LC1@toc@l(3)
219 ; CHECK-NEXT: lhz 3, 0(3)
220 ; CHECK-NEXT: bl test_byval_mem2
222 ; CHECK-NEXT: addi 1, 1, 32
223 ; CHECK-NEXT: ld 0, 16(1)
227 %call = call zeroext i8 @test_byval_mem2(ptr byval(%struct_S2) align 1 @gS2)
231 define zeroext i8 @test_byval_mem2(ptr byval(%struct_S2) align 1 %s) {
232 ; CHECK-LABEL: test_byval_mem2:
233 ; CHECK: # %bb.0: # %entry
234 ; CHECK-NEXT: sth 3, -8(1)
235 ; CHECK-NEXT: lbz 3, -8(1)
238 %0 = load i8, ptr %s, align 1
242 %struct_S3 = type { [3 x i8] }
243 @gS3 = external global %struct_S3, align 1
245 define void @call_test_byval_mem3() #0 {
246 ; CHECK-LABEL: call_test_byval_mem3:
247 ; CHECK: # %bb.0: # %entry
249 ; CHECK-NEXT: stdu 1, -32(1)
250 ; CHECK-NEXT: std 0, 48(1)
251 ; CHECK-NEXT: .cfi_def_cfa_offset 32
252 ; CHECK-NEXT: .cfi_offset lr, 16
253 ; CHECK-NEXT: addis 3, 2, .LC2@toc@ha
254 ; CHECK-NEXT: ld 3, .LC2@toc@l(3)
255 ; CHECK-NEXT: lbz 4, 2(3)
256 ; CHECK-NEXT: stb 4, 34(1)
257 ; CHECK-NEXT: lhz 3, 0(3)
258 ; CHECK-NEXT: sth 3, 32(1)
259 ; CHECK-NEXT: ld 3, 32(1)
260 ; CHECK-NEXT: bl test_byval_mem3
262 ; CHECK-NEXT: addi 1, 1, 32
263 ; CHECK-NEXT: ld 0, 16(1)
267 %call = call zeroext i8 @test_byval_mem3(ptr byval(%struct_S3) align 1 @gS3)
271 define zeroext i8 @test_byval_mem3(ptr byval(%struct_S3) align 1 %s) {
272 ; CHECK-LABEL: test_byval_mem3:
273 ; CHECK: # %bb.0: # %entry
274 ; CHECK-NEXT: sth 3, -8(1)
275 ; CHECK-NEXT: rldicl 3, 3, 48, 16
276 ; CHECK-NEXT: stb 3, -6(1)
277 ; CHECK-NEXT: lbz 3, -8(1)
280 %0 = load i8, ptr %s, align 1
284 %struct_S4 = type { [4 x i8] }
285 @gS4 = external global %struct_S4, align 1
287 define void @call_test_byval_mem4() #0 {
288 ; CHECK-LABEL: call_test_byval_mem4:
289 ; CHECK: # %bb.0: # %entry
291 ; CHECK-NEXT: stdu 1, -32(1)
292 ; CHECK-NEXT: std 0, 48(1)
293 ; CHECK-NEXT: .cfi_def_cfa_offset 32
294 ; CHECK-NEXT: .cfi_offset lr, 16
295 ; CHECK-NEXT: addis 3, 2, .LC3@toc@ha
296 ; CHECK-NEXT: ld 3, .LC3@toc@l(3)
297 ; CHECK-NEXT: lwz 3, 0(3)
298 ; CHECK-NEXT: bl test_byval_mem4
300 ; CHECK-NEXT: addi 1, 1, 32
301 ; CHECK-NEXT: ld 0, 16(1)
305 %call = call zeroext i8 @test_byval_mem4(ptr byval(%struct_S4) align 1 @gS4)
309 define zeroext i8 @test_byval_mem4(ptr byval(%struct_S4) align 1 %s) {
310 ; CHECK-LABEL: test_byval_mem4:
311 ; CHECK: # %bb.0: # %entry
312 ; CHECK-NEXT: stw 3, -8(1)
313 ; CHECK-NEXT: lbz 3, -8(1)
316 %0 = load i8, ptr %s, align 1
320 %struct_S8 = type { [8 x i8] }
321 @gS8 = external global %struct_S8, align 1
323 define void @call_test_byval_mem8() #0 {
324 ; CHECK-LABEL: call_test_byval_mem8:
325 ; CHECK: # %bb.0: # %entry
327 ; CHECK-NEXT: stdu 1, -32(1)
328 ; CHECK-NEXT: std 0, 48(1)
329 ; CHECK-NEXT: .cfi_def_cfa_offset 32
330 ; CHECK-NEXT: .cfi_offset lr, 16
331 ; CHECK-NEXT: addis 3, 2, .LC4@toc@ha
332 ; CHECK-NEXT: ld 3, .LC4@toc@l(3)
333 ; CHECK-NEXT: ld 3, 0(3)
334 ; CHECK-NEXT: bl test_byval_mem8
336 ; CHECK-NEXT: addi 1, 1, 32
337 ; CHECK-NEXT: ld 0, 16(1)
341 %call = call zeroext i8 @test_byval_mem8(ptr byval(%struct_S8) align 1 @gS8)
345 define zeroext i8 @test_byval_mem8(ptr byval(%struct_S8) align 1 %s) {
346 ; CHECK-LABEL: test_byval_mem8:
347 ; CHECK: # %bb.0: # %entry
348 ; CHECK-NEXT: std 3, -8(1)
349 ; CHECK-NEXT: clrldi 3, 3, 56
352 %0 = load i8, ptr %s, align 1
356 %struct_S32 = type {[32 x i8] }
357 @gS32 = external global %struct_S32, align 1
359 define void @call_test_byval_mem32() #0 {
360 ; CHECK-LABEL: call_test_byval_mem32:
361 ; CHECK: # %bb.0: # %entry
363 ; CHECK-NEXT: stdu 1, -32(1)
364 ; CHECK-NEXT: std 0, 48(1)
365 ; CHECK-NEXT: .cfi_def_cfa_offset 32
366 ; CHECK-NEXT: .cfi_offset lr, 16
367 ; CHECK-NEXT: addis 3, 2, .LC5@toc@ha
368 ; CHECK-NEXT: ld 3, .LC5@toc@l(3)
369 ; CHECK-NEXT: ld 6, 24(3)
370 ; CHECK-NEXT: ld 5, 16(3)
371 ; CHECK-NEXT: ld 4, 8(3)
372 ; CHECK-NEXT: ld 3, 0(3)
373 ; CHECK-NEXT: bl test_byval_mem32
375 ; CHECK-NEXT: addi 1, 1, 32
376 ; CHECK-NEXT: ld 0, 16(1)
380 %call = call zeroext i8 @test_byval_mem32(ptr byval(%struct_S32) align 1 @gS32)
384 define zeroext i8 @test_byval_mem32(ptr byval(%struct_S32) align 1 %s) {
385 ; CHECK-LABEL: test_byval_mem32:
386 ; CHECK: # %bb.0: # %entry
387 ; CHECK-NEXT: std 3, -32(1)
388 ; CHECK-NEXT: clrldi 3, 3, 56
389 ; CHECK-NEXT: std 4, -24(1)
390 ; CHECK-NEXT: std 5, -16(1)
391 ; CHECK-NEXT: std 6, -8(1)
394 %0 = load i8, ptr %s, align 1
398 define void @call_test_byval_mem32_2() #0 {
399 ; CHECK-LABEL: call_test_byval_mem32_2:
400 ; CHECK: # %bb.0: # %entry
402 ; CHECK-NEXT: stdu 1, -32(1)
403 ; CHECK-NEXT: std 0, 48(1)
404 ; CHECK-NEXT: .cfi_def_cfa_offset 32
405 ; CHECK-NEXT: .cfi_offset lr, 16
406 ; CHECK-NEXT: addis 3, 2, .LC5@toc@ha
407 ; CHECK-NEXT: vspltisw 2, 1
408 ; CHECK-NEXT: ld 3, .LC5@toc@l(3)
409 ; CHECK-NEXT: xvcvsxwdp 1, 34
410 ; CHECK-NEXT: # kill: def $f1 killed $f1 killed $vsl1
411 ; CHECK-NEXT: ld 7, 24(3)
412 ; CHECK-NEXT: ld 6, 16(3)
413 ; CHECK-NEXT: ld 5, 8(3)
414 ; CHECK-NEXT: ld 4, 0(3)
415 ; CHECK-NEXT: bl test_byval_mem32_2
417 ; CHECK-NEXT: addi 1, 1, 32
418 ; CHECK-NEXT: ld 0, 16(1)
422 %call = call zeroext i8 @test_byval_mem32_2(float 1.0, ptr byval(%struct_S32) align 1 @gS32)
426 define zeroext i8 @test_byval_mem32_2(float %f, ptr byval(%struct_S32) align 1 %s) {
427 ; CHECK-LABEL: test_byval_mem32_2:
428 ; CHECK: # %bb.0: # %entry
429 ; CHECK-NEXT: clrldi 3, 4, 56
430 ; CHECK-NEXT: std 4, -32(1)
431 ; CHECK-NEXT: std 5, -24(1)
432 ; CHECK-NEXT: std 6, -16(1)
433 ; CHECK-NEXT: std 7, -8(1)
436 %0 = load i8, ptr %s, align 1
440 define void @call_test_byval_mem32_3() #0 {
441 ; CHECK-LABEL: call_test_byval_mem32_3:
442 ; CHECK: # %bb.0: # %entry
444 ; CHECK-NEXT: stdu 1, -112(1)
445 ; CHECK-NEXT: std 0, 128(1)
446 ; CHECK-NEXT: .cfi_def_cfa_offset 112
447 ; CHECK-NEXT: .cfi_offset lr, 16
448 ; CHECK-NEXT: addis 3, 2, .LC5@toc@ha
449 ; CHECK-NEXT: li 4, 16
450 ; CHECK-NEXT: vspltisw 2, 1
451 ; CHECK-NEXT: vspltisw 3, 4
452 ; CHECK-NEXT: li 5, 3
453 ; CHECK-NEXT: li 7, 2
454 ; CHECK-NEXT: ld 3, .LC5@toc@l(3)
455 ; CHECK-NEXT: xvcvsxwdp 1, 34
456 ; CHECK-NEXT: # kill: def $f1 killed $f1 killed $vsl1
457 ; CHECK-NEXT: xvcvsxwdp 2, 35
458 ; CHECK-NEXT: # kill: def $f2 killed $f2 killed $vsl2
459 ; CHECK-NEXT: lxvd2x 0, 3, 4
460 ; CHECK-NEXT: li 4, 88
461 ; CHECK-NEXT: stxvd2x 0, 1, 4
462 ; CHECK-NEXT: li 4, 72
463 ; CHECK-NEXT: lxvd2x 0, 0, 3
464 ; CHECK-NEXT: stxvd2x 0, 1, 4
465 ; CHECK-NEXT: ld 10, 16(3)
466 ; CHECK-NEXT: ld 9, 8(3)
467 ; CHECK-NEXT: ld 8, 0(3)
468 ; CHECK-NEXT: li 3, 1
469 ; CHECK-NEXT: bl test_byval_mem32_3
471 ; CHECK-NEXT: addi 1, 1, 112
472 ; CHECK-NEXT: ld 0, 16(1)
476 %call = call zeroext i8 @test_byval_mem32_3(i64 1, float 1.0, i64 3, double 4.0, i32 2, ptr byval(%struct_S32) align 1 @gS32)
480 define zeroext i8 @test_byval_mem32_3(i64 %i1, float %f, i64 %i2, double %d, i32 %i3, ptr byval(%struct_S32) align 1 %s) {
481 ; CHECK-LABEL: test_byval_mem32_3:
482 ; CHECK: # %bb.0: # %entry
483 ; CHECK-NEXT: clrldi 3, 8, 56
484 ; CHECK-NEXT: std 8, 72(1)
485 ; CHECK-NEXT: std 9, 80(1)
486 ; CHECK-NEXT: std 10, 88(1)
489 %0 = load i8, ptr %s, align 1
493 %struct_S64 = type {[64 x i8] }
494 @gS64= external global %struct_S64, align 1
496 define void @call_test_byval_mem64() #0 {
497 ; CHECK-LABEL: call_test_byval_mem64:
498 ; CHECK: # %bb.0: # %entry
500 ; CHECK-NEXT: stdu 1, -32(1)
501 ; CHECK-NEXT: std 0, 48(1)
502 ; CHECK-NEXT: .cfi_def_cfa_offset 32
503 ; CHECK-NEXT: .cfi_offset lr, 16
504 ; CHECK-NEXT: addis 3, 2, .LC6@toc@ha
505 ; CHECK-NEXT: ld 3, .LC6@toc@l(3)
506 ; CHECK-NEXT: ld 10, 56(3)
507 ; CHECK-NEXT: ld 9, 48(3)
508 ; CHECK-NEXT: ld 8, 40(3)
509 ; CHECK-NEXT: ld 7, 32(3)
510 ; CHECK-NEXT: ld 6, 24(3)
511 ; CHECK-NEXT: ld 5, 16(3)
512 ; CHECK-NEXT: ld 4, 8(3)
513 ; CHECK-NEXT: ld 3, 0(3)
514 ; CHECK-NEXT: bl test_byval_mem64
516 ; CHECK-NEXT: addi 1, 1, 32
517 ; CHECK-NEXT: ld 0, 16(1)
521 %call = call zeroext i8 @test_byval_mem64(ptr byval(%struct_S64) align 1 @gS64)
525 define zeroext i8 @test_byval_mem64(ptr byval(%struct_S64) align 1 %s) {
526 ; CHECK-LABEL: test_byval_mem64:
527 ; CHECK: # %bb.0: # %entry
528 ; CHECK-NEXT: std 3, -64(1)
529 ; CHECK-NEXT: clrldi 3, 3, 56
530 ; CHECK-NEXT: std 4, -56(1)
531 ; CHECK-NEXT: std 5, -48(1)
532 ; CHECK-NEXT: std 6, -40(1)
533 ; CHECK-NEXT: std 7, -32(1)
534 ; CHECK-NEXT: std 8, -24(1)
535 ; CHECK-NEXT: std 9, -16(1)
536 ; CHECK-NEXT: std 10, -8(1)
539 %0 = load i8, ptr %s, align 1
543 %struct_S65 = type { [65 x i8] }
544 @gS65 = external global %struct_S65, align 1
546 define void @call_test_byval_mem65() #0 {
547 ; CHECK-LABEL: call_test_byval_mem65:
548 ; CHECK: # %bb.0: # %entry
550 ; CHECK-NEXT: stdu 1, -112(1)
551 ; CHECK-NEXT: std 0, 128(1)
552 ; CHECK-NEXT: .cfi_def_cfa_offset 112
553 ; CHECK-NEXT: .cfi_offset lr, 16
554 ; CHECK-NEXT: addis 3, 2, .LC7@toc@ha
555 ; CHECK-NEXT: li 4, 48
556 ; CHECK-NEXT: li 5, 80
557 ; CHECK-NEXT: li 6, 64
558 ; CHECK-NEXT: ld 3, .LC7@toc@l(3)
559 ; CHECK-NEXT: lxvd2x 0, 3, 4
560 ; CHECK-NEXT: stxvd2x 0, 1, 5
561 ; CHECK-NEXT: li 5, 32
562 ; CHECK-NEXT: lxvd2x 0, 3, 5
563 ; CHECK-NEXT: stxvd2x 0, 1, 6
564 ; CHECK-NEXT: li 6, 16
565 ; CHECK-NEXT: lxvd2x 0, 3, 6
566 ; CHECK-NEXT: stxvd2x 0, 1, 4
567 ; CHECK-NEXT: lxvd2x 0, 0, 3
568 ; CHECK-NEXT: stxvd2x 0, 1, 5
569 ; CHECK-NEXT: lbz 4, 64(3)
570 ; CHECK-NEXT: stb 4, 96(1)
571 ; CHECK-NEXT: ld 10, 56(3)
572 ; CHECK-NEXT: ld 9, 48(3)
573 ; CHECK-NEXT: ld 8, 40(3)
574 ; CHECK-NEXT: ld 7, 32(3)
575 ; CHECK-NEXT: ld 6, 24(3)
576 ; CHECK-NEXT: ld 5, 16(3)
577 ; CHECK-NEXT: ld 4, 8(3)
578 ; CHECK-NEXT: ld 3, 0(3)
579 ; CHECK-NEXT: bl test_byval_mem65
581 ; CHECK-NEXT: addi 1, 1, 112
582 ; CHECK-NEXT: ld 0, 16(1)
586 %call = call zeroext i8 @test_byval_mem65(ptr byval(%struct_S65) align 1 @gS65)
590 define zeroext i8 @test_byval_mem65(ptr byval(%struct_S65) align 1 %s) {
591 ; CHECK-LABEL: test_byval_mem65:
592 ; CHECK: # %bb.0: # %entry
593 ; CHECK-NEXT: std 3, 32(1)
594 ; CHECK-NEXT: clrldi 3, 3, 56
595 ; CHECK-NEXT: std 4, 40(1)
596 ; CHECK-NEXT: std 5, 48(1)
597 ; CHECK-NEXT: std 6, 56(1)
598 ; CHECK-NEXT: std 7, 64(1)
599 ; CHECK-NEXT: std 8, 72(1)
600 ; CHECK-NEXT: std 9, 80(1)
601 ; CHECK-NEXT: std 10, 88(1)
604 %0 = load i8, ptr %s, align 1