onednnl 0.0.1

high-level bindings to oneDNN Deep Learning library
Documentation
use onednnl_sys::dnnl_graph_op_attr_t::{dnnl_graph_op_attr_max, dnnl_graph_op_attr_min};

use crate::graph::{
    op::{OneDNNGraphOp, OneDNNGraphOpType},
    spec::{OpSpec, RequiredAttrs},
};

pub struct ClampSpec;

impl OpSpec for ClampSpec {
    const KIND: OneDNNGraphOpType = OneDNNGraphOp::CLAMP;
}

#[derive(Debug, Clone, Copy)]
pub struct ClampAttrs {
    pub min: f32,
    pub max: f32,
}

impl From<ClampAttrs> for RequiredAttrs {
    fn from(attrs: ClampAttrs) -> Self {
        RequiredAttrs::Some(vec![
            (dnnl_graph_op_attr_min, vec![attrs.min].into()),
            (dnnl_graph_op_attr_max, vec![attrs.max].into()),
        ])
    }
}