user manual

MicroBlaze Processor Reference Guide www.xilinx.com 101
UG081 (v6.0) June 1, 2006 1-800-255-7778
Instructions
R
frsub
Reverse Floating Point Arithmetic Subtraction
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
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)) and then
(rD) signInfinite((rB)-(rA))
FSR[OF] 1
ESR[EC] 00110
else
(rD) (rB) - (rA)
Registers Altered
rD, unless an FP exception is generated, in which case the register is unchanged
ESR[EC]
FSR[IO,UF,OF,DO]
Latency
4 cycles
Note
This instruction is only available when the MicroBlaze parameter C_USE_FPU is set to 1.
frsub
rD, rA, rB Reverse subtract
0 1 0 1 1 0 rD rA rB 0 0 0 1 0 0 0 0 0 0 0
0 6 11 16 21 31