also read LDST RM files
[soc.git] / src / soc / fu / mul / pipe_data.py
index 429be0086cffe4b9d17f7b544a99d9f1a3cc6cda..bb77c5ce2988ddad420006b3005b6548cefc2978 100644 (file)
@@ -1,27 +1,31 @@
-from soc.fu.alu.alu_input_record import CompALUOpSubset
+from soc.fu.mul.mul_input_record import CompMULOpSubset
 from soc.fu.pipe_data import IntegerData, CommonPipeSpec
-from soc.fu.alu.pipe_data import ALUOutputData, ALUInputData
+from soc.fu.div.pipe_data import DivInputData, DivMulOutputData
+from nmigen import Signal
 
 
-class MulIntermediateData(ALUInputData):
+class MulIntermediateData(DivInputData):
     def __init__(self, pspec):
         super().__init__(pspec)
 
-        neg_result = Signal(reset_less=True)
-        self.data.append(neg_result)
+        self.neg_res = Signal(reset_less=True)
+        self.neg_res32 = Signal(reset_less=True)
+        self.data.append(self.neg_res)
+        self.data.append(self.neg_res32)
 
 
 class MulOutputData(IntegerData):
     regspec = [('INT', 'o', '0:128'),
-               ('XER', 'xer_so', '32'), # XER bit 32: SO
-               ('XER', 'xer_ca', '34,45')] # XER bit 34/45: CA/CA32
+               ('XER', 'xer_so', '32')] # XER bit 32: SO
     def __init__(self, pspec):
-        super().__init__(pspec, False)
+        super().__init__(pspec, False) # still input style
 
-        neg_result = Signal(reset_less=True)
-        self.data.append(neg_result)
+        self.neg_res = Signal(reset_less=True)
+        self.neg_res32 = Signal(reset_less=True)
+        self.data.append(self.neg_res)
+        self.data.append(self.neg_res32)
 
 
 class MulPipeSpec(CommonPipeSpec):
-    regspec = (ALUInputData.regspec, ALUOutputData.regspec)
-    opsubsetkls = CompALUOpSubset
+    regspec = (DivInputData.regspec, DivMulOutputData.regspec)
+    opsubsetkls = CompMULOpSubset