diff options
-rw-r--r-- | src/synth/synth-expr.adb | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/synth/synth-expr.adb b/src/synth/synth-expr.adb index 45e065a26..4d80337b5 100644 --- a/src/synth/synth-expr.adb +++ b/src/synth/synth-expr.adb @@ -772,6 +772,25 @@ package body Synth.Expr is Get_Index_Type (Get_Type (Expr), 0), Iir_Index32 (Get_Width (R) + 1))); end; + when Iir_Predefined_Element_Element_Concat => + return Create_Value_Net + (Build_Concat2 (Build_Context, + Get_Net (Left, Ltype), + Get_Net (Right, Rtype)), + Create_Bounds_From_Length + (Syn_Inst, Get_Index_Type (Get_Type (Expr), 0), 2)); + when Iir_Predefined_Array_Array_Concat => + declare + L : constant Net := Get_Net (Left, Ltype); + R : constant Net := Get_Net (Right, Ltype); + begin + return Create_Value_Net + (Build_Concat2 (Build_Context, L, R), + Create_Bounds_From_Length + (Syn_Inst, + Get_Index_Type (Get_Type (Expr), 0), + Iir_Index32 (Get_Width (L) + Get_Width (R)))); + end; when Iir_Predefined_Integer_Plus => if Is_Const (Left) and then Is_Const (Right) then return Create_Value_Discrete (Left.Scal + Right.Scal); |