|
|
@ -138,7 +138,7 @@ static inline u32 vfp_hi64to32jamming(u64 val) |
|
|
return v; |
|
|
return v; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static inline void add128(u64 *resh, u64 *resl, u64 nh, u64 nl, u64 mh, u64 ml) |
|
|
|
|
|
|
|
|
static inline void add128(u64* resh, u64* resl, u64 nh, u64 nl, u64 mh, u64 ml) |
|
|
{ |
|
|
{ |
|
|
*resl = nl + ml; |
|
|
*resl = nl + ml; |
|
|
*resh = nh + mh; |
|
|
*resh = nh + mh; |
|
|
@ -146,7 +146,7 @@ static inline void add128(u64 *resh, u64 *resl, u64 nh, u64 nl, u64 mh, u64 ml) |
|
|
*resh += 1; |
|
|
*resh += 1; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static inline void sub128(u64 *resh, u64 *resl, u64 nh, u64 nl, u64 mh, u64 ml) |
|
|
|
|
|
|
|
|
static inline void sub128(u64* resh, u64* resl, u64 nh, u64 nl, u64 mh, u64 ml) |
|
|
{ |
|
|
{ |
|
|
*resl = nl - ml; |
|
|
*resl = nl - ml; |
|
|
*resh = nh - mh; |
|
|
*resh = nh - mh; |
|
|
@ -154,7 +154,7 @@ static inline void sub128(u64 *resh, u64 *resl, u64 nh, u64 nl, u64 mh, u64 ml) |
|
|
*resh -= 1; |
|
|
*resh -= 1; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static inline void mul64to128(u64 *resh, u64 *resl, u64 n, u64 m) |
|
|
|
|
|
|
|
|
static inline void mul64to128(u64* resh, u64* resl, u64 n, u64 m) |
|
|
{ |
|
|
{ |
|
|
u32 nh, nl, mh, ml; |
|
|
u32 nh, nl, mh, ml; |
|
|
u64 rh, rma, rmb, rl; |
|
|
u64 rh, rma, rmb, rl; |
|
|
@ -181,7 +181,7 @@ static inline void mul64to128(u64 *resh, u64 *resl, u64 n, u64 m) |
|
|
*resh = rh; |
|
|
*resh = rh; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static inline void shift64left(u64 *resh, u64 *resl, u64 n) |
|
|
|
|
|
|
|
|
static inline void shift64left(u64* resh, u64* resl, u64 n) |
|
|
{ |
|
|
{ |
|
|
*resh = n >> 63; |
|
|
*resh = n >> 63; |
|
|
*resl = n << 1; |
|
|
*resl = n << 1; |
|
|
@ -289,8 +289,7 @@ static inline void vfp_single_unpack(struct vfp_single *s, s32 val) |
|
|
*/ |
|
|
*/ |
|
|
static inline s32 vfp_single_pack(struct vfp_single *s) |
|
|
static inline s32 vfp_single_pack(struct vfp_single *s) |
|
|
{ |
|
|
{ |
|
|
u32 val; |
|
|
|
|
|
val = (s->sign << 16) + |
|
|
|
|
|
|
|
|
u32 val = (s->sign << 16) + |
|
|
(s->exponent << VFP_SINGLE_MANTISSA_BITS) + |
|
|
(s->exponent << VFP_SINGLE_MANTISSA_BITS) + |
|
|
(s->significand >> VFP_SINGLE_LOW_BITS); |
|
|
(s->significand >> VFP_SINGLE_LOW_BITS); |
|
|
return (s32)val; |
|
|
return (s32)val; |
|
|
@ -392,8 +391,7 @@ static inline void vfp_double_unpack(struct vfp_double *s, s64 val) |
|
|
*/ |
|
|
*/ |
|
|
static inline s64 vfp_double_pack(struct vfp_double *s) |
|
|
static inline s64 vfp_double_pack(struct vfp_double *s) |
|
|
{ |
|
|
{ |
|
|
u64 val; |
|
|
|
|
|
val = ((u64)s->sign << 48) + |
|
|
|
|
|
|
|
|
u64 val = ((u64)s->sign << 48) + |
|
|
((u64)s->exponent << VFP_DOUBLE_MANTISSA_BITS) + |
|
|
((u64)s->exponent << VFP_DOUBLE_MANTISSA_BITS) + |
|
|
(s->significand >> VFP_DOUBLE_LOW_BITS); |
|
|
(s->significand >> VFP_DOUBLE_LOW_BITS); |
|
|
return (s64)val; |
|
|
return (s64)val; |
|
|
|