@@ -26,9 +26,10 @@ define dso_local void @run_test() local_unnamed_addr #0 {
26
26
; CHECK-NEXT: adrp x11, A
27
27
; CHECK-NEXT: mov x8, xzr
28
28
; CHECK-NEXT: mov x9, xzr
29
- ; CHECK-NEXT: movi v14 .2d, #0000000000000000
29
+ ; CHECK-NEXT: movi v0 .2d, #0000000000000000
30
30
; CHECK-NEXT: add x10, x10, :lo12:B+48
31
31
; CHECK-NEXT: add x11, x11, :lo12:A
32
+ ; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
32
33
; CHECK-NEXT: // implicit-def: $q1
33
34
; CHECK-NEXT: // implicit-def: $q2
34
35
; CHECK-NEXT: // implicit-def: $q3
@@ -47,8 +48,8 @@ define dso_local void @run_test() local_unnamed_addr #0 {
47
48
; CHECK-NEXT: // implicit-def: $q24
48
49
; CHECK-NEXT: // implicit-def: $q25
49
50
; CHECK-NEXT: // implicit-def: $q26
50
- ; CHECK-NEXT: // implicit-def: $q28
51
51
; CHECK-NEXT: // implicit-def: $q27
52
+ ; CHECK-NEXT: // implicit-def: $q28
52
53
; CHECK-NEXT: // implicit-def: $q29
53
54
; CHECK-NEXT: // implicit-def: $q30
54
55
; CHECK-NEXT: // implicit-def: $q31
@@ -60,78 +61,20 @@ define dso_local void @run_test() local_unnamed_addr #0 {
60
61
; CHECK-NEXT: // implicit-def: $q13
61
62
; CHECK-NEXT: .LBB0_1: // %for.cond1.preheader
62
63
; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
63
- ; CHECK-NEXT: str q13, [sp] // 16-byte Folded Spill
64
64
; CHECK-NEXT: mov x12, xzr
65
65
; CHECK-NEXT: ldr q15, [x8]
66
- ; CHECK-NEXT: mov v13.16b, v12.16b
67
- ; CHECK-NEXT: mov v12.16b, v11.16b
68
- ; CHECK-NEXT: mov v11.16b, v10.16b
69
- ; CHECK-NEXT: mov v10.16b, v9.16b
70
- ; CHECK-NEXT: mov v9.16b, v8.16b
71
- ; CHECK-NEXT: mov v8.16b, v31.16b
72
- ; CHECK-NEXT: mov v31.16b, v30.16b
73
- ; CHECK-NEXT: mov v30.16b, v29.16b
74
- ; CHECK-NEXT: mov v29.16b, v27.16b
75
- ; CHECK-NEXT: mov v27.16b, v26.16b
76
- ; CHECK-NEXT: mov v26.16b, v25.16b
77
- ; CHECK-NEXT: mov v25.16b, v24.16b
78
- ; CHECK-NEXT: mov v24.16b, v23.16b
79
- ; CHECK-NEXT: mov v23.16b, v22.16b
80
- ; CHECK-NEXT: mov v22.16b, v21.16b
81
- ; CHECK-NEXT: mov v21.16b, v20.16b
82
- ; CHECK-NEXT: mov v20.16b, v19.16b
83
- ; CHECK-NEXT: mov v19.16b, v18.16b
84
- ; CHECK-NEXT: mov v18.16b, v17.16b
85
- ; CHECK-NEXT: mov v17.16b, v16.16b
86
- ; CHECK-NEXT: mov v16.16b, v7.16b
87
- ; CHECK-NEXT: mov v7.16b, v6.16b
88
- ; CHECK-NEXT: mov v6.16b, v5.16b
89
- ; CHECK-NEXT: mov v5.16b, v4.16b
90
- ; CHECK-NEXT: mov v4.16b, v3.16b
91
- ; CHECK-NEXT: mov v3.16b, v2.16b
92
- ; CHECK-NEXT: mov v2.16b, v1.16b
93
- ; CHECK-NEXT: mov v1.16b, v14.16b
94
66
; CHECK-NEXT: ldr q14, [x12]
95
67
; CHECK-NEXT: ldr q0, [x10], #64
96
68
; CHECK-NEXT: ldr x18, [x12]
97
69
; CHECK-NEXT: fmov x15, d15
98
70
; CHECK-NEXT: mov x14, v15.d[1]
99
- ; CHECK-NEXT: mov x12, v14.d[1]
100
- ; CHECK-NEXT: mul x1, x15, x18
101
71
; CHECK-NEXT: fmov x13, d14
102
- ; CHECK-NEXT: mov v14.16b, v1.16b
103
- ; CHECK-NEXT: mov v1.16b, v2.16b
104
- ; CHECK-NEXT: mov v2.16b, v3.16b
105
- ; CHECK-NEXT: mov v3.16b, v4.16b
106
- ; CHECK-NEXT: mov v4.16b, v5.16b
107
- ; CHECK-NEXT: mov v5.16b, v6.16b
108
- ; CHECK-NEXT: mov v6.16b, v7.16b
109
- ; CHECK-NEXT: mov v7.16b, v16.16b
110
- ; CHECK-NEXT: mov v16.16b, v17.16b
111
- ; CHECK-NEXT: mov v17.16b, v18.16b
112
- ; CHECK-NEXT: mov v18.16b, v19.16b
113
- ; CHECK-NEXT: mov v19.16b, v20.16b
114
- ; CHECK-NEXT: mov v20.16b, v21.16b
115
- ; CHECK-NEXT: mov v21.16b, v22.16b
116
- ; CHECK-NEXT: mov v22.16b, v23.16b
117
- ; CHECK-NEXT: mov v23.16b, v24.16b
118
- ; CHECK-NEXT: mov v24.16b, v25.16b
119
- ; CHECK-NEXT: mov v25.16b, v26.16b
120
- ; CHECK-NEXT: mov v26.16b, v27.16b
121
- ; CHECK-NEXT: mov v27.16b, v29.16b
122
- ; CHECK-NEXT: mov v29.16b, v30.16b
123
- ; CHECK-NEXT: mov v30.16b, v31.16b
124
- ; CHECK-NEXT: mov v31.16b, v8.16b
125
- ; CHECK-NEXT: mov v8.16b, v9.16b
126
- ; CHECK-NEXT: mov v9.16b, v10.16b
127
- ; CHECK-NEXT: mov v10.16b, v11.16b
128
- ; CHECK-NEXT: mov v11.16b, v12.16b
129
- ; CHECK-NEXT: mov v12.16b, v13.16b
130
- ; CHECK-NEXT: ldr q13, [sp] // 16-byte Folded Reload
72
+ ; CHECK-NEXT: mul x1, x15, x18
131
73
; CHECK-NEXT: mov x16, v0.d[1]
132
74
; CHECK-NEXT: fmov x17, d0
133
75
; CHECK-NEXT: fmov d0, x1
134
76
; CHECK-NEXT: mul x1, x14, x18
77
+ ; CHECK-NEXT: mov x12, v14.d[1]
135
78
; CHECK-NEXT: ldr x0, [x8]
136
79
; CHECK-NEXT: mov v0.d[1], x1
137
80
; CHECK-NEXT: mul x1, x13, x18
@@ -144,6 +87,7 @@ define dso_local void @run_test() local_unnamed_addr #0 {
144
87
; CHECK-NEXT: add v11.2d, v11.2d, v0.2d
145
88
; CHECK-NEXT: fmov d0, x1
146
89
; CHECK-NEXT: mul x18, x16, x18
90
+ ; CHECK-NEXT: ldr q14, [sp] // 16-byte Folded Reload
147
91
; CHECK-NEXT: mov v0.d[1], x18
148
92
; CHECK-NEXT: mul x18, x15, x0
149
93
; CHECK-NEXT: add x1, x11, x8
@@ -194,28 +138,29 @@ define dso_local void @run_test() local_unnamed_addr #0 {
194
138
; CHECK-NEXT: mul x17, x17, x1
195
139
; CHECK-NEXT: mov v0.d[1], x12
196
140
; CHECK-NEXT: mul x16, x16, x1
197
- ; CHECK-NEXT: add v27 .2d, v27 .2d, v0.2d
141
+ ; CHECK-NEXT: add v28 .2d, v28 .2d, v0.2d
198
142
; CHECK-NEXT: fmov d0, x17
199
143
; CHECK-NEXT: mov v0.d[1], x16
200
144
; CHECK-NEXT: add x8, x8, #8 // =8
201
- ; CHECK-NEXT: add v28 .2d, v28 .2d, v0.2d
145
+ ; CHECK-NEXT: add v27 .2d, v27 .2d, v0.2d
202
146
; CHECK-NEXT: cmp x8, #64 // =64
203
147
; CHECK-NEXT: add x9, x9, #1 // =1
148
+ ; CHECK-NEXT: str q14, [sp] // 16-byte Folded Spill
204
149
; CHECK-NEXT: b.ne .LBB0_1
205
150
; CHECK-NEXT: // %bb.2: // %for.cond.cleanup
206
151
; CHECK-NEXT: adrp x8, C
207
152
; CHECK-NEXT: add x8, x8, :lo12:C
153
+ ; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload
208
154
; CHECK-NEXT: stp q13, q12, [x8]
209
155
; CHECK-NEXT: stp q11, q10, [x8, #32]
210
156
; CHECK-NEXT: stp q9, q8, [x8, #64]
211
- ; CHECK-NEXT: stp q14, q2, [x8, #464]
212
157
; CHECK-NEXT: ldp d9, d8, [sp, #64] // 16-byte Folded Reload
213
158
; CHECK-NEXT: ldp d11, d10, [sp, #48] // 16-byte Folded Reload
214
159
; CHECK-NEXT: ldp d13, d12, [sp, #32] // 16-byte Folded Reload
215
160
; CHECK-NEXT: ldp d15, d14, [sp, #16] // 16-byte Folded Reload
216
161
; CHECK-NEXT: stp q31, q30, [x8, #96]
217
- ; CHECK-NEXT: stp q29, q27 , [x8, #144]
218
- ; CHECK-NEXT: stp q28 , q26, [x8, #176]
162
+ ; CHECK-NEXT: stp q29, q28 , [x8, #144]
163
+ ; CHECK-NEXT: stp q27 , q26, [x8, #176]
219
164
; CHECK-NEXT: str q25, [x8, #208]
220
165
; CHECK-NEXT: stp q24, q23, [x8, #240]
221
166
; CHECK-NEXT: stp q22, q21, [x8, #272]
@@ -224,6 +169,7 @@ define dso_local void @run_test() local_unnamed_addr #0 {
224
169
; CHECK-NEXT: stp q16, q7, [x8, #368]
225
170
; CHECK-NEXT: stp q6, q5, [x8, #400]
226
171
; CHECK-NEXT: stp q4, q3, [x8, #432]
172
+ ; CHECK-NEXT: stp q0, q2, [x8, #464]
227
173
; CHECK-NEXT: str q1, [x8, #496]
228
174
; CHECK-NEXT: add sp, sp, #80 // =80
229
175
; CHECK-NEXT: ret
0 commit comments