Motorola DSP96002 User Manual page 682

32-bit digital signal processor
Table of Contents

Advertisement

and
tst
jne
tst
jne
move
move
and
cmp
jne
;
; Check if Addend 1 is Infinity
;
_mant2
move
and
tst
jne
tst
jne
jclr
ori
jmp
;
; Check for Case: (+Inf) + (-Inf) = QNaN
;
_inf1
ftfr.x
ori
jmp
_binf
ftst
jmi
ftst
jmi
ori
jmp
_minf
ftst
jpl
ori
jmp
;
; Check for NaN
;
_nan0
jclr
move
move
and
cmp
jne
move
and
tst
jne
tst
jeq
_nan1
jset
MOTOROLA
d7,d2
; remove implied one bit
d2
; check m0.high = zero
_nan0
; jump if nan
d0
; check m0.low = zero
_nan0
; jump if nan
#emsk,d7.l
; get exponent mask
d1.h,d5.l
; get exp1
d7,d5
; delete tags
d7,d5
; check for max exp
_inf1
; jump if a1 is not inf or NaN
#imsk,d7.l
; get infinity mask
d7,d3
; remove implied one bit
d3
; check m1.high = zero
_nan1
; jump if nan
d1
; check m1.low = zero
_nan1
; jump if nan
#0,d6.l,_binf
; jump if a0 and a1 are inf
#$10,ccr
; set infinity bit
_done
; a1 is infinity
d0,d1
; move result to d1
#$10,ccr
_done
; a0 is infinity
d0
; check sign of a0
_minf
; jump if a0 is -inf
d1
; check sign of a1
_inan
; (+inf) + (-inf) = QNaN
#$10,ccr
; set infinity bit
_done
; a0 and a1 are +inf
d1
; check sign of a1
_inan
; (-inf) + (+inf) = QNaN
#$10,ccr
; set infinity bit
_done
; a0 and a1 are -inf
#30,d0.m,_inan
; jump if a0 is a SNaN
#emsk,d7.l
; get exponent mask
d1.h,d5.l
; get exp1
d7,d5
; delete tags
d7,d5
; check for max exp
_qnan
; jump if a1 is not a NaN
#imsk,d7.l
; get infinity mask
d7,d3
; remove implied one bit
d3
; check mant1.high = zero
_nan1
; jump if a1 is a NaN
d1
; check mant1.low = zero
_qnan
; jump if a1 is infinity
#30,d1.m,_qnan
; jump if a1 is a QNaN
DSP96002 USER'S MANUAL
; set infinity bit
B-163

Advertisement

Table of Contents
loading

Table of Contents