From: Jason Ekstrand Date: Mon, 28 Aug 2017 22:05:11 +0000 (-0700) Subject: nir/opcodes: Fix constant-folding of ufind_msb X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a0947921eb01f4c037de28b753fc10f86a25fc65;p=mesa.git nir/opcodes: Fix constant-folding of ufind_msb 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 Reviewed-by: Connor Abbott Cc: mesa-stable@lists.freedesktop.org --- diff --git a/src/compiler/nir/nir_opcodes.py b/src/compiler/nir/nir_opcodes.py index 06ae820c3e8..28a04672285 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;