ifdef HAVE_INT128
[m6w6/ext-psi] / src / calc / bool.h
index 99f5f0a352315fce0885aacfa3c34983816ab0d4..7560021d1e364dd49e6d0ecacd5cf6623cd3082b 100644 (file)
 #include <assert.h>
 
 #include "token.h"
-
-static inline token_t psi_calc_bool_not(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res)
-{
-       (void) t2;
-       (void) v2;
-
-       switch (t1) {
-       case PSI_T_INT8:
-               res->u8 = !v1->i8;
-               break;
-       case PSI_T_UINT8:
-               res->u8 = !v1->u8;
-               break;
-       case PSI_T_INT16:
-               res->u8 = !v1->i16;
-               break;
-       case PSI_T_UINT16:
-               res->u8 = !v1->u16;
-               break;
-       case PSI_T_INT32:
-               res->u8 = !v1->i32;
-               break;
-       case PSI_T_UINT32:
-               res->u8 = !v1->u32;
-               break;
-       case PSI_T_INT64:
-               res->u8 = !v1->i64;
-               break;
-       case PSI_T_UINT64:
-               res->u8 = !v1->u64;
-               break;
-       case PSI_T_FLOAT:
-               res->u8 = !v1->fval;
-               break;
-       case PSI_T_DOUBLE:
-               res->u8 = !v1->dval;
-               break;
-#if HAVE_LONG_DOUBLE
-       case PSI_T_LONG_DOUBLE:
-               res->u8 = !v1->ldval;
-               break;
-#endif
-
-       default:
-               assert(0);
-               break;
-       }
-       return PSI_T_UINT8;
-}
-
 static inline token_t psi_calc_bool_or(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res)
 {
        switch (t1) {
@@ -112,6 +62,20 @@ static inline token_t psi_calc_bool_or(token_t t1, impl_val *v1, token_t t2, imp
                if (v1->u64)
                        goto return_true;
                break;
+#if HAVE_INT128
+       case PSI_T_INT128:
+               if (v1->i128)
+                       goto return_true;
+               break;
+#endif
+
+#if HAVE_UINT128
+       case PSI_T_UINT128:
+               if (v1->u128)
+                       goto return_true;
+               break;
+#endif
+
        case PSI_T_FLOAT:
                if (v1->fval)
                        goto return_true;
@@ -165,6 +129,20 @@ static inline token_t psi_calc_bool_or(token_t t1, impl_val *v1, token_t t2, imp
                if (v2->u64)
                        goto return_true;
                break;
+#if HAVE_INT128
+       case PSI_T_INT128:
+               if (v2->i128)
+                       goto return_true;
+               break;
+#endif
+
+#if HAVE_UINT128
+       case PSI_T_UINT128:
+               if (v2->u128)
+                       goto return_true;
+               break;
+#endif
+
        case PSI_T_FLOAT:
                if (v2->fval)
                        goto return_true;
@@ -228,6 +206,20 @@ static inline token_t psi_calc_bool_and(token_t t1, impl_val *v1, token_t t2, im
                if (!v1->u64)
                        goto return_false;
                break;
+#if HAVE_INT128
+       case PSI_T_INT128:
+               if (!v1->i128)
+                       goto return_false;
+               break;
+#endif
+
+#if HAVE_UINT128
+       case PSI_T_UINT128:
+               if (!v1->u128)
+                       goto return_false;
+               break;
+#endif
+
        case PSI_T_FLOAT:
                if (!v1->fval)
                        goto return_false;
@@ -281,6 +273,20 @@ static inline token_t psi_calc_bool_and(token_t t1, impl_val *v1, token_t t2, im
                if (!v2->u64)
                        goto return_false;
                break;
+#if HAVE_INT128
+       case PSI_T_INT128:
+               if (!v2->i128)
+                       goto return_false;
+               break;
+#endif
+
+#if HAVE_UINT128
+       case PSI_T_UINT128:
+               if (!v2->u128)
+                       goto return_false;
+               break;
+#endif
+
        case PSI_T_FLOAT:
                if (!v2->fval)
                        goto return_false;