X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Fcalc%2Fbin.h;h=7f9e381161b515e8a5c1b4a7f5156fdef2d23b6f;hb=cd0567b4052ee24259bc6b8a9858af9d26f3de48;hp=3e9e4a0872d777195b9fe3ac9c807499498578da;hpb=52ed5940ed0ab3cafd36fbded2e83c92563e7b2b;p=m6w6%2Fext-psi diff --git a/src/calc/bin.h b/src/calc/bin.h index 3e9e4a0..7f9e381 100644 --- a/src/calc/bin.h +++ b/src/calc/bin.h @@ -23,7 +23,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ -#include "php_psi_stdinc.h" #include #include "token.h" @@ -65,6 +64,20 @@ static inline token_t psi_calc_bin_lshift(token_t t1, impl_val *v1, token_t t2, i1.u64 = v1->u64; break; +#if HAVE_INT128 + case PSI_T_INT128: + i1.u64 = v1->i128; + break; + +#endif + +#if HAVE_UINT128 + case PSI_T_UINT128: + i1.u64 = v1->u128; + break; + +#endif + case PSI_T_FLOAT: i1.u64 = v1->fval; break; @@ -110,6 +123,18 @@ static inline token_t psi_calc_bin_lshift(token_t t1, impl_val *v1, token_t t2, case PSI_T_UINT64: i2.u64 = v2->u64; break; +#if HAVE_INT128 + case PSI_T_INT128: + i2.u64 = v2->i128; + break; +#endif + +#if HAVE_UINT128 + case PSI_T_UINT128: + i2.u64 = v2->u128; + break; +#endif + case PSI_T_FLOAT: i2.u64 = v2->fval; break; @@ -168,6 +193,20 @@ static inline token_t psi_calc_bin_rshift(token_t t1, impl_val *v1, token_t t2, i1.u64 = v1->u64; break; +#if HAVE_INT128 + case PSI_T_INT128: + i1.u64 = v1->i128; + break; + +#endif + +#if HAVE_UINT128 + case PSI_T_UINT128: + i1.u64 = v1->u128; + break; + +#endif + case PSI_T_FLOAT: i1.u64 = v1->fval; break; @@ -213,6 +252,18 @@ static inline token_t psi_calc_bin_rshift(token_t t1, impl_val *v1, token_t t2, case PSI_T_UINT64: i2.u64 = v2->u64; break; +#if HAVE_INT128 + case PSI_T_INT128: + i2.u64 = v2->i128; + break; +#endif + +#if HAVE_UINT128 + case PSI_T_UINT128: + i2.u64 = v2->u128; + break; +#endif + case PSI_T_FLOAT: i2.u64 = v2->fval; break; @@ -271,6 +322,20 @@ static inline token_t psi_calc_bin_and(token_t t1, impl_val *v1, token_t t2, imp i1.u64 = v1->u64; break; +#if HAVE_INT128 + case PSI_T_INT128: + i1.u64 = v1->i128; + break; + +#endif + +#if HAVE_UINT128 + case PSI_T_UINT128: + i1.u64 = v1->u128; + break; + +#endif + case PSI_T_FLOAT: i1.u64 = v1->fval; break; @@ -316,6 +381,18 @@ static inline token_t psi_calc_bin_and(token_t t1, impl_val *v1, token_t t2, imp case PSI_T_UINT64: i2.u64 = v2->u64; break; +#if HAVE_INT128 + case PSI_T_INT128: + i2.u64 = v2->i128; + break; +#endif + +#if HAVE_UINT128 + case PSI_T_UINT128: + i2.u64 = v2->u128; + break; +#endif + case PSI_T_FLOAT: i2.u64 = v2->fval; break; @@ -374,6 +451,20 @@ static inline token_t psi_calc_bin_xor(token_t t1, impl_val *v1, token_t t2, imp i1.u64 = v1->u64; break; +#if HAVE_INT128 + case PSI_T_INT128: + i1.u64 = v1->i128; + break; + +#endif + +#if HAVE_UINT128 + case PSI_T_UINT128: + i1.u64 = v1->u128; + break; + +#endif + case PSI_T_FLOAT: i1.u64 = v1->fval; break; @@ -419,6 +510,18 @@ static inline token_t psi_calc_bin_xor(token_t t1, impl_val *v1, token_t t2, imp case PSI_T_UINT64: i2.u64 = v2->u64; break; +#if HAVE_INT128 + case PSI_T_INT128: + i2.u64 = v2->i128; + break; +#endif + +#if HAVE_UINT128 + case PSI_T_UINT128: + i2.u64 = v2->u128; + break; +#endif + case PSI_T_FLOAT: i2.u64 = v2->fval; break; @@ -477,6 +580,20 @@ static inline token_t psi_calc_bin_or(token_t t1, impl_val *v1, token_t t2, impl i1.u64 = v1->u64; break; +#if HAVE_INT128 + case PSI_T_INT128: + i1.u64 = v1->i128; + break; + +#endif + +#if HAVE_UINT128 + case PSI_T_UINT128: + i1.u64 = v1->u128; + break; + +#endif + case PSI_T_FLOAT: i1.u64 = v1->fval; break; @@ -522,80 +639,28 @@ static inline token_t psi_calc_bin_or(token_t t1, impl_val *v1, token_t t2, impl case PSI_T_UINT64: i2.u64 = v2->u64; break; - case PSI_T_FLOAT: - i2.u64 = v2->fval; - break; - case PSI_T_DOUBLE: - i2.u64 = v2->dval; - break; -#if HAVE_LONG_DOUBLE - case PSI_T_LONG_DOUBLE: - i2.u64 = v2->ldval; +#if HAVE_INT128 + case PSI_T_INT128: + i2.u64 = v2->i128; break; #endif - default: - assert(0); - break; - } - - res->u64 = i1.u64 | i2.u64; - return PSI_T_UINT64; -} - -static inline token_t psi_calc_bin_not(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res) -{ - impl_val i1; - - (void) t2; - (void) v2; - - switch (t1) { - case PSI_T_INT8: - i1.u64 = v1->i8; - break; - - case PSI_T_UINT8: - i1.u64 = v1->u8; - break; - - case PSI_T_INT16: - i1.u64 = v1->i16; - break; - - case PSI_T_UINT16: - i1.u64 = v1->u16; - break; - - case PSI_T_INT32: - i1.u64 = v1->i32; - break; - - case PSI_T_UINT32: - i1.u64 = v1->u32; - break; - - case PSI_T_INT64: - i1.u64 = v1->i64; - break; - - case PSI_T_UINT64: - i1.u64 = v1->u64; +#if HAVE_UINT128 + case PSI_T_UINT128: + i2.u64 = v2->u128; break; +#endif case PSI_T_FLOAT: - i1.u64 = v1->fval; + i2.u64 = v2->fval; break; - case PSI_T_DOUBLE: - i1.u64 = v1->dval; + i2.u64 = v2->dval; break; - #if HAVE_LONG_DOUBLE case PSI_T_LONG_DOUBLE: - i1.u64 = v1->ldval; + i2.u64 = v2->ldval; break; - #endif default: @@ -603,6 +668,6 @@ static inline token_t psi_calc_bin_not(token_t t1, impl_val *v1, token_t t2, imp break; } - res->u64 = ~i1.u64; + res->u64 = i1.u64 | i2.u64; return PSI_T_UINT64; -} \ No newline at end of file +}