pan/bi: Fix unpack_32_2x16 definition
This got messed up when scalarizing the IR. Fix the definition of the opcode to
return (instead of break, asserting out) and to respect the swizzle (instead of
failing validation). Noticed when bringing up OpenCL on Valhall.
Fixes: 5febeae58e ("pan/bi: Emit collect and split")
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17222>
This commit is contained in:
committed by
Marge Bot
parent
6ee9002ff6
commit
9bd7570e96
@@ -2318,9 +2318,16 @@ bi_emit_alu(bi_builder *b, nir_alu_instr *instr)
|
||||
case nir_op_vec16:
|
||||
unreachable("should've been lowered");
|
||||
|
||||
case nir_op_unpack_32_2x16:
|
||||
bi_mov_i32_to(b, dst, bi_src_index(&instr->src[0].src));
|
||||
break;
|
||||
case nir_op_unpack_32_2x16: {
|
||||
/* Should have been scalarized */
|
||||
assert(comps == 2 && sz == 16);
|
||||
|
||||
bi_index vec = bi_src_index(&instr->src[0].src);
|
||||
unsigned chan = instr->src[0].swizzle[0];
|
||||
|
||||
bi_mov_i32_to(b, dst, bi_extract(b, vec, chan));
|
||||
return;
|
||||
}
|
||||
|
||||
case nir_op_unpack_64_2x32_split_x:
|
||||
bi_mov_i32_to(b, dst, bi_extract(b, bi_src_index(&instr->src[0].src), 0));
|
||||
|
||||
Reference in New Issue
Block a user