Showing changes from revision #1 to #2:
Added | Removed | Changed
Entry | |
---|---|
R0 | 2 (Reason code) |
Exit | |
---|---|
R0 | Misc flags: |
Bit 0: VFP short vectors are supported by hardware | |
Bit 1: VFP short vectors are supported by software | |
Other bits: Reserved (zero) | |
All other registers preserved |
This call returns miscellaneous information about the VFP/NEON environment.
‘Short vectors’ refers to the use of VFP data processing instructions with non-zero values for LEN or STRIDE set in the FPSCR, as defined in the ARM ARM. It does not refer to NEON vectors. Usage of short vectors is deprecated by ARM, and most modern VFP implementations don’t support them. On some machines VFPSupport is able to emulate support for them via software, but this is considerably slower than executing a sequence ofVFP scalar instructions in a row, or using NEON instructions.
If bit 0 of R0 is set then it indicates that short vectors are supported by the hardware, and so short vector operations will execute quickly (unless support code is invoked for some other reason).
If bit 1 of R0 is set then it indicates that short vectors are being emulated via software, and so any such operations will execute slowly.
If neither bit is set then short vectors are not supported at all, all. and If any you attempt to use them then the exact behaviour will result depend in on an the undefined model instruction of exception.CPU in use – e.g. you may get an undefined instruction exception, or the instruction may be treated as a scalar op. Note that if there is no support for short vectors then the FPSCR may also have the LEN and STRIDE fields hard-wired to zero.
For versions of VFPSupport which don’t implement this SWI (0.09 and below), use VFPSupport_Features 0 to read the MVFR0 register. If bits 24-27 of MVFR0 are zero then short vectors are not supported (in software or hardware). If the bits are non-zero then they are supported in hardware.