[Mesa-dev] [RFC] nir/builder: Add support for easily building control-flow
Jason Ekstrand
jason at jlekstrand.net
Wed Feb 15 16:44:52 UTC 2017
Only build-tested.
On Wed, Feb 15, 2017 at 8:43 AM, Jason Ekstrand <jason at jlekstrand.net>
wrote:
> ---
> src/compiler/nir/nir_builder.h | 41 ++++++++++++++++++++++++++++++
> +++++++++++
> 1 file changed, 41 insertions(+)
>
> diff --git a/src/compiler/nir/nir_builder.h b/src/compiler/nir/nir_
> builder.h
> index 194d327..cdfc15b 100644
> --- a/src/compiler/nir/nir_builder.h
> +++ b/src/compiler/nir/nir_builder.h
> @@ -81,6 +81,47 @@ nir_builder_cf_insert(nir_builder *build, nir_cf_node
> *cf)
> nir_cf_node_insert(build->cursor, cf);
> }
>
> +static inline void
> +nir_push_if(nir_builder *build, nir_ssa_def *condition)
> +{
> + nir_if *nif = nir_if_create(build->shader);
> + nif->condition = nir_src_for_ssa(condition);
> + nir_builder_cf_insert(build, &nif->cf_node);
> + build->cursor = nir_before_cf_list(&nif->then_list);
> +}
> +
> +static inline void
> +nir_push_else(nir_builder *build)
> +{
> + nir_block *block = nir_cursor_current_block(build->cursor);
> + nir_if *nif = nir_cf_node_as_if(block->cf_node.parent);
> + build->cursor = nir_before_cf_list(&nif->else_list);
> +}
> +
> +static inline void
> +nir_pop_if(nir_builder *build)
> +{
> + nir_block *block = nir_cursor_current_block(build->cursor);
> + nir_if *nif = nir_cf_node_as_if(block->cf_node.parent);
> + build->cursor = nir_after_cf_node(&nif->cf_node);
> +}
> +
> +static inline void
> +nir_push_loop(nir_builder *build)
> +{
> + nir_loop *loop = nir_loop_create(build->shader);
> + nir_builder_cf_insert(build, &loop->cf_node);
> + build->cursor = nir_before_cf_list(&loop->body);
> +}
> +
> +static inline void
> +nir_pop_loop(nir_builder *build)
> +{
> + nir_block *block = nir_cursor_current_block(build->cursor);
> + nir_loop *loop = nir_cf_node_as_loop(block->cf_node.parent);
> + build->cursor = nir_after_cf_node(&loop->cf_node);
> +}
> +
> static inline nir_ssa_def *
> nir_ssa_undef(nir_builder *build, unsigned num_components, unsigned
> bit_size)
> {
> --
> 2.5.0.400.gff86faf
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170215/f15f7a7f/attachment-0001.html>
More information about the mesa-dev
mailing list