muldi3.S revision 2d1fdb26e458c4ddc04155c1d421bced3ba90cd0
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// This file is dual licensed under the MIT and the University of Illinois Open
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// Source Licenses. See LICENSE.TXT for details.
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com#include "../assembly.h"
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// di_int __muldi3(di_int a, di_int b);
7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
8671cd656785de5e84564b6ffe4831625d7016dedreed@android.com#ifdef __i386__
9671cd656785de5e84564b6ffe4831625d7016dedreed@android.com
10c3a8c5fb385dca5c57f8002e5331360f21c1a61freed@android.com.text
1125fc5b9f0a1b9aee9d141cba027aa5a14a0df762reed@android.com.balign 4
12671cd656785de5e84564b6ffe4831625d7016dedreed@android.comDEFINE_COMPILERRT_FUNCTION(__muldi3)
13671cd656785de5e84564b6ffe4831625d7016dedreed@android.com	pushl	%ebx
14671cd656785de5e84564b6ffe4831625d7016dedreed@android.com	movl  16(%esp),		%eax	// b.lo
15671cd656785de5e84564b6ffe4831625d7016dedreed@android.com	movl  12(%esp),		%ecx	// a.hi
16671cd656785de5e84564b6ffe4831625d7016dedreed@android.com	imull	%eax,		%ecx	// b.lo * a.hi
17671cd656785de5e84564b6ffe4831625d7016dedreed@android.com
18671cd656785de5e84564b6ffe4831625d7016dedreed@android.com	movl   8(%esp),		%edx	// a.lo
19671cd656785de5e84564b6ffe4831625d7016dedreed@android.com	movl  20(%esp),		%ebx	// b.hi
20671cd656785de5e84564b6ffe4831625d7016dedreed@android.com	imull	%edx,		%ebx	// a.lo * b.hi
21671cd656785de5e84564b6ffe4831625d7016dedreed@android.com
22671cd656785de5e84564b6ffe4831625d7016dedreed@android.com	mull	%edx				// EDX:EAX = a.lo * b.lo
23671cd656785de5e84564b6ffe4831625d7016dedreed@android.com	addl	%ecx,		%ebx	// EBX = (a.lo*b.hi + a.hi*b.lo)
24671cd656785de5e84564b6ffe4831625d7016dedreed@android.com	addl	%ebx,		%edx
25671cd656785de5e84564b6ffe4831625d7016dedreed@android.com
26a3264e53ee3f3c5d6a2c813df7e44b5b96d207f2commit-bot@chromium.org	popl	%ebx
27a3264e53ee3f3c5d6a2c813df7e44b5b96d207f2commit-bot@chromium.org	retl
28d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.comEND_COMPILERRT_FUNCTION(__muldi3)
29671cd656785de5e84564b6ffe4831625d7016dedreed@android.com
30671cd656785de5e84564b6ffe4831625d7016dedreed@android.com#endif // __i386__
31a3264e53ee3f3c5d6a2c813df7e44b5b96d207f2commit-bot@chromium.org