@@ -11,67 +11,66 @@ target triple = "aarch64-unknown-linux-gnu"
1111define dso_local void @func1 (ptr %v1 , ptr %v2 , ptr %v3 , ptr %v4 , ptr %v5 , ptr %v6 , ptr %v7 , ptr %v8 ,
1212; CHECK-LABEL: func1:
1313; CHECK: // %bb.0:
14- ; CHECK-NEXT: str x29, [sp, #-48]! // 8-byte Folded Spill
15- ; CHECK-NEXT: stp x22, x21, [sp, #16] // 16-byte Folded Spill
16- ; CHECK-NEXT: stp x20, x19, [sp, #32] // 16-byte Folded Spill
17- ; CHECK-NEXT: .cfi_def_cfa_offset 48
18- ; CHECK-NEXT: .cfi_offset w19, -8
19- ; CHECK-NEXT: .cfi_offset w20, -16
20- ; CHECK-NEXT: .cfi_offset w21, -24
21- ; CHECK-NEXT: .cfi_offset w22, -32
22- ; CHECK-NEXT: .cfi_offset w29, -48
14+ ; CHECK-NEXT: sub sp, sp, #368
15+ ; CHECK-NEXT: stp x29, x30, [sp, #336] // 16-byte Folded Spill
16+ ; CHECK-NEXT: str x28, [sp, #352] // 8-byte Folded Spill
17+ ; CHECK-NEXT: add x29, sp, #336
18+ ; CHECK-NEXT: .cfi_def_cfa w29, 32
19+ ; CHECK-NEXT: .cfi_offset w28, -16
20+ ; CHECK-NEXT: .cfi_offset w30, -24
21+ ; CHECK-NEXT: .cfi_offset w29, -32
2322; CHECK-NEXT: ptrue p0.d
24- ; CHECK-NEXT: add x10, sp, #176
25- ; CHECK-NEXT: add x8, sp, #48
26- ; CHECK-NEXT: add x9, sp, #144
27- ; CHECK-NEXT: add x20, sp, #176
28- ; CHECK-NEXT: ldr x15, [sp, #104]
29- ; CHECK-NEXT: ld1d { z3.d }, p0/z, [x10]
23+ ; CHECK-NEXT: add x8, x29, #32
24+ ; CHECK-NEXT: add x9, x29, #136
25+ ; CHECK-NEXT: mov x12, #32 // =0x20
26+ ; CHECK-NEXT: ldp x10, x11, [x29, #336]
3027; CHECK-NEXT: ld1d { z0.d }, p0/z, [x8]
31- ; CHECK-NEXT: add x8, sp , #112
32- ; CHECK-NEXT: ld1d { z2 .d }, p0/z, [x9]
28+ ; CHECK-NEXT: add x8, x29 , #72
29+ ; CHECK-NEXT: ld1d { z3 .d }, p0/z, [x9]
3330; CHECK-NEXT: ld1d { z1.d }, p0/z, [x8]
34- ; CHECK-NEXT: ldur q4, [sp, #88]
35- ; CHECK-NEXT: ldp x9, x8, [sp, #328]
36- ; CHECK-NEXT: ldr x19, [sp, #272]
37- ; CHECK-NEXT: ldp x11, x10, [sp, #312]
38- ; CHECK-NEXT: ldp x13, x12, [sp, #296]
39- ; CHECK-NEXT: ldp x18, x14, [sp, #280]
40- ; CHECK-NEXT: ldp x16, x17, [sp, #208]
41- ; CHECK-NEXT: ldp x21, x22, [sp, #352]
42- ; CHECK-NEXT: st1d { z3.d }, p0, [x20]
43- ; CHECK-NEXT: add x20, sp, #144
44- ; CHECK-NEXT: st1d { z2.d }, p0, [x20]
45- ; CHECK-NEXT: add x20, sp, #112
46- ; CHECK-NEXT: st1d { z1.d }, p0, [x20]
47- ; CHECK-NEXT: add x20, sp, #48
48- ; CHECK-NEXT: st1d { z0.d }, p0, [x20]
49- ; CHECK-NEXT: stp x21, x22, [sp, #352]
50- ; CHECK-NEXT: ldp x22, x21, [sp, #16] // 16-byte Folded Reload
51- ; CHECK-NEXT: stp x19, x18, [sp, #272]
52- ; CHECK-NEXT: ldp x20, x19, [sp, #32] // 16-byte Folded Reload
53- ; CHECK-NEXT: stp x16, x17, [sp, #208]
54- ; CHECK-NEXT: stur q4, [sp, #88]
55- ; CHECK-NEXT: str x15, [sp, #104]
56- ; CHECK-NEXT: stp x14, x13, [sp, #288]
57- ; CHECK-NEXT: stp x12, x11, [sp, #304]
58- ; CHECK-NEXT: stp x10, x9, [sp, #320]
59- ; CHECK-NEXT: str x8, [sp, #336]
60- ; CHECK-NEXT: ldr x29, [sp], #48 // 8-byte Folded Reload
61- ; CHECK-NEXT: b func2
31+ ; CHECK-NEXT: add x8, x29, #104
32+ ; CHECK-NEXT: add x9, x29, #288
33+ ; CHECK-NEXT: ld1d { z2.d }, p0/z, [x8]
34+ ; CHECK-NEXT: add x8, x29, #168
35+ ; CHECK-NEXT: ld1d { z6.d }, p0/z, [x9]
36+ ; CHECK-NEXT: ld1d { z4.d }, p0/z, [x8]
37+ ; CHECK-NEXT: add x8, x29, #256
38+ ; CHECK-NEXT: ldr x9, [x29, #320]
39+ ; CHECK-NEXT: ld1d { z5.d }, p0/z, [x8]
40+ ; CHECK-NEXT: ldr x8, [x29, #200]
41+ ; CHECK-NEXT: st1d { z6.d }, p0, [sp, x12, lsl #3]
42+ ; CHECK-NEXT: mov x12, #28 // =0x1c
43+ ; CHECK-NEXT: st1d { z5.d }, p0, [sp, x12, lsl #3]
44+ ; CHECK-NEXT: mov x12, #17 // =0x11
45+ ; CHECK-NEXT: st1d { z4.d }, p0, [sp, x12, lsl #3]
46+ ; CHECK-NEXT: mov x12, #13 // =0xd
47+ ; CHECK-NEXT: st1d { z3.d }, p0, [sp, x12, lsl #3]
48+ ; CHECK-NEXT: mov x12, #9 // =0x9
49+ ; CHECK-NEXT: st1d { z2.d }, p0, [sp, x12, lsl #3]
50+ ; CHECK-NEXT: mov x12, #5 // =0x5
51+ ; CHECK-NEXT: st1d { z1.d }, p0, [sp, x12, lsl #3]
52+ ; CHECK-NEXT: st1d { z0.d }, p0, [sp]
53+ ; CHECK-NEXT: stp x10, x11, [sp, #304]
54+ ; CHECK-NEXT: str x9, [sp, #288]
55+ ; CHECK-NEXT: str x8, [sp, #168]
56+ ; CHECK-NEXT: bl func2
57+ ; CHECK-NEXT: ldp x29, x30, [sp, #336] // 16-byte Folded Reload
58+ ; CHECK-NEXT: ldr x28, [sp, #352] // 8-byte Folded Reload
59+ ; CHECK-NEXT: add sp, sp, #368
60+ ; CHECK-NEXT: ret
6261 ptr %v9 , ptr %v10 , ptr %v11 , ptr %v12 , ptr %v13 , ptr %v14 , ptr %v15 , ptr %v16 ,
6362 ptr %v17 , ptr %v18 , ptr %v19 , ptr %v20 , ptr %v21 , ptr %v22 , ptr %v23 , ptr %v24 ,
6463 ptr %v25 , ptr %v26 , ptr %v27 , ptr %v28 , ptr %v29 , ptr %v30 , ptr %v31 , ptr %v32 ,
6564 ptr %v33 , ptr %v34 , ptr %v35 , ptr %v36 , ptr %v37 , ptr %v38 , ptr %v39 , ptr %v40 ,
6665 ptr %v41 , ptr %v42 , ptr %v43 , ptr %v44 , ptr %v45 , ptr %v46 , ptr %v47 , ptr %v48 ,
6766 i64 %v49 ) #0 {
68- tail call void @func2 (ptr %v1 , ptr %v2 , ptr %v3 , ptr %v4 , ptr %v5 , ptr %v6 , ptr %v7 , ptr %v8 ,
69- ptr %v9 , ptr %v10 , ptr %v11 , ptr %v12 , ptr undef , ptr %v14 , ptr %v15 , ptr %v16 ,
70- ptr %v17 , ptr %v18 , ptr %v19 , ptr %v20 , ptr %v21 , ptr %v22 , ptr %v23 , ptr %v24 ,
71- ptr %v25 , ptr %v26 , ptr %v27 , ptr %v28 , ptr %v29 , ptr %v30 , ptr undef , ptr undef ,
72- ptr undef , ptr undef , ptr undef , ptr undef , ptr %v37 , ptr %v38 , ptr %v39 , ptr %v40 ,
73- ptr %v41 , ptr %v42 , ptr %v43 , ptr %v44 , ptr %v45 , ptr undef , ptr %v47 , ptr %v48 ,
74- i64 undef )
67+ call void @func2 (ptr %v1 , ptr %v2 , ptr %v3 , ptr %v4 , ptr %v5 , ptr %v6 , ptr %v7 , ptr %v8 ,
68+ ptr %v9 , ptr %v10 , ptr %v11 , ptr %v12 , ptr undef , ptr %v14 , ptr %v15 , ptr %v16 ,
69+ ptr %v17 , ptr %v18 , ptr %v19 , ptr %v20 , ptr %v21 , ptr %v22 , ptr %v23 , ptr %v24 ,
70+ ptr %v25 , ptr %v26 , ptr %v27 , ptr %v28 , ptr %v29 , ptr %v30 , ptr undef , ptr undef ,
71+ ptr undef , ptr undef , ptr undef , ptr undef , ptr %v37 , ptr %v38 , ptr %v39 , ptr %v40 ,
72+ ptr %v41 , ptr %v42 , ptr %v43 , ptr %v44 , ptr %v45 , ptr undef , ptr %v47 , ptr %v48 ,
73+ i64 undef )
7574 ret void
7675}
7776
0 commit comments