diff options
author | Jason Ekstrand <[email protected]> | 2018-12-16 00:42:01 -0600 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2018-12-16 21:03:02 +0000 |
commit | e17426058cd50d8302acd5155846871a2f39b408 (patch) | |
tree | e76f364634c8ce1811e7f0800d30c77454d5a001 | |
parent | 2977c777589e15ff632415ecfd3548f49f56b4d8 (diff) |
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 <[email protected]>
-rw-r--r-- | src/compiler/nir/nir_lower_idiv.c | 2 |
1 files changed, 1 insertions, 1 deletions
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); } |