Mesa (master): nir: Avoid an extra NIR op in integer divide lowering.

Eric Anholt anholt at kemper.freedesktop.org
Thu Nov 17 03:51:29 UTC 2016


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

Author: Eric Anholt <eric at anholt.net>
Date:   Mon Nov  7 10:34:01 2016 -0800

nir: Avoid an extra NIR op in integer divide lowering.

NIR bools are ~0 for true, so ((unsigned)a >> 31) != 0 -> ((int)a >> 31).

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/compiler/nir/nir_lower_idiv.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/compiler/nir/nir_lower_idiv.c b/src/compiler/nir/nir_lower_idiv.c
index b1e7aeb..6726b71 100644
--- a/src/compiler/nir/nir_lower_idiv.c
+++ b/src/compiler/nir/nir_lower_idiv.c
@@ -101,8 +101,7 @@ convert_instr(nir_builder *bld, nir_alu_instr *alu)
    if (is_signed)  {
       /* fix the sign: */
       r = nir_ixor(bld, numer, denom);
-      r = nir_ushr(bld, r, nir_imm_int(bld, 31));
-      r = nir_i2b(bld, r);
+      r = nir_ishr(bld, r, nir_imm_int(bld, 31));
       b = nir_ineg(bld, q);
       q = nir_bcsel(bld, r, b, q);
    }




More information about the mesa-commit mailing list