summaryrefslogtreecommitdiffstats
path: root/src/compiler/nir/nir_lower_idiv.c
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2016-11-07 10:34:01 -0800
committerEric Anholt <[email protected]>2016-11-16 19:45:01 -0800
commit80786a67cf64f9d3ae21b42ab7690255105a66db (patch)
treef5cc72ded13826a7e3b786b6232252db47c436a3 /src/compiler/nir/nir_lower_idiv.c
parent7f27ad55974d0bdac4c94a4523a4d42cc75334d5 (diff)
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 <[email protected]>
Diffstat (limited to 'src/compiler/nir/nir_lower_idiv.c')
-rw-r--r--src/compiler/nir/nir_lower_idiv.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/compiler/nir/nir_lower_idiv.c b/src/compiler/nir/nir_lower_idiv.c
index b1e7aeb03c8..6726b718aaa 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);
}