1#ifdef __CLC_SCALAR
2#define __CLC_VECSIZE
3#endif
4
5#if __CLC_FPSIZE == 64
6#define __CLC_S_GENTYPE __CLC_XCONCAT(long, __CLC_VECSIZE)
7#define __CLC_U_GENTYPE __CLC_XCONCAT(ulong, __CLC_VECSIZE)
8#elif __CLC_FPSIZE == 32
9#define __CLC_S_GENTYPE __CLC_XCONCAT(int, __CLC_VECSIZE)
10#define __CLC_U_GENTYPE __CLC_XCONCAT(uint, __CLC_VECSIZE)
11#elif __CLC_FPSIZE == 16
12#define __CLC_S_GENTYPE __CLC_XCONCAT(short, __CLC_VECSIZE)
13#define __CLC_U_GENTYPE __CLC_XCONCAT(ushort, __CLC_VECSIZE)
14#endif
15
16_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE select(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_S_GENTYPE z)
17{
18	return z ? y : x;
19}
20
21_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE select(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_U_GENTYPE z)
22{
23	return z ? y : x;
24}
25
26#ifdef __CLC_FPSIZE
27#undef __CLC_S_GENTYPE
28#undef __CLC_U_GENTYPE
29#endif
30
31#ifdef __CLC_SCALAR
32#undef __CLC_VECSIZE
33#endif
34