Module: Mesa
Branch: staging/22.1
Commit: 7c24f4fbc9148a3810d48cadcd99d3c69992408f
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7c24f4fbc9148a3810d48cadcd99d3c69992408f

Author: Icecream95 <[email protected]>
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>
(cherry picked from commit 7b9c976c2dabf07050efb1c9d0deb82d57efa944)

---

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

diff --git a/.pick_status.json b/.pick_status.json
index 0237064317f..2ad46bb2382 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -661,7 +661,7 @@
         "description": "pan/mdg: Return the instruction from 
mir_insert_instruction_*_scheduled",
         "nominated": true,
         "nomination_type": 0,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": null
     },
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

Reply via email to