X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=insn_helpers.vhdl;h=2ddcadb005fd393ec6f37234d2d9bf23f6030a83;hb=cb1e3f6d705c6b1808e96ef6e5873c18e9d33a36;hp=592acb02ca858ae22e78b158ab38d158c0582fa5;hpb=6d6cf59bb76b907abb9bd43c1e95dee94ee38afa;p=microwatt.git diff --git a/insn_helpers.vhdl b/insn_helpers.vhdl index 592acb0..2ddcadb 100644 --- a/insn_helpers.vhdl +++ b/insn_helpers.vhdl @@ -31,12 +31,18 @@ package insn_helpers is function insn_bh (insn_in : std_ulogic_vector) return std_ulogic_vector; function insn_d (insn_in : std_ulogic_vector) return std_ulogic_vector; function insn_ds (insn_in : std_ulogic_vector) return std_ulogic_vector; + function insn_dq (insn_in : std_ulogic_vector) return std_ulogic_vector; function insn_dx (insn_in : std_ulogic_vector) return std_ulogic_vector; function insn_to (insn_in : std_ulogic_vector) return std_ulogic_vector; function insn_bc (insn_in : std_ulogic_vector) return std_ulogic_vector; function insn_sh (insn_in : std_ulogic_vector) return std_ulogic_vector; function insn_me (insn_in : std_ulogic_vector) return std_ulogic_vector; function insn_mb (insn_in : std_ulogic_vector) return std_ulogic_vector; + function insn_frt (insn_in : std_ulogic_vector) return std_ulogic_vector; + function insn_fra (insn_in : std_ulogic_vector) return std_ulogic_vector; + function insn_frb (insn_in : std_ulogic_vector) return std_ulogic_vector; + function insn_frc (insn_in : std_ulogic_vector) return std_ulogic_vector; + function insn_u (insn_in : std_ulogic_vector) return std_ulogic_vector; end package insn_helpers; package body insn_helpers is @@ -185,6 +191,11 @@ package body insn_helpers is return insn_in(15 downto 2); end; + function insn_dq (insn_in : std_ulogic_vector) return std_ulogic_vector is + begin + return insn_in(15 downto 4); + end; + function insn_dx (insn_in : std_ulogic_vector) return std_ulogic_vector is begin return insn_in(15 downto 6) & insn_in(20 downto 16) & insn_in(0); @@ -214,4 +225,29 @@ package body insn_helpers is begin return insn_in(5) & insn_in(10 downto 6); end; + + function insn_frt(insn_in : std_ulogic_vector) return std_ulogic_vector is + begin + return insn_in(25 downto 21); + end; + + function insn_fra(insn_in : std_ulogic_vector) return std_ulogic_vector is + begin + return insn_in(20 downto 16); + end; + + function insn_frb(insn_in : std_ulogic_vector) return std_ulogic_vector is + begin + return insn_in(15 downto 11); + end; + + function insn_frc(insn_in : std_ulogic_vector) return std_ulogic_vector is + begin + return insn_in(10 downto 6); + end; + + function insn_u(insn_in : std_ulogic_vector) return std_ulogic_vector is + begin + return insn_in(15 downto 12); + end; end package body insn_helpers;