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) {