rue-lir 0.3.0

Provides a low-level intermediate representation that compiles to CLVM.
Documentation
use id_arena::Id;

pub type LirId = Id<Lir>;

#[derive(Debug, Clone)]
pub enum Lir {
    Atom(Vec<u8>),
    Path(u32),
    Quote(LirId),
    Run(LirId, LirId),
    Curry(LirId, Vec<LirId>),
    Closure(LirId, Vec<LirId>),
    First(LirId),
    Rest(LirId),
    Cons(LirId, LirId),
    Listp(LirId),
    Add(Vec<LirId>),
    Sub(Vec<LirId>),
    Mul(Vec<LirId>),
    Div(LirId, LirId),
    Divmod(LirId, LirId),
    Mod(LirId, LirId),
    Modpow(LirId, LirId, LirId),
    Eq(LirId, LirId),
    Gt(LirId, LirId),
    GtBytes(LirId, LirId),
    Not(LirId),
    All(Vec<LirId>),
    Any(Vec<LirId>),
    If(LirId, LirId, LirId),
    Raise(Vec<LirId>),
    Concat(Vec<LirId>),
    Strlen(LirId),
    Substr(LirId, LirId, Option<LirId>),
    Logand(Vec<LirId>),
    Logior(Vec<LirId>),
    Logxor(Vec<LirId>),
    Lognot(LirId),
    Ash(LirId, LirId),
    Lsh(LirId, LirId),
    PubkeyForExp(LirId),
    G1Add(Vec<LirId>),
    G1Subtract(Vec<LirId>),
    G1Multiply(LirId, LirId),
    G1Negate(LirId),
    G1Map(LirId, Option<LirId>),
    G2Add(Vec<LirId>),
    G2Subtract(Vec<LirId>),
    G2Multiply(LirId, LirId),
    G2Negate(LirId),
    G2Map(LirId, Option<LirId>),
    BlsPairingIdentity(Vec<LirId>),
    BlsVerify(LirId, Vec<LirId>),
    Sha256(Vec<LirId>),
    Sha256Inline(Vec<LirId>),
    Keccak256(Vec<LirId>),
    CoinId(LirId, LirId, LirId),
    K1Verify(LirId, LirId, LirId),
    R1Verify(LirId, LirId, LirId),
}