aboutsummaryrefslogtreecommitdiff
path: root/src/armv8/a64.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/armv8/a64.rs')
-rw-r--r--src/armv8/a64.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/armv8/a64.rs b/src/armv8/a64.rs
index 52c90bc..b901d21 100644
--- a/src/armv8/a64.rs
+++ b/src/armv8/a64.rs
@@ -804,24 +804,42 @@ impl Display for Instruction {
write!(fmt, "cls")?;
}
Opcode::MADD => {
+ if let Operand::Register(_, 31) = self.operands[3] {
+ return write!(fmt, "mul {}, {}, {}", self.operands[0], self.operands[1], self.operands[2])
+ }
write!(fmt, "madd")?;
}
Opcode::MSUB => {
+ if let Operand::Register(_, 31) = self.operands[3] {
+ return write!(fmt, "mneg {}, {}, {}", self.operands[0], self.operands[1], self.operands[2])
+ }
write!(fmt, "msub")?;
}
Opcode::SMADDL => {
+ if let Operand::Register(_, 31) = self.operands[3] {
+ return write!(fmt, "smull {}, {}, {}", self.operands[0], self.operands[1], self.operands[2])
+ }
write!(fmt, "smaddl")?;
}
Opcode::SMSUBL => {
+ if let Operand::Register(_, 31) = self.operands[3] {
+ return write!(fmt, "smnegl {}, {}, {}", self.operands[0], self.operands[1], self.operands[2])
+ }
write!(fmt, "smsubl")?;
}
Opcode::SMULH => {
write!(fmt, "smulh")?;
}
Opcode::UMADDL => {
+ if let Operand::Register(_, 31) = self.operands[3] {
+ return write!(fmt, "umull {}, {}, {}", self.operands[0], self.operands[1], self.operands[2])
+ }
write!(fmt, "umaddl")?;
}
Opcode::UMSUBL => {
+ if let Operand::Register(_, 31) = self.operands[3] {
+ return write!(fmt, "umnegl {}, {}, {}", self.operands[0], self.operands[1], self.operands[2])
+ }
write!(fmt, "umsubl")?;
}
Opcode::UMULH => {