nir_register *reg = nir_local_reg_create(state->impl);
reg->num_components = glsl_get_vector_elements(tail->type);
reg->num_array_elems = array_size > 1 ? array_size : 0;
- reg->bit_size = glsl_get_bit_size(glsl_get_base_type(tail->type));
+ reg->bit_size = glsl_get_bit_size(tail->type);
_mesa_hash_table_insert_pre_hashed(state->regs_table, hash, deref, reg);
nir_array_add(&state->derefs_array, nir_deref_var *, deref);
}
static bool
-lower_locals_to_regs_block(nir_block *block, void *void_state)
+lower_locals_to_regs_block(nir_block *block,
+ struct locals_to_regs_state *state)
{
- struct locals_to_regs_state *state = void_state;
-
- nir_foreach_instr_safe(block, instr) {
+ nir_foreach_instr_safe(instr, block) {
if (instr->type != nir_instr_type_intrinsic)
continue;
nir_metadata_require(impl, nir_metadata_dominance);
- nir_foreach_block_call(impl, lower_locals_to_regs_block, &state);
+ nir_foreach_block(block, impl) {
+ lower_locals_to_regs_block(block, &state);
+ }
nir_array_foreach(&state.derefs_array, nir_deref_var *, deref_ptr) {
nir_deref_var *deref = *deref_ptr;
{
bool progress = false;
- nir_foreach_function(shader, function) {
+ nir_foreach_function(function, shader) {
if (function->impl)
progress = nir_lower_locals_to_regs_impl(function->impl) || progress;
}