05.02.2013 Views

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

The mapping between the registers is as follows:<br />

S maps to the least significant half of D<br />

S maps to the most significant half of D<br />

D maps to the least significant half of Q<br />

D maps to the most significant half of Q.<br />

Application Level Programmers’ Model<br />

For example, you can access the least significant half of the elements of a vector in Q6 by referring to D12,<br />

<strong>and</strong> the most significant half of the elements by referring to D13.<br />

Pseudocode details of Advanced SIMD <strong>and</strong> VFP extension registers<br />

The pseudocode function VFPSmallRegisterBank() returns FALSE if all of the 32 registers D0-D31 can be<br />

accessed, <strong>and</strong> TRUE if only the 16 registers D0-D15 can be accessed:<br />

boolean VFPSmallRegisterBank()<br />

In more detail, VFPSmallRegisterBank():<br />

returns TRUE for a VFPv2 or VFPv3-D16 implementation<br />

for a VFPv3-D32 implementation:<br />

— returns FALSE if CPACR.D32DIS == 0<br />

— returns TRUE if CPACR.D32DIS == 1 <strong>and</strong> CPACR.ASEDIS == 1<br />

— results in UNPREDICTABLE behavior if CPACR.D32DIS == 1 <strong>and</strong> CPACR.ASEDIS == 0.<br />

For details of the CPACR register, see:<br />

c1, Coprocessor Access Control Register (CPACR) on page B3-104 for a VMSA implementation<br />

c1, Coprocessor Access Control Register (CPACR) on page B4-51 for a PMSA implementation.<br />

The S0-S31, D0-D31, <strong>and</strong> Q0-Q15 views of the registers are provided by the following functions:<br />

// The 64-bit extension register bank for Advanced SIMD <strong>and</strong> VFP.<br />

array bits(64) _D[0..31];<br />

// S[] - non-assignment form<br />

// =========================<br />

bits(32) S[integer n]<br />

assert n >= 0 && n = 0 && n

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!