nir: Add nir_address_format_null_value()

Returns the nir_const_value * with the representation of the NULL
pointer for each address format.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Caio Marcelo de Oliveira Filho
2019-05-01 14:44:15 -07:00
parent 31a7476335
commit f051fa6ad7
2 changed files with 22 additions and 0 deletions

View File

@@ -3165,6 +3165,8 @@ nir_address_format_to_glsl_type(nir_address_format addr_format)
nir_address_format_num_components(addr_format)); nir_address_format_num_components(addr_format));
} }
const nir_const_value *nir_address_format_null_value(nir_address_format addr_format);
nir_ssa_def * nir_explicit_io_address_from_deref(struct nir_builder *b, nir_ssa_def * nir_explicit_io_address_from_deref(struct nir_builder *b,
nir_deref_instr *deref, nir_deref_instr *deref,
nir_ssa_def *base_addr, nir_ssa_def *base_addr,

View File

@@ -1230,3 +1230,23 @@ nir_get_io_vertex_index_src(nir_intrinsic_instr *instr)
return NULL; return NULL;
} }
} }
/**
* Return the numeric constant that identify a NULL pointer for each address
* format.
*/
const nir_const_value *
nir_address_format_null_value(nir_address_format addr_format)
{
const static nir_const_value null_values[][NIR_MAX_VEC_COMPONENTS] = {
[nir_address_format_32bit_global] = {{0}},
[nir_address_format_64bit_global] = {{0}},
[nir_address_format_64bit_bounded_global] = {{0}},
[nir_address_format_32bit_index_offset] = {{.u32 = ~0}, {.u32 = ~0}},
[nir_address_format_32bit_offset] = {{.u32 = ~0}},
[nir_address_format_logical] = {{.u32 = ~0}},
};
assert(addr_format < ARRAY_SIZE(null_values));
return null_values[addr_format];
}