@@ -11,66 +11,64 @@ target triple = "aarch64-unknown-linux-gnu"
11
11
define dso_local void @func1 (ptr %v1 , ptr %v2 , ptr %v3 , ptr %v4 , ptr %v5 , ptr %v6 , ptr %v7 , ptr %v8 ,
12
12
; CHECK-LABEL: func1:
13
13
; 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
27
25
; 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]
30
28
; 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
61
59
ptr %v9 , ptr %v10 , ptr %v11 , ptr %v12 , ptr %v13 , ptr %v14 , ptr %v15 , ptr %v16 ,
62
60
ptr %v17 , ptr %v18 , ptr %v19 , ptr %v20 , ptr %v21 , ptr %v22 , ptr %v23 , ptr %v24 ,
63
61
ptr %v25 , ptr %v26 , ptr %v27 , ptr %v28 , ptr %v29 , ptr %v30 , ptr %v31 , ptr %v32 ,
64
62
ptr %v33 , ptr %v34 , ptr %v35 , ptr %v36 , ptr %v37 , ptr %v38 , ptr %v39 , ptr %v40 ,
65
63
ptr %v41 , ptr %v42 , ptr %v43 , ptr %v44 , ptr %v45 , ptr %v46 , ptr %v47 , ptr %v48 ,
66
64
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 )
74
72
ret void
75
73
}
76
74
0 commit comments