1! Z8000 __gmpn_mul_1 -- Multiply a limb vector with a limb and store
2! the result in a second limb vector.
3
4! Copyright 1993, 1994, 1995, 2000 Free Software Foundation, Inc.
5
6! This file is part of the GNU MP Library.
7
8! The GNU MP Library is free software; you can redistribute it and/or modify
9! it under the terms of the GNU Lesser General Public License as published by
10! the Free Software Foundation; either version 3 of the License, or (at your
11! option) any later version.
12
13! The GNU MP Library is distributed in the hope that it will be useful, but
14! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15! or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
16! License for more details.
17
18! You should have received a copy of the GNU Lesser General Public License
19! along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
20
21
22! INPUT PARAMETERS
23! res_ptr	r7
24! s1_ptr	r6
25! size		r5
26! s2_limb	r4
27
28	unseg
29	.text
30	even
31	global ___gmpn_mul_1
32___gmpn_mul_1:
33	sub	r2,r2		! zero carry limb
34	and	r4,r4
35	jr	mi,Lneg
36
37Lpos:	pop	r1,@r6
38	ld	r9,r1
39	mult	rr8,r4
40	and	r1,r1		! shift msb of loaded limb into cy
41	jr	mi,Lp		! branch if loaded limb's msb is set
42	add	r8,r4		! hi_limb += sign_comp2
43Lp:	add	r9,r2		! lo_limb += cy_limb
44	xor	r2,r2
45	adc	r2,r8
46	ld	@r7,r9
47	inc	r7,#2
48	dec	r5
49	jr	ne,Lpos
50	ret t
51
52Lneg:	pop	r1,@r6
53	ld	r9,r1
54	mult	rr8,r4
55	add	r8,r1		! hi_limb += sign_comp1
56	and	r1,r1
57	jr	mi,Ln
58	add	r8,r4		! hi_limb += sign_comp2
59Ln:	add	r9,r2		! lo_limb += cy_limb
60	xor	r2,r2
61	adc	r2,r8
62	ld	@r7,r9
63	inc	r7,#2
64	dec	r5
65	jr	ne,Lneg
66	ret t
67