20.4. Loading operands from ARM11 registers

Floating-point data can be transferred between ARM11 registers and VFP11 registers using the MCR, MRC, MCRR, and MRRC coprocessor data transfer instructions. No exceptions are possible on these transfer instructions.

MCR instructions transfer 32-bit values from ARM11 registers to VFP11 registers as Table 20.1 shows.

Table 20.1. VFP11 MCR instructions

InstructionOperation Description
FMXRVFP11 system register = Rd

Move from ARM11 register Rd to VFP11 system register FPSID[1], FPSCR, FPEXC, FPINST, or FPINST2.

FMDLRDn[31:0] = RdMove from ARM11 register Rd to lower half of VFP11 double-precision register Dn.
FMDHRDn[63:32] = RdMove from ARM11 register Rd to upper half of VFP11 double-precision register Dn.
FMSRSn = RdMove from ARM11 register Rd to VFP11 single-precision or integer register Sn.

[1] Writing to the FPSID register does not change the contents of the FPSID but may be used as a serializing instruction.

MRC instructions transfer 32-bit values from VFP11 registers to ARM11 registers as Table 20.2 shows.

Table 20.2. VFP11 MRC instructions

InstructionOperation Description
FMRXRd = VFP11 system registerMove from VFP11 system register FPSID, FPSCR, FPEXC, FPINST, or FPINST2 to ARM11 register Rd.
FMRDLRd = Dn[31:0] Move from lower half of VFP11 double-precision register Dn to ARM11 register Rd.
FMRDHRd = Dn[63:32] Move from upper half of VFP11 double-precision register Dn to ARM11 register Rd.
FMRSRd = SnMove from VFP11 single-precision or integer register Sn to ARM11 register Rd.

MCRR instructions transfer 64-bit quantities from ARM11 registers to VFP11 registers as Table 20.3 shows.

Table 20.3. VFP11 MCRR instructions

InstructionOperation Description
FMDRR

Dm[31:0] = Rd

Dm[63:32] = Rn

Move from ARM11 registers Rd and Rn to lower and upper halves of VFP11 double-precision register Dm.
FMSRRSm = Rd S(m + 1) = RnMove from ARM11 registers Rd and Rn to consecutive VFP11 single-precision registers Sm and S(m + 1).

MRRC instructions transfer 64-bit quantities from VFP11 registers to ARM11 registers as Table 20.4 shows.

Table 20.4. VFP11 MRRC instructions

InstructionOperation Description
FMRRD

Rd = Dm[31:0]

Rn = Dm[63:32]

Move from lower and upper halves of VFP11 double-precision register Dm to ARM11 registers Rd and Rn.
FMRRS

Rd = Sm Rn = S(m + 1)

Move from single-precision VFP11 registers Sm and S(m + 1) to ARM11 registers Rd and Rn.
Copyright © 2005-2007 ARM Limited. All rights reserved.ARM DDI 0290G
Non-Confidential