beautypg.com

Motorola DSP96002 User Manual

Page 707

background image

B-188

DSP96002 USER’S MANUAL

MOTOROLA

; GE - greater than or equal N eor V = 0

; GT - greater than Z + (N eor V) = 0

; LE - less than or equal Z + (N eor V) = 1

; LT - less than N eor V = 1

; NE - not equal Z = 0

;

; Alters: D0.L,D1.L,D2.L

;

dp_cmp move x:(r0+sign),d0.l ;get sign

tst d0 x:(r0),d1.l ;get exponent

jeq _pos1 ;positive

bset #31,d1.l ;set sign bit

_pos1 move x:(r1+sign),d0.l ;get sign

tst d0 x:(r1),d2.l ;get exponent

jeq _pos2 ;positive

bset #31,d2.l ;set sign bit

_pos2 cmp d2,d1 ;compare signs and exponents

jeq _same1 ;more if same

rts ;conditions are set

_same1 move x:(r0+ms),d1.l ;get ms parts

move x:(r1+ms),d2.l

cmp d2,d1 ;compare

jeq _same2 ;more if same

rts ;conditions are set

_same2 move x:(r0+ls),d1.l ;get ls parts

move x:(r1+ls),d2.l

cmp d2,d1 ;do final compare

rts

;

; MOTOROLA DSP96002 DPLIB - VERSION 1.0
;
;DP_COPYS-Copy sign from one double precision number to another.

;

; Entry point: dp_copys: c(r0+sign)

c(r1+sign)

;

; Inputs: r0 contains the lowest address of a 4-word internal

; extended precision number

; r1 contains the lowest address of a 4-word internal

; extended precision number

;

; Outputs: r0 contains the lowest address of a 4-word internal

; extended precision number

;

; Alters: D0.L

;

dp_copys move x:(r0+ms),d0.l ;get ms

tst d0 ;test for zero

jne notzero ;if not zero, copy the sign

move x:(r0+ls),d0.l ;get ls

tst d0 ;test for zero

jne notzero ;if not zero, copy the sign

rts

notzero move x:(r1+sign),d0.l ;get sources sign