package jazz.circuit.expr; ////////////////////////////////////////////////////////////////////////////// // // Implementation of boolean operators for boolean expressions // // Author: Francois.Bourdoncle@ensmp.fr // ////////////////////////////////////////////////////////////////////////////// Builtin.(|)(e1@BoolExpr, e2@BoolExpr) = new BoolExpr(e = new _OrExpr(e1 = e1.e, e2 = e2.e)); Builtin.(&)(e1@BoolExpr, e2@BoolExpr) = new BoolExpr(e = new _AndExpr(e1 = e1.e, e2 = e2.e)); Builtin.(~)(e@BoolExpr) = new BoolExpr(e = new _NotExpr(e = e.e)); Builtin.cond(e0@BoolExpr, e1@BoolExpr, e2@BoolExpr) = new BoolExpr(e = new _MuxExpr(e0 = e0.e, e1 = e1.e, e2 = e2.e)); Builtin.(^)(e1@BoolExpr, e2@BoolExpr) = new BoolExpr(e = new _XorExpr(e1 = e1.e, e2 = e2.e)); ////////////////////////////////////////////////////////////////////////////// // // The register operator // ////////////////////////////////////////////////////////////////////////////// BoolExpr.reg(e@BoolExpr) = new BoolExpr(e = new _RegExpr(e = e.e));