Work on file usr/src/usr.bin/gcc/gnulib/longlong/lshrdi3.c
Co-Authored-By: Lynne Greer Jolitz <ljolitz@cardio.ucsf.edu>
Synthesized-from: 386BSD-0.1
--- /dev/null
+#include "longlong.h"
+
+long long
+__lshrdi3 (u, b1)
+ long long u;
+ long long b1;
+{
+ long_long w;
+ unsigned long carries;
+ int bm;
+ long_long uu;
+ int b = b1;
+
+ if (b == 0)
+ return u;
+
+ uu.ll = u;
+
+ bm = (sizeof (int) * BITS_PER_UNIT) - b;
+ if (bm <= 0)
+ {
+ w.s.high = 0;
+ w.s.low = (unsigned long)uu.s.high >> -bm;
+ }
+ else
+ {
+ carries = (unsigned long)uu.s.high << bm;
+ w.s.high = (unsigned long)uu.s.high >> b;
+ w.s.low = ((unsigned long)uu.s.low >> b) | carries;
+ }
+
+ return w.ll;
+}