yield from super().specifiers(record=record)
+class ZZBaseRM(BaseRM):
+ def specifiers(self, record):
+ if self.zz:
+ yield "zz"
+
+ yield from super().specifiers(record=record)
+
+
class NormalLDSTBaseRM(BaseRM):
def specifiers(self, record):
widths = {
CR: BaseRM.mode[3, 4]
-class NormalPRRc0RM(FFPRRc0BaseRM, NormalBaseRM):
+class NormalPRRc0RM(FFPRRc0BaseRM, ZZBaseRM, NormalBaseRM):
"""normal: Rc=0: pred-result z/nonz"""
inv: BaseRM.mode[2]
zz: BaseRM.mode[3]
sz: BaseRM.mode[3]
def specifiers(self, record):
- if self.zz:
- yield f"zz"
-
yield from super().specifiers(record=record, mode="pr")
pass
-class LDSTImmSimpleRM(LDSTImmBaseRM):
+class LDSTImmSimpleRM(ZZBaseRM, LDSTImmBaseRM):
"""ld/st immediate: simple mode"""
zz: BaseRM.mode[3]
els: BaseRM.mode[4]
dz: BaseRM.mode[3]
sz: BaseRM.mode[3]
- def specifiers(self, record):
- if self.zz:
- yield f"zz"
-
- yield from super().specifiers(record=record)
-
class LDSTImmReservedRM(LDSTImmBaseRM):
"""ld/st immediate: reserved"""
yield from super().specifiers(record=record, mode="ff")
-class LDSTImmSatRM(SatBaseRM, LDSTImmBaseRM):
+class LDSTImmSatRM(SatBaseRM, ZZBaseRM, LDSTImmBaseRM):
"""ld/st immediate: sat mode: N=0/1 u/s"""
N: BaseRM.mode[2]
zz: BaseRM.mode[3]
dz: BaseRM.mode[3]
sz: BaseRM.mode[3]
- def specifiers(self, record):
- if self.zz:
- yield f"zz"
-
- yield from super().specifiers(record=record)
-
class LDSTImmPRRc1RM(LDSTImmBaseRM):
"""ld/st immediate: Rc=1: pred-result CR sel"""
CR: BaseRM.mode[3, 4]
-class LDSTIdxPRRc0RM(FFPRRc0BaseRM, LDSTIdxBaseRM):
+class LDSTIdxPRRc0RM(FFPRRc0BaseRM, ZZBaseRM, LDSTIdxBaseRM):
"""ld/st index: Rc=0: pred-result z/nonz"""
inv: BaseRM.mode[2]
zz: BaseRM.mode[3]
sz: BaseRM.mode[3]
def specifiers(self, record):
- if self.zz:
- yield f"zz"
-
yield from super().specifiers(record=record, mode="pr")
yield from super().specifiers(record=record)
-class CROpReservedRM(CROpBaseRM):
+class CROpReservedRM(ZZBaseRM, CROpBaseRM):
"""cr_op: reserved"""
zz: BaseRM[6]
SNZ: BaseRM[7]
dz: BaseRM[6]
def specifiers(self, record):
- if self.zz:
- yield f"zz"
if self.RG:
yield "mrr"
yield from super().specifiers(record=record)
-class CROpFailFirst3RM(CROpBaseRM):
+class CROpFailFirst3RM(ZZBaseRM, CROpBaseRM):
"""cr_op: ffirst 3-bit mode"""
SNZ: BaseRM[7]
VLI: BaseRM[20]
sz: BaseRM[21]
dz: BaseRM[22]
- def specifiers(self, record):
- if self.zz:
- yield f"zz"
- yield from super().specifiers(record=record)
-
class CROpFailFirst5RM(CROpBaseRM):
"""cr_op: ffirst 5-bit mode"""