Lines Matching refs:deref
57 ir_dereference *deref, in emit_access() argument
65 if (deref->type->is_record()) { in emit_access()
68 for (unsigned i = 0; i < deref->type->length; i++) { in emit_access()
70 &deref->type->fields.structure[i]; in emit_access()
72 new(mem_ctx) ir_dereference_record(deref->clone(mem_ctx, NULL), in emit_access()
89 if (deref->type->is_array()) { in emit_access()
91 deref->type->fields.array->std430_array_stride(row_major) : in emit_access()
92 glsl_align(deref->type->fields.array->std140_size(row_major), 16); in emit_access()
94 for (unsigned i = 0; i < deref->type->length; i++) { in emit_access()
97 new(mem_ctx) ir_dereference_array(deref->clone(mem_ctx, NULL), in emit_access()
107 if (deref->type->is_matrix()) { in emit_access()
108 for (unsigned i = 0; i < deref->type->matrix_columns; i++) { in emit_access()
111 new(mem_ctx) ir_dereference_array(deref->clone(mem_ctx, NULL), col); in emit_access()
117 int size_mul = deref->type->is_64bit() ? 8 : 4; in emit_access()
120 row_major, deref->type->matrix_columns, packing, in emit_access()
127 deref->type->vector_elements == 2 && in emit_access()
128 !deref->type->is_64bit()) { in emit_access()
140 size_mul = (deref->type->is_64bit() && in emit_access()
141 deref->type->vector_elements > 2) ? 32 : 16; in emit_access()
146 row_major, deref->type->matrix_columns, packing, in emit_access()
153 assert(deref->type->is_scalar() || deref->type->is_vector()); in emit_access()
159 is_write ? write_mask : (1 << deref->type->vector_elements) - 1; in emit_access()
160 insert_buffer_access(mem_ctx, deref, deref->type, offset, mask, -1); in emit_access()
162 unsigned N = deref->type->is_64bit() ? 8 : 4; in emit_access()
167 assert(deref->type->base_type == GLSL_TYPE_FLOAT || in emit_access()
168 deref->type->base_type == GLSL_TYPE_DOUBLE); in emit_access()
202 const glsl_type *deref_type = deref->type->base_type == GLSL_TYPE_FLOAT ? in emit_access()
205 for (unsigned i = 0; i < deref->type->vector_elements; i++) { in emit_access()
210 insert_buffer_access(mem_ctx, deref, deref_type, chan_offset, in emit_access()
232 lower_buffer_access::is_dereferenced_thing_row_major(const ir_rvalue *deref) in is_dereferenced_thing_row_major() argument
235 const ir_rvalue *ir = deref; in is_dereferenced_thing_row_major()
267 return matrix || deref->type->without_array()->is_record(); in is_dereferenced_thing_row_major()
286 MAYBE_UNUSED ir_variable *var = deref->variable_referenced(); in is_dereferenced_thing_row_major()
294 return matrix || deref->type->without_array()->is_record(); in is_dereferenced_thing_row_major()
324 ir_rvalue *deref, in setup_buffer_access() argument
333 *row_major = is_dereferenced_thing_row_major(deref); in setup_buffer_access()
340 while (deref) { in setup_buffer_access()
341 switch (deref->ir_type) { in setup_buffer_access()
343 deref = NULL; in setup_buffer_access()
348 ir_dereference_array *deref_array = (ir_dereference_array *) deref; in setup_buffer_access()
381 deref = deref_array->array->as_dereference(); in setup_buffer_access()
415 deref = deref_array->array->as_dereference(); in setup_buffer_access()
420 ir_dereference_record *deref_record = (ir_dereference_record *) deref; in setup_buffer_access()
475 deref = deref_record->record->as_dereference(); in setup_buffer_access()
480 ir_swizzle *deref_swizzle = (ir_swizzle *) deref; in setup_buffer_access()
485 deref = deref_swizzle->val->as_dereference(); in setup_buffer_access()
491 deref = NULL; in setup_buffer_access()