diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/synth/synth-oper.adb | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/synth/synth-oper.adb b/src/synth/synth-oper.adb index 35906eee5..caa5b3742 100644 --- a/src/synth/synth-oper.adb +++ b/src/synth/synth-oper.adb @@ -820,6 +820,19 @@ package body Synth.Oper is return Synth_Vec_Reduce_Monadic(Id_Red_Or); when Iir_Predefined_Ieee_1164_Condition_Operator => return Operand; + when Iir_Predefined_Integer_Negation => + if Is_Const (Operand) then + return Create_Value_Discrete (-Operand.Scal, Operand.Typ); + else + declare + N : Net; + begin + N := Build_Monadic + (Build_Context, Id_Neg, Get_Net (Operand)); + Set_Location (N, Loc); + return Create_Value_Net (N, Operand.Typ); + end; + end if; when others => Error_Msg_Synth (+Loc, |