17 | module Compiler.MLIR.IR.TypeRange
19 | import Compiler.MLIR.IR.Types
23 | ffi : String -> String
24 | ffi = libxla "c/mlir/IR/TypeRange.h"
27 | data TypeRange = MkTypeRange GCAnyPtr
29 | %foreign (ffi "TypeRange_delete")
30 | prim__deleteTypeRange : AnyPtr -> PrimIO ()
32 | %foreign (ffi "TypeRange_new")
33 | prim__mkTypeRange : AnyPtr -> Bits64 -> PrimIO AnyPtr
36 | mkTypeRange : HasIO io => List Type_ -> io TypeRange
39 | arr <- malloc (cast len * cast sizeofType)
40 | traverse_ (\(idx, MkType_ x set) => primIO $
set arr (cast idx) x) (enumerate xs)
41 | tr <- primIO $
prim__mkTypeRange arr (cast len)
42 | tr <- onCollectAny' tr (primIO . prim__deleteTypeRange)
43 | pure (MkTypeRange tr)