xref: /netbsd-src/external/mit/isl/dist/isl_pw_hash.c (revision 5971e316fdea024efff6be8f03536623db06833e)
1*5971e316Smrg /*
2*5971e316Smrg  * Copyright 2016      Sven Verdoolaege
3*5971e316Smrg  *
4*5971e316Smrg  * Use of this software is governed by the MIT license
5*5971e316Smrg  *
6*5971e316Smrg  * Written by Sven Verdoolaege
7*5971e316Smrg  */
8*5971e316Smrg 
9*5971e316Smrg #include <isl_pw_macro.h>
10*5971e316Smrg #include <isl/hash.h>
11*5971e316Smrg 
12*5971e316Smrg /* Return a hash value that digests "pw".
13*5971e316Smrg  */
FN(PW,get_hash)14*5971e316Smrg uint32_t FN(PW,get_hash)(__isl_keep PW *pw)
15*5971e316Smrg {
16*5971e316Smrg 	int i;
17*5971e316Smrg 	uint32_t hash;
18*5971e316Smrg 
19*5971e316Smrg 	if (!pw)
20*5971e316Smrg 		return 0;
21*5971e316Smrg 
22*5971e316Smrg 	hash = isl_hash_init();
23*5971e316Smrg 	for (i = 0; i < pw->n; ++i) {
24*5971e316Smrg 		uint32_t set_hash, el_hash;
25*5971e316Smrg 
26*5971e316Smrg 		set_hash = isl_set_get_hash(pw->p[i].set);
27*5971e316Smrg 		isl_hash_hash(hash, set_hash);
28*5971e316Smrg 		el_hash = FN(EL,get_hash)(pw->p[i].FIELD);
29*5971e316Smrg 		isl_hash_hash(hash, el_hash);
30*5971e316Smrg 	}
31*5971e316Smrg 
32*5971e316Smrg 	return hash;
33*5971e316Smrg }
34