Skip to main content

nxpu_ir/
lib.rs

1//! NxPU intermediate representation.
2//!
3//! An arena-based SSA IR for representing compute shader programs.
4//! Modeled after naga's architecture but tailored for NPU lowering.
5
6pub mod arena;
7mod display;
8mod error;
9mod expr;
10mod func;
11mod global;
12pub mod graph;
13mod stmt;
14mod types;
15
16pub use arena::{Arena, Handle, Range, UniqueArena};
17pub use display::{dump_module, format_type, format_type_inner};
18pub use error::IrError;
19pub use expr::{
20    AtomicFunction, BinaryOp, Expression, Literal, MathFunction, SwizzleComponent, UnaryOp,
21};
22pub use func::{EntryPoint, Function, FunctionArgument, FunctionResult, LocalVariable};
23pub use global::{AddressSpace, Binding, BuiltIn, GlobalVariable, ResourceBinding, StorageAccess};
24pub use graph::ActivationFunction;
25pub use stmt::{Barrier, Block, Statement};
26pub use types::{
27    ArraySize, Bytes, Dimension, MemoryLayout, Scalar, ScalarKind, StructMember, TensorShape, Type,
28    TypeInner, VectorSize,
29};
30
31/// A compiled NxPU IR module.
32#[derive(Clone, Debug, Default)]
33pub struct Module {
34    /// Deduplicated type arena.
35    pub types: UniqueArena<Type>,
36    /// Module-scope variables.
37    pub global_variables: Arena<GlobalVariable>,
38    /// Module-scope constant expressions.
39    pub global_expressions: Arena<Expression>,
40    /// Helper (non-entry-point) functions.
41    pub functions: Arena<Function>,
42    /// Compute entry points.
43    pub entry_points: Vec<EntryPoint>,
44}