Files
clang-p2996/libclc/clc/lib/generic/integer/clc_upsample.cl
2025-02-18 14:56:25 +00:00

32 lines
1.6 KiB
Common Lisp

#include <clc/clc_convert.h>
#include <clc/internal/clc.h>
#define __CLC_UPSAMPLE_IMPL(BGENTYPE, GENTYPE, UGENTYPE, GENSIZE) \
_CLC_OVERLOAD _CLC_DEF BGENTYPE __clc_upsample(GENTYPE hi, UGENTYPE lo) { \
BGENTYPE large_hi = __clc_convert_##BGENTYPE(hi); \
BGENTYPE large_lo = __clc_convert_##BGENTYPE(lo); \
return (large_hi << (BGENTYPE)GENSIZE) | large_lo; \
}
#define __CLC_UPSAMPLE_IMPL_ALL_TYS(BGENTYPE, GENTYPE, UGENTYPE, GENSIZE) \
__CLC_UPSAMPLE_IMPL(BGENTYPE, GENTYPE, UGENTYPE, GENSIZE) \
__CLC_UPSAMPLE_IMPL(BGENTYPE##2, GENTYPE##2, UGENTYPE##2, GENSIZE) \
__CLC_UPSAMPLE_IMPL(BGENTYPE##3, GENTYPE##3, UGENTYPE##3, GENSIZE) \
__CLC_UPSAMPLE_IMPL(BGENTYPE##4, GENTYPE##4, UGENTYPE##4, GENSIZE) \
__CLC_UPSAMPLE_IMPL(BGENTYPE##8, GENTYPE##8, UGENTYPE##8, GENSIZE) \
__CLC_UPSAMPLE_IMPL(BGENTYPE##16, GENTYPE##16, UGENTYPE##16, GENSIZE)
#define __CLC_UPSAMPLE_TYPES() \
__CLC_UPSAMPLE_IMPL_ALL_TYS(short, char, uchar, 8) \
__CLC_UPSAMPLE_IMPL_ALL_TYS(ushort, uchar, uchar, 8) \
__CLC_UPSAMPLE_IMPL_ALL_TYS(int, short, ushort, 16) \
__CLC_UPSAMPLE_IMPL_ALL_TYS(uint, ushort, ushort, 16) \
__CLC_UPSAMPLE_IMPL_ALL_TYS(long, int, uint, 32) \
__CLC_UPSAMPLE_IMPL_ALL_TYS(ulong, uint, uint, 32)
__CLC_UPSAMPLE_TYPES()
#undef __CLC_UPSAMPLE_TYPES
#undef __CLC_UPSAMPLE_IMPL_ALL_TYS
#undef __CLC_UPSAMPLE_IMPL