Lines Matching refs:intr
117 lower_load_deref(nir_builder *b, nir_intrinsic_instr *intr)
119 assert(intr->dest.is_ssa);
121 b->cursor = nir_before_instr(&intr->instr);
123 nir_deref_instr *deref = nir_src_as_deref(intr->src[0]);
129 assert(intr->dest.is_ssa);
130 unsigned num_components = nir_dest_num_components(intr->dest);
131 unsigned bit_size = nir_dest_bit_size(intr->dest);
171 nir_ssa_def_rewrite_uses(&intr->dest.ssa, result);
172 nir_instr_remove(&intr->instr);
262 lower_load_ssbo(nir_builder *b, nir_intrinsic_instr *intr)
264 assert(intr->dest.is_ssa);
265 assert(intr->src[0].is_ssa);
266 assert(intr->src[1].is_ssa);
268 b->cursor = nir_before_instr(&intr->instr);
270 nir_ssa_def *buffer = intr->src[0].ssa;
271 nir_ssa_def *offset = nir_iand(b, intr->src[1].ssa, nir_imm_int(b, ~3));
272 enum gl_access_qualifier access = nir_intrinsic_access(intr);
273 unsigned bit_size = nir_dest_bit_size(intr->dest);
274 unsigned num_components = nir_dest_num_components(intr->dest);
302 nir_ssa_def *shift = nir_imul(b, nir_iand(b, intr->src[1].ssa, nir_imm_int(b, 3)),
315 nir_ssa_def_rewrite_uses(&intr->dest.ssa, result);
316 nir_instr_remove(&intr->instr);
321 lower_store_ssbo(nir_builder *b, nir_intrinsic_instr *intr)
323 b->cursor = nir_before_instr(&intr->instr);
325 assert(intr->src[0].is_ssa);
326 assert(intr->src[1].is_ssa);
327 assert(intr->src[2].is_ssa);
329 nir_ssa_def *val = intr->src[0].ssa;
330 nir_ssa_def *buffer = intr->src[1].ssa;
331 nir_ssa_def *offset = nir_iand(b, intr->src[2].ssa, nir_imm_int(b, ~3));
340 unsigned write_mask = nir_intrinsic_write_mask(intr);
384 nir_ssa_def *pos = nir_iand(b, intr->src[2].ssa, nir_imm_int(b, 3));
417 nir_instr_remove(&intr->instr);
437 lower_32b_offset_load(nir_builder *b, nir_intrinsic_instr *intr)
439 assert(intr->dest.is_ssa);
440 unsigned bit_size = nir_dest_bit_size(intr->dest);
441 unsigned num_components = nir_dest_num_components(intr->dest);
444 b->cursor = nir_before_instr(&intr->instr);
445 nir_intrinsic_op op = intr->intrinsic;
447 assert(intr->src[0].is_ssa);
448 nir_ssa_def *offset = intr->src[0].ssa;
450 offset = nir_iadd(b, offset, nir_imm_int(b, nir_intrinsic_base(intr)));
488 nir_ssa_def_rewrite_uses(&intr->dest.ssa, result);
489 nir_instr_remove(&intr->instr);
544 lower_32b_offset_store(nir_builder *b, nir_intrinsic_instr *intr)
546 assert(intr->src[0].is_ssa);
547 unsigned num_components = nir_src_num_components(intr->src[0]);
548 unsigned bit_size = nir_src_bit_size(intr->src[0]);
551 b->cursor = nir_before_instr(&intr->instr);
552 nir_intrinsic_op op = intr->intrinsic;
554 nir_ssa_def *offset = intr->src[1].ssa;
556 offset = nir_iadd(b, offset, nir_imm_int(b, nir_intrinsic_base(intr)));
566 comps[i] = nir_channel(b, intr->src[0].ssa, i);
589 nir_instr_remove(&intr->instr);
618 nir_intrinsic_instr *intr = nir_instr_as_intrinsic(use_src->parent_instr);
619 if (intr->intrinsic != nir_intrinsic_load_deref)
713 lower_load_ubo(nir_builder *b, nir_intrinsic_instr *intr)
715 assert(intr->dest.is_ssa);
716 assert(intr->src[0].is_ssa);
717 assert(intr->src[1].is_ssa);
719 b->cursor = nir_before_instr(&intr->instr);
722 build_load_ubo_dxil(b, intr->src[0].ssa, intr->src[1].ssa,
723 nir_dest_num_components(intr->dest),
724 nir_dest_bit_size(intr->dest));
726 nir_ssa_def_rewrite_uses(&intr->dest.ssa, result);
727 nir_instr_remove(&intr->instr);
748 nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
750 switch (intr->intrinsic) {
752 progress |= lower_load_deref(&b, intr);
756 progress |= lower_32b_offset_load(&b, intr);
759 progress |= lower_load_ssbo(&b, intr);
762 progress |= lower_load_ubo(&b, intr);
766 progress |= lower_32b_offset_store(&b, intr);
769 progress |= lower_store_ssbo(&b, intr);
782 lower_shared_atomic(nir_builder *b, nir_intrinsic_instr *intr,
785 b->cursor = nir_before_instr(&intr->instr);
787 assert(intr->src[0].is_ssa);
789 nir_iadd(b, intr->src[0].ssa, nir_imm_int(b, nir_intrinsic_base(intr)));
794 assert(intr->src[1].is_ssa);
795 atomic->src[1] = nir_src_for_ssa(intr->src[1].ssa);
797 assert(intr->src[2].is_ssa);
798 atomic->src[2] = nir_src_for_ssa(intr->src[2].ssa);
804 nir_ssa_def_rewrite_uses(&intr->dest.ssa, &atomic->dest.ssa);
805 nir_instr_remove(&intr->instr);
826 nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
828 switch (intr->intrinsic) {
832 progress |= lower_shared_atomic(&b, intr, \
1004 lower_memcpy_deref(nir_builder *b, nir_intrinsic_instr *intr)
1006 nir_deref_instr *dst_deref = nir_src_as_deref(intr->src[0]);
1007 nir_deref_instr *src_deref = nir_src_as_deref(intr->src[1]);
1008 assert(intr->src[2].is_ssa);
1009 nir_ssa_def *num_bytes = intr->src[2].ssa;
1013 b->cursor = nir_after_instr(&intr->instr);
1041 nir_instr_remove(&intr->instr);
1063 nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
1065 if (intr->intrinsic == nir_intrinsic_memcpy_deref)
1066 progress |= lower_memcpy_deref(&b, intr);
1418 lower_load_local_group_size(nir_builder *b, nir_intrinsic_instr *intr)
1420 b->cursor = nir_after_instr(&intr->instr);
1428 nir_ssa_def_rewrite_uses(&intr->dest.ssa, size);
1429 nir_instr_remove(&intr->instr);
1437 nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
1438 switch (intr->intrinsic) {
1440 lower_load_local_group_size(b, intr);
1669 nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
1670 if (intr->intrinsic == nir_intrinsic_load_front_face)
1673 if (intr->intrinsic == nir_intrinsic_load_deref) {
1674 nir_deref_instr *deref = nir_instr_as_deref(intr->src[0].ssa->parent_instr);
1687 nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
1689 if (intr->intrinsic == nir_intrinsic_load_deref) {
1690 nir_deref_instr *deref = nir_instr_as_deref(intr->src[0].ssa->parent_instr);
1699 intr->dest.ssa.bit_size = 32;
1700 return nir_i2b1(b, &intr->dest.ssa);
1716 nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
1718 switch (intr->intrinsic) {
1737 nir_ssa_def *result = nir_build_load_input(b, intr->dest.ssa.num_components, intr->dest.ssa.bit_size, nir_imm_int(b, 0),
1739 nir_ssa_def_rewrite_uses(&intr->dest.ssa, result);
2053 nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
2055 if (intr->intrinsic != nir_intrinsic_discard &&
2056 intr->intrinsic != nir_intrinsic_terminate &&
2057 intr->intrinsic != nir_intrinsic_discard_if &&
2058 intr->intrinsic != nir_intrinsic_terminate_if)
2072 nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
2074 if (intr->intrinsic != nir_intrinsic_discard &&
2075 intr->intrinsic != nir_intrinsic_terminate &&
2076 intr->intrinsic != nir_intrinsic_discard_if &&
2077 intr->intrinsic != nir_intrinsic_terminate_if)
2081 if (intr->intrinsic == nir_intrinsic_discard ||
2082 intr->intrinsic == nir_intrinsic_terminate) {
2085 assert(intr->src[0].is_ssa);
2086 nir_demote_if(builder, intr->src[0].ssa);
2115 nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
2116 if (intr->intrinsic != nir_intrinsic_store_output)
2119 nir_io_semantics io = nir_intrinsic_io_semantics(intr);
2123 nir_ssa_def *src = intr->src[0].ssa;
2124 unsigned write_mask = nir_intrinsic_write_mask(intr);
2129 unsigned first_comp = nir_intrinsic_component(intr);
2139 nir_instr_rewrite_src_ssa(instr, &intr->src[0], nir_vec(b, channels, 4));
2140 nir_intrinsic_set_component(intr, 0);
2141 nir_intrinsic_set_write_mask(intr, 0xf);