Mesa (master): intel/mi_builder: Short-circuit shifts in more cases

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Feb 18 21:33:04 UTC 2021


Module: Mesa
Branch: master
Commit: dbcbb321ad57d3181335f9e9641d49ed502de13e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dbcbb321ad57d3181335f9e9641d49ed502de13e

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Thu Feb 18 09:34:34 2021 -0600

intel/mi_builder: Short-circuit shifts in more cases

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9116>

---

 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 79a167991e4..98e547c68e2 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) {



More information about the mesa-commit mailing list