=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/Z.c,v retrieving revision 1.5 retrieving revision 1.9 diff -u -p -r1.5 -r1.9 --- OpenXM_contrib2/asir2000/engine/Z.c 2004/10/06 11:58:52 1.5 +++ OpenXM_contrib2/asir2000/engine/Z.c 2007/02/18 05:36:27 1.9 @@ -2,12 +2,20 @@ #include "base.h" #include "inline.h" -inline void _addz(Z n1,Z n2,Z nr); -inline void _subz(Z n1,Z n2,Z nr); -inline void _mulz(Z n1,Z n2,Z nr); -inline int _addz_main(unsigned int *m1,int d1,unsigned int *m2,int d2,unsigned int *mr); -inline int _subz_main(unsigned int *m1,int d1,unsigned int *m2,int d2,unsigned int *mr); +#if defined(__GNUC__) +#define INLINE inline +#elif defined(VISUAL) +#define INLINE __inline +#else +#define INLINE +#endif +INLINE void _addz(Z n1,Z n2,Z nr); +INLINE void _subz(Z n1,Z n2,Z nr); +INLINE void _mulz(Z n1,Z n2,Z nr); +int _addz_main(unsigned int *m1,int d1,unsigned int *m2,int d2,unsigned int *mr); +int _subz_main(unsigned int *m1,int d1,unsigned int *m2,int d2,unsigned int *mr); + /* immediate int -> Z */ #define UTOZ(c,n) (n)=(!((unsigned int)(c))?0:(((unsigned int)(c))<=IMM_MAX?((Z)((((unsigned int)(c))<<1)|1)):utoz((unsigned int)(c)))) #define STOZ(c,n) (n)=(!((int)(c))?0:(((int)(c))>=IMM_MIN&&((int)(c))<=IMM_MAX?((Z)((((int)(c))<<1)|1)):stoz((int)(c)))) @@ -694,7 +702,7 @@ int _addz_main(unsigned int *m1,int d1,unsigned int *m adc eax,eax mov c,eax } -#elif defined(i386) +#elif ( defined(i386) && !defined(__DARWIN__) ) asm volatile("\ movl %1,%%esi;\ movl %2,%%edi;\ @@ -718,7 +726,7 @@ int _addz_main(unsigned int *m1,int d1,unsigned int *m :"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ :"eax","ebx","ecx","edx","esi","edi"); #else - for ( i = 0, c = 0, mr = BD(nr); i < d2; i++, m1++, m2++, mr++ ) { + for ( i = 0, c = 0; i < d2; i++, m1++, m2++, mr++ ) { tmp = *m1 + *m2; if ( tmp < *m1 ) { tmp += c; @@ -784,7 +792,7 @@ int _subz_main(unsigned int *m1,int d1,unsigned int *m adc eax,eax mov br,eax } -#elif defined(i386) +#elif ( defined(i386) && !defined(__DARWIN__) ) asm volatile("\ movl %1,%%esi;\ movl %2,%%edi;\ @@ -808,7 +816,7 @@ int _subz_main(unsigned int *m1,int d1,unsigned int *m :"m"(m1),"m"(m2),"m"(mr),"m"(d2)\ :"eax","ebx","ecx","edx","esi","edi"); #else - for ( i = 0, br = 0, mr = BD(nr); i < d2; i++, mr++ ) { + for ( i = 0, br = 0; i < d2; i++, mr++ ) { t = *m1++; tmp = *m2++ + br; if ( br > 0 && !tmp ) {