17 | module Compiler.LLVM.ADT.APInt
22 | data APInt = MkAPInt GCAnyPtr
24 | ffi : String -> String
25 | ffi = libxla "c/llvm/ADT/APInt.h"
27 | %foreign (ffi "delete_APInt")
28 | prim__deleteAPInt : AnyPtr -> PrimIO ()
30 | %foreign (ffi "APInt_getMaxValue")
31 | prim__apIntGetMaxValue : Bits16 -> PrimIO AnyPtr
34 | getMaxValue : HasIO io => Bits16 -> io APInt
35 | getMaxValue numBits = do
36 | int <- primIO $
prim__apIntGetMaxValue numBits
37 | int <- onCollectAny' int (primIO . prim__deleteAPInt)
40 | %foreign (ffi "APInt_getSignedMaxValue")
41 | prim__apIntGetSignedMaxValue : Bits16 -> PrimIO AnyPtr
44 | getSignedMaxValue : HasIO io => Bits16 -> io APInt
45 | getSignedMaxValue numBits = do
46 | int <- primIO $
prim__apIntGetSignedMaxValue numBits
47 | int <- onCollectAny' int (primIO . prim__deleteAPInt)
50 | %foreign (ffi "APInt_getMinValue")
51 | prim__apIntGetMinValue : Bits16 -> PrimIO AnyPtr
54 | getMinValue : HasIO io => Bits16 -> io APInt
55 | getMinValue numBits = do
56 | int <- primIO $
prim__apIntGetMinValue numBits
57 | int <- onCollectAny' int (primIO . prim__deleteAPInt)
60 | %foreign (ffi "APInt_getSignedMinValue")
61 | prim__apIntGetSignedMinValue : Bits16 -> PrimIO AnyPtr
64 | getSignedMinValue : HasIO io => Bits16 -> io APInt
65 | getSignedMinValue numBits = do
66 | int <- primIO $
prim__apIntGetSignedMinValue numBits
67 | int <- onCollectAny' int (primIO . prim__deleteAPInt)