power_insn: drop redundant dataclass incantations
[openpower-isa.git] / src / openpower / decoder / power_insn.py
index a27e48eb1b6c19f3f53af2716003ffd2313f26bc..bf6da71fec7fc9fdde859ec343c841523b18da8c 100644 (file)
@@ -512,7 +512,6 @@ class Operand:
         raise NotImplementedError
 
 
-@_dataclasses.dataclass(eq=True, frozen=True)
 class DynamicOperand(Operand):
     def disassemble(self, insn, record,
             verbosity=Verbosity.NORMAL, indent=""):
@@ -530,11 +529,6 @@ class DynamicOperand(Operand):
             yield str(int(value))
 
 
-@_dataclasses.dataclass(eq=True, frozen=True)
-class ImmediateOperand(DynamicOperand):
-    pass
-
-
 @_dataclasses.dataclass(eq=True, frozen=True)
 class StaticOperand(Operand):
     value: int
@@ -555,7 +549,10 @@ class StaticOperand(Operand):
             yield str(int(value))
 
 
-@_dataclasses.dataclass(eq=True, frozen=True)
+class ImmediateOperand(DynamicOperand):
+    pass
+
+
 class DynamicOperandReg(DynamicOperand):
     def spec(self, insn, record, merge):
         vector = False
@@ -662,7 +659,6 @@ class DynamicOperandGPR(DynamicOperandGPRFPR):
             verbosity=verbosity, indent=indent)
 
 
-@_dataclasses.dataclass(eq=True, frozen=True)
 class DynamicOperandFPR(DynamicOperandGPRFPR):
     def disassemble(self, insn, record,
             verbosity=Verbosity.NORMAL, indent=""):
@@ -672,7 +668,6 @@ class DynamicOperandFPR(DynamicOperandGPRFPR):
             verbosity=verbosity, indent=indent)
 
 
-@_dataclasses.dataclass(eq=True, frozen=True)
 class DynamicOperandTargetAddr(DynamicOperandReg):
     def disassemble(self, insn, record, field,
             verbosity=Verbosity.NORMAL, indent=""):
@@ -692,7 +687,6 @@ class DynamicOperandTargetAddr(DynamicOperandReg):
                 _SelectableInt(value=0b00, bits=2))))
 
 
-@_dataclasses.dataclass(eq=True, frozen=True)
 class DynamicOperandTargetAddrLI(DynamicOperandTargetAddr):
     def span(self, record):
         return record.fields["LI"]
@@ -1043,7 +1037,7 @@ class WordInstruction(Instruction):
             blob = " ".join(map(lambda byte: f"{byte:02x}", blob))
             blob += "    "
 
-        record = self.record(db=db)
+        record = db[self]
         if record is None:
             yield f"{blob}.long 0x{integer:08x}"
             return
@@ -1498,7 +1492,7 @@ class SVP64Instruction(PrefixedInstruction):
 
         blob_prefix = blob(int(self.prefix))
         blob_suffix = blob(int(self.suffix))
-        record = self.record(db=db)
+        record = db[self]
         if record is None or record.svp64 is None:
             yield f"{blob_prefix}.long 0x{int(self.prefix):08x}"
             yield f"{blob_suffix}.long 0x{int(self.suffix):08x}"
@@ -1510,7 +1504,8 @@ class SVP64Instruction(PrefixedInstruction):
             yield f"{blob_prefix}sv.{record.name} {','.join(operands)}"
         else:
             yield f"{blob_prefix}{record.name}"
-        yield f"{blob_suffix}"
+        if blob_suffix:
+            yield f"{blob_suffix}"
 
         (mode, mode_desc) = self.mode(db=db)