summaryrefslogtreecommitdiff
path: root/gst-libs/ext/mplex/fastintfns.h
blob: db78af1e8c6721ca2d04d9180dff3dcf16b71eaf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/* fast int primitives. min,max,abs,samesign
 *
 * WARNING: Assumes 2's complement arithmetic.
 *
 */


static __inline__ int intmax( register int x, register int y )
{
	return x < y ? y : x;
}

static __inline__ int intmin( register int x, register int y )
{
	return x < y ? x : y;
}

static __inline__ int intabs( register int x )
{
	return x < 0 ? -x : x;
}

#define fabsshift ((8*sizeof(unsigned int))-1)

#define signmask(x) (((int)x)>>fabsshift)
static __inline__ int intsamesign(int x, int y)
{
	return (y+(signmask(x) & -(y<<1)));
}
#undef signmask
#undef fabsshift