drm/i915: Optimise VMA lookup slightly
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>
Tue, 13 Dec 2016 14:37:27 +0000 (14:37 +0000)
committerTvrtko Ursulin <tvrtko.ursulin@intel.com>
Thu, 15 Dec 2016 13:31:26 +0000 (13:31 +0000)
Cast VM pointers before substraction to save the compiler
doing a smart one which includes multiplication.

v2: Only keep the first optimisation and prettify it. (Chris Wilson)

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/1481639847-9214-1-git-send-email-tvrtko.ursulin@linux.intel.com
drivers/gpu/drm/i915/i915_vma.h

index 21be74c..e3b2b3b 100644 (file)
@@ -178,15 +178,23 @@ static inline void i915_vma_put(struct i915_vma *vma)
        i915_gem_object_put(vma->obj);
 }
 
+static __always_inline ptrdiff_t ptrdiff(const void *a, const void *b)
+{
+       return a - b;
+}
+
 static inline long
 i915_vma_compare(struct i915_vma *vma,
                 struct i915_address_space *vm,
                 const struct i915_ggtt_view *view)
 {
+       ptrdiff_t cmp;
+
        GEM_BUG_ON(view && !i915_is_ggtt(vm));
 
-       if (vma->vm != vm)
-               return vma->vm - vm;
+       cmp = ptrdiff(vma->vm, vm);
+       if (cmp)
+               return cmp;
 
        if (!view)
                return vma->ggtt_view.type;