nir: Assert that nir_lower_io is only called with allowed modes
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5418>
This commit is contained in:

committed by
Marge Bot

parent
b019b22c7a
commit
be96b069ad
@@ -626,16 +626,10 @@ nir_lower_io_block(nir_block *block,
|
|||||||
nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]);
|
nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]);
|
||||||
|
|
||||||
nir_variable_mode mode = deref->mode;
|
nir_variable_mode mode = deref->mode;
|
||||||
|
assert(util_is_power_of_two_nonzero(mode));
|
||||||
if ((state->modes & mode) == 0)
|
if ((state->modes & mode) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (mode != nir_var_shader_in &&
|
|
||||||
mode != nir_var_shader_out &&
|
|
||||||
mode != nir_var_mem_shared &&
|
|
||||||
mode != nir_var_uniform)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
nir_variable *var = nir_deref_instr_get_variable(deref);
|
nir_variable *var = nir_deref_instr_get_variable(deref);
|
||||||
|
|
||||||
b->cursor = nir_before_instr(instr);
|
b->cursor = nir_before_instr(instr);
|
||||||
@@ -723,6 +717,11 @@ nir_lower_io_impl(nir_function_impl *impl,
|
|||||||
state.type_size = type_size;
|
state.type_size = type_size;
|
||||||
state.options = options;
|
state.options = options;
|
||||||
|
|
||||||
|
ASSERTED nir_variable_mode supported_modes =
|
||||||
|
nir_var_shader_in | nir_var_shader_out |
|
||||||
|
nir_var_mem_shared | nir_var_uniform;
|
||||||
|
assert(!(modes & ~supported_modes));
|
||||||
|
|
||||||
nir_foreach_block(block, impl) {
|
nir_foreach_block(block, impl) {
|
||||||
progress |= nir_lower_io_block(block, &state);
|
progress |= nir_lower_io_block(block, &state);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user