X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fcalc%2Fbin.h;h=772bd9863d52955753d331bf6ebdd8ce76a7bf93;hp=3e9e4a0872d777195b9fe3ac9c807499498578da;hb=c9384515a81cb64d345b299908b2852f51bb8e6e;hpb=b029005e56a8913fbb3d17ab497b4a37a00a211c diff --git a/src/calc/bin.h b/src/calc/bin.h index 3e9e4a0..772bd98 100644 --- a/src/calc/bin.h +++ b/src/calc/bin.h @@ -65,6 +65,14 @@ static inline token_t psi_calc_bin_lshift(token_t t1, impl_val *v1, token_t t2, i1.u64 = v1->u64; break; + case PSI_T_INT128: + i1.u64 = v1->i128; + break; + + case PSI_T_UINT128: + i1.u64 = v1->u128; + break; + case PSI_T_FLOAT: i1.u64 = v1->fval; break; @@ -110,6 +118,12 @@ 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; + case PSI_T_INT128: + i2.u64 = v2->i128; + break; + case PSI_T_UINT128: + i2.u64 = v2->u128; + break; case PSI_T_FLOAT: i2.u64 = v2->fval; break; @@ -168,6 +182,14 @@ static inline token_t psi_calc_bin_rshift(token_t t1, impl_val *v1, token_t t2, i1.u64 = v1->u64; break; + case PSI_T_INT128: + i1.u64 = v1->i128; + break; + + case PSI_T_UINT128: + i1.u64 = v1->u128; + break; + case PSI_T_FLOAT: i1.u64 = v1->fval; break; @@ -213,6 +235,12 @@ 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; + case PSI_T_INT128: + i2.u64 = v2->i128; + break; + case PSI_T_UINT128: + i2.u64 = v2->u128; + break; case PSI_T_FLOAT: i2.u64 = v2->fval; break; @@ -271,6 +299,14 @@ static inline token_t psi_calc_bin_and(token_t t1, impl_val *v1, token_t t2, imp i1.u64 = v1->u64; break; + case PSI_T_INT128: + i1.u64 = v1->i128; + break; + + case PSI_T_UINT128: + i1.u64 = v1->u128; + break; + case PSI_T_FLOAT: i1.u64 = v1->fval; break; @@ -316,6 +352,12 @@ 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; + case PSI_T_INT128: + i2.u64 = v2->i128; + break; + case PSI_T_UINT128: + i2.u64 = v2->u128; + break; case PSI_T_FLOAT: i2.u64 = v2->fval; break; @@ -374,6 +416,14 @@ static inline token_t psi_calc_bin_xor(token_t t1, impl_val *v1, token_t t2, imp i1.u64 = v1->u64; break; + case PSI_T_INT128: + i1.u64 = v1->i128; + break; + + case PSI_T_UINT128: + i1.u64 = v1->u128; + break; + case PSI_T_FLOAT: i1.u64 = v1->fval; break; @@ -419,6 +469,12 @@ 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; + case PSI_T_INT128: + i2.u64 = v2->i128; + break; + case PSI_T_UINT128: + i2.u64 = v2->u128; + break; case PSI_T_FLOAT: i2.u64 = v2->fval; break; @@ -477,6 +533,14 @@ static inline token_t psi_calc_bin_or(token_t t1, impl_val *v1, token_t t2, impl i1.u64 = v1->u64; break; + case PSI_T_INT128: + i1.u64 = v1->i128; + break; + + case PSI_T_UINT128: + i1.u64 = v1->u128; + break; + case PSI_T_FLOAT: i1.u64 = v1->fval; break; @@ -522,6 +586,12 @@ 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_INT128: + i2.u64 = v2->i128; + break; + case PSI_T_UINT128: + i2.u64 = v2->u128; + break; case PSI_T_FLOAT: i2.u64 = v2->fval; break; @@ -542,67 +612,3 @@ static inline token_t psi_calc_bin_or(token_t t1, impl_val *v1, token_t t2, impl 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; - break; - - case PSI_T_FLOAT: - i1.u64 = v1->fval; - break; - - case PSI_T_DOUBLE: - i1.u64 = v1->dval; - break; - -#if HAVE_LONG_DOUBLE - case PSI_T_LONG_DOUBLE: - i1.u64 = v1->ldval; - break; - -#endif - - default: - assert(0); - break; - } - - res->u64 = ~i1.u64; - return PSI_T_UINT64; -} \ No newline at end of file