nir: Stop using designated initializers
Designated initializers with anonymous unions don't work in MSVC or GCC < 4.6. With a couple of constructor methods, we don't need them any more and the code is actually cleaner. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88467 Reviewed-by: Connor Abbot <cwabbott0@gmail.com>
This commit is contained in:
@@ -382,12 +382,9 @@ isolate_phi_nodes_block(nir_block *block, void *void_state)
|
|||||||
entry->dest.is_ssa = true;
|
entry->dest.is_ssa = true;
|
||||||
nir_ssa_def_init(&block_pcopy->instr, &entry->dest.ssa,
|
nir_ssa_def_init(&block_pcopy->instr, &entry->dest.ssa,
|
||||||
phi->dest.ssa.num_components, phi->dest.ssa.name);
|
phi->dest.ssa.num_components, phi->dest.ssa.name);
|
||||||
|
nir_ssa_def_rewrite_uses(&phi->dest.ssa,
|
||||||
nir_src entry_dest_src = {
|
nir_src_for_ssa(&entry->dest.ssa),
|
||||||
.ssa = &entry->dest.ssa,
|
state->mem_ctx);
|
||||||
.is_ssa = true,
|
|
||||||
};
|
|
||||||
nir_ssa_def_rewrite_uses(&phi->dest.ssa, entry_dest_src, state->mem_ctx);
|
|
||||||
|
|
||||||
entry->src.is_ssa = true;
|
entry->src.is_ssa = true;
|
||||||
entry->src.ssa = &phi->dest.ssa;
|
entry->src.ssa = &phi->dest.ssa;
|
||||||
@@ -620,22 +617,16 @@ emit_copy(nir_parallel_copy_instr *pcopy, nir_src src, nir_src dest_src,
|
|||||||
assert(!dest_src.is_ssa &&
|
assert(!dest_src.is_ssa &&
|
||||||
dest_src.reg.indirect == NULL &&
|
dest_src.reg.indirect == NULL &&
|
||||||
dest_src.reg.base_offset == 0);
|
dest_src.reg.base_offset == 0);
|
||||||
nir_dest dest = {
|
|
||||||
.reg.reg = dest_src.reg.reg,
|
|
||||||
.reg.indirect = NULL,
|
|
||||||
.reg.base_offset = 0,
|
|
||||||
.is_ssa = false,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (src.is_ssa)
|
if (src.is_ssa)
|
||||||
assert(src.ssa->num_components >= dest.reg.reg->num_components);
|
assert(src.ssa->num_components >= dest_src.reg.reg->num_components);
|
||||||
else
|
else
|
||||||
assert(src.reg.reg->num_components >= dest.reg.reg->num_components);
|
assert(src.reg.reg->num_components >= dest_src.reg.reg->num_components);
|
||||||
|
|
||||||
nir_alu_instr *mov = nir_alu_instr_create(mem_ctx, nir_op_imov);
|
nir_alu_instr *mov = nir_alu_instr_create(mem_ctx, nir_op_imov);
|
||||||
mov->src[0].src = nir_src_copy(src, mem_ctx);
|
mov->src[0].src = nir_src_copy(src, mem_ctx);
|
||||||
mov->dest.dest = nir_dest_copy(dest, mem_ctx);
|
mov->dest.dest = nir_dest_for_reg(dest_src.reg.reg);
|
||||||
mov->dest.write_mask = (1 << dest.reg.reg->num_components) - 1;
|
mov->dest.write_mask = (1 << dest_src.reg.reg->num_components) - 1;
|
||||||
|
|
||||||
nir_instr_insert_before(&pcopy->instr, &mov->instr);
|
nir_instr_insert_before(&pcopy->instr, &mov->instr);
|
||||||
}
|
}
|
||||||
@@ -720,12 +711,7 @@ resolve_parallel_copy(nir_parallel_copy_instr *pcopy,
|
|||||||
values[src_idx] = entry->src;
|
values[src_idx] = entry->src;
|
||||||
}
|
}
|
||||||
|
|
||||||
nir_src dest_src = {
|
nir_src dest_src = nir_src_for_reg(entry->dest.reg.reg);
|
||||||
.reg.reg = entry->dest.reg.reg,
|
|
||||||
.reg.indirect = NULL,
|
|
||||||
.reg.base_offset = 0,
|
|
||||||
.is_ssa = false,
|
|
||||||
};
|
|
||||||
|
|
||||||
int dest_idx = -1;
|
int dest_idx = -1;
|
||||||
for (int i = 0; i < num_vals; ++i) {
|
for (int i = 0; i < num_vals; ++i) {
|
||||||
|
@@ -115,11 +115,9 @@ lower_instr(nir_intrinsic_instr *instr, nir_function_impl *impl)
|
|||||||
new_instr->dest.is_ssa = true;
|
new_instr->dest.is_ssa = true;
|
||||||
nir_ssa_def_init(&new_instr->instr, &new_instr->dest.ssa,
|
nir_ssa_def_init(&new_instr->instr, &new_instr->dest.ssa,
|
||||||
instr->dest.ssa.num_components, NULL);
|
instr->dest.ssa.num_components, NULL);
|
||||||
nir_src new_dest_src = {
|
nir_ssa_def_rewrite_uses(&instr->dest.ssa,
|
||||||
.is_ssa = true,
|
nir_src_for_ssa(&new_instr->dest.ssa),
|
||||||
.ssa = &new_instr->dest.ssa,
|
mem_ctx);
|
||||||
};
|
|
||||||
nir_ssa_def_rewrite_uses(&instr->dest.ssa, new_dest_src, mem_ctx);
|
|
||||||
} else {
|
} else {
|
||||||
new_instr->dest = nir_dest_copy(instr->dest, mem_ctx);
|
new_instr->dest = nir_dest_copy(instr->dest, mem_ctx);
|
||||||
}
|
}
|
||||||
|
@@ -238,13 +238,8 @@ nir_lower_io_block(nir_block *block, void *void_state)
|
|||||||
load->dest.is_ssa = true;
|
load->dest.is_ssa = true;
|
||||||
nir_ssa_def_init(&load->instr, &load->dest.ssa,
|
nir_ssa_def_init(&load->instr, &load->dest.ssa,
|
||||||
intrin->num_components, NULL);
|
intrin->num_components, NULL);
|
||||||
|
nir_ssa_def_rewrite_uses(&intrin->dest.ssa,
|
||||||
nir_src new_src = {
|
nir_src_for_ssa(&load->dest.ssa),
|
||||||
.is_ssa = true,
|
|
||||||
.ssa = &load->dest.ssa,
|
|
||||||
};
|
|
||||||
|
|
||||||
nir_ssa_def_rewrite_uses(&intrin->dest.ssa, new_src,
|
|
||||||
state->mem_ctx);
|
state->mem_ctx);
|
||||||
} else {
|
} else {
|
||||||
load->dest = nir_dest_copy(intrin->dest, state->mem_ctx);
|
load->dest = nir_dest_copy(intrin->dest, state->mem_ctx);
|
||||||
|
@@ -215,13 +215,8 @@ lower_locals_to_regs_block(nir_block *block, void *void_state)
|
|||||||
mov->dest.dest.is_ssa = true;
|
mov->dest.dest.is_ssa = true;
|
||||||
nir_ssa_def_init(&mov->instr, &mov->dest.dest.ssa,
|
nir_ssa_def_init(&mov->instr, &mov->dest.dest.ssa,
|
||||||
intrin->num_components, NULL);
|
intrin->num_components, NULL);
|
||||||
|
nir_ssa_def_rewrite_uses(&intrin->dest.ssa,
|
||||||
nir_src new_src = {
|
nir_src_for_ssa(&mov->dest.dest.ssa),
|
||||||
.is_ssa = true,
|
|
||||||
.ssa = &mov->dest.dest.ssa,
|
|
||||||
};
|
|
||||||
|
|
||||||
nir_ssa_def_rewrite_uses(&intrin->dest.ssa, new_src,
|
|
||||||
state->mem_ctx);
|
state->mem_ctx);
|
||||||
} else {
|
} else {
|
||||||
mov->dest.dest = nir_dest_copy(intrin->dest, state->mem_ctx);
|
mov->dest.dest = nir_dest_copy(intrin->dest, state->mem_ctx);
|
||||||
|
@@ -74,11 +74,9 @@ convert_instr(nir_intrinsic_instr *instr)
|
|||||||
new_instr->dest.is_ssa = true;
|
new_instr->dest.is_ssa = true;
|
||||||
nir_ssa_def_init(&new_instr->instr, &new_instr->dest.ssa,
|
nir_ssa_def_init(&new_instr->instr, &new_instr->dest.ssa,
|
||||||
instr->dest.ssa.num_components, NULL);
|
instr->dest.ssa.num_components, NULL);
|
||||||
nir_src new_dest_src = {
|
nir_ssa_def_rewrite_uses(&instr->dest.ssa,
|
||||||
.is_ssa = true,
|
nir_src_for_ssa(&new_instr->dest.ssa),
|
||||||
.ssa = &new_instr->dest.ssa,
|
mem_ctx);
|
||||||
};
|
|
||||||
nir_ssa_def_rewrite_uses(&instr->dest.ssa, new_dest_src, mem_ctx);
|
|
||||||
} else {
|
} else {
|
||||||
new_instr->dest = nir_dest_copy(instr->dest, mem_ctx);
|
new_instr->dest = nir_dest_copy(instr->dest, mem_ctx);
|
||||||
}
|
}
|
||||||
|
@@ -765,12 +765,8 @@ rename_variables_block(nir_block *block, struct lower_variables_state *state)
|
|||||||
nir_instr_insert_before(&intrin->instr, &undef->instr);
|
nir_instr_insert_before(&intrin->instr, &undef->instr);
|
||||||
nir_instr_remove(&intrin->instr);
|
nir_instr_remove(&intrin->instr);
|
||||||
|
|
||||||
nir_src new_src = {
|
nir_ssa_def_rewrite_uses(&intrin->dest.ssa,
|
||||||
.is_ssa = true,
|
nir_src_for_ssa(&undef->def),
|
||||||
.ssa = &undef->def,
|
|
||||||
};
|
|
||||||
|
|
||||||
nir_ssa_def_rewrite_uses(&intrin->dest.ssa, new_src,
|
|
||||||
state->mem_ctx);
|
state->mem_ctx);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -795,12 +791,8 @@ rename_variables_block(nir_block *block, struct lower_variables_state *state)
|
|||||||
nir_instr_insert_before(&intrin->instr, &mov->instr);
|
nir_instr_insert_before(&intrin->instr, &mov->instr);
|
||||||
nir_instr_remove(&intrin->instr);
|
nir_instr_remove(&intrin->instr);
|
||||||
|
|
||||||
nir_src new_src = {
|
nir_ssa_def_rewrite_uses(&intrin->dest.ssa,
|
||||||
.is_ssa = true,
|
nir_src_for_ssa(&mov->dest.dest.ssa),
|
||||||
.ssa = &mov->dest.dest.ssa,
|
|
||||||
};
|
|
||||||
|
|
||||||
nir_ssa_def_rewrite_uses(&intrin->dest.ssa, new_src,
|
|
||||||
state->mem_ctx);
|
state->mem_ctx);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -216,12 +216,8 @@ constant_fold_alu_instr(nir_alu_instr *instr, void *mem_ctx)
|
|||||||
|
|
||||||
nir_instr_insert_before(&instr->instr, &dest->instr);
|
nir_instr_insert_before(&instr->instr, &dest->instr);
|
||||||
|
|
||||||
nir_src new_src = {
|
nir_ssa_def_rewrite_uses(&instr->dest.dest.ssa, nir_src_for_ssa(&dest->def),
|
||||||
.is_ssa = true,
|
mem_ctx);
|
||||||
.ssa = &dest->def,
|
|
||||||
};
|
|
||||||
|
|
||||||
nir_ssa_def_rewrite_uses(&instr->dest.dest.ssa, new_src, mem_ctx);
|
|
||||||
|
|
||||||
nir_instr_remove(&instr->instr);
|
nir_instr_remove(&instr->instr);
|
||||||
ralloc_free(instr);
|
ralloc_free(instr);
|
||||||
@@ -248,12 +244,8 @@ constant_fold_deref(nir_instr *instr, nir_deref_var *deref)
|
|||||||
|
|
||||||
arr->base_offset += indirect->value.u[0];
|
arr->base_offset += indirect->value.u[0];
|
||||||
|
|
||||||
nir_src empty = {
|
/* Clear out the source */
|
||||||
.is_ssa = true,
|
nir_instr_rewrite_src(instr, &arr->indirect, nir_src_for_ssa(NULL));
|
||||||
.ssa = NULL,
|
|
||||||
};
|
|
||||||
|
|
||||||
nir_instr_rewrite_src(instr, &arr->indirect, empty);
|
|
||||||
|
|
||||||
arr->deref_array_type = nir_deref_array_type_direct;
|
arr->deref_array_type = nir_deref_array_type_direct;
|
||||||
|
|
||||||
|
@@ -187,12 +187,10 @@ nir_opt_cse_instr(nir_instr *instr, struct cse_state *state)
|
|||||||
!exec_node_is_head_sentinel(node); node = node->prev) {
|
!exec_node_is_head_sentinel(node); node = node->prev) {
|
||||||
nir_instr *other = exec_node_data(nir_instr, node, node);
|
nir_instr *other = exec_node_data(nir_instr, node, node);
|
||||||
if (nir_instrs_equal(instr, other)) {
|
if (nir_instrs_equal(instr, other)) {
|
||||||
nir_src other_dest_src = {
|
nir_ssa_def *other_def = nir_instr_get_dest_ssa_def(other);
|
||||||
.is_ssa = true,
|
|
||||||
.ssa = nir_instr_get_dest_ssa_def(other),
|
|
||||||
};
|
|
||||||
nir_ssa_def_rewrite_uses(nir_instr_get_dest_ssa_def(instr),
|
nir_ssa_def_rewrite_uses(nir_instr_get_dest_ssa_def(instr),
|
||||||
other_dest_src, state->mem_ctx);
|
nir_src_for_ssa(other_def),
|
||||||
|
state->mem_ctx);
|
||||||
nir_instr_remove(instr);
|
nir_instr_remove(instr);
|
||||||
state->progress = true;
|
state->progress = true;
|
||||||
return;
|
return;
|
||||||
@@ -203,12 +201,10 @@ nir_opt_cse_instr(nir_instr *instr, struct cse_state *state)
|
|||||||
block != NULL; block = block->imm_dom) {
|
block != NULL; block = block->imm_dom) {
|
||||||
nir_foreach_instr_reverse(block, other) {
|
nir_foreach_instr_reverse(block, other) {
|
||||||
if (nir_instrs_equal(instr, other)) {
|
if (nir_instrs_equal(instr, other)) {
|
||||||
nir_src other_dest_src = {
|
nir_ssa_def *other_def = nir_instr_get_dest_ssa_def(other);
|
||||||
.is_ssa = true,
|
|
||||||
.ssa = nir_instr_get_dest_ssa_def(other),
|
|
||||||
};
|
|
||||||
nir_ssa_def_rewrite_uses(nir_instr_get_dest_ssa_def(instr),
|
nir_ssa_def_rewrite_uses(nir_instr_get_dest_ssa_def(instr),
|
||||||
other_dest_src, state->mem_ctx);
|
nir_src_for_ssa(other_def),
|
||||||
|
state->mem_ctx);
|
||||||
nir_instr_remove(instr);
|
nir_instr_remove(instr);
|
||||||
state->progress = true;
|
state->progress = true;
|
||||||
return;
|
return;
|
||||||
|
@@ -168,11 +168,9 @@ nir_opt_peephole_select_block(nir_block *block, void *void_state)
|
|||||||
phi->dest.ssa.num_components, phi->dest.ssa.name);
|
phi->dest.ssa.num_components, phi->dest.ssa.name);
|
||||||
sel->dest.write_mask = (1 << phi->dest.ssa.num_components) - 1;
|
sel->dest.write_mask = (1 << phi->dest.ssa.num_components) - 1;
|
||||||
|
|
||||||
nir_src sel_dest_src = {
|
nir_ssa_def_rewrite_uses(&phi->dest.ssa,
|
||||||
.is_ssa = true,
|
nir_src_for_ssa(&sel->dest.dest.ssa),
|
||||||
.ssa = &sel->dest.dest.ssa,
|
state->mem_ctx);
|
||||||
};
|
|
||||||
nir_ssa_def_rewrite_uses(&phi->dest.ssa, sel_dest_src, state->mem_ctx);
|
|
||||||
|
|
||||||
nir_instr_insert_before(&phi->instr, &sel->instr);
|
nir_instr_insert_before(&phi->instr, &sel->instr);
|
||||||
nir_instr_remove(&phi->instr);
|
nir_instr_remove(&phi->instr);
|
||||||
|
@@ -221,13 +221,11 @@ construct_value(const nir_search_value *value, nir_alu_type type,
|
|||||||
|
|
||||||
nir_instr_insert_before(instr, &alu->instr);
|
nir_instr_insert_before(instr, &alu->instr);
|
||||||
|
|
||||||
nir_alu_src val = {
|
nir_alu_src val;
|
||||||
.src.is_ssa = true,
|
val.src = nir_src_for_ssa(&alu->dest.dest.ssa);
|
||||||
.src.ssa = &alu->dest.dest.ssa,
|
val.negate = false;
|
||||||
.negate = false,
|
val.abs = false,
|
||||||
.abs = false,
|
memcpy(val.swizzle, identity_swizzle, sizeof val.swizzle);
|
||||||
.swizzle = { 0, 1, 2, 3 }
|
|
||||||
};
|
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
@@ -265,13 +263,11 @@ construct_value(const nir_search_value *value, nir_alu_type type,
|
|||||||
|
|
||||||
nir_instr_insert_before(instr, &load->instr);
|
nir_instr_insert_before(instr, &load->instr);
|
||||||
|
|
||||||
nir_alu_src val = {
|
nir_alu_src val;
|
||||||
.src.is_ssa = true,
|
val.src = nir_src_for_ssa(&load->def);
|
||||||
.src.ssa = &load->def,
|
val.negate = false;
|
||||||
.negate = false,
|
val.abs = false,
|
||||||
.abs = false,
|
memset(val.swizzle, 0, sizeof val.swizzle);
|
||||||
.swizzle = { 0, 0, 0, 0 } /* Splatted scalar */
|
|
||||||
};
|
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
@@ -314,12 +310,8 @@ nir_replace_instr(nir_alu_instr *instr, const nir_search_expression *search,
|
|||||||
&instr->instr, mem_ctx);
|
&instr->instr, mem_ctx);
|
||||||
nir_instr_insert_before(&instr->instr, &mov->instr);
|
nir_instr_insert_before(&instr->instr, &mov->instr);
|
||||||
|
|
||||||
nir_src replace_src = {
|
nir_ssa_def_rewrite_uses(&instr->dest.dest.ssa,
|
||||||
.is_ssa = true,
|
nir_src_for_ssa(&mov->dest.dest.ssa), mem_ctx);
|
||||||
.ssa = &mov->dest.dest.ssa,
|
|
||||||
};
|
|
||||||
|
|
||||||
nir_ssa_def_rewrite_uses(&instr->dest.dest.ssa, replace_src, mem_ctx);
|
|
||||||
|
|
||||||
/* We know this one has no more uses because we just rewrote them all,
|
/* We know this one has no more uses because we just rewrote them all,
|
||||||
* so we can remove it. The rest of the matched expression, however, we
|
* so we can remove it. The rest of the matched expression, however, we
|
||||||
|
Reference in New Issue
Block a user