llvmpipe: simplify mask computation
authorBrian Paul <brianp@vmware.com>
Tue, 1 Dec 2009 23:24:16 +0000 (16:24 -0700)
committerBrian Paul <brianp@vmware.com>
Tue, 1 Dec 2009 23:24:19 +0000 (16:24 -0700)
Make this a little easier to understand.

src/gallium/drivers/llvmpipe/lp_rast_tri.c

index 9543b86..f6cb628 100644 (file)
@@ -89,10 +89,12 @@ do_block_4( struct lp_rasterizer *rast,
    assert(x % 4 == 0);
    assert(y % 4 == 0);
 
-   for (i = 0; i < 16; i++)
-      mask |= (~(((c1 + tri->step[0][i]) | 
-                 (c2 + tri->step[1][i]) | 
-                 (c3 + tri->step[2][i])) >> 31)) & (1 << i);
+   for (i = 0; i < 16; i++) {
+      int any_negative = ((c1 + tri->step[0][i]) | 
+                          (c2 + tri->step[1][i]) | 
+                          (c3 + tri->step[2][i])) >> 31;
+      mask |= (~any_negative) & (1 << i);
+   }
    
    /* As we do trivial reject already, masks should rarely be all zero:
     */