nir: Add a helper for creating a "bare" nir_function_impl
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
@@ -258,16 +258,11 @@ cf_init(nir_cf_node *node, nir_cf_node_type type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
nir_function_impl *
|
nir_function_impl *
|
||||||
nir_function_impl_create(nir_function *function)
|
nir_function_impl_create_bare(nir_shader *shader)
|
||||||
{
|
{
|
||||||
assert(function->impl == NULL);
|
nir_function_impl *impl = ralloc(shader, nir_function_impl);
|
||||||
|
|
||||||
void *mem_ctx = ralloc_parent(function);
|
impl->function = NULL;
|
||||||
|
|
||||||
nir_function_impl *impl = ralloc(mem_ctx, nir_function_impl);
|
|
||||||
|
|
||||||
function->impl = impl;
|
|
||||||
impl->function = function;
|
|
||||||
|
|
||||||
cf_init(&impl->cf_node, nir_cf_node_function);
|
cf_init(&impl->cf_node, nir_cf_node_function);
|
||||||
|
|
||||||
@@ -282,8 +277,8 @@ nir_function_impl_create(nir_function *function)
|
|||||||
impl->valid_metadata = nir_metadata_none;
|
impl->valid_metadata = nir_metadata_none;
|
||||||
|
|
||||||
/* create start & end blocks */
|
/* create start & end blocks */
|
||||||
nir_block *start_block = nir_block_create(mem_ctx);
|
nir_block *start_block = nir_block_create(shader);
|
||||||
nir_block *end_block = nir_block_create(mem_ctx);
|
nir_block *end_block = nir_block_create(shader);
|
||||||
start_block->cf_node.parent = &impl->cf_node;
|
start_block->cf_node.parent = &impl->cf_node;
|
||||||
end_block->cf_node.parent = &impl->cf_node;
|
end_block->cf_node.parent = &impl->cf_node;
|
||||||
impl->end_block = end_block;
|
impl->end_block = end_block;
|
||||||
@@ -295,6 +290,19 @@ nir_function_impl_create(nir_function *function)
|
|||||||
return impl;
|
return impl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nir_function_impl *
|
||||||
|
nir_function_impl_create(nir_function *function)
|
||||||
|
{
|
||||||
|
assert(function->impl == NULL);
|
||||||
|
|
||||||
|
nir_function_impl *impl = nir_function_impl_create_bare(function->shader);
|
||||||
|
|
||||||
|
function->impl = impl;
|
||||||
|
impl->function = function;
|
||||||
|
|
||||||
|
return impl;
|
||||||
|
}
|
||||||
|
|
||||||
nir_block *
|
nir_block *
|
||||||
nir_block_create(nir_shader *shader)
|
nir_block_create(nir_shader *shader)
|
||||||
{
|
{
|
||||||
|
@@ -1732,6 +1732,8 @@ nir_variable *nir_local_variable_create(nir_function_impl *impl,
|
|||||||
nir_function *nir_function_create(nir_shader *shader, const char *name);
|
nir_function *nir_function_create(nir_shader *shader, const char *name);
|
||||||
|
|
||||||
nir_function_impl *nir_function_impl_create(nir_function *func);
|
nir_function_impl *nir_function_impl_create(nir_function *func);
|
||||||
|
/** creates a function_impl that isn't tied to any particular function */
|
||||||
|
nir_function_impl *nir_function_impl_create_bare(nir_shader *shader);
|
||||||
|
|
||||||
nir_block *nir_block_create(nir_shader *shader);
|
nir_block *nir_block_create(nir_shader *shader);
|
||||||
nir_if *nir_if_create(nir_shader *shader);
|
nir_if *nir_if_create(nir_shader *shader);
|
||||||
|
Reference in New Issue
Block a user