[Intel-gfx] [PATCH] drm/i915: Simplify mmio_reg_cmp

Chris Wilson chris at chris-wilson.co.uk
Fri Nov 3 13:18:30 UTC 2017


Quoting Tvrtko Ursulin (2017-11-03 13:10:42)
> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> 
> If we remove one condition from the comparison mmio_reg_cmp becomes
> smaller and compiler can fully inline it. This grows the text a little
> bit but avoids the function call.
> 
> We depend, and verify, on the fact that addresses of mmio registers fit
> in a signed integer.

Ok. I was thinking it would be simpler if we around the wraparound
comparison, but we don't want that here.

> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_uncore.c | 9 +++------
>  1 file changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 0a6d952a2df1..a68a9960c928 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -865,12 +865,9 @@ static int mmio_reg_cmp(u32 key, const i915_reg_t *reg)
static inline then?
>  {
>         u32 offset = i915_mmio_reg_offset(*reg);
>  
> -       if (key < offset)
> -               return -1;
> -       else if (key > offset)
> -               return 1;
> -       else
> -               return 0;
> +       GEM_BUG_ON(key > (u32)INT_MAX || offset > (u32)INT_MAX);

GEM_BUG_ON((key | offset) > INT_MAX); ?

Casting the INT_MAX to (u32) here is implicit.

> +
> +       return (int)key - (int)offset;
Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Chris


More information about the Intel-gfx mailing list