[cranelift-interpreter] Add integer multiplication
This commit is contained in:
@@ -12,7 +12,7 @@ use cranelift_codegen::ir::{
|
||||
};
|
||||
use cranelift_reader::{DataValue, DataValueCastFailure};
|
||||
use log::trace;
|
||||
use std::ops::{Add, Sub};
|
||||
use std::ops::{Add, Mul, Sub};
|
||||
use thiserror::Error;
|
||||
|
||||
/// The valid control flow states.
|
||||
@@ -152,6 +152,7 @@ impl Interpreter {
|
||||
let result = match opcode {
|
||||
Iadd => binary_op!(Add::add[arg1, arg2]; [I8, I16, I32, I64]; inst),
|
||||
Isub => binary_op!(Sub::sub[arg1, arg2]; [I8, I16, I32, I64]; inst),
|
||||
Imul => binary_op!(Mul::mul[arg1, arg2]; [I8, I16, I32, I64]; inst),
|
||||
_ => unimplemented!("interpreter does not support opcode yet: {}", opcode),
|
||||
}?;
|
||||
frame.set(first_result(frame.function, inst), result);
|
||||
@@ -164,6 +165,7 @@ impl Interpreter {
|
||||
let result = match opcode {
|
||||
IaddImm => binary_op!(Add::add[arg, imm]; [I8, I16, I32, I64]; inst),
|
||||
IrsubImm => binary_op!(Sub::sub[imm, arg]; [I8, I16, I32, I64]; inst),
|
||||
ImulImm => binary_op!(Mul::mul[arg, imm]; [I8, I16, I32, I64]; inst),
|
||||
_ => unimplemented!("interpreter does not support opcode yet: {}", opcode),
|
||||
}?;
|
||||
frame.set(first_result(frame.function, inst), result);
|
||||
|
||||
Reference in New Issue
Block a user