Mesa (main): pan/mdg: Return the instruction from mir_insert_instruction_*_scheduled

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue May 10 13:33:47 UTC 2022


Module: Mesa
Branch: main
Commit: 7b9c976c2dabf07050efb1c9d0deb82d57efa944
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7b9c976c2dabf07050efb1c9d0deb82d57efa944

Author: Icecream95 <ixn at disroot.org>
Date:   Fri Dec 10 23:50:00 2021 +1300

pan/mdg: Return the instruction from mir_insert_instruction_*_scheduled

We can't return a pointer to the bundle itself because it might move
about in memory.

CC: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16382>

---

 src/panfrost/midgard/compiler.h | 4 ++--
 src/panfrost/midgard/mir.c      | 8 ++++++--
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/panfrost/midgard/compiler.h b/src/panfrost/midgard/compiler.h
index 5847889259e..934d505dcdc 100644
--- a/src/panfrost/midgard/compiler.h
+++ b/src/panfrost/midgard/compiler.h
@@ -516,8 +516,8 @@ void mir_print_shader(compiler_context *ctx);
 bool mir_nontrivial_mod(midgard_instruction *ins, unsigned i, bool check_swizzle);
 bool mir_nontrivial_outmod(midgard_instruction *ins);
 
-void mir_insert_instruction_before_scheduled(compiler_context *ctx, midgard_block *block, midgard_instruction *tag, midgard_instruction ins);
-void mir_insert_instruction_after_scheduled(compiler_context *ctx, midgard_block *block, midgard_instruction *tag, midgard_instruction ins);
+midgard_instruction *mir_insert_instruction_before_scheduled(compiler_context *ctx, midgard_block *block, midgard_instruction *tag, midgard_instruction ins);
+midgard_instruction *mir_insert_instruction_after_scheduled(compiler_context *ctx, midgard_block *block, midgard_instruction *tag, midgard_instruction ins);
 void mir_flip(midgard_instruction *ins);
 void mir_compute_temp_count(compiler_context *ctx);
 
diff --git a/src/panfrost/midgard/mir.c b/src/panfrost/midgard/mir.c
index 5d76af80ed8..5ff9469bcff 100644
--- a/src/panfrost/midgard/mir.c
+++ b/src/panfrost/midgard/mir.c
@@ -378,7 +378,7 @@ mir_bundle_idx_for_ins(midgard_instruction *tag, midgard_block *block)
         unreachable("Instruction not scheduled in block");
 }
 
-void
+midgard_instruction *
 mir_insert_instruction_before_scheduled(
         compiler_context *ctx,
         midgard_block *block,
@@ -398,9 +398,11 @@ mir_insert_instruction_before_scheduled(
 
         list_addtail(&new.instructions[0]->link, &before_bundle->instructions[0]->link);
         block->quadword_count += midgard_tag_props[new.tag].size;
+
+        return new.instructions[0];
 }
 
-void
+midgard_instruction *
 mir_insert_instruction_after_scheduled(
         compiler_context *ctx,
         midgard_block *block,
@@ -423,6 +425,8 @@ mir_insert_instruction_after_scheduled(
         memcpy(bundles + after + 1, &new, sizeof(new));
         list_add(&new.instructions[0]->link, &after_bundle->instructions[after_bundle->instruction_count - 1]->link);
         block->quadword_count += midgard_tag_props[new.tag].size;
+
+        return new.instructions[0];
 }
 
 /* Flip the first-two arguments of a (binary) op. Currently ALU



More information about the mesa-commit mailing list