arm: Impl MLA

Former-commit-id: fe2c836bd09af165381537445dd288ca7bac24ce
This commit is contained in:
Michel Heily 2019-07-11 00:02:39 +03:00
parent 5bc4c79d6e
commit 4763f79abf

View file

@ -399,15 +399,15 @@ impl Core {
return Err(CpuError::IllegalInstruction); return Err(CpuError::IllegalInstruction);
} }
if !insn.accumulate_flag() {
self.set_reg(insn.rn(), 0);
} else {
panic!("accumelate not implemented yet");
}
let op1 = self.get_reg(rm) as i32; let op1 = self.get_reg(rm) as i32;
let op2 = self.get_reg(rs) as i32; let op2 = self.get_reg(rs) as i32;
let result = (op1 * op2) as u32; let mut result = (op1 * op2) as u32;
if insn.accumulate_flag() {
result = result.wrapping_add(self.get_reg(rn));
self.add_cycle();
}
self.set_reg(rd, result); self.set_reg(rd, result);
let m = self.get_required_multipiler_array_cycles(op2); let m = self.get_required_multipiler_array_cycles(op2);