library ieee; use ieee.std_logic_1164.all, ieee.numeric_bit.all; architecture behavior of ir_extender is begin extender : process ( d, immed_en, immed_size_26, immed_unsigned ) is begin if immed_en = '1' then if immed_size_26 = '1' then -- 26-bit immediate if immed_unsigned = '1' then q <= to_X01(bit_vector(resize(d(25 downto 0), 32))) after Tpd; else q <= to_X01(bit_vector(resize(signed(d(25 downto 0)), 32))) after Tpd; end if; else -- 16-bit immediate if immed_unsigned = '1' then q <= to_X01(bit_vector(resize(d(15 downto 0), 32))) after Tpd; else q <= to_X01(bit_vector(resize(signed(d(15 downto 0)), 32))) after Tpd; end if; end if; else q <= disabled_dlx_word after Tpd; end if; end process extender; end architecture behavior;