17 | module Compiler.Stablehlo.Dialect.StablehloOps
20 | import Compiler.MLIR.IR.BuiltinAttributes
21 | import Compiler.MLIR.IR.Builders
22 | import Compiler.MLIR.IR.Location
23 | import Compiler.MLIR.IR.MLIRContext
24 | import Compiler.MLIR.IR.OpDefinition
25 | import Compiler.MLIR.IR.Operation
26 | import Compiler.MLIR.IR.Region
27 | import Compiler.MLIR.IR.Types
28 | import Compiler.MLIR.IR.Value
29 | import Compiler.MLIR.IR.ValueRange
30 | import Compiler.Stablehlo.Dialect.StablehloAttrs
31 | import Compiler.Stablehlo.Dialect.StablehloEnums
33 | ffi : String -> String
34 | ffi = libxla "c/stablehlo/dialect/StablehloOps.h"
37 | getOperationAux : HasIO io => GCAnyPtr -> (GCAnyPtr -> PrimIO AnyPtr) -> io Operation
38 | getOperationAux op f = MkOperation <$> (primIO $
f op)
40 | %foreign (ffi "MLIRContext_loadDialect_StablehloDialect")
41 | prim__loadDialectStablehloDialect : AnyPtr -> PrimIO ()
44 | loadDialectStablehloDialect : HasIO io => MLIRContext -> io ()
45 | loadDialectStablehloDialect (MkMLIRContext ctx) = primIO $
prim__loadDialectStablehloDialect ctx
47 | %foreign (ffi "ConstantOp_delete")
48 | prim__deleteConstantOp : AnyPtr -> PrimIO ()
51 | data ConstantOp = MkConstantOp GCAnyPtr
53 | %foreign (ffi "ConstantOp_create")
54 | prim__constantOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
56 | namespace ConstantOp
58 | create : HasIO io => OpBuilder -> Location -> DenseElementsAttr -> io ConstantOp
59 | create (MkOpBuilder builder) (MkLocation location) (MkDenseElementsAttr attr) = do
60 | op <- primIO $
prim__constantOpCreate builder location attr
61 | op <- onCollectAny' op (primIO . prim__deleteConstantOp)
62 | pure (MkConstantOp op)
64 | %foreign (ffi "ConstantOp_getOperation")
65 | prim__constantOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
69 | getOperation (MkConstantOp op) = getOperationAux op prim__constantOpGetOperation
71 | %foreign (ffi "IotaOp_delete")
72 | prim__deleteIotaOp : AnyPtr -> PrimIO ()
75 | data IotaOp = MkIotaOp GCAnyPtr
77 | %foreign (ffi "IotaOp_create")
78 | prim__iotaOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Bits64 -> PrimIO AnyPtr
82 | create : HasIO io => OpBuilder -> Location -> Type_ -> Nat -> io IotaOp
83 | create (MkOpBuilder builder) (MkLocation location) (MkType_ resultType _) iotaDimension = do
84 | op <- primIO $
prim__iotaOpCreate builder location resultType (cast iotaDimension)
85 | op <- onCollectAny' op (primIO . prim__deleteIotaOp)
88 | %foreign (ffi "IotaOp_getOperation")
89 | prim__iotaOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
93 | getOperation (MkIotaOp op) = getOperationAux op prim__iotaOpGetOperation
95 | namespace UnaryElementwiseOp
98 | (GCAnyPtr -> opTy) ->
99 | (GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr) ->
100 | (AnyPtr -> PrimIO ()) ->
101 | HasIO io => OpBuilder -> Location -> Value -> io opTy
106 | (MkOpBuilder builder)
107 | (MkLocation location)
108 | (MkValue operand _) = do
109 | op <- primIO $
prim__create builder location operand
110 | op <- onCollectAny' op (primIO . prim__delete)
111 | pure $
constructor_ op
113 | %foreign (ffi "AbsOp_delete")
114 | prim__deleteAbsOp : AnyPtr -> PrimIO ()
117 | data AbsOp = MkAbsOp GCAnyPtr
119 | %foreign (ffi "AbsOp_create")
120 | prim__absOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
124 | create : HasIO io => OpBuilder -> Location -> Value -> io AbsOp
125 | create = UnaryElementwiseOp.create MkAbsOp prim__absOpCreate prim__deleteAbsOp
127 | %foreign (ffi "AbsOp_getOperation")
128 | prim__absOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
132 | getOperation (MkAbsOp op) = getOperationAux op prim__absOpGetOperation
134 | %foreign (ffi "CeilOp_delete")
135 | prim__deleteCeilOp : AnyPtr -> PrimIO ()
138 | data CeilOp = MkCeilOp GCAnyPtr
140 | %foreign (ffi "CeilOp_create")
141 | prim__ceilOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
145 | create : HasIO io => OpBuilder -> Location -> Value -> io CeilOp
146 | create = UnaryElementwiseOp.create MkCeilOp prim__ceilOpCreate prim__deleteCeilOp
148 | %foreign (ffi "CeilOp_getOperation")
149 | prim__ceilOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
153 | getOperation (MkCeilOp op) = getOperationAux op prim__ceilOpGetOperation
155 | %foreign (ffi "ConvertOp_delete")
156 | prim__deleteConvertOp : AnyPtr -> PrimIO ()
159 | data ConvertOp = MkConvertOp GCAnyPtr
161 | %foreign (ffi "ConvertOp_create")
162 | prim__convertOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
164 | namespace ConvertOp
166 | create : HasIO io => OpBuilder -> Location -> Type_ -> Value -> io ConvertOp
167 | create (MkOpBuilder builder) (MkLocation location) (MkType_ result _) (MkValue operand _) = do
168 | op <- primIO $
prim__convertOpCreate builder location result operand
169 | op <- onCollectAny' op (primIO . prim__deleteConvertOp)
170 | pure $
MkConvertOp op
172 | %foreign (ffi "ConvertOp_getOperation")
173 | prim__convertOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
177 | getOperation (MkConvertOp op) = getOperationAux op prim__convertOpGetOperation
179 | %foreign (ffi "CosineOp_delete")
180 | prim__deleteCosineOp : AnyPtr -> PrimIO ()
183 | data CosineOp = MkCosineOp GCAnyPtr
185 | %foreign (ffi "CosineOp_create")
186 | prim__cosineOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
190 | create : HasIO io => OpBuilder -> Location -> Value -> io CosineOp
191 | create = UnaryElementwiseOp.create MkCosineOp prim__cosineOpCreate prim__deleteCosineOp
193 | %foreign (ffi "CosineOp_getOperation")
194 | prim__cosineOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
198 | getOperation (MkCosineOp op) = getOperationAux op prim__cosineOpGetOperation
200 | %foreign (ffi "ExpOp_delete")
201 | prim__deleteExpOp : AnyPtr -> PrimIO ()
204 | data ExpOp = MkExpOp GCAnyPtr
206 | %foreign (ffi "ExpOp_create")
207 | prim__expOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
211 | create : HasIO io => OpBuilder -> Location -> Value -> io ExpOp
212 | create = UnaryElementwiseOp.create MkExpOp prim__expOpCreate prim__deleteExpOp
214 | %foreign (ffi "ExpOp_getOperation")
215 | prim__expOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
219 | getOperation (MkExpOp op) = getOperationAux op prim__expOpGetOperation
221 | %foreign (ffi "FloorOp_delete")
222 | prim__deleteFloorOp : AnyPtr -> PrimIO ()
225 | data FloorOp = MkFloorOp GCAnyPtr
227 | %foreign (ffi "FloorOp_create")
228 | prim__floorOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
232 | create : HasIO io => OpBuilder -> Location -> Value -> io FloorOp
233 | create = UnaryElementwiseOp.create MkFloorOp prim__floorOpCreate prim__deleteFloorOp
235 | %foreign (ffi "FloorOp_getOperation")
236 | prim__floorOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
240 | getOperation (MkFloorOp op) = getOperationAux op prim__floorOpGetOperation
242 | %foreign (ffi "LogOp_delete")
243 | prim__deleteLogOp : AnyPtr -> PrimIO ()
246 | data LogOp = MkLogOp GCAnyPtr
248 | %foreign (ffi "LogOp_create")
249 | prim__logOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
253 | create : HasIO io => OpBuilder -> Location -> Value -> io LogOp
254 | create = UnaryElementwiseOp.create MkLogOp prim__logOpCreate prim__deleteLogOp
256 | %foreign (ffi "LogOp_getOperation")
257 | prim__logOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
261 | getOperation (MkLogOp op) = getOperationAux op prim__logOpGetOperation
263 | %foreign (ffi "LogisticOp_delete")
264 | prim__deleteLogisticOp : AnyPtr -> PrimIO ()
267 | data LogisticOp = MkLogisticOp GCAnyPtr
269 | %foreign (ffi "LogisticOp_create")
270 | prim__logisticOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
272 | namespace LogisticOp
274 | create : HasIO io => OpBuilder -> Location -> Value -> io LogisticOp
275 | create = UnaryElementwiseOp.create MkLogisticOp prim__logisticOpCreate prim__deleteLogisticOp
277 | %foreign (ffi "LogisticOp_getOperation")
278 | prim__logisticOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
281 | Op LogisticOp where
282 | getOperation (MkLogisticOp op) = getOperationAux op prim__logisticOpGetOperation
284 | %foreign (ffi "NotOp_delete")
285 | prim__deleteNotOp : AnyPtr -> PrimIO ()
288 | data NotOp = MkNotOp GCAnyPtr
290 | %foreign (ffi "NotOp_create")
291 | prim__notOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
295 | create : HasIO io => OpBuilder -> Location -> Value -> io NotOp
296 | create = UnaryElementwiseOp.create MkNotOp prim__notOpCreate prim__deleteNotOp
298 | %foreign (ffi "NotOp_getOperation")
299 | prim__notOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
303 | getOperation (MkNotOp op) = getOperationAux op prim__notOpGetOperation
305 | %foreign (ffi "NegOp_delete")
306 | prim__deleteNegOp : AnyPtr -> PrimIO ()
309 | data NegOp = MkNegOp GCAnyPtr
311 | %foreign (ffi "NegOp_create")
312 | prim__negOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
316 | create : HasIO io => OpBuilder -> Location -> Value -> io NegOp
317 | create = UnaryElementwiseOp.create MkNegOp prim__negOpCreate prim__deleteNegOp
319 | %foreign (ffi "NegOp_getOperation")
320 | prim__negOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
324 | getOperation (MkNegOp op) = getOperationAux op prim__negOpGetOperation
326 | %foreign (ffi "SineOp_delete")
327 | prim__deleteSineOp : AnyPtr -> PrimIO ()
330 | data SineOp = MkSineOp GCAnyPtr
332 | %foreign (ffi "SineOp_create")
333 | prim__sineOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
337 | create : HasIO io => OpBuilder -> Location -> Value -> io SineOp
338 | create = UnaryElementwiseOp.create MkSineOp prim__sineOpCreate prim__deleteSineOp
340 | %foreign (ffi "SineOp_getOperation")
341 | prim__sineOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
345 | getOperation (MkSineOp op) = getOperationAux op prim__sineOpGetOperation
347 | %foreign (ffi "SqrtOp_delete")
348 | prim__deleteSqrtOp : AnyPtr -> PrimIO ()
351 | data SqrtOp = MkSqrtOp GCAnyPtr
353 | %foreign (ffi "SqrtOp_create")
354 | prim__sqrtOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
358 | create : HasIO io => OpBuilder -> Location -> Value -> io SqrtOp
359 | create = UnaryElementwiseOp.create MkSqrtOp prim__sqrtOpCreate prim__deleteSqrtOp
361 | %foreign (ffi "SqrtOp_getOperation")
362 | prim__sqrtOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
366 | getOperation (MkSqrtOp op) = getOperationAux op prim__sqrtOpGetOperation
368 | %foreign (ffi "TanOp_delete")
369 | prim__deleteTanOp : AnyPtr -> PrimIO ()
372 | data TanOp = MkTanOp GCAnyPtr
374 | %foreign (ffi "TanOp_create")
375 | prim__tanOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
379 | create : HasIO io => OpBuilder -> Location -> Value -> io TanOp
380 | create = UnaryElementwiseOp.create MkTanOp prim__tanOpCreate prim__deleteTanOp
382 | %foreign (ffi "TanOp_getOperation")
383 | prim__tanOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
387 | getOperation (MkTanOp op) = getOperationAux op prim__tanOpGetOperation
389 | %foreign (ffi "TanhOp_delete")
390 | prim__deleteTanhOp : AnyPtr -> PrimIO ()
393 | data TanhOp = MkTanhOp GCAnyPtr
395 | %foreign (ffi "TanhOp_create")
396 | prim__tanhOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
400 | create : HasIO io => OpBuilder -> Location -> Value -> io TanhOp
401 | create = UnaryElementwiseOp.create MkTanhOp prim__tanhOpCreate prim__deleteTanhOp
403 | %foreign (ffi "TanhOp_getOperation")
404 | prim__tanhOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
408 | getOperation (MkTanhOp op) = getOperationAux op prim__tanhOpGetOperation
410 | namespace BinaryElementwiseOp
413 | (GCAnyPtr -> opTy) ->
414 | (GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr) ->
415 | (AnyPtr -> PrimIO ()) ->
416 | HasIO io => OpBuilder -> Location -> Value -> Value -> io opTy
421 | (MkOpBuilder builder)
422 | (MkLocation location)
425 | op <- primIO $
prim__create builder location x y
426 | op <- onCollectAny' op (primIO . prim__delete)
427 | pure $
constructor_ op
429 | %foreign (ffi "AddOp_delete")
430 | prim__deleteAddOp : AnyPtr -> PrimIO ()
433 | data AddOp = MkAddOp GCAnyPtr
435 | %foreign (ffi "AddOp_create")
436 | prim__addOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
440 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io AddOp
441 | create = BinaryElementwiseOp.create MkAddOp prim__addOpCreate prim__deleteAddOp
443 | %foreign (ffi "AddOp_getOperation")
444 | prim__addOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
448 | getOperation (MkAddOp op) = getOperationAux op prim__addOpGetOperation
450 | %foreign (ffi "DivOp_delete")
451 | prim__deleteDivOp : AnyPtr -> PrimIO ()
454 | data DivOp = MkDivOp GCAnyPtr
456 | %foreign (ffi "DivOp_create")
457 | prim__divOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
461 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io DivOp
462 | create = BinaryElementwiseOp.create MkDivOp prim__divOpCreate prim__deleteDivOp
464 | %foreign (ffi "DivOp_getOperation")
465 | prim__divOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
469 | getOperation (MkDivOp op) = getOperationAux op prim__divOpGetOperation
471 | %foreign (ffi "MaxOp_delete")
472 | prim__deleteMaxOp : AnyPtr -> PrimIO ()
475 | data MaxOp = MkMaxOp GCAnyPtr
477 | %foreign (ffi "MaxOp_create")
478 | prim__maxOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
482 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io MaxOp
483 | create = BinaryElementwiseOp.create MkMaxOp prim__maxOpCreate prim__deleteMaxOp
485 | %foreign (ffi "MaxOp_getOperation")
486 | prim__maxOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
490 | getOperation (MkMaxOp op) = getOperationAux op prim__maxOpGetOperation
492 | %foreign (ffi "MinOp_delete")
493 | prim__deleteMinOp : AnyPtr -> PrimIO ()
496 | data MinOp = MkMinOp GCAnyPtr
498 | %foreign (ffi "MinOp_create")
499 | prim__minOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
503 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io MinOp
504 | create = BinaryElementwiseOp.create MkMinOp prim__minOpCreate prim__deleteMinOp
506 | %foreign (ffi "MinOp_getOperation")
507 | prim__minOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
511 | getOperation (MkMinOp op) = getOperationAux op prim__minOpGetOperation
513 | %foreign (ffi "MulOp_delete")
514 | prim__deleteMulOp : AnyPtr -> PrimIO ()
517 | data MulOp = MkMulOp GCAnyPtr
519 | %foreign (ffi "MulOp_create")
520 | prim__mulOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
524 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io MulOp
525 | create = BinaryElementwiseOp.create MkMulOp prim__mulOpCreate prim__deleteMulOp
527 | %foreign (ffi "MulOp_getOperation")
528 | prim__mulOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
532 | getOperation (MkMulOp op) = getOperationAux op prim__mulOpGetOperation
534 | %foreign (ffi "PowOp_delete")
535 | prim__deletePowOp : AnyPtr -> PrimIO ()
538 | data PowOp = MkPowOp GCAnyPtr
540 | %foreign (ffi "PowOp_create")
541 | prim__powOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
545 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io PowOp
546 | create = BinaryElementwiseOp.create MkPowOp prim__powOpCreate prim__deletePowOp
548 | %foreign (ffi "PowOp_getOperation")
549 | prim__powOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
553 | getOperation (MkPowOp op) = getOperationAux op prim__powOpGetOperation
555 | %foreign (ffi "RemOp_delete")
556 | prim__deleteRemOp : AnyPtr -> PrimIO ()
559 | data RemOp = MkRemOp GCAnyPtr
561 | %foreign (ffi "RemOp_create")
562 | prim__remOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
566 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io RemOp
567 | create = BinaryElementwiseOp.create MkRemOp prim__remOpCreate prim__deleteRemOp
569 | %foreign (ffi "RemOp_getOperation")
570 | prim__remOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
574 | getOperation (MkRemOp op) = getOperationAux op prim__remOpGetOperation
576 | %foreign (ffi "ShiftRightLogicalOp_delete")
577 | prim__deleteShiftRightLogicalOp : AnyPtr -> PrimIO ()
580 | data ShiftRightLogicalOp = MkShiftRightLogicalOp GCAnyPtr
582 | %foreign (ffi "ShiftRightLogicalOp_create")
583 | prim__shiftRightLogicalOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
585 | namespace ShiftRightLogicalOp
587 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io ShiftRightLogicalOp
588 | create = BinaryElementwiseOp.create
589 | MkShiftRightLogicalOp prim__shiftRightLogicalOpCreate prim__deleteShiftRightLogicalOp
591 | %foreign (ffi "ShiftRightLogicalOp_getOperation")
592 | prim__shiftRightLogicalOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
595 | Op ShiftRightLogicalOp where
596 | getOperation (MkShiftRightLogicalOp op) = getOperationAux op prim__shiftRightLogicalOpGetOperation
598 | %foreign (ffi "SubtractOp_delete")
599 | prim__deleteSubtractOp : AnyPtr -> PrimIO ()
602 | data SubtractOp = MkSubtractOp GCAnyPtr
604 | %foreign (ffi "SubtractOp_create")
605 | prim__subtractOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
607 | namespace SubtractOp
609 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io SubtractOp
610 | create = BinaryElementwiseOp.create MkSubtractOp prim__subtractOpCreate prim__deleteSubtractOp
612 | %foreign (ffi "SubtractOp_getOperation")
613 | prim__subtractOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
616 | Op SubtractOp where
617 | getOperation (MkSubtractOp op) = getOperationAux op prim__subtractOpGetOperation
619 | %foreign (ffi "AndOp_delete")
620 | prim__deleteAndOp : AnyPtr -> PrimIO ()
623 | data AndOp = MkAndOp GCAnyPtr
625 | %foreign (ffi "AndOp_create")
626 | prim__andOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
630 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io AndOp
631 | create = BinaryElementwiseOp.create MkAndOp prim__andOpCreate prim__deleteAndOp
633 | %foreign (ffi "AndOp_getOperation")
634 | prim__andOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
638 | getOperation (MkAndOp op) = getOperationAux op prim__andOpGetOperation
640 | %foreign (ffi "OrOp_delete")
641 | prim__deleteOrOp : AnyPtr -> PrimIO ()
644 | data OrOp = MkOrOp GCAnyPtr
646 | %foreign (ffi "OrOp_create")
647 | prim__orOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
651 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> io OrOp
652 | create = BinaryElementwiseOp.create MkOrOp prim__orOpCreate prim__deleteOrOp
654 | %foreign (ffi "OrOp_getOperation")
655 | prim__orOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
659 | getOperation (MkOrOp op) = getOperationAux op prim__orOpGetOperation
661 | %foreign (ffi "IfOp_delete")
662 | prim__deleteIfOp : AnyPtr -> PrimIO ()
665 | data IfOp = MkIfOp GCAnyPtr
667 | %foreign (ffi "IfOp_create")
668 | prim__ifOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
672 | create : HasIO io => OpBuilder -> Location -> Type_ -> Value -> io IfOp
673 | create (MkOpBuilder builder) (MkLocation location) (MkType_ resultType _) (MkValue pred _) = do
674 | op <- primIO $
prim__ifOpCreate builder location resultType pred
675 | op <- onCollectAny' op (primIO . prim__deleteIfOp)
678 | %foreign (ffi "IfOp_getTrueBranch")
679 | prim__ifOpGetTrueBranch : GCAnyPtr -> AnyPtr
682 | getTrueBranch : IfOp -> Region
683 | getTrueBranch (MkIfOp op) = MkRegion $
prim__ifOpGetTrueBranch op
685 | %foreign (ffi "IfOp_getFalseBranch")
686 | prim__ifOpGetFalseBranch : GCAnyPtr -> AnyPtr
689 | getFalseBranch : IfOp -> Region
690 | getFalseBranch (MkIfOp op) = MkRegion $
prim__ifOpGetFalseBranch op
692 | %foreign (ffi "IfOp_getOperation")
693 | prim__ifOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
697 | getOperation (MkIfOp op) = getOperationAux op prim__ifOpGetOperation
699 | %foreign (ffi "WhileOp_delete")
700 | prim__deleteWhileOp : AnyPtr -> PrimIO ()
703 | data WhileOp = MkWhileOp GCAnyPtr
705 | %foreign (ffi "WhileOp_create")
706 | prim__whileOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
710 | create : HasIO io => OpBuilder -> Location -> ValueRange -> io WhileOp
711 | create (MkOpBuilder builder) (MkLocation location) (MkValueRange inputs) = do
712 | op <- primIO $
prim__whileOpCreate builder location inputs
713 | op <- onCollectAny' op (primIO . prim__deleteWhileOp)
714 | pure (MkWhileOp op)
716 | %foreign (ffi "WhileOp_getCond")
717 | prim__whileOpGetCond : GCAnyPtr -> AnyPtr
720 | getCond : WhileOp -> Region
721 | getCond (MkWhileOp op) = MkRegion $
prim__whileOpGetCond op
723 | %foreign (ffi "WhileOp_getBody")
724 | prim__whileOpGetBody : GCAnyPtr -> AnyPtr
728 | getBody : WhileOp -> Region
729 | getBody (MkWhileOp op) = MkRegion $
prim__whileOpGetBody op
731 | %foreign (ffi "WhileOp_getOperation")
732 | prim__whileOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
736 | getOperation (MkWhileOp op) = getOperationAux op prim__whileOpGetOperation
738 | %foreign (ffi "ReduceOp_delete")
739 | prim__deleteReduceOp : AnyPtr -> PrimIO ()
742 | data ReduceOp = MkReduceOp GCAnyPtr
744 | %foreign (ffi "ReduceOp_create")
745 | prim__reduceOpCreate :
746 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCPtr Int64 -> Bits64 -> PrimIO AnyPtr
750 | create : HasIO io => OpBuilder -> Location -> ValueRange -> ValueRange -> List Nat -> io ReduceOp
752 | (MkOpBuilder builder)
753 | (MkLocation location)
754 | (MkValueRange inputs)
755 | (MkValueRange inits)
757 | MkInt64Array dimensions dimensionsLen <- mkInt64Array $
cast <$> dimensions
758 | op <- primIO $
prim__reduceOpCreate builder location inputs inits dimensions dimensionsLen
759 | op <- onCollectAny' op (primIO . prim__deleteReduceOp)
760 | pure (MkReduceOp op)
762 | %foreign (ffi "ReduceOp_getBody")
763 | prim__reduceOpGetBody : GCAnyPtr -> AnyPtr
767 | getBody : ReduceOp -> Region
768 | getBody (MkReduceOp op) = MkRegion $
prim__reduceOpGetBody op
770 | %foreign (ffi "ReduceOp_getOperation")
771 | prim__reduceOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
775 | getOperation (MkReduceOp op) = getOperationAux op prim__reduceOpGetOperation
777 | %foreign (ffi "CompareOp_delete")
778 | prim__deleteCompareOp : AnyPtr -> PrimIO ()
781 | data CompareOp = MkCompareOp GCAnyPtr
783 | %foreign (ffi "CompareOp_create")
784 | prim__compareOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int -> PrimIO AnyPtr
786 | namespace CompareOp
789 | HasIO io => OpBuilder -> Location -> Value -> Value -> ComparisonDirection -> io CompareOp
790 | create (MkOpBuilder builder) (MkLocation location) (MkValue lhs _) (MkValue rhs _) direction = do
791 | op <- primIO $
prim__compareOpCreate builder location lhs rhs (cast direction)
792 | op <- onCollectAny' op (primIO . prim__deleteCompareOp)
793 | pure (MkCompareOp op)
795 | %foreign (ffi "CompareOp_getOperation")
796 | prim__compareOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
800 | getOperation (MkCompareOp op) = getOperationAux op prim__compareOpGetOperation
802 | %foreign (ffi "SliceOp_delete")
803 | prim__deleteSliceOp : AnyPtr -> PrimIO ()
806 | data SliceOp = MkSliceOp GCAnyPtr
808 | %foreign (ffi "SliceOp_create")
809 | prim__sliceOpCreate :
813 | GCPtr Int64 -> Bits64 ->
814 | GCPtr Int64 -> Bits64 ->
815 | GCPtr Int64 -> Bits64 ->
821 | HasIO io => OpBuilder -> Location -> Value -> List Nat -> List Nat -> List Nat -> io SliceOp
823 | (MkOpBuilder builder)
824 | (MkLocation location)
825 | (MkValue operand _)
829 | MkInt64Array startIndices startIndicesLen <- mkInt64Array $
cast <$> startIndices
830 | MkInt64Array limitIndices limitIndicesLen <- mkInt64Array $
cast <$> limitIndices
831 | MkInt64Array strides stridesLen <- mkInt64Array $
cast <$> strides
832 | op <- primIO $
prim__sliceOpCreate
836 | startIndices startIndicesLen
837 | limitIndices limitIndicesLen
839 | op <- onCollectAny' op (primIO . prim__deleteSliceOp)
840 | pure (MkSliceOp op)
842 | %foreign (ffi "SliceOp_getOperation")
843 | prim__sliceOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
847 | getOperation (MkSliceOp op) = getOperationAux op prim__sliceOpGetOperation
849 | %foreign (ffi "DynamicSliceOp_delete")
850 | prim__deleteDynamicSliceOp : AnyPtr -> PrimIO ()
853 | data DynamicSliceOp = MkDynamicSliceOp GCAnyPtr
855 | %foreign (ffi "DynamicSliceOp_create")
856 | prim__dynamicSliceOpCreate :
857 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCPtr Int64 -> Bits64 -> PrimIO AnyPtr
859 | namespace DynamicSliceOp
862 | HasIO io => OpBuilder -> Location -> Value -> ValueRange -> List Nat -> io DynamicSliceOp
864 | (MkOpBuilder builder)
865 | (MkLocation location)
866 | (MkValue operand _)
867 | (MkValueRange startIndices)
869 | MkInt64Array sliceSizes sliceSizesLen <- mkInt64Array $
cast <$> sliceSizes
870 | op <- primIO $
prim__dynamicSliceOpCreate
871 | builder location operand startIndices sliceSizes sliceSizesLen
872 | op <- onCollectAny' op (primIO . prim__deleteDynamicSliceOp)
873 | pure (MkDynamicSliceOp op)
875 | %foreign (ffi "DynamicSliceOp_getOperation")
876 | prim__dynamicSliceOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
879 | Op DynamicSliceOp where
880 | getOperation (MkDynamicSliceOp op) = getOperationAux op prim__dynamicSliceOpGetOperation
882 | %foreign (ffi "BitcastConvertOp_delete")
883 | prim__deleteBitcastConvertOp : AnyPtr -> PrimIO ()
886 | data BitcastConvertOp = MkBitcastConvertOp GCAnyPtr
888 | %foreign (ffi "BitcastConvertOp_create")
889 | prim__bitcastConvertOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
891 | namespace BitcastConvertOp
893 | create : HasIO io => OpBuilder -> Location -> Type_ -> Value -> io BitcastConvertOp
894 | create (MkOpBuilder builder) (MkLocation location) (MkType_ resultType _) (MkValue operand _) = do
895 | op <- primIO $
prim__bitcastConvertOpCreate builder location resultType operand
896 | op <- onCollectAny' op (primIO . prim__deleteBitcastConvertOp)
897 | pure (MkBitcastConvertOp op)
899 | %foreign (ffi "BitcastConvertOp_getOperation")
900 | prim__bitcastConvertOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
903 | Op BitcastConvertOp where
904 | getOperation (MkBitcastConvertOp op) = getOperationAux op prim__bitcastConvertOpGetOperation
906 | %foreign (ffi "BroadcastInDimOp_delete")
907 | prim__deleteBroadcastInDimOp : AnyPtr -> PrimIO ()
910 | data BroadcastInDimOp = MkBroadcastInDimOp GCAnyPtr
912 | %foreign (ffi "BroadcastInDimOp_create")
913 | prim__broadcastInDimOpCreate :
914 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCPtr Int64 -> Bits64 -> PrimIO AnyPtr
916 | namespace BroadcastInDimOp
918 | create : HasIO io => OpBuilder -> Location -> Type_ -> Value -> List Nat -> io BroadcastInDimOp
920 | (MkOpBuilder builder)
921 | (MkLocation location)
922 | (MkType_ resultType0 _)
923 | (MkValue operand _)
925 | MkInt64Array dimensions dimensionsLen <- mkInt64Array $
cast <$> dimensions
926 | op <- primIO $
prim__broadcastInDimOpCreate
927 | builder location resultType0 operand dimensions dimensionsLen
928 | op <- onCollectAny' op (primIO . prim__deleteBroadcastInDimOp)
929 | pure (MkBroadcastInDimOp op)
931 | %foreign (ffi "BroadcastInDimOp_getOperation")
932 | prim__broadcastInDimOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
935 | Op BroadcastInDimOp where
936 | getOperation (MkBroadcastInDimOp op) = getOperationAux op prim__broadcastInDimOpGetOperation
938 | %foreign (ffi "CholeskyOp_delete")
939 | prim__deleteCholeskyOp : AnyPtr -> PrimIO ()
942 | data CholeskyOp = MkCholeskyOp GCAnyPtr
944 | %foreign (ffi "CholeskyOp_create")
945 | prim__choleskyOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int -> PrimIO AnyPtr
947 | namespace CholeskyOp
949 | create : HasIO io => OpBuilder -> Location -> Value -> Bool -> io CholeskyOp
950 | create (MkOpBuilder builder) (MkLocation location) (MkValue value _) lower = do
951 | op <- primIO $
prim__choleskyOpCreate builder location value (boolToCInt lower)
952 | op <- onCollectAny' op (primIO . prim__deleteCholeskyOp)
953 | pure (MkCholeskyOp op)
955 | %foreign (ffi "CholeskyOp_getOperation")
956 | prim__choleskyOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
959 | Op CholeskyOp where
960 | getOperation (MkCholeskyOp op) = getOperationAux op prim__choleskyOpGetOperation
962 | %foreign (ffi "ConcatenateOp_delete")
963 | prim__deleteConcatenateOp : AnyPtr -> PrimIO ()
966 | data ConcatenateOp = MkConcatenateOp GCAnyPtr
968 | %foreign (ffi "ConcatenateOp_create")
969 | prim__concatenateOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int64 -> PrimIO AnyPtr
971 | namespace ConcatenateOp
973 | create : HasIO io => OpBuilder -> Location -> ValueRange -> Nat -> io ConcatenateOp
974 | create (MkOpBuilder builder) (MkLocation location) (MkValueRange inputs) dimension = do
975 | op <- primIO $
prim__concatenateOpCreate builder location inputs (cast dimension)
976 | op <- onCollectAny' op (primIO . prim__deleteConcatenateOp)
977 | pure (MkConcatenateOp op)
979 | %foreign (ffi "ConcatenateOp_getOperation")
980 | prim__concatenateOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
983 | Op ConcatenateOp where
984 | getOperation (MkConcatenateOp op) = getOperationAux op prim__concatenateOpGetOperation
986 | %foreign (ffi "DotGeneralOp_delete")
987 | prim__deleteDotGeneralOp : AnyPtr -> PrimIO ()
990 | data DotGeneralOp = MkDotGeneralOp GCAnyPtr
992 | %foreign (ffi "DotGeneralOp_create")
993 | prim__dotGeneralOpCreate :
994 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
996 | namespace DotGeneralOp
1005 | DotDimensionNumbersAttr ->
1010 | (MkType_ resultType0 _)
1013 | (MkDotDimensionNumbersAttr ddn) = do
1014 | op <- primIO $
prim__dotGeneralOpCreate builder location resultType0 lhs rhs ddn
1015 | op <- onCollectAny' op (primIO . prim__deleteDotGeneralOp)
1016 | pure (MkDotGeneralOp op)
1018 | %foreign (ffi "DotGeneralOp_getOperation")
1019 | prim__dotGeneralOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1023 | getOperation (MkDotGeneralOp op) = getOperationAux op prim__dotGeneralOpGetOperation
1025 | %foreign (ffi "MapOp_delete")
1026 | prim__deleteMapOp : AnyPtr -> PrimIO ()
1029 | data MapOp = MkMapOp GCAnyPtr
1031 | %foreign (ffi "MapOp_create")
1033 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCPtr Int64 -> Bits64 -> PrimIO AnyPtr
1037 | create : HasIO io => OpBuilder -> Location -> Type_ -> ValueRange -> List Nat -> io MapOp
1044 | MkInt64Array dimensions dimensionsLen <- mkInt64Array $
cast <$> dimensions
1045 | op <- primIO $
prim__mapOpCreate builder location resultType inputs dimensions dimensionsLen
1046 | op <- onCollectAny' op (primIO . prim__deleteMapOp)
1049 | %foreign (ffi "MapOp_getComputation")
1050 | prim__mapOpGetComputation : GCAnyPtr -> AnyPtr
1053 | getComputation : MapOp -> Region
1054 | getComputation (MkMapOp op) = MkRegion $
prim__mapOpGetComputation op
1056 | %foreign (ffi "MapOp_getOperation")
1057 | prim__mapOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1061 | getOperation (MkMapOp op) = getOperationAux op prim__mapOpGetOperation
1063 | %foreign (ffi "ReshapeOp_delete")
1064 | prim__deleteReshapeOp : AnyPtr -> PrimIO ()
1067 | data ReshapeOp = MkReshapeOp GCAnyPtr
1069 | %foreign (ffi "ReshapeOp_create")
1070 | prim__reshapeOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
1074 | create : HasIO io => OpBuilder -> Location -> Type_ -> Value -> io ReshapeOp
1075 | create (MkOpBuilder builder) (MkLocation location) (MkType_ resultType _) (MkValue value _) = do
1076 | op <- primIO $
prim__reshapeOpCreate builder location resultType value
1077 | op <- onCollectAny' op (primIO . prim__deleteReshapeOp)
1080 | %foreign (ffi "ReshapeOp_getOperation")
1081 | prim__reshapeOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1085 | getOperation (MkReshapeOp op) = getOperationAux op prim__reshapeOpGetOperation
1087 | %foreign (ffi "SelectOp_delete")
1088 | prim__deleteSelectOp : AnyPtr -> PrimIO ()
1091 | data SelectOp = MkSelectOp GCAnyPtr
1093 | %foreign (ffi "SelectOp_create")
1094 | prim__selectOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
1098 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> Value -> io SelectOp
1104 | (MkValue onFalse _) = do
1105 | op <- primIO $
prim__selectOpCreate builder location pred onTrue onFalse
1106 | op <- onCollectAny' op (primIO . prim__deleteSelectOp)
1109 | %foreign (ffi "SelectOp_getOperation")
1110 | prim__selectOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1114 | getOperation (MkSelectOp op) = getOperationAux op prim__selectOpGetOperation
1116 | %foreign (ffi "SortOp_delete")
1117 | prim__deleteSortOp : AnyPtr -> PrimIO ()
1120 | data SortOp = MkSortOp GCAnyPtr
1122 | %foreign (ffi "SortOp_create")
1123 | prim__sortOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int64 -> Int -> PrimIO AnyPtr
1127 | create : HasIO io => OpBuilder -> Location -> Value -> Nat -> Bool -> io SortOp
1128 | create (MkOpBuilder builder) (MkLocation location) (MkValue value _) dimension isStable = do
1129 | op <- primIO $
prim__sortOpCreate builder location value (cast dimension) (boolToCInt isStable)
1130 | op <- onCollectAny' op (primIO . prim__deleteSortOp)
1133 | %foreign (ffi "SortOp_getComparator")
1134 | prim__sortOpGetComparator : GCAnyPtr -> AnyPtr
1137 | getComparator : SortOp -> Region
1138 | getComparator (MkSortOp op) = MkRegion $
prim__sortOpGetComparator op
1140 | %foreign (ffi "SortOp_getOperation")
1141 | prim__sortOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1145 | getOperation (MkSortOp op) = getOperationAux op prim__sortOpGetOperation
1147 | %foreign (ffi "ReverseOp_delete")
1148 | prim__deleteReverseOp : AnyPtr -> PrimIO ()
1151 | data ReverseOp = MkReverseOp GCAnyPtr
1153 | %foreign (ffi "ReverseOp_create")
1154 | prim__reverseOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCPtr Int64 -> Bits64 -> PrimIO AnyPtr
1158 | create : HasIO io => OpBuilder -> Location -> Value -> List Nat -> io ReverseOp
1159 | create (MkOpBuilder builder) (MkLocation location) (MkValue operand _) dimensions = do
1160 | MkInt64Array dimensions dimensionsLen <- mkInt64Array $
cast <$> dimensions
1161 | op <- primIO $
prim__reverseOpCreate builder location operand dimensions dimensionsLen
1162 | op <- onCollectAny' op (primIO . prim__deleteReverseOp)
1165 | %foreign (ffi "ReverseOp_getOperation")
1166 | prim__reverseOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1170 | getOperation (MkReverseOp op) = getOperationAux op prim__reverseOpGetOperation
1172 | %foreign (ffi "TransposeOp_delete")
1173 | prim__deleteTransposeOp : AnyPtr -> PrimIO ()
1176 | data TransposeOp = MkTransposeOp GCAnyPtr
1178 | %foreign (ffi "TransposeOp_create")
1179 | prim__transposeOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCPtr Int64 -> Bits64 -> PrimIO AnyPtr
1183 | create : HasIO io => OpBuilder -> Location -> Value -> List Nat -> io TransposeOp
1184 | create (MkOpBuilder builder) (MkLocation location) (MkValue operand _) permutation = do
1185 | MkInt64Array permutation permutationLen <- mkInt64Array $
cast <$> permutation
1186 | op <- primIO $
prim__transposeOpCreate builder location operand permutation permutationLen
1187 | op <- onCollectAny' op (primIO . prim__deleteTransposeOp)
1188 | pure (MkTransposeOp op)
1190 | %foreign (ffi "TransposeOp_getOperation")
1191 | prim__transposeOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1195 | getOperation (MkTransposeOp op) = getOperationAux op prim__transposeOpGetOperation
1197 | %foreign (ffi "TriangularSolveOp_delete")
1198 | prim__deleteTriangularSolveOp : AnyPtr -> PrimIO ()
1201 | data TriangularSolveOp = MkTriangularSolveOp GCAnyPtr
1203 | %foreign (ffi "TriangularSolveOp_create")
1204 | prim__triangularSolveOpCreate :
1205 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int -> Int -> Int -> Int -> PrimIO AnyPtr
1207 | namespace TriangularSolveOp
1229 | let leftSide = boolToCInt leftSide
1230 | lower = boolToCInt lower
1231 | unitDiagonal = boolToCInt unitDiagonal
1232 | transposeA = cast transposeA
1233 | op <- primIO $
prim__triangularSolveOpCreate
1234 | builder location a b leftSide lower unitDiagonal transposeA
1235 | op <- onCollectAny' op (primIO . prim__deleteTriangularSolveOp)
1236 | pure (MkTriangularSolveOp op)
1238 | %foreign (ffi "TriangularSolveOp_getOperation")
1239 | prim__triangularSolveOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1242 | Op TriangularSolveOp where
1243 | getOperation (MkTriangularSolveOp op) = getOperationAux op prim__triangularSolveOpGetOperation
1245 | %foreign (ffi "StableHLO_ReturnOp_delete")
1246 | prim__deleteReturnOp : AnyPtr -> PrimIO ()
1249 | data ReturnOp = MkReturnOp GCAnyPtr
1251 | %foreign (ffi "StableHLO_ReturnOp_create")
1252 | prim__returnOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
1256 | create : HasIO io => OpBuilder -> Location -> ValueRange -> io ReturnOp
1257 | create (MkOpBuilder builder) (MkLocation location) (MkValueRange results) = do
1258 | op <- primIO $
prim__returnOpCreate builder location results
1259 | op <- onCollectAny' op (primIO . prim__deleteReturnOp)
1262 | %foreign (ffi "StableHLO_ReturnOp_getOperation")
1263 | prim__returnOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1267 | getOperation (MkReturnOp op) = getOperationAux op prim__returnOpGetOperation
1269 | %foreign (ffi "RngBitGeneratorOp_delete")
1270 | prim__deleteRngBitGeneratorOp : AnyPtr -> PrimIO ()
1273 | data RngBitGeneratorOp = MkRngBitGeneratorOp GCAnyPtr
1275 | %foreign (ffi "RngBitGeneratorOp_create")
1276 | prim__rngBitGeneratorOpCreate :
1277 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int -> GCAnyPtr -> PrimIO AnyPtr
1279 | namespace RngBitGeneratorOp
1293 | (MkType_ outputState _)
1297 | op <- primIO $
prim__rngBitGeneratorOpCreate
1298 | builder location outputState output (cast rngAlgorithm) state
1299 | op <- onCollectAny' op (primIO . prim__deleteRngBitGeneratorOp)
1300 | pure (MkRngBitGeneratorOp op)
1302 | %foreign (ffi "RngBitGeneratorOp_getOperation")
1303 | prim__rngBitGeneratorOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1306 | Op RngBitGeneratorOp where
1307 | getOperation (MkRngBitGeneratorOp op) = getOperationAux op prim__rngBitGeneratorOpGetOperation