pub mod cast;
pub mod collect;
pub mod commit;
pub mod commit_adapter;
pub mod contraction;
pub mod fetch;
pub mod fetch_adapter;
pub mod switch;
pub mod transpose;
pub mod vector;
pub use cast::*;
pub use collect::*;
pub use commit_adapter::{
CommitCastTensor, CommitTrimTensor, CommitValidCountPackTensor, PositionCommitCast, PositionCommitTrim,
PositionCommitValidCountPack,
};
pub use contraction::*;
pub use fetch::*;
pub use fetch_adapter::*;
pub use switch::*;
pub use transpose::*;
use crate::engine::vector::tensor::PositionVectorFinal;
use crate::tensor::tu::{Position, PositionBegin};
pub trait CanApplyFetch: Position {}
#[diagnostic::on_unimplemented(
message = "`{Self}` cannot lift onto `Chip`",
label = "lift onto `Chip` here",
note = "`fetch_chip_lift` is the outermost lift, so it must come before `fetch_cluster_lift` and `fetch_slice_lift`, and a read lifts onto `Chip` at most once"
)]
pub trait CanApplyFetchChipLift: Position {}
#[diagnostic::on_unimplemented(
message = "`{Self}` cannot lift onto `Cluster`",
label = "lift onto `Cluster` here",
note = "`fetch_cluster_lift` comes after `fetch_chip_lift` and before `fetch_slice_lift`, and a read lifts onto `Cluster` at most once"
)]
pub trait CanApplyFetchClusterLift: Position {}
#[diagnostic::on_unimplemented(
message = "`{Self}` cannot lift onto `Slice`",
label = "lift onto `Slice` here",
note = "`fetch_slice_lift` is the innermost lift, so it comes after `fetch_chip_lift` and `fetch_cluster_lift`, and a read lifts onto `Slice` at most once"
)]
pub trait CanApplyFetchSliceLift: Position {}
pub trait CanApplyFetchMask: Position {}
pub trait CanApplyFetchTableLookup: Position {}
pub trait CanApplyFetchCast: Position {}
pub trait CanApplyFetchZeroPointSub: Position {}
pub trait CanApplySwitch: Position {}
pub trait CanApplyCollect: Position {}
pub trait CanApplyToTrf: Position {}
pub trait CanApplyToVrf: Position {}
pub trait CanApplyContractOuter: Position {}
pub trait CanApplyVectorInit: Position {}
pub trait CanApplyCast: Position {}
pub trait CanApplyTranspose: Position {}
pub trait CanApplyCommitTrim: Position {}
pub trait CanApplyCommitCast: Position {}
pub trait CanApplyCommitValidCountPack: Position {}
pub trait CanApplyCommit: Position {}
impl CanApplyFetch for PositionBegin {}
impl CanApplyFetchChipLift for PositionFetch {}
impl CanApplyFetchClusterLift for PositionFetch {}
impl CanApplyFetchClusterLift for PositionFetchChipLift {}
impl CanApplyFetchSliceLift for PositionFetch {}
impl CanApplyFetchSliceLift for PositionFetchChipLift {}
impl CanApplyFetchSliceLift for PositionFetchClusterLift {}
impl CanApplyFetchMask for PositionFetch {}
impl CanApplyFetchMask for PositionFetchChipLift {}
impl CanApplyFetchMask for PositionFetchClusterLift {}
impl CanApplyFetchMask for PositionFetchSliceLift {}
impl CanApplyFetchTableLookup for PositionFetch {}
impl CanApplyFetchTableLookup for PositionFetchChipLift {}
impl CanApplyFetchTableLookup for PositionFetchClusterLift {}
impl CanApplyFetchTableLookup for PositionFetchSliceLift {}
impl CanApplyFetchTableLookup for PositionFetchMask {}
impl CanApplyFetchCast for PositionFetch {}
impl CanApplyFetchCast for PositionFetchChipLift {}
impl CanApplyFetchCast for PositionFetchClusterLift {}
impl CanApplyFetchCast for PositionFetchSliceLift {}
impl CanApplyFetchCast for PositionFetchMask {}
impl CanApplyFetchCast for PositionFetchTableLookup {}
impl CanApplyFetchZeroPointSub for PositionFetch {}
impl CanApplyFetchZeroPointSub for PositionFetchChipLift {}
impl CanApplyFetchZeroPointSub for PositionFetchClusterLift {}
impl CanApplyFetchZeroPointSub for PositionFetchSliceLift {}
impl CanApplyFetchZeroPointSub for PositionFetchMask {}
impl CanApplyFetchZeroPointSub for PositionFetchTableLookup {}
impl CanApplyFetchZeroPointSub for PositionFetchCast {}
impl CanApplySwitch for PositionFetch {}
impl CanApplySwitch for PositionFetchChipLift {}
impl CanApplySwitch for PositionFetchClusterLift {}
impl CanApplySwitch for PositionFetchSliceLift {}
impl CanApplySwitch for PositionFetchMask {}
impl CanApplySwitch for PositionFetchTableLookup {}
impl CanApplySwitch for PositionFetchCast {}
impl CanApplySwitch for PositionFetchZeroPointSub {}
impl CanApplyCollect for PositionFetch {}
impl CanApplyCollect for PositionFetchChipLift {}
impl CanApplyCollect for PositionFetchClusterLift {}
impl CanApplyCollect for PositionFetchSliceLift {}
impl CanApplyCollect for PositionFetchMask {}
impl CanApplyCollect for PositionFetchTableLookup {}
impl CanApplyCollect for PositionFetchCast {}
impl CanApplyCollect for PositionFetchZeroPointSub {}
impl CanApplyCollect for PositionSwitch {}
impl CanApplyToTrf for PositionCollect {}
impl CanApplyToVrf for PositionCollect {}
impl CanApplyToVrf for PositionVectorFinal {}
impl CanApplyContractOuter for PositionCollect {}
impl CanApplyVectorInit for PositionCollect {}
impl CanApplyVectorInit for PositionContraction {}
impl CanApplyCast for PositionCollect {}
impl CanApplyCast for PositionContraction {}
impl CanApplyCast for PositionVectorFinal {}
impl CanApplyTranspose for PositionCollect {}
impl CanApplyTranspose for PositionContraction {}
impl CanApplyTranspose for PositionVectorFinal {}
impl CanApplyTranspose for PositionCast {}
impl CanApplyCommitTrim for PositionCollect {}
impl CanApplyCommitTrim for PositionContraction {}
impl CanApplyCommitTrim for PositionVectorFinal {}
impl CanApplyCommitTrim for PositionCast {}
impl CanApplyCommitTrim for PositionTranspose {}
impl CanApplyCommitCast for PositionCommitTrim {}
impl CanApplyCommitValidCountPack for PositionCommitTrim {}
impl CanApplyCommit for PositionCommitTrim {}
impl CanApplyCommit for PositionCommitCast {}
impl CanApplyCommit for PositionCommitValidCountPack {}