#![allow(unsafe_code)]
#![allow(
clippy::duplicate_mod,
clippy::too_many_arguments,
clippy::double_must_use,
clippy::module_inception,
clippy::should_implement_trait,
clippy::type_complexity
)]
extern crate self as vyre;
pub mod diagnostics;
pub mod fp_parity;
pub mod operation;
pub mod ir {
pub mod eval {
pub use crate::ir_eval::{
fold_binary_literal, fold_cast_literal, fold_fma_literal, fold_literal_tree,
fold_unary_literal,
};
}
pub use crate::ir_inner::model;
pub use crate::ir_inner::model::arena::{ArenaProgram, ExprArena, ExprRef};
pub use crate::ir_inner::model::expr::{Expr, ExprNode, Ident};
pub use crate::ir_inner::model::node::{Node, NodeExtension};
pub use crate::ir_inner::model::node_kind::{
EvalError, InterpCtx, NodeId, NodeStorage, OpId, RegionId, Value, VarId,
};
pub use crate::ir_inner::model::program::{
BufferDecl, CacheLocality, LinearType, MemoryHints, MemoryKind, Program, ShapePredicate,
NORMALIZED_PROGRAM_CACHE_DIGEST_VERSION,
};
pub use crate::ir_inner::model::program_graph::{
GraphInput, GraphNodeId, GraphOutput, GraphValueId, LivenessInterval, ProgramGraph,
ProgramGraphError, ProgramGraphNode, ProgramGraphValue, ShapeDim, ValueContract,
ValueLifetime,
};
pub mod stats {
pub use crate::ir_inner::model::program::{
NODE_KIND_ALL_GATHER, NODE_KIND_ALL_REDUCE, NODE_KIND_ASSIGN, NODE_KIND_ASYNC_LOAD,
NODE_KIND_ASYNC_STORE, NODE_KIND_ASYNC_WAIT, NODE_KIND_BARRIER, NODE_KIND_BLOCK,
NODE_KIND_BROADCAST, NODE_KIND_EXPRESSION_BEARING_MASK, NODE_KIND_IF,
NODE_KIND_INDIRECT_DISPATCH, NODE_KIND_LET, NODE_KIND_LOOP, NODE_KIND_OPAQUE,
NODE_KIND_REDUCE_SCATTER, NODE_KIND_REGION, NODE_KIND_RESUME, NODE_KIND_RETURN,
NODE_KIND_STORE, NODE_KIND_TRAP,
};
}
pub use crate::ir_inner::model::program::ProgramStats;
pub use crate::ir_inner::model::spec_types::{
AtomicOp, BinOp, BufferAccess, CollectiveOp, CommGroup, Convention, DataType, OpSignature,
SubgroupReduceOp, UnOp,
};
pub use crate::memory_model;
pub use crate::memory_model::MemoryOrdering;
pub use crate::optimizer::passes::fusion_cse::{cse, dce};
pub use crate::serial::text;
pub use crate::transform::inline::{
inline_calls, inline_calls_with_mode, inline_calls_with_resolver, inline_composite_calls,
OpResolver, UnresolvedCalls,
};
pub use crate::validate::depth::{
LimitState, DEFAULT_MAX_CALL_DEPTH, DEFAULT_MAX_NESTING_DEPTH, DEFAULT_MAX_NODE_COUNT,
};
pub use crate::validate::validate::validate;
pub use crate::validate::validation_error::ValidationError;
}
pub mod cpu_op;
pub(crate) mod ir_eval;
pub mod match_result;
pub mod memory_model;
pub mod perf;
pub mod program_caps;
pub mod dispatch;
pub mod algebra;
pub mod analysis;
pub mod allocation;
pub use algebra::algebraic_law_registry;
pub use algebra::algebraic_law_registry::{
has_law, is_associative, is_commutative, laws_for_op, AlgebraicLaw, AlgebraicLawRegistration,
};
pub use analysis::graph_view;
pub use dispatch::dialect_lookup;
pub use memory_model::MemoryOrdering;
pub mod opaque_payload;
pub mod vast;
pub use analysis::graph_view::{
from_graph, to_graph, DataEdge, DataflowKind, EdgeKind, GraphNode, GraphValidateError,
NodeGraph,
};
pub use dispatch::dialect_lookup::{AttrSchema, AttrType, Signature, TypedParam};
mod ir_inner {
pub mod model;
}
pub use algebra::composition;
pub use dispatch::extension;
pub mod hashing;
pub mod lower;
pub mod optimizer;
pub mod serial;
pub mod transform;
pub mod validate;
pub mod visit;
pub mod pass_substrate;
pub mod execution_plan;
pub mod error;
pub use error::{IrError, IrResult};
#[cfg(test)]
pub(crate) mod test_util;