Home
last modified time | relevance | path

Searched refs:deref (Results 1 – 25 of 262) sorted by relevance

1234567891011

/external/mesa3d/src/compiler/glsl/
Dlower_buffer_access.cpp58 ir_dereference *deref, in emit_access() argument
66 if (deref->type->is_struct()) { in emit_access()
69 for (unsigned i = 0; i < deref->type->length; i++) { in emit_access()
71 &deref->type->fields.structure[i]; in emit_access()
73 new(mem_ctx) ir_dereference_record(deref->clone(mem_ctx, NULL), in emit_access()
96 if (deref->type->is_array()) { in emit_access()
98 deref->type->fields.array->std430_array_stride(row_major) : in emit_access()
99 glsl_align(deref->type->fields.array->std140_size(row_major), 16); in emit_access()
101 for (unsigned i = 0; i < deref->type->length; i++) { in emit_access()
104 new(mem_ctx) ir_dereference_array(deref->clone(mem_ctx, NULL), in emit_access()
[all …]
Dgl_nir_lower_buffers.c33 get_block_array_index(nir_builder *b, nir_deref_instr *deref, in get_block_array_index() argument
45 while (deref->deref_type == nir_deref_type_array) { in get_block_array_index()
46 nir_deref_instr *parent = nir_deref_instr_parent(deref); in get_block_array_index()
50 if (nir_src_is_const(deref->arr.index)) { in get_block_array_index()
51 unsigned arr_index = nir_src_as_uint(deref->arr.index); in get_block_array_index()
59 nir_ssa_def *arr_index = nir_ssa_for_src(b, deref->arr.index, 1); in get_block_array_index()
72 deref = parent; in get_block_array_index()
75 assert(deref->deref_type == nir_deref_type_var); in get_block_array_index()
76 binding += deref->var->data.binding; in get_block_array_index()
78 glsl_get_type_name(deref->var->interface_type), in get_block_array_index()
[all …]
Dlower_vector_derefs.cpp62 ir_dereference_array *const deref = (ir_dereference_array *) ir->lhs; in visit_enter() local
63 if (!deref->array->type->is_vector()) in visit_enter()
71 ir_variable *var = deref->variable_referenced(); in visit_enter()
76 ir_rvalue *const new_lhs = deref->array; in visit_enter()
80 deref->array_index->constant_expression_value(mem_ctx); in visit_enter()
83 deref->variable_referenced()->data.mode == ir_var_shader_out) { in visit_enter()
101 factory.make_temp(deref->array_index->type, "index_tmp"); in visit_enter()
102 factory.emit(assign(arr_index, deref->array_index)); in visit_enter()
106 ir_constant::zero(factory.mem_ctx, deref->array_index->type); in visit_enter()
135 deref->array_index); in visit_enter()
[all …]
Dlower_xfb_varying.cpp166 ir_dereference **deref, in get_deref() argument
171 return (*deref != NULL); in get_deref()
179 *deref = new(ctx) ir_dereference_array(*deref, new(ctx) ir_constant(index)); in get_deref()
181 return get_deref(ctx, endptr + 1, shader, deref, type); in get_deref()
187 *deref = new(ctx) ir_dereference_record(*deref, field); in get_deref()
192 return get_deref(ctx, name, shader, deref, type); in get_deref()
205 *deref = new (ctx) ir_dereference_variable(toplevel_var); in get_deref()
207 return get_deref(ctx, name, shader, deref, type); in get_deref()
218 ir_dereference *deref = NULL; in lower_xfb_varying() local
221 if (!get_deref(mem_ctx, old_var_name, shader, &deref, &type)) { in lower_xfb_varying()
[all …]
Dlower_shared_reference.cpp75 void insert_buffer_access(void *mem_ctx, ir_dereference *deref,
91 ir_call *shared_store(void *mem_ctx, ir_rvalue *deref, ir_rvalue *offset,
128 ir_dereference *deref = (*rvalue)->as_dereference(); in handle_rvalue() local
129 if (!deref) in handle_rvalue()
132 ir_variable *var = deref->variable_referenced(); in handle_rvalue()
147 setup_buffer_access(mem_ctx, deref, in handle_rvalue()
166 deref = new(mem_ctx) ir_dereference_variable(load_var); in handle_rvalue()
168 emit_access(mem_ctx, false, deref, load_offset, const_offset, row_major, in handle_rvalue()
171 *rvalue = deref; in handle_rvalue()
186 ir_dereference *deref = ir->lhs->as_dereference(); in handle_assignment() local
[all …]
Dlower_ubo_reference.cpp64 ir_rvalue *deref,
79 void write_to_memory(void *mem_ctx, ir_dereference *deref, ir_variable *var,
81 ir_call *ssbo_store(void *mem_ctx, ir_rvalue *deref, ir_rvalue *offset,
92 void insert_buffer_access(void *mem_ctx, ir_dereference *deref,
106 unsigned calculate_unsized_array_stride(ir_dereference *deref,
276 ir_rvalue *deref, in setup_for_load_or_store() argument
287 deref, &nonconst_block_index); in setup_for_load_or_store()
329 setup_buffer_access(mem_ctx, deref, offset, const_offset, row_major, in setup_for_load_or_store()
339 ir_dereference *deref = (*rvalue)->as_dereference(); in handle_rvalue() local
340 if (!deref) in handle_rvalue()
[all …]
Dopt_function_inlining.cpp113 ir_save_lvalue_visitor::visit_enter(ir_dereference_array *deref) in visit_enter() argument
115 if (deref->array_index->ir_type != ir_type_constant) { in visit_enter()
116 void *ctx = ralloc_parent(deref); in visit_enter()
120 index = new(ctx) ir_variable(deref->array_index->type, "saved_idx", ir_var_temporary); in visit_enter()
124 deref->array_index); in visit_enter()
127 deref->array_index = new(ctx) ir_dereference_variable(index); in visit_enter()
130 deref->array->accept(this); in visit_enter()
254 ir_dereference *deref = param->as_dereference(); in generate_inline() local
256 do_variable_replacement(&new_instructions, sig_param, deref); in generate_inline()
365 void replace_deref(ir_dereference **deref);
[all …]
/external/mesa3d/src/compiler/nir/
Dnir_lower_locals_to_regs.c50 for (const nir_deref_instr *deref = void_deref; deref; in hash_deref() local
51 deref = nir_deref_instr_parent(deref)) { in hash_deref()
52 switch (deref->deref_type) { in hash_deref()
54 return XXH32(&deref->var, sizeof(deref->var), hash); in hash_deref()
60 hash = XXH32(&deref->strct.index, sizeof(deref->strct.index), hash); in hash_deref()
100 get_reg_for_deref(nir_deref_instr *deref, struct locals_to_regs_state *state) in get_reg_for_deref() argument
102 uint32_t hash = hash_deref(deref); in get_reg_for_deref()
104 assert(nir_deref_instr_get_variable(deref)->constant_initializer == NULL && in get_reg_for_deref()
105 nir_deref_instr_get_variable(deref)->pointer_initializer == NULL); in get_reg_for_deref()
108 _mesa_hash_table_search_pre_hashed(state->regs_table, hash, deref); in get_reg_for_deref()
[all …]
Dnir_deref.c44 nir_deref_instr *deref, void *mem_ctx) in nir_deref_path_init() argument
46 assert(deref != NULL); in nir_deref_path_init()
59 for (nir_deref_instr *d = deref; d; d = nir_deref_instr_parent(d)) { in nir_deref_path_init()
82 for (nir_deref_instr *d = deref; d; d = nir_deref_instr_parent(d)) { in nir_deref_path_init()
157 nir_deref_instr_has_complex_use(nir_deref_instr *deref) in nir_deref_instr_has_complex_use() argument
159 nir_foreach_use(use_src, &deref->dest.ssa) { in nir_deref_instr_has_complex_use()
228 nir_foreach_if_use(use, &deref->dest.ssa) in nir_deref_instr_has_complex_use()
243 nir_deref_instr_array_stride(nir_deref_instr *deref) in nir_deref_instr_array_stride() argument
245 switch (deref->deref_type) { in nir_deref_instr_array_stride()
248 const struct glsl_type *arr_type = nir_deref_instr_parent(deref)->type; in nir_deref_instr_array_stride()
[all …]
Dnir_lower_clip_disable.c41 recursive_if_chain(nir_builder *b, nir_deref_instr *deref, nir_ssa_def *value, unsigned clip_plane_… in recursive_if_chain() argument
46 nir_store_deref(b, deref, value, 1 << start); in recursive_if_chain()
48 nir_store_deref(b, deref, nir_imm_int(b, 0), 1 << start); in recursive_if_chain()
54 recursive_if_chain(b, deref, value, clip_plane_enable, index, start, mid); in recursive_if_chain()
56 recursive_if_chain(b, deref, value, clip_plane_enable, index, mid, end); in recursive_if_chain()
72 nir_deref_instr *deref = nir_src_as_deref(instr->src[0]); in lower_clip_plane_store() local
74 out = nir_deref_instr_get_variable(deref); in lower_clip_plane_store()
81 if (deref->deref_type == nir_deref_type_var) { in lower_clip_plane_store()
96 nir_store_deref(b, deref, nir_vec(b, components, instr->num_components), wrmask); in lower_clip_plane_store()
97 } else if (nir_src_is_const(deref->arr.index)) { in lower_clip_plane_store()
[all …]
Dnir_lower_vars_to_ssa.c150 get_deref_node_recur(nir_deref_instr *deref, in get_deref_node_recur() argument
153 if (deref->deref_type == nir_deref_type_var) in get_deref_node_recur()
154 return get_deref_node_for_var(deref->var, state); in get_deref_node_recur()
156 if (deref->deref_type == nir_deref_type_cast) in get_deref_node_recur()
160 get_deref_node_recur(nir_deref_instr_parent(deref), state); in get_deref_node_recur()
167 switch (deref->deref_type) { in get_deref_node_recur()
170 assert(deref->strct.index < glsl_get_length(parent->type)); in get_deref_node_recur()
172 if (parent->children[deref->strct.index] == NULL) { in get_deref_node_recur()
173 parent->children[deref->strct.index] = in get_deref_node_recur()
174 deref_node_create(parent, deref->type, parent->is_direct, in get_deref_node_recur()
[all …]
Dnir_opt_large_constants.c68 build_constant_load(nir_builder *b, nir_deref_instr *deref, in build_constant_load() argument
71 nir_variable *var = nir_deref_instr_get_variable(deref); in build_constant_load()
73 const unsigned bit_size = glsl_get_bit_size(deref->type); in build_constant_load()
74 const unsigned num_components = glsl_get_vector_elements(deref->type); in build_constant_load()
81 size_align(deref->type, &deref_size, &deref_align); in build_constant_load()
89 load->src[0] = nir_src_for_ssa(nir_build_deref_offset(b, deref, size_align)); in build_constant_load()
96 assert(glsl_type_is_boolean(deref->type)); in build_constant_load()
108 nir_deref_instr *deref, nir_const_value *val, in handle_constant_store() argument
112 assert(!nir_deref_instr_has_indirect(deref)); in handle_constant_store()
113 const unsigned bit_size = glsl_get_bit_size(deref->type); in handle_constant_store()
[all …]
Dnir_remove_dead_variables.c31 deref_used_for_not_store(nir_deref_instr *deref) in deref_used_for_not_store() argument
33 nir_foreach_use(src, &deref->dest.ssa) { in deref_used_for_not_store()
65 add_var_use_deref(nir_deref_instr *deref, struct set *live) in add_var_use_deref() argument
67 if (deref->deref_type != nir_deref_type_var) in add_var_use_deref()
73 if ((deref->var->data.mode & (nir_var_function_temp | in add_var_use_deref()
76 !deref_used_for_not_store(deref)) in add_var_use_deref()
79 nir_variable *var = deref->var; in add_var_use_deref()
113 nir_deref_instr *deref = nir_instr_as_deref(instr); in remove_dead_var_writes() local
114 if (deref->deref_type == nir_deref_type_cast && in remove_dead_var_writes()
115 !nir_deref_instr_parent(deref)) in remove_dead_var_writes()
[all …]
Dnir_lower_non_uniform_access.c77 nir_deref_instr *deref = nir_instr_as_deref(handle->parent_instr); in lower_non_uniform_tex_access() local
78 nir_deref_instr *parent = nir_deref_instr_parent(deref); in lower_non_uniform_tex_access()
79 if (deref->deref_type == nir_deref_type_var) in lower_non_uniform_tex_access()
83 assert(deref->deref_type == nir_deref_type_array); in lower_non_uniform_tex_access()
86 if (nir_src_is_const(deref->arr.index)) in lower_non_uniform_tex_access()
89 handle = deref->arr.index.ssa; in lower_non_uniform_tex_access()
122 nir_deref_instr *deref = parent_derefs[texture_deref_handle]; in lower_non_uniform_tex_access() local
123 deref = nir_build_deref_array(b, deref, first[texture_deref_handle]); in lower_non_uniform_tex_access()
124 tex->src[src_idx].src = nir_src_for_ssa(&deref->dest.ssa); in lower_non_uniform_tex_access()
129 nir_deref_instr *deref = parent_derefs[sampler_deref_handle]; in lower_non_uniform_tex_access() local
[all …]
Dnir_lower_variable_initializers.c28 build_constant_load(nir_builder *b, nir_deref_instr *deref, nir_constant *c) in build_constant_load() argument
30 if (glsl_type_is_vector_or_scalar(deref->type)) { in build_constant_load()
33 glsl_get_vector_elements(deref->type), in build_constant_load()
34 glsl_get_bit_size(deref->type)); in build_constant_load()
37 nir_store_deref(b, deref, &load->def, ~0); in build_constant_load()
38 } else if (glsl_type_is_struct_or_ifc(deref->type)) { in build_constant_load()
39 unsigned len = glsl_get_length(deref->type); in build_constant_load()
41 build_constant_load(b, nir_build_deref_struct(b, deref, i), in build_constant_load()
45 assert(glsl_type_is_array(deref->type) || in build_constant_load()
46 glsl_type_is_matrix(deref->type)); in build_constant_load()
[all …]
Dnir_lower_samplers.c40 nir_deref_instr *deref = nir_instr_as_deref(src->src.ssa->parent_instr); in lower_tex_src_to_offset() local
41 while (deref->deref_type != nir_deref_type_var) { in lower_tex_src_to_offset()
42 assert(deref->parent.is_ssa); in lower_tex_src_to_offset()
44 nir_instr_as_deref(deref->parent.ssa->parent_instr); in lower_tex_src_to_offset()
46 assert(deref->deref_type == nir_deref_type_array); in lower_tex_src_to_offset()
48 if (nir_src_is_const(deref->arr.index) && index == NULL) { in lower_tex_src_to_offset()
50 unsigned index_in_array = nir_src_as_uint(deref->arr.index); in lower_tex_src_to_offset()
80 nir_ssa_for_src(b, deref->arr.index, 1))); in lower_tex_src_to_offset()
85 deref = parent; in lower_tex_src_to_offset()
92 assert(deref->deref_type == nir_deref_type_var); in lower_tex_src_to_offset()
[all …]
Dnir_split_vars.c46 nir_deref_instr *deref = nir_instr_as_deref(instr); in get_complex_used_vars() local
51 if (deref->deref_type == nir_deref_type_var && in get_complex_used_vars()
52 nir_deref_instr_has_complex_use(deref)) in get_complex_used_vars()
53 _mesa_set_add(complex_vars, deref->var); in get_complex_used_vars()
221 nir_deref_instr *deref = nir_instr_as_deref(instr); in split_struct_derefs_impl() local
222 if (!nir_deref_mode_may_be(deref, modes)) in split_struct_derefs_impl()
228 if (nir_deref_instr_remove_if_unused(deref)) in split_struct_derefs_impl()
231 if (!glsl_type_is_vector_or_scalar(deref->type)) in split_struct_derefs_impl()
234 nir_variable *base_var = nir_deref_instr_get_variable(deref); in split_struct_derefs_impl()
251 nir_deref_path_init(&path, deref, mem_ctx); in split_struct_derefs_impl()
[all …]
Dnir_opt_load_store_vectorize.c67 #define INFO(mode, op, atomic, res, base, deref, val) \ in get_info() argument
69 …const struct intrinsic_info op##_info = {mode, nir_intrinsic_##op, atomic, res, base, deref, val};\ in get_info()
72 #define LOAD(mode, op, res, base, deref) INFO(mode, load_##op, false, res, base, deref, -1) in get_info() argument
73 #define STORE(mode, op, res, base, deref, val) INFO(mode, store_##op, false, res, base, deref, val) in get_info() argument
74 #define ATOMIC(mode, type, op, res, base, deref, val) INFO(mode, type##_atomic_##op, true, res, bas… in get_info() argument
79 LOAD(0, deref, -1, -1, 0) in get_info()
80 STORE(0, deref, -1, -1, 0, 1) in get_info()
99 ATOMIC(0, deref, add, -1, -1, 0, 1) in get_info()
100 ATOMIC(0, deref, imin, -1, -1, 0, 1) in get_info()
101 ATOMIC(0, deref, umin, -1, -1, 0, 1) in get_info()
[all …]
Dnir_split_per_member_structs.c107 build_member_deref(nir_builder *b, nir_deref_instr *deref, nir_variable *member) in build_member_deref() argument
109 if (deref->deref_type == nir_deref_type_var) { in build_member_deref()
113 build_member_deref(b, nir_deref_instr_parent(deref), member); in build_member_deref()
114 return nir_build_deref_follower(b, parent, deref); in build_member_deref()
119 rewrite_deref_instr(nir_builder *b, nir_deref_instr *deref, in rewrite_deref_instr() argument
123 if (deref->deref_type != nir_deref_type_struct) in rewrite_deref_instr()
127 for (base = nir_deref_instr_parent(deref); in rewrite_deref_instr()
140 nir_variable *member = find_var_member(base->var, deref->strct.index, in rewrite_deref_instr()
144 b->cursor = nir_before_instr(&deref->instr); in rewrite_deref_instr()
146 build_member_deref(b, nir_deref_instr_parent(deref), member); in rewrite_deref_instr()
[all …]
Dnir_builder.h1089 nir_deref_instr *deref = in nir_build_deref_var() local
1092 deref->modes = (nir_variable_mode)var->data.mode; in nir_build_deref_var()
1093 deref->type = var->type; in nir_build_deref_var()
1094 deref->var = var; in nir_build_deref_var()
1096 nir_ssa_dest_init(&deref->instr, &deref->dest, 1, in nir_build_deref_var()
1099 nir_builder_instr_insert(build, &deref->instr); in nir_build_deref_var()
1101 return deref; in nir_build_deref_var()
1114 nir_deref_instr *deref = in nir_build_deref_array() local
1117 deref->modes = parent->modes; in nir_build_deref_array()
1118 deref->type = glsl_get_array_element(parent->type); in nir_build_deref_array()
[all …]
Dnir_lower_io.c176 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()
[all …]
Dnir_serialize.c644 } deref; member
984 write_deref(write_ctx *ctx, const nir_deref_instr *deref) in write_deref() argument
986 assert(deref->deref_type < 8); in write_deref()
987 assert(deref->modes < (1 << 14)); in write_deref()
992 header.deref.instr_type = deref->instr.type; in write_deref()
993 header.deref.deref_type = deref->deref_type; in write_deref()
995 if (deref->deref_type == nir_deref_type_cast) { in write_deref()
996 header.deref.modes = deref->modes; in write_deref()
997 header.deref.cast_type_same_as_last = deref->type == ctx->last_type; in write_deref()
1001 if (deref->deref_type == nir_deref_type_var) { in write_deref()
[all …]
/external/mesa3d/src/compiler/glsl/tests/
Dlower_int64_test.cpp196 ir_dereference_variable *const deref = create_variable(mem_ctx, type); in TEST_F() local
198 lower_64bit::expand_source(*body, deref, expanded_src); in TEST_F()
201 check_instructions(&instructions, type, deref); in TEST_F()
207 ir_dereference_variable *const deref = create_variable(mem_ctx, type); in TEST_F() local
209 lower_64bit::expand_source(*body, deref, expanded_src); in TEST_F()
212 check_instructions(&instructions, type, deref); in TEST_F()
224 ir_dereference_variable *const deref = in TEST_F() local
227 lower_64bit::expand_source(*body, deref, expanded_src); in TEST_F()
230 check_instructions(&instructions, type, deref); in TEST_F()
236 ir_dereference_variable *const deref = create_variable(mem_ctx, type); in TEST_F() local
[all …]
/external/mesa3d/src/compiler/nir/tests/
Dload_store_vectorizer_tests.cpp65 void create_shared_load(nir_deref_instr *deref, uint32_t id,
67 void create_shared_store(nir_deref_instr *deref, uint32_t id,
313 nir_deref_instr *deref, uint32_t id, unsigned bit_size, unsigned components) in create_shared_load() argument
318 load->src[0] = nir_src_for_ssa(&deref->dest.ssa); in create_shared_load()
326 nir_deref_instr *deref, uint32_t id, in create_shared_store() argument
337 store->src[0] = nir_src_for_ssa(&deref->dest.ssa); in create_shared_store()
1188 nir_deref_instr *deref = nir_build_deref_var(b, var); in TEST_F() local
1190 create_shared_load(nir_build_deref_array_imm(b, deref, 0), 0x1); in TEST_F()
1191 create_shared_load(nir_build_deref_array_imm(b, deref, 1), 0x2); in TEST_F()
1204 deref = nir_src_as_deref(load->src[0]); in TEST_F()
[all …]
/external/mesa3d/src/intel/compiler/
Dbrw_nir_lower_image_load_store.c31 _load_image_param(nir_builder *b, nir_deref_instr *deref, unsigned offset) in _load_image_param() argument
36 load->src[0] = nir_src_for_ssa(&deref->dest.ssa); in _load_image_param()
65 image_coord_is_in_bounds(nir_builder *b, nir_deref_instr *deref, in image_coord_is_in_bounds() argument
68 nir_ssa_def *size = load_image_param(b, deref, SIZE); in image_coord_is_in_bounds()
71 unsigned coord_comps = glsl_get_sampler_coordinate_components(deref->type); in image_coord_is_in_bounds()
93 nir_deref_instr *deref, nir_ssa_def *coord) in image_address() argument
95 if (glsl_get_sampler_dim(deref->type) == GLSL_SAMPLER_DIM_1D && in image_address()
96 glsl_sampler_type_is_array(deref->type)) { in image_address()
102 unsigned dims = glsl_get_sampler_coordinate_components(deref->type); in image_address()
106 nir_ssa_def *offset = load_image_param(b, deref, OFFSET); in image_address()
[all …]

1234567891011