1
2/* : : generated by proto : : */
3/***********************************************************************
4*                                                                      *
5*               This software is part of the ast package               *
6*          Copyright (c) 1985-2010 AT&T Intellectual Property          *
7*                      and is licensed under the                       *
8*                  Common Public License, Version 1.0                  *
9*                    by AT&T Intellectual Property                     *
10*                                                                      *
11*                A copy of the License is available at                 *
12*            http://www.opensource.org/licenses/cpl1.0.txt             *
13*         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
14*                                                                      *
15*              Information and Software Systems Research               *
16*                            AT&T Research                             *
17*                           Florham Park NJ                            *
18*                                                                      *
19*                 Glenn Fowler <gsf@research.att.com>                  *
20*                  David Korn <dgk@research.att.com>                   *
21*                   Phong Vo <kpv@research.att.com>                    *
22*                                                                      *
23***********************************************************************/
24
25/*
26 * K. P. Vo
27 * G. S. Fowler
28 * AT&T Research
29 *
30 * ``the best'' combined linear congruent checksum/hash/PRNG
31 */
32
33#ifndef _HASHPART_H
34#if !defined(__PROTO__)
35#include <prototyped.h>
36#endif
37#if !defined(__LINKAGE__)
38#define __LINKAGE__		/* 2004-08-11 transition */
39#endif
40
41#define _HASHPART_H
42
43#define HASH_ADD(h)	(0x9c39c33dL)
44
45#if __sparc__ || __sparc || sparc
46
47#define HASH_A(h,n)	((((h) << 2) - (h)) << (n))
48#define HASH_B(h,n)	((((h) << 4) - (h)) << (n))
49#define HASH_C(h,n)	((HASH_A(h,7) + HASH_B(h,0)) << (n))
50#define HASH_MPY(h)	(HASH_C(h,22)+HASH_C(h,10)+HASH_A(h,6)+HASH_A(h,3)+(h))
51
52#else
53
54#define HASH_MPY(h)	((h)*0x63c63cd9L)
55
56#endif
57
58#define HASHPART(h,c)	(h = HASH_MPY(h) + HASH_ADD(h) + (c))
59
60#endif
61