3 emac instruction set summary, 1 emac instruction execution timing, Emac instruction set summary -11 – Freescale Semiconductor MCF5480 User Manual
Page 159: Emac instruction execution timing -11

EMAC Instruction Set Summary
MCF548x Reference Manual, Rev. 3
Freescale Semiconductor
4-11
4.3
EMAC Instruction Set Summary
summarizes EMAC unit instructions.
4.3.1
EMAC Instruction Execution Timing
The instruction execution times for the EMAC can be found in
Section 3.7, “Instruction Execution
The ColdFire family supports two multiply-accumulate implementations that provide different levels of
performance and capability for differing silicon costs. The EMAC features a four-stage execution pipeline,
optimized for 32-bit operands with a fully-pipelined 32
× 32 multiply array and four 48-bit accumulators.
The EMAC execution pipeline overlaps the AGEX stage of the OEP; that is, the first stage of the EMAC
pipeline is the last stage of the basic OEP. EMAC units are designed for sustained, fully-pipelined
operation on accumulator load, copy, and multiply-accumulate instructions. However, instructions that
store contents of the multiply-accumulate programming model can generate OEP stalls that expose the
EMAC execution pipeline depth, as in the following:
mac.w
Ry, Rx, Acc0
move.l
Acc0, Rz
Table 4-3. EMAC Instruction Summary
Command
Mnemonic
Description
Multiply Signed
MULS
Multiplies two signed operands yielding a signed result
Multiply Unsigned
MULU
Multiplies two unsigned operands yielding an unsigned result
Multiply Accumulate
MAC Ry,RxSF,ACCx
MSAC Ry,RxSF,ACCx
Multiplies two operands and adds/subtracts the product to/from an
accumulator
Multiply Accumulate
with Load
MAC Ry,Rx,
MSAC Ry,Rx,
Multiplies two operands and combines the product to an
accumulator while loading a register with the memory operand
Load Accumulator
MOV.L {Ry,#imm},ACCx
Loads an accumulator with a 32-bit operand
Store Accumulator
MOV.L ACCx,Rx
Writes the contents of an accumulator to a CPU register
Copy Accumulator
MOV.L ACCy,ACCx
Copies a 48-bit accumulator
Load MACSR
MOV.L {Ry,#imm},MACSR
Writes a value to MACSR
Store MACSR
MOV.L MACSR,Rx
Write the contents of MACSR to a CPU register
Store MACSR to CCR
MOV.L MACSR,CCR
Write the contents of MACSR to the CCR
Load MAC Mask Reg
MOV.L {Ry,#imm},MASK
Writes a value to the MASK register
Store MAC Mask Reg
MOV.L MASK,Rx
Writes the contents of the MASK to a CPU register
Load AccExtensions01
MOV.L {Ry,#imm},ACCext01
Loads the accumulator 0,1 extension bytes with a 32-bit operand
Load AccExtensions23
MOV.L {Ry,#imm},ACCext23
Loads the accumulator 2,3 extension bytes with a 32-bit operand
Store AccExtensions01 MOV.L ACCext01,Rx
Writes the contents of accumulator 0,1 extension bytes into a CPU
register
Store AccExtensions23 MOV.L ACCext23,Rx
Writes the contents of accumulator 2,3 extension bytes into a CPU
register