X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fcompiler%2Fnir%2Fnir_instr_set.c;h=63f01872d728a9695d11f9f932b728606d2b90f8;hb=00b28a50b2c492eee25ef3f75538aabe1e569ff1;hp=9ddcdcb4dc216a9ea9992e3a69075ed65dd86a2f;hpb=f1dc4c9554ce913acf4d3236b4d43b829fb92073;p=mesa.git diff --git a/src/compiler/nir/nir_instr_set.c b/src/compiler/nir/nir_instr_set.c index 9ddcdcb4dc2..63f01872d72 100644 --- a/src/compiler/nir/nir_instr_set.c +++ b/src/compiler/nir/nir_instr_set.c @@ -83,7 +83,7 @@ instr_can_rewrite(const nir_instr *instr) } -#define HASH(hash, data) _mesa_fnv32_1a_accumulate((hash), (data)) +#define HASH(hash, data) XXH32(&(data), sizeof(data), hash) static uint32_t hash_src(uint32_t hash, const nir_src *src) @@ -172,6 +172,8 @@ hash_deref(uint32_t hash, const nir_deref_instr *instr) case nir_deref_type_cast: hash = HASH(hash, instr->cast.ptr_stride); + hash = HASH(hash, instr->cast.align_mul); + hash = HASH(hash, instr->cast.align_offset); break; case nir_deref_type_var: @@ -198,7 +200,7 @@ hash_load_const(uint32_t hash, const nir_load_const_instr *instr) } } else { unsigned size = instr->def.num_components * sizeof(*instr->value); - hash = _mesa_fnv32_1a_accumulate_block(hash, instr->value, size); + hash = XXH32(instr->value, size, hash); } return hash; @@ -246,9 +248,7 @@ hash_intrinsic(uint32_t hash, const nir_intrinsic_instr *instr) hash = HASH(hash, instr->dest.ssa.bit_size); } - hash = _mesa_fnv32_1a_accumulate_block(hash, instr->const_index, - info->num_indices - * sizeof(instr->const_index[0])); + hash = XXH32(instr->const_index, info->num_indices * sizeof(instr->const_index[0]), hash); return hash; } @@ -274,7 +274,6 @@ hash_tex(uint32_t hash, const nir_tex_instr *instr) for (unsigned j = 0; j < 2; ++j) hash = HASH(hash, instr->tg4_offsets[i][j]); hash = HASH(hash, instr->texture_index); - hash = HASH(hash, instr->texture_array_size); hash = HASH(hash, instr->sampler_index); hash = HASH(hash, instr->texture_non_uniform); hash = HASH(hash, instr->sampler_non_uniform); @@ -292,7 +291,7 @@ static uint32_t hash_instr(const void *data) { const nir_instr *instr = data; - uint32_t hash = _mesa_fnv32_1a_offset_bias; + uint32_t hash = 0; switch (instr->type) { case nir_instr_type_alu: @@ -622,7 +621,9 @@ nir_instrs_equal(const nir_instr *instr1, const nir_instr *instr2) break; case nir_deref_type_cast: - if (deref1->cast.ptr_stride != deref2->cast.ptr_stride) + if (deref1->cast.ptr_stride != deref2->cast.ptr_stride || + deref1->cast.align_mul != deref2->cast.align_mul || + deref1->cast.align_offset != deref2->cast.align_offset) return false; break; @@ -659,7 +660,6 @@ nir_instrs_equal(const nir_instr *instr1, const nir_instr *instr2) tex1->is_new_style_shadow != tex2->is_new_style_shadow || tex1->component != tex2->component || tex1->texture_index != tex2->texture_index || - tex1->texture_array_size != tex2->texture_array_size || tex1->sampler_index != tex2->sampler_index) { return false; }