Trait ArrayCodegen

Source
pub trait ArrayCodegen: Clone {
    // Provided methods
    fn array_type<'c>(
        &self,
        _session: &TypingSession<'c, '_>,
        elem_ty: BasicTypeEnum<'c>,
        size: u64,
    ) -> impl BasicType<'c> { ... }
    fn emit_array_value<'c, H: HugrView<Node = Node>>(
        &self,
        ctx: &mut EmitFuncContext<'c, '_, H>,
        value: &ArrayValue,
    ) -> Result<BasicValueEnum<'c>> { ... }
    fn emit_array_op<'c, H: HugrView<Node = Node>>(
        &self,
        ctx: &mut EmitFuncContext<'c, '_, H>,
        op: ArrayOp,
        inputs: Vec<BasicValueEnum<'c>>,
        outputs: RowPromise<'c>,
    ) -> Result<()> { ... }
    fn emit_array_repeat<'c, H: HugrView<Node = Node>>(
        &self,
        ctx: &mut EmitFuncContext<'c, '_, H>,
        op: ArrayRepeat,
        func: BasicValueEnum<'c>,
    ) -> Result<BasicValueEnum<'c>> { ... }
    fn emit_array_scan<'c, H: HugrView<Node = Node>>(
        &self,
        ctx: &mut EmitFuncContext<'c, '_, H>,
        op: ArrayScan,
        src_array: BasicValueEnum<'c>,
        func: BasicValueEnum<'c>,
        initial_accs: &[BasicValueEnum<'c>],
    ) -> Result<(BasicValueEnum<'c>, Vec<BasicValueEnum<'c>>)> { ... }
}
Expand description

A helper trait for customising the lowering of hugr_core::std_extensions::collections::array types, hugr_core::ops::constant::CustomConsts, and ops.

Provided Methods§

Source

fn array_type<'c>( &self, _session: &TypingSession<'c, '_>, elem_ty: BasicTypeEnum<'c>, size: u64, ) -> impl BasicType<'c>

Source

fn emit_array_value<'c, H: HugrView<Node = Node>>( &self, ctx: &mut EmitFuncContext<'c, '_, H>, value: &ArrayValue, ) -> Result<BasicValueEnum<'c>>

Source

fn emit_array_op<'c, H: HugrView<Node = Node>>( &self, ctx: &mut EmitFuncContext<'c, '_, H>, op: ArrayOp, inputs: Vec<BasicValueEnum<'c>>, outputs: RowPromise<'c>, ) -> Result<()>

Source

fn emit_array_repeat<'c, H: HugrView<Node = Node>>( &self, ctx: &mut EmitFuncContext<'c, '_, H>, op: ArrayRepeat, func: BasicValueEnum<'c>, ) -> Result<BasicValueEnum<'c>>

Source

fn emit_array_scan<'c, H: HugrView<Node = Node>>( &self, ctx: &mut EmitFuncContext<'c, '_, H>, op: ArrayScan, src_array: BasicValueEnum<'c>, func: BasicValueEnum<'c>, initial_accs: &[BasicValueEnum<'c>], ) -> Result<(BasicValueEnum<'c>, Vec<BasicValueEnum<'c>>)>

Emit a hugr_core::std_extensions::collections::array::ArrayScan op.

Returns the resulting array and the final values of the accumulators.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§