+ # masks: start-left
+ mb = Signal(7, reset_less=True)
+ ml = Signal(64, reset_less=True)
+
+ # clear left?
+ with m.If((itype == MicrOp.OP_RLC) | (itype == MicrOp.OP_RLCL)):
+ with m.If(rec.is_32bit):
+ comb += mb.eq(m_fields.MB[0:-1])
+ with m.Else():
+ comb += mb.eq(md_fields.mb[0:-1])
+ with m.Else():
+ with m.If(rec.is_32bit):
+ comb += mb.eq(b[0:6])
+ with m.Else():
+ comb += mb.eq(b+32)
+ comb += ml.eq(left_mask(m, mb))
+
+ # masks: end-right
+ me = Signal(7, reset_less=True)
+ mr = Signal(64, reset_less=True)
+
+ # clear right?
+ with m.If((itype == MicrOp.OP_RLC) | (itype == MicrOp.OP_RLCR)):
+ with m.If(rec.is_32bit):
+ comb += me.eq(m_fields.ME[0:-1])
+ with m.Else():
+ comb += me.eq(md_fields.me[0:-1])
+ with m.Else():
+ with m.If(rec.is_32bit):
+ comb += me.eq(b[0:6])
+ with m.Else():
+ comb += me.eq(63-b)
+ comb += mr.eq(right_mask(m, me))
+