/* $OpenXM: OpenXM_contrib2/asir2000/engine-27/asmalpha-27.c,v 1.1.1.1 1999/12/03 07:39:08 noro Exp $ */
#if defined(__alpha)
typedef unsigned long UL;
#elif defined(mips) || defined(hpux)
typedef unsigned long long UL;
#endif
#include "base.h"
unsigned int dm_27(a1,a2,u)
unsigned int a1,a2,*u;
{
UL t;
t = (UL)a1*(UL)a2;
*u = t>>27;
return (unsigned int)(t&0x7ffffff);
}
unsigned int dma_27(a1,a2,a3,u)
unsigned int a1,a2,a3,*u;
{
UL t;
t = (UL)a1*(UL)a2+(UL)a3;
*u = t>>27;
return (unsigned int)(t&0x7ffffff);
}
unsigned int dmb_27(base,a1,a2,u)
unsigned int base,a1,a2,*u;
{
UL t;
t = (UL)a1*(UL)a2;
*u = t/(UL)base;
return (unsigned int)(t%(UL)base);
}
unsigned int dmab_27(base,a1,a2,a3,u)
unsigned int base,a1,a2,a3,*u;
{
UL t;
t = (UL)a1*(UL)a2+(UL)a3;
*u = t/(UL)base;
return (unsigned int)(t%(UL)base);
}
unsigned int dmar_27(a1,a2,a3,d)
unsigned int a1,a2,a3,d;
{
UL t;
t = (UL)a1*(UL)a2+(UL)a3;
return (unsigned int)(t%(UL)d);
}
unsigned int dsab_27(base,a1,a2,u)
unsigned int base,a1,a2,*u;
{
UL t;
t = (((UL)a1)<<27)+(UL)a2;
*u = t/(UL)base;
return (unsigned int)(t%(UL)base);
}
unsigned int dqr_27(a,b,qp)
unsigned int a,b,*qp;
{
*qp = a/b;
return a - b * (*qp);
}