SNZ: BaseRM[7]
-class CROpSimpleRM(DZBaseRM, SZBaseRM, CROpBaseRM):
+class CROpSimpleRM(PredicateBaseRM, DZBaseRM, SZBaseRM, CROpBaseRM):
"""cr_op: simple mode"""
RG: BaseRM[20]
dz: BaseRM[22]
sz: BaseRM[23]
-class CROpFF3RM(VLiBaseRM, ZZBaseRM, CROpBaseRM):
+class CROpFF3RM(FFPRRc1BaseRM, VLiBaseRM, ZZBaseRM, PredicateBaseRM, CROpBaseRM):
"""cr_op: ffirst 3-bit mode"""
VLi: BaseRM[20]
inv: BaseRM[21]
else:
assert dst_zero == src_zero, "dz must equal sz in ffirst BO"
mode |= (failfirst << SVP64MODE.BO_LSB) # set BO
- svp64_rm.crops.zz = dst_zero
+ svp64_rm.cr_op.zz = dst_zero
if vli:
sv_mode |= 1 # set VLI in LSB of 2-bit mode
#svp64_rm.cr_op.vli = 1
expected = [
'sv.crand *16,*2,*33',
'sv.crand 12,2,33',
+ 'sv.crand/ff=eq/m=r10 12,2,33',
+ 'sv.crand/m=r10 12,2,33',
+ 'sv.crand/m=r10/sz 12,2,33',
+ # XXX dz/sz is not the canonical way, must be zz
+ 'sv.crand/dz/m=r10/sz 12,2,33', # NOT OK
+ 'sv.crand/m=r10/zz 12,2,33', # SHOULD PASS
]
self._do_tst(expected)