#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![warn(missing_docs)]
#![allow(clippy::missing_safety_doc)]
extern crate alloc;
pub mod cache;
pub mod driver;
pub mod kernel;
pub mod scalar;
pub mod simd;
pub mod tuning;
mod api;
#[doc(hidden)]
pub mod adapter;
mod dispatch;
mod pack;
mod parallel;
mod special;
mod workspace;
#[cfg(feature = "epilogue")]
pub use api::{
Activation, Bias, gemm_batched_fused, gemm_batched_fused_unchecked,
gemm_batched_fused_unchecked_with, gemm_batched_fused_with, gemm_fused, gemm_fused_unchecked,
gemm_fused_unchecked_with, gemm_fused_with, gemm_map, gemm_map_unchecked,
gemm_map_unchecked_with, gemm_map_with, gemm_packed_a_fused, gemm_packed_a_fused_unchecked,
gemm_packed_a_fused_unchecked_with, gemm_packed_a_fused_with, gemm_packed_b_fused,
gemm_packed_b_fused_unchecked, gemm_packed_b_fused_unchecked_with, gemm_packed_b_fused_with,
};
pub use api::{
BatchProblem, MatMut, MatRef, PackedLhs, PackedRhs, gemm, gemm_batched,
gemm_batched_ptr_unchecked, gemm_batched_slice, gemm_batched_unchecked,
gemm_batched_unchecked_with, gemm_batched_with, gemm_packed_a, gemm_packed_a_unchecked,
gemm_packed_a_unchecked_with, gemm_packed_a_with, gemm_packed_b, gemm_packed_b_unchecked,
gemm_packed_b_unchecked_with, gemm_packed_b_with, gemm_unchecked, gemm_unchecked_with,
gemm_with, prepack_lhs, prepack_lhs_unchecked, prepack_rhs, prepack_rhs_unchecked,
};
#[cfg(all(feature = "int8", feature = "epilogue"))]
pub use api::{
RequantScale, Requantize, gemm_i8_requant, gemm_i8_requant_u8, gemm_i8_requant_u8_unchecked,
gemm_i8_requant_u8_unchecked_with, gemm_i8_requant_u8_with, gemm_i8_requant_unchecked,
gemm_i8_requant_unchecked_with, gemm_i8_requant_with,
};
#[cfg(feature = "complex")]
pub use api::{gemm_cplx, gemm_cplx_unchecked, gemm_cplx_unchecked_with, gemm_cplx_with};
#[cfg(all(feature = "complex", feature = "epilogue"))]
pub use api::{
gemm_cplx_fused, gemm_cplx_fused_unchecked, gemm_cplx_fused_unchecked_with,
gemm_cplx_fused_with,
};
#[cfg(feature = "int8")]
pub use api::{
gemm_i8, gemm_i8_packed_b, gemm_i8_packed_b_unchecked, gemm_i8_packed_b_unchecked_with,
gemm_i8_packed_b_with, gemm_i8_unchecked, gemm_i8_unchecked_with, gemm_i8_with, prepack_rhs_i8,
prepack_rhs_i8_unchecked,
};
#[cfg(feature = "complex")]
pub use dispatch::ComplexScalar;
pub use dispatch::GemmProblem;
pub use dispatch::GemmScalar;
#[cfg(feature = "epilogue")]
pub use dispatch::{FusedScalar, MapScalar};
#[cfg(feature = "epilogue")]
pub use kernel::epilogue::BiasDim;
pub use parallel::Parallelism;
#[cfg(feature = "complex")]
pub use scalar::ComplexFloat;
#[cfg(feature = "half")]
pub use scalar::NarrowFloat;
pub use scalar::{Float, Scalar};
pub use workspace::Workspace;
#[doc(no_inline)]
pub use cache::{CacheTopology, Machine, topology};
#[cfg(feature = "half")]
#[doc(no_inline)]
pub use half::{bf16, f16};
#[cfg(feature = "complex")]
#[doc(no_inline)]
pub use num_complex::Complex;
#[cfg(feature = "complex")]
#[allow(non_camel_case_types)]
pub type c32 = num_complex::Complex<f32>;
#[cfg(feature = "complex")]
#[allow(non_camel_case_types)]
pub type c64 = num_complex::Complex<f64>;