import public Compiler.Stablehlo.Dialect.StablehloEnumsdata ValueType : TypeTensorType : Shape -> DType -> ValueTypeA concrete tensor type
TypeRef : Nat -> Nat -> ValueTypePoints to the type of the value at this index and tag
Show ValueTyperecord Env : Type.counter : Env -> NatThe global counter
counter : Env -> NatThe global counter
.ops : Env -> List (Nat, Op)Local cached ops
ops : Env -> List (Nat, Op)Local cached ops
empty : EnvemptyFrom : Env -> EnvupdateCounterFrom : Env -> State Env ()data Value : Typerecord Fn : Nat -> TypeAn anonymous function. Approximates an MLIR `Region` or `Block` (these are somewhat synonymous
in spidr since all regions have exactly one block). `tag` labels the parameter set.
MkFn : Nat -> Vect arity ValueType -> Vect resultCount ValueType -> Vect resultCount Value -> Env -> Fn arity.env : Fn arity -> Env.paramTypes : Fn arity -> Vect arity ValueType0 .resultCount : Fn arity -> Nat.resultTypes : ({rec:0} : Fn arity) -> Vect (resultCount {rec:0}) ValueType.results : ({rec:0} : Fn arity) -> Vect (resultCount {rec:0}) Value.tag : Fn arity -> NatShow (Fn arity).tag : Fn arity -> Nattag : Fn arity -> Nat.paramTypes : Fn arity -> Vect arity ValueTypeparamTypes : Fn arity -> Vect arity ValueType.resultTypes : ({rec:0} : Fn arity) -> Vect (resultCount {rec:0}) ValueTyperesultTypes : ({rec:0} : Fn arity) -> Vect (resultCount {rec:0}) ValueType.results : ({rec:0} : Fn arity) -> Vect (resultCount {rec:0}) Valueresults : ({rec:0} : Fn arity) -> Vect (resultCount {rec:0}) Value.env : Fn arity -> Envenv : Fn arity -> Envdata BinaryOp : TypeCompare : ComparisonDirection -> BinaryOpAnd : BinaryOpOr : BinaryOpAdd : BinaryOpSub : BinaryOpMul : BinaryOpDiv : BinaryOpRem : BinaryOpPow : BinaryOpMin : BinaryOpMax : BinaryOpShiftRightLogical : BinaryOpShow BinaryOpdata UnaryOp : TypeNot : UnaryOpNeg : UnaryOpCeil : UnaryOpFloor : UnaryOpAbs : UnaryOpLog : UnaryOpExp : UnaryOpLogistic : UnaryOpSqrt : UnaryOpSin : UnaryOpCos : UnaryOpTan : UnaryOpTanh : UnaryOpErf : UnaryOpErfInv : UnaryOpSquare : UnaryOpAsin : UnaryOpAcos : UnaryOpAtan : UnaryOpSinh : UnaryOpCosh : UnaryOpAsinh : UnaryOpAcosh : UnaryOpAtanh : UnaryOpShow UnaryOpdata Op : TypeNamedFunc : Fn arity -> OpCorresponds approximately to a FuncOp. The FuncOp's name is determined by the `Fn`s tag.
We use the tag to correspond to both the parameter set and the function itself. I think this
is OK because the function determines the parameter set (notably we don't introduce any
regions with multiple blocks, so each FuncOp only has one block).
The function is assumed **not** to capture variables, see `Passes.removeCaptures`.
CallByName : Nat -> List ValueType -> List Value -> OpCall a named function, by name.
The named functions must be listed in the `Env`, else it will not be interpreted.
Lit : (shape : Shape) -> (dtype : DType) -> Literal shape (idrisType dtype) -> OpGrad : Shape -> Fn 1 -> Value -> OpMinValue : DType -> OpMaxValue : DType -> OpMinFiniteFloat : OpMaxFiniteFloat : OpIota : Shape -> DType -> Nat -> OpBitCastConvert : DType -> Shape -> Value -> OpConvert : DType -> Shape -> Value -> OpReshape : DType -> Shape -> Value -> OpSlice : List Nat -> List Nat -> List Nat -> Value -> OpDynamicSlice : List Value -> List Nat -> Value -> OpConcat : Nat -> Vect (S n) Value -> OpTranspose : List Nat -> Value -> OpBroadcast : DType -> Shape -> Shape -> Value -> OpMap : Fn arity -> Vect arity Value -> ValueType -> Shape -> OpReduce : Fn (n + n) -> Vect n Value -> List Nat -> Vect n Value -> OpSort : Fn 2 -> Nat -> Bool -> Value -> OpReverse : List Nat -> Value -> OpBinaryElementwise : BinaryOp -> Value -> Value -> OpUnaryElementwise : UnaryOp -> Value -> OpSelect : Value -> Value -> Value -> OpWhile : Fn n -> Fn n -> Vect n Value -> OpIf : ValueType -> Value -> Fn 0 -> Fn 0 -> OpDotGeneral : List Nat -> List Nat -> List Nat -> List Nat -> ValueType -> Value -> Value -> OpCholesky : Value -> OpTriangularSolve : Value -> Value -> Bool -> OpRng : Value -> ValueType -> Opdata OpRef : TypetagOpRef : Monad m => OpRef -> StateT Env m OpRefreserve : State Env Nat