MMPYF32 MRd, MRe, MRf ||MMOV32 MRa, mem32
32-Bit Floating-Point Multiply with Parallel Move
Operands
MRd
CLA floating-point destination register for MMPYF32 (MR0 to MR3)
MRd cannot be the same register as MRa
MRe
CLA floating-point source register for MMPYF32 (MR0 to MR3)
MRf
CLA floating-point source register for MMPYF32 (MR0 to MR3)
MRa
CLA floating-point destination register for MMOV32 (MR0 to MR3)
MRa cannot be the same register as MRd
mem32
32-bit memory location accessed using one of the available
addressing modes. This will be the source of MMOV32.
Opcode
LSW: mmmm mmmm mmmm mmmm
MSW: 0000 ffee ddaa addr
Description
Multiply the contents of two floating-point registers and load another.
MRd = MRe * MRf;
MRa = [mem32];
Restrictions
The destination register for the MMPYF32 and the MMOV32 must be unique. That is,
MRa cannot be the same register as MRd.
Flags
This instruction modifies the following flags in the MSTF register:.
Flag
TF
ZF
NF
LUF
LVF
Modified
No
Yes
Yes
Yes
Yes
The MSTF register flags are modified as follows:
• LUF = 1 if MMPYF32 generates an underflow condition.
• LVF = 1 if MMPYF32 generates an overflow condition.
The MMOV32 Instruction will set the NF and ZF flags as follows:
NF = MRa(31);
ZF = 0;
if(MRa(30:23) == 0) { ZF = 1; NF = 0; }
Pipeline
Both MMPYF32 and MMOV32 complete in a single cycle.
Example 1
; Given M1, X1 and B1 are 32-bit floating point
; Calculate Y1 = M1*X1+B1
;
_Cla1Task1:
MMOV32 MR0, @M1 ; Load MR0 with M1
MMOV32 MR1, @X1 ; Load MR1 with X1
MMPYF32 MR1, MR1, MR0 ; Multiply M1*X1
|| MMOV32 MR0, @B1 ; and in parallel load MR0 with B1
MADDF32 MR1, MR1, MR0 ; Add M*X1 to B1 and store in MR1
MMOV32 @Y1, MR1 ; Store the result
MSTOP ; end of task
Control Law Accelerator (CLA)
680
TMS320x2806x Microcontrollers
SPRUH18I – JANUARY 2011 – REVISED JUNE 2022
Copyright © 2022 Texas Instruments Incorporated
Содержание TMS320 2806 Series
Страница 2: ......