Compaq ECQD2KCTE Laptop User Manual


 
4–82 Alpha Architecture Handbook
FPCR and the instructions to access it are required for an implementation that supports float-
ing-point (see Section 4.7.8). On implementations that do not support floating-point, the
instructions that access FPCR (MF_FPCR and MT_FPCR) take an Illegal Instruction Trap.
Software Note:
Support for FPCR is required on a system that supports the OpenVMS Alpha operating
system even if that system does not support floating-point.
4.7.8.1 Accessing the FPCR
Because Alpha floating-point hardware can overlap the execution of a number of float-
ing-point instructions, accessing the FPCR must be synchronized with other floating-point
instructions. An EXCB instruction must be issued both prior to and after accessing the FPCR
to ensure that the FPCR access is synchronized with the execution of previous and subsequent
floating-point instructions; otherwise synchronization is not ensured.
Issuing an EXCB followed by an MT_FPCR followed by another EXCB ensures that only
floating-point instructions issued after the second EXCB are affected by and affect the new
value of the FPCR. Issuing an EXCB followed by an MF_FPCR followed by another EXCB
ensures that the value read from the FPCR only records the exception information for float-
ing-point instructions issued prior to the first EXCB.
Consider the following example:
ADDT/D
EXCB ;1
MT_FPCR F1,F1,F1
EXCB ;2
SUBT/D
Without the first EXCB, it is possible in an implementation for the ADDT/D to execute in par-
allel with the MT_FPCR. Thus, it would be UNPREDICTABLE whether the ADDT/D was
affected by the new rounding mode set by the MT_FPCR and whether fields cleared by the
MT_FPCR in the exception summary were subsequently set by the ADDT/D.
Without the second EXCB, it is possible in an implementation for the MT_FPCR to execute in
parallel with the SUBT/D. Thus, it would be UNPREDICTABLE whether the SUBT/D was
affected by the new rounding mode set by the MT_FPCR and whether fields cleared by the
MT_FPCR in the exception summary field of FPCR were previously set by the SUBT/D.
Specifically, code should issue an EXCB before and after it accesses the FPCR if that code
needs to see valid values in FPCR bits <63> and <57:52>. An EXCB should be issued before
attempting to write the FPCR if the code expects changes to bits <59:52> not to have depen-
dencies with prior instructions. An EXCB should be issued after attempting to write the FPCR
if the code expects subsequent instructions to have dependencies with changes to bits <59:52>.