Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(931)

Side by Side Diff: gcc/gmp/mpn/x86/aorsmul_1.asm

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gcc/gmp/mpn/x86/aors_n.asm ('k') | gcc/gmp/mpn/x86/copyd.asm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 dnl x86 __gmpn_addmul_1 (for 386 and 486) -- Multiply a limb vector with a
2 dnl limb and add the result to a second limb vector.
3
4 dnl Copyright 1992, 1994, 1997, 1999, 2000, 2001, 2002, 2005 Free Software
5 dnl Foundation, Inc.
6 dnl
7 dnl This file is part of the GNU MP Library.
8 dnl
9 dnl The GNU MP Library is free software; you can redistribute it and/or
10 dnl modify it under the terms of the GNU Lesser General Public License as
11 dnl published by the Free Software Foundation; either version 3 of the
12 dnl License, or (at your option) any later version.
13 dnl
14 dnl The GNU MP Library is distributed in the hope that it will be useful,
15 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
16 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 dnl Lesser General Public License for more details.
18 dnl
19 dnl You should have received a copy of the GNU Lesser General Public License
20 dnl along with the GNU MP Library. If not, see http://www.gnu.org/licenses/.
21
22 include(`../config.m4')
23
24
25 C cycles/limb
26 C P5: 14.75
27 C P6 model 0-8,10-12) 7.5
28 C P6 model 9 (Banias)
29 C P6 model 13 (Dothan) 6.75
30 C P4 model 0 (Willamette) 24.0
31 C P4 model 1 (?) 24.0
32 C P4 model 2 (Northwood) 24.0
33 C P4 model 3 (Prescott)
34 C P4 model 4 (Nocona)
35 C K6: 12.5
36 C K7: 5.25
37 C K8:
38
39
40 ifdef(`OPERATION_addmul_1',`
41 define(M4_inst, addl)
42 define(M4_function_1, mpn_addmul_1)
43
44 ',`ifdef(`OPERATION_submul_1',`
45 define(M4_inst, subl)
46 define(M4_function_1, mpn_submul_1)
47
48 ',`m4_error(`Need OPERATION_addmul_1 or OPERATION_submul_1
49 ')')')
50
51 MULFUNC_PROLOGUE(mpn_addmul_1 mpn_submul_1)
52
53
54 C mp_limb_t M4_function_1 (mp_ptr dst, mp_srcptr src, mp_size_t size,
55 C mp_limb_t mult);
56
57 define(PARAM_MULTIPLIER, `FRAME+16(%esp)')
58 define(PARAM_SIZE, `FRAME+12(%esp)')
59 define(PARAM_SRC, `FRAME+8(%esp)')
60 define(PARAM_DST, `FRAME+4(%esp)')
61
62 TEXT
63 ALIGN(8)
64
65 PROLOGUE(M4_function_1)
66 deflit(`FRAME',0)
67
68 pushl %edi
69 pushl %esi
70 pushl %ebx
71 pushl %ebp
72 deflit(`FRAME',16)
73
74 movl PARAM_DST,%edi
75 movl PARAM_SRC,%esi
76 movl PARAM_SIZE,%ecx
77
78 xorl %ebx,%ebx
79 andl $3,%ecx
80 jz L(end0)
81
82 L(oop0):
83 movl (%esi),%eax
84 mull PARAM_MULTIPLIER
85 leal 4(%esi),%esi
86 addl %ebx,%eax
87 movl $0,%ebx
88 adcl %ebx,%edx
89 M4_inst %eax,(%edi)
90 adcl %edx,%ebx C propagate carry into cylimb
91
92 leal 4(%edi),%edi
93 decl %ecx
94 jnz L(oop0)
95
96 L(end0):
97 movl PARAM_SIZE,%ecx
98 shrl $2,%ecx
99 jz L(end)
100
101 ALIGN(8)
102 L(oop): movl (%esi),%eax
103 mull PARAM_MULTIPLIER
104 addl %eax,%ebx
105 movl $0,%ebp
106 adcl %edx,%ebp
107
108 movl 4(%esi),%eax
109 mull PARAM_MULTIPLIER
110 M4_inst %ebx,(%edi)
111 adcl %eax,%ebp C new lo + cylimb
112 movl $0,%ebx
113 adcl %edx,%ebx
114
115 movl 8(%esi),%eax
116 mull PARAM_MULTIPLIER
117 M4_inst %ebp,4(%edi)
118 adcl %eax,%ebx C new lo + cylimb
119 movl $0,%ebp
120 adcl %edx,%ebp
121
122 movl 12(%esi),%eax
123 mull PARAM_MULTIPLIER
124 M4_inst %ebx,8(%edi)
125 adcl %eax,%ebp C new lo + cylimb
126 movl $0,%ebx
127 adcl %edx,%ebx
128
129 M4_inst %ebp,12(%edi)
130 adcl $0,%ebx C propagate carry into cylimb
131
132 leal 16(%esi),%esi
133 leal 16(%edi),%edi
134 decl %ecx
135 jnz L(oop)
136
137 L(end): movl %ebx,%eax
138
139 popl %ebp
140 popl %ebx
141 popl %esi
142 popl %edi
143 ret
144
145 EPILOGUE()
OLDNEW
« no previous file with comments | « gcc/gmp/mpn/x86/aors_n.asm ('k') | gcc/gmp/mpn/x86/copyd.asm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698