17 | module Compiler.MLIR.IR.Operation
19 | import Compiler.MLIR.IR.Value
20 | import Compiler.MLIR.IR.ValueRange
23 | ffi : String -> String
24 | ffi = libxla "c/mlir/IR/Operation.h"
27 | data Operation = MkOperation AnyPtr
29 | %foreign (ffi "Operation_delete")
30 | prim__deleteOperation : AnyPtr -> PrimIO ()
32 | %foreign (ffi "Operation_dump")
33 | prim__operationDump : AnyPtr -> PrimIO ()
36 | dump : HasIO io => Operation -> io ()
37 | dump (MkOperation op) = primIO $
prim__operationDump op
39 | %foreign (ffi "Operation_getOpResult")
40 | prim__operationGetOpResult : AnyPtr -> Bits64 -> PrimIO AnyPtr
43 | getOpResult : HasIO io => Operation -> Nat -> io OpResult
44 | getOpResult (MkOperation op) idx = do
45 | res <- primIO $
prim__operationGetOpResult op (cast idx)
46 | res <- onCollectAny' res (primIO . prim__deleteOpResult)
47 | pure (MkOpResult res)