We didn't fold correctly in the case of 0x1 because we never let the loop counter hit 0. Switching it to bit >= 0 solves this problem.
Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> Reviewed-by: Connor Abbott <cwabbo...@gmail.com> Cc: mesa-sta...@lists.freedesktop.org --- src/compiler/nir/nir_opcodes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/nir/nir_opcodes.py b/src/compiler/nir/nir_opcodes.py index 06ae820..28a0467 100644 --- a/src/compiler/nir/nir_opcodes.py +++ b/src/compiler/nir/nir_opcodes.py @@ -308,7 +308,7 @@ for (unsigned bit = 0; bit < 32; bit++) { unop_convert("ufind_msb", tint32, tuint32, """ dst = -1; -for (int bit = 31; bit > 0; bit--) { +for (int bit = 31; bit >= 0; bit--) { if ((src0 >> bit) & 1) { dst = bit; break; -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev