/external/mesa3d/src/compiler/glsl/ |
D | lower_buffer_access.cpp | 58 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 …]
|
D | gl_nir_lower_buffers.c | 33 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 …]
|
D | lower_vector_derefs.cpp | 62 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 …]
|
D | lower_xfb_varying.cpp | 166 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 …]
|
D | lower_shared_reference.cpp | 75 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 …]
|
D | lower_ubo_reference.cpp | 64 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 …]
|
D | opt_function_inlining.cpp | 113 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/ |
D | nir_lower_locals_to_regs.c | 50 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 …]
|
D | nir_deref.c | 44 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 …]
|
D | nir_lower_clip_disable.c | 41 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 …]
|
D | nir_lower_vars_to_ssa.c | 150 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 …]
|
D | nir_opt_large_constants.c | 68 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 …]
|
D | nir_remove_dead_variables.c | 31 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 …]
|
D | nir_lower_non_uniform_access.c | 77 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 …]
|
D | nir_lower_variable_initializers.c | 28 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 …]
|
D | nir_lower_samplers.c | 40 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 …]
|
D | nir_split_vars.c | 46 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 …]
|
D | nir_opt_load_store_vectorize.c | 67 #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 …]
|
D | nir_split_per_member_structs.c | 107 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 …]
|
D | nir_builder.h | 1089 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 …]
|
D | nir_lower_io.c | 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() [all …]
|
D | nir_serialize.c | 644 } 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/ |
D | lower_int64_test.cpp | 196 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/ |
D | load_store_vectorizer_tests.cpp | 65 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/ |
D | brw_nir_lower_image_load_store.c | 31 _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 …]
|