blob: 720672de24268af24e5ba21650d4a619183035bb [file] [log] [blame]
#ifndef EXTEND_SHIFT_HELPERS_H
#define EXTEND_SHIFT_HELPERS_H
#define RT_EXT_CT_RSHIFT_N_AT(RTS,RT,CTS,CT,N,ATS,AT) \
RTS RT \
RTS##_##RT##_ext_##CTS##_##CT##_rshift_##N##_##ATS##_##AT(ATS AT v) \
{ \
return (CTS CT)(v >> N); \
}
#define SLONG_EXT_SCHAR_RSHIFT_N_SLONG(N) \
RT_EXT_CT_RSHIFT_N_AT(signed,long,signed,char,N,signed,long)
#define SLONG_EXT_SSHORT_RSHIFT_N_SLONG(N) \
RT_EXT_CT_RSHIFT_N_AT(signed,long,signed,short,N,signed,long)
#define SLONG_EXT_SINT_RSHIFT_N_SLONG(N) \
RT_EXT_CT_RSHIFT_N_AT(signed,long,signed,int,N,signed,long)
#define SINT_EXT_SSHORT_RSHIFT_N_SINT(N) \
RT_EXT_CT_RSHIFT_N_AT(signed,int,signed,short,N,signed,int)
#define SINT_EXT_SSHORT_RSHIFT_N_SLONG(N) \
RT_EXT_CT_RSHIFT_N_AT(signed,int,signed,short,N,signed,long)
#define SLONG_EXT_SSHORT_RSHIFT_N_SINT(N) \
RT_EXT_CT_RSHIFT_N_AT(signed,long,signed,short,N,signed,int)
#define ULONG_EXT_USHORT_RSHIFT_N_ULONG(N) \
RT_EXT_CT_RSHIFT_N_AT(unsigned,long,unsigned,short,N,unsigned,long)
#define ULONG_EXT_UINT_RSHIFT_N_ULONG(N) \
RT_EXT_CT_RSHIFT_N_AT(unsigned,long,unsigned,int,N,unsigned,long)
#define UINT_EXT_USHORT_RSHIFT_N_UINT(N) \
RT_EXT_CT_RSHIFT_N_AT(unsigned,int,unsigned,short,N,unsigned,int)
#define UINT_EXT_USHORT_RSHIFT_N_ULONG(N) \
RT_EXT_CT_RSHIFT_N_AT(unsigned,int,unsigned,short,N,unsigned,long)
#define ULONG_EXT_USHORT_RSHIFT_N_UINT(N) \
RT_EXT_CT_RSHIFT_N_AT(unsigned,long,unsigned,short,N,unsigned,int)
#endif /* EXTEND_SHIFT_HELPERS_H */