17 | module Compiler.MLIR.IR.BuiltinOps
19 | import Compiler.LLVM.Support.RawOStream
20 | import Compiler.MLIR.IR.Location
21 | import Compiler.MLIR.IR.MLIRContext
22 | import Compiler.MLIR.IR.OpDefinition
23 | import Compiler.MLIR.IR.Operation
26 | ffi : String -> String
27 | ffi = libxla "c/mlir/IR/BuiltinOps.h"
30 | data ModuleOp = MkModuleOp GCAnyPtr
33 | %foreign (ffi "ModuleOp_delete")
34 | prim__delete : AnyPtr -> PrimIO ()
36 | %foreign (ffi "ModuleOp_create")
37 | prim__moduleOpCreate : GCAnyPtr -> String -> PrimIO AnyPtr
41 | create : HasIO io => Location -> String -> io ModuleOp
42 | create (MkLocation loc) name = do
43 | op <- primIO $
prim__moduleOpCreate loc name
44 | op <- onCollectAny' op (primIO . prim__delete)
45 | pure (MkModuleOp op)
47 | %foreign (ffi "ModuleOp_dump")
48 | prim__moduleOpDump : GCAnyPtr -> PrimIO ()
51 | dump : HasIO io => ModuleOp -> io ()
52 | dump (MkModuleOp op) = primIO $
prim__moduleOpDump op
55 | %foreign (ffi "ModuleOp_getOperation")
56 | prim__moduleOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
60 | getOperation (MkModuleOp moduleOp) =
61 | MkOperation <$> (primIO $
prim__moduleOpGetOperation moduleOp)
64 | %foreign (ffi "ModuleOp_push_back")
65 | prim__moduleOpPushBack : GCAnyPtr -> AnyPtr -> PrimIO ()
68 | pushBack : HasIO io => ModuleOp -> Operation -> io ()
69 | pushBack (MkModuleOp mOp) (MkOperation op) = primIO $
prim__moduleOpPushBack mOp op