yield from super().specifiers
-class NormalSubvectorReduceRM(NormalBaseRM):
- """normal: subvector reduce mode, SUBVL>1"""
- SVM: BaseRM.mode[3]
-
- @property
- def specifiers(self):
- if self.SVM:
- yield "svm"
-
- yield from super().specifiers
-
-
class NormalReservedRM(NormalBaseRM):
"""normal: reserved"""
pass
class NormalRM(NormalBaseRM):
simple: NormalSimpleRM
smr: NormalScalarReduceRM
- svmr: NormalSubvectorReduceRM
reserved: NormalReservedRM
ffrc1: NormalFailFirstRc1RM
ffrc0: NormalFailFirstRc0RM
yield from super().specifiers
-class CROpSubvectorReduceRM(CROpBaseRM):
- """cr_op: subvector reduce mode, SUBVL>1"""
- zz: BaseRM[6]
- SNZ: BaseRM[7]
- RG: BaseRM[20]
- SVM: BaseRM[22]
- dz: BaseRM[6]
- sz: BaseRM[6]
-
- @property
- def specifiers(self):
- if self.zz:
- yield f"zz"
- if self.SVM:
- yield "svm"
- if self.RG:
- yield "mrr"
-
- yield from super().specifiers
-
-
class CROpReservedRM(CROpBaseRM):
"""cr_op: reserved"""
zz: BaseRM[6]
class CROpRM(CROpBaseRM):
simple: CROpSimpleRM
smr: CROpScalarReduceRM
- svmr: CROpSubvectorReduceRM
reserved: CROpReservedRM
ff3: CROpFailFirst3RM
ff5: CROpFailFirst5RM
if rm.mode[2] == 0b0:
rm = rm.simple
else:
- if self.subvl == 1:
- rm = rm.smr
- elif self.subvl > 1:
- rm = rm.svmr
- else:
- rm = rm.reserved
+ rm = rm.smr
elif rm.mode[0:2] == 0b01:
if Rc:
rm = rm.ffrc1
if rm[21] == 0b0:
rm = rm.simple
else:
- if self.subvl == 1:
- rm = rm.smr
- elif self.subvl > 1:
- rm = rm.svmr
- else:
- rm = rm.reserved
+ rm = rm.smr
else:
regtype = None
for idx in range(0, 4):