anv: Add an align_down_u32 helper
authorJason Ekstrand <jason@jlekstrand.net>
Fri, 7 Feb 2020 10:33:19 +0000 (04:33 -0600)
committerMarge Bot <eric+marge@anholt.net>
Sat, 7 Mar 2020 04:51:29 +0000 (04:51 +0000)
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3777>

src/intel/vulkan/anv_nir_compute_push_layout.c
src/intel/vulkan/anv_private.h

index 1dbfb08..e96ce98 100644 (file)
@@ -74,7 +74,7 @@ anv_nir_compute_push_layout(const struct anv_physical_device *pdevice,
     * push_end (no push constants is indicated by push_start = UINT_MAX).
     */
    push_start = MIN2(push_start, push_end);
-   push_start &= ~31u;
+   push_start = align_down_u32(push_start, 32);
 
    if (has_push_intrinsic) {
       nir_foreach_function(function, nir) {
index cdfbcb8..8138137 100644 (file)
@@ -232,10 +232,17 @@ align_down_npot_u32(uint32_t v, uint32_t a)
 }
 
 static inline uint32_t
+align_down_u32(uint32_t v, uint32_t a)
+{
+   assert(a != 0 && a == (a & -a));
+   return v & ~(a - 1);
+}
+
+static inline uint32_t
 align_u32(uint32_t v, uint32_t a)
 {
    assert(a != 0 && a == (a & -a));
-   return (v + a - 1) & ~(a - 1);
+   return align_down_u32(v + a - 1, a);
 }
 
 static inline uint64_t