;+
;  QuadMath.Mar
;  (21-Mar-88 : v1.0)
;
;                  
;               Rand P. Hall and M.P.Gerlek
;                  
;
; standard quadmath routines, used for time calculations:
;      Subquad
;      Compquad
;      Addquad
;-

	.title	quadmath

;	call subquad (a,b,c)
;
;	returns: c = a - b
;
	.psect	code,pic,usr,con,rel,lcl,shr,exe,rd,nowrt,novec,long
	.entry	subquad	^m<r2>
A=4
B=8
C=12
	movq	@A(AP),R0
	movaq	@B(AP),R2
	subl	(R2)+,R0
	sbwc	(R2),R1
	movq	R0,@C(AP)
	ret


;	istat = compquad(a,b)
;
;	if a > b ... istat = 1
;	   a = b ... istat = 0
;	   a < b ... istat = -1
;
	.psect	code,pic,usr,con,rel,lcl,shr,exe,rd,nowrt,novec,long
	.entry	compquad	^m<r2>
	movq	@A(AP),R0
	movaq	@B(AP),R2
	subl	(R2)+,R0
	sbwc	(R2),R1
	movq	R0,R0			; "test" quadword
	beql	10$
	bgtr	20$
	movl	#-1,R0
	brb	30$
10$:
	clrl	R0
	brb	30$
20$:
	movl	#1,R0
30$:
	ret


;	call addquad(a,b,c)
;
;	returns: c = a + b
;
	.psect	code,pic,usr,con,rel,lcl,shr,exe,rd,nowrt,novec,long
	.entry	addquad	^m<r2>
A=4
B=8
C=12
       	movq	@A(AP),R0
	movaq	@B(AP),R2
	addl	(R2)+,R0
	adwc	(R2),R1
	movq	R0,@C(AP)
      	ret
	.end
