beautypg.com

Motorola DSP96002 User Manual

Page 672

background image

MOTOROLA

DSP96002 USER’S MANUAL

B-153

; d4.h d4.l

; d5.h d5.l

; d6.l

; d7.l

;

; Alters Program Control Registers

; pc sr

;

;

; Version 1.0

; Latest Revision - 01-Aug-88

;

section

ieeeadd

emsk equ $7ff ; exponent mask

eden equ $1 ; denorm exponent

grsmsk equ $700 ; GRS (guard-round-sticky) bits mask

grmsk equ $fffffe00 ; GR (guard-round) bits mask

smsk equ $ffffff00 ; mask to clear bits to right of the sticky

bit

onemsk equ $1ff ; mask to set bits to right of the round bit

inum equ $100 ; increment number

imsk equ $7fffffff ; infinity mask

qnane equ $7ff ; quiet NaN exponent

qnanmh equ $7fffffff ; quiet NaN mantissa high

qnanml equ $ffffffff ; quiet NaN mantissa low

maxnum equ $fffff800 ; low part of maximum number

;

sdptest ; double precision add subroutine

;

; Clear ER portion of status register

;

andi #0,er

;

; Check for Maximum and Minimum Exponents

;

move #0,d6.l ; addend 0 flag

move d0.h,d4.l ; get exp0

move #emsk,d7.l ; get exponent mask

and d7,d4 d0.m,d2.l ; delete tags, get m0.h

cmp d7,d4 d1.m,d3.l ; check max exp, get m1.h

jeq _mant1 ; jump if exp0 = max exp

move d1.h,d5.l ; get exp1

and d7,d5 #1,d6.l ; delete tags, a1 flag

cmp d7,d5 #0,d2.m ; check max exp, sticky=0

jeq _mant2 ; jump if exp1 = max exp

tst d4 #0,d6.l ; check min exp, a0 flag

jeq _mant3 ; jump if exp0 = min exp

tst d5 #1,d6.l ; check min exp, a1 flag

jeq _mant4 ; jump if exp1 = min exp

jmp _nadd ; jump to normalized add

;

; Check if Addend 0 is Infinity

;

_mant1 move #imsk,d7.l ; get infinity mask