aboutsummaryrefslogtreecommitdiff
path: root/src/armv7.rs
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2020-12-06 13:37:14 -0800
committeriximeow <me@iximeow.net>2020-12-06 13:37:14 -0800
commit5e590eba9a1baf8a544f75ec87a58daa4da33726 (patch)
tree6eb47321bb6ef3ee9055c403b9cc0a1e355f7770 /src/armv7.rs
parentcf7c141256337dc12f19e98d34efa3aa606af368 (diff)
support more mul/div variants
Diffstat (limited to 'src/armv7.rs')
-rw-r--r--src/armv7.rs49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/armv7.rs b/src/armv7.rs
index be4f0d6..4cfbc77 100644
--- a/src/armv7.rs
+++ b/src/armv7.rs
@@ -410,6 +410,20 @@ impl <T: fmt::Write, Color: fmt::Display, Y: YaxColors<Color>> Colorize<T, Color
Opcode::MLS |
Opcode::UMULL |
Opcode::UMLAL |
+ Opcode::SMLSD |
+ Opcode::SMMLA |
+ Opcode::SMMLS |
+ Opcode::USADA8 |
+ Opcode::USAD8 |
+ Opcode::SDIV |
+ Opcode::UDIV |
+ Opcode::SMLALD(_) |
+ Opcode::SMLSLD(_) |
+ Opcode::SMLAD |
+ Opcode::SMUSD |
+ Opcode::SMMUL |
+ Opcode::SMULW(_) |
+ Opcode::SMUAD |
Opcode::SMULL |
Opcode::SMUL(_, _) |
Opcode::SMAL(_, _) |
@@ -628,6 +642,8 @@ impl Display for Opcode {
Opcode::STRBT => { write!(f, "strbt") },
Opcode::SWP => { write!(f, "swp") },
Opcode::SWPB => { write!(f, "swpb") },
+ Opcode::SDIV => { write!(f, "sdiv") },
+ Opcode::UDIV => { write!(f, "udiv") },
Opcode::MUL => { write!(f, "mul") },
Opcode::MLA => { write!(f, "mla") },
Opcode::UMAAL => { write!(f, "umaal") },
@@ -651,6 +667,24 @@ impl Display for Opcode {
Opcode::SMLAW(second) => {
write!(f, "smlaw{}", if *second { "t" } else { "b" })
},
+ Opcode::SMULW(second) => {
+ write!(f, "smulw{}", if *second { "t" } else { "b" })
+ },
+ Opcode::SMLALD(second) => {
+ write!(f, "smlald{}", if *second { "t" } else { "b" })
+ },
+ Opcode::SMLSLD(second) => {
+ write!(f, "smlsld{}", if *second { "t" } else { "b" })
+ },
+ Opcode::SMLSD => { write!(f, "smlsd") },
+ Opcode::SMMLA => { write!(f, "smmla") },
+ Opcode::SMMLS => { write!(f, "smmls") },
+ Opcode::USADA8 => { write!(f, "usada8") },
+ Opcode::USAD8 => { write!(f, "usad8") },
+ Opcode::SMLAD => { write!(f, "smlad") },
+ Opcode::SMUSD => { write!(f, "smusd") },
+ Opcode::SMMUL => { write!(f, "smmul") },
+ Opcode::SMUAD => { write!(f, "smuad") },
Opcode::TBB => { write!(f, "tbb") },
Opcode::TBH => { write!(f, "tbh") },
Opcode::UDF => { write!(f, "udf") },
@@ -941,6 +975,21 @@ pub enum Opcode {
USUB8,
UQSUB8,
UHSUB8,
+
+ SMLSD,
+ SMMLA,
+ SMMLS,
+ USADA8,
+ USAD8,
+ SMLAD,
+ SMUSD,
+ SMMUL,
+ SMULW(bool),
+ SMUAD,
+ SDIV,
+ UDIV,
+ SMLALD(bool),
+ SMLSLD(bool),
}
static DATA_PROCESSING_OPCODES: [Opcode; 16] = [