3 * https://libre-soc.org/3d_gpu/architecture/regfile/ section on regspecs
5 from soc
.fu
.pipe_data
import IntegerData
, CommonPipeSpec
6 from soc
.fu
.cr
.cr_input_record
import CompCROpSubset
9 class CRInputData(IntegerData
):
10 regspec
= [('INT', 'ra', '0:63'), # 64 bit range
11 ('INT', 'rb', '0:63'), # 64 bit range
12 ('CR', 'full_cr', '0:31'), # 32 bit range
13 ('CR', 'cr_a', '0:3'), # 4 bit range
14 ('CR', 'cr_b', '0:3'), # 4 bit range
15 ('CR', 'cr_c', '0:3')] # 4 bit: for CR_OP partial update
16 def __init__(self
, pspec
):
17 super().__init
__(pspec
, False)
19 self
.a
, self
.b
= self
.ra
, self
.rb
22 class CROutputData(IntegerData
):
23 regspec
= [('INT', 'o', '0:63'), # RA - 64 bit range
24 ('CR', 'full_cr', '0:31'), # 32 bit range
25 ('CR', 'cr_a', '0:3')] # 4 bit range
26 def __init__(self
, pspec
):
27 super().__init
__(pspec
, True)
32 class CRPipeSpec(CommonPipeSpec
):
33 regspec
= (CRInputData
.regspec
, CROutputData
.regspec
)
34 opsubsetkls
= CompCROpSubset