Mesa (master): i965/compute: Fix undefined code with right_mask for SIMD32

Jordan Justen jljusten at kemper.freedesktop.org
Thu Jun 18 18:26:41 UTC 2015


Module: Mesa
Branch: master
Commit: 2310a65c28f809442c24fc8893c65ce7c7a4dca3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2310a65c28f809442c24fc8893c65ce7c7a4dca3

Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Tue Jun 16 14:27:15 2015 -0700

i965/compute: Fix undefined code with right_mask for SIMD32

Although we don't support SIMD32, krh pointed out that the left shift
by 32 is undefined by C/C++ for 32-bit integers.

Suggested-by: Kristian Høgsberg <krh at bitplanet.net>
Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/brw_compute.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_compute.c b/src/mesa/drivers/dri/i965/brw_compute.c
index b3d6de5..5693ab5 100644
--- a/src/mesa/drivers/dri/i965/brw_compute.c
+++ b/src/mesa/drivers/dri/i965/brw_compute.c
@@ -45,7 +45,7 @@ brw_emit_gpgpu_walker(struct brw_context *brw, const GLuint *num_groups)
    unsigned thread_width_max =
       (group_size + simd_size - 1) / simd_size;
 
-   uint32_t right_mask = (1u << simd_size) - 1;
+   uint32_t right_mask = 0xffffffffu >> (32 - simd_size);
    const unsigned right_non_aligned = group_size & (simd_size - 1);
    if (right_non_aligned != 0)
       right_mask >>= (simd_size - right_non_aligned);




More information about the mesa-commit mailing list