llvm-0.6.4.0: LLVM/Core/Data.hs
{-# LANGUAGE EmptyDataDecls #-}
module LLVM.Core.Data(IntN(..), WordN(..), FP128(..),
Array(..), Vector(..), Ptr, Label) where
import Foreign.Ptr(Ptr)
import Data.TypeLevel
-- TODO:
-- Make instances IntN, WordN to actually do the right thing.
-- Make FP128 do the right thing
-- Make Array functions.
-- |Variable sized signed integer.
-- The /n/ parameter should belong to @PosI@.
newtype (Pos n) => IntN n = IntN Integer
deriving (Show)
-- |Variable sized unsigned integer.
-- The /n/ parameter should belong to @PosI@.
newtype (Pos n) => WordN n = WordN Integer
deriving (Show)
-- |128 bit floating point.
newtype FP128 = FP128 Rational
deriving (Show)
-- |Fixed sized arrays, the array size is encoded in the /n/ parameter.
newtype (Nat n) => Array n a = Array [a]
deriving (Show)
-- |Fixed sized vector, the array size is encoded in the /n/ parameter.
newtype Vector n a = Vector [a]
deriving (Show)
-- |Label type, produced by a basic block.
data Label