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' <- mkInt64Array $
cast <$> dimensions
758 | op <- primIO $
prim__reduceOpCreate
759 | builder location inputs inits dimensions' (cast $
length dimensions)
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 -> Bits64 -> 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 | GCPtr Int64 -> Bits64 ->
815 | GCPtr Int64 -> Bits64 ->
816 | GCPtr Int64 -> 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 | MkInt64Array startIndices' <- mkInt64Array $
cast <$> startIndices
831 | MkInt64Array limitIndices' <- mkInt64Array $
cast <$> limitIndices
832 | MkInt64Array strides' <- mkInt64Array $
cast <$> strides
833 | op <- primIO $
prim__sliceOpCreate
837 | startIndices' (cast $
length startIndices)
838 | limitIndices' (cast $
length limitIndices)
839 | strides' (cast $
length strides)
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 -> GCPtr Int64 -> 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 | MkInt64Array sliceSizes' <- mkInt64Array $
cast <$> sliceSizes
871 | op <- primIO $
prim__dynamicSliceOpCreate
872 | builder location operand startIndices sliceSizes' (cast $
length sliceSizes)
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 -> GCPtr Int64 -> 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 | MkInt64Array dimensions' <- mkInt64Array $
cast <$> dimensions
927 | op <- primIO $
prim__broadcastInDimOpCreate
928 | builder location resultType0 operand dimensions' (cast $
length dimensions)
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 -> GCPtr Int64 -> Bits64 -> PrimIO AnyPtr
1038 | create : HasIO io => OpBuilder -> Location -> Type_ -> ValueRange -> List Nat -> io MapOp
1045 | MkInt64Array dimensions' <- mkInt64Array $
cast <$> dimensions
1046 | op <- primIO $
prim__mapOpCreate
1047 | builder location resultType inputs dimensions' (cast $
length dimensions)
1048 | op <- onCollectAny' op (primIO . prim__deleteMapOp)
1051 | %foreign (ffi "MapOp_getComputation")
1052 | prim__mapOpGetComputation : GCAnyPtr -> AnyPtr
1055 | getComputation : MapOp -> Region
1056 | getComputation (MkMapOp op) = MkRegion $
prim__mapOpGetComputation op
1058 | %foreign (ffi "MapOp_getOperation")
1059 | prim__mapOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1063 | getOperation (MkMapOp op) = getOperationAux op prim__mapOpGetOperation
1065 | %foreign (ffi "ReshapeOp_delete")
1066 | prim__deleteReshapeOp : AnyPtr -> PrimIO ()
1069 | data ReshapeOp = MkReshapeOp GCAnyPtr
1071 | %foreign (ffi "ReshapeOp_create")
1072 | prim__reshapeOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
1076 | create : HasIO io => OpBuilder -> Location -> Type_ -> Value -> io ReshapeOp
1077 | create (MkOpBuilder builder) (MkLocation location) (MkType_ resultType _) (MkValue value _) = do
1078 | op <- primIO $
prim__reshapeOpCreate builder location resultType value
1079 | op <- onCollectAny' op (primIO . prim__deleteReshapeOp)
1082 | %foreign (ffi "ReshapeOp_getOperation")
1083 | prim__reshapeOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1087 | getOperation (MkReshapeOp op) = getOperationAux op prim__reshapeOpGetOperation
1089 | %foreign (ffi "SelectOp_delete")
1090 | prim__deleteSelectOp : AnyPtr -> PrimIO ()
1093 | data SelectOp = MkSelectOp GCAnyPtr
1095 | %foreign (ffi "SelectOp_create")
1096 | prim__selectOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
1100 | create : HasIO io => OpBuilder -> Location -> Value -> Value -> Value -> io SelectOp
1106 | (MkValue onFalse _) = do
1107 | op <- primIO $
prim__selectOpCreate builder location pred onTrue onFalse
1108 | op <- onCollectAny' op (primIO . prim__deleteSelectOp)
1111 | %foreign (ffi "SelectOp_getOperation")
1112 | prim__selectOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1116 | getOperation (MkSelectOp op) = getOperationAux op prim__selectOpGetOperation
1118 | %foreign (ffi "SortOp_delete")
1119 | prim__deleteSortOp : AnyPtr -> PrimIO ()
1122 | data SortOp = MkSortOp GCAnyPtr
1124 | %foreign (ffi "SortOp_create")
1125 | prim__sortOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int64 -> Int -> PrimIO AnyPtr
1129 | create : HasIO io => OpBuilder -> Location -> Value -> Nat -> Bool -> io SortOp
1130 | create (MkOpBuilder builder) (MkLocation location) (MkValue value _) dimension isStable = do
1131 | op <- primIO $
prim__sortOpCreate builder location value (cast dimension) (boolToCInt isStable)
1132 | op <- onCollectAny' op (primIO . prim__deleteSortOp)
1135 | %foreign (ffi "SortOp_getComparator")
1136 | prim__sortOpGetComparator : GCAnyPtr -> AnyPtr
1139 | getComparator : SortOp -> Region
1140 | getComparator (MkSortOp op) = MkRegion $
prim__sortOpGetComparator op
1142 | %foreign (ffi "SortOp_getOperation")
1143 | prim__sortOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1147 | getOperation (MkSortOp op) = getOperationAux op prim__sortOpGetOperation
1149 | %foreign (ffi "ReverseOp_delete")
1150 | prim__deleteReverseOp : AnyPtr -> PrimIO ()
1153 | data ReverseOp = MkReverseOp GCAnyPtr
1155 | %foreign (ffi "ReverseOp_create")
1156 | prim__reverseOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCPtr Int64 -> Bits64 -> PrimIO AnyPtr
1160 | create : HasIO io => OpBuilder -> Location -> Value -> List Nat -> io ReverseOp
1161 | create (MkOpBuilder builder) (MkLocation location) (MkValue operand _) dimensions = do
1162 | MkInt64Array dimensions' <- mkInt64Array $
cast <$> dimensions
1163 | op <- primIO $
prim__reverseOpCreate
1164 | builder location operand dimensions' (cast $
length dimensions)
1165 | op <- onCollectAny' op (primIO . prim__deleteReverseOp)
1168 | %foreign (ffi "ReverseOp_getOperation")
1169 | prim__reverseOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1173 | getOperation (MkReverseOp op) = getOperationAux op prim__reverseOpGetOperation
1175 | %foreign (ffi "TransposeOp_delete")
1176 | prim__deleteTransposeOp : AnyPtr -> PrimIO ()
1179 | data TransposeOp = MkTransposeOp GCAnyPtr
1181 | %foreign (ffi "TransposeOp_create")
1182 | prim__transposeOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCPtr Int64 -> Bits64 -> PrimIO AnyPtr
1186 | create : HasIO io => OpBuilder -> Location -> Value -> List Nat -> io TransposeOp
1187 | create (MkOpBuilder builder) (MkLocation location) (MkValue operand _) permutation = do
1188 | MkInt64Array permutation' <- mkInt64Array $
cast <$> permutation
1189 | op <- primIO $
prim__transposeOpCreate
1190 | builder location operand permutation' (cast $
length permutation)
1191 | op <- onCollectAny' op (primIO . prim__deleteTransposeOp)
1192 | pure (MkTransposeOp op)
1194 | %foreign (ffi "TransposeOp_getOperation")
1195 | prim__transposeOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1199 | getOperation (MkTransposeOp op) = getOperationAux op prim__transposeOpGetOperation
1201 | %foreign (ffi "TriangularSolveOp_delete")
1202 | prim__deleteTriangularSolveOp : AnyPtr -> PrimIO ()
1205 | data TriangularSolveOp = MkTriangularSolveOp GCAnyPtr
1207 | %foreign (ffi "TriangularSolveOp_create")
1208 | prim__triangularSolveOpCreate :
1209 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Int -> Int -> Int -> Bits64 -> PrimIO AnyPtr
1211 | namespace TriangularSolveOp
1233 | let leftSide = boolToCInt leftSide
1234 | lower = boolToCInt lower
1235 | unitDiagonal = boolToCInt unitDiagonal
1236 | transposeA = cast transposeA
1237 | op <- primIO $
prim__triangularSolveOpCreate
1238 | builder location a b leftSide lower unitDiagonal transposeA
1239 | op <- onCollectAny' op (primIO . prim__deleteTriangularSolveOp)
1240 | pure (MkTriangularSolveOp op)
1242 | %foreign (ffi "TriangularSolveOp_getOperation")
1243 | prim__triangularSolveOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1246 | Op TriangularSolveOp where
1247 | getOperation (MkTriangularSolveOp op) = getOperationAux op prim__triangularSolveOpGetOperation
1249 | %foreign (ffi "StableHLO_ReturnOp_delete")
1250 | prim__deleteReturnOp : AnyPtr -> PrimIO ()
1253 | data ReturnOp = MkReturnOp GCAnyPtr
1255 | %foreign (ffi "StableHLO_ReturnOp_create")
1256 | prim__returnOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
1260 | create : HasIO io => OpBuilder -> Location -> ValueRange -> io ReturnOp
1261 | create (MkOpBuilder builder) (MkLocation location) (MkValueRange results) = do
1262 | op <- primIO $
prim__returnOpCreate builder location results
1263 | op <- onCollectAny' op (primIO . prim__deleteReturnOp)
1266 | %foreign (ffi "StableHLO_ReturnOp_getOperation")
1267 | prim__returnOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1271 | getOperation (MkReturnOp op) = getOperationAux op prim__returnOpGetOperation
1273 | %foreign (ffi "RngBitGeneratorOp_delete")
1274 | prim__deleteRngBitGeneratorOp : AnyPtr -> PrimIO ()
1277 | data RngBitGeneratorOp = MkRngBitGeneratorOp GCAnyPtr
1279 | %foreign (ffi "RngBitGeneratorOp_create")
1280 | prim__rngBitGeneratorOpCreate :
1281 | GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> Bits64 -> GCAnyPtr -> PrimIO AnyPtr
1283 | namespace RngBitGeneratorOp
1297 | (MkType_ outputState _)
1301 | op <- primIO $
prim__rngBitGeneratorOpCreate
1302 | builder location outputState output (cast rngAlgorithm) state
1303 | op <- onCollectAny' op (primIO . prim__deleteRngBitGeneratorOp)
1304 | pure (MkRngBitGeneratorOp op)
1306 | %foreign (ffi "RngBitGeneratorOp_getOperation")
1307 | prim__rngBitGeneratorOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
1310 | Op RngBitGeneratorOp where
1311 | getOperation (MkRngBitGeneratorOp op) = getOperationAux op prim__rngBitGeneratorOpGetOperation