arch-arm: Declare support for Armv8.2-I8MM.
Sets the appropriate bit in the ID_AA64ZFR0_EL1 sysreg that declares support for ARMv8.2-I8MM. This indicates that all pre-requisites for Armv8.2 SVE Int8 matrix multiplication instructions have been met. SMMLA, SUDOT, UMMLA, USMMLA, and USDOT instructions are implemented. For more information please refer to the "ARM Architecture Reference Manual Supplement - The Scalable Vector Extension (SVE), for ARMv8-A" (https://developer.arm.com/architectures/cpu-architecture/a-profile/ docs/arm-architecture-reference-manual-supplement-armv8-a) Additional Contributors: Giacomo Travaglini Change-Id: Id97e1c5de8c23a25336a6b323034e9eca8e598e4 Reviewed-by: Richard Cooper <richard.cooper@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70733 Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
committed by
Bobby Bruce
parent
f8b60b7a1d
commit
560df49c28
@@ -56,6 +56,7 @@ class ArmDefaultSERelease(ArmRelease):
|
||||
"FEAT_F32MM",
|
||||
"FEAT_F64MM",
|
||||
"FEAT_SVE",
|
||||
"FEAT_I8MM",
|
||||
# Armv8.3
|
||||
"FEAT_FCMA",
|
||||
"FEAT_JSCVT",
|
||||
|
||||
@@ -80,6 +80,7 @@ class ArmExtension(ScopedEnum):
|
||||
"FEAT_LPA", # Optional in Armv8.2
|
||||
"FEAT_F32MM", # Optional in Armv8.2
|
||||
"FEAT_F64MM", # Optional in Armv8.2
|
||||
"FEAT_I8MM", # Optional in Armv8.2
|
||||
# Armv8.3
|
||||
"FEAT_FCMA",
|
||||
"FEAT_JSCVT",
|
||||
@@ -167,6 +168,7 @@ class ArmDefaultRelease(Armv8):
|
||||
"FEAT_SVE",
|
||||
"FEAT_F32MM",
|
||||
"FEAT_F64MM",
|
||||
"FEAT_I8MM",
|
||||
# Armv8.3
|
||||
"FEAT_FCMA",
|
||||
"FEAT_JSCVT",
|
||||
@@ -202,6 +204,7 @@ class Armv82(Armv81):
|
||||
"FEAT_SVE",
|
||||
"FEAT_F32MM",
|
||||
"FEAT_F64MM",
|
||||
"FEAT_I8MM",
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -323,6 +323,7 @@ ArmProcess64::armHwcapImpl2() const
|
||||
const AA64ZFR0 zf_r0 = tc->readMiscReg(MISCREG_ID_AA64ZFR0_EL1);
|
||||
hwcap |= (zf_r0.f32mm >= 1) ? Arm_Svef32mm : Arm_None;
|
||||
hwcap |= (zf_r0.f64mm >= 1) ? Arm_Svef64mm : Arm_None;
|
||||
hwcap |= (zf_r0.i8mm >= 1) ? Arm_Svei8mm : Arm_None;
|
||||
|
||||
return hwcap;
|
||||
}
|
||||
|
||||
@@ -5407,6 +5407,7 @@ ISA::initializeMiscRegMetadata()
|
||||
AA64ZFR0 zfr0_el1 = 0;
|
||||
zfr0_el1.f32mm = release->has(ArmExtension::FEAT_F32MM) ? 1 : 0;
|
||||
zfr0_el1.f64mm = release->has(ArmExtension::FEAT_F64MM) ? 1 : 0;
|
||||
zfr0_el1.i8mm = release->has(ArmExtension::FEAT_I8MM) ? 1 : 0;
|
||||
return zfr0_el1;
|
||||
}())
|
||||
.faultRead(EL0, faultIdst)
|
||||
|
||||
Reference in New Issue
Block a user