Lines Matching refs:instr

51 hash_alu(uint32_t hash, const nir_alu_instr *instr)  in hash_alu()  argument
53 hash = HASH(hash, instr->op); in hash_alu()
54 hash = HASH(hash, instr->dest.dest.ssa.num_components); in hash_alu()
55 hash = HASH(hash, instr->dest.dest.ssa.bit_size); in hash_alu()
58 if (nir_op_infos[instr->op].algebraic_properties & NIR_OP_IS_COMMUTATIVE) { in hash_alu()
59 assert(nir_op_infos[instr->op].num_inputs == 2); in hash_alu()
60 uint32_t hash0 = hash_alu_src(hash, &instr->src[0], in hash_alu()
61 nir_ssa_alu_instr_src_components(instr, 0)); in hash_alu()
62 uint32_t hash1 = hash_alu_src(hash, &instr->src[1], in hash_alu()
63 nir_ssa_alu_instr_src_components(instr, 1)); in hash_alu()
72 for (unsigned i = 0; i < nir_op_infos[instr->op].num_inputs; i++) { in hash_alu()
73 hash = hash_alu_src(hash, &instr->src[i], in hash_alu()
74 nir_ssa_alu_instr_src_components(instr, i)); in hash_alu()
82 hash_load_const(uint32_t hash, const nir_load_const_instr *instr) in hash_load_const() argument
84 hash = HASH(hash, instr->def.num_components); in hash_load_const()
86 unsigned size = instr->def.num_components * (instr->def.bit_size / 8); in hash_load_const()
87 hash = _mesa_fnv32_1a_accumulate_block(hash, instr->value.f32, size); in hash_load_const()
101 hash_phi(uint32_t hash, const nir_phi_instr *instr) in hash_phi() argument
103 hash = HASH(hash, instr->instr.block); in hash_phi()
106 unsigned num_preds = instr->instr.block->predecessors->entries; in hash_phi()
109 nir_foreach_phi_src(src, instr) { in hash_phi()
124 hash_intrinsic(uint32_t hash, const nir_intrinsic_instr *instr) in hash_intrinsic() argument
126 const nir_intrinsic_info *info = &nir_intrinsic_infos[instr->intrinsic]; in hash_intrinsic()
127 hash = HASH(hash, instr->intrinsic); in hash_intrinsic()
130 hash = HASH(hash, instr->dest.ssa.num_components); in hash_intrinsic()
131 hash = HASH(hash, instr->dest.ssa.bit_size); in hash_intrinsic()
136 hash = _mesa_fnv32_1a_accumulate_block(hash, instr->const_index, in hash_intrinsic()
138 * sizeof(instr->const_index[0])); in hash_intrinsic()
143 hash_tex(uint32_t hash, const nir_tex_instr *instr) in hash_tex() argument
145 hash = HASH(hash, instr->op); in hash_tex()
146 hash = HASH(hash, instr->num_srcs); in hash_tex()
148 for (unsigned i = 0; i < instr->num_srcs; i++) { in hash_tex()
149 hash = HASH(hash, instr->src[i].src_type); in hash_tex()
150 hash = hash_src(hash, &instr->src[i].src); in hash_tex()
153 hash = HASH(hash, instr->coord_components); in hash_tex()
154 hash = HASH(hash, instr->sampler_dim); in hash_tex()
155 hash = HASH(hash, instr->is_array); in hash_tex()
156 hash = HASH(hash, instr->is_shadow); in hash_tex()
157 hash = HASH(hash, instr->is_new_style_shadow); in hash_tex()
158 unsigned component = instr->component; in hash_tex()
160 hash = HASH(hash, instr->texture_index); in hash_tex()
161 hash = HASH(hash, instr->texture_array_size); in hash_tex()
162 hash = HASH(hash, instr->sampler_index); in hash_tex()
164 assert(!instr->texture && !instr->sampler); in hash_tex()
178 const nir_instr *instr = data; in hash_instr() local
181 switch (instr->type) { in hash_instr()
183 hash = hash_alu(hash, nir_instr_as_alu(instr)); in hash_instr()
186 hash = hash_load_const(hash, nir_instr_as_load_const(instr)); in hash_instr()
189 hash = hash_phi(hash, nir_instr_as_phi(instr)); in hash_instr()
192 hash = hash_intrinsic(hash, nir_instr_as_intrinsic(instr)); in hash_instr()
195 hash = hash_tex(hash, nir_instr_as_tex(instr)); in hash_instr()
343 if (phi1->instr.block != phi2->instr.block) in nir_instrs_equal()
424 instr_can_rewrite(nir_instr *instr) in instr_can_rewrite() argument
427 if (!nir_foreach_dest(instr, dest_is_ssa, NULL) || in instr_can_rewrite()
428 !nir_foreach_src(instr, src_is_ssa, NULL)) in instr_can_rewrite()
431 switch (instr->type) { in instr_can_rewrite()
437 nir_tex_instr *tex = nir_instr_as_tex(instr); in instr_can_rewrite()
447 &nir_intrinsic_infos[nir_instr_as_intrinsic(instr)->intrinsic]; in instr_can_rewrite()
465 nir_instr_get_dest_ssa_def(nir_instr *instr) in nir_instr_get_dest_ssa_def() argument
467 switch (instr->type) { in nir_instr_get_dest_ssa_def()
469 assert(nir_instr_as_alu(instr)->dest.dest.is_ssa); in nir_instr_get_dest_ssa_def()
470 return &nir_instr_as_alu(instr)->dest.dest.ssa; in nir_instr_get_dest_ssa_def()
472 return &nir_instr_as_load_const(instr)->def; in nir_instr_get_dest_ssa_def()
474 assert(nir_instr_as_phi(instr)->dest.is_ssa); in nir_instr_get_dest_ssa_def()
475 return &nir_instr_as_phi(instr)->dest.ssa; in nir_instr_get_dest_ssa_def()
477 assert(nir_instr_as_intrinsic(instr)->dest.is_ssa); in nir_instr_get_dest_ssa_def()
478 return &nir_instr_as_intrinsic(instr)->dest.ssa; in nir_instr_get_dest_ssa_def()
480 assert(nir_instr_as_tex(instr)->dest.is_ssa); in nir_instr_get_dest_ssa_def()
481 return &nir_instr_as_tex(instr)->dest.ssa; in nir_instr_get_dest_ssa_def()
506 nir_instr_set_add_or_rewrite(struct set *instr_set, nir_instr *instr) in nir_instr_set_add_or_rewrite() argument
508 if (!instr_can_rewrite(instr)) in nir_instr_set_add_or_rewrite()
511 struct set_entry *entry = _mesa_set_search(instr_set, instr); in nir_instr_set_add_or_rewrite()
513 nir_ssa_def *def = nir_instr_get_dest_ssa_def(instr); in nir_instr_set_add_or_rewrite()
522 if (instr->type == nir_instr_type_alu && nir_instr_as_alu(instr)->exact) in nir_instr_set_add_or_rewrite()
529 _mesa_set_add(instr_set, instr); in nir_instr_set_add_or_rewrite()
534 nir_instr_set_remove(struct set *instr_set, nir_instr *instr) in nir_instr_set_remove() argument
536 if (!instr_can_rewrite(instr)) in nir_instr_set_remove()
539 struct set_entry *entry = _mesa_set_search(instr_set, instr); in nir_instr_set_remove()