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@whitecape.org>
This commit is contained in:
@@ -101,8 +101,7 @@ convert_instr(nir_builder *bld, nir_alu_instr *alu)
|
|||||||
if (is_signed) {
|
if (is_signed) {
|
||||||
/* fix the sign: */
|
/* fix the sign: */
|
||||||
r = nir_ixor(bld, numer, denom);
|
r = nir_ixor(bld, numer, denom);
|
||||||
r = nir_ushr(bld, r, nir_imm_int(bld, 31));
|
r = nir_ishr(bld, r, nir_imm_int(bld, 31));
|
||||||
r = nir_i2b(bld, r);
|
|
||||||
b = nir_ineg(bld, q);
|
b = nir_ineg(bld, q);
|
||||||
q = nir_bcsel(bld, r, b, q);
|
q = nir_bcsel(bld, r, b, q);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user