soc.fu.shift_rot package¶
Subpackages¶
Submodules¶
soc.fu.shift_rot.input_stage module¶
-
class
soc.fu.shift_rot.input_stage.ShiftRotInputStage(pspec)¶ Bases:
soc.fu.common_input_stage.CommonInputStage-
elaborate(platform)¶
-
ispec()¶
-
ospec()¶
-
soc.fu.shift_rot.main_stage module¶
soc.fu.shift_rot.maskgen module¶
soc.fu.shift_rot.output_stage module¶
-
class
soc.fu.shift_rot.output_stage.ShiftRotOutputStage(pspec)¶ Bases:
soc.fu.common_output_stage.CommonOutputStage-
ispec()¶
-
ospec()¶
-
soc.fu.shift_rot.pipe_data module¶
-
class
soc.fu.shift_rot.pipe_data.ShiftRotInputData(pspec)¶ Bases:
soc.fu.pipe_data.IntegerData-
regspec= [('INT', 'ra', '0:63'), ('INT', 'rb', '0:63'), ('INT', 'rc', '0:63'), ('XER', 'xer_so', '32'), ('XER', 'xer_ca', '34,45')]¶
-
-
class
soc.fu.shift_rot.pipe_data.ShiftRotOutputData(pspec)¶ Bases:
soc.fu.pipe_data.IntegerData-
regspec= [('INT', 'o', '0:63'), ('CR', 'cr_a', '0:3'), ('XER', 'xer_so', '32'), ('XER', 'xer_ca', '34,45')]¶
-
-
class
soc.fu.shift_rot.pipe_data.ShiftRotOutputDataFinal(pspec)¶ Bases:
soc.fu.pipe_data.IntegerData-
regspec= [('INT', 'o', '0:63'), ('CR', 'cr_a', '0:3'), ('XER', 'xer_ca', '34,45')]¶
-
-
class
soc.fu.shift_rot.pipe_data.ShiftRotPipeSpec(id_wid)¶ Bases:
soc.fu.pipe_data.CommonPipeSpec-
opsubsetkls¶
-
regspec= ([('INT', 'ra', '0:63'), ('INT', 'rb', '0:63'), ('INT', 'rc', '0:63'), ('XER', 'xer_so', '32'), ('XER', 'xer_ca', '34,45')], [('INT', 'o', '0:63'), ('CR', 'cr_a', '0:3'), ('XER', 'xer_ca', '34,45')])¶
-
soc.fu.shift_rot.pipeline module¶
-
class
soc.fu.shift_rot.pipeline.ShiftRotBasePipe(pspec)¶ Bases:
nmutil.singlepipe.ControlBase-
elaborate(platform)¶ handles case where stage has dynamic ready/valid functions
-
soc.fu.shift_rot.rotator module¶
-
class
soc.fu.shift_rot.rotator.Rotator¶ Bases:
nmigen.hdl.ir.ElaboratableRotator: covers multiple POWER9 rotate functions
supported modes:
- sl[wd]
- rlw*, rldic, rldicr, rldimi
- rldicl, sr[wd]
- sra[wd][i]
use as follows:
- shift = RB[0:7]
- arith = 1 when is_signed
- right_shift = 1 when insn_type is OP_SHR
- clear_left = 1 when insn_type is OP_RLC or OP_RLCL
- clear_right = 1 when insn_type is OP_RLC or OP_RLCR
-
elaborate(platform)¶
-
soc.fu.shift_rot.rotator.left_mask(m, mask_end)¶
-
soc.fu.shift_rot.rotator.right_mask(m, mask_begin)¶
soc.fu.shift_rot.rotl module¶
soc.fu.shift_rot.sr_input_record module¶
-
class
soc.fu.shift_rot.sr_input_record.CompSROpSubset(name=None)¶ Bases:
soc.fu.base_input_record.CompOpSubsetBasea copy of the relevant subset information from Decode2Execute1Type needed for ALU operations. use with eq_from_execute1 (below) to grab subsets.