1
2;  Copyright 2001, 2002 Free Software Foundation, Inc.
3;
4;  This file is part of the GNU MP Library.
5;
6;  The GNU MP Library is free software; you can redistribute it and/or
7;  modify it under the terms of the GNU Lesser General Public License as
8;  published by the Free Software Foundation; either version 2.1 of the
9;  License, or (at your option) any later version.
10;
11;  The GNU MP Library is distributed in the hope that it will be useful,
12;  but WITHOUT ANY WARRANTY; without even the implied warranty of
13;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14;  Lesser General Public License for more details.
15;
16;  You should have received a copy of the GNU Lesser General Public
17;  License along with the GNU MP Library; see the file COPYING.LIB.  If
18;  not, write to the Free Software Foundation, Inc., 59 Temple Place -
19;  Suite 330, Boston, MA 02111-1307, USA.
20;
21; Translation of AT&T syntax code by Brian Gladman
22
23%include "..\x86i.inc"
24
25	section .text
26
27	global	___gmpn_submul_1c
28%ifdef	DLL
29	export	___gmpn_submul_1c
30%endif
31
32	align	16
33___gmpn_submul_1c:
34    movd    mm1,[20+esp]
35	mov     eax,[8+esp]
36	pcmpeqd mm0,mm0
37	movd    mm7,[16+esp]
38	pcmpeqd mm6,mm6
39	mov     edx,[4+esp]
40	psrlq   mm0,32
41	mov     ecx,[12+esp]
42	psllq   mm6,32
43	psubq   mm6,mm0
44	psubq   mm0,mm1
45oop1:
46    movd    mm1,[eax]
47    lea     eax,[4+eax]
48    movd    mm2,[edx]
49	paddq   mm2,mm6
50	pmuludq mm1,mm7
51	psubq   mm2,mm1
52	paddq   mm0,mm2
53    sub     ecx,1
54    movd    [edx],mm0
55    psrlq   mm0,32
56    lea     edx,[4+edx]
57    jnz     oop1
58    movd    eax,mm0
59    not     eax
60    emms
61    ret
62
63	global	___gmpn_submul_1
64%ifdef	DLL
65	export	___gmpn_submul_1
66%endif
67	align	16
68___gmpn_submul_1:
69
70	pxor    mm1,mm1
71	mov     eax,[8+esp]
72	pcmpeqd mm0,mm0
73	movd    mm7,[16+esp]
74	pcmpeqd mm6,mm6
75	mov     edx,[4+esp]
76	psrlq   mm0,32
77	mov     ecx,[12+esp]
78	psllq   mm6,32
79	psubq   mm6,mm0
80	psubq   mm0,mm1
81oop2:
82    movd    mm1,[eax]
83    lea     eax,[4+eax]
84    movd    mm2,[edx]
85	paddq   mm2,mm6
86	pmuludq mm1,mm7
87	psubq   mm2,mm1
88	paddq   mm0,mm2
89    sub     ecx,1
90    movd    [edx],mm0
91    psrlq   mm0,32
92    lea     edx,[4+edx]
93    jnz     oop2
94    movd    eax,mm0
95    not     eax
96    emms
97    ret
98
99	end
100