Lines Matching refs:vec
533 nir_vector_extract(nir_builder *b, nir_ssa_def *vec, nir_ssa_def *c)
538 if (c_const < vec->num_components)
539 return nir_channel(b, vec, c_const);
541 return nir_ssa_undef(b, 1, vec->bit_size);
544 for (unsigned i = 0; i < vec->num_components; i++)
545 comps[i] = nir_channel(b, vec, i);
546 return nir_select_from_ssa_def_array(b, comps, vec->num_components, c);
550 /** Replaces the component of `vec` specified by `c` with `scalar` */
552 nir_vector_insert_imm(nir_builder *b, nir_ssa_def *vec,
556 assert(c < vec->num_components);
558 nir_op vec_op = nir_op_vec(vec->num_components);
561 for (unsigned i = 0; i < vec->num_components; i++) {
566 vec_instr->src[i].src = nir_src_for_ssa(vec);
574 /** Replaces the component of `vec` specified by `c` with `scalar` */
576 nir_vector_insert(nir_builder *b, nir_ssa_def *vec, nir_ssa_def *scalar,
585 if (c_const < vec->num_components)
586 return nir_vector_insert_imm(b, vec, scalar, c_const);
588 return vec;
594 nir_build_imm(b, vec->num_components,
601 return nir_bcsel(b, nir_ieq(b, c, per_comp_idx), scalar, vec);