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's avatarJason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Bas Nieuwenhuizen's avatarBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
parent 31a74763
......@@ -3165,6 +3165,8 @@ nir_address_format_to_glsl_type(nir_address_format 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_deref_instr *deref,
nir_ssa_def *base_addr,
......
......@@ -1230,3 +1230,23 @@ nir_get_io_vertex_index_src(nir_intrinsic_instr *instr)
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];
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment