Lines Matching defs:intrin
566 split_unaligned_load(nir_builder *b, nir_intrinsic_instr *intrin, unsigned alignment)
568 enum gl_access_qualifier access = nir_intrinsic_access(intrin);
570 unsigned comp_size = intrin->dest.ssa.bit_size / 8;
571 unsigned num_comps = intrin->dest.ssa.num_components;
573 b->cursor = nir_before_instr(&intrin->instr);
575 nir_deref_instr *ptr = nir_src_as_deref(intrin->src[0]);
586 nir_ssa_def *new_dest = nir_extract_bits(b, srcs, num_loads, 0, num_comps, intrin->dest.ssa.bit_size);
587 nir_ssa_def_rewrite_uses(&intrin->dest.ssa, new_dest);
588 nir_instr_remove(&intrin->instr);
592 split_unaligned_store(nir_builder *b, nir_intrinsic_instr *intrin, unsigned alignment)
594 enum gl_access_qualifier access = nir_intrinsic_access(intrin);
596 assert(intrin->src[1].is_ssa);
597 nir_ssa_def *value = intrin->src[1].ssa;
601 b->cursor = nir_before_instr(&intrin->instr);
603 nir_deref_instr *ptr = nir_src_as_deref(intrin->src[0]);
615 nir_instr_remove(&intrin->instr);
634 nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
635 if (intrin->intrinsic != nir_intrinsic_load_deref &&
636 intrin->intrinsic != nir_intrinsic_store_deref)
638 nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]);
652 if (intrin->intrinsic == nir_intrinsic_load_deref) {
653 assert(intrin->dest.is_ssa);
654 val = &intrin->dest.ssa;
656 assert(intrin->src[1].is_ssa);
657 val = intrin->src[1].ssa;
667 if (intrin->intrinsic == nir_intrinsic_load_deref)
668 split_unaligned_load(&b, intrin, alignment);
670 split_unaligned_store(&b, intrin, alignment);