aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-11-13 18:59:16 +0100
committerTristan Gingold <tgingold@free.fr>2019-11-13 18:59:16 +0100
commit444fb962c6612f9c68d5211ab0fabb1d2aac854e (patch)
tree8ac6a032f0108a507f91fcaebbd4fe3b117ae6de /src/synth
parente8426164f027c019865e8df796a778989a3f9101 (diff)
downloadghdl-444fb962c6612f9c68d5211ab0fabb1d2aac854e.tar.gz
ghdl-444fb962c6612f9c68d5211ab0fabb1d2aac854e.tar.bz2
ghdl-444fb962c6612f9c68d5211ab0fabb1d2aac854e.zip
synth-static_oper: handle more operations.
Diffstat (limited to 'src/synth')
-rw-r--r--src/synth/synth-static_oper.adb10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/synth/synth-static_oper.adb b/src/synth/synth-static_oper.adb
index e928d8fcb..5626427c6 100644
--- a/src/synth/synth-static_oper.adb
+++ b/src/synth/synth-static_oper.adb
@@ -165,10 +165,12 @@ package body Synth.Static_Oper is
(Boolean'Pos (Left.Scal > Right.Scal), Boolean_Type);
when Iir_Predefined_Integer_Equality =>
return Create_Value_Discrete
- (Boolean'Pos (Left.Scal = Right.Scal), Boolean_Type);
+ (Boolean'Pos (Get_Const_Discrete (Left)
+ = Get_Const_Discrete (Right)), Boolean_Type);
when Iir_Predefined_Integer_Inequality =>
return Create_Value_Discrete
- (Boolean'Pos (Left.Scal /= Right.Scal), Boolean_Type);
+ (Boolean'Pos (Get_Const_Discrete (Left)
+ /= Get_Const_Discrete (Right)), Boolean_Type);
when Iir_Predefined_Physical_Physical_Div =>
return Create_Value_Discrete
(Left.Scal / Right.Scal, Res_Typ);
@@ -186,7 +188,9 @@ package body Synth.Static_Oper is
return Create_Value_Discrete
(Boolean'Pos (not Is_Equal (Left, Right)), Boolean_Type);
- when Iir_Predefined_Ieee_1164_Vector_And =>
+ when Iir_Predefined_Ieee_1164_Vector_And
+ | Iir_Predefined_Ieee_Numeric_Std_And_Uns_Uns
+ | Iir_Predefined_Ieee_Numeric_Std_And_Sgn_Sgn =>
return Synth_Vector_Dyadic (Left, Right, And_Table, Expr);
when Iir_Predefined_Ieee_1164_Vector_Or =>