nv50/ir: properly clear upper bits of a bitset fill
authorIlia Mirkin <imirkin@alum.mit.edu>
Sat, 13 Aug 2016 19:45:35 +0000 (15:45 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Wed, 17 Aug 2016 01:56:16 +0000 (21:56 -0400)
Found by inspection. In practice, val is always == 0, so this never got
triggered.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/codegen/nv50_ir_util.cpp

index 682c5690624b34e5de50487ea5cfb26b6417fada..1daf778e9346b60521d6aaa24146fa1075cb1d61 100644 (file)
@@ -297,8 +297,8 @@ void BitSet::fill(uint32_t val)
    unsigned int i;
    for (i = 0; i < (size + 31) / 32; ++i)
       data[i] = val;
-   if (val)
-      data[i] &= ~(0xffffffff << (size % 32)); // BE ?
+   if (val && i)
+      data[i - 1] &= (1 << (size % 32)) - 1;
 }
 
 void BitSet::setOr(BitSet *pA, BitSet *pB)