Mesa (master): intel/mi: Optimize away LOAD_REGISTER_REG from a register to itself

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 25 18:43:07 UTC 2019


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

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Apr  1 16:00:25 2019 -0700

intel/mi: Optimize away LOAD_REGISTER_REG from a register to itself

We might want to resolve something to be in a particular register,
so we can access it outside of the gen_mi framework...but it may already
be in that register, at which point there's no work to do.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>

---

 src/intel/common/gen_mi_builder.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/intel/common/gen_mi_builder.h b/src/intel/common/gen_mi_builder.h
index bb817ce930e..500893559c3 100644
--- a/src/intel/common/gen_mi_builder.h
+++ b/src/intel/common/gen_mi_builder.h
@@ -414,9 +414,11 @@ _gen_mi_copy_no_unref(struct gen_mi_builder *b,
       case GEN_MI_VALUE_TYPE_REG32:
       case GEN_MI_VALUE_TYPE_REG64:
 #if GEN_GEN >= 8 || GEN_IS_HASWELL
-         gen_mi_builder_emit(b, GENX(MI_LOAD_REGISTER_REG), lrr) {
-            lrr.SourceRegisterAddress = src.reg;
-            lrr.DestinationRegisterAddress = dst.reg;
+         if (src.reg != dst.reg) {
+            gen_mi_builder_emit(b, GENX(MI_LOAD_REGISTER_REG), lrr) {
+               lrr.SourceRegisterAddress = src.reg;
+               lrr.DestinationRegisterAddress = dst.reg;
+            }
          }
 #else
          unreachable("Cannot do reg <-> reg copy on IVB and earlier");




More information about the mesa-commit mailing list