Skip to content

Commit 323c588

Browse files
committed
[AArch64] Initial Ampere1B scheduling model
The Ampere1B core is enabled with a new scheduling/pipeline model, as it provides significant updates over the Ampere1 core; it reduces latencies on many instructions, has some micro-ops reassigned between the XY and X units, and provides modelling for the instructions added since Ampere1 and Ampere1A. As this is the first model implementing the CSSC instructions, we update the UnsupportedFeatures on all other models (that have CompleteModel set). Testcases are added under llvm-mca: these showed the FullFP16 feature missing, so we are adding it in as part of this commit.
1 parent 8f0435f commit 323c588

24 files changed

+8587
-19
lines changed

llvm/lib/Target/AArch64/AArch64.td

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -837,6 +837,7 @@ include "AArch64SchedA64FX.td"
837837
include "AArch64SchedThunderX3T110.td"
838838
include "AArch64SchedTSV110.td"
839839
include "AArch64SchedAmpere1.td"
840+
include "AArch64SchedAmpere1B.td"
840841
include "AArch64SchedNeoverseN1.td"
841842
include "AArch64SchedNeoverseN2.td"
842843
include "AArch64SchedNeoverseV1.td"
@@ -1555,7 +1556,7 @@ def ProcessorFeatures {
15551556
FeatureMTE, FeatureSSBS, FeatureRandGen,
15561557
FeatureSB, FeatureSM4, FeatureSHA2,
15571558
FeatureSHA3, FeatureAES, FeatureCSSC,
1558-
FeatureWFxT];
1559+
FeatureWFxT, FeatureFullFP16];
15591560

15601561
// ETE and TRBE are future architecture extensions. We temporarily enable them
15611562
// by default for users targeting generic AArch64. The extensions do not
@@ -1723,7 +1724,7 @@ def : ProcessorModel<"ampere1", Ampere1Model, ProcessorFeatures.Ampere1,
17231724
def : ProcessorModel<"ampere1a", Ampere1Model, ProcessorFeatures.Ampere1A,
17241725
[TuneAmpere1A]>;
17251726

1726-
def : ProcessorModel<"ampere1b", Ampere1Model, ProcessorFeatures.Ampere1B,
1727+
def : ProcessorModel<"ampere1b", Ampere1BModel, ProcessorFeatures.Ampere1B,
17271728
[TuneAmpere1B]>;
17281729

17291730
//===----------------------------------------------------------------------===//

llvm/lib/Target/AArch64/AArch64SchedA53.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def CortexA53Model : SchedMachineModel {
2929
list<Predicate> UnsupportedFeatures = !listconcat(SVEUnsupported.F,
3030
PAUnsupported.F,
3131
SMEUnsupported.F,
32-
[HasMTE]);
32+
[HasMTE, HasCSSC]);
3333
}
3434

3535

llvm/lib/Target/AArch64/AArch64SchedA57.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def CortexA57Model : SchedMachineModel {
3434
list<Predicate> UnsupportedFeatures = !listconcat(SVEUnsupported.F,
3535
PAUnsupported.F,
3636
SMEUnsupported.F,
37-
[HasMTE]);
37+
[HasMTE, HasCSSC]);
3838
}
3939

4040
//===----------------------------------------------------------------------===//

llvm/lib/Target/AArch64/AArch64SchedA64FX.td

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ def A64FXModel : SchedMachineModel {
2222

2323
list<Predicate> UnsupportedFeatures = !listconcat(SMEUnsupported.F, SVEUnsupported.F,
2424
[HasMTE, HasMatMulInt8, HasBF16,
25-
HasPAuth, HasPAuthLR, HasCPA]);
25+
HasPAuth, HasPAuthLR, HasCPA,
26+
HasCSSC]);
2627
let FullInstRWOverlapCheck = 0;
2728
}
2829

0 commit comments

Comments
 (0)