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