From 96168301f92aa4e503a22ae83c29c8e08ea285c5 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Wed, 21 Jul 2021 17:15:51 +0100 Subject: [PATCH] nir/idiv_const: improve idiv(n, INT_MIN) This lowering is smaller and -INT64_MIN is probably UB (signed overflow). No fossil-db changes. Signed-off-by: Rhys Perry Reviewed-by: Ian Romanick Part-of: --- src/compiler/nir/nir_opt_idiv_const.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/compiler/nir/nir_opt_idiv_const.c b/src/compiler/nir/nir_opt_idiv_const.c index 44daa793435..f94efc55991 100644 --- a/src/compiler/nir/nir_opt_idiv_const.c +++ b/src/compiler/nir/nir_opt_idiv_const.c @@ -65,6 +65,10 @@ build_umod(nir_builder *b, nir_ssa_def *n, uint64_t d) static nir_ssa_def * build_idiv(nir_builder *b, nir_ssa_def *n, int64_t d) { + int64_t int_min = u_intN_min(n->bit_size); + if (d == int_min) + return nir_b2i(b, nir_ieq_imm(b, n, int_min), n->bit_size); + uint64_t abs_d = d < 0 ? -d : d; if (d == 0) {