summaryrefslogtreecommitdiff
path: root/src/display.rs
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2025-04-07 23:12:25 -0700
committeriximeow <me@iximeow.net>2025-04-07 23:12:25 -0700
commitf902e9a1df4f7b03c029491e72aca72977d23f5b (patch)
treee0cb37aeda49f9bc9890d769cf31f81fd7c58868 /src/display.rs
parentb0609b1b20851cf33eb03a8f9491502121c4f127 (diff)
wowowowow cargo test passes
Diffstat (limited to 'src/display.rs')
-rw-r--r--src/display.rs27
1 files changed, 21 insertions, 6 deletions
diff --git a/src/display.rs b/src/display.rs
index 6349d4c..071633c 100644
--- a/src/display.rs
+++ b/src/display.rs
@@ -57,9 +57,18 @@ impl fmt::Display for Instruction {
self.sources[0], self.sources[1], self.sources[2]);
}
Opcode::AndNot => {
- return write!(f, "{} {} and({}, ~{})", self.dest.as_ref().unwrap(),
- assign_mode_label(self.flags.assign_mode),
- self.sources[0], self.sources[1]);
+ // not entirely sure if these should be the same opcode, but "not" as in
+ // "bitswise negation" as in "! for boolean predicates and ~ for integer
+ // registers" seems... ok?
+ if let Some(dest @ Operand::PredicateReg { .. }) = self.dest.as_ref() {
+ return write!(f, "{} {} and({}, !{})", dest,
+ assign_mode_label(self.flags.assign_mode),
+ self.sources[0], self.sources[1]);
+ } else {
+ return write!(f, "{} {} and({}, ~{})", self.dest.as_ref().unwrap(),
+ assign_mode_label(self.flags.assign_mode),
+ self.sources[0], self.sources[1]);
+ }
}
Opcode::OrOr => {
return write!(f, "{} = or({}, or({}, {}))", self.dest.as_ref().unwrap(),
@@ -152,9 +161,15 @@ impl fmt::Display for Instruction {
self.opcode, self.sources[0], self.sources[1]);
}
Opcode::Vminub => {
- return write!(f, "{}, {} = {}({}, {})",
- self.dest.as_ref().unwrap(), self.alt_dest.as_ref().unwrap(),
- self.opcode, self.sources[0], self.sources[1]);
+ if let Some(alt_dest) = self.alt_dest.as_ref() {
+ return write!(f, "{}, {} = {}({}, {})",
+ self.dest.as_ref().unwrap(), alt_dest,
+ self.opcode, self.sources[0], self.sources[1]);
+ } else {
+ return write!(f, "{} = {}({}, {})",
+ self.dest.as_ref().unwrap(),
+ self.opcode, self.sources[0], self.sources[1]);
+ }
}
Opcode::SfRecipa => {
return write!(f, "{}, {} = {}({}, {})",