! Integer Version 2.0, RD, 12.2.93, Sparc8	idigitaddsubmult.s

#include "lidia_elf.h"

	.seg	"text"			! [internal]

	.global	USCORE(DigitAdd)
USCORE(DigitAdd):
	mov	%o0,%o4
	addcc	%o3,%o1,%o1
	addx	%g0, %g0, %o0
	addcc	%o1,%o2,%o1
	addx	%o0, %g0, %o0
	retl
	st	%o1,[%o4]

	.global	USCORE(DigitSub)
USCORE(DigitSub):
	mov	%o0,%o4
	subcc	%o1,%o2,%o2
	addx	%g0, %g0, %o0
	subcc	%o2,%o3,%o1
	addx	%o0, %g0, %o0
	retl
	st	%o1,[%o4]

	.global	USCORE(DigitMult)
USCORE(DigitMult):
	umul	%o2, %o1, %o1		! a*b
	mov	%o0, %o4
	rd	%y, %o0			! prod (high)
	retl
	st      %o1,[%o4]

	.global	USCORE(DigitMultAdd)
USCORE(DigitMultAdd):
	umul	%o2, %o1, %o1		! a*b
	mov	%o0, %o4
	rd	%y, %o0			! prod (high)
	addcc	%o1, %o3, %o1		! prod + carry
	addx	%o0, %g0, %o0
	retl
	st      %o1,[%o4]

	.seg	"data"			! [internal]
