lift-tensor 0.2.0

LIFT-TENSOR: AI dialect — tensor types, attention, KV cache, MoE, quantisation
Documentation
use lift_core::dialect::Dialect;
use crate::ops::TensorOp;

#[derive(Debug)]
pub struct TensorDialect;

impl Dialect for TensorDialect {
    fn name(&self) -> &str { "tensor" }

    fn verify_op(&self, op_name: &str, num_inputs: usize, num_results: usize) -> Result<(), String> {
        let full_name = if op_name.starts_with("tensor.") {
            op_name.to_string()
        } else {
            format!("tensor.{}", op_name)
        };

        match TensorOp::from_name(&full_name) {
            Some(op) => {
                let (min_inputs, max_inputs) = op.num_inputs();
                if num_inputs < min_inputs || num_inputs > max_inputs {
                    return Err(format!(
                        "Operation {} expects {}-{} inputs, got {}",
                        full_name, min_inputs, max_inputs, num_inputs
                    ));
                }
                let _ = num_results;
                Ok(())
            }
            None => Err(format!("Unknown tensor operation: {}", full_name)),
        }
    }
}

pub fn register_tensor_dialect(registry: &mut lift_core::dialect::DialectRegistry) {
    registry.register(Box::new(TensorDialect));
}