clash-ghc-0.3.1: primitives/clash.sized.signed.json
[ { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.eqS"
, "templateE" : "~ARG[0] = ~ARG[1]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.gtS"
, "templateE" : "~ARG[0] > ~ARG[1]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.ltS"
, "templateE" : "~ARG[0] < ~ARG[1]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.geS"
, "templateE" : "~ARG[0] >= ~ARG[1]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.leS"
, "templateE" : "~ARG[0] <= ~ARG[1]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.minBoundS"
, "templateE" : "signed'((~LIT[0]-1) => '1', (~LIT[0]-2) downto 0 => '0')"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.maxBoundS"
, "templateE" : "signed'((~LIT[0]-1) => '0', (~LIT[0]-2) downto 0 => '1')"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.plusS"
, "templateE" : "~ARG[1] + ~ARG[2]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.minS"
, "templateE" : "~ARG[1] - ~ARG[2]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.timesS"
, "templateE" : "resize(~ARG[1] * ~ARG[2], ~LIT[0])"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.negateS"
, "templateE" : "-~ARG[1]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.absS"
, "templateE" : "abs ~ARG[1]"
}
}
, { "Primitive" :
{ "name" : "CLaSH.Sized.Signed.fromIntegerS"
, "primType" : "Function"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.quotS"
, "templateE" : "~ARG[1] / ~ARG[2]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.remS"
, "templateE" : "~ARG[1] rem ~ARG[2]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.divS"
, "templateD" :
"~SYM[0]_divS : block
signal ~SYM[1] : ~TYP[1];
signal ~SYM[2] : ~TYP[2];
signal ~SYM[3] : ~TYP[1];
begin
~SYM[1] <= ~ARG[1];
~SYM[2] <= ~ARG[2];
~SYM[3] <= ~SYM[1] / ~SYM[2];
~RESULT <= ~SYM[3] - to_signed(1,~LIT[0]) when ~SYM[1](~SYM[1]'high) = not (~SYM[2](~SYM[2]'high)) else
~SYM[3];
end block;"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.modS"
, "templateE" : "~ARG[1] mod ~ARG[2]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.toIntegerS"
, "templateE" : "to_integer(~ARG[0])"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.andS"
, "templateE" : "~ARG[1] and ~ARG[2]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.orS"
, "templateE" : "~ARG[1] or ~ARG[2]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.xorS"
, "templateE" : "~ARG[1] xor ~ARG[2]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.complementS"
, "templateE" : "not ~ARG[1]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.bitS"
, "templateD" :
"~SYM[0]_bitS : block
signal ~SYM[1] : ~TYP[1];
begin
~SYM[1] <= ~ARG[1];
process(~SYM[1])
variable ~SYM[2] : ~TYPO;
begin
~SYM[2] := (others => '0');
-- pragma translate_off
if ~SYM[1] < ~SYM[2]'low or ~SYM[1] > ~SYM[2]'high then
assert false report (\"Index: \" & integer'image(~SYM[1]) & \", is out of bounds: \" & integer'image(~SYM[2]'low) & \" downto \" & integer'image(~SYM[2]'high)) severity warning;
~SYM[2] := ~ERRORO;
else
-- pragma translate_on
~SYM[2](~SYM[1]) := '1';
-- pragma translate_off
end if;
-- pragma translate_on;
~RESULT <= ~SYM[2];
end process;
end block;"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.testBitS"
, "templateD" :
"~SYM[0]_testBitS : block
signal ~SYM[1] : ~TYP[1];
signal ~SYM[2] : ~TYP[2];
begin
~SYM[1] <= ~ARG[1];
~SYM[2] <= ~ARG[2];
-- pragma translate_off
process(~SYM[1],~SYM[2]) begin
if ~SYM[2] < ~SYM[1]'low or ~SYM[2] > ~SYM[1]'high then
assert false report (\"Index: \" & integer'image(~SYM[2]) & \", is out of bounds: \" & integer'image(~SYM[1]'low) & \" downto \" & integer'image(~SYM[1]'high)) severity warning;
~RESULT <= ~ERRORO;
else
-- pragma translate_on
~RESULT <= ~SYM[1](~SYM[2]) = '1';
-- pragma translate_off
end if;
end process;
-- pragma translate_on
end block;"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.shiftLS"
, "templateE" : "shift_left(~ARG[1],~ARG[2])"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.shiftRS"
, "templateE" : "shift_right(~ARG[1],~ARG[2])"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.rotateLS"
, "templateE" : "rotate_left(~ARG[1],~ARG[2])"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.rotateRS"
, "templateE" : "rotate_right(~ARG[1],~ARG[2])"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.finiteBitSizeS"
, "templateE" : "~LIT[0]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.toBitVector"
, "templateE" : "std_logic_vector(~ARG[1])"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.fromBitVector"
, "templateE" : "signed(~ARG[1])"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.resizeS"
, "templateE" : "resize(~ARG[2],~LIT[1])"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.plusS2"
, "templateE" : "~ARG[1] + ~ARG[2]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.minusS2"
, "templateE" : "~ARG[1] - ~ARG[2]"
}
}
, { "BlackBox" :
{ "name" : "CLaSH.Sized.Signed.multS2"
, "templateE" : "~ARG[1] * ~ARG[2]"
}
}
]