home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / LIBSRC.ZOO / libsrc / longlong / lshldi3.c < prev    next >
C/C++ Source or Header  |  1992-02-22  |  542b  |  34 lines

  1. #include "longlong.h"
  2.  
  3. long long
  4. __lshldi3 (u, b1)
  5.      long long u;
  6.      long long b1;
  7. {
  8.   long_long w;
  9.   unsigned long carries;
  10.   int bm;
  11.   long_long uu;
  12.   int b = b1;
  13.  
  14.   if (b == 0)
  15.     return u;
  16.  
  17.   uu.ll = u;
  18.  
  19.   bm = (sizeof (int) * BITS_PER_UNIT) - b;
  20.   if (bm <= 0)
  21.     {
  22.       w.s.low = 0;
  23.       w.s.high = (unsigned long)uu.s.low << -bm;
  24.     }
  25.   else
  26.     {
  27.       carries = (unsigned long)uu.s.low >> bm;
  28.       w.s.low = (unsigned long)uu.s.low << b;
  29.       w.s.high = ((unsigned long)uu.s.high << b) | carries;
  30.     }
  31.  
  32.   return w.ll;
  33. }
  34.