From 9121afe861554d239b02c27a4c219ba9df523fb7 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Mon, 18 May 2020 10:39:43 -0500 Subject: [PATCH] nir/clone: Add a helper for cloning most instruction types @anholt needed it for nir_to_tgsi, and the desire comes up frequently. Reviewed-by: Eric Anholt Part-of: --- src/compiler/nir/nir.h | 3 +++ src/compiler/nir/nir_clone.c | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 1d1bb6c9584..cb702ca3023 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -3855,6 +3855,9 @@ void nir_print_shader_annotated(nir_shader *shader, FILE *fp, struct hash_table void nir_print_instr(const nir_instr *instr, FILE *fp); void nir_print_deref(const nir_deref_instr *deref, FILE *fp); +/** Shallow clone of a single instruction. */ +nir_instr *nir_instr_clone(nir_shader *s, const nir_instr *orig); + /** Shallow clone of a single ALU instruction. */ nir_alu_instr *nir_alu_instr_clone(nir_shader *s, const nir_alu_instr *orig); diff --git a/src/compiler/nir/nir_clone.c b/src/compiler/nir/nir_clone.c index 946b9ebf0a7..05689b097a8 100644 --- a/src/compiler/nir/nir_clone.c +++ b/src/compiler/nir/nir_clone.c @@ -517,6 +517,16 @@ clone_instr(clone_state *state, const nir_instr *instr) } } +nir_instr * +nir_instr_clone(nir_shader *shader, const nir_instr *orig) +{ + clone_state state = { + .allow_remap_fallback = true, + .ns = shader, + }; + return clone_instr(&state, orig); +} + static nir_block * clone_block(clone_state *state, struct exec_list *cf_list, const nir_block *blk) { -- 2.30.2