diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index beeaa9adb21..135f8711a38 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -48,8 +48,15 @@ static uint8_t si_vectorize_callback(const nir_instr *instr, const void *data) return 0; nir_alu_instr *alu = nir_instr_as_alu(instr); - if (nir_dest_bit_size(alu->dest.dest) == 16) - return 2; + if (nir_dest_bit_size(alu->dest.dest) == 16) { + switch (alu->op) { + case nir_op_unpack_32_2x16_split_x: + case nir_op_unpack_32_2x16_split_y: + return 1; + default: + return 2; + } + } return 1; }