R

Chapter 4: MicroBlaze Instruction Set Architecture

fmul

Floating Point Arithmetic Multiplication

fmul

rD, rA, rB

Multiply

0 1 0 1 1 0

rD

rA

rB

0 0 1 0 0 0 0 0 0 0 0

0

6

11

16

21

31

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] 1 ESR[EC] 00110

else

if isSigNaN(rA) or isSigNaN(rB) or (isZero(rA) and isInfinite(rB)) or (isZero(rB) and isInfinite(rA)) 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((rA)*(rB)) 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.

102

www.xilinx.com

MicroBlaze Processor Reference Guide

 

1-800-255-7778

UG081 (v6.0) June 1, 2006

Page 102
Image 102
Xilinx EDK 8.2i manual Floating Point Arithmetic Multiplication Fmul