rename pipe to fu
[soc.git] / src / soc / fu / shift_rot / pipe_data.py
1 from nmigen import Signal, Const
2 from nmutil.dynamicpipe import SimpleHandshakeRedir
3 from soc.alu.alu_input_record import CompALUOpSubset
4 from ieee754.fpcommon.getop import FPPipeContext
5 from soc.alu.pipe_data import IntegerData
6
7
8 class ShiftRotInputData(IntegerData):
9 def __init__(self, pspec):
10 super().__init__(pspec)
11 self.ra = Signal(64, reset_less=True) # RA
12 self.rs = Signal(64, reset_less=True) # RS
13 self.rb = Signal(64, reset_less=True) # RB/immediate
14 self.so = Signal(reset_less=True)
15 self.carry_in = Signal(reset_less=True)
16
17 def __iter__(self):
18 yield from super().__iter__()
19 yield self.ra
20 yield self.rs
21 yield self.rb
22 yield self.carry_in
23 yield self.so
24
25 def eq(self, i):
26 lst = super().eq(i)
27 return lst + [self.rs.eq(i.rs), self.ra.eq(i.ra),
28 self.rb.eq(i.rb),
29 self.carry_in.eq(i.carry_in),
30 self.so.eq(i.so)]