924 /**************/ |
924 /**************/ |
925 /* Binary ops */ |
925 /* Binary ops */ |
926 /**************/ |
926 /**************/ |
927 #define __shift_(fname, TYPENAME, OP)\ |
927 #define __shift_(fname, TYPENAME, OP)\ |
928 static inline TYPENAME fname##TYPENAME(EN_ENO_PARAMS, TYPENAME IN, USINT N) {\ |
928 static inline TYPENAME fname##TYPENAME(EN_ENO_PARAMS, TYPENAME IN, USINT N) {\ |
929 TEST_EN_COND(TYPENAME, N < 0)\ |
929 TEST_EN(TYPENAME)\ |
930 return IN OP N;\ |
930 return IN OP N;\ |
931 } |
931 } |
932 |
932 |
933 #define __shl_(TYPENAME) __shift_(__shl_, TYPENAME, << ) |
933 #define __shl_(TYPENAME) __shift_(__shl_, TYPENAME, << ) |
934 /* Call previously defined macro for each ANY_NBIT */ |
934 /* Call previously defined macro for each ANY_NBIT */ |
938 /* Call previously defined macro for each ANY_NBIT */ |
938 /* Call previously defined macro for each ANY_NBIT */ |
939 ANY_NBIT(__shr_) |
939 ANY_NBIT(__shr_) |
940 |
940 |
941 #define __ror_(TYPENAME)\ |
941 #define __ror_(TYPENAME)\ |
942 static inline TYPENAME __ror_##TYPENAME(EN_ENO_PARAMS, TYPENAME IN, USINT N){\ |
942 static inline TYPENAME __ror_##TYPENAME(EN_ENO_PARAMS, TYPENAME IN, USINT N){\ |
943 TEST_EN_COND(TYPENAME, N < 0)\ |
943 TEST_EN(TYPENAME)\ |
944 N %= 8*sizeof(TYPENAME);\ |
944 N %= 8*sizeof(TYPENAME);\ |
945 return (IN >> N) | (IN << 8*sizeof(TYPENAME)-N);\ |
945 return (IN >> N) | (IN << 8*sizeof(TYPENAME)-N);\ |
946 } |
946 } |
947 /* Call previously defined macro for each ANY_NBIT */ |
947 /* Call previously defined macro for each ANY_NBIT */ |
948 ANY_NBIT(__ror_) |
948 ANY_NBIT(__ror_) |
949 |
949 |
950 #define __rol_(TYPENAME)\ |
950 #define __rol_(TYPENAME)\ |
951 static inline TYPENAME __rol_##TYPENAME(EN_ENO_PARAMS, TYPENAME IN, USINT N){\ |
951 static inline TYPENAME __rol_##TYPENAME(EN_ENO_PARAMS, TYPENAME IN, USINT N){\ |
952 TEST_EN_COND(TYPENAME, N < 0)\ |
952 TEST_EN(TYPENAME)\ |
953 N %= 8*sizeof(TYPENAME);\ |
953 N %= 8*sizeof(TYPENAME);\ |
954 return (IN << N) | (IN >> 8*sizeof(TYPENAME)-N);\ |
954 return (IN << N) | (IN >> 8*sizeof(TYPENAME)-N);\ |
955 } |
955 } |
956 /* Call previously defined macro for each ANY_NBIT */ |
956 /* Call previously defined macro for each ANY_NBIT */ |
957 ANY_NBIT(__rol_) |
957 ANY_NBIT(__rol_) |
1052 /**************/ |
1052 /**************/ |
1053 /* MUX */ |
1053 /* MUX */ |
1054 /**************/ |
1054 /**************/ |
1055 #define __mux_(TYPENAME) \ |
1055 #define __mux_(TYPENAME) \ |
1056 static inline TYPENAME __mux_##TYPENAME(EN_ENO_PARAMS, UINT param_count, UINT K, ...){\ |
1056 static inline TYPENAME __mux_##TYPENAME(EN_ENO_PARAMS, UINT param_count, UINT K, ...){\ |
1057 TEST_EN_COND(TYPENAME, K < 0 || K >= param_count)\ |
1057 TEST_EN_COND(TYPENAME, K >= param_count)\ |
1058 va_list ap;\ |
1058 va_list ap;\ |
1059 UINT i;\ |
1059 UINT i;\ |
1060 TYPENAME tmp = __INIT_##TYPENAME;\ |
1060 TYPENAME tmp = __INIT_##TYPENAME;\ |
1061 \ |
1061 \ |
1062 va_start (ap, K); /* Initialize the argument list. */\ |
1062 va_start (ap, K); /* Initialize the argument list. */\ |