@@ -11,66 +11,64 @@ 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
23- ; CHECK-NEXT: add x10, sp, #176
24- ; CHECK-NEXT: add x8, sp, #48
25- ; CHECK-NEXT: add x9, sp, #144
26- ; CHECK-NEXT: ldr z3, [x10]
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
22+ ; CHECK-NEXT: add x8, x29, #32
23+ ; CHECK-NEXT: add x9, x29, #72
24+ ; CHECK-NEXT: ptrue p0.d
2725; CHECK-NEXT: ldr z0, [x8]
28- ; CHECK-NEXT: add x8, sp , #112
29- ; CHECK-NEXT: ldr z2 , [x9]
26+ ; CHECK-NEXT: add x8, x29 , #256
27+ ; CHECK-NEXT: ldr z3 , [x9]
3028; CHECK-NEXT: ldr z1, [x8]
31- ; CHECK-NEXT: add x20, sp , #176
32- ; CHECK-NEXT: ldp x9, x8, [sp, #328]
33- ; CHECK-NEXT: ldr x15 , [sp, #104 ]
34- ; CHECK-NEXT: ldp x11, x10, [sp, #312]
35- ; CHECK-NEXT: ldur q4 , [sp, #88 ]
36- ; CHECK-NEXT: ldp x13, x12, [sp, #296 ]
37- ; CHECK-NEXT: ldr x19, [sp , #272]
38- ; CHECK-NEXT: ldp x18, x14, [sp, #280]
39- ; CHECK-NEXT: ldp x16, x17, [sp, #208 ]
40- ; CHECK-NEXT: ldp x21, x22 , [sp , #352 ]
41- ; CHECK-NEXT: str z3, [x20 ]
42- ; CHECK-NEXT: add x20, sp, #144
43- ; CHECK-NEXT: str z2 , [x20 ]
44- ; CHECK-NEXT: add x20, sp , #112
45- ; CHECK-NEXT: str z1, [x20 ]
46- ; CHECK-NEXT: add x20, sp, #48
47- ; CHECK-NEXT: str z0, [x20 ]
48- ; CHECK-NEXT: stp x21, x22, [sp, #352]
49- ; CHECK-NEXT: ldp x22, x21 , [sp, #16] // 16-byte Folded Reload
50- ; CHECK-NEXT: stp x19, x18 , [sp, #272 ]
51- ; CHECK-NEXT: ldp x20, x19, [sp, #32] // 16-byte Folded Reload
52- ; CHECK-NEXT: stp x16, x17, [sp, #208 ]
53- ; CHECK-NEXT: stur q4 , [sp, #88 ]
54- ; CHECK-NEXT: str x15 , [sp, #104 ]
55- ; CHECK-NEXT: stp x14, x13, [sp, #288 ]
56- ; CHECK-NEXT: stp x12, x11, [sp, #304]
57- ; CHECK-NEXT: stp x10, x9 , [sp, #320]
58- ; CHECK-NEXT: str x8 , [sp, #336]
59- ; CHECK-NEXT: ldr x29, [sp] , #48 // 8-byte Folded Reload
60- ; CHECK-NEXT: b func2
29+ ; CHECK-NEXT: add x8, x29 , #288
30+ ; CHECK-NEXT: add x9, x29, #168
31+ ; CHECK-NEXT: ldr z2 , [x8 ]
32+ ; CHECK-NEXT: add x8, x29, #104
33+ ; CHECK-NEXT: ldr z6 , [x9 ]
34+ ; CHECK-NEXT: ldr z4, [x8 ]
35+ ; CHECK-NEXT: add x8, x29 , #136
36+ ; CHECK-NEXT: mov x12, #17 // =0x11
37+ ; CHECK-NEXT: ldr z5, [x8 ]
38+ ; CHECK-NEXT: ldp x10, x11 , [x29 , #336 ]
39+ ; CHECK-NEXT: st1d { z6.d }, p0, [sp, x12, lsl #3 ]
40+ ; CHECK-NEXT: mov x12, #13 // =0xd
41+ ; CHECK-NEXT: ldr x8 , [x29, #200 ]
42+ ; CHECK-NEXT: ldr x9, [x29 , #320]
43+ ; CHECK-NEXT: st1d { z5.d }, p0, [sp, x12, lsl #3 ]
44+ ; CHECK-NEXT: mov x12, #9 // =0x9
45+ ; CHECK-NEXT: st1d { z4.d }, p0, [sp, x12, lsl #3 ]
46+ ; CHECK-NEXT: mov x12, #5 // =0x5
47+ ; CHECK-NEXT: st1d { z3.d }, p0 , [sp, x12, lsl #3]
48+ ; CHECK-NEXT: stp x10, x11 , [sp, #304 ]
49+ ; CHECK-NEXT: str x9, [sp, #288]
50+ ; CHECK-NEXT: str z2, [sp, #8, mul vl ]
51+ ; CHECK-NEXT: str z1 , [sp, #7, mul vl ]
52+ ; CHECK-NEXT: str x8 , [sp, #168 ]
53+ ; CHECK-NEXT: str z0, [sp]
54+ ; CHECK-NEXT: bl func2
55+ ; CHECK-NEXT: ldp x29, x30 , [sp, #336] // 16-byte Folded Reload
56+ ; CHECK-NEXT: ldr x28 , [sp, #352] // 8-byte Folded Reload
57+ ; CHECK-NEXT: add sp, sp , #368
58+ ; CHECK-NEXT: ret
6159 ptr %v9 , ptr %v10 , ptr %v11 , ptr %v12 , ptr %v13 , ptr %v14 , ptr %v15 , ptr %v16 ,
6260 ptr %v17 , ptr %v18 , ptr %v19 , ptr %v20 , ptr %v21 , ptr %v22 , ptr %v23 , ptr %v24 ,
6361 ptr %v25 , ptr %v26 , ptr %v27 , ptr %v28 , ptr %v29 , ptr %v30 , ptr %v31 , ptr %v32 ,
6462 ptr %v33 , ptr %v34 , ptr %v35 , ptr %v36 , ptr %v37 , ptr %v38 , ptr %v39 , ptr %v40 ,
6563 ptr %v41 , ptr %v42 , ptr %v43 , ptr %v44 , ptr %v45 , ptr %v46 , ptr %v47 , ptr %v48 ,
6664 i64 %v49 ) #0 {
67- tail 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 )
65+ call void @func2 (ptr %v1 , ptr %v2 , ptr %v3 , ptr %v4 , ptr %v5 , ptr %v6 , ptr %v7 , ptr %v8 ,
66+ ptr %v9 , ptr %v10 , ptr %v11 , ptr %v12 , ptr undef , ptr %v14 , ptr %v15 , ptr %v16 ,
67+ ptr %v17 , ptr %v18 , ptr %v19 , ptr %v20 , ptr %v21 , ptr %v22 , ptr %v23 , ptr %v24 ,
68+ ptr %v25 , ptr %v26 , ptr %v27 , ptr %v28 , ptr %v29 , ptr %v30 , ptr undef , ptr undef ,
69+ ptr undef , ptr undef , ptr undef , ptr undef , ptr %v37 , ptr %v38 , ptr %v39 , ptr %v40 ,
70+ ptr %v41 , ptr %v42 , ptr %v43 , ptr %v44 , ptr %v45 , ptr undef , ptr %v47 , ptr %v48 ,
71+ i64 undef )
7472 ret void
7573}
7674
0 commit comments