mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 08:40:11 +01:00
nv50/ir: Support vector movs
nir_opt_mov and nir_op_vecN are only the same if the mov is only a
single component. Otherwise the vec loop will try to access src[c]
where c > 0 which breaks for nir_op_mov. It's uncommon but scalar
back-ends can see vector movs so we need to handle this correctly.
Fixes: 6513c675ad ("nv50/ir/nir: implement nir_alu_instr handling")
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24167>
This commit is contained in:
parent
3982445728
commit
259ba104f7
1 changed files with 7 additions and 1 deletions
|
|
@ -2591,7 +2591,13 @@ Converter::visit(nir_alu_instr *insn)
|
|||
i->sType = sTypes[0];
|
||||
break;
|
||||
}
|
||||
case nir_op_mov:
|
||||
case nir_op_mov: {
|
||||
LValues &newDefs = convert(&insn->dest);
|
||||
for (LValues::size_type c = 0u; c < newDefs.size(); ++c) {
|
||||
mkMov(newDefs[c], getSrc(&insn->src[0], c), dType);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case nir_op_vec2:
|
||||
case nir_op_vec3:
|
||||
case nir_op_vec4:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue