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 |