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 1dbfb08a100dd794914e4d39f9e7a8cc8ea4ff44..e96ce98bde2700532834a9ec8cea98b9c5b58dee 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 cdfbcb875356fecb52302de6f5059c2d3f69255a..8138137abf7ee662f78fc754d452379115823849 100644 (file)
@@ -231,11 +231,18 @@ align_down_npot_u32(uint32_t v, uint32_t a)
    return v - (v % 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