Interfacing function
eng


INTMUL

File content


function [x,y,typ]=INTMUL(job,arg1,arg2)
// Copyright INRIA
x=[];y=[];typ=[];
select job
case 'plot' then
  sgn=arg1.model.ipar
  standard_draw(arg1)
case 'getinputs' then
  [x,y,typ]=standard_inputs(arg1)
case 'getoutputs' then
  [x,y,typ]=standard_outputs(arg1)
case 'getorigin' then
  [x,y]=standard_origin(arg1)
case 'set' then
  x=arg1;
  graphics=arg1.graphics
  model=arg1.model
  exprs=graphics.exprs
  while %t do
    [ok,Datatype,np,exprs]=getvalue('Set INTMUL block parameters',..
			    ['Datatype (3=int32  4=int16 5=int8 ...)';..
                             'Do on Overflow(0=Nothing 1=Saturate 2=Error)'],..
                             list('vec',1,'vec',1),exprs)
    if ~ok then break,end
    if (np~=0 & np~=1 & np~=2) then message ("type is not supported");ok=%f;end
    it=Datatype*ones(1,2);
    ot=Datatype;
    if Datatype==3 then
	if np==0 then
           model.sim=list('matmul_i32n',4)
	elseif np==1 then
           model.sim=list('matmul_i32s',4)
	else 
	   model.sim=list('matmul_i32e',4)
	end
    elseif Datatype==4 then
	if np==0 then
           model.sim=list('matmul_i16n',4)
	elseif np==1 then
           model.sim=list('matmul_i16s',4)
	else 
	   model.sim=list('matmul_i16e',4)
	end
    elseif Datatype==5 then
	if np==0 then
           model.sim=list('matmul_i8n',4)
	elseif np==1 then
           model.sim=list('matmul_i8s',4)
	else 
	   model.sim=list('matmul_i8e',4)
	end
    elseif Datatype==6 then
	if np==0 then
           model.sim=list('matmul_ui32n',4)
	elseif np==1 then
           model.sim=list('matmul_ui32s',4)
	else 
	   model.sim=list('matmul_ui32e',4)
	end
    elseif Datatype==7 then
	if np==0 then
           model.sim=list('matmul_ui16n',4)
	elseif np==1 then
           model.sim=list('matmul_ui16s',4)
	else 
	   model.sim=list('matmul_ui16e',4)
	end
    elseif Datatype==8 then
	if np==0 then
           model.sim=list('matmul_ui8n',4)
	elseif np==1 then
           model.sim=list('matmul_ui8s',4)
	else 
	   model.sim=list('matmul_ui8e',4)
	end
    elseif Datatype>=0 then
      message("Datatype is not supported");
      ok=%f;
    end
    in=[model.in model.in2]
    out=[model.out model.out2]
    if ok then
      [model,graphics,ok]=set_io(model,graphics,...
                                 list(in,it),...
                                 list(out,ot),[],[])
    end
    if ok then
      model.ipar=np
      graphics.exprs=exprs
      x.graphics=graphics;x.model=model
      break
    end
  end

case 'set2' then
  x=arg1
  Datatype=x.outtyp
  np=x.ipar
    if Datatype==3 then
	if np==0 then
           x.sim=list('matmul_i32n',4)
	elseif np==1 then
           x.sim=list('matmul_i32s',4)
	else
	   x.sim=list('matmul_i32e',4)
	end
    elseif Datatype==4 then
	if np==0 then
           x.sim=list('matmul_i16n',4)
	elseif np==1 then
           x.sim=list('matmul_i16s',4)
	else
	   x.sim=list('matmul_i16e',4)
	end
    elseif Datatype==5 then
	if np==0 then
           x.sim=list('matmul_i8n',4)
	elseif np==1 then
           x.sim=list('matmul_i8s',4)
	else
	   x.sim=list('matmul_i8e',4)
	end
    elseif Datatype==6 then
	if np==0 then
           x.sim=list('matmul_ui32n',4)
	elseif np==1 then
           x.sim=list('matmul_ui32s',4)
	else
	   x.sim=list('matmul_ui32e',4)
	end
    elseif Datatype==7 then
	if np==0 then
           x.sim=list('matmul_ui16n',4)
	elseif np==1 then
           x.sim=list('matmul_ui16s',4)
	else
	   x.sim=list('matmul_ui16e',4)
	end
    elseif Datatype==8 then
	if np==0 then
           x.sim=list('matmul_ui8n',4)
	elseif np==1 then
           x.sim=list('matmul_ui8s',4)
	else
	   x.sim=list('matmul_ui8e',4)
	end
    else
      error("Non-integer datatype for input/output port is not supported.");
    end

case 'define' then
  sgn=0
  model=scicos_model()
  model.sim=list('matmul_i32',4)
  model.in=[-1;-2]
  model.out=-1
  model.in2=[-2;-3]
  model.out2=-3
  model.intyp=[3 3]
  model.outtyp=3
  model.rpar=[]
  model.ipar=sgn
  model.blocktype='c'
  model.dep_ut=[%t %f]

  
  exprs=[sci2exp(3);sci2exp(0)]
gr_i=['txt=['' INTMUL ''];';
    'xstringb(orig(1),orig(2),txt,sz(1),sz(2),''fill'')']
  x=standard_define([2 2],model, exprs,gr_i)
end
endfunction