cubecl-ir 0.11.1

Intermediate representation for CubeCL
Documentation
#![no_std]

pub extern crate alloc;
extern crate std;

// So `#[derive(EnumSetType)]` resolves `::cubecl_ir::` inside this crate as well as out.
extern crate self as cubecl_ir;

pub mod features;

mod address;
mod enum_set;
mod properties;
mod runtime_properties;
mod scope;
mod r#type;
mod type_hash;
mod value;

#[cfg(feature = "spirv")]
mod spirv;

#[cfg(feature = "amd")]
pub mod amd;
pub mod apfloat;
pub mod arena;
pub mod attributes;
pub mod convert;
pub mod dialect;
pub mod interfaces;
pub mod metadata;
#[cfg(feature = "nvidia")]
pub mod nvidia;
pub mod rewrite;
pub mod settings;
pub mod types;

pub use address::*;
pub use enum_set::*;
pub use properties::*;
pub use runtime_properties::*;
pub use scope::*;
pub use r#type::*;
pub use value::*;

pub use cubecl_macros_internal::EnumSetType;
pub(crate) use cubecl_macros_internal::TypeHash;
pub use type_hash::TypeHash;

pub mod prelude {
    pub use crate::{
        ContextExt, dialect::OperationPtrExt, rewrite::*, scope::FuncOpExt, verify_op_succ,
        verify_ty_succ,
    };
    pub use alloc::{vec, vec::Vec};
    pub use cubecl_macros_internal::{cube_op, op_traits, pass_name};
    pub use pliron::derive::derive_op_interface_impl as op_interfaces;
    pub use pliron::{
        attribute::AttributeDict,
        builtin::{attributes::TypeAttr, op_interfaces::*, type_interfaces::*},
        common_traits::Verify,
        context::{Context, Ptr},
        derive::*,
        graph::walkers::{
            IRNode, WALKCONFIG_POSTORDER_FORWARD, WALKCONFIG_POSTORDER_REVERSE,
            WALKCONFIG_PREORDER_FORWARD, WALKCONFIG_PREORDER_REVERSE,
        },
        irbuild::{
            IRStatus,
            dialect_conversion::{DialectConversion, DialectConversionRewriter, OperandsInfo},
            inserter::Inserter,
            listener::Recorder,
            match_rewrite::{MatchRewrite, MatchRewriter},
            rewriter::{IRRewriter, Rewriter},
        },
        location::Located,
        op::{Op, op_cast, op_impls},
        operation::Operation,
        pass::*,
        result::Result,
        r#type::{Type, TypeHandle, Typed, TypedHandle, type_cast, type_impls},
        value::{Use, Value},
    };
    pub type PassRewriter = pliron::irbuild::rewriter::IRRewriter<Recorder>;
}

pub use crate::rewrite::NamedRewrite;
pub use cubecl_macros_internal::{NamedRewrite, cube_op};

pub use pliron;