Add NumSubWrap as a NumSub copy

This commit is contained in:
Ahmad Sattar 2023-01-17 18:43:20 +01:00 committed by Folkert
parent e6926b6fe0
commit bbd4c9886c
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
3 changed files with 48 additions and 1 deletions

View file

@ -516,6 +516,22 @@ trait Backend<'a> {
);
self.build_num_sub(sym, &args[0], &args[1], ret_layout)
}
LowLevel::NumSubWrap => {
debug_assert_eq!(
2,
args.len(),
"NumSubWrap: expected to have exactly two argument"
);
debug_assert_eq!(
arg_layouts[0], arg_layouts[1],
"NumSubWrap: expected all arguments of to have the same layout"
);
debug_assert_eq!(
arg_layouts[0], *ret_layout,
"NumSubWrap: expected to have the same argument and return layout"
);
self.build_num_sub_wrap(sym, &args[0], &args[1], ret_layout)
}
LowLevel::NumBitwiseAnd => {
if let Layout::Builtin(Builtin::Int(int_width)) = self.interner().get(*ret_layout) {
self.build_int_bitwise_and(sym, &args[0], &args[1], int_width)
@ -795,6 +811,15 @@ trait Backend<'a> {
/// build_num_sub stores the `src1 - src2` difference into dst.
fn build_num_sub(&mut self, dst: &Symbol, src1: &Symbol, src2: &Symbol, layout: &InLayout<'a>);
/// build_num_sub_wrap stores the `src1 - src2` difference into dst.
fn build_num_sub_wrap(
&mut self,
dst: &Symbol,
src1: &Symbol,
src2: &Symbol,
layout: &InLayout<'a>,
);
/// stores the `src1 & src2` into dst.
fn build_int_bitwise_and(
&mut self,