The MVFR1_EL1 characteristics are:
Describes the features provided by the AArch32 Advanced SIMD and Floating-point implementation.
Must be interpreted with MVFR0_EL1 and MVFR2_EL1.
For general information about the interpretation of the ID registers see 'Principles of the ID scheme for fields in ID registers' in the ARMv8 ARM, section D7.1.3.
This register is part of:
AArch64 System register MVFR1_EL1 is architecturally mapped to AArch32 System register MVFR1.
In an implementation where at least one Exception level supports execution in AArch32 state, but there is no support for Advanced SIMD and floating-point operation, this register is RAZ.
In an AArch64-only implementation, this register is UNKNOWN.
MVFR1_EL1 is a 32-bit register.
The MVFR1_EL1 bit assignments are:
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 |
SIMDFMAC | FPHP | SIMDHP | SIMDSP | SIMDInt | SIMDLS | FPDNaN | FPFtZ |
Advanced SIMD Fused Multiply-Accumulate. Indicates whether the Advanced SIMD implementation provides fused multiply accumulate instructions. Defined values are:
SIMDFMAC | Meaning |
---|---|
0000 |
Not implemented. |
0001 |
Implemented. |
All other values are reserved.
In ARMv8-A the permitted values are 0000 and 0001.
The Advanced SIMD and floating-point implementations must provide the same level of support for these instructions.
Floating Point Half Precision. Indicates the level of half-precision floating-point support. Defined values are:
FPHP | Meaning |
---|---|
0000 |
Not supported. |
0001 |
Floating-point half-precision conversion instructions are supported for conversion between single-precision and half-precision. |
0010 |
Floating-point half-precision conversion instructions are supported for conversion between single-precision and half-precision and between double-precision and half-precision. |
0011 |
As for 0010, and also includes support for half-precision floating-point arithmetic. |
All other values are reserved.
The permitted values are:
Advanced SIMD Half Precision. Indicates the level of half-precision floating-point support. Defined values are:
SIMDHP | Meaning |
---|---|
0000 |
Not supported. |
0001 |
SIMD half-precision conversion instructions are supported for conversion between single-precision and half-precision. |
0010 |
As for 0010, and also includes support for half-precision floating-point arithmetic. |
All other values are reserved.
The permitted values are:
Advanced SIMD Single Precision. Indicates whether the Advanced SIMD and floating-point implementation provides single-precision floating-point instructions. Defined values are:
SIMDSP | Meaning |
---|---|
0000 |
Not implemented. |
0001 |
Implemented. This value is permitted only if the SIMDInt field is 0001. |
All other values are reserved.
In ARMv8-A the permitted values are 0000 and 0001.
Advanced SIMD Integer. Indicates whether the Advanced SIMD and floating-point implementation provides integer instructions. Defined values are:
SIMDInt | Meaning |
---|---|
0000 |
Not implemented. |
0001 |
Implemented. |
All other values are reserved.
In ARMv8-A the permitted values are 0000 and 0001.
Advanced SIMD Load/Store. Indicates whether the Advanced SIMD and floating-point implementation provides load/store instructions. Defined values are:
SIMDLS | Meaning |
---|---|
0000 |
Not implemented. |
0001 |
Implemented. |
All other values are reserved.
In ARMv8-A the permitted values are 0000 and 0001.
Default NaN mode. Indicates whether the floating-point implementation provides support only for the Default NaN mode. Defined values are:
FPDNaN | Meaning |
---|---|
0000 |
Not implemented, or hardware supports only the Default NaN mode. |
0001 |
Hardware supports propagation of NaN values. |
All other values are reserved.
In ARMv8-A the permitted values are 0000 and 0001.
Flush to Zero mode. Indicates whether the floating-point implementation provides support only for the Flush-to-Zero mode of operation. Defined values are:
FPFtZ | Meaning |
---|---|
0000 |
Not implemented, or hardware supports only the Flush-to-Zero mode of operation. |
0001 |
Hardware supports full denormalized number arithmetic. |
All other values are reserved.
In ARMv8-A the permitted values are 0000 and 0001.
This register can be read using MRS with the following syntax:
MRS <Xt>, <systemreg>
This syntax uses the following encoding in the System instruction encoding space:
<systemreg> | op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|---|
MVFR1_EL1 | 11 | 000 | 0000 | 0011 | 001 |
The register is accessible as follows:
Control | Accessibility | |||||
---|---|---|---|---|---|---|
E2H | TGE | NS | EL0 | EL1 | EL2 | EL3 |
x | x | 0 | - | RO | n/a | RO |
x | 0 | 1 | - | RO | RO | RO |
x | 1 | 1 | - | n/a | RO | RO |
This table applies to all instructions that can access this register.
For a description of the prioritization of any generated exceptions, see section D1.13.2 (Synchronous exception prioritization) in the ARM® Architecture Reference Manual, ARMv8, for ARMv8-A architecture profile. Subject to the prioritization rules, the following traps and enables are applicable when accessing this register.
When EL2 is implemented and is using AArch64 and SCR_EL3.NS==1 && HCR_EL2.E2H==0 :
If HCR_EL2.TID3==1, Non-secure read accesses to this register from EL1 are trapped to EL2.
When EL2 is implemented and is using AArch64 and SCR_EL3.NS==1 && HCR_EL2.E2H==1 && HCR_EL2.TGE==0 :
If HCR_EL2.TID3==1, Non-secure read accesses to this register from EL1 are trapped to EL2.
02/05/2017 15:43
Copyright © 2010-2017 ARM Limited or its affiliates. All rights reserved. This document is Non-Confidential.