From dbcbb321ad57d3181335f9e9641d49ed502de13e Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 18 Feb 2021 09:34:34 -0600 Subject: [PATCH] intel/mi_builder: Short-circuit shifts in more cases Reviewed-by: Ian Romanick Part-of: --- src/intel/common/gen_mi_builder.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/intel/common/gen_mi_builder.h b/src/intel/common/gen_mi_builder.h index 79a1679..98e547c 100644 --- a/src/intel/common/gen_mi_builder.h +++ b/src/intel/common/gen_mi_builder.h @@ -855,6 +855,12 @@ static inline struct gen_mi_value gen_mi_ishl_imm(struct gen_mi_builder *b, struct gen_mi_value src, uint32_t shift) { + if (shift == 0) + return src; + + if (shift >= 64) + return gen_mi_imm(0); + struct gen_mi_value res = gen_mi_value_to_gpr(b, src); for (unsigned i = 0; i < shift; i++) @@ -867,10 +873,13 @@ static inline struct gen_mi_value gen_mi_ushr32_imm(struct gen_mi_builder *b, struct gen_mi_value src, uint32_t shift) { + if (shift == 0) + return src; + /* We right-shift by left-shifting by 32 - shift and taking the top 32 bits * of the result. */ - if (shift > 64) + if (shift >= 64) return gen_mi_imm(0); if (shift > 32) { -- 2.7.4