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