@@ -223,13 +223,6 @@ def FeatureSVE : Extension<"sve", "SVE",
223
223
"Enable Scalable Vector Extension (SVE) instructions (FEAT_SVE)", [FeatureFullFP16],
224
224
"FEAT_SVE", "+sve,+fullfp16,+fp-armv8,+neon", 310>;
225
225
226
- def FeatureFPMR : Extension<"fpmr", "FPMR",
227
- "Enable FPMR Register (FEAT_FPMR)">;
228
-
229
- let FMVDependencies = "+fpmr" in
230
- def FeatureFP8 : Extension<"fp8", "FP8",
231
- "Enable FP8 instructions (FEAT_FP8)">;
232
-
233
226
// This flag is currently still labeled as Experimental, but when fully
234
227
// implemented this should tell the compiler to use the zeroing pseudos to
235
228
// benefit from the reverse instructions (e.g. SUB vs SUBR) if the inactive
@@ -667,41 +660,44 @@ def FeatureSME2p1 : Extension<"sme2p1", "SME2p1",
667
660
def FeatureFAMINMAX: Extension<"faminmax", "FAMINMAX",
668
661
"Enable FAMIN and FAMAX instructions (FEAT_FAMINMAX)">;
669
662
670
- let FMVDependencies = "+fpmr" in
663
+ def FeatureLUT: Extension<"lut", "LUT",
664
+ "Enable Lookup Table instructions (FEAT_LUT)">;
665
+
666
+ def FeatureFP8 : Extension<"fp8", "FP8",
667
+ "Enable FP8 instructions (FEAT_FP8)", [FeatureFAMINMAX, FeatureLUT, FeatureBF16]>;
668
+
671
669
def FeatureFP8FMA : Extension<"fp8fma", "FP8FMA",
672
- "Enable fp8 multiply-add instructions (FEAT_FP8FMA)">;
670
+ "Enable fp8 multiply-add instructions (FEAT_FP8FMA)", [FeatureFP8] >;
673
671
674
672
let FMVDependencies = "+sme2" in
675
673
def FeatureSSVE_FP8FMA : Extension<"ssve-fp8fma", "SSVE_FP8FMA",
676
- "Enable SVE2 fp8 multiply-add instructions (FEAT_SSVE_FP8FMA)", [FeatureSME2]>;
674
+ "Enable SVE2 fp8 multiply-add instructions (FEAT_SSVE_FP8FMA)", [FeatureSME2, FeatureFP8 ]>;
677
675
676
+ def FeatureFP8DOT4: Extension<"fp8dot4", "FP8DOT4",
677
+ "Enable fp8 4-way dot instructions (FEAT_FP8DOT4)", [FeatureFP8FMA]>;
678
+
678
679
def FeatureFP8DOT2: Extension<"fp8dot2", "FP8DOT2",
679
- "Enable fp8 2-way dot instructions (FEAT_FP8DOT2)">;
680
+ "Enable fp8 2-way dot instructions (FEAT_FP8DOT2)", [FeatureFP8DOT4] >;
680
681
681
682
let FMVDependencies = "+sme2" in
682
- def FeatureSSVE_FP8DOT2 : Extension<"ssve-fp8dot2", "SSVE_FP8DOT2",
683
- "Enable SVE2 fp8 2-way dot product instructions (FEAT_SSVE_FP8DOT2)", [FeatureSME2]>;
684
-
685
- def FeatureFP8DOT4: Extension<"fp8dot4", "FP8DOT4",
686
- "Enable fp8 4-way dot instructions (FEAT_FP8DOT4)">;
683
+ def FeatureSSVE_FP8DOT4 : Extension<"ssve-fp8dot4", "SSVE_FP8DOT4",
684
+ "Enable SVE2 fp8 4-way dot product instructions (FEAT_SSVE_FP8DOT4)", [FeatureSSVE_FP8FMA]>;
687
685
688
686
let FMVDependencies = "+sme2" in
689
- def FeatureSSVE_FP8DOT4 : Extension<"ssve-fp8dot4", "SSVE_FP8DOT4",
690
- "Enable SVE2 fp8 4-way dot product instructions (FEAT_SSVE_FP8DOT4)", [FeatureSME2]>;
691
- def FeatureLUT: Extension<"lut", "LUT",
692
- "Enable Lookup Table instructions (FEAT_LUT)">;
687
+ def FeatureSSVE_FP8DOT2 : Extension<"ssve-fp8dot2", "SSVE_FP8DOT2",
688
+ "Enable SVE2 fp8 2-way dot product instructions (FEAT_SSVE_FP8DOT2)", [FeatureSSVE_FP8DOT4]>;
693
689
694
690
def FeatureSME_LUTv2 : Extension<"sme-lutv2", "SME_LUTv2",
695
691
"Enable Scalable Matrix Extension (SME) LUTv2 instructions (FEAT_SME_LUTv2)">;
696
692
697
- let FMVDependencies = "+fp8,+sme2" in
698
- def FeatureSMEF8F16 : Extension<"sme-f8f16", "SMEF8F16",
699
- "Enable Scalable Matrix Extension (SME) F8F16 instructions(FEAT_SME_F8F16)", [FeatureSME2, FeatureFP8]>;
700
-
701
693
let FMVDependencies = "+sme2,+fp8" in
702
694
def FeatureSMEF8F32 : Extension<"sme-f8f32", "SMEF8F32",
703
695
"Enable Scalable Matrix Extension (SME) F8F32 instructions (FEAT_SME_F8F32)", [FeatureSME2, FeatureFP8]>;
704
696
697
+ let FMVDependencies = "+fp8,+sme2" in
698
+ def FeatureSMEF8F16 : Extension<"sme-f8f16", "SMEF8F16",
699
+ "Enable Scalable Matrix Extension (SME) F8F16 instructions(FEAT_SME_F8F16)", [FeatureSMEF8F32]>;
700
+
705
701
def FeatureAppleA7SysReg : SubtargetFeature<"apple-a7-sysreg", "HasAppleA7SysReg", "true",
706
702
"Apple A7 (the CPU formerly known as Cyclone)">;
707
703
@@ -869,7 +865,7 @@ def HasV9_4aOps : Architecture64<9, 4, "a", "v9.4a",
869
865
FeatureRASv2])>;
870
866
def HasV9_5aOps : Architecture64<9, 5, "a", "v9.5a",
871
867
[HasV9_4aOps, FeatureCPA],
872
- !listconcat(HasV9_4aOps.DefaultExts, [FeatureCPA])>;
868
+ !listconcat(HasV9_4aOps.DefaultExts, [FeatureCPA, FeatureLUT, FeatureFAMINMAX ])>;
873
869
def HasV8_0rOps : Architecture64<8, 0, "r", "v8r",
874
870
[ //v8.1
875
871
FeatureCRC, FeaturePAN, FeatureLSE, FeatureCONTEXTIDREL2,
0 commit comments