mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-27 05:49:08 +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;
|
||||
}
|
||||
|
||||
_ => {}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue