diff options
author | Tristan Gingold <tgingold@free.fr> | 2019-11-13 18:59:16 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2019-11-13 18:59:16 +0100 |
commit | 444fb962c6612f9c68d5211ab0fabb1d2aac854e (patch) | |
tree | 8ac6a032f0108a507f91fcaebbd4fe3b117ae6de /src | |
parent | e8426164f027c019865e8df796a778989a3f9101 (diff) | |
download | ghdl-444fb962c6612f9c68d5211ab0fabb1d2aac854e.tar.gz ghdl-444fb962c6612f9c68d5211ab0fabb1d2aac854e.tar.bz2 ghdl-444fb962c6612f9c68d5211ab0fabb1d2aac854e.zip |
synth-static_oper: handle more operations.
Diffstat (limited to 'src')
-rw-r--r-- | src/synth/synth-static_oper.adb | 10 |
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 => |