frsub
Reverse Floating Point Arithmetic Subtraction
frsub
0 1 0 1 1 0
0
6
Description
The floating point value in rA is subtracted from the floating point value in rB and the result is
placed into register rD.
Pseudocode
Registers Altered
•
•
•
Latency
•
•
Note
This instruction is only available when the MicroBlaze parameter C_USE_FPU is greater than 0.
MicroBlaze Processor Reference Guide
UG081 (v14.7)
rD, rA, rB
rD
rA
11
if isDnz(rA) or isDnz(rB) then
←
(rD)
0xFFC00000
←
FSR[DO]
1
←
ESR[EC]
00110
else if (isSigNaN(rA) or isSigNaN(rB) or
(isPosInfinite(rA) and isPosInfinite(rB)) or
(isNegInfinite(rA) and isNegInfinite(rB))) then
←
(rD)
0xFFC00000
←
FSR[IO]
1
←
ESR[EC]
00110
else if isQuietNaN(rA) or isQuietNaN(rB) then
←
(rD)
0xFFC00000
else if isDnz((rB)-(rA)) then
←
(rD)
signZero((rB)-(rA))
←
FSR[UF]
1
←
ESR[EC]
00110
else if isNaN((rB)-(rA)) then
←
(rD)
signInfinite((rB)-(rA))
←
FSR[OF]
1
←
ESR[EC]
00110
else
←
(rD)
(rB) - (rA)
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]
4 cycles with C_AREA_OPTIMIZED=0
6 cycles with C_AREA_OPTIMIZED=1
www.xilinx.com
Reverse subtract
rB
0 0 0 1 0 0 0 0 0 0 0
16
21
Instructions
31
191
Send Feedback
Need help?
Do you have a question about the MicroBlaze and is the answer not in the manual?