
Chapter 4. Floating-Point Unit (FPU)
For More Information On This Product,
Go to: www.freescale.com
4-31
Instructions
The ColdFire architecture supports concurrent execution of integer and floating-point
instructions. The latencies in this table define the execution time needed by the FPU. After
a multi-cycle FPU instruction is issued, subsequent integer instructions can execute
concurrently with the FPU execution. For this sequence, the floating-point instruction
occupies only one OEP cycle.
4.4.3 Key Differences between ColdFire and MC680x0 FPU
Programming Models
This section is intended for compiler developers and developers porting assembly
language routines from 68K to ColdFire. It highlights major differences between the
ColdFire FPU instruction set architecture (ISA) and the equivalent 68K family ISA, using
the MC68060 as the reference. The internal FPU datapath width is the most obvious
difference. ColdFire uses 64-bit double-precision and the 68K Family uses 80-bit
extended precision. Other differences pertain to supported addressing modes, both across
all FPU instructions as well as specific opcodes. Table 4-26 lists key differences. Because
all ColdFire implementations support instruction sizes of 48 bits or less, 68K operations
requiring larger instruction lengths cannot be supported.
.
Some differences affect function activation and return. 68K subroutines typically began
with FMOVEM #list,-(a7) to save registers on the system stack, with each register
occupying 3 longwords. In ColdFire, each register occupies 2 longwords and the stack
pointer must be adjusted before the FMOVEM instruction. A similar sequence generally
occurs at the end of the function, preparing to return control to the calling routine.
1
Add 1(1/0) for an external read operand of double-precision format for all instructions except FMOVEM, and
1(0/1) for FMOVE FPy,<ea>x when the destination is double-precision.
If the external operand is an integer format (byte, word, longword), there is a 4 cycle conversion time which
must be added to the basic execution time.
If any exceptions are enabled, the execution time for FMOVE FPy,<ea>x increases by one cycle. If the BSUN
exception is enabled, the execution time for FBcc increases by one cycle.
For FMOVEM,
n
refers to the number of registers being moved.
2
3
4
Table 4-26. Key Programming Model Differences
Feature
68K
ColdFire
Internal datapath width
80 bits
64 bits
Support for fpGEN d
8
(An,Xi),FPx
Yes
No
Support for fpGEN xxx.{w,l},FPx
Yes
No
Support for fpGEN d
8
(PC,Xi),FPx
Yes
No
Support for fpGEN #xxx,FPx
Yes
No
Support for fmovem (Ay)+,#list
Yes
No
Support for fmovem #list,-(Ax)
Yes
No
Support for fmovem FP Control Registers
Yes
No
F
Freescale Semiconductor, Inc.
n
.