[Mesa-dev] [PATCH] nir: Avoid an extra NIR op in integer divide lowering.
Eric Anholt
eric at anholt.net
Mon Nov 7 20:28:34 UTC 2016
NIR bools are ~0 for true, so ((unsigned)a >> 31) != 0 -> ((int)a >> 31).
---
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 b1e7aeb03c8a..6726b718aaa5 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);
}
--
2.10.2
More information about the mesa-dev
mailing list