17 | module Compiler.MLIR.IR.BuiltinAttributes
19 | import Compiler.LLVM.ADT.APFloat
20 | import Compiler.LLVM.ADT.APInt
21 | import Compiler.MLIR.IR.BuiltinTypeInterfaces
24 | ffi : String -> String
25 | ffi = libxla "c/mlir/IR/BuiltinAttributes.h"
28 | data DenseElementsAttr = MkDenseElementsAttr GCAnyPtr
31 | %foreign (ffi "DenseElementsAttr_delete")
32 | prim__deleteDenseElementsAttr : AnyPtr -> PrimIO ()
34 | namespace DenseElementsAttr
36 | %foreign (ffi "DenseElementsAttr_get_APInt")
37 | prim__denseElementsAttrGet : GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
40 | get : HasIO io => ShapedType -> APInt -> io DenseElementsAttr
41 | get (MkShapedType st) (MkAPInt value) = do
42 | attr <- primIO $
prim__denseElementsAttrGet st value
43 | attr <- onCollectAny' attr (primIO . prim__deleteDenseElementsAttr)
44 | pure (MkDenseElementsAttr attr)
47 | %foreign (ffi "DenseElementsAttr_get_APFloat")
48 | prim__denseElementsAttrGet : GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
51 | get : HasIO io => ShapedType -> APFloat -> io DenseElementsAttr
52 | get (MkShapedType st) (MkAPFloat value) = do
53 | attr <- primIO $
prim__denseElementsAttrGet st value
54 | attr <- onCollectAny' attr (primIO . prim__deleteDenseElementsAttr)
55 | pure (MkDenseElementsAttr attr)