The ID_AA64SMFR0_EL1 characteristics are:
Provides information about the implemented features of the AArch64 Scalable Matrix Extension, when the ID_AA64PFR1_EL1.SME field is not zero.
For general information about the interpretation of the ID registers, see 'Principles of the ID scheme for fields in ID registers'.
Prior to the introduction of the features described by this register, this register was unnamed and reserved, RES0 from EL1, EL2, and EL3.
ID_AA64SMFR0_EL1 is a 64-bit register.
63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RES0 | I16I64 | RES0 | F64F64 | RES0 | I8I32 | F16F32 | B16F32 | RES0 | F32F32 | ||||||||||||||||||||||
RES0 |
Reserved, RES0.
Indicates SME support for accumulating 16-bit integer outer products into 64-bit integer tiles. Defined values are:
I16I64 | Meaning |
---|---|
0b0000 |
Instructions that accumulate 16-bit outer products into 64-bit tiles are not implemented. |
0b1111 |
The SMOPA, SMOPS, SUMOPA, SUMOPS, UMOPA, UMOPS, USMOPA, and USMOPS instructions that accumulate 16-bit outer products into 64-bit tiles are implemented. |
All other values are reserved.
The only permitted values are 0b0000 and 0b1111.
Reserved, RES0.
Indicates SME support for accumulating double-precision floating-point outer products into double-precision tiles. Defined values are:
F64F64 | Meaning |
---|---|
0b0 |
Instructions that accumulate double-precision outer products into double-precision tiles are not implemented. |
0b1 |
The FMOPA and FMOPS instructions that accumulate double-precision outer products into double-precision tiles are implemented. |
Reserved, RES0.
Indicates SME support for accumulating 8-bit integer outer products into 32-bit integer tiles. Defined values are:
I8I32 | Meaning |
---|---|
0b0000 |
Instructions that accumulate 8-bit outer products into 32-bit tiles are not implemented. |
0b1111 |
The SMOPA, SMOPS, SUMOPA, SUMOPS, UMOPA, UMOPS, USMOPA, and USMOPS instructions that accumulate 8-bit outer products into 32-bit tiles are implemented. |
All other values are reserved.
If FEAT_SME is implemented, the only permitted value is 0b1111.
Indicates SME support for accumulating half-precision floating-point outer products into single-precision floating-point tiles. Defined values are:
F16F32 | Meaning |
---|---|
0b0 |
Instructions that accumulate FP16 outer products into FP32 tiles are not implemented. |
0b1 |
The FMOPA and FMOPS instructions that accumulate half-precision outer products into single-precision tiles are implemented. |
If FEAT_SME is implemented, the only permitted value is 0b1.
Indicates SME support for accumulating BFloat16 outer products into single-precision floating-point tiles. Defined values are:
B16F32 | Meaning |
---|---|
0b0 |
Instructions that accumulate BFloat16 outer products into single-precision tiles are not implemented. |
0b1 |
The BFMOPA and BFMOPS instructions that accumulate BFloat16 outer products into single-precision tiles are implemented. |
If FEAT_SME is implemented, the only permitted value is 0b1.
Reserved, RES0.
Indicates SME support for accumulating single-precision floating-point outer products into single-precision floating-point tiles. Defined values are:
F32F32 | Meaning |
---|---|
0b0 |
Instructions that accumulate single-precision outer products into single-precision tiles are not implemented. |
0b1 |
The FMOPA and FMOPS instructions that accumulate single-precision outer products into single-precision tiles are implemented. |
If FEAT_SME is implemented, the only permitted value is 0b1.
Reserved, RES0.
This register is read-only and can be accessed from EL1 and higher.
This register is only accessible from the AArch64 state.
Accesses to this register use the following encodings in the System register encoding space:
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b0000 | 0b0100 | 0b101 |
if PSTATE.EL == EL0 then if IsFeatureImplemented(FEAT_IDST) then if EL2Enabled() && HCR_EL2.TGE == '1' then AArch64.SystemAccessTrap(EL2, 0x18); else AArch64.SystemAccessTrap(EL1, 0x18); else UNDEFINED; elsif PSTATE.EL == EL1 then if EL2Enabled() && HCR_EL2.TID3 == '1' then AArch64.SystemAccessTrap(EL2, 0x18); else return ID_AA64SMFR0_EL1; elsif PSTATE.EL == EL2 then return ID_AA64SMFR0_EL1; elsif PSTATE.EL == EL3 then return ID_AA64SMFR0_EL1;
20/09/2021 12:37; d4a233ffbdfb36e47856c443a7ce9a85f5e501ca
Copyright © 2010-2021 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.