aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2020-04-23 18:17:07 +0200
committerTristan Gingold <tgingold@free.fr>2020-04-23 18:17:07 +0200
commit9e4aca9a9df5d2831a1981abf6a46182bcef33d1 (patch)
treecb4ae70e05b796dc984e03a77605da8bbfb8204e /src/synth
parentf8b34e604544703c5bdf6ec80bc0dc9f76e1f7d9 (diff)
downloadghdl-9e4aca9a9df5d2831a1981abf6a46182bcef33d1.tar.gz
ghdl-9e4aca9a9df5d2831a1981abf6a46182bcef33d1.tar.bz2
ghdl-9e4aca9a9df5d2831a1981abf6a46182bcef33d1.zip
synth-oper: handle more operations (comparaisons from std_logic_unsigned).
Diffstat (limited to 'src/synth')
-rw-r--r--src/synth/synth-aggr.adb3
-rw-r--r--src/synth/synth-oper.adb30
2 files changed, 18 insertions, 15 deletions
diff --git a/src/synth/synth-aggr.adb b/src/synth/synth-aggr.adb
index ad8b5ea05..beaab3aa9 100644
--- a/src/synth/synth-aggr.adb
+++ b/src/synth/synth-aggr.adb
@@ -467,7 +467,8 @@ package body Synth.Aggr is
(Syn_Inst, Get_Type (Aggr));
return Synth_Aggregate_Array (Syn_Inst, Aggr, Res_Type);
end;
- when Type_Vector | Type_Array =>
+ when Type_Vector
+ | Type_Array =>
return Synth_Aggregate_Array (Syn_Inst, Aggr, Aggr_Type);
when Type_Record =>
return Synth_Aggregate_Record (Syn_Inst, Aggr, Aggr_Type);
diff --git a/src/synth/synth-oper.adb b/src/synth/synth-oper.adb
index 0bd5769e0..8b7b8a57c 100644
--- a/src/synth/synth-oper.adb
+++ b/src/synth/synth-oper.adb
@@ -1061,28 +1061,29 @@ package body Synth.Oper is
return Synth_Sdivmod (Id_Smod, Oper_Right);
when Iir_Predefined_Ieee_Numeric_Std_Eq_Uns_Uns
- | Iir_Predefined_Ieee_Std_Logic_Unsigned_Eq_Slv_Slv
- | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Uns_Uns =>
+ | Iir_Predefined_Ieee_Std_Logic_Unsigned_Eq_Slv_Slv
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Uns_Uns =>
-- "=" (Unsigned, Unsigned) [resize]
return Synth_Compare_Uns_Uns (Id_Eq, Expr_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Eq_Uns_Nat
- | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Uns_Nat =>
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Uns_Nat
+ | Iir_Predefined_Ieee_Std_Logic_Unsigned_Eq_Slv_Int =>
-- "=" (Unsigned, Natural)
return Synth_Compare_Uns_Nat (Id_Eq, Expr_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Eq_Nat_Uns
- | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Nat_Uns =>
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Nat_Uns =>
-- "=" (Natural, Unsigned) [resize]
return Synth_Compare_Nat_Uns (Id_Eq, Expr_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Eq_Sgn_Int
- | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Sgn_Int =>
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Sgn_Int =>
-- "=" (Signed, Integer)
return Synth_Compare_Sgn_Int (Id_Eq, Expr_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Eq_Sgn_Sgn
- | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Sgn_Sgn =>
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Sgn_Sgn =>
-- "=" (Signed, Signed) [resize]
return Synth_Compare_Sgn_Sgn (Id_Eq, Expr_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Eq_Int_Sgn
- | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Int_Sgn =>
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Eq_Int_Sgn =>
-- "=" (Integer, Signed)
return Synth_Compare_Int_Sgn (Id_Eq, Expr_Typ);
@@ -1144,28 +1145,29 @@ package body Synth.Oper is
return Synth_Compare_Int_Sgn (Id_Slt, Expr_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Le_Uns_Uns
- | Iir_Predefined_Ieee_Std_Logic_Unsigned_Le_Slv_Slv
- | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Uns_Uns =>
+ | Iir_Predefined_Ieee_Std_Logic_Unsigned_Le_Slv_Slv
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Uns_Uns =>
-- "<=" (Unsigned, Unsigned) [resize]
return Synth_Compare_Uns_Uns (Id_Ule, Expr_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Le_Uns_Nat
- | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Uns_Nat =>
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Uns_Nat
+ | Iir_Predefined_Ieee_Std_Logic_Unsigned_Le_Slv_Int =>
-- "<=" (Unsigned, Natural)
return Synth_Compare_Uns_Nat (Id_Ule, Expr_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Le_Nat_Uns
- | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Nat_Uns =>
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Nat_Uns =>
-- "<=" (Natural, Unsigned) [resize]
return Synth_Compare_Nat_Uns (Id_Ule, Expr_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Le_Sgn_Sgn
- | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Sgn_Sgn =>
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Sgn_Sgn =>
-- "<=" (Signed, Signed)
return Synth_Compare_Sgn_Sgn (Id_Sle, Expr_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Le_Sgn_Int
- | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Sgn_Int =>
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Sgn_Int =>
-- "<=" (Signed, Integer)
return Synth_Compare_Sgn_Int (Id_Sle, Expr_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Le_Int_Sgn
- | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Int_Sgn =>
+ | Iir_Predefined_Ieee_Numeric_Std_Match_Le_Int_Sgn =>
-- "<=" (Integer, Signed)
return Synth_Compare_Int_Sgn (Id_Sle, Expr_Typ);