fmul
Floating-Point Arithmetic Multiplication
rD, rA, rB
fmul
0 1 0 1 1 0
0
6
Description
The floating-point value in rA is multiplied with the floating-point value in rB and the result is placed
into register rD.
Pseudocode
if isDnz(rA) or isDnz(rB) then
←
(rD)
0xFFC00000
←
FSR[DO]
←
ESR[EC]
else
if isSigNaN(rA) or isSigNaN(rB) or (isZero(rA) and isInfinite(rB)) or
(isZero(rB) and isInfinite(rA)) then
←
(rD)
0xFFC00000
←
FSR[IO]
←
ESR[EC]
else if isQuietNaN(rA) or isQuietNaN(rB) then
←
(rD)
0xFFC00000
else if isDnz((rB)*(rA)) then
←
(rD)
signZero((rA)*(rB))
←
FSR[UF]
←
ESR[EC]
else if isNaN((rB)*(rA)) then
←
(rD)
signInfinite((rB)*(rA))
←
FSR[OF]
←
ESR[EC]
else
←
(rD)
(rB) * (rA)
Registers Altered
•
rD, unless an FP exception is generated, in which case the register is unchanged
•
ESR[EC], if an FP exception is generated
•
FSR[IO,UF,OF,DO]
Latency
•
4 cycles with
•
6 cycles with
•
1 cycle with
Note
This instruction is only available when the MicroBlaze parameter C_USE_FPU is greater than 0.
MicroBlaze Processor Reference Guide
UG984 (v2018.2) June 21, 2018
Multiply
rD
rA
11
1
00110
1
00110
1
00110
1
00110
=0
C_AREA_OPTIMIZED
=1
C_AREA_OPTIMIZED
=2
C_AREA_OPTIMIZED
www.xilinx.com
Chapter 5: MicroBlaze Instruction Set Architecture
rB
0 0 1 0 0 0 0 0 0 0 0
16
21
31
229
Send Feedback
Need help?
Do you have a question about the MicroBlaze and is the answer not in the manual?
Questions and answers