lima/ppir: handle all node types in ppir_node_replace_child
ppir_node_replace_child is used by the const lowering routine in ppir. All types need to be handled here, otherwise the src node is not updated properly when one of the lowered nodes is a const, which results in, for example, regalloc not assigning registers correctly. Signed-off-by: Erico Nunes <nunes.erico@gmail.com> Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
This commit is contained in:
parent
2292f0c4b5
commit
32ced14bad
|
@ -394,14 +394,42 @@ static void _ppir_node_replace_child(ppir_src *src, ppir_node *old_child, ppir_n
|
|||
|
||||
void ppir_node_replace_child(ppir_node *parent, ppir_node *old_child, ppir_node *new_child)
|
||||
{
|
||||
if (parent->type == ppir_node_type_alu) {
|
||||
switch (parent->type) {
|
||||
case ppir_node_type_alu:
|
||||
{
|
||||
ppir_alu_node *alu = ppir_node_to_alu(parent);
|
||||
for (int i = 0; i < alu->num_src; i++)
|
||||
_ppir_node_replace_child(alu->src + i, old_child, new_child);
|
||||
break;
|
||||
}
|
||||
else if (parent->type == ppir_node_type_store) {
|
||||
case ppir_node_type_branch:
|
||||
{
|
||||
ppir_branch_node *branch = ppir_node_to_branch(parent);
|
||||
for (int i = 0; i < 2; i++)
|
||||
_ppir_node_replace_child(branch->src + i, old_child, new_child);
|
||||
break;
|
||||
}
|
||||
case ppir_node_type_load:
|
||||
{
|
||||
ppir_load_node *load = ppir_node_to_load(parent);
|
||||
_ppir_node_replace_child(&load->src, old_child, new_child);
|
||||
break;
|
||||
}
|
||||
case ppir_node_type_load_texture:
|
||||
{
|
||||
ppir_load_texture_node *load_texture = ppir_node_to_load_texture(parent);
|
||||
_ppir_node_replace_child(&load_texture->src_coords, old_child, new_child);
|
||||
break;
|
||||
}
|
||||
case ppir_node_type_store:
|
||||
{
|
||||
ppir_store_node *store = ppir_node_to_store(parent);
|
||||
_ppir_node_replace_child(&store->src, old_child, new_child);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
ppir_debug("unknown node type in %s\n", __func__);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue