
 ; By <mech@toth.org.uk>

 MACRO ; corrupts r12
$label muldf3 $rdest1, $rdest2, $rsrc1, $rsrc2, $rsrc3, $rsrc4
 umull r12, $rdest2, $rsrc4, $rsrc2  ; multiply.  r12 discarded
 add $rdest1, $rsrc1, $rsrc3         ; add the exponents and eor the sign
 sub $rdest1, $rdest1, #0x3FC0       ; exponent adjust
 movs r12, $rdest2, lsl #1           ; check normalisation
 sbc $rdest1, $rdest1, #0x3E         ; more exponent adjust
 movcc $rdest2, r12                  ; normalised
 andcc $rdest1, $rdest1, $rdest2, asr #31 ; clear exponent if = 0
 MEND
