spirv: do not set num_components for non-vectorized mbcnt_amd intrinsic
[mesa.git] / src / compiler / spirv / vtn_amd.c
index d893bd07a341789dfa16504893fac6abcbf11a98..f180e3bf0608fa84342716d38dfe70e386c863d3 100644 (file)
@@ -91,7 +91,8 @@ vtn_handle_amd_shader_ballot_instruction(struct vtn_builder *b, SpvOp ext_opcode
 
    nir_intrinsic_instr *intrin = nir_intrinsic_instr_create(b->nb.shader, op);
    nir_ssa_dest_init_for_type(&intrin->instr, &intrin->dest, dest_type, NULL);
-   intrin->num_components = intrin->dest.ssa.num_components;
+   if (nir_intrinsic_infos[op].src_components[0] == 0)
+      intrin->num_components = intrin->dest.ssa.num_components;
 
    for (unsigned i = 0; i < num_args; i++)
       intrin->src[i] = nir_src_for_ssa(vtn_ssa_value(b, w[i + 5])->def);