Lines Matching refs:deref
597 nir_deref_var *deref = ralloc(mem_ctx, nir_deref_var); in nir_deref_var_create() local
598 deref->deref.deref_type = nir_deref_type_var; in nir_deref_var_create()
599 deref->deref.child = NULL; in nir_deref_var_create()
600 deref->deref.type = var->type; in nir_deref_var_create()
601 deref->var = var; in nir_deref_var_create()
602 return deref; in nir_deref_var_create()
608 nir_deref_array *deref = ralloc(mem_ctx, nir_deref_array); in nir_deref_array_create() local
609 deref->deref.deref_type = nir_deref_type_array; in nir_deref_array_create()
610 deref->deref.child = NULL; in nir_deref_array_create()
611 deref->deref_array_type = nir_deref_array_type_direct; in nir_deref_array_create()
612 src_init(&deref->indirect); in nir_deref_array_create()
613 deref->base_offset = 0; in nir_deref_array_create()
614 return deref; in nir_deref_array_create()
620 nir_deref_struct *deref = ralloc(mem_ctx, nir_deref_struct); in nir_deref_struct_create() local
621 deref->deref.deref_type = nir_deref_type_struct; in nir_deref_struct_create()
622 deref->deref.child = NULL; in nir_deref_struct_create()
623 deref->index = field_index; in nir_deref_struct_create()
624 return deref; in nir_deref_struct_create()
628 nir_deref_var_clone(const nir_deref_var *deref, void *mem_ctx) in nir_deref_var_clone() argument
630 if (deref == NULL) in nir_deref_var_clone()
633 nir_deref_var *ret = nir_deref_var_create(mem_ctx, deref->var); in nir_deref_var_clone()
634 ret->deref.type = deref->deref.type; in nir_deref_var_clone()
635 if (deref->deref.child) in nir_deref_var_clone()
636 ret->deref.child = nir_deref_clone(deref->deref.child, ret); in nir_deref_var_clone()
641 deref_array_clone(const nir_deref_array *deref, void *mem_ctx) in deref_array_clone() argument
644 ret->base_offset = deref->base_offset; in deref_array_clone()
645 ret->deref_array_type = deref->deref_array_type; in deref_array_clone()
646 if (deref->deref_array_type == nir_deref_array_type_indirect) { in deref_array_clone()
647 nir_src_copy(&ret->indirect, &deref->indirect, mem_ctx); in deref_array_clone()
649 ret->deref.type = deref->deref.type; in deref_array_clone()
650 if (deref->deref.child) in deref_array_clone()
651 ret->deref.child = nir_deref_clone(deref->deref.child, ret); in deref_array_clone()
656 deref_struct_clone(const nir_deref_struct *deref, void *mem_ctx) in deref_struct_clone() argument
658 nir_deref_struct *ret = nir_deref_struct_create(mem_ctx, deref->index); in deref_struct_clone()
659 ret->deref.type = deref->deref.type; in deref_struct_clone()
660 if (deref->deref.child) in deref_struct_clone()
661 ret->deref.child = nir_deref_clone(deref->deref.child, ret); in deref_struct_clone()
666 nir_deref_clone(const nir_deref *deref, void *mem_ctx) in nir_deref_clone() argument
668 if (deref == NULL) in nir_deref_clone()
671 switch (deref->deref_type) { in nir_deref_clone()
673 return &nir_deref_var_clone(nir_deref_as_var(deref), mem_ctx)->deref; in nir_deref_clone()
675 return &deref_array_clone(nir_deref_as_array(deref), mem_ctx)->deref; in nir_deref_clone()
677 return &deref_struct_clone(nir_deref_as_struct(deref), mem_ctx)->deref; in nir_deref_clone()
690 deref_foreach_leaf_build_recur(nir_deref_var *deref, nir_deref *tail, in deref_foreach_leaf_build_recur() argument
707 return cb(deref, state); in deref_foreach_leaf_build_recur()
711 tmp.arr.deref.deref_type = nir_deref_type_array; in deref_foreach_leaf_build_recur()
712 tmp.arr.deref.type = glsl_get_array_element(tail->type); in deref_foreach_leaf_build_recur()
715 tail->child = &tmp.arr.deref; in deref_foreach_leaf_build_recur()
719 tmp.arr.deref.child = NULL; in deref_foreach_leaf_build_recur()
721 if (!deref_foreach_leaf_build_recur(deref, &tmp.arr.deref, cb, state)) in deref_foreach_leaf_build_recur()
727 tmp.str.deref.deref_type = nir_deref_type_struct; in deref_foreach_leaf_build_recur()
728 tail->child = &tmp.str.deref; in deref_foreach_leaf_build_recur()
732 tmp.arr.deref.child = NULL; in deref_foreach_leaf_build_recur()
733 tmp.str.deref.type = glsl_get_struct_field(tail->type, i); in deref_foreach_leaf_build_recur()
735 if (!deref_foreach_leaf_build_recur(deref, &tmp.arr.deref, cb, state)) in deref_foreach_leaf_build_recur()
753 deref_foreach_leaf_copy_recur(nir_deref_var *deref, nir_deref *tail, in deref_foreach_leaf_copy_recur() argument
765 tail->child = &c.arr.deref; in deref_foreach_leaf_copy_recur()
766 return deref_foreach_leaf_copy_recur(deref, &c.arr.deref, cb, state); in deref_foreach_leaf_copy_recur()
770 tail->child = &c.str.deref; in deref_foreach_leaf_copy_recur()
771 return deref_foreach_leaf_copy_recur(deref, &c.str.deref, cb, state); in deref_foreach_leaf_copy_recur()
781 return deref_foreach_leaf_build_recur(deref, tail, cb, state); in deref_foreach_leaf_copy_recur()
794 nir_deref_foreach_leaf(nir_deref_var *deref, in nir_deref_foreach_leaf() argument
797 nir_deref_var copy = *deref; in nir_deref_foreach_leaf()
798 return deref_foreach_leaf_copy_recur(©, ©.deref, cb, state); in nir_deref_foreach_leaf()
806 nir_deref_get_const_initializer_load(nir_shader *shader, nir_deref_var *deref) in nir_deref_get_const_initializer_load() argument
808 nir_constant *constant = deref->var->constant_initializer; in nir_deref_get_const_initializer_load()
811 const nir_deref *tail = &deref->deref; in nir_deref_get_const_initializer_load()
819 assert(arr->deref.child == NULL); in nir_deref_get_const_initializer_load()
1212 visit_deref_array_src(nir_deref_array *deref, nir_foreach_src_cb cb, in visit_deref_array_src() argument
1215 if (deref->deref_array_type == nir_deref_array_type_indirect) in visit_deref_array_src()
1216 return visit_src(&deref->indirect, cb, state); in visit_deref_array_src()
1221 visit_deref_src(nir_deref_var *deref, nir_foreach_src_cb cb, void *state) in visit_deref_src() argument
1223 nir_deref *cur = &deref->deref; in visit_deref_src()