Lines Matching refs:deref
176 get_io_offset(nir_builder *b, nir_deref_instr *deref, in get_io_offset() argument
182 nir_deref_path_init(&path, deref, NULL); in get_io_offset()
621 nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]); in nir_lower_io_block() local
622 if (!nir_deref_mode_is_one_of(deref, state->modes)) in nir_lower_io_block()
625 nir_variable *var = nir_deref_instr_get_variable(deref); in nir_lower_io_block()
638 if (nir_deref_instr_is_known_out_of_bounds(deref)) { in nir_lower_io_block()
669 offset = get_io_offset(b, deref, per_vertex ? &vertex_index : NULL, in nir_lower_io_block()
678 component_offset, deref->type); in nir_lower_io_block()
683 component_offset, deref->type); in nir_lower_io_block()
692 component_offset, deref->type); in nir_lower_io_block()
1076 nir_get_explicit_deref_range(nir_deref_instr *deref, in nir_get_explicit_deref_range() argument
1082 uint32_t range = glsl_get_explicit_size(deref->type, false); in nir_get_explicit_deref_range()
1085 nir_deref_instr *parent = nir_deref_instr_parent(deref); in nir_get_explicit_deref_range()
1087 switch (deref->deref_type) { in nir_get_explicit_deref_range()
1091 const unsigned stride = nir_deref_instr_array_stride(deref); in nir_get_explicit_deref_range()
1098 if (deref->deref_type != nir_deref_type_array_wildcard && in nir_get_explicit_deref_range()
1099 nir_src_is_const(deref->arr.index)) { in nir_get_explicit_deref_range()
1100 base += stride * nir_src_as_uint(deref->arr.index); in nir_get_explicit_deref_range()
1113 base += glsl_get_struct_field_offset(parent->type, deref->strct.index); in nir_get_explicit_deref_range()
1118 nir_instr *parent_instr = deref->parent.ssa->parent_instr; in nir_get_explicit_deref_range()
1169 deref = parent; in nir_get_explicit_deref_range()
1203 nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]); in build_explicit_io_load() local
1349 nir_variable *var = nir_deref_instr_get_variable(deref); in build_explicit_io_load()
1365 nir_get_explicit_deref_range(deref, addr_format, &base, &range); in build_explicit_io_load()
1688 nir_explicit_io_address_from_deref(nir_builder *b, nir_deref_instr *deref, in nir_explicit_io_address_from_deref() argument
1692 assert(deref->dest.is_ssa); in nir_explicit_io_address_from_deref()
1693 switch (deref->deref_type) { in nir_explicit_io_address_from_deref()
1695 return build_addr_for_var(b, deref->var, addr_format); in nir_explicit_io_address_from_deref()
1698 unsigned stride = nir_deref_instr_array_stride(deref); in nir_explicit_io_address_from_deref()
1701 nir_ssa_def *index = nir_ssa_for_src(b, deref->arr.index, 1); in nir_explicit_io_address_from_deref()
1703 return build_addr_iadd(b, base_addr, addr_format, deref->modes, in nir_explicit_io_address_from_deref()
1708 nir_ssa_def *index = nir_ssa_for_src(b, deref->arr.index, 1); in nir_explicit_io_address_from_deref()
1710 unsigned stride = nir_deref_instr_array_stride(deref); in nir_explicit_io_address_from_deref()
1711 return build_addr_iadd(b, base_addr, addr_format, deref->modes, in nir_explicit_io_address_from_deref()
1720 nir_deref_instr *parent = nir_deref_instr_parent(deref); in nir_explicit_io_address_from_deref()
1722 deref->strct.index); in nir_explicit_io_address_from_deref()
1725 deref->modes, offset); in nir_explicit_io_address_from_deref()
1744 nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]); in nir_lower_explicit_io_instr() local
1745 unsigned vec_stride = glsl_get_explicit_stride(deref->type); in nir_lower_explicit_io_instr()
1746 unsigned scalar_size = type_scalar_size_bytes(deref->type); in nir_lower_explicit_io_instr()
1747 assert(vec_stride == 0 || glsl_type_is_vector(deref->type)); in nir_lower_explicit_io_instr()
1751 if (!nir_get_explicit_deref_align(deref, true, &align_mul, &align_offset)) { in nir_lower_explicit_io_instr()
1765 deref->modes, in nir_lower_explicit_io_instr()
1768 addr_format, deref->modes, in nir_lower_explicit_io_instr()
1777 deref->modes, align_mul, align_offset, in nir_lower_explicit_io_instr()
1795 deref->modes, in nir_lower_explicit_io_instr()
1798 deref->modes, align_mul, in nir_lower_explicit_io_instr()
1804 deref->modes, align_mul, align_offset, in nir_lower_explicit_io_instr()
1812 deref->modes, in nir_lower_explicit_io_instr()
1824 deref->modes, align_mul, align_offset, in nir_lower_explicit_io_instr()
1831 build_explicit_io_atomic(b, intrin, addr, addr_format, deref->modes); in nir_lower_explicit_io_instr()
1841 nir_get_explicit_deref_align(nir_deref_instr *deref, in nir_get_explicit_deref_align() argument
1846 if (deref->deref_type == nir_deref_type_var) { in nir_get_explicit_deref_align()
1855 *align_offset = deref->var->data.driver_location % 256; in nir_get_explicit_deref_align()
1860 if (deref->deref_type == nir_deref_type_cast && deref->cast.align_mul > 0) { in nir_get_explicit_deref_align()
1861 *align_mul = deref->cast.align_mul; in nir_get_explicit_deref_align()
1862 *align_offset = deref->cast.align_offset; in nir_get_explicit_deref_align()
1867 nir_deref_instr *parent = nir_deref_instr_parent(deref); in nir_get_explicit_deref_align()
1869 assert(deref->deref_type == nir_deref_type_cast); in nir_get_explicit_deref_align()
1872 unsigned type_align = glsl_get_explicit_alignment(deref->type); in nir_get_explicit_deref_align()
1889 switch (deref->deref_type) { in nir_get_explicit_deref_align()
1896 const unsigned stride = nir_deref_instr_array_stride(deref); in nir_get_explicit_deref_align()
1900 if (deref->deref_type != nir_deref_type_array_wildcard && in nir_get_explicit_deref_align()
1901 nir_src_is_const(deref->arr.index)) { in nir_get_explicit_deref_align()
1902 unsigned offset = nir_src_as_uint(deref->arr.index) * stride; in nir_get_explicit_deref_align()
1917 deref->strct.index); in nir_get_explicit_deref_align()
1928 assert(deref->cast.align_mul == 0); in nir_get_explicit_deref_align()
1938 lower_explicit_io_deref(nir_builder *b, nir_deref_instr *deref, in lower_explicit_io_deref() argument
1946 assert(list_is_empty(&deref->dest.ssa.if_uses)); in lower_explicit_io_deref()
1947 if (list_is_empty(&deref->dest.ssa.uses)) { in lower_explicit_io_deref()
1948 nir_instr_remove(&deref->instr); in lower_explicit_io_deref()
1952 b->cursor = nir_after_instr(&deref->instr); in lower_explicit_io_deref()
1955 if (deref->deref_type != nir_deref_type_var) { in lower_explicit_io_deref()
1956 assert(deref->parent.is_ssa); in lower_explicit_io_deref()
1957 base_addr = deref->parent.ssa; in lower_explicit_io_deref()
1960 nir_ssa_def *addr = nir_explicit_io_address_from_deref(b, deref, base_addr, in lower_explicit_io_deref()
1962 assert(addr->bit_size == deref->dest.ssa.bit_size); in lower_explicit_io_deref()
1963 assert(addr->num_components == deref->dest.ssa.num_components); in lower_explicit_io_deref()
1965 nir_instr_remove(&deref->instr); in lower_explicit_io_deref()
1966 nir_ssa_def_rewrite_uses(&deref->dest.ssa, nir_src_for_ssa(addr)); in lower_explicit_io_deref()
1983 nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]); in lower_explicit_io_array_length() local
1985 assert(glsl_type_is_array(deref->type)); in lower_explicit_io_array_length()
1986 assert(glsl_get_length(deref->type) == 0); in lower_explicit_io_array_length()
1987 assert(nir_deref_mode_is(deref, nir_var_mem_ssbo)); in lower_explicit_io_array_length()
1988 unsigned stride = glsl_get_explicit_stride(deref->type); in lower_explicit_io_array_length()
1991 nir_ssa_def *addr = &deref->dest.ssa; in lower_explicit_io_array_length()
2052 nir_deref_instr *deref = nir_instr_as_deref(instr); in nir_lower_explicit_io_impl() local
2053 if (nir_deref_mode_is_in_set(deref, modes)) { in nir_lower_explicit_io_impl()
2054 lower_explicit_io_deref(&b, deref, addr_format); in nir_lower_explicit_io_impl()
2081 nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]); in nir_lower_explicit_io_impl() local
2082 if (nir_deref_mode_is_in_set(deref, modes)) { in nir_lower_explicit_io_impl()
2090 nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]); in nir_lower_explicit_io_impl() local
2091 if (nir_deref_mode_is_in_set(deref, modes)) { in nir_lower_explicit_io_impl()
2099 nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]); in nir_lower_explicit_io_impl() local
2100 if (nir_deref_mode_is_in_set(deref, modes)) { in nir_lower_explicit_io_impl()
2189 nir_deref_instr *deref = nir_instr_as_deref(instr); in nir_lower_vars_to_explicit_types_impl() local
2190 if (!nir_deref_mode_is_in_set(deref, modes)) in nir_lower_vars_to_explicit_types_impl()
2195 glsl_get_explicit_type_for_size_align(deref->type, type_info, &size, &alignment); in nir_lower_vars_to_explicit_types_impl()
2196 if (new_type != deref->type) { in nir_lower_vars_to_explicit_types_impl()
2198 deref->type = new_type; in nir_lower_vars_to_explicit_types_impl()
2200 if (deref->deref_type == nir_deref_type_cast) { in nir_lower_vars_to_explicit_types_impl()
2203 if (new_stride != deref->cast.ptr_stride) { in nir_lower_vars_to_explicit_types_impl()
2204 deref->cast.ptr_stride = new_stride; in nir_lower_vars_to_explicit_types_impl()