diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/synth/synth-vhdl_eval.adb | 21 | 
1 files changed, 21 insertions, 0 deletions
| diff --git a/src/synth/synth-vhdl_eval.adb b/src/synth/synth-vhdl_eval.adb index f316f19e7..f64be7158 100644 --- a/src/synth/synth-vhdl_eval.adb +++ b/src/synth/synth-vhdl_eval.adb @@ -432,6 +432,13 @@ package body Synth.Vhdl_Eval is           when Iir_Predefined_Error =>              return Null_Memtyp; +         when Iir_Predefined_Boolean_Or +            | Iir_Predefined_Bit_Or +            | Iir_Predefined_Boolean_And +            | Iir_Predefined_Bit_And => +            --  Short-circuit operators. +            raise Internal_Error; +           when Iir_Predefined_Boolean_Xor              | Iir_Predefined_Bit_Xor =>              return Create_Memory_U8 @@ -439,6 +446,20 @@ package body Synth.Vhdl_Eval is                                xor Boolean'Val (Read_Discrete (Right))),                 Res_Typ); +         when Iir_Predefined_Boolean_Nand +            | Iir_Predefined_Bit_Nand => +            return Create_Memory_U8 +              (Boolean'Pos (not (Boolean'Val (Read_Discrete (Left)) +                                   and Boolean'Val (Read_Discrete (Right)))), +               Res_Typ); + +         when Iir_Predefined_Boolean_Nor +            | Iir_Predefined_Bit_Nor => +            return Create_Memory_U8 +              (Boolean'Pos (not (Boolean'Val (Read_Discrete (Left)) +                                   or Boolean'Val (Read_Discrete (Right)))), +               Res_Typ); +           when Iir_Predefined_Integer_Plus             | Iir_Predefined_Physical_Plus =>              declare | 
