ID_AA64SMFR0_EL1, SME Feature ID register 0

The ID_AA64SMFR0_EL1 characteristics are:

Purpose

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'.

Configuration

Note

Prior to the introduction of the features described by this register, this register was unnamed and reserved, RES0 from EL1, EL2, and EL3.

Attributes

ID_AA64SMFR0_EL1 is a 64-bit register.

Field descriptions

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
RES0I16I64RES0F64F64RES0I8I32F16F32B16F32RES0F32F32
RES0

Bits [63:56]

Reserved, RES0.

I16I64, bits [55:52]

Indicates SME support for accumulating 16-bit integer outer products into 64-bit integer tiles. Defined values are:

I16I64Meaning
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.

Bits [51:49]

Reserved, RES0.

F64F64, bit [48]

Indicates SME support for accumulating double-precision floating-point outer products into double-precision tiles. Defined values are:

F64F64Meaning
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.

Bits [47:40]

Reserved, RES0.

I8I32, bits [39:36]

Indicates SME support for accumulating 8-bit integer outer products into 32-bit integer tiles. Defined values are:

I8I32Meaning
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.

F16F32, bit [35]

Indicates SME support for accumulating half-precision floating-point outer products into single-precision floating-point tiles. Defined values are:

F16F32Meaning
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.

B16F32, bit [34]

Indicates SME support for accumulating BFloat16 outer products into single-precision floating-point tiles. Defined values are:

B16F32Meaning
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.

Bit [33]

Reserved, RES0.

F32F32, bit [32]

Indicates SME support for accumulating single-precision floating-point outer products into single-precision floating-point tiles. Defined values are:

F32F32Meaning
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.

Bits [31:0]

Reserved, RES0.

Accessing ID_AA64SMFR0_EL1

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:

MRS <Xt>, ID_AA64SMFR0_EL1

op0op1CRnCRmop2
0b110b0000b00000b01000b101

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.