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:
Jason Ekstrand
2015-10-27 21:34:56 -07:00
parent 2ef4754a20
commit 066d3c115e
2 changed files with 20 additions and 10 deletions

View File

@@ -258,16 +258,11 @@ cf_init(nir_cf_node *node, nir_cf_node_type type)
}
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);
nir_function_impl *impl = ralloc(mem_ctx, nir_function_impl);
function->impl = impl;
impl->function = function;
impl->function = NULL;
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;
/* create start & end blocks */
nir_block *start_block = nir_block_create(mem_ctx);
nir_block *end_block = nir_block_create(mem_ctx);
nir_block *start_block = nir_block_create(shader);
nir_block *end_block = nir_block_create(shader);
start_block->cf_node.parent = &impl->cf_node;
end_block->cf_node.parent = &impl->cf_node;
impl->end_block = end_block;
@@ -295,6 +290,19 @@ nir_function_impl_create(nir_function *function)
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_create(nir_shader *shader)
{