17 | module Compiler.Stablehlo.Dialect.StablehloOps
20 | import Compiler.Array
21 | import Compiler.MLIR.IR.BuiltinAttributes
22 | import Compiler.MLIR.IR.Builders
23 | import Compiler.MLIR.IR.Location
24 | import Compiler.MLIR.IR.MLIRContext
25 | import Compiler.MLIR.IR.OpDefinition
26 | import Compiler.MLIR.IR.Operation
27 | import Compiler.MLIR.IR.Region
28 | import Compiler.MLIR.IR.Types
29 | import Compiler.MLIR.IR.Value
30 | import Compiler.MLIR.IR.ValueRange
31 | import Compiler.Stablehlo.Dialect.StablehloAttrs
32 | import Compiler.Stablehlo.Dialect.StablehloEnums
34 | ffi : String -> String
35 | ffi = libxla "c/stablehlo/dialect/StablehloOps.h"
38 | getOperationAux : HasIO io => GCAnyPtr -> (GCAnyPtr -> PrimIO AnyPtr) -> io Operation
39 | getOperationAux op f = MkOperation <$> (primIO $
f op)
41 | %foreign (ffi "MLIRContext_loadDialect_StablehloDialect")
42 | prim__loadDialectStablehloDialect : AnyPtr -> PrimIO ()
45 | loadDialectStablehloDialect : HasIO io => MLIRContext -> io ()
46 | loadDialectStablehloDialect (MkMLIRContext ctx) = primIO $
prim__loadDialectStablehloDialect ctx
48 | %foreign (ffi "ConstantOp_delete")
49 | prim__deleteConstantOp : AnyPtr -> PrimIO ()
52 | data ConstantOp = MkConstantOp GCAnyPtr
54 | %foreign (ffi "ConstantOp_create")
55 | prim__constantOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
57 | namespace ConstantOp
59 | create : HasIO io => OpBuilder -> Location -> DenseElementsAttr -> io ConstantOp
60 | create (MkOpBuilder builder) (MkLocation location) (MkDenseElementsAttr attr) = do
61 | op <- primIO $
prim__constantOpCreate builder location attr
62 | op <- onCollectAny' op (primIO . prim__deleteConstantOp)
63 | pure (MkConstantOp op)
65 | %foreign (ffi "ConstantOp_getOperation")
66 | prim__constantOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
70 | getOperation (MkConstantOp op) = getOperationAux op prim__constantOpGetOperation
72 | %foreign (ffi "IotaOp_delete")
73 | prim__deleteIotaOp : AnyPtr -> PrimIO ()
76 | data IotaOp = MkIotaOp GCAnyPtr
78 | %foreign (ffi "IotaOp_create")
79 | prim__iotaOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Bits64 -> PrimIO AnyPtr
83 | create : HasIO io => OpBuilder -> Location -> Type_ -> Nat -> io IotaOp
84 | create (MkOpBuilder builder) (MkLocation location) (MkType_ resultType _) iotaDimension = do
85 | op <- primIO $
prim__iotaOpCreate builder location resultType (cast iotaDimension)
86 | op <- onCollectAny' op (primIO . prim__deleteIotaOp)
89 | %foreign (ffi "IotaOp_getOperation")
90 | prim__iotaOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
94 | getOperation (MkIotaOp op) = getOperationAux op prim__iotaOpGetOperation
96 | namespace UnaryElementwiseOp
99 | (GCAnyPtr -> opTy) ->
100 | (GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr) ->
101 | (AnyPtr -> PrimIO ()) ->
102 | HasIO io => OpBuilder -> Location -> Value -> io opTy
107 | (MkOpBuilder builder)
108 | (MkLocation location)
109 | (MkValue operand _) = do
110 | op <- primIO $
prim__create builder location operand
111 | op <- onCollectAny' op (primIO . prim__delete)
112 | pure $
constructor_ op
114 | %foreign (ffi "AbsOp_delete")
115 | prim__deleteAbsOp : AnyPtr -> PrimIO ()
118 | data AbsOp = MkAbsOp GCAnyPtr
120 | %foreign (ffi "AbsOp_create")
121 | prim__absOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
125 | create : HasIO io => OpBuilder -> Location -> Value -> io AbsOp
126 | create = UnaryElementwiseOp.create MkAbsOp prim__absOpCreate prim__deleteAbsOp
128 | %foreign (ffi "AbsOp_getOperation")
129 | prim__absOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
133 | getOperation (MkAbsOp op) = getOperationAux op prim__absOpGetOperation
135 | %foreign (ffi "CeilOp_delete")
136 | prim__deleteCeilOp : AnyPtr -> PrimIO ()
139 | data CeilOp = MkCeilOp GCAnyPtr
141 | %foreign (ffi "CeilOp_create")
142 | prim__ceilOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
146 | create : HasIO io => OpBuilder -> Location -> Value -> io CeilOp
147 | create = UnaryElementwiseOp.create MkCeilOp prim__ceilOpCreate prim__deleteCeilOp
149 | %foreign (ffi "CeilOp_getOperation")
150 | prim__ceilOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
154 | getOperation (MkCeilOp op) = getOperationAux op prim__ceilOpGetOperation
156 | %foreign (ffi "ConvertOp_delete")
157 | prim__deleteConvertOp : AnyPtr -> PrimIO ()
160 | data ConvertOp = MkConvertOp GCAnyPtr
162 | %foreign (ffi "ConvertOp_create")
163 | prim__convertOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
165 | namespace ConvertOp
167 | create : HasIO io => OpBuilder -> Location -> Type_ -> Value -> io ConvertOp
168 | create (MkOpBuilder builder) (MkLocation location) (MkType_ result _) (MkValue operand _) = do
169 | op <- primIO $
prim__convertOpCreate builder location result operand
170 | op <- onCollectAny' op (primIO . prim__deleteConvertOp)
171 | pure $
MkConvertOp op
173 | %foreign (ffi "ConvertOp_getOperation")
174 | prim__convertOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
178 | getOperation (MkConvertOp op) = getOperationAux op prim__convertOpGetOperation
180 | %foreign (ffi "CosineOp_delete")
181 | prim__deleteCosineOp : AnyPtr -> PrimIO ()
184 | data CosineOp = MkCosineOp GCAnyPtr
186 | %foreign (ffi "CosineOp_create")
187 | prim__cosineOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
191 | create : HasIO io => OpBuilder -> Location -> Value -> io CosineOp
192 | create = UnaryElementwiseOp.create MkCosineOp prim__cosineOpCreate prim__deleteCosineOp
194 | %foreign (ffi "CosineOp_getOperation")
195 | prim__cosineOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
199 | getOperation (MkCosineOp op) = getOperationAux op prim__cosineOpGetOperation
201 | %foreign (ffi "ExpOp_delete")
202 | prim__deleteExpOp : AnyPtr -> PrimIO ()
205 | data ExpOp = MkExpOp GCAnyPtr
207 | %foreign (ffi "ExpOp_create")
208 | prim__expOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
212 | create : HasIO io => OpBuilder -> Location -> Value -> io ExpOp
213 | create = UnaryElementwiseOp.create MkExpOp prim__expOpCreate prim__deleteExpOp
215 | %foreign (ffi "ExpOp_getOperation")
216 | prim__expOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
220 | getOperation (MkExpOp op) = getOperationAux op prim__expOpGetOperation
222 | %foreign (ffi "FloorOp_delete")
223 | prim__deleteFloorOp : AnyPtr -> PrimIO ()
226 | data FloorOp = MkFloorOp GCAnyPtr
228 | %foreign (ffi "FloorOp_create")
229 | prim__floorOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
233 | create : HasIO io => OpBuilder -> Location -> Value -> io FloorOp
234 | create = UnaryElementwiseOp.create MkFloorOp prim__floorOpCreate prim__deleteFloorOp
236 | %foreign (ffi "FloorOp_getOperation")
237 | prim__floorOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
241 | getOperation (MkFloorOp op) = getOperationAux op prim__floorOpGetOperation
243 | %foreign (ffi "LogOp_delete")
244 | prim__deleteLogOp : AnyPtr -> PrimIO ()
247 | data LogOp = MkLogOp GCAnyPtr
249 | %foreign (ffi "LogOp_create")
250 | prim__logOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
254 | create : HasIO io => OpBuilder -> Location -> Value -> io LogOp
255 | create = UnaryElementwiseOp.create MkLogOp prim__logOpCreate prim__deleteLogOp
257 | %foreign (ffi "LogOp_getOperation")
258 | prim__logOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
262 | getOperation (MkLogOp op) = getOperationAux op prim__logOpGetOperation
264 | %foreign (ffi "LogisticOp_delete")
265 | prim__deleteLogisticOp : AnyPtr -> PrimIO ()
268 | data LogisticOp = MkLogisticOp GCAnyPtr
270 | %foreign (ffi "LogisticOp_create")
271 | prim__logisticOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
273 | namespace LogisticOp
275 | create : HasIO io => OpBuilder -> Location -> Value -> io LogisticOp
276 | create = UnaryElementwiseOp.create MkLogisticOp prim__logisticOpCreate prim__deleteLogisticOp
278 | %foreign (ffi "LogisticOp_getOperation")
279 | prim__logisticOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
282 | Op LogisticOp where
283 | getOperation (MkLogisticOp op) = getOperationAux op prim__logisticOpGetOperation
285 | %foreign (ffi "NotOp_delete")
286 | prim__deleteNotOp : AnyPtr -> PrimIO ()
289 | data NotOp = MkNotOp GCAnyPtr
291 | %foreign (ffi "NotOp_create")
292 | prim__notOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
296 | create : HasIO io => OpBuilder -> Location -> Value -> io NotOp
297 | create = UnaryElementwiseOp.create MkNotOp prim__notOpCreate prim__deleteNotOp
299 | %foreign (ffi "NotOp_getOperation")
300 | prim__notOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
304 | getOperation (MkNotOp op) = getOperationAux op prim__notOpGetOperation
306 | %foreign (ffi "NegOp_delete")
307 | prim__deleteNegOp : AnyPtr -> PrimIO ()
310 | data NegOp = MkNegOp GCAnyPtr
312 | %foreign (ffi "NegOp_create")
313 | prim__negOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
317 | create : HasIO io => OpBuilder -> Location -> Value -> io NegOp
318 | create = UnaryElementwiseOp.create MkNegOp prim__negOpCreate prim__deleteNegOp
320 | %foreign (ffi "NegOp_getOperation")
321 | prim__negOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
325 | getOperation (MkNegOp op) = getOperationAux op prim__negOpGetOperation
327 | %foreign (ffi "SineOp_delete")
328 | prim__deleteSineOp : AnyPtr -> PrimIO ()
331 | data SineOp = MkSineOp GCAnyPtr
333 | %foreign (ffi "SineOp_create")
334 | prim__sineOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
338 | create : HasIO io => OpBuilder -> Location -> Value -> io SineOp
339 | create = UnaryElementwiseOp.create MkSineOp prim__sineOpCreate prim__deleteSineOp
341 | %foreign (ffi "SineOp_getOperation")
342 | prim__sineOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
346 | getOperation (MkSineOp op) = getOperationAux op prim__sineOpGetOperation
348 | %foreign (ffi "SqrtOp_delete")
349 | prim__deleteSqrtOp : AnyPtr -> PrimIO ()
352 | data SqrtOp = MkSqrtOp GCAnyPtr
354 | %foreign (ffi "SqrtOp_create")
355 | prim__sqrtOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
359 | create : HasIO io => OpBuilder -> Location -> Value -> io SqrtOp
360 | create = UnaryElementwiseOp.create MkSqrtOp prim__sqrtOpCreate prim__deleteSqrtOp
362 | %foreign (ffi "SqrtOp_getOperation")
363 | prim__sqrtOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
367 | getOperation (MkSqrtOp op) = getOperationAux op prim__sqrtOpGetOperation
369 | %foreign (ffi "TanOp_delete")
370 | prim__deleteTanOp : AnyPtr -> PrimIO ()
373 | data TanOp = MkTanOp GCAnyPtr
375 | %foreign (ffi "TanOp_create")
376 | prim__tanOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
380 | create : HasIO io => OpBuilder -> Location -> Value -> io TanOp
381 | create = UnaryElementwiseOp.create MkTanOp prim__tanOpCreate prim__deleteTanOp
383 | %foreign (ffi "TanOp_getOperation")
384 | prim__tanOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
388 | getOperation (MkTanOp op) = getOperationAux op prim__tanOpGetOperation
390 | %foreign (ffi "TanhOp_delete")
391 | prim__deleteTanhOp : AnyPtr -> PrimIO ()
394 | data TanhOp = MkTanhOp GCAnyPtr
396 | %foreign (ffi "TanhOp_create")
397 | prim__tanhOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
401 | create : HasIO io => OpBuilder -> Location -> Value -> io TanhOp
402 | create = UnaryElementwiseOp.create MkTanhOp prim__tanhOpCreate prim__deleteTanhOp
404 | %foreign (ffi "TanhOp_getOperation")
405 | prim__tanhOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
409 | getOperation (MkTanhOp op) = getOperationAux op prim__tanhOpGetOperation
411 | namespace BinaryElementwiseOp
414 | (GCAnyPtr -> opTy) ->
415 | (GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr) ->
416 | (AnyPtr -> PrimIO ()) ->
417 | HasIO io => OpBuilder -> Location -> Value -> Value -> io opTy
422 | (MkOpBuilder builder)
423 | (MkLocation location)
426 | op <- primIO $
prim__create builder location x y
427 | op <- onCollectAny' op (primIO . prim__delete)
428 | pure $
constructor_ op
430 | %foreign (ffi "AddOp_delete")
431 | prim__deleteAddOp : AnyPtr -> PrimIO ()
434 | data AddOp = MkAddOp GCAnyPtr
436 | %foreign (ffi "AddOp_create")
437 | prim__addOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
441 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io AddOp
442 | create = BinaryElementwiseOp.create MkAddOp prim__addOpCreate prim__deleteAddOp
444 | %foreign (ffi "AddOp_getOperation")
445 | prim__addOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
449 | getOperation (MkAddOp op) = getOperationAux op prim__addOpGetOperation
451 | %foreign (ffi "DivOp_delete")
452 | prim__deleteDivOp : AnyPtr -> PrimIO ()
455 | data DivOp = MkDivOp GCAnyPtr
457 | %foreign (ffi "DivOp_create")
458 | prim__divOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
462 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io DivOp
463 | create = BinaryElementwiseOp.create MkDivOp prim__divOpCreate prim__deleteDivOp
465 | %foreign (ffi "DivOp_getOperation")
466 | prim__divOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
470 | getOperation (MkDivOp op) = getOperationAux op prim__divOpGetOperation
472 | %foreign (ffi "MaxOp_delete")
473 | prim__deleteMaxOp : AnyPtr -> PrimIO ()
476 | data MaxOp = MkMaxOp GCAnyPtr
478 | %foreign (ffi "MaxOp_create")
479 | prim__maxOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
483 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io MaxOp
484 | create = BinaryElementwiseOp.create MkMaxOp prim__maxOpCreate prim__deleteMaxOp
486 | %foreign (ffi "MaxOp_getOperation")
487 | prim__maxOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
491 | getOperation (MkMaxOp op) = getOperationAux op prim__maxOpGetOperation
493 | %foreign (ffi "MinOp_delete")
494 | prim__deleteMinOp : AnyPtr -> PrimIO ()
497 | data MinOp = MkMinOp GCAnyPtr
499 | %foreign (ffi "MinOp_create")
500 | prim__minOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
504 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io MinOp
505 | create = BinaryElementwiseOp.create MkMinOp prim__minOpCreate prim__deleteMinOp
507 | %foreign (ffi "MinOp_getOperation")
508 | prim__minOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
512 | getOperation (MkMinOp op) = getOperationAux op prim__minOpGetOperation
514 | %foreign (ffi "MulOp_delete")
515 | prim__deleteMulOp : AnyPtr -> PrimIO ()
518 | data MulOp = MkMulOp GCAnyPtr
520 | %foreign (ffi "MulOp_create")
521 | prim__mulOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
525 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io MulOp
526 | create = BinaryElementwiseOp.create MkMulOp prim__mulOpCreate prim__deleteMulOp
528 | %foreign (ffi "MulOp_getOperation")
529 | prim__mulOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
533 | getOperation (MkMulOp op) = getOperationAux op prim__mulOpGetOperation
535 | %foreign (ffi "PowOp_delete")
536 | prim__deletePowOp : AnyPtr -> PrimIO ()
539 | data PowOp = MkPowOp GCAnyPtr
541 | %foreign (ffi "PowOp_create")
542 | prim__powOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
546 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io PowOp
547 | create = BinaryElementwiseOp.create MkPowOp prim__powOpCreate prim__deletePowOp
549 | %foreign (ffi "PowOp_getOperation")
550 | prim__powOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
554 | getOperation (MkPowOp op) = getOperationAux op prim__powOpGetOperation
556 | %foreign (ffi "RemOp_delete")
557 | prim__deleteRemOp : AnyPtr -> PrimIO ()
560 | data RemOp = MkRemOp GCAnyPtr
562 | %foreign (ffi "RemOp_create")
563 | prim__remOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
567 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io RemOp
568 | create = BinaryElementwiseOp.create MkRemOp prim__remOpCreate prim__deleteRemOp
570 | %foreign (ffi "RemOp_getOperation")
571 | prim__remOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
575 | getOperation (MkRemOp op) = getOperationAux op prim__remOpGetOperation
577 | %foreign (ffi "ShiftRightLogicalOp_delete")
578 | prim__deleteShiftRightLogicalOp : AnyPtr -> PrimIO ()
581 | data ShiftRightLogicalOp = MkShiftRightLogicalOp GCAnyPtr
583 | %foreign (ffi "ShiftRightLogicalOp_create")
584 | prim__shiftRightLogicalOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
586 | namespace ShiftRightLogicalOp
588 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io ShiftRightLogicalOp
589 | create = BinaryElementwiseOp.create
590 | MkShiftRightLogicalOp prim__shiftRightLogicalOpCreate prim__deleteShiftRightLogicalOp
592 | %foreign (ffi "ShiftRightLogicalOp_getOperation")
593 | prim__shiftRightLogicalOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
596 | Op ShiftRightLogicalOp where
597 | getOperation (MkShiftRightLogicalOp op) = getOperationAux op prim__shiftRightLogicalOpGetOperation
599 | %foreign (ffi "SubtractOp_delete")
600 | prim__deleteSubtractOp : AnyPtr -> PrimIO ()
603 | data SubtractOp = MkSubtractOp GCAnyPtr
605 | %foreign (ffi "SubtractOp_create")
606 | prim__subtractOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
608 | namespace SubtractOp
610 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io SubtractOp
611 | create = BinaryElementwiseOp.create MkSubtractOp prim__subtractOpCreate prim__deleteSubtractOp
613 | %foreign (ffi "SubtractOp_getOperation")
614 | prim__subtractOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
617 | Op SubtractOp where
618 | getOperation (MkSubtractOp op) = getOperationAux op prim__subtractOpGetOperation
620 | %foreign (ffi "AndOp_delete")
621 | prim__deleteAndOp : AnyPtr -> PrimIO ()
624 | data AndOp = MkAndOp GCAnyPtr
626 | %foreign (ffi "AndOp_create")
627 | prim__andOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
631 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io AndOp
632 | create = BinaryElementwiseOp.create MkAndOp prim__andOpCreate prim__deleteAndOp
634 | %foreign (ffi "AndOp_getOperation")
635 | prim__andOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
639 | getOperation (MkAndOp op) = getOperationAux op prim__andOpGetOperation
641 | %foreign (ffi "OrOp_delete")
642 | prim__deleteOrOp : AnyPtr -> PrimIO ()
645 | data OrOp = MkOrOp GCAnyPtr
647 | %foreign (ffi "OrOp_create")
648 | prim__orOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
652 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io OrOp
653 | create = BinaryElementwiseOp.create MkOrOp prim__orOpCreate prim__deleteOrOp
655 | %foreign (ffi "OrOp_getOperation")
656 | prim__orOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
660 | getOperation (MkOrOp op) = getOperationAux op prim__orOpGetOperation
662 | %foreign (ffi "IfOp_delete")
663 | prim__deleteIfOp : AnyPtr -> PrimIO ()
666 | data IfOp = MkIfOp GCAnyPtr
668 | %foreign (ffi "IfOp_create")
669 | prim__ifOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
673 | create : HasIO io => OpBuilder -> Location -> Type_ -> Value -> io IfOp
674 | create (MkOpBuilder builder) (MkLocation location) (MkType_ resultType _) (MkValue pred _) = do
675 | op <- primIO $
prim__ifOpCreate builder location resultType pred
676 | op <- onCollectAny' op (primIO . prim__deleteIfOp)
679 | %foreign (ffi "IfOp_getTrueBranch")
680 | prim__ifOpGetTrueBranch : GCAnyPtr -> AnyPtr
683 | getTrueBranch : IfOp -> Region
684 | getTrueBranch (MkIfOp op) = MkRegion $
prim__ifOpGetTrueBranch op
686 | %foreign (ffi "IfOp_getFalseBranch")
687 | prim__ifOpGetFalseBranch : GCAnyPtr -> AnyPtr
690 | getFalseBranch : IfOp -> Region
691 | getFalseBranch (MkIfOp op) = MkRegion $
prim__ifOpGetFalseBranch op
693 | %foreign (ffi "IfOp_getOperation")
694 | prim__ifOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
698 | getOperation (MkIfOp op) = getOperationAux op prim__ifOpGetOperation
700 | %foreign (ffi "WhileOp_delete")
701 | prim__deleteWhileOp : AnyPtr -> PrimIO ()
704 | data WhileOp = MkWhileOp GCAnyPtr
706 | %foreign (ffi "WhileOp_create")
707 | prim__whileOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
711 | create : HasIO io => OpBuilder -> Location -> ValueRange -> io WhileOp
712 | create (MkOpBuilder builder) (MkLocation location) (MkValueRange inputs) = do
713 | op <- primIO $
prim__whileOpCreate builder location inputs
714 | op <- onCollectAny' op (primIO . prim__deleteWhileOp)
715 | pure (MkWhileOp op)
717 | %foreign (ffi "WhileOp_getCond")
718 | prim__whileOpGetCond : GCAnyPtr -> AnyPtr
721 | getCond : WhileOp -> Region
722 | getCond (MkWhileOp op) = MkRegion $
prim__whileOpGetCond op
724 | %foreign (ffi "WhileOp_getBody")
725 | prim__whileOpGetBody : GCAnyPtr -> AnyPtr
729 | getBody : WhileOp -> Region
730 | getBody (MkWhileOp op) = MkRegion $
prim__whileOpGetBody op
732 | %foreign (ffi "WhileOp_getOperation")
733 | prim__whileOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
737 | getOperation (MkWhileOp op) = getOperationAux op prim__whileOpGetOperation
739 | %foreign (ffi "ReduceOp_delete")
740 | prim__deleteReduceOp : AnyPtr -> PrimIO ()
743 | data ReduceOp = MkReduceOp GCAnyPtr
745 | %foreign (ffi "ReduceOp_create")
746 | prim__reduceOpCreate :
747 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Bits64 -> PrimIO AnyPtr
751 | create : HasIO io => OpBuilder -> Location -> ValueRange -> ValueRange -> List Nat -> io ReduceOp
753 | (MkOpBuilder builder)
754 | (MkLocation location)
755 | (MkValueRange inputs)
756 | (MkValueRange inits)
758 | MkArray dimensions dimensionsLen <- fromList $
cast {to = Int64} <$> dimensions
759 | op <- primIO $
prim__reduceOpCreate builder location inputs inits dimensions dimensionsLen
760 | op <- onCollectAny' op (primIO . prim__deleteReduceOp)
761 | pure (MkReduceOp op)
763 | %foreign (ffi "ReduceOp_getBody")
764 | prim__reduceOpGetBody : GCAnyPtr -> AnyPtr
768 | getBody : ReduceOp -> Region
769 | getBody (MkReduceOp op) = MkRegion $
prim__reduceOpGetBody op
771 | %foreign (ffi "ReduceOp_getOperation")
772 | prim__reduceOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
776 | getOperation (MkReduceOp op) = getOperationAux op prim__reduceOpGetOperation
778 | %foreign (ffi "CompareOp_delete")
779 | prim__deleteCompareOp : AnyPtr -> PrimIO ()
782 | data CompareOp = MkCompareOp GCAnyPtr
784 | %foreign (ffi "CompareOp_create")
785 | prim__compareOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int -> PrimIO AnyPtr
787 | namespace CompareOp
790 | HasIO io => OpBuilder -> Location -> Value -> Value -> ComparisonDirection -> io CompareOp
791 | create (MkOpBuilder builder) (MkLocation location) (MkValue lhs _) (MkValue rhs _) direction = do
792 | op <- primIO $
prim__compareOpCreate builder location lhs rhs (cast direction)
793 | op <- onCollectAny' op (primIO . prim__deleteCompareOp)
794 | pure (MkCompareOp op)
796 | %foreign (ffi "CompareOp_getOperation")
797 | prim__compareOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
801 | getOperation (MkCompareOp op) = getOperationAux op prim__compareOpGetOperation
803 | %foreign (ffi "SliceOp_delete")
804 | prim__deleteSliceOp : AnyPtr -> PrimIO ()
807 | data SliceOp = MkSliceOp GCAnyPtr
809 | %foreign (ffi "SliceOp_create")
810 | prim__sliceOpCreate :
814 | GCAnyPtr -> Bits64 ->
815 | GCAnyPtr -> Bits64 ->
816 | GCAnyPtr -> Bits64 ->
822 | HasIO io => OpBuilder -> Location -> Value -> List Nat -> List Nat -> List Nat -> io SliceOp
824 | (MkOpBuilder builder)
825 | (MkLocation location)
826 | (MkValue operand _)
830 | MkArray startIndices startIndicesLen <- fromList $
cast {to = Int64} <$> startIndices
831 | MkArray limitIndices limitIndicesLen <- fromList $
cast {to = Int64} <$> limitIndices
832 | MkArray strides stridesLen <- fromList $
cast {to = Int64} <$> strides
833 | op <- primIO $
prim__sliceOpCreate
837 | startIndices startIndicesLen
838 | limitIndices limitIndicesLen
840 | op <- onCollectAny' op (primIO . prim__deleteSliceOp)
841 | pure (MkSliceOp op)
843 | %foreign (ffi "SliceOp_getOperation")
844 | prim__sliceOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
848 | getOperation (MkSliceOp op) = getOperationAux op prim__sliceOpGetOperation
850 | %foreign (ffi "DynamicSliceOp_delete")
851 | prim__deleteDynamicSliceOp : AnyPtr -> PrimIO ()
854 | data DynamicSliceOp = MkDynamicSliceOp GCAnyPtr
856 | %foreign (ffi "DynamicSliceOp_create")
857 | prim__dynamicSliceOpCreate :
858 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Bits64 -> PrimIO AnyPtr
860 | namespace DynamicSliceOp
863 | HasIO io => OpBuilder -> Location -> Value -> ValueRange -> List Nat -> io DynamicSliceOp
865 | (MkOpBuilder builder)
866 | (MkLocation location)
867 | (MkValue operand _)
868 | (MkValueRange startIndices)
870 | MkArray sliceSizes sliceSizesLen <- fromList $
cast {to = Int64} <$> sliceSizes
871 | op <- primIO $
prim__dynamicSliceOpCreate
872 | builder location operand startIndices sliceSizes sliceSizesLen
873 | op <- onCollectAny' op (primIO . prim__deleteDynamicSliceOp)
874 | pure (MkDynamicSliceOp op)
876 | %foreign (ffi "DynamicSliceOp_getOperation")
877 | prim__dynamicSliceOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
880 | Op DynamicSliceOp where
881 | getOperation (MkDynamicSliceOp op) = getOperationAux op prim__dynamicSliceOpGetOperation
883 | %foreign (ffi "BitcastConvertOp_delete")
884 | prim__deleteBitcastConvertOp : AnyPtr -> PrimIO ()
887 | data BitcastConvertOp = MkBitcastConvertOp GCAnyPtr
889 | %foreign (ffi "BitcastConvertOp_create")
890 | prim__bitcastConvertOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
892 | namespace BitcastConvertOp
894 | create : HasIO io => OpBuilder -> Location -> Type_ -> Value -> io BitcastConvertOp
895 | create (MkOpBuilder builder) (MkLocation location) (MkType_ resultType _) (MkValue operand _) = do
896 | op <- primIO $
prim__bitcastConvertOpCreate builder location resultType operand
897 | op <- onCollectAny' op (primIO . prim__deleteBitcastConvertOp)
898 | pure (MkBitcastConvertOp op)
900 | %foreign (ffi "BitcastConvertOp_getOperation")
901 | prim__bitcastConvertOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
904 | Op BitcastConvertOp where
905 | getOperation (MkBitcastConvertOp op) = getOperationAux op prim__bitcastConvertOpGetOperation
907 | %foreign (ffi "BroadcastInDimOp_delete")
908 | prim__deleteBroadcastInDimOp : AnyPtr -> PrimIO ()
911 | data BroadcastInDimOp = MkBroadcastInDimOp GCAnyPtr
913 | %foreign (ffi "BroadcastInDimOp_create")
914 | prim__broadcastInDimOpCreate :
915 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Bits64 -> PrimIO AnyPtr
917 | namespace BroadcastInDimOp
919 | create : HasIO io => OpBuilder -> Location -> Type_ -> Value -> List Nat -> io BroadcastInDimOp
921 | (MkOpBuilder builder)
922 | (MkLocation location)
923 | (MkType_ resultType0 _)
924 | (MkValue operand _)
926 | MkArray dimensions dimensionsLen <- fromList $
cast {to = Int64} <$> dimensions
927 | op <- primIO $
prim__broadcastInDimOpCreate
928 | builder location resultType0 operand dimensions dimensionsLen
929 | op <- onCollectAny' op (primIO . prim__deleteBroadcastInDimOp)
930 | pure (MkBroadcastInDimOp op)
932 | %foreign (ffi "BroadcastInDimOp_getOperation")
933 | prim__broadcastInDimOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
936 | Op BroadcastInDimOp where
937 | getOperation (MkBroadcastInDimOp op) = getOperationAux op prim__broadcastInDimOpGetOperation
939 | %foreign (ffi "CholeskyOp_delete")
940 | prim__deleteCholeskyOp : AnyPtr -> PrimIO ()
943 | data CholeskyOp = MkCholeskyOp GCAnyPtr
945 | %foreign (ffi "CholeskyOp_create")
946 | prim__choleskyOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int -> PrimIO AnyPtr
948 | namespace CholeskyOp
950 | create : HasIO io => OpBuilder -> Location -> Value -> Bool -> io CholeskyOp
951 | create (MkOpBuilder builder) (MkLocation location) (MkValue value _) lower = do
952 | op <- primIO $
prim__choleskyOpCreate builder location value (boolToCInt lower)
953 | op <- onCollectAny' op (primIO . prim__deleteCholeskyOp)
954 | pure (MkCholeskyOp op)
956 | %foreign (ffi "CholeskyOp_getOperation")
957 | prim__choleskyOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
960 | Op CholeskyOp where
961 | getOperation (MkCholeskyOp op) = getOperationAux op prim__choleskyOpGetOperation
963 | %foreign (ffi "ConcatenateOp_delete")
964 | prim__deleteConcatenateOp : AnyPtr -> PrimIO ()
967 | data ConcatenateOp = MkConcatenateOp GCAnyPtr
969 | %foreign (ffi "ConcatenateOp_create")
970 | prim__concatenateOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int64 -> PrimIO AnyPtr
972 | namespace ConcatenateOp
974 | create : HasIO io => OpBuilder -> Location -> ValueRange -> Nat -> io ConcatenateOp
975 | create (MkOpBuilder builder) (MkLocation location) (MkValueRange inputs) dimension = do
976 | op <- primIO $
prim__concatenateOpCreate builder location inputs (cast dimension)
977 | op <- onCollectAny' op (primIO . prim__deleteConcatenateOp)
978 | pure (MkConcatenateOp op)
980 | %foreign (ffi "ConcatenateOp_getOperation")
981 | prim__concatenateOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
984 | Op ConcatenateOp where
985 | getOperation (MkConcatenateOp op) = getOperationAux op prim__concatenateOpGetOperation
987 | %foreign (ffi "DotGeneralOp_delete")
988 | prim__deleteDotGeneralOp : AnyPtr -> PrimIO ()
991 | data DotGeneralOp = MkDotGeneralOp GCAnyPtr
993 | %foreign (ffi "DotGeneralOp_create")
994 | prim__dotGeneralOpCreate :
995 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
997 | namespace DotGeneralOp
1006 | DotDimensionNumbersAttr ->
1011 | (MkType_ resultType0 _)
1014 | (MkDotDimensionNumbersAttr ddn) = do
1015 | op <- primIO $
prim__dotGeneralOpCreate builder location resultType0 lhs rhs ddn
1016 | op <- onCollectAny' op (primIO . prim__deleteDotGeneralOp)
1017 | pure (MkDotGeneralOp op)
1019 | %foreign (ffi "DotGeneralOp_getOperation")
1020 | prim__dotGeneralOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1024 | getOperation (MkDotGeneralOp op) = getOperationAux op prim__dotGeneralOpGetOperation
1026 | %foreign (ffi "MapOp_delete")
1027 | prim__deleteMapOp : AnyPtr -> PrimIO ()
1030 | data MapOp = MkMapOp GCAnyPtr
1032 | %foreign (ffi "MapOp_create")
1034 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Bits64 -> PrimIO AnyPtr
1038 | create : HasIO io => OpBuilder -> Location -> Type_ -> ValueRange -> List Nat -> io MapOp
1045 | MkArray dimensions dimensionsLen <- fromList $
cast {to = Int64} <$> dimensions
1046 | op <- primIO $
prim__mapOpCreate builder location resultType inputs dimensions dimensionsLen
1047 | op <- onCollectAny' op (primIO . prim__deleteMapOp)
1050 | %foreign (ffi "MapOp_getComputation")
1051 | prim__mapOpGetComputation : GCAnyPtr -> AnyPtr
1054 | getComputation : MapOp -> Region
1055 | getComputation (MkMapOp op) = MkRegion $
prim__mapOpGetComputation op
1057 | %foreign (ffi "MapOp_getOperation")
1058 | prim__mapOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1062 | getOperation (MkMapOp op) = getOperationAux op prim__mapOpGetOperation
1064 | %foreign (ffi "ReshapeOp_delete")
1065 | prim__deleteReshapeOp : AnyPtr -> PrimIO ()
1068 | data ReshapeOp = MkReshapeOp GCAnyPtr
1070 | %foreign (ffi "ReshapeOp_create")
1071 | prim__reshapeOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
1075 | create : HasIO io => OpBuilder -> Location -> Type_ -> Value -> io ReshapeOp
1076 | create (MkOpBuilder builder) (MkLocation location) (MkType_ resultType _) (MkValue value _) = do
1077 | op <- primIO $
prim__reshapeOpCreate builder location resultType value
1078 | op <- onCollectAny' op (primIO . prim__deleteReshapeOp)
1081 | %foreign (ffi "ReshapeOp_getOperation")
1082 | prim__reshapeOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1086 | getOperation (MkReshapeOp op) = getOperationAux op prim__reshapeOpGetOperation
1088 | %foreign (ffi "SelectOp_delete")
1089 | prim__deleteSelectOp : AnyPtr -> PrimIO ()
1092 | data SelectOp = MkSelectOp GCAnyPtr
1094 | %foreign (ffi "SelectOp_create")
1095 | prim__selectOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
1099 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> Value -> io SelectOp
1105 | (MkValue onFalse _) = do
1106 | op <- primIO $
prim__selectOpCreate builder location pred onTrue onFalse
1107 | op <- onCollectAny' op (primIO . prim__deleteSelectOp)
1110 | %foreign (ffi "SelectOp_getOperation")
1111 | prim__selectOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1115 | getOperation (MkSelectOp op) = getOperationAux op prim__selectOpGetOperation
1117 | %foreign (ffi "SortOp_delete")
1118 | prim__deleteSortOp : AnyPtr -> PrimIO ()
1121 | data SortOp = MkSortOp GCAnyPtr
1123 | %foreign (ffi "SortOp_create")
1124 | prim__sortOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int64 -> Int -> PrimIO AnyPtr
1128 | create : HasIO io => OpBuilder -> Location -> Value -> Nat -> Bool -> io SortOp
1129 | create (MkOpBuilder builder) (MkLocation location) (MkValue value _) dimension isStable = do
1130 | op <- primIO $
prim__sortOpCreate builder location value (cast dimension) (boolToCInt isStable)
1131 | op <- onCollectAny' op (primIO . prim__deleteSortOp)
1134 | %foreign (ffi "SortOp_getComparator")
1135 | prim__sortOpGetComparator : GCAnyPtr -> AnyPtr
1138 | getComparator : SortOp -> Region
1139 | getComparator (MkSortOp op) = MkRegion $
prim__sortOpGetComparator op
1141 | %foreign (ffi "SortOp_getOperation")
1142 | prim__sortOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1146 | getOperation (MkSortOp op) = getOperationAux op prim__sortOpGetOperation
1148 | %foreign (ffi "ReverseOp_delete")
1149 | prim__deleteReverseOp : AnyPtr -> PrimIO ()
1152 | data ReverseOp = MkReverseOp GCAnyPtr
1154 | %foreign (ffi "ReverseOp_create")
1155 | prim__reverseOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Bits64 -> PrimIO AnyPtr
1159 | create : HasIO io => OpBuilder -> Location -> Value -> List Nat -> io ReverseOp
1160 | create (MkOpBuilder builder) (MkLocation location) (MkValue operand _) dimensions = do
1161 | MkArray dimensions dimensionsLen <- fromList $
cast {to = Int64} <$> dimensions
1162 | op <- primIO $
prim__reverseOpCreate builder location operand dimensions dimensionsLen
1163 | op <- onCollectAny' op (primIO . prim__deleteReverseOp)
1166 | %foreign (ffi "ReverseOp_getOperation")
1167 | prim__reverseOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1171 | getOperation (MkReverseOp op) = getOperationAux op prim__reverseOpGetOperation
1173 | %foreign (ffi "TransposeOp_delete")
1174 | prim__deleteTransposeOp : AnyPtr -> PrimIO ()
1177 | data TransposeOp = MkTransposeOp GCAnyPtr
1179 | %foreign (ffi "TransposeOp_create")
1180 | prim__transposeOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Bits64 -> PrimIO AnyPtr
1184 | create : HasIO io => OpBuilder -> Location -> Value -> List Nat -> io TransposeOp
1185 | create (MkOpBuilder builder) (MkLocation location) (MkValue operand _) permutation = do
1186 | MkArray permutation permutationLen <- fromList $
cast {to = Int64} <$> permutation
1187 | op <- primIO $
prim__transposeOpCreate builder location operand permutation permutationLen
1188 | op <- onCollectAny' op (primIO . prim__deleteTransposeOp)
1189 | pure (MkTransposeOp op)
1191 | %foreign (ffi "TransposeOp_getOperation")
1192 | prim__transposeOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1196 | getOperation (MkTransposeOp op) = getOperationAux op prim__transposeOpGetOperation
1198 | %foreign (ffi "TriangularSolveOp_delete")
1199 | prim__deleteTriangularSolveOp : AnyPtr -> PrimIO ()
1202 | data TriangularSolveOp = MkTriangularSolveOp GCAnyPtr
1204 | %foreign (ffi "TriangularSolveOp_create")
1205 | prim__triangularSolveOpCreate :
1206 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int -> Int -> Int -> Int -> PrimIO AnyPtr
1208 | namespace TriangularSolveOp
1230 | let leftSide = boolToCInt leftSide
1231 | lower = boolToCInt lower
1232 | unitDiagonal = boolToCInt unitDiagonal
1233 | transposeA = cast transposeA
1234 | op <- primIO $
prim__triangularSolveOpCreate
1235 | builder location a b leftSide lower unitDiagonal transposeA
1236 | op <- onCollectAny' op (primIO . prim__deleteTriangularSolveOp)
1237 | pure (MkTriangularSolveOp op)
1239 | %foreign (ffi "TriangularSolveOp_getOperation")
1240 | prim__triangularSolveOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1243 | Op TriangularSolveOp where
1244 | getOperation (MkTriangularSolveOp op) = getOperationAux op prim__triangularSolveOpGetOperation
1246 | %foreign (ffi "StableHLO_ReturnOp_delete")
1247 | prim__deleteReturnOp : AnyPtr -> PrimIO ()
1250 | data ReturnOp = MkReturnOp GCAnyPtr
1252 | %foreign (ffi "StableHLO_ReturnOp_create")
1253 | prim__returnOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
1257 | create : HasIO io => OpBuilder -> Location -> ValueRange -> io ReturnOp
1258 | create (MkOpBuilder builder) (MkLocation location) (MkValueRange results) = do
1259 | op <- primIO $
prim__returnOpCreate builder location results
1260 | op <- onCollectAny' op (primIO . prim__deleteReturnOp)
1263 | %foreign (ffi "StableHLO_ReturnOp_getOperation")
1264 | prim__returnOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1268 | getOperation (MkReturnOp op) = getOperationAux op prim__returnOpGetOperation
1270 | %foreign (ffi "RngBitGeneratorOp_delete")
1271 | prim__deleteRngBitGeneratorOp : AnyPtr -> PrimIO ()
1274 | data RngBitGeneratorOp = MkRngBitGeneratorOp GCAnyPtr
1276 | %foreign (ffi "RngBitGeneratorOp_create")
1277 | prim__rngBitGeneratorOpCreate :
1278 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int -> GCAnyPtr -> PrimIO AnyPtr
1280 | namespace RngBitGeneratorOp
1294 | (MkType_ outputState _)
1298 | op <- primIO $
prim__rngBitGeneratorOpCreate
1299 | builder location outputState output (cast rngAlgorithm) state
1300 | op <- onCollectAny' op (primIO . prim__deleteRngBitGeneratorOp)
1301 | pure (MkRngBitGeneratorOp op)
1303 | %foreign (ffi "RngBitGeneratorOp_getOperation")
1304 | prim__rngBitGeneratorOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1307 | Op RngBitGeneratorOp where
1308 | getOperation (MkRngBitGeneratorOp op) = getOperationAux op prim__rngBitGeneratorOpGetOperation