aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2020-03-11 18:42:01 +0100
committerTristan Gingold <tgingold@free.fr>2020-03-11 18:42:01 +0100
commitcae204093418e82299b93af809007aadd4cde36d (patch)
tree7370a644f30f66ce7a94df0b49c4ede8d9e1f578 /src
parent4c9651dfbb4aeb4bd22b1b6eb5436119f599f8e4 (diff)
downloadghdl-cae204093418e82299b93af809007aadd4cde36d.tar.gz
ghdl-cae204093418e82299b93af809007aadd4cde36d.tar.bz2
ghdl-cae204093418e82299b93af809007aadd4cde36d.zip
vhdl-ieee-std_logic_arith: recognize more conversions.
Diffstat (limited to 'src')
-rw-r--r--src/std_names.adb1
-rw-r--r--src/std_names.ads11
-rw-r--r--src/vhdl/vhdl-ieee-std_logic_arith.adb8
-rw-r--r--src/vhdl/vhdl-nodes.ads7
4 files changed, 21 insertions, 6 deletions
diff --git a/src/std_names.adb b/src/std_names.adb
index 1a7de9a6a..2511c779c 100644
--- a/src/std_names.adb
+++ b/src/std_names.adb
@@ -655,6 +655,7 @@ package body Std_Names is
Def ("conv_signed", Name_Conv_Signed);
Def ("conv_unsigned", Name_Conv_Unsigned);
Def ("conv_integer", Name_Conv_Integer);
+ Def ("conv_std_logic_vector", Name_Conv_Std_Logic_Vector);
Def ("ceil", Name_Ceil);
Def ("round", Name_Round);
Def ("log2", Name_Log2);
diff --git a/src/std_names.ads b/src/std_names.ads
index d6c7621c6..5b54d14e4 100644
--- a/src/std_names.ads
+++ b/src/std_names.ads
@@ -738,11 +738,12 @@ package Std_Names is
Name_Conv_Signed : constant Name_Id := Name_First_Ieee_Name + 025;
Name_Conv_Unsigned : constant Name_Id := Name_First_Ieee_Name + 026;
Name_Conv_Integer : constant Name_Id := Name_First_Ieee_Name + 027;
- Name_Ceil : constant Name_Id := Name_First_Ieee_Name + 028;
- Name_Round : constant Name_Id := Name_First_Ieee_Name + 029;
- Name_Log2 : constant Name_Id := Name_First_Ieee_Name + 030;
- Name_Sin : constant Name_Id := Name_First_Ieee_Name + 031;
- Name_Cos : constant Name_Id := Name_First_Ieee_Name + 032;
+ Name_Conv_Std_Logic_Vector : constant Name_Id := Name_First_Ieee_Name + 028;
+ Name_Ceil : constant Name_Id := Name_First_Ieee_Name + 029;
+ Name_Round : constant Name_Id := Name_First_Ieee_Name + 030;
+ Name_Log2 : constant Name_Id := Name_First_Ieee_Name + 031;
+ Name_Sin : constant Name_Id := Name_First_Ieee_Name + 032;
+ Name_Cos : constant Name_Id := Name_First_Ieee_Name + 033;
Name_Last_Ieee_Name : constant Name_Id := Name_Cos;
Name_First_Synthesis : constant Name_Id := Name_Last_Ieee_Name + 1;
diff --git a/src/vhdl/vhdl-ieee-std_logic_arith.adb b/src/vhdl/vhdl-ieee-std_logic_arith.adb
index 28bf913a1..e8a7fbd1b 100644
--- a/src/vhdl/vhdl-ieee-std_logic_arith.adb
+++ b/src/vhdl/vhdl-ieee-std_logic_arith.adb
@@ -45,6 +45,12 @@ package body Vhdl.Ieee.Std_Logic_Arith is
Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Integer_Int,
Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Integer_Log);
+ Conv_Vec_Patterns : constant Conv_Pattern_Type :=
+ (Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Vector_Sgn,
+ Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Vector_Uns,
+ Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Vector_Int,
+ Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Vector_Log);
+
Error : exception;
procedure Extract_Declarations (Pkg : Iir_Package_Declaration)
@@ -152,6 +158,8 @@ package body Vhdl.Ieee.Std_Logic_Arith is
case Get_Identifier (Decl) is
when Name_Conv_Unsigned =>
Def := Handle_Conv (Conv_Uns_Patterns);
+ when Name_Conv_Std_Logic_Vector =>
+ Def := Handle_Conv (Conv_Vec_Patterns);
when others =>
null;
end case;
diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads
index 54fba3db2..ed83cd157 100644
--- a/src/vhdl/vhdl-nodes.ads
+++ b/src/vhdl/vhdl-nodes.ads
@@ -5746,7 +5746,12 @@ package Vhdl.Nodes is
Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Integer_Int,
Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Integer_Uns,
Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Integer_Sgn,
- Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Integer_Log
+ Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Integer_Log,
+
+ Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Vector_Int,
+ Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Vector_Uns,
+ Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Vector_Sgn,
+ Iir_Predefined_Ieee_Std_Logic_Arith_Conv_Vector_Log
);
-- Return TRUE iff FUNC is a short-cut predefined function.