From b2354de2756c4b51acebcbf90df1c81069d0c7b7 Mon Sep 17 00:00:00 2001
From: Tristan Gingold <tgingold@free.fr>
Date: Tue, 19 May 2020 05:36:56 +0200
Subject: vhdl-nodes: Rename and move shift/rotate predefined functions. Fix
 #1325

---
 python/libghdl/thin/vhdl/nodes.py | 74 +++++++++++++++++++--------------------
 src/synth/synth-oper.adb          | 12 +++----
 src/synth/synth-static_oper.adb   | 11 +++---
 src/vhdl/vhdl-ieee-numeric.adb    | 16 ++++-----
 src/vhdl/vhdl-nodes.ads           | 18 +++++-----
 5 files changed, 64 insertions(+), 67 deletions(-)

diff --git a/python/libghdl/thin/vhdl/nodes.py b/python/libghdl/thin/vhdl/nodes.py
index dd79111ce..d40f1560e 100644
--- a/python/libghdl/thin/vhdl/nodes.py
+++ b/python/libghdl/thin/vhdl/nodes.py
@@ -1318,43 +1318,43 @@ class Iir_Predefined:
     Ieee_Numeric_Std_Sla_Sgn_Int = 340
     Ieee_Numeric_Std_Sra_Uns_Int = 341
     Ieee_Numeric_Std_Sra_Sgn_Int = 342
-    Ieee_Numeric_Std_Rol_Uns_Nat = 343
-    Ieee_Numeric_Std_Ror_Uns_Nat = 344
-    Ieee_Numeric_Std_Rol_Sgn_Nat = 345
-    Ieee_Numeric_Std_Ror_Sgn_Nat = 346
-    Ieee_Numeric_Std_And_Uns_Uns = 347
-    Ieee_Numeric_Std_And_Sgn_Sgn = 348
-    Ieee_Numeric_Std_Or_Uns_Uns = 349
-    Ieee_Numeric_Std_Or_Sgn_Sgn = 350
-    Ieee_Numeric_Std_Nand_Uns_Uns = 351
-    Ieee_Numeric_Std_Nand_Sgn_Sgn = 352
-    Ieee_Numeric_Std_Nor_Uns_Uns = 353
-    Ieee_Numeric_Std_Nor_Sgn_Sgn = 354
-    Ieee_Numeric_Std_Xor_Uns_Uns = 355
-    Ieee_Numeric_Std_Xor_Sgn_Sgn = 356
-    Ieee_Numeric_Std_Xnor_Uns_Uns = 357
-    Ieee_Numeric_Std_Xnor_Sgn_Sgn = 358
-    Ieee_Numeric_Std_Not_Uns = 359
-    Ieee_Numeric_Std_Not_Sgn = 360
-    Ieee_Numeric_Std_Abs_Sgn = 361
-    Ieee_Numeric_Std_Neg_Uns = 362
-    Ieee_Numeric_Std_Neg_Sgn = 363
-    Ieee_Numeric_Std_Min_Uns_Uns = 364
-    Ieee_Numeric_Std_Min_Uns_Nat = 365
-    Ieee_Numeric_Std_Min_Nat_Uns = 366
-    Ieee_Numeric_Std_Min_Sgn_Sgn = 367
-    Ieee_Numeric_Std_Min_Sgn_Int = 368
-    Ieee_Numeric_Std_Min_Int_Sgn = 369
-    Ieee_Numeric_Std_Max_Uns_Uns = 370
-    Ieee_Numeric_Std_Max_Uns_Nat = 371
-    Ieee_Numeric_Std_Max_Nat_Uns = 372
-    Ieee_Numeric_Std_Max_Sgn_Sgn = 373
-    Ieee_Numeric_Std_Max_Sgn_Int = 374
-    Ieee_Numeric_Std_Max_Int_Sgn = 375
-    Ieee_Numeric_Std_Shl_Uns_Nat = 376
-    Ieee_Numeric_Std_Shr_Uns_Nat = 377
-    Ieee_Numeric_Std_Shl_Sgn_Nat = 378
-    Ieee_Numeric_Std_Shr_Sgn_Nat = 379
+    Ieee_Numeric_Std_And_Uns_Uns = 343
+    Ieee_Numeric_Std_And_Sgn_Sgn = 344
+    Ieee_Numeric_Std_Or_Uns_Uns = 345
+    Ieee_Numeric_Std_Or_Sgn_Sgn = 346
+    Ieee_Numeric_Std_Nand_Uns_Uns = 347
+    Ieee_Numeric_Std_Nand_Sgn_Sgn = 348
+    Ieee_Numeric_Std_Nor_Uns_Uns = 349
+    Ieee_Numeric_Std_Nor_Sgn_Sgn = 350
+    Ieee_Numeric_Std_Xor_Uns_Uns = 351
+    Ieee_Numeric_Std_Xor_Sgn_Sgn = 352
+    Ieee_Numeric_Std_Xnor_Uns_Uns = 353
+    Ieee_Numeric_Std_Xnor_Sgn_Sgn = 354
+    Ieee_Numeric_Std_Not_Uns = 355
+    Ieee_Numeric_Std_Not_Sgn = 356
+    Ieee_Numeric_Std_Abs_Sgn = 357
+    Ieee_Numeric_Std_Neg_Uns = 358
+    Ieee_Numeric_Std_Neg_Sgn = 359
+    Ieee_Numeric_Std_Min_Uns_Uns = 360
+    Ieee_Numeric_Std_Min_Uns_Nat = 361
+    Ieee_Numeric_Std_Min_Nat_Uns = 362
+    Ieee_Numeric_Std_Min_Sgn_Sgn = 363
+    Ieee_Numeric_Std_Min_Sgn_Int = 364
+    Ieee_Numeric_Std_Min_Int_Sgn = 365
+    Ieee_Numeric_Std_Max_Uns_Uns = 366
+    Ieee_Numeric_Std_Max_Uns_Nat = 367
+    Ieee_Numeric_Std_Max_Nat_Uns = 368
+    Ieee_Numeric_Std_Max_Sgn_Sgn = 369
+    Ieee_Numeric_Std_Max_Sgn_Int = 370
+    Ieee_Numeric_Std_Max_Int_Sgn = 371
+    Ieee_Numeric_Std_Shf_Left_Uns_Nat = 372
+    Ieee_Numeric_Std_Shf_Right_Uns_Nat = 373
+    Ieee_Numeric_Std_Shf_Left_Sgn_Nat = 374
+    Ieee_Numeric_Std_Shf_Right_Sgn_Nat = 375
+    Ieee_Numeric_Std_Rot_Left_Uns_Nat = 376
+    Ieee_Numeric_Std_Rot_Right_Uns_Nat = 377
+    Ieee_Numeric_Std_Rot_Left_Sgn_Nat = 378
+    Ieee_Numeric_Std_Rot_Right_Sgn_Nat = 379
     Ieee_Numeric_Std_Match_Log = 380
     Ieee_Numeric_Std_Match_Uns = 381
     Ieee_Numeric_Std_Match_Sgn = 382
diff --git a/src/synth/synth-oper.adb b/src/synth/synth-oper.adb
index c34ec4875..22e455b55 100644
--- a/src/synth/synth-oper.adb
+++ b/src/synth/synth-oper.adb
@@ -1638,16 +1638,16 @@ package body Synth.Oper is
                                   W, Get_Location (Expr)),
                   Create_Vec_Type_By_Length (W, Logic_Type));
             end;
-         when Iir_Predefined_Ieee_Numeric_Std_Shl_Uns_Nat
-           | Iir_Predefined_Ieee_Numeric_Std_Shl_Sgn_Nat =>
+         when Iir_Predefined_Ieee_Numeric_Std_Shf_Left_Uns_Nat
+           | Iir_Predefined_Ieee_Numeric_Std_Shf_Left_Sgn_Nat =>
             return Synth_Shift_Rotate (Ctxt, Id_Lsl, L, R, Expr);
-         when Iir_Predefined_Ieee_Numeric_Std_Shr_Uns_Nat =>
+         when Iir_Predefined_Ieee_Numeric_Std_Shf_Right_Uns_Nat =>
             return Synth_Shift_Rotate (Ctxt, Id_Lsr, L, R, Expr);
-         when Iir_Predefined_Ieee_Numeric_Std_Shr_Sgn_Nat =>
+         when Iir_Predefined_Ieee_Numeric_Std_Shf_Right_Sgn_Nat =>
             return Synth_Shift_Rotate (Ctxt, Id_Asr, L, R, Expr);
-         when Iir_Predefined_Ieee_Numeric_Std_Rol_Uns_Nat =>
+         when Iir_Predefined_Ieee_Numeric_Std_Rot_Left_Uns_Nat =>
             return Synth_Shift_Rotate (Ctxt, Id_Rol, L, R, Expr);
-         when Iir_Predefined_Ieee_Numeric_Std_Ror_Uns_Nat =>
+         when Iir_Predefined_Ieee_Numeric_Std_Rot_Right_Uns_Nat =>
             return Synth_Shift_Rotate (Ctxt, Id_Ror, L, R, Expr);
 
          when Iir_Predefined_Ieee_Numeric_Std_Min_Uns_Uns =>
diff --git a/src/synth/synth-static_oper.adb b/src/synth/synth-static_oper.adb
index b2c56aa8d..ade651703 100644
--- a/src/synth/synth-static_oper.adb
+++ b/src/synth/synth-static_oper.adb
@@ -847,19 +847,16 @@ package body Synth.Static_Oper is
             return Create_Memory_Discrete
               (Eval_Signed_To_Integer (Get_Memtyp (Param1), Expr), Res_Typ);
 
-         when Iir_Predefined_Ieee_Numeric_Std_Shl_Uns_Nat =>
+         when Iir_Predefined_Ieee_Numeric_Std_Shf_Left_Uns_Nat
+            | Iir_Predefined_Ieee_Numeric_Std_Shf_Left_Sgn_Nat =>
             return Shift_Vec
               (Get_Memtyp (Param1), Uns32 (Read_Discrete (Param2)),
                False, False);
-         when Iir_Predefined_Ieee_Numeric_Std_Shl_Sgn_Nat =>
-            return Shift_Vec
-              (Get_Memtyp (Param1), Uns32 (Read_Discrete (Param2)),
-               False, False);
-         when Iir_Predefined_Ieee_Numeric_Std_Shr_Uns_Nat =>
+         when Iir_Predefined_Ieee_Numeric_Std_Shf_Right_Uns_Nat =>
             return Shift_Vec
               (Get_Memtyp (Param1), Uns32 (Read_Discrete (Param2)),
                True, False);
-         when Iir_Predefined_Ieee_Numeric_Std_Shr_Sgn_Nat =>
+         when Iir_Predefined_Ieee_Numeric_Std_Shf_Right_Sgn_Nat =>
             return Shift_Vec
               (Get_Memtyp (Param1), Uns32 (Read_Discrete (Param2)),
                True, True);
diff --git a/src/vhdl/vhdl-ieee-numeric.adb b/src/vhdl/vhdl-ieee-numeric.adb
index 7be77ac8f..db368c380 100644
--- a/src/vhdl/vhdl-ieee-numeric.adb
+++ b/src/vhdl/vhdl-ieee-numeric.adb
@@ -494,20 +494,20 @@ package body Vhdl.Ieee.Numeric is
            (others => Iir_Predefined_None)));
 
    Shl_Patterns : constant Shift_Pattern_Type :=
-     (Type_Signed   => Iir_Predefined_Ieee_Numeric_Std_Shl_Sgn_Nat,
-      Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_Shl_Uns_Nat);
+     (Type_Signed   => Iir_Predefined_Ieee_Numeric_Std_Shf_Left_Sgn_Nat,
+      Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_Shf_Left_Uns_Nat);
 
    Shr_Patterns : constant Shift_Pattern_Type :=
-     (Type_Signed   => Iir_Predefined_Ieee_Numeric_Std_Shr_Sgn_Nat,
-      Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_Shr_Uns_Nat);
+     (Type_Signed   => Iir_Predefined_Ieee_Numeric_Std_Shf_Right_Sgn_Nat,
+      Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_Shf_Right_Uns_Nat);
 
    Rol_Patterns : constant Shift_Pattern_Type :=
-     (Type_Signed   => Iir_Predefined_Ieee_Numeric_Std_Rol_Sgn_Nat,
-      Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_Rol_Uns_Nat);
+     (Type_Signed   => Iir_Predefined_Ieee_Numeric_Std_Rot_Left_Sgn_Nat,
+      Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_Rot_Left_Uns_Nat);
 
    Ror_Patterns : constant Shift_Pattern_Type :=
-     (Type_Signed   => Iir_Predefined_Ieee_Numeric_Std_Ror_Sgn_Nat,
-      Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_Ror_Uns_Nat);
+     (Type_Signed   => Iir_Predefined_Ieee_Numeric_Std_Rot_Right_Sgn_Nat,
+      Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_Rot_Right_Uns_Nat);
 
    Sll_Patterns : constant Shift_Pattern_Type :=
      (Type_Signed   => Iir_Predefined_Ieee_Numeric_Std_Sll_Sgn_Int,
diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads
index 50ffbfcb0..bc37733d6 100644
--- a/src/vhdl/vhdl-nodes.ads
+++ b/src/vhdl/vhdl-nodes.ads
@@ -5642,11 +5642,6 @@ package Vhdl.Nodes is
       Iir_Predefined_Ieee_Numeric_Std_Sra_Uns_Int,
       Iir_Predefined_Ieee_Numeric_Std_Sra_Sgn_Int,
 
-      Iir_Predefined_Ieee_Numeric_Std_Rol_Uns_Nat,
-      Iir_Predefined_Ieee_Numeric_Std_Ror_Uns_Nat,
-      Iir_Predefined_Ieee_Numeric_Std_Rol_Sgn_Nat,
-      Iir_Predefined_Ieee_Numeric_Std_Ror_Sgn_Nat,
-
       Iir_Predefined_Ieee_Numeric_Std_And_Uns_Uns,
       Iir_Predefined_Ieee_Numeric_Std_And_Sgn_Sgn,
 
@@ -5691,10 +5686,15 @@ package Vhdl.Nodes is
       Iir_Predefined_Ieee_Numeric_Std_Max_Int_Sgn,
 
       --  Shift and rotate functions.
-      Iir_Predefined_Ieee_Numeric_Std_Shl_Uns_Nat,
-      Iir_Predefined_Ieee_Numeric_Std_Shr_Uns_Nat,
-      Iir_Predefined_Ieee_Numeric_Std_Shl_Sgn_Nat,
-      Iir_Predefined_Ieee_Numeric_Std_Shr_Sgn_Nat,
+      Iir_Predefined_Ieee_Numeric_Std_Shf_Left_Uns_Nat,
+      Iir_Predefined_Ieee_Numeric_Std_Shf_Right_Uns_Nat,
+      Iir_Predefined_Ieee_Numeric_Std_Shf_Left_Sgn_Nat,
+      Iir_Predefined_Ieee_Numeric_Std_Shf_Right_Sgn_Nat,
+
+      Iir_Predefined_Ieee_Numeric_Std_Rot_Left_Uns_Nat,
+      Iir_Predefined_Ieee_Numeric_Std_Rot_Right_Uns_Nat,
+      Iir_Predefined_Ieee_Numeric_Std_Rot_Left_Sgn_Nat,
+      Iir_Predefined_Ieee_Numeric_Std_Rot_Right_Sgn_Nat,
 
       --  Std_Match functions.
       Iir_Predefined_Ieee_Numeric_Std_Match_Log,
-- 
cgit v1.2.3