On Wed, 05 Jul 2017, Mahesh Kumar <mahesh1.kumar@xxxxxxxxx> wrote: > From: "Kumar, Mahesh" <mahesh1.kumar@xxxxxxxxx> > > This patch creates a new function for clamping u64 to fixed16. > And make use of this function in other fixed16 wrappers. > > Signed-off-by: Mahesh Kumar <mahesh1.kumar@xxxxxxxxx> > Reviewed-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_drv.h | 28 ++++++++++++---------------- > 1 file changed, 12 insertions(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 5e70f5711fc8..1b525051bf5f 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -160,6 +160,14 @@ static inline uint_fixed_16_16_t max_fixed_16_16(uint_fixed_16_16_t max1, > return max; > } > > +static inline uint_fixed_16_16_t clamp_u64_to_fixed16(uint64_t val) > +{ > + uint_fixed_16_16_t fp; > + WARN_ON(val >> 32); WARN_ON(val > U32_MAX); makes much more sense. Same all over the place. > + fp.val = clamp_t(uint32_t, val, 0, ~0); The use of clamp_t here is pointless, as fp.val is uint32_t. Assign, possibly with a cast, and be done with it. > + return fp; > +} > + > static inline uint32_t div_round_up_fixed16(uint_fixed_16_16_t val, > uint_fixed_16_16_t d) > { > @@ -170,26 +178,21 @@ static inline uint32_t mul_round_up_u32_fixed16(uint32_t val, > uint_fixed_16_16_t mul) > { > uint64_t intermediate_val; > - uint32_t result; > > intermediate_val = (uint64_t) val * mul.val; > intermediate_val = DIV_ROUND_UP_ULL(intermediate_val, 1 << 16); > WARN_ON(intermediate_val >> 32); > - result = clamp_t(uint32_t, intermediate_val, 0, ~0); > - return result; > + return clamp_t(uint32_t, intermediate_val, 0, ~0); Same here, the function is uint32_t, just return with a cast. > } > > static inline uint_fixed_16_16_t mul_fixed16(uint_fixed_16_16_t val, > uint_fixed_16_16_t mul) > { > uint64_t intermediate_val; > - uint_fixed_16_16_t fp; > > intermediate_val = (uint64_t) val.val * mul.val; > intermediate_val = intermediate_val >> 16; > - WARN_ON(intermediate_val >> 32); > - fp.val = clamp_t(uint32_t, intermediate_val, 0, ~0); > - return fp; > + return clamp_u64_to_fixed16(intermediate_val); > } > > static inline uint_fixed_16_16_t fixed_16_16_div(uint32_t val, uint32_t d) > @@ -203,15 +206,11 @@ static inline uint_fixed_16_16_t fixed_16_16_div(uint32_t val, uint32_t d) > > static inline uint_fixed_16_16_t fixed_16_16_div_u64(uint32_t val, uint32_t d) > { > - uint_fixed_16_16_t res; > uint64_t interm_val; > > interm_val = (uint64_t)val << 16; > interm_val = DIV_ROUND_UP_ULL(interm_val, d); > - WARN_ON(interm_val >> 32); > - res.val = (uint32_t) interm_val; > - > - return res; > + return clamp_u64_to_fixed16(interm_val); > } > > static inline uint32_t div_round_up_u32_fixed16(uint32_t val, > @@ -229,12 +228,9 @@ static inline uint_fixed_16_16_t mul_u32_fixed_16_16(uint32_t val, > uint_fixed_16_16_t mul) > { > uint64_t intermediate_val; > - uint_fixed_16_16_t fp; > > intermediate_val = (uint64_t) val * mul.val; > - WARN_ON(intermediate_val >> 32); > - fp.val = (uint32_t) intermediate_val; > - return fp; > + return clamp_u64_to_fixed16(intermediate_val); > } > > static inline const char *yesno(bool v) -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx