ditype __muldi3(ditype u, ditype v) { diunion w; diunion uu, vv; uu.ll = u, vv.ll = v; w.ll = __umulsidi3(uu.s.low, vv.s.low); w.s.high += ((usitype) uu.s.low * (usitype) vv.s.high + (usitype) uu.s.high * (usitype) vv.s.low); return w.ll; }
DItype __muldi3(DItype u, DItype v) { DIunion w; DIunion uu, vv; uu.ll = u, vv.ll = v; /* panic("kernel panic for __muldi3"); */ w.ll = __umulsidi3(uu.s.low, vv.s.low); w.s.high += ((USItype) uu.s.low * (USItype) vv.s.high + (USItype) uu.s.high * (USItype) vv.s.low); return w.ll; }
s64 __muldi3(s64 u, s64 v) { DIunion w; DIunion uu, vv; uu.ll = u, vv.ll = v; w.ll = __umulsidi3(uu.s.low, vv.s.low); w.s.high += ((u32) uu.s.low * (u32) vv.s.high + (u32) uu.s.high * (u32) vv.s.low); return w.ll; }
DItype __muldi3 (DItype u, DItype v) { DIunion w; DIunion uu, vv; uu.ll = u, vv.ll = v; w.ll = __umulsidi3 (uu.s.low, vv.s.low); w.s.high += ((USItype) uu.s.low * (USItype) vv.s.high + (USItype) uu.s.high * (USItype) vv.s.low); return w.ll; }