/* * $Id: constant.h,v 1.1 2002/11/20 20:58:58 misto Exp $ */ #ifndef SMARC_PROC_CONSTANT_H #define SMARC_PROC_CONSTANT_H #include "circuit.h" #include "instr_word.h" class constant : public circuit { private: instr_word iw; public: constant( int nout ) : circuit(1, nout) {}; void process() { unsigned long res; iw = get_in(0); if ( iw.format == instr_word::primary_imm ) res = iw.imm13; else if (iw.format == instr_word::branch_format ) res = 4 * iw.dsp22; else if (iw.format == instr_word::call_format ) res = 4 * iw.dsp30; else if (iw.format == instr_word::sethi_format ) res = iw.imm22; for( int i = 0 ; i < num_out() ; i++ ) set_out( i, res ); } }; #endif