anv/allocator: Better casting in PFL macros
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 8 Mar 2016 05:27:55 +0000 (21:27 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 8 Mar 2016 06:23:44 +0000 (22:23 -0800)
We cast he constant 0xfff values to a uintptr_t before applying a bitwise
negate to ensure that they are actually 64-bit when needed.  Also, the
count variable doesn't need to be explicitly cast, it will get upcast as
needed by the "|" operation.

src/intel/vulkan/anv_allocator.c

index 385c63f99458095c73b7e942ea3a2d111254e003..4fc83386a71c0c6c4aeb549ca371752182ef2520 100644 (file)
@@ -198,9 +198,9 @@ anv_free_list_push(union anv_free_list *list, void *map, int32_t offset)
  * means that the bottom 12 bits should all be zero.
  */
 #define PFL_COUNT(x) ((uintptr_t)(x) & 0xfff)
-#define PFL_PTR(x) ((void *)((uintptr_t)(x) & ~0xfff))
+#define PFL_PTR(x) ((void *)((uintptr_t)(x) & ~(uintptr_t)0xfff))
 #define PFL_PACK(ptr, count) ({           \
-   (void *)((uintptr_t)(ptr) | (uintptr_t)((count) & 0xfff)); \
+   (void *)(((uintptr_t)(ptr) & ~(uintptr_t)0xfff) | ((count) & 0xfff)); \
 })
 
 static bool