Lines Matching defs:instr
79 gather_intrinsic(struct access_state *state, nir_intrinsic_instr *instr)
83 switch (instr->intrinsic) {
100 var = nir_intrinsic_get_var(instr, 0);
101 read = instr->intrinsic != nir_intrinsic_image_deref_store;
102 write = instr->intrinsic != nir_intrinsic_image_deref_load &&
103 instr->intrinsic != nir_intrinsic_image_deref_sparse_load;
142 read = instr->intrinsic != nir_intrinsic_bindless_image_store;
143 write = instr->intrinsic != nir_intrinsic_bindless_image_load &&
144 instr->intrinsic != nir_intrinsic_bindless_image_sparse_load;
146 if (nir_intrinsic_image_dim(instr) == GLSL_SAMPLER_DIM_BUF) {
171 nir_deref_instr *deref = nir_src_as_deref(instr->src[0]);
176 gather_buffer_access(state, ssbo ? instr->src[0].ssa : NULL,
177 instr->intrinsic != nir_intrinsic_store_deref,
178 instr->intrinsic != nir_intrinsic_load_deref);
224 update_access(struct access_state *state, nir_intrinsic_instr *instr, bool is_buffer, bool is_global)
226 enum gl_access_qualifier access = nir_intrinsic_access(instr);
231 if (instr->intrinsic != nir_intrinsic_bindless_image_load &&
232 instr->intrinsic != nir_intrinsic_bindless_image_store &&
233 instr->intrinsic != nir_intrinsic_bindless_image_sparse_load &&
236 state->shader, nir_chase_binding(instr->src[0]));
256 bool progress = nir_intrinsic_access(instr) != access;
257 nir_intrinsic_set_access(instr, access);
262 process_intrinsic(struct access_state *state, nir_intrinsic_instr *instr)
264 switch (instr->intrinsic) {
268 return update_access(state, instr, nir_intrinsic_image_dim(instr) == GLSL_SAMPLER_DIM_BUF,
273 if (nir_deref_mode_is(nir_src_as_deref(instr->src[0]), nir_var_mem_global))
274 return update_access(state, instr, false, true);
275 else if (nir_deref_mode_is(nir_src_as_deref(instr->src[0]), nir_var_mem_ssbo))
276 return update_access(state, instr, true, false);
284 nir_variable *var = nir_intrinsic_get_var(instr, 0);
289 return update_access(state, instr, is_buffer, false);
304 nir_foreach_instr(instr, block) {
305 if (instr->type == nir_instr_type_intrinsic)
307 nir_instr_as_intrinsic(instr));
339 nir_foreach_instr(instr, block) {
340 if (instr->type == nir_instr_type_intrinsic)
341 gather_intrinsic(&state, nir_instr_as_intrinsic(instr));