version 1.8, 2007/02/18 05:36:27 |
version 1.9, 2007/09/15 10:17:08 |
|
|
* 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.7 2004/12/04 09:39:27 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/engine/N.c,v 1.8 2007/02/18 05:36:27 ohara Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "base.h" |
#include "base.h" |
|
|
#if defined(VISUAL) || ( defined(i386) && !defined(__DARWIN__) ) |
#if defined(VISUAL) || defined(i386) |
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 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 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 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 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++; |