version 1.7, 2004/12/04 09:39:27 |
version 1.11, 2015/08/29 04:15:04 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/engine/N.c,v 1.6 2003/09/02 07:00:51 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/engine/N.c,v 1.10 2009/03/02 16:28:30 ohara Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "base.h" |
#include "base.h" |
|
|
#if defined(VISUAL) || defined(i386) |
#if (defined(_M_IX86) || defined(i386)) && !defined(__MINGW32__) |
void addn(N n1,N n2,N *nr) |
void addn(N n1,N n2,N *nr) |
{ |
{ |
unsigned int *m1,*m2,*mr; |
unsigned int *m1,*m2,*mr; |
Line 71 void addn(N n1,N n2,N *nr) |
|
Line 71 void addn(N n1,N n2,N *nr) |
|
} |
} |
*nr = r = NALLOC(d1 + 1); INITRC(r); mr = BD(r); |
*nr = r = NALLOC(d1 + 1); INITRC(r); mr = BD(r); |
|
|
#if defined(VISUAL) |
#if defined(_M_IX86) |
__asm { |
__asm { |
push esi |
push esi |
push edi |
push edi |
Line 98 void addn(N n1,N n2,N *nr) |
|
Line 98 void addn(N n1,N n2,N *nr) |
|
} |
} |
#else |
#else |
asm volatile("\ |
asm volatile("\ |
|
pushl %%ebx;\ |
movl %1,%%esi;\ |
movl %1,%%esi;\ |
movl %2,%%edi;\ |
movl %2,%%edi;\ |
movl %3,%%ebx;\ |
movl %3,%%ebx;\ |
Line 115 void addn(N n1,N n2,N *nr) |
|
Line 116 void addn(N n1,N n2,N *nr) |
|
jnz Lstart_addn;\ |
jnz Lstart_addn;\ |
movl $0,%%eax;\ |
movl $0,%%eax;\ |
adcl %%eax,%%eax;\ |
adcl %%eax,%%eax;\ |
movl %%eax,%0"\ |
movl %%eax,%0;\ |
|
popl %%ebx"\ |
:"=m"(c)\ |
:"=m"(c)\ |
:"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ |
:"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ |
:"eax","ebx","ecx","edx","esi","edi"); |
:"eax","ecx","edx","esi","edi"); |
#endif |
#endif |
for ( i = d2, m1 += d2, mr += d2; (i < d1) && c ; i++ ) { |
for ( i = d2, m1 += d2, mr += d2; (i < d1) && c ; i++ ) { |
tmp = *m1++ + c; |
tmp = *m1++ + c; |
Line 175 int subn(N n1,N n2,N *nr) |
|
Line 177 int subn(N n1,N n2,N *nr) |
|
} |
} |
*nr = r = NALLOC(d1); INITRC(r); mr = BD(r); |
*nr = r = NALLOC(d1); INITRC(r); mr = BD(r); |
|
|
#if defined(VISUAL) |
#if defined(_M_IX86) |
__asm { |
__asm { |
push esi |
push esi |
push edi |
push edi |
Line 202 int subn(N n1,N n2,N *nr) |
|
Line 204 int subn(N n1,N n2,N *nr) |
|
} |
} |
#else |
#else |
asm volatile("\ |
asm volatile("\ |
|
pushl %%ebx;\ |
movl %1,%%esi;\ |
movl %1,%%esi;\ |
movl %2,%%edi;\ |
movl %2,%%edi;\ |
movl %3,%%ebx;\ |
movl %3,%%ebx;\ |
Line 219 int subn(N n1,N n2,N *nr) |
|
Line 222 int subn(N n1,N n2,N *nr) |
|
jnz Lstart_subn;\ |
jnz Lstart_subn;\ |
movl $0,%%eax;\ |
movl $0,%%eax;\ |
adcl %%eax,%%eax;\ |
adcl %%eax,%%eax;\ |
movl %%eax,%0"\ |
movl %%eax,%0;\ |
|
popl %%ebx"\ |
:"=m"(br)\ |
:"=m"(br)\ |
:"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ |
:"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ |
:"eax","ebx","ecx","edx","esi","edi"); |
:"eax","ecx","edx","esi","edi"); |
#endif |
#endif |
for ( i = d2, m1 += d2, mr += d2; (i < d1) && br; i++ ) { |
for ( i = d2, m1 += d2, mr += d2; (i < d1) && br; i++ ) { |
t = *m1++; |
t = *m1++; |
Line 257 void _addn(N n1,N n2,N nr) |
|
Line 261 void _addn(N n1,N n2,N nr) |
|
} |
} |
mr = BD(nr); |
mr = BD(nr); |
|
|
#if defined(VISUAL) |
#if defined(_M_IX86) |
__asm { |
__asm { |
push esi |
push esi |
push edi |
push edi |
Line 284 void _addn(N n1,N n2,N nr) |
|
Line 288 void _addn(N n1,N n2,N nr) |
|
} |
} |
#else |
#else |
asm volatile("\ |
asm volatile("\ |
|
pushl %%ebx;\ |
movl %1,%%esi;\ |
movl %1,%%esi;\ |
movl %2,%%edi;\ |
movl %2,%%edi;\ |
movl %3,%%ebx;\ |
movl %3,%%ebx;\ |
Line 301 void _addn(N n1,N n2,N nr) |
|
Line 306 void _addn(N n1,N n2,N nr) |
|
jnz Lstart__addn;\ |
jnz Lstart__addn;\ |
movl $0,%%eax;\ |
movl $0,%%eax;\ |
adcl %%eax,%%eax;\ |
adcl %%eax,%%eax;\ |
movl %%eax,%0"\ |
movl %%eax,%0;\ |
|
popl %%ebx"\ |
:"=m"(c)\ |
:"=m"(c)\ |
:"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ |
:"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ |
:"eax","ebx","ecx","edx","esi","edi"); |
:"eax","ecx","edx","esi","edi"); |
#endif |
#endif |
for ( i = d2, m1 += d2, mr += d2; (i < d1) && c ; i++ ) { |
for ( i = d2, m1 += d2, mr += d2; (i < d1) && c ; i++ ) { |
tmp = *m1++ + c; |
tmp = *m1++ + c; |
Line 360 int _subn(N n1,N n2,N nr) |
|
Line 366 int _subn(N n1,N n2,N nr) |
|
} |
} |
mr = BD(nr); |
mr = BD(nr); |
|
|
#if defined(VISUAL) |
#if defined(_M_IX86) |
__asm { |
__asm { |
push esi |
push esi |
push edi |
push edi |
Line 387 int _subn(N n1,N n2,N nr) |
|
Line 393 int _subn(N n1,N n2,N nr) |
|
} |
} |
#else |
#else |
asm volatile("\ |
asm volatile("\ |
|
pushl %%ebx;\ |
movl %1,%%esi;\ |
movl %1,%%esi;\ |
movl %2,%%edi;\ |
movl %2,%%edi;\ |
movl %3,%%ebx;\ |
movl %3,%%ebx;\ |
Line 404 int _subn(N n1,N n2,N nr) |
|
Line 411 int _subn(N n1,N n2,N nr) |
|
jnz Lstart__subn;\ |
jnz Lstart__subn;\ |
movl $0,%%eax;\ |
movl $0,%%eax;\ |
adcl %%eax,%%eax;\ |
adcl %%eax,%%eax;\ |
movl %%eax,%0"\ |
movl %%eax,%0;\ |
|
popl %%ebx"\ |
:"=m"(br)\ |
:"=m"(br)\ |
:"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ |
:"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ |
:"eax","ebx","ecx","edx","esi","edi"); |
:"eax","ecx","edx","esi","edi"); |
#endif |
#endif |
for ( i = d2, m1 += d2, mr += d2; (i < d1) && br; i++ ) { |
for ( i = d2, m1 += d2, mr += d2; (i < d1) && br; i++ ) { |
t = *m1++; |
t = *m1++; |