fdiv
Floating Point Arithmetic Division
fdiv
rD, rA, rB
0 1 0 1 1 0
0
6
Description
The floating point value in rB is divided by the floating point value in rA 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 isZero(rB)) or
(isInfinite(rA) and isInfinite(rB)) then
←
(rD)
FSR[IO]
ESR[EC]
else if isQuietNaN(rA) or isQuietNaN(rB) then
←
(rD)
else if isZero(rA) and not isInfinite(rB) then
←
(rD)
FSR[DZ]
ESR[EC]
else if isDnz((rB) / (rA)) then
←
(rD)
FSR[UF]
ESR[EC]
else if isNaN((rB)/(rA)) then
←
(rD)
FSR[OF]
ESR[EC]
else
←
(rD)
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,DZ]
Latency
•
28 cycles with
Note
This instruction is only available when the MicroBlaze parameter C_USE_FPU is greater than 0.
MicroBlaze Processor Reference Guide
UG984 (v2016.2) June 8, 2016
UG984 (v2016.1) April 6, 2016
Divide
rD
rA
11
1
00110
0xFFC00000
← 1
←
00110
0xFFC00000
signInfinite((rB)/(rA))
←
1
←
00110
signZero((rB) / (rA))
←
1
←
00110
signInfinite((rB) / (rA))
←
1
←
00110
(rB) / (rA)
=0, 30 cycles with
C_AREA_OPTIMIZED
www.xilinx.com
Chapter 5: MicroBlaze Instruction Set Architecture
rB
0 0 1 1 0 0 0 0 0 0 0
16
21
C_AREA_OPTIMIZED
31
=1
211
Send Feedback