diff --git a/.pick_status.json b/.pick_status.json index df46ca00160..d1e323594d2 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2314,7 +2314,7 @@ "description": "lima: ppir: index SSA nodes the same way as we index registers", "nominated": true, "nomination_type": 4, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/lima/ir/pp/nir.c b/src/gallium/drivers/lima/ir/pp/nir.c index edebab28167..c7701cd4fcf 100644 --- a/src/gallium/drivers/lima/ir/pp/nir.c +++ b/src/gallium/drivers/lima/ir/pp/nir.c @@ -98,7 +98,7 @@ static void ppir_node_add_src(ppir_compiler *comp, ppir_node *node, nir_intrinsic_instr *load = nir_load_reg_for_def(ns->ssa); if (!load) { /* is ssa */ - child = comp->var_nodes[ns->ssa->index]; + child = comp->var_nodes[ns->ssa->index << 2]; if (child->op != ppir_op_undef) ppir_node_add_dep(node, child, ppir_dep_src); } @@ -444,7 +444,7 @@ static bool ppir_emit_intrinsic(ppir_block *block, nir_instr *ni) } if (!block->comp->uses_discard) { - node = block->comp->var_nodes[instr->src->ssa->index]; + node = block->comp->var_nodes[instr->src->ssa->index << 2]; assert(node); switch (node->op) { case ppir_op_load_uniform: @@ -598,7 +598,7 @@ static bool ppir_emit_tex(ppir_block *block, nir_instr *ni) FALLTHROUGH; case nir_tex_src_coord: { nir_src *ns = &instr->src[i].src; - ppir_node *child = block->comp->var_nodes[ns->ssa->index]; + ppir_node *child = block->comp->var_nodes[ns->ssa->index << 2]; if (child->op == ppir_op_load_varying) { /* If the successor is load_texture, promote it to load_coords */ nir_tex_src *nts = (nir_tex_src *)ns; diff --git a/src/gallium/drivers/lima/ir/pp/node.c b/src/gallium/drivers/lima/ir/pp/node.c index d5c83025c4f..ef39f7c9eb4 100644 --- a/src/gallium/drivers/lima/ir/pp/node.c +++ b/src/gallium/drivers/lima/ir/pp/node.c @@ -381,7 +381,7 @@ void *ppir_node_create(ppir_block *block, ppir_op op, int index, unsigned mask) comp->var_nodes[(index << 2) + u_bit_scan(&mask)] = node; snprintf(node->name, sizeof(node->name), "reg%d", index); } else { - comp->var_nodes[index] = node; + comp->var_nodes[index << 2] = node; snprintf(node->name, sizeof(node->name), "ssa%d", index); } }