Skip to content

Commit db158c7

Browse files
committed
[AArch64] Update generic sched model to A510
Refresh of the generic scheduling model to use A510 instead of A55. Main benefits are to the little core, and introducing SVE scheduling information. Changes tested on various OoO cores, no performance degradation is seen. Differential Revision: https://reviews.llvm.org/D156799
1 parent 955d761 commit db158c7

File tree

597 files changed

+32442
-31937
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

597 files changed

+32442
-31937
lines changed

clang/test/CodeGen/aarch64-ABI-align-packed-assembly.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ struct non_packed_struct gs_non_packed_struct;
5555
__attribute__((noinline)) void named_arg_non_packed_struct(double d0, double d1, double d2, double d3,
5656
double d4, double d5, double d6, double d7,
5757
double d8, struct non_packed_struct s_non_packed_struct) {
58-
// CHECK: ldr q0, [sp, #16]
58+
// CHECK: ldr q1, [sp, #16]
5959
gd = d8;
6060
gs_non_packed_struct = s_non_packed_struct;
6161
}
@@ -74,8 +74,8 @@ void test_non_packed_struct() {
7474
init(1, &s_non_packed_struct);
7575

7676
// CHECK: mov x8, #4611686018427387904 // =0x4000000000000000
77-
// CHECK: str q0, [sp, #16]
7877
// CHECK: str x8, [sp]
78+
// CHECK: str q0, [sp, #16]
7979
named_arg_non_packed_struct(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_non_packed_struct);
8080
// CHECK: str q0, [sp, #16]
8181
variadic_non_packed_struct(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_non_packed_struct);
@@ -86,7 +86,7 @@ struct packed_struct gs_packed_struct;
8686
__attribute__((noinline)) void named_arg_packed_struct(double d0, double d1, double d2, double d3,
8787
double d4, double d5, double d6, double d7,
8888
double d8, struct packed_struct s_packed_struct) {
89-
// CHECK: ldur q0, [sp, #8]
89+
// CHECK: ldur q1, [sp, #8]
9090
gd = d8;
9191
gs_packed_struct = s_packed_struct;
9292
}
@@ -105,8 +105,8 @@ void test_packed_struct() {
105105
init(1, &s_packed_struct);
106106

107107
// CHECK: mov x8, #4611686018427387904 // =0x4000000000000000
108-
// CHECK: stur q0, [sp, #8]
109108
// CHECK: str x8, [sp]
109+
// CHECK: stur q0, [sp, #8]
110110
named_arg_packed_struct(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_packed_struct);
111111
// CHECK: stur q0, [sp, #8]
112112
variadic_packed_struct(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_packed_struct);
@@ -117,7 +117,7 @@ struct packed_member gs_packed_member;
117117
__attribute__((noinline)) void named_arg_packed_member(double d0, double d1, double d2, double d3,
118118
double d4, double d5, double d6, double d7,
119119
double d8, struct packed_member s_packed_member) {
120-
// CHECK: ldur q0, [sp, #8]
120+
// CHECK: ldur q1, [sp, #8]
121121
gd = d8;
122122
gs_packed_member = s_packed_member;
123123
}
@@ -136,8 +136,8 @@ void test_packed_member() {
136136
init(1, &s_packed_member);
137137

138138
// CHECK: mov x8, #4611686018427387904 // =0x4000000000000000
139-
// CHECK: stur q0, [sp, #8]
140139
// CHECK: str x8, [sp]
140+
// CHECK: stur q0, [sp, #8]
141141
named_arg_packed_member(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_packed_member);
142142
// CHECK: stur q0, [sp, #8]
143143
variadic_packed_member(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_packed_member);
@@ -148,7 +148,7 @@ struct aligned_struct_8 gs_aligned_struct_8;
148148
__attribute__((noinline)) void named_arg_aligned_struct_8(double d0, double d1, double d2, double d3,
149149
double d4, double d5, double d6, double d7,
150150
double d8, struct aligned_struct_8 s_aligned_struct_8) {
151-
// CHECK: ldr q0, [sp, #16]
151+
// CHECK: ldr q1, [sp, #16]
152152
gd = d8;
153153
gs_aligned_struct_8 = s_aligned_struct_8;
154154
}
@@ -167,8 +167,8 @@ void test_aligned_struct_8() {
167167
init(1, &s_aligned_struct_8);
168168

169169
// CHECK: mov x8, #4611686018427387904 // =0x4000000000000000
170-
// CHECK: str q0, [sp, #16]
171170
// CHECK: str x8, [sp]
171+
// CHECK: str q0, [sp, #16]
172172
named_arg_aligned_struct_8(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_aligned_struct_8);
173173
// CHECK: str q0, [sp, #16]
174174
variadic_aligned_struct_8(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_aligned_struct_8);
@@ -179,7 +179,7 @@ struct aligned_member_8 gs_aligned_member_8;
179179
__attribute__((noinline)) void named_arg_aligned_member_8(double d0, double d1, double d2, double d3,
180180
double d4, double d5, double d6, double d7,
181181
double d8, struct aligned_member_8 s_aligned_member_8) {
182-
// CHECK: ldr q0, [sp, #16]
182+
// CHECK: ldr q1, [sp, #16]
183183
gd = d8;
184184
gs_aligned_member_8 = s_aligned_member_8;
185185
}
@@ -198,8 +198,8 @@ void test_aligned_member_8() {
198198
init(1, &s_aligned_member_8);
199199

200200
// CHECK: mov x8, #4611686018427387904 // =0x4000000000000000
201-
// CHECK: str q0, [sp, #16]
202201
// CHECK: str x8, [sp]
202+
// CHECK: str q0, [sp, #16]
203203
named_arg_aligned_member_8(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_aligned_member_8);
204204
// CHECK: str q0, [sp, #16]
205205
variadic_aligned_member_8(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_aligned_member_8);
@@ -210,7 +210,7 @@ struct pragma_packed_struct_8 gs_pragma_packed_struct_8;
210210
__attribute__((noinline)) void named_arg_pragma_packed_struct_8(double d0, double d1, double d2, double d3,
211211
double d4, double d5, double d6, double d7,
212212
double d8, struct pragma_packed_struct_8 s_pragma_packed_struct_8) {
213-
// CHECK: ldur q0, [sp, #8]
213+
// CHECK: ldur q1, [sp, #8]
214214
gd = d8;
215215
gs_pragma_packed_struct_8 = s_pragma_packed_struct_8;
216216
}
@@ -229,8 +229,8 @@ void test_pragma_packed_struct_8() {
229229
init(1, &s_pragma_packed_struct_8);
230230

231231
// CHECK: mov x8, #4611686018427387904 // =0x4000000000000000
232-
// CHECK: stur q0, [sp, #8]
233232
// CHECK: str x8, [sp]
233+
// CHECK: stur q0, [sp, #8]
234234
named_arg_pragma_packed_struct_8(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_pragma_packed_struct_8);
235235
// CHECK: stur q0, [sp, #8]
236236
variadic_pragma_packed_struct_8(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_pragma_packed_struct_8);
@@ -241,7 +241,7 @@ struct pragma_packed_struct_4 gs_pragma_packed_struct_4;
241241
__attribute__((noinline)) void named_arg_pragma_packed_struct_4(double d0, double d1, double d2, double d3,
242242
double d4, double d5, double d6, double d7,
243243
double d8, struct pragma_packed_struct_4 s_pragma_packed_struct_4) {
244-
// CHECK: ldur q0, [sp, #8]
244+
// CHECK: ldur q1, [sp, #8]
245245
gd = d8;
246246
gs_pragma_packed_struct_4 = s_pragma_packed_struct_4;
247247
}
@@ -260,8 +260,8 @@ void test_pragma_packed_struct_4() {
260260
init(1, &s_pragma_packed_struct_4);
261261

262262
// CHECK: mov x8, #4611686018427387904 // =0x4000000000000000
263-
// CHECK: stur q0, [sp, #8]
264263
// CHECK: str x8, [sp]
264+
// CHECK: stur q0, [sp, #8]
265265
named_arg_pragma_packed_struct_4(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_pragma_packed_struct_4);
266266
// CHECK: stur q0, [sp, #8]
267267
variadic_pragma_packed_struct_4(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_pragma_packed_struct_4);

llvm/lib/Target/AArch64/AArch64.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1402,7 +1402,7 @@ def ProcessorFeatures {
14021402

14031403
// FeatureFuseAdrpAdd is enabled under Generic to allow linker merging
14041404
// optimizations.
1405-
def : ProcessorModel<"generic", CortexA55Model, ProcessorFeatures.Generic,
1405+
def : ProcessorModel<"generic", CortexA510Model, ProcessorFeatures.Generic,
14061406
[FeatureFuseAES, FeatureFuseAdrpAdd, FeaturePostRAScheduler,
14071407
FeatureEnableSelectOptimize]>;
14081408
def : ProcessorModel<"cortex-a35", CortexA53Model, ProcessorFeatures.A53,

llvm/test/Analysis/CostModel/AArch64/vector-select.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,9 @@ define <2 x i64> @v2i64_select_sle(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {
125125
; CODE: mov
126126
; CODE: mov
127127
; CODE: mov
128+
; CODE: ldr
128129
; CODE: cmge
129130
; CODE: cmge
130-
; CODE: ldr
131131
; CODE: bif
132132
; CODE: bif
133133
; CODE: ext

0 commit comments

Comments
 (0)