aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-06-06 08:36:15 +0200
committerTristan Gingold <tgingold@free.fr>2022-06-06 08:36:15 +0200
commitedcf4c88a67fd4a6c0b3bae30a2a6cfb1f56cc4b (patch)
tree3ed53d5a02cf33fd99551b0eae6090f83a141c8a /src/synth
parent825099cdda3cbfbe5210570d6c2f0bb6abb360e2 (diff)
downloadghdl-edcf4c88a67fd4a6c0b3bae30a2a6cfb1f56cc4b.tar.gz
ghdl-edcf4c88a67fd4a6c0b3bae30a2a6cfb1f56cc4b.tar.bz2
ghdl-edcf4c88a67fd4a6c0b3bae30a2a6cfb1f56cc4b.zip
synth-vhdl_eval: handle more operations
Diffstat (limited to 'src/synth')
-rw-r--r--src/synth/synth-vhdl_eval.adb17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/synth/synth-vhdl_eval.adb b/src/synth/synth-vhdl_eval.adb
index 89743a5a8..9b5087a9d 100644
--- a/src/synth/synth-vhdl_eval.adb
+++ b/src/synth/synth-vhdl_eval.adb
@@ -791,6 +791,12 @@ package body Synth.Vhdl_Eval is
return Eval_Logic_Scalar (Left, Right, Or_Table);
when Iir_Predefined_Ieee_1164_Scalar_Xor =>
return Eval_Logic_Scalar (Left, Right, Xor_Table);
+ when Iir_Predefined_Ieee_1164_Scalar_Nand =>
+ return Eval_Logic_Scalar (Left, Right, Nand_Table);
+ when Iir_Predefined_Ieee_1164_Scalar_Nor =>
+ return Eval_Logic_Scalar (Left, Right, Nor_Table);
+ when Iir_Predefined_Ieee_1164_Scalar_Xnor =>
+ return Eval_Logic_Scalar (Left, Right, Xnor_Table);
when Iir_Predefined_Std_Ulogic_Match_Equality =>
return Eval_Logic_Scalar (Left, Right, Match_Eq_Table);
@@ -1345,7 +1351,7 @@ package body Synth.Vhdl_Eval is
return Create_Memory_U8 (Std_Ulogic'Pos (Res), Res_Typ);
end;
- when Iir_Predefined_Ieee_Math_Real_Pow =>
+ when Iir_Predefined_Ieee_Math_Real_Pow_Real_Real =>
declare
function Pow (L, R : Fp64) return Fp64;
pragma Import (C, Pow);
@@ -1354,6 +1360,15 @@ package body Synth.Vhdl_Eval is
(Pow (Read_Fp64 (Left), Read_Fp64 (Right)), Res_Typ);
end;
+ when Iir_Predefined_Ieee_Math_Real_Mod =>
+ declare
+ function Fmod (L, R : Fp64) return Fp64;
+ pragma Import (C, Fmod);
+ begin
+ return Create_Memory_Fp64
+ (Fmod (Read_Fp64 (Left), Read_Fp64 (Right)), Res_Typ);
+ end;
+
when others =>
Error_Msg_Synth
(+Expr, "eval_static_dyadic_predefined: unhandled "