=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/array.c,v retrieving revision 1.18 retrieving revision 1.20 diff -u -p -r1.18 -r1.20 --- OpenXM_contrib2/asir2000/builtin/array.c 2001/09/17 01:18:34 1.18 +++ OpenXM_contrib2/asir2000/builtin/array.c 2001/09/17 03:33:57 1.20 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/builtin/array.c,v 1.17 2001/09/10 05:55:13 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/array.c,v 1.19 2001/09/17 02:47:07 noro Exp $ */ #include "ca.h" #include "base.h" @@ -1438,25 +1438,21 @@ int **indredp; mat[0] < mat[1] < ... < mat[nred-1] w.r.t the term order */ -#define DMA0(a1,a2,a3,u,l)\ -asm volatile("movl %2,%%eax; mull %3; addl %4,%%eax; adcl $0,%%edx; movl %%edx,%0; movl %%eax,%1" :"=g"(u), "=g"(l) :"g"(a1),"g"(a2),"g"(a3) :"ax","dx"); - int red_by_compress(m,p,r,hc,len) int m; unsigned int *p; -struct oCM *r; +register struct oCM *r; unsigned int hc; -int len; +register int len; { - int k; - register unsigned int up,lo; + unsigned int up,lo; unsigned int dmy; unsigned int *pj; p[r->index] = 0; r++; - for ( k = 1; k < len; k++, r++ ) { + for ( len--; len; len--, r++ ) { pj = p+r->index; - DMA0(r->c,hc,*pj,up,lo); + DMA(r->c,hc,*pj,up,lo); if ( up ) { DSAB(m,up,lo,dmy,*pj); } else @@ -1478,7 +1474,7 @@ int len; *p++ = 0; r++; len--; for ( ; len; len--, r++, p++ ) if ( *r ) { - DMA0(*r,hc,*p,up,lo); + DMA(*r,hc,*p,up,lo); if ( up ) { DSAB(m,up,lo,dmy,*p); } else