/* Default C language implementation of a 32x32->32 multiply. This function may be replaced by a platform-specific version for speed. */
INLINE OI_INT32 default_mul_32s_32s_hi(OI_INT32 u, OI_INT32 v)
/* Default C language implementation of a 32x32->32 multiply. This function may be replaced by a platform-specific version for speed. */
INLINE OI_INT32 default_mul_32s_32s_hi(OI_INT32 u, OI_INT32 v)
{
    OI_UINT32 u0, v0;
    OI_INT32 u1, v1, w1, w2, t;
    u0 = u & 0xFFFF;
    u1 = u >> 16;
    v0 = v & 0xFFFF;
    v1 = v >> 16;
    t = u0 * v0;
    t = u1 * v0 + ((OI_UINT32)t >> 16);
    w1 = t & 0xFFFF;
    w2 = t >> 16;
    w1 = u0 * v1 + w1;
    return u1 * v1 + w2 + (w1 >> 16);
}