add cmpli
authorJacob Lifshay <programmerjake@gmail.com>
Fri, 16 Oct 2020 22:32:24 +0000 (15:32 -0700)
committerJacob Lifshay <programmerjake@gmail.com>
Fri, 16 Oct 2020 22:32:24 +0000 (15:32 -0700)
src/instr_models.rs
src/lib.rs

index ae3c23cfb694497b96b680de7458a25f33437f28..5d005de1e72efe137dbbabdcbe4892720a14e2ed 100644 (file)
@@ -784,3 +784,25 @@ pub fn cmpwi(inputs: InstructionInput) -> InstructionResult {
         ..InstructionOutput::default()
     })
 }
+
+pub fn cmpldi(inputs: InstructionInput) -> InstructionResult {
+    let ra = inputs.try_get_ra()? as u64;
+    let immediate = inputs.try_get_immediate_u16()? as u64;
+    let so = inputs.try_get_overflow()?.so;
+    let cr0 = ConditionRegister::from_ordering(ra.cmp(&immediate), so);
+    Ok(InstructionOutput {
+        cr0: Some(cr0),
+        ..InstructionOutput::default()
+    })
+}
+
+pub fn cmplwi(inputs: InstructionInput) -> InstructionResult {
+    let ra = inputs.try_get_ra()? as u32;
+    let immediate = inputs.try_get_immediate_u16()? as u32;
+    let so = inputs.try_get_overflow()?.so;
+    let cr0 = ConditionRegister::from_ordering(ra.cmp(&immediate), so);
+    Ok(InstructionOutput {
+        cr0: Some(cr0),
+        ..InstructionOutput::default()
+    })
+}
index 0e855624de644012ec79db4bc7e68ae8bf86ffe7..8fa9eec960a2b6667503218d5475ed3ba5aa09c5 100644 (file)
@@ -807,6 +807,16 @@ instructions! {
     fn cmpwi(Ra, ImmediateS16, Overflow) -> (CR0) {
         "cmpwi"
     }
+
+    // cmpli
+    #[enumerant = CmpLDI]
+    fn cmpldi(Ra, ImmediateU16, Overflow) -> (CR0) {
+        "cmpldi"
+    }
+    #[enumerant = CmpLWI]
+    fn cmplwi(Ra, ImmediateU16, Overflow) -> (CR0) {
+        "cmplwi"
+    }
 }
 
 // must be after instrs macro call since it uses a macro definition