%d THA 0b000 %d THB 0b001 %d AND 0b010 %d OR 0b011 %d SL 0b100 %d SR 0b101 declare addsub4 { input ina<4>, inb<4>, sub ; output sumdiff<4> ; instrin enable ; instr_arg enable(ina, inb, sub); } module alu4a{ input ina<4>, inb<4>, com<3> ; output y<4> ; instrin enable ; addsub4 as4 ; instruct enable alt { com==THA: y = ina ; /* Through A */ com==THB: y = inb ; /* Through B */ com==AND: y = ina & inb ; /* A and B */ com==OR: y = ina | inb ; /* A or B */ com==SL: y = ina<2:0>|| 0b0 ; /* Left Shift */ com==SR: y = 0b0 || ina<3:1> ; /* Right shift */ else: y = as4.enable(ina, inb, com<0>).sumdiff ; /* SUB/ADD */ } }