From: Jason Ekstrand Date: Sun, 16 Dec 2018 06:42:01 +0000 (-0600) Subject: nir/lower_idiv: Use ilt instead of bit twiddling X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e17426058cd50d8302acd5155846871a2f39b408;p=mesa.git nir/lower_idiv: Use ilt instead of bit twiddling The previous code was creating a boolean by doing an arithmetic right- shift by 31 which produces a boolean which is true if the argument is negative. This is the same as the expression r < 0 which is much simpler and doesn't depend on NIR's representation of booleans. Reviewed-by: Eric Anholt --- diff --git a/src/compiler/nir/nir_lower_idiv.c b/src/compiler/nir/nir_lower_idiv.c index b2a0a3c1899..4e7e2408ae8 100644 --- a/src/compiler/nir/nir_lower_idiv.c +++ b/src/compiler/nir/nir_lower_idiv.c @@ -101,7 +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_ishr(bld, r, nir_imm_int(bld, 31)); + r = nir_ilt(bld, r, nir_imm_int(bld, 0)); b = nir_ineg(bld, q); q = nir_bcsel(bld, r, b, q); }