mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-04 12:18:19 +00:00
fix bug in casting to u128/i128
This commit is contained in:
parent
2786e8ff7f
commit
2794348722
2 changed files with 19 additions and 4 deletions
|
@ -4871,14 +4871,28 @@ impl<
|
|||
|
||||
// move a zero into the lower 8 bytes
|
||||
ASM::mov_reg64_imm64(buf, tmp_reg, 0x0);
|
||||
ASM::mov_base32_reg64(buf, base_offset, tmp_reg);
|
||||
ASM::mov_base32_reg64(buf, base_offset + 8, tmp_reg);
|
||||
|
||||
ASM::mov_base32_reg64(buf, base_offset + 8, src_reg);
|
||||
ASM::mov_base32_reg64(buf, base_offset, src_reg);
|
||||
|
||||
self.free_symbol(&tmp);
|
||||
|
||||
return;
|
||||
}
|
||||
(U128, I128) | (I128, U128) => {
|
||||
let to_offset = self.storage_manager.claim_stack_area_layout(
|
||||
self.layout_interner,
|
||||
*dst,
|
||||
Layout::from_int_width(target),
|
||||
);
|
||||
|
||||
let (from_offset, size) = self.storage_manager.stack_offset_and_size(src);
|
||||
|
||||
self.storage_manager
|
||||
.copy_to_stack_offset(buf, size, from_offset, to_offset);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
_ => {}
|
||||
}
|
||||
|
|
|
@ -2297,7 +2297,7 @@ num_conversion_tests! {
|
|||
to_i64_truncate_wraps, "10_000_000_000_000_000_000i128", -8446744073709551616
|
||||
)
|
||||
"Num.toI128", i128, (
|
||||
to_i128_same_width, "15u128", 15
|
||||
to_i128_same_width, "15u128", 15, ["gen-dev"]
|
||||
to_i128_extend, "15i8", 15
|
||||
)
|
||||
"Num.toU8", u8, (
|
||||
|
@ -2324,8 +2324,9 @@ num_conversion_tests! {
|
|||
to_u64_truncate_wraps, "10_000_000_000_000_000_000_000i128", 1864712049423024128
|
||||
)
|
||||
"Num.toU128", u128, (
|
||||
to_u128_same_width, "15i128", 15
|
||||
to_u128_same_width, "15i128", 15, ["gen-dev"]
|
||||
to_u128_extend, "15i8", 15
|
||||
to_u128_big, "11562537357600483583u64", 11562537357600483583, ["gen-dev"]
|
||||
)
|
||||
"Num.toNat", usize, (
|
||||
to_nat_same_width, "15i64", 15, ["gen-wasm", "gen-dev"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue