add mulli
authorJacob Lifshay <programmerjake@gmail.com>
Wed, 14 Oct 2020 23:52:55 +0000 (16:52 -0700)
committerJacob Lifshay <programmerjake@gmail.com>
Wed, 14 Oct 2020 23:52:55 +0000 (16:52 -0700)
src/instr_models.rs
src/lib.rs

index 8b335b2b661ae3b80c5feb65ae1149bc1145ac4d..5eee17784bfb971306e95f5fc32d2141c514f526 100644 (file)
@@ -633,6 +633,16 @@ pub fn moduw(inputs: InstructionInput) -> InstructionResult {
     })
 }
 
+pub fn mulli(inputs: InstructionInput) -> InstructionResult {
+    let ra = inputs.try_get_ra()? as i64;
+    let immediate = inputs.try_get_immediate_s16()? as i64;
+    let result = ra.wrapping_mul(immediate) as u64;
+    Ok(InstructionOutput {
+        rt: Some(result),
+        ..InstructionOutput::default()
+    })
+}
+
 create_instr_variants_ov_cr!(mullw, mullwo, mullw_, mullwo_, i64);
 
 pub fn mullwo(inputs: InstructionInput) -> InstructionResult {
index e49374e23fc51bc260e53bd1260340cfe3747ac0..e5d26e417ad47a0dd5be610d79b454e67e360d67 100644 (file)
@@ -695,6 +695,11 @@ instructions! {
         "moduw"
     }
 
+    #[enumerant = MulLI]
+    fn mulli(Ra, ImmediateS16) -> (Rt) {
+        "mulli"
+    }
+
     // mullw
     #[enumerant = MulLW]
     fn mullw(Ra, Rb) -> (Rt) {