On Wed, Jul 04, 2018 at 09:55:26AM -0700, Jason Ekstrand wrote:
> Removes an instruction from one place and inserts it at another while
> working around a weird cursor corner-case.
Is the weird corner case the move to the same place case?
> --- a/src/compiler/nir/nir.c
> +++ b/src/compiler/nir/nir.c
> @@ -845,6 +845,21 @@ nir_instr_insert(nir_cursor cursor, nir_instr *instr)
> nir_handle_add_jump(instr->block);
> }
>
> +void
> +nir_instr_move(nir_cursor cursor, nir_instr *instr)
> +{
> + /* If the cursor happens to refer to this instruction (either before or
> + * after), don't do anything.
> + */
> + if ((cursor.option == nir_cursor_before_instr ||
> + cursor.option == nir_cursor_after_instr) &&
> + cursor.instr == instr)
> + return;
Should we also consider the block-based cursor options here? Moving
the first instruction of a block before that block
(nir_cursor_before_block), etc.
Thanks,
Caio
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev