Mesa (master): i965/vec4: Simplify the computation of coord_mask and zero_mask.

Kenneth Graunke kwg at kemper.freedesktop.org
Wed Sep 11 00:54:15 UTC 2013


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

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Sep  9 15:36:59 2013 -0700

i965/vec4: Simplify the computation of coord_mask and zero_mask.

We can easily compute these without loops, resulting in simpler and
shorter code.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Suggested-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>

---

 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp |    7 ++-----
 1 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index 28dc313..a51b61b 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -2221,13 +2221,10 @@ vec4_visitor::visit(ir_texture *ir)
       int writemask = brw->gen == 4 ? WRITEMASK_W : WRITEMASK_X;
       emit(MOV(dst_reg(MRF, param_base, lod_type, writemask), lod));
    } else {
-      int i, coord_mask = 0, zero_mask = 0;
       /* Load the coordinate */
       /* FINISHME: gl_clamp_mask and saturate */
-      for (i = 0; i < ir->coordinate->type->vector_elements; i++)
-	 coord_mask |= (1 << i);
-      for (; i < 4; i++)
-	 zero_mask |= (1 << i);
+      int coord_mask = (1 << ir->coordinate->type->vector_elements) - 1;
+      int zero_mask = 0xf & ~coord_mask;
 
       if (ir->offset && ir->op == ir_txf) {
 	 /* It appears that the ld instruction used for txf does its




More information about the mesa-commit mailing list