Merge pull request #7314 from shua/wrapped

impl add/sub/mul wrapped for u128/i128
This commit is contained in:
Luke Boswell 2024-12-09 11:19:58 +11:00 committed by GitHub
commit 6675734c16
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 387 additions and 295 deletions

View file

@ -940,8 +940,7 @@ impl<'a> LowLevelCall<'a> {
NumAddWrap => match self.ret_layout_raw {
LayoutRepr::Builtin(Builtin::Int(width)) => match width {
IntWidth::I128 | IntWidth::U128 => {
// TODO: don't panic
self.load_args_and_call_zig(backend, &bitcode::NUM_ADD_OR_PANIC_INT[width])
self.load_args_and_call_zig(backend, &bitcode::NUM_ADD_WRAP_INT[width])
}
IntWidth::I64 | IntWidth::U64 => {
self.load_args(backend);
@ -1031,8 +1030,7 @@ impl<'a> LowLevelCall<'a> {
NumSubWrap => match self.ret_layout_raw {
LayoutRepr::Builtin(Builtin::Int(width)) => match width {
IntWidth::I128 | IntWidth::U128 => {
// TODO: don't panic
self.load_args_and_call_zig(backend, &bitcode::NUM_SUB_OR_PANIC_INT[width])
self.load_args_and_call_zig(backend, &bitcode::NUM_SUB_WRAP_INT[width])
}
IntWidth::I64 | IntWidth::U64 => {
self.load_args(backend);