manually define min/max integer functions

This commit is contained in:
Folkert 2022-03-05 21:02:35 +01:00
parent adf4ad22a5
commit de498a37ce
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
2 changed files with 42 additions and 20 deletions

View file

@ -227,24 +227,6 @@ pub fn builtin_defs_map(symbol: Symbol, var_store: &mut VarStore) -> Option<Def>
NUM_SHIFT_RIGHT => num_shift_right_by, NUM_SHIFT_RIGHT => num_shift_right_by,
NUM_SHIFT_RIGHT_ZERO_FILL => num_shift_right_zf_by, NUM_SHIFT_RIGHT_ZERO_FILL => num_shift_right_zf_by,
NUM_INT_CAST=> num_int_cast, NUM_INT_CAST=> num_int_cast,
NUM_MIN_I8=> num_min_i8,
NUM_MAX_I8=> num_max_i8,
NUM_MIN_U8=> num_min_u8,
NUM_MAX_U8=> num_max_u8,
NUM_MIN_I16=> num_min_i16,
NUM_MAX_I16=> num_max_i16,
NUM_MIN_U16=> num_min_u16,
NUM_MAX_U16=> num_max_u16,
NUM_MIN_I32=> num_min_i32,
NUM_MAX_I32=> num_max_i32,
NUM_MIN_U32=> num_min_u32,
NUM_MAX_U32=> num_max_u32,
NUM_MIN_I64=> num_min_i64,
NUM_MAX_I64=> num_max_i64,
NUM_MIN_U64=> num_min_u64,
NUM_MAX_U64=> num_max_u64,
NUM_MIN_I128=> num_min_i128,
NUM_MAX_I128=> num_max_i128,
NUM_TO_I8 => num_to_i8, NUM_TO_I8 => num_to_i8,
NUM_TO_I8_CHECKED => num_to_i8_checked, NUM_TO_I8_CHECKED => num_to_i8_checked,
NUM_TO_I16 => num_to_i16, NUM_TO_I16 => num_to_i16,

View file

@ -3173,6 +3173,8 @@ fn load_module<'a>(
Loc::at_zero(ExposedName::new("maxU64")), Loc::at_zero(ExposedName::new("maxU64")),
Loc::at_zero(ExposedName::new("minI128")), Loc::at_zero(ExposedName::new("minI128")),
Loc::at_zero(ExposedName::new("maxI128")), Loc::at_zero(ExposedName::new("maxI128")),
Loc::at_zero(ExposedName::new("minU128")),
Loc::at_zero(ExposedName::new("maxU128")),
Loc::at_zero(ExposedName::new("toI8")), Loc::at_zero(ExposedName::new("toI8")),
Loc::at_zero(ExposedName::new("toI8Checked")), Loc::at_zero(ExposedName::new("toI8Checked")),
Loc::at_zero(ExposedName::new("toI16")), Loc::at_zero(ExposedName::new("toI16")),
@ -3338,26 +3340,64 @@ fn load_module<'a>(
mulChecked : Num a, Num a -> Result (Num a) [ Overflow ]* mulChecked : Num a, Num a -> Result (Num a) [ Overflow ]*
minI8 : I8 minI8 : I8
minI8 = -128i8
maxI8 : I8 maxI8 : I8
maxI8 = 127i8
minU8 : U8 minU8 : U8
minU8 = 0u8
maxU8 : U8 maxU8 : U8
maxU8 = 255u8
minI16 : I16 minI16 : I16
minI16 = -32768i16
maxI16 : I16 maxI16 : I16
maxI16 = 32767i16
minU16 : U16 minU16 : U16
minU16 = 0u16
maxU16 : U16 maxU16 : U16
maxU16 = 65535u16
minI32 : I32 minI32 : I32
minI32 = -2147483648
maxI32 : I32 maxI32 : I32
maxI32 = 2147483647
minU32 : U32 minU32 : U32
minU32 = 0
maxU32 : U32 maxU32 : U32
maxU32 = 4294967295
minI64 : I64 minI64 : I64
minI64 = -9223372036854775808
maxI64 : I64 maxI64 : I64
maxI64 = 9223372036854775807
minU64 : U64 minU64 : U64
minU64 = 0
maxU64 : U64 maxU64 : U64
maxU64 = 18446744073709551615
minI128 : I128 minI128 : I128
minI128 = -170141183460469231731687303715884105728
maxI128 : I128 maxI128 : I128
# minU128 : U128 maxI128 = 170141183460469231731687303715884105727
# maxU128 : U128
minU128 : U128
minU128 = 0
maxU128 : U128
maxU128 = 0340282366920938463463374607431768211455
toI8 : Int * -> I8 toI8 : Int * -> I8
toI16 : Int * -> I16 toI16 : Int * -> I16