From: Jason Ekstrand Date: Mon, 18 May 2020 15:39:43 +0000 (-0500) Subject: nir/clone: Add a helper for cloning most instruction types X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9121afe861554d239b02c27a4c219ba9df523fb7;p=mesa.git 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: --- 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) {