=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/asm/ddN.c,v retrieving revision 1.1 retrieving revision 1.11 diff -u -p -r1.1 -r1.11 --- OpenXM_contrib2/asir2000/asm/ddN.c 1999/12/03 07:39:06 1.1 +++ OpenXM_contrib2/asir2000/asm/ddN.c 2013/11/05 02:55:02 1.11 @@ -1,4 +1,52 @@ -/* $OpenXM: OpenXM/src/asir99/asm/ddN.c,v 1.1.1.1 1999/11/10 08:12:25 noro Exp $ */ +/* + * Copyright (c) 1994-2000 FUJITSU LABORATORIES LIMITED + * All rights reserved. + * + * FUJITSU LABORATORIES LIMITED ("FLL") hereby grants you a limited, + * non-exclusive and royalty-free license to use, copy, modify and + * redistribute, solely for non-commercial and non-profit purposes, the + * computer program, "Risa/Asir" ("SOFTWARE"), subject to the terms and + * conditions of this Agreement. For the avoidance of doubt, you acquire + * only a limited right to use the SOFTWARE hereunder, and FLL or any + * third party developer retains all rights, including but not limited to + * copyrights, in and to the SOFTWARE. + * + * (1) FLL does not grant you a license in any way for commercial + * purposes. You may use the SOFTWARE only for non-commercial and + * non-profit purposes only, such as academic, research and internal + * business use. + * (2) The SOFTWARE is protected by the Copyright Law of Japan and + * international copyright treaties. If you make copies of the SOFTWARE, + * with or without modification, as permitted hereunder, you shall affix + * to all such copies of the SOFTWARE the above copyright notice. + * (3) An explicit reference to this SOFTWARE and its copyright owner + * shall be made on your publication or presentation in any form of the + * results obtained by use of the SOFTWARE. + * (4) In the event that you modify the SOFTWARE, you shall notify FLL by + * e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification + * for such modification or the source code of the modified part of the + * SOFTWARE. + * + * THE SOFTWARE IS PROVIDED AS IS WITHOUT ANY WARRANTY OF ANY KIND. FLL + * MAKES ABSOLUTELY NO WARRANTIES, EXPRESSED, IMPLIED OR STATUTORY, AND + * EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT OF THIRD PARTIES' + * RIGHTS. NO FLL DEALER, AGENT, EMPLOYEES IS AUTHORIZED TO MAKE ANY + * MODIFICATIONS, EXTENSIONS, OR ADDITIONS TO THIS WARRANTY. + * UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, + * OR OTHERWISE, SHALL FLL BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL + * DAMAGES OF ANY CHARACTER, INCLUDING, WITHOUT LIMITATION, DAMAGES + * ARISING OUT OF OR RELATING TO THE SOFTWARE OR THIS AGREEMENT, DAMAGES + * FOR LOSS OF GOODWILL, WORK STOPPAGE, OR LOSS OF DATA, OR FOR ANY + * DAMAGES, EVEN IF FLL SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF + * SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. EVEN IF A PART + * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY + * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, + * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. + * + * $OpenXM: OpenXM_contrib2/asir2000/asm/ddN.c,v 1.10 2009/03/02 19:01:43 ohara Exp $ +*/ #ifndef FBASE #define FBASE #endif @@ -7,12 +55,7 @@ #include "base.h" #include "inline.h" -void bxprintn(N),bprintn(N); -void divnmain_special(int,int,unsigned int *,unsigned int *,unsigned int *); -void dupn(N,N); - -void divn(n1,n2,nq,nr) -N n1,n2,*nq,*nr; +void divn(N n1,N n2,N *nq,N *nr) { int tmp,b; int i,j,d1,d2,dd; @@ -74,8 +117,7 @@ N n1,n2,*nq,*nr; } } -void divsn(n1,n2,nq) -N n1,n2,*nq; +void divsn(N n1,N n2,N *nq) { int d1,d2,dd,i,b; unsigned int *m1,*m2; @@ -114,8 +156,7 @@ N n1,n2,*nq; } } -void remn(n1,n2,nr) -N n1,n2,*nr; +void remn(N n1,N n2,N *nr) { int d1,d2,tmp; unsigned int uq,ur; @@ -147,11 +188,7 @@ N n1,n2,*nr; /* d = 2^(32*words)-lower */ -void remn_special(a,d,bits,lower,b) -N a,d; -int bits; -unsigned int lower; -N *b; +void remn_special(N a,N d,int bits,unsigned int lower,N *b) { int words; N r; @@ -189,10 +226,7 @@ N *b; } else *b = r; } -void mulin(n,d,p) -N n; -unsigned int d; -unsigned int *p; +void mulin(N n,unsigned int d,unsigned int *p) { unsigned int carry; unsigned int *m,*me; @@ -204,10 +238,7 @@ unsigned int *p; *p = carry; } -unsigned int divin(n,dvr,q) -N n; -unsigned int dvr; -N *q; +unsigned int divin(N n,unsigned int dvr,N *q) { int d; unsigned int up; @@ -229,8 +260,7 @@ N *q; return ( up ); } -void bprintn(n) -N n; +void bprintn(N n) { int l,i; unsigned int *b; @@ -244,8 +274,7 @@ N n; } } -void bxprintn(n) -N n; +void bxprintn(N n) { int l,i; unsigned int *b; @@ -259,9 +288,8 @@ N n; } } -#if defined(VISUAL) || defined(i386) -void muln(n1,n2,nr) -N n1,n2,*nr; +#if defined(_M_IX86) || defined(i386) +void muln(N n1,N n2,N *nr) { unsigned int tmp,carry,mul; unsigned int *p1,*m1,*m2; @@ -293,8 +321,7 @@ N n1,n2,*nr; } } -void _muln(n1,n2,nr) -N n1,n2,nr; +void _muln(N n1,N n2,N nr) { unsigned int mul; unsigned int *m1,*m2; @@ -317,14 +344,10 @@ N n1,n2,nr; } } -void muln_1(p,s,d,r) -unsigned int *p; -int s; -unsigned int d; -unsigned int *r; +void muln_1(unsigned int *p,int s,unsigned int d,unsigned int *r) { /* esi : p, edi : r, carry : ebx, s : ecx */ -#if defined(VISUAL) +#if defined(_M_IX86) __asm { push esi push edi @@ -351,6 +374,7 @@ unsigned int *r; } #else asm volatile("\ + pushl %%ebx;\ movl %0,%%esi;\ movl %1,%%edi;\ movl $0,%%ebx;\ @@ -367,16 +391,15 @@ unsigned int *r; leal 4(%%edi),%%edi;\ decl %3;\ jnz Lstart_muln;\ - movl %%ebx,(%%edi)"\ + movl %%ebx,(%%edi);\ + popl %%ebx"\ :\ :"m"(p),"m"(r),"m"(d),"m"(s)\ - :"eax","ebx","edx","esi","edi"); + :"eax","edx","esi","edi"); #endif } -void divnmain(d1,d2,m1,m2,q) -int d1,d2; -unsigned int *m1,*m2,*q; +void divnmain(int d1,int d2,unsigned int *m1,unsigned int *m2,unsigned int *q) { int i,j; UL r,ltmp; @@ -428,9 +451,7 @@ unsigned int *m1,*m2,*q; } } -void divnmain_special(d1,d2,m1,m2,q) -int d1,d2; -unsigned int *m1,*m2,*q; +void divnmain_special(int d1,int d2,unsigned int *m1,unsigned int *m2,unsigned int *q) { int i,j; UL ltmp; @@ -459,11 +480,7 @@ unsigned int *m1,*m2,*q; } } -unsigned int divn_1(p,s,d,r) -unsigned int *p; -int s; -unsigned int d; -unsigned int *r; +unsigned int divn_1(unsigned int *p,int s,unsigned int d,unsigned int *r) { /* unsigned int borrow,l; @@ -479,7 +496,7 @@ unsigned int *r; return borrow; */ /* esi : p, edi : r, borrow : ebx, s : ecx */ -#if defined(VISUAL) +#if defined(_M_IX86) __asm { push esi push edi @@ -508,6 +525,7 @@ unsigned int *r; unsigned int borrow; asm volatile("\ + pushl %%ebx;\ movl %1,%%esi;\ movl %2,%%edi;\ movl $0,%%ebx;\ @@ -523,10 +541,11 @@ unsigned int *r; leal 4(%%edi),%%edi;\ decl %4;\ jnz Lstart_divn;\ - movl %%ebx,%0"\ + movl %%ebx,%0;\ + popl %%ebx"\ :"=m"(borrow)\ :"m"(p),"m"(r),"m"(d),"m"(s)\ - :"eax","ebx","edx","esi","edi"); + :"eax","edx","esi","edi"); return borrow; #endif @@ -534,8 +553,7 @@ unsigned int *r; #else -void muln(n1,n2,nr) -N n1,n2,*nr; +void muln(N n1,N n2,N *nr) { unsigned int tmp,carry,mul; unsigned int *p1,*pp,*m1,*m2; @@ -571,10 +589,9 @@ N n1,n2,*nr; } } -void _muln(n1,n2,nr) -N n1,n2,nr; +void _muln(N n1,N n2,N nr) { - unsigned int tmp,carry,mul; + unsigned int carry=0,mul; unsigned int *p1,*pp,*m1,*m2; int i,j,d1,d2; @@ -601,11 +618,7 @@ N n1,n2,nr; /* r[0...s] = p[0...s-1]*d */ -void muln_1(p,s,d,r) -unsigned int *p; -int s; -unsigned int d; -unsigned int *r; +void muln_1(unsigned int *p,int s,unsigned int d,unsigned int *r) { unsigned int carry; @@ -615,13 +628,11 @@ unsigned int *r; *r = carry; } -void divnmain(d1,d2,m1,m2,q) -int d1,d2; -unsigned int *m1,*m2,*q; +void divnmain(int d1,int d2,unsigned int *m1,unsigned int *m2,unsigned int *q) { int i,j; UL r,ltmp; - unsigned int l,ur,tmp; + unsigned int l,ur; unsigned int *n1,*n2; unsigned int u,qhat; unsigned int v1,v2; @@ -663,11 +674,7 @@ unsigned int *m1,*m2,*q; } } -unsigned int divn_1(p,s,d,r) -unsigned int *p; -int s; -unsigned int d; -unsigned int *r; +unsigned int divn_1(unsigned int *p,int s,unsigned int d,unsigned int *r) { unsigned int borrow,l;