OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib-1.10.0/] [newlib/] [libc/] [machine/] [h8500/] [mulsi3.c] - Diff between revs 1007 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 1007 Rev 1765
 
 
typedef union {
typedef union {
  struct {
  struct {
  unsigned int msw;
  unsigned int msw;
  unsigned int lsw;
  unsigned int lsw;
} s;
} s;
  long v;
  long v;
} u;
} u;
 
 
long __mulsi3(u a, u b)
long __mulsi3(u a, u b)
{
{
  int s;
  int s;
  long pp1;
  long pp1;
  long pp2;
  long pp2;
  long r;
  long r;
 
 
  if (a.s.msw == 0 &&
  if (a.s.msw == 0 &&
      b.s.msw == 0)
      b.s.msw == 0)
    {
    {
      return (long)a.s.lsw * b.s.lsw;
      return (long)a.s.lsw * b.s.lsw;
    }
    }
 
 
  s = 0;
  s = 0;
  if (a.v < 0)
  if (a.v < 0)
    {
    {
      s = 1;
      s = 1;
      a.v = - a.v;
      a.v = - a.v;
    }
    }
  if (b.v < 0)
  if (b.v < 0)
    {
    {
      s = 1-s;
      s = 1-s;
      b.v = - b.v;
      b.v = - b.v;
    }
    }
 
 
  pp1 = (long)a.s.lsw * b.s.lsw ;
  pp1 = (long)a.s.lsw * b.s.lsw ;
  pp2 = (long)a.s.lsw * b.s.msw + (long)a.s.msw * b.s.lsw;
  pp2 = (long)a.s.lsw * b.s.msw + (long)a.s.msw * b.s.lsw;
 
 
  pp1 += pp2 << 16;
  pp1 += pp2 << 16;
 
 
  if (s)
  if (s)
    {
    {
      pp1 = -pp1;
      pp1 = -pp1;
    }
    }
  return pp1;
  return pp1;
}
}
long __mulpsi3(long a, long b)
long __mulpsi3(long a, long b)
{
{
 return a*b;
 return a*b;
}
}
 
 
 
 
short
short
__mulhi3(short a, short b)
__mulhi3(short a, short b)
{
{
  int r;
  int r;
 
 
  r = 0;
  r = 0;
  while (a)
  while (a)
    {
    {
      if (a & 1)
      if (a & 1)
        {
        {
          r += b;
          r += b;
 
 
        }
        }
      b<<=1;
      b<<=1;
      a>>=1;
      a>>=1;
 
 
    }
    }
  return r;
  return r;
}
}
 
 
 
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.