xref: /netbsd-src/external/gpl3/gcc.old/dist/libgcc/config/msp430/mpy.c (revision 36ac495d2b3ea2b9d96377b2143ebfedac224b92)
1 /* Public domain.  */
2 extern int __mulhi3 (int, int);
3 
4 int
__mulhi3(int x,int y)5 __mulhi3 (int x, int y)
6 {
7   char bit;
8   int neg = 0;
9   int rv = 0;
10 
11   if (y < 0)
12     {
13       y = - y;
14       neg = 1;
15     }
16 
17   for (bit = 0; y && bit < sizeof (y) * 8; bit ++)
18     {
19       if (y & 1)
20 	rv += x;
21       x <<= 1;
22       y >>= 1;
23     }
24 
25   return neg ? - rv : rv;
26 }
27