Instructions
www.ti.com
MPYF32 RaH, RbH, #16FHi
32-bit Floating-Point Multiply
Operands
RaH
floating-point destination register (R0H to R7H)
RbH
floating-point source register (R0H to R7H)
#16FHi
A 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit
floating-point value. The low 16-bits of the mantissa are assumed to be all 0.
Opcode
LSW: 1110 1000
01II IIII
MSW: IIII IIII
IIbb baaa
Description
Multiply RbH with the floating-point value represented by the immediate operand. Store
the result of the addition in RaH.
#16FHi is a 16-bit immediate value that represents the upper 16-bits of an IEEE 32-bit
floating-point value. The low 16-bits of the mantissa are assumed to be all 0. #16FHi is
most useful for representing constants where the lowest 16-bits of the mantissa are 0.
Some examples are 2.0 (0x40000000), 4.0 (0x40800000), 0.5 (0x3F000000), and -1.5
(0xBFC00000). The assembler will accept either a hex or float as the immediate value.
That is, the value -1.5 can be represented as #-1.5 or #0xBFC0.
RaH = RbH * #16FHi:0
This instruction can also be writen as MPYF32 RaH, #16FHi, RbH.
Flags
This instruction modifies the following flags in the STF register:.
Flag
TF
ZI
NI
ZF
NF
LUF
LVF
Modified
No
No
No
No
No
Yes
Yes
The STF register flags are modified as follows:
•
LUF = 1 if MPYF32 generates an underflow condition.
•
LVF = 1 if MPYF32 generates an overflow condition.
Pipeline
This is a 2 pipeline cycle (2p) instruction. That is:
MPYF32
RaH, RbH, #16FHi ; 2 pipeline cycles (2p)
NOP
; 1 cycle delay or non-conflicting instruction
; <-- MPYF32 completes, RaH updated
NOP
Any instruction in the delay slot must not use RaH as a destination register or use RaH
as a source operand.
Example 1
MOVIZF32
R3H, #2.0
; R3H = 2.0 (0x40000000)
MPYF32
R4H, R3H, #3.0
; R4H = R3H * 3.0
MOVL
XAR1, #0xB008
; <-- Non conflicting instruction
; <-- MPYF32 complete, R4H = 6.0 (0x40C00000)
MOV32
*XAR1, R4H
; Save the result in memory location 0xB008
Example 2
;Same as above example but #16FHi is represented in Hex
MOVIZF32
R3H, #2.0
; R3H = 2.0 (0x40000000)
MPYF32
R4H, R3H, #0x4040
; R4H = R3H * 0x4040
; 3.0 is represented as 0x40400000 in
; IEEE 754 32-bit format
MOVL
XAR1, #0xB008
; <-- Non conflicting instruction
; <-- MPYF32 complete, R4H = 6.0 (0x40C00000)
MOV32
*XAR1, R4H
; Save the result in memory location 0xB008
See also
104
Instruction Set
SPRUEO2A – June 2007 – Revised August 2008
Summary of Contents for TMS320C28 series
Page 2: ...2 SPRUEO2A June 2007 Revised August 2008 Submit Documentation Feedback ...
Page 12: ...Introduction 12 SPRUEO2A June 2007 Revised August 2008 Submit Documentation Feedback ...
Page 20: ...CPU Register Set 20 SPRUEO2A June 2007 Revised August 2008 Submit Documentation Feedback ...
Page 136: ...Instruction Set 136 SPRUEO2A June 2007 Revised August 2008 Submit Documentation Feedback ...